fix trivial matrix computation
Revert "Reverted 10056-10059"
This reverts commit bab4ebcaa7270c3b866a8e10917c39b055ebd51a.
Fix broken GM test, reintroduce image scaling.
BUG=
Review URL: https://codereview.chromium.org/18721006
git-svn-id: http://skia.googlecode.com/svn/trunk@10066 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkBitmapProcState.h b/src/core/SkBitmapProcState.h
index 5c6a415..a644dd1 100644
--- a/src/core/SkBitmapProcState.h
+++ b/src/core/SkBitmapProcState.h
@@ -64,8 +64,8 @@
typedef U16CPU (*FixedTileLowBitsProc)(SkFixed, int); // returns 0..0xF
typedef U16CPU (*IntTileProc)(int value, int count); // returns 0..count-1
- const SkBitmap* fBitmap; // chooseProcs - orig or mip
- const SkMatrix* fInvMatrix; // chooseProcs
+ const SkBitmap* fBitmap; // chooseProcs - orig or scaled
+ SkMatrix fInvMatrix; // chooseProcs
SkMatrix::MapXYProc fInvProc; // chooseProcs
SkFractionalInt fInvSxFractionalInt;
@@ -86,7 +86,18 @@
uint8_t fInvType; // chooseProcs
uint8_t fTileModeX; // CONSTRUCTOR
uint8_t fTileModeY; // CONSTRUCTOR
- SkBool8 fDoFilter; // chooseProcs
+
+ enum {
+ kNone_BitmapFilter,
+ kBilerp_BitmapFilter,
+ kHQ_BitmapFilter
+ } fFilterQuality; // chooseProcs
+
+ /** The shader will let us know when we can release some of our resources
+ * like scaled bitmaps.
+ */
+
+ void endContext();
/** Platforms implement this, and can optionally overwrite only the
following fields:
@@ -140,18 +151,18 @@
SampleProc32 fSampleProc32; // chooseProcs
SampleProc16 fSampleProc16; // chooseProcs
- SkMatrix fUnitInvMatrix; // chooseProcs
SkBitmap fOrigBitmap; // CONSTRUCTOR
- SkBitmap fMipBitmap;
+ SkBitmap fScaledBitmap; // chooseProcs
MatrixProc chooseMatrixProc(bool trivial_matrix);
bool chooseProcs(const SkMatrix& inv, const SkPaint&);
ShaderProc32 chooseShaderProc32();
- void buildFilterCoefficients(SkFixed dst[4], float t) const;
+ void possiblyScaleImage();
+
SkBitmapFilter *fBitmapFilter;
- ShaderProc32 chooseBitmapFilterProc(const SkPaint &paint);
+ ShaderProc32 chooseBitmapFilterProc();
// Return false if we failed to setup for fast translate (e.g. overflow)
bool setupForTranslate();