int SkPicture::approximateOpCount()

NOTREECHECKS=true

BUG=skia:
R=reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/470333002
This commit is contained in:
mtklein 2014-08-14 19:17:18 -07:00 committed by Commit bot
parent 86cfff0a4d
commit 5a246bb487
3 changed files with 22 additions and 1 deletions

View File

@ -197,6 +197,13 @@ public:
// Takes ref on listener.
void addDeletionListener(DeletionListener* listener) const;
/** Return the approximate number of operations in this picture. This
* number may be greater or less than the number of SkCanvas calls
* recorded: some calls may be recorded as more than one operation, or some
* calls may be optimized away.
*/
int approximateOpCount() const;
private:
// V2 : adds SkPixelRef's generation ID.
// V3 : PictInfo tag at beginning, and EOF tag at the end

View File

@ -455,3 +455,15 @@ void SkPicture::callDeletionListeners() {
fDeletionListeners.unrefAll();
}
// fRecord OK
int SkPicture::approximateOpCount() const {
SkASSERT(fRecord.get() || fData.get());
if (fRecord.get()) {
return fRecord->count();
}
if (fData.get()) {
return fData->opCount();
}
return 0;
}

View File

@ -89,6 +89,8 @@ public:
bool containsBitmaps() const;
int opCount() const { return fContentInfo.numOperations(); }
const SkData* opData() const { return fOpData; }
protected:
@ -128,7 +130,7 @@ public:
return &(*fPaints)[index - 1];
}
void initIterator(SkPictureStateTree::Iterator* iter,
void initIterator(SkPictureStateTree::Iterator* iter,
const SkTDArray<void*>& draws,
SkCanvas* canvas) const {
if (NULL != fStateTree) {