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 #include "SkPicturePlayback.h" | 8 #include "SkPicturePlayback.h" |
9 #include "SkPictureRecord.h" | 9 #include "SkPictureRecord.h" |
10 #include "SkTypeface.h" | 10 #include "SkTypeface.h" |
(...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 } break; | 1018 } break; |
1019 case DRAW_TEXT_ON_PATH: { | 1019 case DRAW_TEXT_ON_PATH: { |
1020 const SkPaint& paint = *getPaint(reader); | 1020 const SkPaint& paint = *getPaint(reader); |
1021 getText(reader, &text); | 1021 getText(reader, &text); |
1022 const SkPath& path = getPath(reader); | 1022 const SkPath& path = getPath(reader); |
1023 const SkMatrix* matrix = getMatrix(reader); | 1023 const SkMatrix* matrix = getMatrix(reader); |
1024 canvas.drawTextOnPath(text.text(), text.length(), path, | 1024 canvas.drawTextOnPath(text.text(), text.length(), path, |
1025 matrix, paint); | 1025 matrix, paint); |
1026 } break; | 1026 } break; |
1027 case DRAW_VERTICES: { | 1027 case DRAW_VERTICES: { |
| 1028 SkAutoTUnref<SkXfermode> xfer; |
1028 const SkPaint& paint = *getPaint(reader); | 1029 const SkPaint& paint = *getPaint(reader); |
1029 DrawVertexFlags flags = (DrawVertexFlags)reader.readInt(); | 1030 DrawVertexFlags flags = (DrawVertexFlags)reader.readInt(); |
1030 SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader.readIn
t(); | 1031 SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader.readIn
t(); |
1031 int vCount = reader.readInt(); | 1032 int vCount = reader.readInt(); |
1032 const SkPoint* verts = (const SkPoint*)reader.skip( | 1033 const SkPoint* verts = (const SkPoint*)reader.skip( |
1033 vCount * sizeof(SkPoint)); | 1034 vCount * sizeof(SkPoint)); |
1034 const SkPoint* texs = NULL; | 1035 const SkPoint* texs = NULL; |
1035 const SkColor* colors = NULL; | 1036 const SkColor* colors = NULL; |
1036 const uint16_t* indices = NULL; | 1037 const uint16_t* indices = NULL; |
1037 int iCount = 0; | 1038 int iCount = 0; |
1038 if (flags & DRAW_VERTICES_HAS_TEXS) { | 1039 if (flags & DRAW_VERTICES_HAS_TEXS) { |
1039 texs = (const SkPoint*)reader.skip( | 1040 texs = (const SkPoint*)reader.skip( |
1040 vCount * sizeof(SkPoint)); | 1041 vCount * sizeof(SkPoint)); |
1041 } | 1042 } |
1042 if (flags & DRAW_VERTICES_HAS_COLORS) { | 1043 if (flags & DRAW_VERTICES_HAS_COLORS) { |
1043 colors = (const SkColor*)reader.skip( | 1044 colors = (const SkColor*)reader.skip( |
1044 vCount * sizeof(SkColor)); | 1045 vCount * sizeof(SkColor)); |
1045 } | 1046 } |
1046 if (flags & DRAW_VERTICES_HAS_INDICES) { | 1047 if (flags & DRAW_VERTICES_HAS_INDICES) { |
1047 iCount = reader.readInt(); | 1048 iCount = reader.readInt(); |
1048 indices = (const uint16_t*)reader.skip( | 1049 indices = (const uint16_t*)reader.skip( |
1049 iCount * sizeof(uint16_t)); | 1050 iCount * sizeof(uint16_t)); |
1050 } | 1051 } |
1051 canvas.drawVertices(vmode, vCount, verts, texs, colors, NULL, | 1052 if (flags & DRAW_VERTICES_HAS_XFER) { |
| 1053 int mode = reader.readInt(); |
| 1054 if (mode < 0 || mode > SkXfermode::kLastMode) { |
| 1055 mode = SkXfermode::kModulate_Mode; |
| 1056 } |
| 1057 xfer.reset(SkXfermode::Create((SkXfermode::Mode)mode)); |
| 1058 } |
| 1059 canvas.drawVertices(vmode, vCount, verts, texs, colors, xfer, |
1052 indices, iCount, paint); | 1060 indices, iCount, paint); |
1053 } break; | 1061 } break; |
1054 case RESTORE: | 1062 case RESTORE: |
1055 canvas.restore(); | 1063 canvas.restore(); |
1056 break; | 1064 break; |
1057 case ROTATE: | 1065 case ROTATE: |
1058 canvas.rotate(reader.readScalar()); | 1066 canvas.rotate(reader.readScalar()); |
1059 break; | 1067 break; |
1060 case SAVE: | 1068 case SAVE: |
1061 canvas.save((SkCanvas::SaveFlags) reader.readInt()); | 1069 canvas.save((SkCanvas::SaveFlags) reader.readInt()); |
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1659 for (index = 0; index < fRegionCount; index++) | 1667 for (index = 0; index < fRegionCount; index++) |
1660 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), | 1668 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), |
1661 "region%p, ", &fRegions[index]); | 1669 "region%p, ", &fRegions[index]); |
1662 if (fRegionCount > 0) | 1670 if (fRegionCount > 0) |
1663 SkDebugf("%s0};\n", pBuffer); | 1671 SkDebugf("%s0};\n", pBuffer); |
1664 | 1672 |
1665 const_cast<SkPicturePlayback*>(this)->dumpStream(); | 1673 const_cast<SkPicturePlayback*>(this)->dumpStream(); |
1666 } | 1674 } |
1667 | 1675 |
1668 #endif | 1676 #endif |
OLD | NEW |