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 <new> | 8 #include <new> |
9 #include "SkBBoxHierarchy.h" | 9 #include "SkBBoxHierarchy.h" |
10 #include "SkOffsetTable.h" | 10 #include "SkOffsetTable.h" |
(...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 case POP_CULL: | 958 case POP_CULL: |
959 canvas.popCull(); | 959 canvas.popCull(); |
960 break; | 960 break; |
961 case CONCAT: { | 961 case CONCAT: { |
962 SkMatrix matrix; | 962 SkMatrix matrix; |
963 this->getMatrix(reader, &matrix); | 963 this->getMatrix(reader, &matrix); |
964 canvas.concat(matrix); | 964 canvas.concat(matrix); |
965 break; | 965 break; |
966 } | 966 } |
967 case DRAW_BITMAP: { | 967 case DRAW_BITMAP: { |
968 const SkPaint* paint = getPaint(reader); | 968 const SkPaint* paint = this->getPaint(reader); |
969 const SkBitmap& bitmap = getBitmap(reader); | 969 const SkBitmap& bitmap = this->getBitmap(reader); |
970 const SkPoint& loc = reader.skipT<SkPoint>(); | 970 const SkPoint& loc = reader.skipT<SkPoint>(); |
971 canvas.drawBitmap(bitmap, loc.fX, loc.fY, paint); | 971 canvas.drawBitmap(bitmap, loc.fX, loc.fY, paint); |
972 } break; | 972 } break; |
973 case DRAW_BITMAP_RECT_TO_RECT: { | 973 case DRAW_BITMAP_RECT_TO_RECT: { |
974 const SkPaint* paint = getPaint(reader); | 974 const SkPaint* paint = this->getPaint(reader); |
975 const SkBitmap& bitmap = getBitmap(reader); | 975 const SkBitmap& bitmap = this->getBitmap(reader); |
976 const SkRect* src = this->getRectPtr(reader); // may be null | 976 const SkRect* src = this->getRectPtr(reader); // may be null |
977 const SkRect& dst = reader.skipT<SkRect>(); // required | 977 const SkRect& dst = reader.skipT<SkRect>(); // required |
978 SkCanvas::DrawBitmapRectFlags flags; | 978 SkCanvas::DrawBitmapRectFlags flags; |
979 flags = (SkCanvas::DrawBitmapRectFlags) reader.readInt(); | 979 flags = (SkCanvas::DrawBitmapRectFlags) reader.readInt(); |
980 canvas.drawBitmapRectToRect(bitmap, src, dst, paint, flags); | 980 canvas.drawBitmapRectToRect(bitmap, src, dst, paint, flags); |
981 } break; | 981 } break; |
982 case DRAW_BITMAP_MATRIX: { | 982 case DRAW_BITMAP_MATRIX: { |
983 const SkPaint* paint = getPaint(reader); | 983 const SkPaint* paint = this->getPaint(reader); |
984 const SkBitmap& bitmap = getBitmap(reader); | 984 const SkBitmap& bitmap = this->getBitmap(reader); |
985 SkMatrix matrix; | 985 SkMatrix matrix; |
986 this->getMatrix(reader, &matrix); | 986 this->getMatrix(reader, &matrix); |
987 canvas.drawBitmapMatrix(bitmap, matrix, paint); | 987 canvas.drawBitmapMatrix(bitmap, matrix, paint); |
988 } break; | 988 } break; |
989 case DRAW_BITMAP_NINE: { | 989 case DRAW_BITMAP_NINE: { |
990 const SkPaint* paint = getPaint(reader); | 990 const SkPaint* paint = this->getPaint(reader); |
991 const SkBitmap& bitmap = getBitmap(reader); | 991 const SkBitmap& bitmap = this->getBitmap(reader); |
992 const SkIRect& src = reader.skipT<SkIRect>(); | 992 const SkIRect& src = reader.skipT<SkIRect>(); |
993 const SkRect& dst = reader.skipT<SkRect>(); | 993 const SkRect& dst = reader.skipT<SkRect>(); |
994 canvas.drawBitmapNine(bitmap, src, dst, paint); | 994 canvas.drawBitmapNine(bitmap, src, dst, paint); |
995 } break; | 995 } break; |
996 case DRAW_CLEAR: | 996 case DRAW_CLEAR: |
997 canvas.clear(reader.readInt()); | 997 canvas.clear(reader.readInt()); |
998 break; | 998 break; |
999 case DRAW_DATA: { | 999 case DRAW_DATA: { |
1000 size_t length = reader.readInt(); | 1000 size_t length = reader.readInt(); |
1001 canvas.drawData(reader.skip(length), length); | 1001 canvas.drawData(reader.skip(length), length); |
1002 // skip handles padding the read out to a multiple of 4 | 1002 // skip handles padding the read out to a multiple of 4 |
1003 } break; | 1003 } break; |
1004 case DRAW_DRRECT: { | 1004 case DRAW_DRRECT: { |
1005 const SkPaint& paint = *getPaint(reader); | 1005 const SkPaint& paint = *this->getPaint(reader); |
1006 SkRRect outer, inner; | 1006 SkRRect outer, inner; |
1007 reader.readRRect(&outer); | 1007 reader.readRRect(&outer); |
1008 reader.readRRect(&inner); | 1008 reader.readRRect(&inner); |
1009 canvas.drawDRRect(outer, inner, paint); | 1009 canvas.drawDRRect(outer, inner, paint); |
1010 } break; | 1010 } break; |
1011 case BEGIN_COMMENT_GROUP: { | 1011 case BEGIN_COMMENT_GROUP: { |
1012 const char* desc = reader.readString(); | 1012 const char* desc = reader.readString(); |
1013 canvas.beginCommentGroup(desc); | 1013 canvas.beginCommentGroup(desc); |
1014 } break; | 1014 } break; |
1015 case COMMENT: { | 1015 case COMMENT: { |
1016 const char* kywd = reader.readString(); | 1016 const char* kywd = reader.readString(); |
1017 const char* value = reader.readString(); | 1017 const char* value = reader.readString(); |
1018 canvas.addComment(kywd, value); | 1018 canvas.addComment(kywd, value); |
1019 } break; | 1019 } break; |
1020 case END_COMMENT_GROUP: { | 1020 case END_COMMENT_GROUP: { |
1021 canvas.endCommentGroup(); | 1021 canvas.endCommentGroup(); |
1022 } break; | 1022 } break; |
1023 case DRAW_OVAL: { | 1023 case DRAW_OVAL: { |
1024 const SkPaint& paint = *getPaint(reader); | 1024 const SkPaint& paint = *this->getPaint(reader); |
1025 canvas.drawOval(reader.skipT<SkRect>(), paint); | 1025 canvas.drawOval(reader.skipT<SkRect>(), paint); |
1026 } break; | 1026 } break; |
1027 case DRAW_PAINT: | 1027 case DRAW_PAINT: |
1028 canvas.drawPaint(*getPaint(reader)); | 1028 canvas.drawPaint(*this->getPaint(reader)); |
1029 break; | 1029 break; |
1030 case DRAW_PATH: { | 1030 case DRAW_PATH: { |
1031 const SkPaint& paint = *getPaint(reader); | 1031 const SkPaint& paint = *this->getPaint(reader); |
1032 canvas.drawPath(getPath(reader), paint); | 1032 canvas.drawPath(getPath(reader), paint); |
1033 } break; | 1033 } break; |
1034 case DRAW_PICTURE: | 1034 case DRAW_PICTURE: |
1035 canvas.drawPicture(getPicture(reader)); | 1035 canvas.drawPicture(this->getPicture(reader)); |
1036 break; | 1036 break; |
1037 case DRAW_POINTS: { | 1037 case DRAW_POINTS: { |
1038 const SkPaint& paint = *getPaint(reader); | 1038 const SkPaint& paint = *this->getPaint(reader); |
1039 SkCanvas::PointMode mode = (SkCanvas::PointMode)reader.readInt()
; | 1039 SkCanvas::PointMode mode = (SkCanvas::PointMode)reader.readInt()
; |
1040 size_t count = reader.readInt(); | 1040 size_t count = reader.readInt(); |
1041 const SkPoint* pts = (const SkPoint*)reader.skip(sizeof(SkPoint)
* count); | 1041 const SkPoint* pts = (const SkPoint*)reader.skip(sizeof(SkPoint)
* count); |
1042 canvas.drawPoints(mode, count, pts, paint); | 1042 canvas.drawPoints(mode, count, pts, paint); |
1043 } break; | 1043 } break; |
1044 case DRAW_POS_TEXT: { | 1044 case DRAW_POS_TEXT: { |
1045 const SkPaint& paint = *getPaint(reader); | 1045 const SkPaint& paint = *this->getPaint(reader); |
1046 getText(reader, &text); | 1046 getText(reader, &text); |
1047 size_t points = reader.readInt(); | 1047 size_t points = reader.readInt(); |
1048 const SkPoint* pos = (const SkPoint*)reader.skip(points * sizeof
(SkPoint)); | 1048 const SkPoint* pos = (const SkPoint*)reader.skip(points * sizeof
(SkPoint)); |
1049 canvas.drawPosText(text.text(), text.length(), pos, paint); | 1049 canvas.drawPosText(text.text(), text.length(), pos, paint); |
1050 } break; | 1050 } break; |
1051 case DRAW_POS_TEXT_TOP_BOTTOM: { | 1051 case DRAW_POS_TEXT_TOP_BOTTOM: { |
1052 const SkPaint& paint = *getPaint(reader); | 1052 const SkPaint& paint = *this->getPaint(reader); |
1053 getText(reader, &text); | 1053 getText(reader, &text); |
1054 size_t points = reader.readInt(); | 1054 size_t points = reader.readInt(); |
1055 const SkPoint* pos = (const SkPoint*)reader.skip(points * sizeof
(SkPoint)); | 1055 const SkPoint* pos = (const SkPoint*)reader.skip(points * sizeof
(SkPoint)); |
1056 const SkScalar top = reader.readScalar(); | 1056 const SkScalar top = reader.readScalar(); |
1057 const SkScalar bottom = reader.readScalar(); | 1057 const SkScalar bottom = reader.readScalar(); |
1058 if (!canvas.quickRejectY(top, bottom)) { | 1058 if (!canvas.quickRejectY(top, bottom)) { |
1059 canvas.drawPosText(text.text(), text.length(), pos, paint); | 1059 canvas.drawPosText(text.text(), text.length(), pos, paint); |
1060 } | 1060 } |
1061 } break; | 1061 } break; |
1062 case DRAW_POS_TEXT_H: { | 1062 case DRAW_POS_TEXT_H: { |
1063 const SkPaint& paint = *getPaint(reader); | 1063 const SkPaint& paint = *this->getPaint(reader); |
1064 getText(reader, &text); | 1064 getText(reader, &text); |
1065 size_t xCount = reader.readInt(); | 1065 size_t xCount = reader.readInt(); |
1066 const SkScalar constY = reader.readScalar(); | 1066 const SkScalar constY = reader.readScalar(); |
1067 const SkScalar* xpos = (const SkScalar*)reader.skip(xCount * siz
eof(SkScalar)); | 1067 const SkScalar* xpos = (const SkScalar*)reader.skip(xCount * siz
eof(SkScalar)); |
1068 canvas.drawPosTextH(text.text(), text.length(), xpos, constY, | 1068 canvas.drawPosTextH(text.text(), text.length(), xpos, constY, |
1069 paint); | 1069 paint); |
1070 } break; | 1070 } break; |
1071 case DRAW_POS_TEXT_H_TOP_BOTTOM: { | 1071 case DRAW_POS_TEXT_H_TOP_BOTTOM: { |
1072 const SkPaint& paint = *getPaint(reader); | 1072 const SkPaint& paint = *this->getPaint(reader); |
1073 getText(reader, &text); | 1073 getText(reader, &text); |
1074 size_t xCount = reader.readInt(); | 1074 size_t xCount = reader.readInt(); |
1075 const SkScalar* xpos = (const SkScalar*)reader.skip((3 + xCount)
* sizeof(SkScalar)); | 1075 const SkScalar* xpos = (const SkScalar*)reader.skip((3 + xCount)
* sizeof(SkScalar)); |
1076 const SkScalar top = *xpos++; | 1076 const SkScalar top = *xpos++; |
1077 const SkScalar bottom = *xpos++; | 1077 const SkScalar bottom = *xpos++; |
1078 const SkScalar constY = *xpos++; | 1078 const SkScalar constY = *xpos++; |
1079 if (!canvas.quickRejectY(top, bottom)) { | 1079 if (!canvas.quickRejectY(top, bottom)) { |
1080 canvas.drawPosTextH(text.text(), text.length(), xpos, | 1080 canvas.drawPosTextH(text.text(), text.length(), xpos, |
1081 constY, paint); | 1081 constY, paint); |
1082 } | 1082 } |
1083 } break; | 1083 } break; |
1084 case DRAW_RECT: { | 1084 case DRAW_RECT: { |
1085 const SkPaint& paint = *getPaint(reader); | 1085 const SkPaint& paint = *this->getPaint(reader); |
1086 canvas.drawRect(reader.skipT<SkRect>(), paint); | 1086 canvas.drawRect(reader.skipT<SkRect>(), paint); |
1087 } break; | 1087 } break; |
1088 case DRAW_RRECT: { | 1088 case DRAW_RRECT: { |
1089 const SkPaint& paint = *getPaint(reader); | 1089 const SkPaint& paint = *this->getPaint(reader); |
1090 SkRRect rrect; | 1090 SkRRect rrect; |
1091 reader.readRRect(&rrect); | 1091 reader.readRRect(&rrect); |
1092 canvas.drawRRect(rrect, paint); | 1092 canvas.drawRRect(rrect, paint); |
1093 } break; | 1093 } break; |
1094 case DRAW_SPRITE: { | 1094 case DRAW_SPRITE: { |
1095 const SkPaint* paint = getPaint(reader); | 1095 const SkPaint* paint = this->getPaint(reader); |
1096 const SkBitmap& bitmap = getBitmap(reader); | 1096 const SkBitmap& bitmap = this->getBitmap(reader); |
1097 int left = reader.readInt(); | 1097 int left = reader.readInt(); |
1098 int top = reader.readInt(); | 1098 int top = reader.readInt(); |
1099 canvas.drawSprite(bitmap, left, top, paint); | 1099 canvas.drawSprite(bitmap, left, top, paint); |
1100 } break; | 1100 } break; |
1101 case DRAW_TEXT: { | 1101 case DRAW_TEXT: { |
1102 const SkPaint& paint = *getPaint(reader); | 1102 const SkPaint& paint = *this->getPaint(reader); |
1103 getText(reader, &text); | 1103 this->getText(reader, &text); |
1104 SkScalar x = reader.readScalar(); | 1104 SkScalar x = reader.readScalar(); |
1105 SkScalar y = reader.readScalar(); | 1105 SkScalar y = reader.readScalar(); |
1106 canvas.drawText(text.text(), text.length(), x, y, paint); | 1106 canvas.drawText(text.text(), text.length(), x, y, paint); |
1107 } break; | 1107 } break; |
1108 case DRAW_TEXT_TOP_BOTTOM: { | 1108 case DRAW_TEXT_TOP_BOTTOM: { |
1109 const SkPaint& paint = *getPaint(reader); | 1109 const SkPaint& paint = *this->getPaint(reader); |
1110 getText(reader, &text); | 1110 this->getText(reader, &text); |
1111 const SkScalar* ptr = (const SkScalar*)reader.skip(4 * sizeof(Sk
Scalar)); | 1111 const SkScalar* ptr = (const SkScalar*)reader.skip(4 * sizeof(Sk
Scalar)); |
1112 // ptr[0] == x | 1112 // ptr[0] == x |
1113 // ptr[1] == y | 1113 // ptr[1] == y |
1114 // ptr[2] == top | 1114 // ptr[2] == top |
1115 // ptr[3] == bottom | 1115 // ptr[3] == bottom |
1116 if (!canvas.quickRejectY(ptr[2], ptr[3])) { | 1116 if (!canvas.quickRejectY(ptr[2], ptr[3])) { |
1117 canvas.drawText(text.text(), text.length(), ptr[0], ptr[1], | 1117 canvas.drawText(text.text(), text.length(), ptr[0], ptr[1], |
1118 paint); | 1118 paint); |
1119 } | 1119 } |
1120 } break; | 1120 } break; |
1121 case DRAW_TEXT_ON_PATH: { | 1121 case DRAW_TEXT_ON_PATH: { |
1122 const SkPaint& paint = *getPaint(reader); | 1122 const SkPaint& paint = *this->getPaint(reader); |
1123 getText(reader, &text); | 1123 getText(reader, &text); |
1124 const SkPath& path = getPath(reader); | 1124 const SkPath& path = this->getPath(reader); |
1125 SkMatrix matrix; | 1125 SkMatrix matrix; |
1126 this->getMatrix(reader, &matrix); | 1126 this->getMatrix(reader, &matrix); |
1127 canvas.drawTextOnPath(text.text(), text.length(), path, &matrix,
paint); | 1127 canvas.drawTextOnPath(text.text(), text.length(), path, &matrix,
paint); |
1128 } break; | 1128 } break; |
1129 case DRAW_VERTICES: { | 1129 case DRAW_VERTICES: { |
1130 SkAutoTUnref<SkXfermode> xfer; | 1130 SkAutoTUnref<SkXfermode> xfer; |
1131 const SkPaint& paint = *getPaint(reader); | 1131 const SkPaint& paint = *this->getPaint(reader); |
1132 DrawVertexFlags flags = (DrawVertexFlags)reader.readInt(); | 1132 DrawVertexFlags flags = (DrawVertexFlags)reader.readInt(); |
1133 SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader.readIn
t(); | 1133 SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader.readIn
t(); |
1134 int vCount = reader.readInt(); | 1134 int vCount = reader.readInt(); |
1135 const SkPoint* verts = (const SkPoint*)reader.skip( | 1135 const SkPoint* verts = (const SkPoint*)reader.skip( |
1136 vCount * sizeof(SkPoint)); | 1136 vCount * sizeof(SkPoint)); |
1137 const SkPoint* texs = NULL; | 1137 const SkPoint* texs = NULL; |
1138 const SkColor* colors = NULL; | 1138 const SkColor* colors = NULL; |
1139 const uint16_t* indices = NULL; | 1139 const uint16_t* indices = NULL; |
1140 int iCount = 0; | 1140 int iCount = 0; |
1141 if (flags & DRAW_VERTICES_HAS_TEXS) { | 1141 if (flags & DRAW_VERTICES_HAS_TEXS) { |
(...skipping 22 matching lines...) Expand all Loading... |
1164 case RESTORE: | 1164 case RESTORE: |
1165 canvas.restore(); | 1165 canvas.restore(); |
1166 break; | 1166 break; |
1167 case ROTATE: | 1167 case ROTATE: |
1168 canvas.rotate(reader.readScalar()); | 1168 canvas.rotate(reader.readScalar()); |
1169 break; | 1169 break; |
1170 case SAVE: | 1170 case SAVE: |
1171 canvas.save((SkCanvas::SaveFlags) reader.readInt()); | 1171 canvas.save((SkCanvas::SaveFlags) reader.readInt()); |
1172 break; | 1172 break; |
1173 case SAVE_LAYER: { | 1173 case SAVE_LAYER: { |
1174 const SkRect* boundsPtr = getRectPtr(reader); | 1174 const SkRect* boundsPtr = this->getRectPtr(reader); |
1175 const SkPaint* paint = getPaint(reader); | 1175 const SkPaint* paint = this->getPaint(reader); |
1176 canvas.saveLayer(boundsPtr, paint, (SkCanvas::SaveFlags) reader.
readInt()); | 1176 canvas.saveLayer(boundsPtr, paint, (SkCanvas::SaveFlags) reader.
readInt()); |
1177 } break; | 1177 } break; |
1178 case SCALE: { | 1178 case SCALE: { |
1179 SkScalar sx = reader.readScalar(); | 1179 SkScalar sx = reader.readScalar(); |
1180 SkScalar sy = reader.readScalar(); | 1180 SkScalar sy = reader.readScalar(); |
1181 canvas.scale(sx, sy); | 1181 canvas.scale(sx, sy); |
1182 } break; | 1182 } break; |
1183 case SET_MATRIX: { | 1183 case SET_MATRIX: { |
1184 SkMatrix matrix; | 1184 SkMatrix matrix; |
1185 this->getMatrix(reader, &matrix); | 1185 this->getMatrix(reader, &matrix); |
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1730 for (index = 0; index < fPictureCount; index++) | 1730 for (index = 0; index < fPictureCount; index++) |
1731 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), | 1731 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), |
1732 "picture%p, ", fPictureRefs[index]); | 1732 "picture%p, ", fPictureRefs[index]); |
1733 if (fPictureCount > 0) | 1733 if (fPictureCount > 0) |
1734 SkDebugf("%s0};\n", pBuffer); | 1734 SkDebugf("%s0};\n", pBuffer); |
1735 | 1735 |
1736 const_cast<SkPicturePlayback*>(this)->dumpStream(); | 1736 const_cast<SkPicturePlayback*>(this)->dumpStream(); |
1737 } | 1737 } |
1738 | 1738 |
1739 #endif | 1739 #endif |
OLD | NEW |