aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkCoreBlitters.h
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-10-02 16:34:57 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-10-02 16:34:57 +0000
commit1fc4c605def61d9e10489f9cd63dc378baa6ade3 (patch)
tree5c894c864c17a618387c10aea3a9316ba9ae2283 /src/core/SkCoreBlitters.h
parenta5b741a97b2162127f1b1725912d07ecd41fa825 (diff)
move factory for 565 into its own file
git-svn-id: http://skia.googlecode.com/svn/trunk@374 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkCoreBlitters.h')
-rw-r--r--src/core/SkCoreBlitters.h118
1 files changed, 19 insertions, 99 deletions
diff --git a/src/core/SkCoreBlitters.h b/src/core/SkCoreBlitters.h
index 84f8fa6524..6204b2c01b 100644
--- a/src/core/SkCoreBlitters.h
+++ b/src/core/SkCoreBlitters.h
@@ -152,105 +152,7 @@ private:
typedef SkShaderBlitter INHERITED;
};
-////////////////////////////////////////////////////////////////
-
-class SkRGB16_Blitter : public SkRasterBlitter {
-public:
- SkRGB16_Blitter(const SkBitmap& device, const SkPaint& paint);
- virtual void blitH(int x, int y, int width);
- virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
- virtual void blitV(int x, int y, int height, SkAlpha alpha);
- virtual void blitRect(int x, int y, int width, int height);
- virtual void blitMask(const SkMask&, const SkIRect&);
- virtual const SkBitmap* justAnOpaqueColor(uint32_t*);
-
-protected:
- SkPMColor fSrcColor32;
- unsigned fScale;
- uint16_t fColor16; // already scaled by fScale
- uint16_t fRawColor16; // unscaled
- uint16_t fRawDither16; // unscaled
- SkBool8 fDoDither;
-
- // illegal
- SkRGB16_Blitter& operator=(const SkRGB16_Blitter&);
-
- typedef SkRasterBlitter INHERITED;
-};
-
-class SkRGB16_Opaque_Blitter : public SkRGB16_Blitter {
-public:
- SkRGB16_Opaque_Blitter(const SkBitmap& device, const SkPaint& paint);
- virtual void blitH(int x, int y, int width);
- virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
- virtual void blitRect(int x, int y, int width, int height);
- virtual void blitMask(const SkMask&, const SkIRect&);
-
-private:
- typedef SkRGB16_Blitter INHERITED;
-};
-
-class SkRGB16_Black_Blitter : public SkRGB16_Opaque_Blitter {
-public:
- SkRGB16_Black_Blitter(const SkBitmap& device, const SkPaint& paint);
- virtual void blitMask(const SkMask&, const SkIRect&);
- virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
-
-private:
- typedef SkRGB16_Opaque_Blitter INHERITED;
-};
-
-class SkRGB16_Shader_Blitter : public SkShaderBlitter {
-public:
- SkRGB16_Shader_Blitter(const SkBitmap& device, const SkPaint& paint);
- virtual ~SkRGB16_Shader_Blitter();
- virtual void blitH(int x, int y, int width);
- virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
- virtual void blitRect(int x, int y, int width, int height);
-
-protected:
- SkPMColor* fBuffer;
- SkBlitRow::Proc fOpaqueProc;
- SkBlitRow::Proc fAlphaProc;
-
-private:
- // illegal
- SkRGB16_Shader_Blitter& operator=(const SkRGB16_Shader_Blitter&);
-
- typedef SkShaderBlitter INHERITED;
-};
-
-// used only if the shader can perform shadSpan16
-class SkRGB16_Shader16_Blitter : public SkRGB16_Shader_Blitter {
-public:
- SkRGB16_Shader16_Blitter(const SkBitmap& device, const SkPaint& paint);
- virtual void blitH(int x, int y, int width);
- virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
- virtual void blitRect(int x, int y, int width, int height);
-
-private:
- typedef SkRGB16_Shader_Blitter INHERITED;
-};
-
-class SkRGB16_Shader_Xfermode_Blitter : public SkShaderBlitter {
-public:
- SkRGB16_Shader_Xfermode_Blitter(const SkBitmap& device, const SkPaint& paint);
- virtual ~SkRGB16_Shader_Xfermode_Blitter();
- virtual void blitH(int x, int y, int width);
- virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
-
-private:
- SkXfermode* fXfermode;
- SkPMColor* fBuffer;
- uint8_t* fAAExpand;
-
- // illegal
- SkRGB16_Shader_Xfermode_Blitter& operator=(const SkRGB16_Shader_Xfermode_Blitter&);
-
- typedef SkShaderBlitter INHERITED;
-};
-
-/////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
class SkA1_Blitter : public SkRasterBlitter {
public:
@@ -266,10 +168,28 @@ private:
typedef SkRasterBlitter INHERITED;
};
+///////////////////////////////////////////////////////////////////////////////
+
+/* These return the correct subclass of blitter for their device config.
+
+ Currently, they make the following assumptions about the state of the
+ paint:
+
+ 1. If there is an xfermode, there will also be a shader
+ 2. If there is a colorfilter, there will be a shader that itself handles
+ calling the filter, so the blitter can always ignore the colorfilter obj
+
+ These pre-conditions must be handled by the caller, in our case
+ SkBlitter::Choose(...)
+ */
extern SkBlitter* SkBlitter_ChooseD4444(const SkBitmap& device,
const SkPaint& paint,
void* storage, size_t storageSize);
+extern SkBlitter* SkBlitter_ChooseD565(const SkBitmap& device,
+ const SkPaint& paint,
+ void* storage, size_t storageSize);
+
#endif