Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: src/core/SkPictureRecord.cpp

Issue 459043002: Cleaning up SkPicture-related classes (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkPictureRecord.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkPictureRecord.h" 8 #include "SkPictureRecord.h"
9 #include "SkTSearch.h" 9 #include "SkTSearch.h"
10 #include "SkPixelRef.h" 10 #include "SkPixelRef.h"
(...skipping 26 matching lines...) Expand all
37 static const uint32_t kSaveLayerWithBoundsSize = 4 * kUInt32Size + sizeof(SkRect ); 37 static const uint32_t kSaveLayerWithBoundsSize = 4 * kUInt32Size + sizeof(SkRect );
38 38
39 SkPictureRecord::SkPictureRecord(const SkISize& dimensions, uint32_t flags) 39 SkPictureRecord::SkPictureRecord(const SkISize& dimensions, uint32_t flags)
40 : INHERITED(dimensions.width(), dimensions.height()) 40 : INHERITED(dimensions.width(), dimensions.height())
41 , fBoundingHierarchy(NULL) 41 , fBoundingHierarchy(NULL)
42 , fStateTree(NULL) 42 , fStateTree(NULL)
43 , fFlattenableHeap(HEAP_BLOCK_SIZE) 43 , fFlattenableHeap(HEAP_BLOCK_SIZE)
44 , fPaints(&fFlattenableHeap) 44 , fPaints(&fFlattenableHeap)
45 , fRecordFlags(flags) 45 , fRecordFlags(flags)
46 , fOptsEnabled(kBeClever) { 46 , fOptsEnabled(kBeClever) {
47 #ifdef SK_DEBUG_SIZE
48 fPointBytes = fRectBytes = fTextBytes = 0;
49 fPointWrites = fRectWrites = fTextWrites = 0;
50 #endif
51 47
52 fBitmapHeap = SkNEW(SkBitmapHeap); 48 fBitmapHeap = SkNEW(SkBitmapHeap);
53 fFlattenableHeap.setBitmapStorage(fBitmapHeap); 49 fFlattenableHeap.setBitmapStorage(fBitmapHeap);
54 50
55 fFirstSavedLayerIndex = kNoSavedLayerIndex; 51 fFirstSavedLayerIndex = kNoSavedLayerIndex;
56 fInitialSaveCount = kNoInitialSave; 52 fInitialSaveCount = kNoInitialSave;
57 } 53 }
58 54
59 SkPictureRecord::~SkPictureRecord() { 55 SkPictureRecord::~SkPictureRecord() {
60 SkSafeUnref(fBitmapHeap); 56 SkSafeUnref(fBitmapHeap);
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 219
224 uint32_t op; 220 uint32_t op;
225 UNPACK_8_24(peek, op, *size); 221 UNPACK_8_24(peek, op, *size);
226 if (MASK_24 == *size) { 222 if (MASK_24 == *size) {
227 // size required its own slot right after the op code 223 // size required its own slot right after the op code
228 *size = writer->readTAt<uint32_t>(offset + kUInt32Size); 224 *size = writer->readTAt<uint32_t>(offset + kUInt32Size);
229 } 225 }
230 return (DrawType) op; 226 return (DrawType) op;
231 } 227 }
232 228
233 #ifdef TRACK_COLLAPSE_STATS
234 static int gCollapseCount, gCollapseCalls;
235 #endif
236
237 // Is the supplied paint simply a color? 229 // Is the supplied paint simply a color?
238 static bool is_simple(const SkPaint& p) { 230 static bool is_simple(const SkPaint& p) {
239 intptr_t orAccum = (intptr_t)p.getPathEffect() | 231 intptr_t orAccum = (intptr_t)p.getPathEffect() |
240 (intptr_t)p.getShader() | 232 (intptr_t)p.getShader() |
241 (intptr_t)p.getXfermode() | 233 (intptr_t)p.getXfermode() |
242 (intptr_t)p.getMaskFilter() | 234 (intptr_t)p.getMaskFilter() |
243 (intptr_t)p.getColorFilter() | 235 (intptr_t)p.getColorFilter() |
244 (intptr_t)p.getRasterizer() | 236 (intptr_t)p.getRasterizer() |
245 (intptr_t)p.getLooper() | 237 (intptr_t)p.getLooper() |
246 (intptr_t)p.getImageFilter(); 238 (intptr_t)p.getImageFilter();
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 /* 457 /*
466 * Restore has just been called (but not recorded), so look back at the 458 * Restore has just been called (but not recorded), so look back at the
467 * matching save(), and see if we can eliminate the pair of them, due to no 459 * matching save(), and see if we can eliminate the pair of them, due to no
468 * intervening matrix/clip calls. 460 * intervening matrix/clip calls.
469 * 461 *
470 * If so, update the writer and return true, in which case we won't even record 462 * If so, update the writer and return true, in which case we won't even record
471 * the restore() call. If we still need the restore(), return false. 463 * the restore() call. If we still need the restore(), return false.
472 */ 464 */
473 static bool collapse_save_clip_restore(SkWriter32* writer, int32_t offset, 465 static bool collapse_save_clip_restore(SkWriter32* writer, int32_t offset,
474 SkPaintDictionary* paintDict) { 466 SkPaintDictionary* paintDict) {
475 #ifdef TRACK_COLLAPSE_STATS
476 gCollapseCalls += 1;
477 #endif
478
479 int32_t restoreOffset = (int32_t)writer->bytesWritten(); 467 int32_t restoreOffset = (int32_t)writer->bytesWritten();
480 468
481 // back up to the save block 469 // back up to the save block
482 while (offset > 0) { 470 while (offset > 0) {
483 offset = writer->readTAt<uint32_t>(offset); 471 offset = writer->readTAt<uint32_t>(offset);
484 } 472 }
485 473
486 // now offset points to a save 474 // now offset points to a save
487 offset = -offset; 475 offset = -offset;
488 uint32_t opSize; 476 uint32_t opSize;
(...skipping 12 matching lines...) Expand all
501 offset += opSize; 489 offset += opSize;
502 while (offset < restoreOffset) { 490 while (offset < restoreOffset) {
503 op = peek_op_and_size(writer, offset, &opSize); 491 op = peek_op_and_size(writer, offset, &opSize);
504 if (is_drawing_op(op) || (SAVE_LAYER == op)) { 492 if (is_drawing_op(op) || (SAVE_LAYER == op)) {
505 // drawing verb, abort 493 // drawing verb, abort
506 return false; 494 return false;
507 } 495 }
508 offset += opSize; 496 offset += opSize;
509 } 497 }
510 498
511 #ifdef TRACK_COLLAPSE_STATS
512 gCollapseCount += 1;
513 SkDebugf("Collapse [%d out of %d] %g%spn", gCollapseCount, gCollapseCalls,
514 (double)gCollapseCount / gCollapseCalls, "%");
515 #endif
516
517 writer->rewindToOffset(saveOffset); 499 writer->rewindToOffset(saveOffset);
518 return true; 500 return true;
519 } 501 }
520 502
521 typedef bool (*PictureRecordOptProc)(SkWriter32* writer, int32_t offset, 503 typedef bool (*PictureRecordOptProc)(SkWriter32* writer, int32_t offset,
522 SkPaintDictionary* paintDict); 504 SkPaintDictionary* paintDict);
523 enum PictureRecordOptType { 505 enum PictureRecordOptType {
524 kRewind_OptType, // Optimization rewinds the command stream 506 kRewind_OptType, // Optimization rewinds the command stream
525 kCollapseSaveLayer_OptType, // Optimization eliminates a save/restore pair 507 kCollapseSaveLayer_OptType, // Optimization eliminates a save/restore pair
526 }; 508 };
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 } else { 1109 } else {
1128 op = DRAW_POS_TEXT; 1110 op = DRAW_POS_TEXT;
1129 } 1111 }
1130 size_t initialOffset = this->addDraw(op, &size); 1112 size_t initialOffset = this->addDraw(op, &size);
1131 SkASSERT(initialOffset+getPaintOffset(op, size) == fWriter.bytesWritten()); 1113 SkASSERT(initialOffset+getPaintOffset(op, size) == fWriter.bytesWritten());
1132 const SkFlatData* flatPaintData = this->addPaint(paint); 1114 const SkFlatData* flatPaintData = this->addPaint(paint);
1133 SkASSERT(flatPaintData); 1115 SkASSERT(flatPaintData);
1134 this->addText(text, byteLength); 1116 this->addText(text, byteLength);
1135 this->addInt(points); 1117 this->addInt(points);
1136 1118
1137 #ifdef SK_DEBUG_SIZE
1138 size_t start = fWriter.bytesWritten();
1139 #endif
1140 if (canUseDrawH) { 1119 if (canUseDrawH) {
1141 if (fast) { 1120 if (fast) {
1142 this->addFontMetricsTopBottom(paint, *flatPaintData, pos[0].fY, pos[ 0].fY); 1121 this->addFontMetricsTopBottom(paint, *flatPaintData, pos[0].fY, pos[ 0].fY);
1143 } 1122 }
1144 this->addScalar(pos[0].fY); 1123 this->addScalar(pos[0].fY);
1145 SkScalar* xptr = (SkScalar*)fWriter.reserve(points * sizeof(SkScalar)); 1124 SkScalar* xptr = (SkScalar*)fWriter.reserve(points * sizeof(SkScalar));
1146 for (int index = 0; index < points; index++) 1125 for (int index = 0; index < points; index++)
1147 *xptr++ = pos[index].fX; 1126 *xptr++ = pos[index].fX;
1148 } else { 1127 } else {
1149 fWriter.writeMul4(pos, points * sizeof(SkPoint)); 1128 fWriter.writeMul4(pos, points * sizeof(SkPoint));
1150 if (fastBounds) { 1129 if (fastBounds) {
1151 this->addFontMetricsTopBottom(paint, *flatPaintData, minY, maxY); 1130 this->addFontMetricsTopBottom(paint, *flatPaintData, minY, maxY);
1152 } 1131 }
1153 } 1132 }
1154 #ifdef SK_DEBUG_SIZE
1155 fPointBytes += fWriter.bytesWritten() - start;
1156 fPointWrites += points;
1157 #endif
1158 this->validate(initialOffset, size); 1133 this->validate(initialOffset, size);
1159 } 1134 }
1160 1135
1161 void SkPictureRecord::onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 1136 void SkPictureRecord::onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[],
1162 SkScalar constY, const SkPaint& paint) { 1137 SkScalar constY, const SkPaint& paint) {
1163 const SkFlatData* flatPaintData = this->getFlatPaintData(paint); 1138 const SkFlatData* flatPaintData = this->getFlatPaintData(paint);
1164 this->drawPosTextHImpl(text, byteLength, xpos, constY, paint, flatPaintData) ; 1139 this->drawPosTextHImpl(text, byteLength, xpos, constY, paint, flatPaintData) ;
1165 } 1140 }
1166 1141
1167 void SkPictureRecord::drawPosTextHImpl(const void* text, size_t byteLength, 1142 void SkPictureRecord::drawPosTextHImpl(const void* text, size_t byteLength,
(...skipping 14 matching lines...) Expand all
1182 // + y + the actual points 1157 // + y + the actual points
1183 size += 1 * kUInt32Size + points * sizeof(SkScalar); 1158 size += 1 * kUInt32Size + points * sizeof(SkScalar);
1184 size_t initialOffset = this->addDraw(fast ? DRAW_POS_TEXT_H_TOP_BOTTOM : DRA W_POS_TEXT_H, 1159 size_t initialOffset = this->addDraw(fast ? DRAW_POS_TEXT_H_TOP_BOTTOM : DRA W_POS_TEXT_H,
1185 &size); 1160 &size);
1186 SkASSERT(flatPaintData); 1161 SkASSERT(flatPaintData);
1187 this->addFlatPaint(flatPaintData); 1162 this->addFlatPaint(flatPaintData);
1188 1163
1189 this->addText(text, byteLength); 1164 this->addText(text, byteLength);
1190 this->addInt(points); 1165 this->addInt(points);
1191 1166
1192 #ifdef SK_DEBUG_SIZE
1193 size_t start = fWriter.bytesWritten();
1194 #endif
1195 if (fast) { 1167 if (fast) {
1196 this->addFontMetricsTopBottom(paint, *flatPaintData, constY, constY); 1168 this->addFontMetricsTopBottom(paint, *flatPaintData, constY, constY);
1197 } 1169 }
1198 this->addScalar(constY); 1170 this->addScalar(constY);
1199 fWriter.writeMul4(xpos, points * sizeof(SkScalar)); 1171 fWriter.writeMul4(xpos, points * sizeof(SkScalar));
1200 #ifdef SK_DEBUG_SIZE
1201 fPointBytes += fWriter.bytesWritten() - start;
1202 fPointWrites += points;
1203 #endif
1204 this->validate(initialOffset, size); 1172 this->validate(initialOffset, size);
1205 } 1173 }
1206 1174
1207 void SkPictureRecord::onDrawTextOnPath(const void* text, size_t byteLength, cons t SkPath& path, 1175 void SkPictureRecord::onDrawTextOnPath(const void* text, size_t byteLength, cons t SkPath& path,
1208 const SkMatrix* matrix, const SkPaint& pa int) { 1176 const SkMatrix* matrix, const SkPaint& pa int) {
1209 // op + paint index + length + 'length' worth of data + path index + matrix 1177 // op + paint index + length + 'length' worth of data + path index + matrix
1210 const SkMatrix& m = matrix ? *matrix : SkMatrix::I(); 1178 const SkMatrix& m = matrix ? *matrix : SkMatrix::I();
1211 size_t size = 3 * kUInt32Size + SkAlign4(byteLength) + kUInt32Size + m.write ToMemory(NULL); 1179 size_t size = 3 * kUInt32Size + SkAlign4(byteLength) + kUInt32Size + m.write ToMemory(NULL);
1212 size_t initialOffset = this->addDraw(DRAW_TEXT_ON_PATH, &size); 1180 size_t initialOffset = this->addDraw(DRAW_TEXT_ON_PATH, &size);
1213 SkASSERT(initialOffset+getPaintOffset(DRAW_TEXT_ON_PATH, size) == fWriter.by tesWritten()); 1181 SkASSERT(initialOffset+getPaintOffset(DRAW_TEXT_ON_PATH, size) == fWriter.by tesWritten());
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1447 if (index < 0) { // not found 1415 if (index < 0) { // not found
1448 index = fPictureRefs.count(); 1416 index = fPictureRefs.count();
1449 *fPictureRefs.append() = picture; 1417 *fPictureRefs.append() = picture;
1450 picture->ref(); 1418 picture->ref();
1451 } 1419 }
1452 // follow the convention of recording a 1-based index 1420 // follow the convention of recording a 1-based index
1453 this->addInt(index + 1); 1421 this->addInt(index + 1);
1454 } 1422 }
1455 1423
1456 void SkPictureRecord::addPoint(const SkPoint& point) { 1424 void SkPictureRecord::addPoint(const SkPoint& point) {
1457 #ifdef SK_DEBUG_SIZE
1458 size_t start = fWriter.bytesWritten();
1459 #endif
1460 fWriter.writePoint(point); 1425 fWriter.writePoint(point);
1461 #ifdef SK_DEBUG_SIZE
1462 fPointBytes += fWriter.bytesWritten() - start;
1463 fPointWrites++;
1464 #endif
1465 } 1426 }
1466 1427
1467 void SkPictureRecord::addPoints(const SkPoint pts[], int count) { 1428 void SkPictureRecord::addPoints(const SkPoint pts[], int count) {
1468 fWriter.writeMul4(pts, count * sizeof(SkPoint)); 1429 fWriter.writeMul4(pts, count * sizeof(SkPoint));
1469 #ifdef SK_DEBUG_SIZE
1470 fPointBytes += count * sizeof(SkPoint);
1471 fPointWrites++;
1472 #endif
1473 } 1430 }
1474 1431
1475 void SkPictureRecord::addNoOp() { 1432 void SkPictureRecord::addNoOp() {
1476 size_t size = kUInt32Size; // op 1433 size_t size = kUInt32Size; // op
1477 this->addDraw(NOOP, &size); 1434 this->addDraw(NOOP, &size);
1478 } 1435 }
1479 1436
1480 void SkPictureRecord::addRect(const SkRect& rect) { 1437 void SkPictureRecord::addRect(const SkRect& rect) {
1481 #ifdef SK_DEBUG_SIZE
1482 size_t start = fWriter.bytesWritten();
1483 #endif
1484 fWriter.writeRect(rect); 1438 fWriter.writeRect(rect);
1485 #ifdef SK_DEBUG_SIZE
1486 fRectBytes += fWriter.bytesWritten() - start;
1487 fRectWrites++;
1488 #endif
1489 } 1439 }
1490 1440
1491 void SkPictureRecord::addRectPtr(const SkRect* rect) { 1441 void SkPictureRecord::addRectPtr(const SkRect* rect) {
1492 if (fWriter.writeBool(rect != NULL)) { 1442 if (fWriter.writeBool(rect != NULL)) {
1493 fWriter.writeRect(*rect); 1443 fWriter.writeRect(*rect);
1494 } 1444 }
1495 } 1445 }
1496 1446
1497 void SkPictureRecord::addIRect(const SkIRect& rect) { 1447 void SkPictureRecord::addIRect(const SkIRect& rect) {
1498 fWriter.write(&rect, sizeof(rect)); 1448 fWriter.write(&rect, sizeof(rect));
1499 } 1449 }
1500 1450
1501 void SkPictureRecord::addIRectPtr(const SkIRect* rect) { 1451 void SkPictureRecord::addIRectPtr(const SkIRect* rect) {
1502 if (fWriter.writeBool(rect != NULL)) { 1452 if (fWriter.writeBool(rect != NULL)) {
1503 *(SkIRect*)fWriter.reserve(sizeof(SkIRect)) = *rect; 1453 *(SkIRect*)fWriter.reserve(sizeof(SkIRect)) = *rect;
1504 } 1454 }
1505 } 1455 }
1506 1456
1507 void SkPictureRecord::addRRect(const SkRRect& rrect) { 1457 void SkPictureRecord::addRRect(const SkRRect& rrect) {
1508 fWriter.writeRRect(rrect); 1458 fWriter.writeRRect(rrect);
1509 } 1459 }
1510 1460
1511 void SkPictureRecord::addRegion(const SkRegion& region) { 1461 void SkPictureRecord::addRegion(const SkRegion& region) {
1512 fWriter.writeRegion(region); 1462 fWriter.writeRegion(region);
1513 } 1463 }
1514 1464
1515 void SkPictureRecord::addText(const void* text, size_t byteLength) { 1465 void SkPictureRecord::addText(const void* text, size_t byteLength) {
1516 fContentInfo.onDrawText(); 1466 fContentInfo.onDrawText();
1517 #ifdef SK_DEBUG_SIZE
1518 size_t start = fWriter.bytesWritten();
1519 #endif
1520 addInt(SkToInt(byteLength)); 1467 addInt(SkToInt(byteLength));
1521 fWriter.writePad(text, byteLength); 1468 fWriter.writePad(text, byteLength);
1522 #ifdef SK_DEBUG_SIZE
1523 fTextBytes += fWriter.bytesWritten() - start;
1524 fTextWrites++;
1525 #endif
1526 } 1469 }
1527 1470
1528 /////////////////////////////////////////////////////////////////////////////// 1471 ///////////////////////////////////////////////////////////////////////////////
1529 1472
1530 #ifdef SK_DEBUG_SIZE
1531 size_t SkPictureRecord::size() const {
1532 size_t result = 0;
1533 size_t sizeData;
1534 bitmaps(&sizeData);
1535 result += sizeData;
1536 matrices(&sizeData);
1537 result += sizeData;
1538 paints(&sizeData);
1539 result += sizeData;
1540 paths(&sizeData);
1541 result += sizeData;
1542 pictures(&sizeData);
1543 result += sizeData;
1544 regions(&sizeData);
1545 result += sizeData;
1546 result += streamlen();
1547 return result;
1548 }
1549
1550 int SkPictureRecord::bitmaps(size_t* size) const {
1551 size_t result = 0;
1552 int count = fBitmaps.count();
1553 for (int index = 0; index < count; index++)
1554 result += sizeof(fBitmaps[index]) + fBitmaps[index]->size();
1555 *size = result;
1556 return count;
1557 }
1558
1559 int SkPictureRecord::matrices(size_t* size) const {
1560 int count = fMatrices.count();
1561 *size = sizeof(fMatrices[0]) * count;
1562 return count;
1563 }
1564
1565 int SkPictureRecord::paints(size_t* size) const {
1566 size_t result = 0;
1567 int count = fPaints.count();
1568 for (int index = 0; index < count; index++)
1569 result += sizeof(fPaints[index]) + fPaints[index]->size();
1570 *size = result;
1571 return count;
1572 }
1573
1574 int SkPictureRecord::paths(size_t* size) const {
1575 size_t result = 0;
1576 int count = fPaths.count();
1577 for (int index = 0; index < count; index++)
1578 result += sizeof(fPaths[index]) + fPaths[index]->size();
1579 *size = result;
1580 return count;
1581 }
1582
1583 int SkPictureRecord::regions(size_t* size) const {
1584 size_t result = 0;
1585 int count = fRegions.count();
1586 for (int index = 0; index < count; index++)
1587 result += sizeof(fRegions[index]) + fRegions[index]->size();
1588 *size = result;
1589 return count;
1590 }
1591
1592 size_t SkPictureRecord::streamlen() const {
1593 return fWriter.size();
1594 }
1595 #endif
1596
1597 #ifdef SK_DEBUG_VALIDATE
1598 void SkPictureRecord::validate(uint32_t initialOffset, uint32_t size) const {
1599 SkASSERT(fWriter.size() == initialOffset + size);
1600
1601 validateBitmaps();
1602 validateMatrices();
1603 validatePaints();
1604 validatePaths();
1605 validateRegions();
1606 }
1607
1608 void SkPictureRecord::validateBitmaps() const {
1609 int count = fBitmapHeap->count();
1610 SkASSERT((unsigned) count < 0x1000);
1611 for (int index = 0; index < count; index++) {
1612 const SkBitmap* bitPtr = fBitmapHeap->getBitmap(index);
1613 SkASSERT(bitPtr);
1614 bitPtr->validate();
1615 }
1616 }
1617
1618 void SkPictureRecord::validateMatrices() const {
1619 int count = fMatrices.count();
1620 SkASSERT((unsigned) count < 0x1000);
1621 for (int index = 0; index < count; index++) {
1622 const SkFlatData* matrix = fMatrices[index];
1623 SkASSERT(matrix);
1624 // matrix->validate();
1625 }
1626 }
1627
1628 void SkPictureRecord::validatePaints() const {
1629 int count = fPaints.count();
1630 SkASSERT((unsigned) count < 0x1000);
1631 for (int index = 0; index < count; index++) {
1632 const SkFlatData* paint = fPaints[index];
1633 SkASSERT(paint);
1634 // paint->validate();
1635 }
1636 }
1637
1638 void SkPictureRecord::validatePaths() const {
1639 if (NULL == fPathHeap) {
1640 return;
1641 }
1642
1643 int count = fPathHeap->count();
1644 SkASSERT((unsigned) count < 0x1000);
1645 for (int index = 0; index < count; index++) {
1646 const SkPath& path = (*fPathHeap)[index];
1647 path.validate();
1648 }
1649 }
1650
1651 void SkPictureRecord::validateRegions() const {
1652 int count = fRegions.count();
1653 SkASSERT((unsigned) count < 0x1000);
1654 for (int index = 0; index < count; index++) {
1655 const SkFlatData* region = fRegions[index];
1656 SkASSERT(region);
1657 // region->validate();
1658 }
1659 }
1660 #endif
OLDNEW
« no previous file with comments | « src/core/SkPictureRecord.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698