Index: src/core/SkSpriteBlitter.h |
diff --git a/src/core/SkSpriteBlitter.h b/src/core/SkSpriteBlitter.h |
index 62c50c8b35c267f3e1461ff2468e77dd9d48bcf6..3a62860867901c4075a47e3e2d37104c254ae0da 100644 |
--- a/src/core/SkSpriteBlitter.h |
+++ b/src/core/SkSpriteBlitter.h |
@@ -15,18 +15,23 @@ |
class SkPaint; |
+// SkSpriteBlitter specializes SkBlitter in a way to move large rectangles of pixels around. |
+// Because of this use, the main primitive shifts from blitH style things to the more efficient |
+// blitRect. |
class SkSpriteBlitter : public SkBlitter { |
public: |
SkSpriteBlitter(const SkPixmap& source); |
virtual void setup(const SkPixmap& dst, int left, int top, const SkPaint&); |
-#ifdef SK_DEBUG |
+ // blitH, blitAntiH, blitV and blitMask should not be called on an SkSpriteBlitter. |
void blitH(int x, int y, int width) override; |
void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]) override; |
void blitV(int x, int y, int height, SkAlpha alpha) override; |
void blitMask(const SkMask&, const SkIRect& clip) override; |
-#endif |
+ |
+ // A SkSpriteBlitter must implement blitRect. |
+ void blitRect(int x, int y, int width, int height) override = 0; |
static SkSpriteBlitter* ChooseD16(const SkPixmap& source, const SkPaint&, SkTBlitterAllocator*); |
static SkSpriteBlitter* ChooseL32(const SkPixmap& source, const SkPaint&, SkTBlitterAllocator*); |
@@ -38,6 +43,9 @@ protected: |
const SkPixmap fSource; |
int fLeft, fTop; |
const SkPaint* fPaint; |
+ |
+private: |
+ typedef SkBlitter INHERITED; |
}; |
#endif |