SkRecord: make culling work if SkRecordAnnotateCullingPairs is called.
authorcommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 8 Apr 2014 23:31:35 +0000 (23:31 +0000)
committercommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 8 Apr 2014 23:31:35 +0000 (23:31 +0000)
commit506db0b7d2905c6bedba9fc5d4aeaf231a9a34ea
tree77d73de439e9102d45891be433c5556ee23ce74c
parent9ffa52d98fc216b6766f33ffd0d9f1c3a1acdb2f
SkRecord: make culling work if SkRecordAnnotateCullingPairs is called.

  - Allow stateful functors; allow visit()/mutate() at a given index; add count().
  - Annotate cull push/pop pairs on the PushCull records.  (tested)
  - Use those annotations to skip ahead in SkRecordDraw.   (not yet tested beyond dm --skr)
  - Make SkRecordDraw a function, move its implementation to a .cpp.

BUG=skia:2378
R=fmalita@chromium.org, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/229523002

git-svn-id: http://skia.googlecode.com/svn/trunk@14101 2bbb7eff-a529-9590-31e7-b0007b416f81
13 files changed:
dm/DMRecordTask.cpp
gyp/record.gyp
gyp/tests.gypi
src/record/SkRecord.h
src/record/SkRecordCulling.cpp [new file with mode: 0644]
src/record/SkRecordCulling.h [new file with mode: 0644]
src/record/SkRecordDraw.cpp [new file with mode: 0644]
src/record/SkRecordDraw.h
src/record/SkRecorder.cpp
src/record/SkRecords.h
tests/RecordCullingTest.cpp [new file with mode: 0644]
tests/RecordTest.cpp
tests/RecorderTest.cpp