105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger/* 205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger Copyright 2010 Google Inc. 305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger Licensed under the Apache License, Version 2.0 (the "License"); 505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger you may not use this file except in compliance with the License. 605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger You may obtain a copy of the License at 705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger http://www.apache.org/licenses/LICENSE-2.0 905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger Unless required by applicable law or agreed to in writing, software 1105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger distributed under the License is distributed on an "AS IS" BASIS, 1205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger See the License for the specific language governing permissions and 1405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger limitations under the License. 1505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger */ 1605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#ifndef SkGrTexturePixelRef_DEFINED 1905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#define SkGrTexturePixelRef_DEFINED 2005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 2105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#include "SkPixelRef.h" 2205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#include "GrGpu.h" 2305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 2405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass SkGrTexturePixelRef : public SkPixelRef { 2505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerpublic: 2605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger SkGrTexturePixelRef(GrTexture*); 2705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger virtual ~SkGrTexturePixelRef(); 2805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 2905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger // override from SkPixelRef 3005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger virtual SkGpuTexture* getTexture() { return (SkGpuTexture*)fTexture; } 3105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 3205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerprotected: 3305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger // override from SkPixelRef 3405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger virtual void* onLockPixels(SkColorTable** ptr) { 3505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger if (ptr) { 3605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger *ptr = NULL; 3705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger } 3805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger return NULL; 3905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger } 4005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 4105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger // override from SkPixelRef 4205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger virtual void onUnlockPixels() {} 4387b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subset); 4405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 4505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerprivate: 4605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrTexture* fTexture; 4705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger typedef SkPixelRef INHERITED; 4805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger}; 4905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 5087b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenbergerclass SkGrRenderTargetPixelRef : public SkPixelRef { 5187b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenbergerpublic: 5287b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger SkGrRenderTargetPixelRef(GrRenderTarget* rt); 5387b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger virtual ~SkGrRenderTargetPixelRef(); 5487b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger 5587b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger // override from SkPixelRef 5687b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger virtual SkGpuTexture* getTexture(); 5787b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger 5887b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenbergerprotected: 5987b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger // override from SkPixelRef 6087b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger virtual void* onLockPixels(SkColorTable** ptr) { 6187b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger if (ptr) { 6287b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger *ptr = NULL; 6387b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger } 6487b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger return NULL; 6587b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger } 6687b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger 6787b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger // override from SkPixelRef 6887b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger virtual void onUnlockPixels() {} 6987b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subset); 7087b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger 7187b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenbergerprivate: 7287b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger GrRenderTarget* fRenderTarget; 7387b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger typedef SkPixelRef INHERITED; 7487b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger}; 7587b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger 7605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#endif 7705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 78