Index: src/core/SkBitmapProcState.cpp |
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp |
index cdc582bfeec64a70791d0ecb615186b98296e639..b3431f4eb84e267e6bae7769e7db7d44d8a6fd39 100644 |
--- a/src/core/SkBitmapProcState.cpp |
+++ b/src/core/SkBitmapProcState.cpp |
@@ -377,6 +377,26 @@ SkBitmapProcState::~SkBitmapProcState() { |
SkDELETE(fBitmapFilter); |
} |
+SkBitmapProcState::SkBitmapProcState(const SkBitmapProcState& src) |
+ : fInvMatrix(src.fInvMatrix), fInvProc(src.fInvProc), |
+ fInvSxFractionalInt(src.fInvSxFractionalInt), fInvKyFractionalInt(src.fInvKyFractionalInt), |
+ fTileProcX(src.fTileProcX), fTileProcY(src.fTileProcY), |
+ fTileLowBitsProcX(src.fTileLowBitsProcX), fTileLowBitsProcY(src.fTileLowBitsProcY), |
+ fIntTileProcY(src.fIntTileProcY), fFilterOneX(src.fFilterOneX), fFilterOneY(src.fFilterOneY), |
+ fPaintPMColor(src.fPaintPMColor), fInvSx(src.fInvSx), fInvKy(src.fInvKy), |
+ fAlphaScale(src.fAlphaScale), fInvType(src.fInvType), |
+ fTileModeX(src.fTileModeX), fTileModeY(src.fTileModeY), fFilterLevel(src.fFilterLevel), |
+ fShaderProc32(src.fShaderProc32), fShaderProc16(src.fShaderProc16), |
+ fMatrixProc(src.fMatrixProc), fSampleProc32(src.fSampleProc32), |
+ fSampleProc16(src.fSampleProc16), fOrigBitmap(src.fOrigBitmap), |
+ fScaledBitmap(src.fScaledBitmap) |
+{ |
+ // TODO(dominikg): Doesn't work yet. Assert in SkBitmapProcShader.cpp on line 224 fails. |
+ fBitmap = src.fBitmap == &src.fOrigBitmap ? &fOrigBitmap : &fScaledBitmap; |
+ |
+ fBitmapFilter = src.fBitmapFilter; |
+} |
+ |
bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) { |
SkASSERT(fOrigBitmap.width() && fOrigBitmap.height()); |
@@ -398,6 +418,7 @@ bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) { |
} |
// The above logic should have always assigned fBitmap, but in case it |
// didn't, we check for that now... |
+ // TODO(dominikg): Ask humper@ if we can just use an SkASSERT(fBitmap)? |
if (NULL == fBitmap) { |
return false; |
} |
@@ -480,6 +501,7 @@ bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) { |
// shader will perform. |
fMatrixProc = this->chooseMatrixProc(trivialMatrix); |
+ // TODO(dominikg): SkASSERT(fMatrixProc) instead? chooseMatrixProc never returns NULL. |
if (NULL == fMatrixProc) { |
return false; |
} |
@@ -521,6 +543,7 @@ bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) { |
fPaintPMColor = SkPreMultiplyColor(paint.getColor()); |
break; |
default: |
+ // TODO(dominikg): Should we ever get here? SkASSERT(false) instead? |
return false; |
} |