Revert "Revert of eliminate config param -- it was always self's config (https:/...
authorcommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 19 May 2014 17:29:16 +0000 (17:29 +0000)
committercommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 19 May 2014 17:29:16 +0000 (17:29 +0000)
TBR=bsalomon@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/290883005

git-svn-id: http://skia.googlecode.com/svn/trunk@14785 2bbb7eff-a529-9590-31e7-b0007b416f81

include/core/SkPixelRef.h
include/gpu/SkGrPixelRef.h
src/core/SkBitmap.cpp
src/gpu/SkGrPixelRef.cpp

index 8319ec6..579ca5b 100644 (file)
@@ -223,14 +223,13 @@ public:
 
     /**
      *  Makes a deep copy of this PixelRef, respecting the requested config.
-     *  @param config Desired config.
      *  @param subset Subset of this PixelRef to copy. Must be fully contained within the bounds of
      *         of this PixelRef.
      *  @return A new SkPixelRef, or NULL if either there is an error (e.g. the destination could
      *          not be created with the given config), or this PixelRef does not support deep
      *          copies.
      */
-    virtual SkPixelRef* deepCopy(SkBitmap::Config config, const SkIRect* subset = NULL) {
+    virtual SkPixelRef* deepCopy(const SkIRect* subset = NULL) {
         return NULL;
     }
 
index 1e49561..702a3bf 100644 (file)
@@ -56,7 +56,7 @@ public:
 protected:
     // overrides from SkPixelRef
     virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subset) SK_OVERRIDE;
-    virtual SkPixelRef* deepCopy(SkBitmap::Config dstConfig, const SkIRect* subset) SK_OVERRIDE;
+    virtual SkPixelRef* deepCopy(const SkIRect* subset) SK_OVERRIDE;
 
 private:
     GrSurface*  fSurface;
index 84f363e..2d3391f 100644 (file)
@@ -885,7 +885,7 @@ bool SkBitmap::extractSubset(SkBitmap* result, const SkIRect& subset) const {
 
     if (fPixelRef->getTexture() != NULL) {
         // Do a deep copy
-        SkPixelRef* pixelRef = fPixelRef->deepCopy(this->config(), &subset);
+        SkPixelRef* pixelRef = fPixelRef->deepCopy(&subset);
         if (pixelRef != NULL) {
             SkBitmap dst;
             dst.setConfig(this->config(), subset.width(), subset.height(), 0,
@@ -1085,8 +1085,7 @@ bool SkBitmap::copyTo(SkBitmap* dst, SkColorType dstColorType,
 }
 
 bool SkBitmap::deepCopyTo(SkBitmap* dst) const {
-    const SkBitmap::Config dstConfig = this->config();
-    const SkColorType dstCT = SkBitmapConfigToColorType(dstConfig);
+    const SkColorType dstCT = this->colorType();
 
     if (!this->canCopyTo(dstCT)) {
         return false;
@@ -1095,24 +1094,15 @@ bool SkBitmap::deepCopyTo(SkBitmap* dst) const {
     // If we have a PixelRef, and it supports deep copy, use it.
     // Currently supported only by texture-backed bitmaps.
     if (fPixelRef) {
-        SkPixelRef* pixelRef = fPixelRef->deepCopy(dstConfig);
+        SkPixelRef* pixelRef = fPixelRef->deepCopy();
         if (pixelRef) {
-            uint32_t rowBytes;
-            if (this->colorType() == dstCT) {
-                // Since there is no subset to pass to deepCopy, and deepCopy
-                // succeeded, the new pixel ref must be identical.
-                SkASSERT(fPixelRef->info() == pixelRef->info());
-                pixelRef->cloneGenID(*fPixelRef);
-                // Use the same rowBytes as the original.
-                rowBytes = fRowBytes;
-            } else {
-                // With the new config, an appropriate fRowBytes will be computed by setConfig.
-                rowBytes = 0;
-            }
+            // Since there is no subset to pass to deepCopy, and deepCopy
+            // succeeded, the new pixel ref must be identical.
+            SkASSERT(fPixelRef->info() == pixelRef->info());
+            pixelRef->cloneGenID(*fPixelRef);
 
             SkImageInfo info = fInfo;
-            info.fColorType = dstCT;
-            if (!dst->setConfig(info, rowBytes)) {
+            if (!dst->setConfig(info, fRowBytes)) {
                 return false;
             }
             dst->setPixelRef(pixelRef, fPixelRefOrigin)->unref();
index fd21f10..85de285 100644 (file)
@@ -51,8 +51,7 @@ bool SkROLockPixelsPixelRef::onLockPixelsAreWritable() const {
 
 ///////////////////////////////////////////////////////////////////////////////
 
-static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkBitmap::Config dstConfig,
-                                           const SkIRect* subset) {
+static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, const SkIRect* subset) {
     if (NULL == texture) {
         return NULL;
     }
@@ -77,7 +76,7 @@ static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkBitmap::Config
         topLeft = NULL;
     }
     desc.fFlags = kRenderTarget_GrTextureFlagBit | kNoStencil_GrTextureFlagBit;
-    desc.fConfig = SkBitmapConfig2GrPixelConfig(dstConfig);
+    desc.fConfig = texture->config();
 
     SkImageInfo info;
     if (!GrPixelConfig2ColorType(desc.fConfig, &info.fColorType)) {
@@ -152,7 +151,7 @@ GrTexture* SkGrPixelRef::getTexture() {
     return NULL;
 }
 
-SkPixelRef* SkGrPixelRef::deepCopy(SkBitmap::Config dstConfig, const SkIRect* subset) {
+SkPixelRef* SkGrPixelRef::deepCopy(const SkIRect* subset) {
     if (NULL == fSurface) {
         return NULL;
     }
@@ -163,7 +162,7 @@ SkPixelRef* SkGrPixelRef::deepCopy(SkBitmap::Config dstConfig, const SkIRect* su
     // 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, subset);
+    return copyToTexturePixelRef(fSurface->asTexture(), subset);
 }
 
 bool SkGrPixelRef::onReadPixels(SkBitmap* dst, const SkIRect* subset) {