diff options
author | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2009-10-02 16:34:57 +0000 |
---|---|---|
committer | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2009-10-02 16:34:57 +0000 |
commit | 1fc4c605def61d9e10489f9cd63dc378baa6ade3 (patch) | |
tree | 5c894c864c17a618387c10aea3a9316ba9ae2283 /src/core/SkCoreBlitters.h | |
parent | a5b741a97b2162127f1b1725912d07ecd41fa825 (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.h | 118 |
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 |