aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkRecordDraw.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkRecordDraw.cpp')
-rw-r--r--src/core/SkRecordDraw.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp
index 0117adeefa..f7f02997df 100644
--- a/src/core/SkRecordDraw.cpp
+++ b/src/core/SkRecordDraw.cpp
@@ -35,15 +35,29 @@ void SkRecordDraw(const SkRecord& record,
}
} else {
// Draw all ops.
- for (SkRecords::Draw draw(canvas); draw.index() < record.count(); draw.next()) {
+ SkRecords::Draw draw(canvas);
+ for (unsigned i = 0; i < record.count(); i++) {
if (NULL != callback && callback->abortDrawing()) {
return;
}
- record.visit<void>(draw.index(), draw);
+ record.visit<void>(i, draw);
}
}
}
+void SkRecordPartialDraw(const SkRecord& record,
+ SkCanvas* canvas,
+ const SkRect& clearRect,
+ unsigned start, unsigned stop) {
+ SkAutoCanvasRestore saveRestore(canvas, true /*save now, restore at exit*/);
+
+ stop = SkTMin(stop, record.count());
+ SkRecords::PartialDraw draw(canvas, clearRect);
+ for (unsigned i = start; i < stop; i++) {
+ record.visit<void>(i, draw);
+ }
+}
+
namespace SkRecords {
// FIXME: SkBitmaps are stateful, so we need to copy them to play back in multiple threads.