| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkBitmapHeap.h" | 10 #include "SkBitmapHeap.h" |
| 11 #include "SkCanvas.h" | 11 #include "SkCanvas.h" |
| 12 #include "SkLight.h" |
| 12 #include "SkPaint.h" | 13 #include "SkPaint.h" |
| 13 #include "SkGPipe.h" | 14 #include "SkGPipe.h" |
| 14 #include "SkGPipePriv.h" | 15 #include "SkGPipePriv.h" |
| 15 #include "SkReader32.h" | 16 #include "SkReader32.h" |
| 16 #include "SkStream.h" | 17 #include "SkStream.h" |
| 17 | 18 |
| 18 #include "SkAnnotation.h" | 19 #include "SkAnnotation.h" |
| 19 #include "SkColorFilter.h" | 20 #include "SkColorFilter.h" |
| 20 #include "SkDrawLooper.h" | 21 #include "SkDrawLooper.h" |
| 21 #include "SkImageFilter.h" | 22 #include "SkImageFilter.h" |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 const SkRect* cull = NULL; | 501 const SkRect* cull = NULL; |
| 501 if (flags & kDrawAtlas_HasCull_DrawOpFlag) { | 502 if (flags & kDrawAtlas_HasCull_DrawOpFlag) { |
| 502 cull = skip<SkRect>(reader, 1); | 503 cull = skip<SkRect>(reader, 1); |
| 503 } | 504 } |
| 504 | 505 |
| 505 if (state->shouldDraw()) { | 506 if (state->shouldDraw()) { |
| 506 canvas->drawAtlas(atlas, xform, tex, colors, count, mode, cull, paint); | 507 canvas->drawAtlas(atlas, xform, tex, colors, count, mode, cull, paint); |
| 507 } | 508 } |
| 508 } | 509 } |
| 509 | 510 |
| 511 static void drawLitAtlas_rp(SkCanvas* canvas, SkReader32* reader, |
| 512 uint32_t op32, SkGPipeState* state) { |
| 513 unsigned flags = DrawOp_unpackFlags(op32); |
| 514 |
| 515 const SkPaint* paint = NULL; |
| 516 if (flags & kDrawAtlas_HasPaint_DrawOpFlag) { |
| 517 paint = &state->paint(); |
| 518 } |
| 519 const int slot = reader->readU32(); |
| 520 const SkImage* atlas = state->getImage(slot); |
| 521 const int count = reader->readU32(); |
| 522 SkXfermode::Mode mode = (SkXfermode::Mode)reader->readU32(); |
| 523 const SkRSXform* xform = skip<SkRSXform>(reader, count); |
| 524 const SkRect* diffTex = skip<SkRect>(reader, count); |
| 525 const SkRect* normTex = skip<SkRect>(reader, count); |
| 526 const SkColor* colors = NULL; |
| 527 if (flags & kDrawAtlas_HasColors_DrawOpFlag) { |
| 528 colors = skip<SkColor>(reader, count); |
| 529 } |
| 530 const SkRect* cull = NULL; |
| 531 if (flags & kDrawAtlas_HasCull_DrawOpFlag) { |
| 532 cull = skip<SkRect>(reader, 1); |
| 533 } |
| 534 |
| 535 const int numLights = reader->readU32(); |
| 536 const SkLight* lights = skip<SkLight>(reader, numLights); |
| 537 |
| 538 if (state->shouldDraw()) { |
| 539 canvas->drawLitAtlas(atlas, xform, diffTex, normTex, colors, count, mode
, cull, |
| 540 paint, lights, numLights); |
| 541 } |
| 542 } |
| 543 |
| 510 /////////////////////////////////////////////////////////////////////////////// | 544 /////////////////////////////////////////////////////////////////////////////// |
| 511 | 545 |
| 512 static void drawText_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, | 546 static void drawText_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, |
| 513 SkGPipeState* state) { | 547 SkGPipeState* state) { |
| 514 size_t len = reader->readU32(); | 548 size_t len = reader->readU32(); |
| 515 const void* text = reader->skip(SkAlign4(len)); | 549 const void* text = reader->skip(SkAlign4(len)); |
| 516 const SkScalar* xy = skip<SkScalar>(reader, 2); | 550 const SkScalar* xy = skip<SkScalar>(reader, 2); |
| 517 if (state->shouldDraw()) { | 551 if (state->shouldDraw()) { |
| 518 canvas->drawText(text, len, xy[0], xy[1], state->paint()); | 552 canvas->drawText(text, len, xy[0], xy[1], state->paint()); |
| 519 } | 553 } |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 typedef void (*ReadProc)(SkCanvas*, SkReader32*, uint32_t op32, SkGPipeState*); | 901 typedef void (*ReadProc)(SkCanvas*, SkReader32*, uint32_t op32, SkGPipeState*); |
| 868 | 902 |
| 869 static const ReadProc gReadTable[] = { | 903 static const ReadProc gReadTable[] = { |
| 870 skip_rp, | 904 skip_rp, |
| 871 clipPath_rp, | 905 clipPath_rp, |
| 872 clipRegion_rp, | 906 clipRegion_rp, |
| 873 clipRect_rp, | 907 clipRect_rp, |
| 874 clipRRect_rp, | 908 clipRRect_rp, |
| 875 concat_rp, | 909 concat_rp, |
| 876 drawAtlas_rp, | 910 drawAtlas_rp, |
| 911 drawLitAtlas_rp, |
| 877 drawBitmap_rp, | 912 drawBitmap_rp, |
| 878 drawBitmapNine_rp, | 913 drawBitmapNine_rp, |
| 879 drawBitmapRect_rp, | 914 drawBitmapRect_rp, |
| 880 drawDRRect_rp, | 915 drawDRRect_rp, |
| 881 drawImage_rp, | 916 drawImage_rp, |
| 882 drawImageRect_rp, | 917 drawImageRect_rp, |
| 883 drawImageNine_rp, | 918 drawImageNine_rp, |
| 884 drawOval_rp, | 919 drawOval_rp, |
| 885 drawPaint_rp, | 920 drawPaint_rp, |
| 886 drawPatch_rp, | 921 drawPatch_rp, |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 status = kReadAtom_Status; | 1043 status = kReadAtom_Status; |
| 1009 break; | 1044 break; |
| 1010 } | 1045 } |
| 1011 } | 1046 } |
| 1012 | 1047 |
| 1013 if (bytesRead) { | 1048 if (bytesRead) { |
| 1014 *bytesRead = reader.offset(); | 1049 *bytesRead = reader.offset(); |
| 1015 } | 1050 } |
| 1016 return status; | 1051 return status; |
| 1017 } | 1052 } |
| OLD | NEW |