1 /* 2 * Copyright 2006 The Android Open Source Project 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkSpriteBlitter_DEFINED 9 #define SkSpriteBlitter_DEFINED 10 11 #include "SkBlitter.h" 12 #include "SkPixmap.h" 13 #include "SkShader.h" 14 #include "SkSmallAllocator.h" 15 16 class SkPaint; 17 18 class SkSpriteBlitter : public SkBlitter { 19 public: 20 SkSpriteBlitter(const SkPixmap& source); 21 22 virtual void setup(const SkPixmap& dst, int left, int top, const SkPaint&); 23 24 #ifdef SK_DEBUG 25 void blitH(int x, int y, int width) override; 26 void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]) override; 27 void blitV(int x, int y, int height, SkAlpha alpha) override; 28 void blitMask(const SkMask&, const SkIRect& clip) override; 29 #endif 30 31 static SkSpriteBlitter* ChooseD16(const SkPixmap& source, const SkPaint&, SkTBlitterAllocator*); 32 static SkSpriteBlitter* ChooseL32(const SkPixmap& source, const SkPaint&, SkTBlitterAllocator*); 33 static SkSpriteBlitter* ChooseS32(const SkPixmap& source, const SkPaint&, SkTBlitterAllocator*); 34 static SkSpriteBlitter* ChooseF16(const SkPixmap& source, const SkPaint&, SkTBlitterAllocator*); 35 36 protected: 37 SkPixmap fDst; 38 const SkPixmap fSource; 39 int fLeft, fTop; 40 const SkPaint* fPaint; 41 }; 42 43 #endif 44