OLD | NEW |
| (Empty) |
1 /* libs/graphics/sgl/SkCoreBlitters.h | |
2 ** | |
3 ** Copyright 2006, The Android Open Source Project | |
4 ** | |
5 ** Licensed under the Apache License, Version 2.0 (the "License"); | |
6 ** you may not use this file except in compliance with the License. | |
7 ** You may obtain a copy of the License at | |
8 ** | |
9 ** http://www.apache.org/licenses/LICENSE-2.0 | |
10 ** | |
11 ** Unless required by applicable law or agreed to in writing, software | |
12 ** distributed under the License is distributed on an "AS IS" BASIS, | |
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 ** See the License for the specific language governing permissions and | |
15 ** limitations under the License. | |
16 */ | |
17 | |
18 #ifndef SkCoreBlitters_DEFINED | |
19 #define SkCoreBlitters_DEFINED | |
20 | |
21 #include "SkBlitter.h" | |
22 #include "SkBlitRow.h" | |
23 | |
24 class SkRasterBlitter : public SkBlitter { | |
25 public: | |
26 SkRasterBlitter(const SkBitmap& device) : fDevice(device) {} | |
27 | |
28 protected: | |
29 const SkBitmap& fDevice; | |
30 | |
31 private: | |
32 typedef SkBlitter INHERITED; | |
33 }; | |
34 | |
35 class SkShaderBlitter : public SkRasterBlitter { | |
36 public: | |
37 SkShaderBlitter(const SkBitmap& device, const SkPaint& paint); | |
38 virtual ~SkShaderBlitter(); | |
39 | |
40 protected: | |
41 SkShader* fShader; | |
42 | |
43 private: | |
44 // illegal | |
45 SkShaderBlitter& operator=(const SkShaderBlitter&); | |
46 | |
47 typedef SkRasterBlitter INHERITED; | |
48 }; | |
49 | |
50 /////////////////////////////////////////////////////////////////////////////// | |
51 | |
52 class SkA8_Blitter : public SkRasterBlitter { | |
53 public: | |
54 SkA8_Blitter(const SkBitmap& device, const SkPaint& paint); | |
55 virtual void blitH(int x, int y, int width); | |
56 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
57 virtual void blitV(int x, int y, int height, SkAlpha alpha); | |
58 virtual void blitRect(int x, int y, int width, int height); | |
59 virtual void blitMask(const SkMask&, const SkIRect&); | |
60 virtual const SkBitmap* justAnOpaqueColor(uint32_t*); | |
61 | |
62 private: | |
63 unsigned fSrcA; | |
64 | |
65 // illegal | |
66 SkA8_Blitter& operator=(const SkA8_Blitter&); | |
67 | |
68 typedef SkRasterBlitter INHERITED; | |
69 }; | |
70 | |
71 class SkA8_Shader_Blitter : public SkShaderBlitter { | |
72 public: | |
73 SkA8_Shader_Blitter(const SkBitmap& device, const SkPaint& paint); | |
74 virtual ~SkA8_Shader_Blitter(); | |
75 virtual void blitH(int x, int y, int width); | |
76 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
77 virtual void blitMask(const SkMask&, const SkIRect&); | |
78 | |
79 private: | |
80 SkXfermode* fXfermode; | |
81 SkPMColor* fBuffer; | |
82 uint8_t* fAAExpand; | |
83 | |
84 // illegal | |
85 SkA8_Shader_Blitter& operator=(const SkA8_Shader_Blitter&); | |
86 | |
87 typedef SkShaderBlitter INHERITED; | |
88 }; | |
89 | |
90 //////////////////////////////////////////////////////////////// | |
91 | |
92 class SkARGB32_Blitter : public SkRasterBlitter { | |
93 public: | |
94 SkARGB32_Blitter(const SkBitmap& device, const SkPaint& paint); | |
95 virtual void blitH(int x, int y, int width); | |
96 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
97 virtual void blitV(int x, int y, int height, SkAlpha alpha); | |
98 virtual void blitRect(int x, int y, int width, int height); | |
99 virtual void blitMask(const SkMask&, const SkIRect&); | |
100 virtual const SkBitmap* justAnOpaqueColor(uint32_t*); | |
101 | |
102 protected: | |
103 SkColor fPMColor; | |
104 | |
105 private: | |
106 unsigned fSrcA, fSrcR, fSrcG, fSrcB; | |
107 | |
108 // illegal | |
109 SkARGB32_Blitter& operator=(const SkARGB32_Blitter&); | |
110 | |
111 typedef SkRasterBlitter INHERITED; | |
112 }; | |
113 | |
114 class SkARGB32_Black_Blitter : public SkARGB32_Blitter { | |
115 public: | |
116 SkARGB32_Black_Blitter(const SkBitmap& device, const SkPaint& paint) | |
117 : SkARGB32_Blitter(device, paint) {} | |
118 virtual void blitMask(const SkMask&, const SkIRect&); | |
119 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
120 | |
121 private: | |
122 typedef SkARGB32_Blitter INHERITED; | |
123 }; | |
124 | |
125 class SkARGB32_Opaque_Blitter : public SkARGB32_Blitter { | |
126 public: | |
127 SkARGB32_Opaque_Blitter(const SkBitmap& device, const SkPaint& paint) | |
128 : SkARGB32_Blitter(device, paint) { SkASSERT(paint.getAlpha() == 0xFF);
} | |
129 virtual void blitMask(const SkMask&, const SkIRect&); | |
130 | |
131 private: | |
132 typedef SkARGB32_Blitter INHERITED; | |
133 }; | |
134 | |
135 class SkARGB32_Shader_Blitter : public SkShaderBlitter { | |
136 public: | |
137 SkARGB32_Shader_Blitter(const SkBitmap& device, const SkPaint& paint); | |
138 virtual ~SkARGB32_Shader_Blitter(); | |
139 virtual void blitH(int x, int y, int width); | |
140 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
141 | |
142 private: | |
143 SkXfermode* fXfermode; | |
144 SkPMColor* fBuffer; | |
145 | |
146 // illegal | |
147 SkARGB32_Shader_Blitter& operator=(const SkARGB32_Shader_Blitter&); | |
148 | |
149 typedef SkShaderBlitter INHERITED; | |
150 }; | |
151 | |
152 //////////////////////////////////////////////////////////////// | |
153 | |
154 class SkRGB16_Blitter : public SkRasterBlitter { | |
155 public: | |
156 SkRGB16_Blitter(const SkBitmap& device, const SkPaint& paint); | |
157 virtual void blitH(int x, int y, int width); | |
158 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
159 virtual void blitV(int x, int y, int height, SkAlpha alpha); | |
160 virtual void blitRect(int x, int y, int width, int height); | |
161 virtual void blitMask(const SkMask&, const SkIRect&); | |
162 virtual const SkBitmap* justAnOpaqueColor(uint32_t*); | |
163 | |
164 private: | |
165 SkPMColor fSrcColor32; | |
166 unsigned fScale; | |
167 uint16_t fColor16; // already scaled by fScale | |
168 uint16_t fRawColor16; // unscaled | |
169 uint16_t fRawDither16; // unscaled | |
170 SkBool8 fDoDither; | |
171 | |
172 // illegal | |
173 SkRGB16_Blitter& operator=(const SkRGB16_Blitter&); | |
174 | |
175 typedef SkRasterBlitter INHERITED; | |
176 }; | |
177 | |
178 class SkRGB16_Black_Blitter : public SkRGB16_Blitter { | |
179 public: | |
180 SkRGB16_Black_Blitter(const SkBitmap& device, const SkPaint& paint); | |
181 | |
182 virtual void blitMask(const SkMask&, const SkIRect&); | |
183 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
184 | |
185 private: | |
186 typedef SkRGB16_Blitter INHERITED; | |
187 }; | |
188 | |
189 class SkRGB16_Shader_Blitter : public SkShaderBlitter { | |
190 public: | |
191 SkRGB16_Shader_Blitter(const SkBitmap& device, const SkPaint& paint); | |
192 virtual ~SkRGB16_Shader_Blitter(); | |
193 virtual void blitH(int x, int y, int width); | |
194 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
195 | |
196 protected: | |
197 SkPMColor* fBuffer; | |
198 SkBlitRow::Proc fOpaqueProc; | |
199 SkBlitRow::Proc fAlphaProc; | |
200 | |
201 private: | |
202 // illegal | |
203 SkRGB16_Shader_Blitter& operator=(const SkRGB16_Shader_Blitter&); | |
204 | |
205 typedef SkShaderBlitter INHERITED; | |
206 }; | |
207 | |
208 // used only if the shader can perform shadSpan16 | |
209 class SkRGB16_Shader16_Blitter : public SkRGB16_Shader_Blitter { | |
210 public: | |
211 SkRGB16_Shader16_Blitter(const SkBitmap& device, const SkPaint& paint); | |
212 virtual void blitH(int x, int y, int width); | |
213 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
214 | |
215 private: | |
216 typedef SkRGB16_Shader_Blitter INHERITED; | |
217 }; | |
218 | |
219 class SkRGB16_Shader_Xfermode_Blitter : public SkShaderBlitter { | |
220 public: | |
221 SkRGB16_Shader_Xfermode_Blitter(const SkBitmap& device, const SkPaint& paint
); | |
222 virtual ~SkRGB16_Shader_Xfermode_Blitter(); | |
223 virtual void blitH(int x, int y, int width); | |
224 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_
t runs[]); | |
225 | |
226 private: | |
227 SkXfermode* fXfermode; | |
228 SkPMColor* fBuffer; | |
229 uint8_t* fAAExpand; | |
230 | |
231 // illegal | |
232 SkRGB16_Shader_Xfermode_Blitter& operator=(const SkRGB16_Shader_Xfermode_Bli
tter&); | |
233 | |
234 typedef SkShaderBlitter INHERITED; | |
235 }; | |
236 | |
237 ///////////////////////////////////////////////////////////////////////////// | |
238 | |
239 class SkA1_Blitter : public SkRasterBlitter { | |
240 public: | |
241 SkA1_Blitter(const SkBitmap& device, const SkPaint& paint); | |
242 virtual void blitH(int x, int y, int width); | |
243 | |
244 private: | |
245 uint8_t fSrcA; | |
246 | |
247 // illegal | |
248 SkA1_Blitter& operator=(const SkA1_Blitter&); | |
249 | |
250 typedef SkRasterBlitter INHERITED; | |
251 }; | |
252 | |
253 | |
254 extern SkBlitter* SkBlitter_ChooseD4444(const SkBitmap& device, | |
255 const SkPaint& paint, | |
256 void* storage, size_t storageSize); | |
257 | |
258 #endif | |
259 | |
OLD | NEW |