add getMetaData() to SkCanvas (as part of our master plan to remove
subclasses of SkCanvas and SkDevice from our clients.
git-svn-id: http://skia.googlecode.com/svn/trunk@5679 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 7d55c3c..28a2bc4 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -13,6 +13,7 @@
#include "SkDraw.h"
#include "SkDrawFilter.h"
#include "SkDrawLooper.h"
+#include "SkMetaData.h"
#include "SkPicture.h"
#include "SkRasterClip.h"
#include "SkScalarCompare.h"
@@ -457,6 +458,7 @@
fLastDeviceToGainFocus = NULL;
fDeviceCMDirty = false;
fSaveLayerCount = 0;
+ fMetaData = NULL;
fMCRec = (MCRec*)fMCStack.push_back();
new (fMCRec) MCRec(NULL, 0);
@@ -503,6 +505,7 @@
this->internalRestore(); // restore the last, since we're going away
SkSafeUnref(fBounder);
+ SkDELETE(fMetaData);
dec_canvas();
}
@@ -521,6 +524,15 @@
return filter;
}
+SkMetaData& SkCanvas::getMetaData() {
+ // metadata users are rare, so we lazily allocate it. If that changes we
+ // can decide to just make it a field in the device (rather than a ptr)
+ if (NULL == fMetaData) {
+ fMetaData = new SkMetaData;
+ }
+ return *fMetaData;
+}
+
///////////////////////////////////////////////////////////////////////////////
void SkCanvas::flush() {