Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: src/codec/SkMaskSwizzler.cpp

Issue 1013743003: Adding premul and 565 swizzles for bmp: (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Clean up before public code review Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkCodecPriv.h" 8 #include "SkCodecPriv.h"
9 #include "SkColorPriv.h" 9 #include "SkColorPriv.h"
10 #include "SkMaskSwizzler.h" 10 #include "SkMaskSwizzler.h"
11 11
12 /* 12 static SkSwizzler::ResultAlpha swizzle_mask16_to_n32_opaque(
13 *
14 * Row procedure for masked color components with 16 bits per pixel
15 *
16 */
17 static SkSwizzler::ResultAlpha swizzle_mask16_to_n32(
18 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) { 13 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
19 14
20 // Use the masks to decode to the destination 15 // Use the masks to decode to the destination
21 uint16_t* srcPtr = (uint16_t*) srcRow; 16 uint16_t* srcPtr = (uint16_t*) srcRow;
22 SkPMColor* dstPtr = (SkPMColor*) dstRow; 17 SkPMColor* dstPtr = (SkPMColor*) dstRow;
23 for (int i = 0; i < width; i++) { 18 for (int i = 0; i < width; i++) {
24 uint16_t p = srcPtr[i]; 19 uint16_t p = srcPtr[i];
25 uint8_t red = masks->getRed(p); 20 uint8_t red = masks->getRed(p);
26 uint8_t green = masks->getGreen(p); 21 uint8_t green = masks->getGreen(p);
27 uint8_t blue = masks->getBlue(p); 22 uint8_t blue = masks->getBlue(p);
28 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); 23 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue);
29 } 24 }
30 return SkSwizzler::kOpaque_ResultAlpha; 25 return SkSwizzler::kOpaque_ResultAlpha;
31 } 26 }
32 27
33 /* 28 static SkSwizzler::ResultAlpha swizzle_mask16_to_n32_unpremul(
34 *
35 * Row procedure for masked color components with 16 bits per pixel with alpha
36 *
37 */
38 static SkSwizzler::ResultAlpha swizzle_mask16_alpha_to_n32(
39 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) { 29 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
40 30
41 // Use the masks to decode to the destination 31 // Use the masks to decode to the destination
42 uint16_t* srcPtr = (uint16_t*) srcRow; 32 uint16_t* srcPtr = (uint16_t*) srcRow;
43 SkPMColor* dstPtr = (SkPMColor*) dstRow; 33 SkPMColor* dstPtr = (SkPMColor*) dstRow;
44 INIT_RESULT_ALPHA; 34 INIT_RESULT_ALPHA;
45 for (int i = 0; i < width; i++) { 35 for (int i = 0; i < width; i++) {
46 uint16_t p = srcPtr[i]; 36 uint16_t p = srcPtr[i];
47 uint8_t red = masks->getRed(p); 37 uint8_t red = masks->getRed(p);
48 uint8_t green = masks->getGreen(p); 38 uint8_t green = masks->getGreen(p);
49 uint8_t blue = masks->getBlue(p); 39 uint8_t blue = masks->getBlue(p);
50 uint8_t alpha = masks->getAlpha(p); 40 uint8_t alpha = masks->getAlpha(p);
51 UPDATE_RESULT_ALPHA(alpha); 41 UPDATE_RESULT_ALPHA(alpha);
52 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); 42 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue);
53 } 43 }
54 return COMPUTE_RESULT_ALPHA; 44 return COMPUTE_RESULT_ALPHA;
55 } 45 }
56 46
57 /* 47 static SkSwizzler::ResultAlpha swizzle_mask16_to_n32_premul(
58 *
59 * Row procedure for masked color components with 24 bits per pixel
60 *
61 */
62 static SkSwizzler::ResultAlpha swizzle_mask24_to_n32(
63 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) { 48 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
64 49
65 // Use the masks to decode to the destination 50 // Use the masks to decode to the destination
51 uint16_t* srcPtr = (uint16_t*) srcRow;
52 SkPMColor* dstPtr = (SkPMColor*) dstRow;
53 INIT_RESULT_ALPHA;
54 for (int i = 0; i < width; i++) {
55 uint16_t p = srcPtr[i];
56 uint8_t red = masks->getRed(p);
57 uint8_t green = masks->getGreen(p);
58 uint8_t blue = masks->getBlue(p);
59 uint8_t alpha = masks->getAlpha(p);
60 UPDATE_RESULT_ALPHA(alpha);
61 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue);
62 }
63 return COMPUTE_RESULT_ALPHA;
64 }
65
66 static SkSwizzler::ResultAlpha swizzle_mask16_to_565_opaque(
67 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
68
69 // Use the masks to decode to the destination
70 uint16_t* srcPtr = (uint16_t*) srcRow;
71 uint16_t* dstPtr = (uint16_t*) dstRow;
72 for (int i = 0; i < width; i++) {
73 uint16_t p = srcPtr[i];
74 uint8_t red = masks->getRed(p);
75 uint8_t green = masks->getGreen(p);
76 uint8_t blue = masks->getBlue(p);
77 dstPtr[i] = SkPack888ToRGB16(red, green, blue);
78 }
79 return SkSwizzler::kOpaque_ResultAlpha;
80 }
81
82 static SkSwizzler::ResultAlpha swizzle_mask16_to_565_premul(
83 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
84
85 // Use the masks to decode to the destination
86 uint16_t* srcPtr = (uint16_t*) srcRow;
87 uint16_t* dstPtr = (uint16_t*) dstRow;
88 INIT_RESULT_ALPHA;
89 for (int i = 0; i < width; i++) {
90 uint16_t p = srcPtr[i];
91 uint8_t red = masks->getRed(p);
92 uint8_t green = masks->getGreen(p);
93 uint8_t blue = masks->getBlue(p);
94 uint8_t alpha = masks->getAlpha(p);
95 UPDATE_RESULT_ALPHA(alpha);
96 dstPtr[i] = SkPixel32ToPixel16(
97 SkPreMultiplyARGB(alpha, red, green, blue));
98 }
99 return COMPUTE_RESULT_ALPHA;
100 }
101
102 static SkSwizzler::ResultAlpha swizzle_mask24_to_n32_opaque(
103 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
104
105 // Use the masks to decode to the destination
66 SkPMColor* dstPtr = (SkPMColor*) dstRow; 106 SkPMColor* dstPtr = (SkPMColor*) dstRow;
67 for (int i = 0; i < 3*width; i += 3) { 107 for (int i = 0; i < 3*width; i += 3) {
68 uint32_t p = srcRow[i] | (srcRow[i + 1] << 8) | srcRow[i + 2] << 16; 108 uint32_t p = srcRow[i] | (srcRow[i + 1] << 8) | srcRow[i + 2] << 16;
69 uint8_t red = masks->getRed(p); 109 uint8_t red = masks->getRed(p);
70 uint8_t green = masks->getGreen(p); 110 uint8_t green = masks->getGreen(p);
71 uint8_t blue = masks->getBlue(p); 111 uint8_t blue = masks->getBlue(p);
72 dstPtr[i/3] = SkPackARGB32NoCheck(0xFF, red, green, blue); 112 dstPtr[i/3] = SkPackARGB32NoCheck(0xFF, red, green, blue);
73 } 113 }
74 return SkSwizzler::kOpaque_ResultAlpha; 114 return SkSwizzler::kOpaque_ResultAlpha;
75 } 115 }
76 116
77 /* 117 static SkSwizzler::ResultAlpha swizzle_mask24_to_n32_unpremul(
78 *
79 * Row procedure for masked color components with 24 bits per pixel with alpha
80 *
81 */
82 static SkSwizzler::ResultAlpha swizzle_mask24_alpha_to_n32(
83 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) { 118 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
84 119
85 // Use the masks to decode to the destination 120 // Use the masks to decode to the destination
86 SkPMColor* dstPtr = (SkPMColor*) dstRow; 121 SkPMColor* dstPtr = (SkPMColor*) dstRow;
87 INIT_RESULT_ALPHA; 122 INIT_RESULT_ALPHA;
88 for (int i = 0; i < 3*width; i += 3) { 123 for (int i = 0; i < 3*width; i += 3) {
89 uint32_t p = srcRow[i] | (srcRow[i + 1] << 8) | srcRow[i + 2] << 16; 124 uint32_t p = srcRow[i] | (srcRow[i + 1] << 8) | srcRow[i + 2] << 16;
90 uint8_t red = masks->getRed(p); 125 uint8_t red = masks->getRed(p);
91 uint8_t green = masks->getGreen(p); 126 uint8_t green = masks->getGreen(p);
92 uint8_t blue = masks->getBlue(p); 127 uint8_t blue = masks->getBlue(p);
93 uint8_t alpha = masks->getAlpha(p); 128 uint8_t alpha = masks->getAlpha(p);
94 UPDATE_RESULT_ALPHA(alpha); 129 UPDATE_RESULT_ALPHA(alpha);
95 dstPtr[i/3] = SkPackARGB32NoCheck(alpha, red, green, blue); 130 dstPtr[i/3] = SkPackARGB32NoCheck(alpha, red, green, blue);
96 } 131 }
97 return COMPUTE_RESULT_ALPHA; 132 return COMPUTE_RESULT_ALPHA;
98 } 133 }
99 134
100 /* 135 static SkSwizzler::ResultAlpha swizzle_mask24_to_n32_premul(
101 *
102 * Row procedure for masked color components with 32 bits per pixel
103 *
104 */
105 static SkSwizzler::ResultAlpha swizzle_mask32_to_n32(
106 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) { 136 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
107 137
108 // Use the masks to decode to the destination 138 // Use the masks to decode to the destination
139 SkPMColor* dstPtr = (SkPMColor*) dstRow;
140 INIT_RESULT_ALPHA;
141 for (int i = 0; i < 3*width; i += 3) {
142 uint32_t p = srcRow[i] | (srcRow[i + 1] << 8) | srcRow[i + 2] << 16;
143 uint8_t red = masks->getRed(p);
144 uint8_t green = masks->getGreen(p);
145 uint8_t blue = masks->getBlue(p);
146 uint8_t alpha = masks->getAlpha(p);
147 UPDATE_RESULT_ALPHA(alpha);
148 dstPtr[i/3] = SkPreMultiplyARGB(alpha, red, green, blue);
149 }
150 return COMPUTE_RESULT_ALPHA;
151 }
152
153 static SkSwizzler::ResultAlpha swizzle_mask24_to_565_opaque(
154 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
155
156 // Use the masks to decode to the destination
157 uint16_t* dstPtr = (uint16_t*) dstRow;
158 for (int i = 0; i < 3*width; i += 3) {
159 uint32_t p = srcRow[i] | (srcRow[i + 1] << 8) | srcRow[i + 2] << 16;
160 uint8_t red = masks->getRed(p);
161 uint8_t green = masks->getGreen(p);
162 uint8_t blue = masks->getBlue(p);
163 dstPtr[i/3] = SkPack888ToRGB16(red, green, blue);
164 }
165 return SkSwizzler::kOpaque_ResultAlpha;
166 }
167
168 static SkSwizzler::ResultAlpha swizzle_mask24_to_565_premul(
169 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
170
171 // Use the masks to decode to the destination
172 uint16_t* dstPtr = (uint16_t*) dstRow;
173 INIT_RESULT_ALPHA;
174 for (int i = 0; i < 3*width; i += 3) {
175 uint32_t p = srcRow[i] | (srcRow[i + 1] << 8) | srcRow[i + 2] << 16;
176 uint8_t red = masks->getRed(p);
177 uint8_t green = masks->getGreen(p);
178 uint8_t blue = masks->getBlue(p);
179 uint8_t alpha = masks->getAlpha(p);
180 UPDATE_RESULT_ALPHA(alpha);
181 dstPtr[i/3] = SkPixel32ToPixel16(
182 SkPreMultiplyARGB(alpha, red, green, blue));
183 }
184 return COMPUTE_RESULT_ALPHA;
185 }
186
187 static SkSwizzler::ResultAlpha swizzle_mask32_to_n32_opaque(
188 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
189
190 // Use the masks to decode to the destination
109 uint32_t* srcPtr = (uint32_t*) srcRow; 191 uint32_t* srcPtr = (uint32_t*) srcRow;
110 SkPMColor* dstPtr = (SkPMColor*) dstRow; 192 SkPMColor* dstPtr = (SkPMColor*) dstRow;
111 for (int i = 0; i < width; i++) { 193 for (int i = 0; i < width; i++) {
112 uint32_t p = srcPtr[i]; 194 uint32_t p = srcPtr[i];
113 uint8_t red = masks->getRed(p); 195 uint8_t red = masks->getRed(p);
114 uint8_t green = masks->getGreen(p); 196 uint8_t green = masks->getGreen(p);
115 uint8_t blue = masks->getBlue(p); 197 uint8_t blue = masks->getBlue(p);
116 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); 198 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue);
117 } 199 }
118 return SkSwizzler::kOpaque_ResultAlpha; 200 return SkSwizzler::kOpaque_ResultAlpha;
119 } 201 }
120 202
121 /* 203 static SkSwizzler::ResultAlpha swizzle_mask32_to_n32_unpremul(
122 *
123 * Row procedure for masked color components with 32 bits per pixel
124 *
125 */
126 static SkSwizzler::ResultAlpha swizzle_mask32_alpha_to_n32(
127 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) { 204 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
128 205
129 // Use the masks to decode to the destination 206 // Use the masks to decode to the destination
130 uint32_t* srcPtr = (uint32_t*) srcRow; 207 uint32_t* srcPtr = (uint32_t*) srcRow;
131 SkPMColor* dstPtr = (SkPMColor*) dstRow; 208 SkPMColor* dstPtr = (SkPMColor*) dstRow;
132 INIT_RESULT_ALPHA; 209 INIT_RESULT_ALPHA;
133 for (int i = 0; i < width; i++) { 210 for (int i = 0; i < width; i++) {
134 uint32_t p = srcPtr[i]; 211 uint32_t p = srcPtr[i];
135 uint8_t red = masks->getRed(p); 212 uint8_t red = masks->getRed(p);
136 uint8_t green = masks->getGreen(p); 213 uint8_t green = masks->getGreen(p);
137 uint8_t blue = masks->getBlue(p); 214 uint8_t blue = masks->getBlue(p);
138 uint8_t alpha = masks->getAlpha(p); 215 uint8_t alpha = masks->getAlpha(p);
139 UPDATE_RESULT_ALPHA(alpha); 216 UPDATE_RESULT_ALPHA(alpha);
140 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); 217 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue);
141 } 218 }
142 return COMPUTE_RESULT_ALPHA; 219 return COMPUTE_RESULT_ALPHA;
143 } 220 }
144 221
222 static SkSwizzler::ResultAlpha swizzle_mask32_to_n32_premul(
223 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
224
225 // Use the masks to decode to the destination
226 uint32_t* srcPtr = (uint32_t*) srcRow;
227 SkPMColor* dstPtr = (SkPMColor*) dstRow;
228 INIT_RESULT_ALPHA;
229 for (int i = 0; i < width; i++) {
230 uint32_t p = srcPtr[i];
231 uint8_t red = masks->getRed(p);
232 uint8_t green = masks->getGreen(p);
233 uint8_t blue = masks->getBlue(p);
234 uint8_t alpha = masks->getAlpha(p);
235 UPDATE_RESULT_ALPHA(alpha);
236 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue);
237 }
238 return COMPUTE_RESULT_ALPHA;
239 }
240
241 static SkSwizzler::ResultAlpha swizzle_mask32_to_565_opaque(
242 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
243
244 // Use the masks to decode to the destination
245 uint32_t* srcPtr = (uint32_t*) srcRow;
246 uint16_t* dstPtr = (uint16_t*) dstRow;
247 for (int i = 0; i < width; i++) {
248 uint32_t p = srcPtr[i];
249 uint8_t red = masks->getRed(p);
250 uint8_t green = masks->getGreen(p);
251 uint8_t blue = masks->getBlue(p);
252 dstPtr[i] = SkPack888ToRGB16(red, green, blue);
253 }
254 return SkSwizzler::kOpaque_ResultAlpha;
255 }
256
257 static SkSwizzler::ResultAlpha swizzle_mask32_to_565_premul(
258 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks) {
259
260 // Use the masks to decode to the destination
261 uint32_t* srcPtr = (uint32_t*) srcRow;
262 uint16_t* dstPtr = (uint16_t*) dstRow;
263 INIT_RESULT_ALPHA;
264 for (int i = 0; i < width; i++) {
265 uint32_t p = srcPtr[i];
266 uint8_t red = masks->getRed(p);
267 uint8_t green = masks->getGreen(p);
268 uint8_t blue = masks->getBlue(p);
269 uint8_t alpha = masks->getAlpha(p);
270 UPDATE_RESULT_ALPHA(alpha);
271 dstPtr[i] = SkPixel32ToPixel16(
272 SkPreMultiplyARGB(alpha, red, green, blue));
273 }
274 return COMPUTE_RESULT_ALPHA;
275 }
276
145 /* 277 /*
146 * 278 *
147 * Create a new mask swizzler 279 * Create a new mask swizzler
148 * 280 *
149 */ 281 */
150 SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler( 282 SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(
151 const SkImageInfo& imageInfo, SkMasks* masks, uint32_t bitsPerPixel) { 283 const SkImageInfo& info, SkMasks* masks, uint32_t bitsPerPixel) {
152 284
153 // Choose the appropriate row procedure 285 // Choose the appropriate row procedure
154 RowProc proc = NULL; 286 RowProc proc = NULL;
155 uint32_t alphaMask = masks->getAlphaMask();
156 switch (bitsPerPixel) { 287 switch (bitsPerPixel) {
157 case 16: 288 case 16:
158 if (0 == alphaMask) { 289 switch (info.colorType()) {
159 proc = &swizzle_mask16_to_n32; 290 case kN32_SkColorType:
160 } else { 291 switch (info.alphaType()) {
161 proc = &swizzle_mask16_alpha_to_n32; 292 case kUnpremul_SkAlphaType:
293 proc = &swizzle_mask16_to_n32_unpremul;
294 break;
295 case kPremul_SkAlphaType:
296 proc = &swizzle_mask16_to_n32_premul;
297 break;
298 case kOpaque_SkAlphaType:
299 proc = &swizzle_mask16_to_n32_opaque;
300 default:
301 break;
302 }
303 break;
304 case kRGB_565_SkColorType:
305 switch (info.alphaType()) {
306 case kPremul_SkAlphaType:
307 proc = &swizzle_mask16_to_565_premul;
scroggo 2015/03/17 13:27:22 565 is only opaque, so we 565 premul does not make
msarett 2015/03/17 16:54:06 That's good news. Reduces the number of cases and
308 break;
309 case kOpaque_SkAlphaType:
310 proc = &swizzle_mask16_to_565_opaque;
311 default:
312 break;
313 }
314 break;
315 default:
316 break;
162 } 317 }
163 break; 318 break;
164 case 24: 319 case 24:
165 if (0 == alphaMask) { 320 switch (info.colorType()) {
166 proc = &swizzle_mask24_to_n32; 321 case kN32_SkColorType:
167 } else { 322 switch (info.alphaType()) {
168 proc = &swizzle_mask24_alpha_to_n32; 323 case kUnpremul_SkAlphaType:
324 proc = &swizzle_mask24_to_n32_unpremul;
325 break;
326 case kPremul_SkAlphaType:
327 proc = &swizzle_mask24_to_n32_premul;
328 break;
329 case kOpaque_SkAlphaType:
330 proc = &swizzle_mask24_to_n32_opaque;
331 default:
332 break;
333 }
334 break;
335 case kRGB_565_SkColorType:
336 switch (info.alphaType()) {
337 case kPremul_SkAlphaType:
338 proc = &swizzle_mask24_to_565_premul;
339 break;
340 case kOpaque_SkAlphaType:
341 proc = &swizzle_mask24_to_565_opaque;
342 default:
343 break;
344 }
345 break;
346 default:
347 break;
169 } 348 }
170 break; 349 break;
171 case 32: 350 case 32:
172 if (0 == alphaMask) { 351 switch (info.colorType()) {
173 proc = &swizzle_mask32_to_n32; 352 case kN32_SkColorType:
174 } else { 353 switch (info.alphaType()) {
175 proc = &swizzle_mask32_alpha_to_n32; 354 case kUnpremul_SkAlphaType:
355 proc = &swizzle_mask32_to_n32_unpremul;
356 break;
357 case kPremul_SkAlphaType:
358 proc = &swizzle_mask32_to_n32_premul;
359 break;
360 case kOpaque_SkAlphaType:
361 proc = &swizzle_mask32_to_n32_opaque;
362 default:
363 break;
364 }
365 break;
366 case kRGB_565_SkColorType:
367 switch (info.alphaType()) {
368 case kPremul_SkAlphaType:
369 proc = &swizzle_mask32_to_565_premul;
370 break;
371 case kOpaque_SkAlphaType:
372 proc = &swizzle_mask32_to_565_opaque;
373 default:
374 break;
375 }
376 break;
377 default:
378 break;
176 } 379 }
177 break; 380 break;
178 default: 381 default:
179 SkASSERT(false); 382 SkASSERT(false);
180 return NULL; 383 return NULL;
181 } 384 }
182 return SkNEW_ARGS(SkMaskSwizzler, (imageInfo, masks, proc)); 385 return SkNEW_ARGS(SkMaskSwizzler, (info, masks, proc));
183 } 386 }
184 387
185 /* 388 /*
186 * 389 *
187 * Constructor for mask swizzler 390 * Constructor for mask swizzler
188 * 391 *
189 */ 392 */
190 SkMaskSwizzler::SkMaskSwizzler(const SkImageInfo& imageInfo, 393 SkMaskSwizzler::SkMaskSwizzler(const SkImageInfo& imageInfo,
191 SkMasks* masks, RowProc proc) 394 SkMasks* masks, RowProc proc)
192 : fImageInfo(imageInfo) 395 : fImageInfo(imageInfo)
193 , fMasks(masks) 396 , fMasks(masks)
194 , fRowProc(proc) 397 , fRowProc(proc)
195 {} 398 {}
196 399
197 /* 400 /*
198 * 401 *
199 * Swizzle the next row 402 * Swizzle the next row
200 * 403 *
201 */ 404 */
202 SkSwizzler::ResultAlpha SkMaskSwizzler::next(void* dst, 405 SkSwizzler::ResultAlpha SkMaskSwizzler::next(void* dst,
203 const uint8_t* src) { 406 const uint8_t* src) {
204 return fRowProc(dst, src, fImageInfo.width(), fMasks); 407 return fRowProc(dst, src, fImageInfo.width(), fMasks);
205 } 408 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698