'../include/gpu/SkGpuCanvas.h',
'../include/gpu/SkGpuDevice.h',
'../include/gpu/SkGr.h',
- '../include/gpu/SkGrTexturePixelRef.h',
+ '../include/gpu/SkGrPixelRef.h',
'../include/gpu/gl/SkGLContext.h',
'../include/gpu/gl/SkMesaGLContext.h',
'../src/gpu/SkGpuDevice.cpp',
'../src/gpu/SkGr.cpp',
'../src/gpu/SkGrFontScaler.cpp',
- '../src/gpu/SkGrTexturePixelRef.cpp',
+ '../src/gpu/SkGrPixelRef.cpp',
'../src/gpu/gl/SkGLContext.cpp',
'../src/gpu/gl/SkNullGLContext.cpp',
--- /dev/null
+
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+
+#ifndef SkGrPixelRef_DEFINED
+#define SkGrPixelRef_DEFINED
+
+#include "SkBitmap.h"
+#include "SkPixelRef.h"
+#include "GrTexture.h"
+#include "GrRenderTarget.h"
+
+
+/**
+ * Common baseclass that implements onLockPixels() by calling onReadPixels().
+ * Since it has a copy, it always returns false for onLockPixelsAreWritable().
+ */
+class SK_API SkROLockPixelsPixelRef : public SkPixelRef {
+public:
+ SkROLockPixelsPixelRef();
+ virtual ~SkROLockPixelsPixelRef();
+
+protected:
+ // override from SkPixelRef
+ virtual void* onLockPixels(SkColorTable** ptr);
+ virtual void onUnlockPixels();
+ virtual bool onLockPixelsAreWritable() const; // return false;
+
+private:
+ SkBitmap fBitmap;
+ typedef SkPixelRef INHERITED;
+};
+
+/**
+ * PixelRef that wraps a GrSurface
+ */
+class SK_API SkGrPixelRef : public SkROLockPixelsPixelRef {
+public:
+ SkGrPixelRef(GrSurface* surface);
+ virtual ~SkGrPixelRef();
+
+ // override from SkPixelRef
+ virtual SkGpuTexture* getTexture() SK_OVERRIDE;
+
+ SK_DECLARE_UNFLATTENABLE_OBJECT()
+
+protected:
+ // overrides from SkPixelRef
+ virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subset) SK_OVERRIDE;
+ virtual SkPixelRef* deepCopy(SkBitmap::Config dstConfig) SK_OVERRIDE;
+
+private:
+ GrSurface* fSurface;
+ typedef SkROLockPixelsPixelRef INHERITED;
+};
+
+#endif
+
+++ /dev/null
-
-/*
- * Copyright 2010 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-
-#ifndef SkGrPixelRef_DEFINED
-#define SkGrPixelRef_DEFINED
-
-#include "SkBitmap.h"
-#include "SkPixelRef.h"
-#include "GrTexture.h"
-#include "GrRenderTarget.h"
-
-
-/**
- * Common baseclass that implements onLockPixels() by calling onReadPixels().
- * Since it has a copy, it always returns false for onLockPixelsAreWritable().
- */
-class SK_API SkROLockPixelsPixelRef : public SkPixelRef {
-public:
- SkROLockPixelsPixelRef();
- virtual ~SkROLockPixelsPixelRef();
-
-protected:
- // override from SkPixelRef
- virtual void* onLockPixels(SkColorTable** ptr);
- virtual void onUnlockPixels();
- virtual bool onLockPixelsAreWritable() const; // return false;
-
-private:
- SkBitmap fBitmap;
- typedef SkPixelRef INHERITED;
-};
-
-/**
- * PixelRef that wraps a GrSurface
- */
-class SK_API SkGrPixelRef : public SkROLockPixelsPixelRef {
-public:
- SkGrPixelRef(GrSurface* surface);
- virtual ~SkGrPixelRef();
-
- // override from SkPixelRef
- virtual SkGpuTexture* getTexture() SK_OVERRIDE;
-
- SK_DECLARE_UNFLATTENABLE_OBJECT()
-
-protected:
- // overrides from SkPixelRef
- virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subset) SK_OVERRIDE;
- virtual SkPixelRef* deepCopy(SkBitmap::Config dstConfig) SK_OVERRIDE;
-
-private:
- GrSurface* fSurface;
- typedef SkROLockPixelsPixelRef INHERITED;
-};
-
-#endif
-
#include "GrDefaultTextContext.h"
#include "GrTextContext.h"
-#include "SkGrTexturePixelRef.h"
+#include "SkGrPixelRef.h"
#include "SkColorFilter.h"
#include "SkDrawProcs.h"
--- /dev/null
+
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+
+#include "SkGrPixelRef.h"
+#include "GrContext.h"
+#include "GrTexture.h"
+#include "SkGr.h"
+#include "SkRect.h"
+
+// since we call lockPixels recursively on fBitmap, we need a distinct mutex,
+// to avoid deadlock with the default one provided by SkPixelRef.
+SK_DECLARE_STATIC_MUTEX(gROLockPixelsPixelRefMutex);
+
+SkROLockPixelsPixelRef::SkROLockPixelsPixelRef() : INHERITED(&gROLockPixelsPixelRefMutex) {
+}
+
+SkROLockPixelsPixelRef::~SkROLockPixelsPixelRef() {
+}
+
+void* SkROLockPixelsPixelRef::onLockPixels(SkColorTable** ctable) {
+ if (ctable) {
+ *ctable = NULL;
+ }
+ fBitmap.reset();
+// SkDebugf("---------- calling readpixels in support of lockpixels\n");
+ if (!this->onReadPixels(&fBitmap, NULL)) {
+ SkDebugf("SkROLockPixelsPixelRef::onLockPixels failed!\n");
+ return NULL;
+ }
+ fBitmap.lockPixels();
+ return fBitmap.getPixels();
+}
+
+void SkROLockPixelsPixelRef::onUnlockPixels() {
+ fBitmap.unlockPixels();
+}
+
+bool SkROLockPixelsPixelRef::onLockPixelsAreWritable() const {
+ return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture,
+ SkBitmap::Config dstConfig) {
+ if (NULL == texture) {
+ return NULL;
+ }
+ GrContext* context = texture->getContext();
+ if (NULL == context) {
+ return NULL;
+ }
+ GrTextureDesc desc;
+
+ desc.fWidth = texture->width();
+ desc.fHeight = texture->height();
+ desc.fFlags = kRenderTarget_GrTextureFlagBit | kNoStencil_GrTextureFlagBit;
+ desc.fConfig = SkGr::BitmapConfig2PixelConfig(dstConfig);
+
+ GrTexture* dst = context->createUncachedTexture(desc, NULL, 0);
+ if (NULL == dst) {
+ return NULL;
+ }
+
+ context->copyTexture(texture, dst->asRenderTarget());
+
+ // The render texture we have created (to perform the copy) isn't fully
+ // functional (since it doesn't have a stencil buffer). Release it here
+ // so the caller doesn't try to render to it.
+ // TODO: we can undo this release when dynamic stencil buffer attach/
+ // detach has been implemented
+ dst->releaseRenderTarget();
+
+ SkGrPixelRef* pixelRef = new SkGrPixelRef(dst);
+ GrSafeUnref(dst);
+ return pixelRef;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+SkGrPixelRef::SkGrPixelRef(GrSurface* surface) {
+ // The GrTexture has a ref to the GrRenderTarget but not vice versa.
+ // If the GrTexture exists take a ref to that (rather than the render
+ // target)
+ fSurface = surface->asTexture();
+ if (NULL == fSurface) {
+ fSurface = surface;
+ }
+
+ GrSafeRef(surface);
+}
+
+SkGrPixelRef::~SkGrPixelRef() {
+ GrSafeUnref(fSurface);
+}
+
+SkGpuTexture* SkGrPixelRef::getTexture() {
+ if (NULL != fSurface) {
+ return (SkGpuTexture*) fSurface->asTexture();
+ }
+ return NULL;
+}
+
+SkPixelRef* SkGrPixelRef::deepCopy(SkBitmap::Config dstConfig) {
+ if (NULL == fSurface) {
+ return NULL;
+ }
+
+ // Note that when copying a render-target-backed pixel ref, we
+ // return a texture-backed pixel ref instead. This is because
+ // render-target pixel refs are usually created in conjunction with
+ // a GrTexture owned elsewhere (e.g., SkGpuDevice), and cannot live
+ // independently of that texture. Texture-backed pixel refs, on the other
+ // hand, own their GrTextures, and are thus self-contained.
+ return copyToTexturePixelRef(fSurface->asTexture(), dstConfig);
+}
+
+bool SkGrPixelRef::onReadPixels(SkBitmap* dst, const SkIRect* subset) {
+ if (NULL == fSurface || !fSurface->isValid()) {
+ return false;
+ }
+
+ int left, top, width, height;
+ if (NULL != subset) {
+ left = subset->fLeft;
+ width = subset->width();
+ top = subset->fTop;
+ height = subset->height();
+ } else {
+ left = 0;
+ width = fSurface->width();
+ top = 0;
+ height = fSurface->height();
+ }
+ dst->setConfig(SkBitmap::kARGB_8888_Config, width, height);
+ dst->allocPixels();
+ SkAutoLockPixels al(*dst);
+ void* buffer = dst->getPixels();
+ return fSurface->readPixels(left, top, width, height,
+ kSkia8888_PM_GrPixelConfig,
+ buffer, dst->rowBytes());
+}
+
+++ /dev/null
-
-/*
- * Copyright 2010 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-
-#include "SkGrTexturePixelRef.h"
-#include "GrContext.h"
-#include "GrTexture.h"
-#include "SkGr.h"
-#include "SkRect.h"
-
-// since we call lockPixels recursively on fBitmap, we need a distinct mutex,
-// to avoid deadlock with the default one provided by SkPixelRef.
-SK_DECLARE_STATIC_MUTEX(gROLockPixelsPixelRefMutex);
-
-SkROLockPixelsPixelRef::SkROLockPixelsPixelRef() : INHERITED(&gROLockPixelsPixelRefMutex) {
-}
-
-SkROLockPixelsPixelRef::~SkROLockPixelsPixelRef() {
-}
-
-void* SkROLockPixelsPixelRef::onLockPixels(SkColorTable** ctable) {
- if (ctable) {
- *ctable = NULL;
- }
- fBitmap.reset();
-// SkDebugf("---------- calling readpixels in support of lockpixels\n");
- if (!this->onReadPixels(&fBitmap, NULL)) {
- SkDebugf("SkROLockPixelsPixelRef::onLockPixels failed!\n");
- return NULL;
- }
- fBitmap.lockPixels();
- return fBitmap.getPixels();
-}
-
-void SkROLockPixelsPixelRef::onUnlockPixels() {
- fBitmap.unlockPixels();
-}
-
-bool SkROLockPixelsPixelRef::onLockPixelsAreWritable() const {
- return false;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture,
- SkBitmap::Config dstConfig) {
- if (NULL == texture) {
- return NULL;
- }
- GrContext* context = texture->getContext();
- if (NULL == context) {
- return NULL;
- }
- GrTextureDesc desc;
-
- desc.fWidth = texture->width();
- desc.fHeight = texture->height();
- desc.fFlags = kRenderTarget_GrTextureFlagBit | kNoStencil_GrTextureFlagBit;
- desc.fConfig = SkGr::BitmapConfig2PixelConfig(dstConfig);
-
- GrTexture* dst = context->createUncachedTexture(desc, NULL, 0);
- if (NULL == dst) {
- return NULL;
- }
-
- context->copyTexture(texture, dst->asRenderTarget());
-
- // The render texture we have created (to perform the copy) isn't fully
- // functional (since it doesn't have a stencil buffer). Release it here
- // so the caller doesn't try to render to it.
- // TODO: we can undo this release when dynamic stencil buffer attach/
- // detach has been implemented
- dst->releaseRenderTarget();
-
- SkGrPixelRef* pixelRef = new SkGrPixelRef(dst);
- GrSafeUnref(dst);
- return pixelRef;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-SkGrPixelRef::SkGrPixelRef(GrSurface* surface) {
- // The GrTexture has a ref to the GrRenderTarget but not vice versa.
- // If the GrTexture exists take a ref to that (rather than the render
- // target)
- fSurface = surface->asTexture();
- if (NULL == fSurface) {
- fSurface = surface;
- }
-
- GrSafeRef(surface);
-}
-
-SkGrPixelRef::~SkGrPixelRef() {
- GrSafeUnref(fSurface);
-}
-
-SkGpuTexture* SkGrPixelRef::getTexture() {
- if (NULL != fSurface) {
- return (SkGpuTexture*) fSurface->asTexture();
- }
- return NULL;
-}
-
-SkPixelRef* SkGrPixelRef::deepCopy(SkBitmap::Config dstConfig) {
- if (NULL == fSurface) {
- return NULL;
- }
-
- // Note that when copying a render-target-backed pixel ref, we
- // return a texture-backed pixel ref instead. This is because
- // render-target pixel refs are usually created in conjunction with
- // a GrTexture owned elsewhere (e.g., SkGpuDevice), and cannot live
- // independently of that texture. Texture-backed pixel refs, on the other
- // hand, own their GrTextures, and are thus self-contained.
- return copyToTexturePixelRef(fSurface->asTexture(), dstConfig);
-}
-
-bool SkGrPixelRef::onReadPixels(SkBitmap* dst, const SkIRect* subset) {
- if (NULL == fSurface || !fSurface->isValid()) {
- return false;
- }
-
- int left, top, width, height;
- if (NULL != subset) {
- left = subset->fLeft;
- width = subset->width();
- top = subset->fTop;
- height = subset->height();
- } else {
- left = 0;
- width = fSurface->width();
- top = 0;
- height = fSurface->height();
- }
- dst->setConfig(SkBitmap::kARGB_8888_Config, width, height);
- dst->allocPixels();
- SkAutoLockPixels al(*dst);
- void* buffer = dst->getPixels();
- return fSurface->readPixels(left, top, width, height,
- kSkia8888_PM_GrPixelConfig,
- buffer, dst->rowBytes());
-}
-