| 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 |