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

Side by Side Diff: src/core/SkBlitMask_D32.cpp

Issue 303543009: replace config() with colorType() (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 #include "SkBlitMask.h" 1 #include "SkBlitMask.h"
2 #include "SkColor.h" 2 #include "SkColor.h"
3 #include "SkColorPriv.h" 3 #include "SkColorPriv.h"
4 4
5 static void D32_A8_Color(void* SK_RESTRICT dst, size_t dstRB, 5 static void D32_A8_Color(void* SK_RESTRICT dst, size_t dstRB,
6 const void* SK_RESTRICT maskPtr, size_t maskRB, 6 const void* SK_RESTRICT maskPtr, size_t maskRB,
7 SkColor color, int width, int height) { 7 SkColor color, int width, int height) {
8 SkPMColor pmc = SkPreMultiplyColor(color); 8 SkPMColor pmc = SkPreMultiplyColor(color);
9 size_t dstOffset = dstRB - (width << 2); 9 size_t dstOffset = dstRB - (width << 2);
10 size_t maskOffset = maskRB - width; 10 size_t maskOffset = maskRB - width;
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 return D32_A8_Opaque; 223 return D32_A8_Opaque;
224 } else { 224 } else {
225 return D32_A8_Color; 225 return D32_A8_Color;
226 } 226 }
227 } 227 }
228 228
229 static SkBlitMask::ColorProc D32_LCD32_Factory(SkColor color) { 229 static SkBlitMask::ColorProc D32_LCD32_Factory(SkColor color) {
230 return (0xFF == SkColorGetA(color)) ? D32_LCD32_Opaque : D32_LCD32_Blend; 230 return (0xFF == SkColorGetA(color)) ? D32_LCD32_Opaque : D32_LCD32_Blend;
231 } 231 }
232 232
233 SkBlitMask::ColorProc SkBlitMask::ColorFactory(SkBitmap::Config config, 233 SkBlitMask::ColorProc SkBlitMask::ColorFactory(SkColorType ct,
234 SkMask::Format format, 234 SkMask::Format format,
235 SkColor color) { 235 SkColor color) {
236 ColorProc proc = PlatformColorProcs(config, format, color); 236 ColorProc proc = PlatformColorProcs(ct, format, color);
237 if (proc) { 237 if (proc) {
238 return proc; 238 return proc;
239 } 239 }
240 240
241 switch (config) { 241 switch (ct) {
242 case SkBitmap::kARGB_8888_Config: 242 case kN32_SkColorType:
243 switch (format) { 243 switch (format) {
244 case SkMask::kA8_Format: 244 case SkMask::kA8_Format:
245 return D32_A8_Factory(color); 245 return D32_A8_Factory(color);
246 case SkMask::kLCD16_Format: 246 case SkMask::kLCD16_Format:
247 return D32_LCD16_Proc; 247 return D32_LCD16_Proc;
248 case SkMask::kLCD32_Format: 248 case SkMask::kLCD32_Format:
249 return D32_LCD32_Factory(color); 249 return D32_LCD32_Factory(color);
250 default: 250 default:
251 break; 251 break;
252 } 252 }
253 break; 253 break;
254 default: 254 default:
255 break; 255 break;
256 } 256 }
257 return NULL; 257 return NULL;
258 } 258 }
259 259
260 bool SkBlitMask::BlitColor(const SkBitmap& device, const SkMask& mask, 260 bool SkBlitMask::BlitColor(const SkBitmap& device, const SkMask& mask,
261 const SkIRect& clip, SkColor color) { 261 const SkIRect& clip, SkColor color) {
262 ColorProc proc = ColorFactory(device.config(), mask.fFormat, color); 262 ColorProc proc = ColorFactory(device.colorType(), mask.fFormat, color);
263 if (proc) { 263 if (proc) {
264 int x = clip.fLeft; 264 int x = clip.fLeft;
265 int y = clip.fTop; 265 int y = clip.fTop;
266 proc(device.getAddr32(x, y), device.rowBytes(), mask.getAddr(x, y), 266 proc(device.getAddr32(x, y), device.rowBytes(), mask.getAddr(x, y),
267 mask.fRowBytes, color, clip.width(), clip.height()); 267 mask.fRowBytes, color, clip.width(), clip.height());
268 return true; 268 return true;
269 } 269 }
270 return false; 270 return false;
271 } 271 }
272 272
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 541
542 // LCD blitting is only supported if the dst is known/required 542 // LCD blitting is only supported if the dst is known/required
543 // to be opaque 543 // to be opaque
544 dst[i] = SkPackARGB32(0xFF, 544 dst[i] = SkPackARGB32(0xFF,
545 SkAlphaBlend(srcR, dstR, maskR), 545 SkAlphaBlend(srcR, dstR, maskR),
546 SkAlphaBlend(srcG, dstG, maskG), 546 SkAlphaBlend(srcG, dstG, maskG),
547 SkAlphaBlend(srcB, dstB, maskB)); 547 SkAlphaBlend(srcB, dstB, maskB));
548 } 548 }
549 } 549 }
550 550
551 SkBlitMask::RowProc SkBlitMask::RowFactory(SkBitmap::Config config, 551 SkBlitMask::RowProc SkBlitMask::RowFactory(SkColorType ct,
552 SkMask::Format format, 552 SkMask::Format format,
553 RowFlags flags) { 553 RowFlags flags) {
554 // make this opt-in until chrome can rebaseline 554 // make this opt-in until chrome can rebaseline
555 RowProc proc = PlatformRowProcs(config, format, flags); 555 RowProc proc = PlatformRowProcs(ct, format, flags);
556 if (proc) { 556 if (proc) {
557 return proc; 557 return proc;
558 } 558 }
559 559
560 static const RowProc gProcs[] = { 560 static const RowProc gProcs[] = {
561 // need X coordinate to handle BW 561 // need X coordinate to handle BW
562 false ? (RowProc)BW_RowProc_Blend : NULL, // suppress unused warning 562 false ? (RowProc)BW_RowProc_Blend : NULL, // suppress unused warning
563 false ? (RowProc)BW_RowProc_Opaque : NULL, // suppress unused warning 563 false ? (RowProc)BW_RowProc_Opaque : NULL, // suppress unused warning
564 (RowProc)A8_RowProc_Blend, (RowProc)A8_RowProc_Opaque, 564 (RowProc)A8_RowProc_Blend, (RowProc)A8_RowProc_Opaque,
565 (RowProc)LCD16_RowProc_Blend, (RowProc)LCD16_RowProc_Opaque, 565 (RowProc)LCD16_RowProc_Blend, (RowProc)LCD16_RowProc_Opaque,
566 (RowProc)LCD32_RowProc_Blend, (RowProc)LCD32_RowProc_Opaque, 566 (RowProc)LCD32_RowProc_Blend, (RowProc)LCD32_RowProc_Opaque,
567 }; 567 };
568 568
569 int index; 569 int index;
570 switch (config) { 570 switch (ct) {
571 case SkBitmap::kARGB_8888_Config: 571 case kN32_SkColorType:
572 switch (format) { 572 switch (format) {
573 case SkMask::kBW_Format: index = 0; break; 573 case SkMask::kBW_Format: index = 0; break;
574 case SkMask::kA8_Format: index = 2; break; 574 case SkMask::kA8_Format: index = 2; break;
575 case SkMask::kLCD16_Format: index = 4; break; 575 case SkMask::kLCD16_Format: index = 4; break;
576 case SkMask::kLCD32_Format: index = 6; break; 576 case SkMask::kLCD32_Format: index = 6; break;
577 default: 577 default:
578 return NULL; 578 return NULL;
579 } 579 }
580 if (flags & kSrcIsOpaque_RowFlag) { 580 if (flags & kSrcIsOpaque_RowFlag) {
581 index |= 1; 581 index |= 1;
582 } 582 }
583 SkASSERT((size_t)index < SK_ARRAY_COUNT(gProcs)); 583 SkASSERT((size_t)index < SK_ARRAY_COUNT(gProcs));
584 return gProcs[index]; 584 return gProcs[index];
585 default: 585 default:
586 break; 586 break;
587 } 587 }
588 return NULL; 588 return NULL;
589 } 589 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698