| OLD | NEW |
| (Empty) |
| 1 #ifndef SkScaledBitmapSampler_DEFINED | |
| 2 #define SkScaledBitmapSampler_DEFINED | |
| 3 | |
| 4 #include "SkTypes.h" | |
| 5 | |
| 6 class SkBitmap; | |
| 7 | |
| 8 class SkScaledBitmapSampler { | |
| 9 public: | |
| 10 SkScaledBitmapSampler(int origWidth, int origHeight, int cellSize); | |
| 11 | |
| 12 int scaledWidth() const { return fScaledWidth; } | |
| 13 int scaledHeight() const { return fScaledHeight; } | |
| 14 | |
| 15 int srcY0() const { return fY0; } | |
| 16 int srcDY() const { return fDY; } | |
| 17 | |
| 18 enum SrcConfig { | |
| 19 kGray, // 1 byte per pixel | |
| 20 kIndex, // 1 byte per pixel | |
| 21 kRGB, // 3 bytes per pixel | |
| 22 kRGBX, // 4 byes per pixel (ignore 4th) | |
| 23 kRGBA // 4 bytes per pixel | |
| 24 }; | |
| 25 | |
| 26 // Given a dst bitmap (with pixels already allocated) and a src-config, | |
| 27 // prepares iterator to process the src colors and write them into dst. | |
| 28 // Returns false if the request cannot be fulfulled. | |
| 29 bool begin(SkBitmap* dst, SrcConfig sc, bool doDither); | |
| 30 // call with row of src pixels, for y = 0...scaledHeight-1. | |
| 31 // returns true if the row had non-opaque alpha in it | |
| 32 bool next(const uint8_t* SK_RESTRICT src); | |
| 33 | |
| 34 private: | |
| 35 int fScaledWidth; | |
| 36 int fScaledHeight; | |
| 37 | |
| 38 int fX0; // first X coord to sample | |
| 39 int fY0; // first Y coord (scanline) to sample | |
| 40 int fDX; // step between X samples | |
| 41 int fDY; // step between Y samples | |
| 42 | |
| 43 typedef bool (*RowProc)(void* SK_RESTRICT dstRow, | |
| 44 const uint8_t* SK_RESTRICT src, | |
| 45 int width, int deltaSrc, int y); | |
| 46 | |
| 47 // setup state | |
| 48 char* fDstRow; // points into bitmap's pixels | |
| 49 int fDstRowBytes; | |
| 50 int fCurrY; // used for dithering | |
| 51 int fSrcPixelSize; // 1, 3, 4 | |
| 52 RowProc fRowProc; | |
| 53 }; | |
| 54 | |
| 55 #endif | |
| OLD | NEW |