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" |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 reader->readPath(&path); | 402 reader->readPath(&path); |
403 if (state->shouldDraw()) { | 403 if (state->shouldDraw()) { |
404 canvas->drawPath(path, state->paint()); | 404 canvas->drawPath(path, state->paint()); |
405 } | 405 } |
406 } | 406 } |
407 | 407 |
408 static void drawVertices_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, | 408 static void drawVertices_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, |
409 SkGPipeState* state) { | 409 SkGPipeState* state) { |
410 unsigned flags = DrawOp_unpackFlags(op32); | 410 unsigned flags = DrawOp_unpackFlags(op32); |
411 | 411 |
412 SkCanvas::VertexMode mode = (SkCanvas::VertexMode)reader->readU32(); | 412 SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader->readU32(); |
413 int vertexCount = reader->readU32(); | 413 int vertexCount = reader->readU32(); |
414 const SkPoint* verts = skip<SkPoint>(reader, vertexCount); | 414 const SkPoint* verts = skip<SkPoint>(reader, vertexCount); |
415 | 415 |
416 const SkPoint* texs = NULL; | 416 const SkPoint* texs = NULL; |
417 if (flags & kDrawVertices_HasTexs_DrawOpFlag) { | 417 if (flags & kDrawVertices_HasTexs_DrawOpFlag) { |
418 texs = skip<SkPoint>(reader, vertexCount); | 418 texs = skip<SkPoint>(reader, vertexCount); |
419 } | 419 } |
420 | 420 |
421 const SkColor* colors = NULL; | 421 const SkColor* colors = NULL; |
422 if (flags & kDrawVertices_HasColors_DrawOpFlag) { | 422 if (flags & kDrawVertices_HasColors_DrawOpFlag) { |
423 colors = skip<SkColor>(reader, vertexCount); | 423 colors = skip<SkColor>(reader, vertexCount); |
424 } | 424 } |
425 | 425 |
426 // TODO: flatten/unflatten xfermodes | 426 SkAutoTUnref<SkXfermode> xfer; |
427 SkXfermode* xfer = NULL; | 427 if (flags & kDrawVertices_HasXfermode_DrawOpFlag) { |
| 428 SkXfermode::Mode mode = (SkXfermode::Mode)reader->readU32(); |
| 429 xfer.reset(SkXfermode::Create(mode)); |
| 430 } |
428 | 431 |
429 int indexCount = 0; | 432 int indexCount = 0; |
430 const uint16_t* indices = NULL; | 433 const uint16_t* indices = NULL; |
431 if (flags & kDrawVertices_HasIndices_DrawOpFlag) { | 434 if (flags & kDrawVertices_HasIndices_DrawOpFlag) { |
432 indexCount = reader->readU32(); | 435 indexCount = reader->readU32(); |
433 indices = skipAlign<uint16_t>(reader, indexCount); | 436 indices = skipAlign<uint16_t>(reader, indexCount); |
434 } | 437 } |
435 if (state->shouldDraw()) { | 438 if (state->shouldDraw()) { |
436 canvas->drawVertices(mode, vertexCount, verts, texs, colors, xfer, | 439 canvas->drawVertices(vmode, vertexCount, verts, texs, colors, xfer, |
437 indices, indexCount, state->paint()); | 440 indices, indexCount, state->paint()); |
438 } | 441 } |
439 } | 442 } |
440 | 443 |
441 /////////////////////////////////////////////////////////////////////////////// | 444 /////////////////////////////////////////////////////////////////////////////// |
442 | 445 |
443 static void drawText_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, | 446 static void drawText_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, |
444 SkGPipeState* state) { | 447 SkGPipeState* state) { |
445 size_t len = reader->readU32(); | 448 size_t len = reader->readU32(); |
446 const void* text = reader->skip(SkAlign4(len)); | 449 const void* text = reader->skip(SkAlign4(len)); |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 status = kReadAtom_Status; | 887 status = kReadAtom_Status; |
885 break; | 888 break; |
886 } | 889 } |
887 } | 890 } |
888 | 891 |
889 if (bytesRead) { | 892 if (bytesRead) { |
890 *bytesRead = reader.offset(); | 893 *bytesRead = reader.offset(); |
891 } | 894 } |
892 return status; | 895 return status; |
893 } | 896 } |
OLD | NEW |