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/include/core/SkCanvas.h b/include/core/SkCanvas.h
index 0ee29ea..9480184 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -25,6 +25,7 @@
class SkDevice;
class SkDraw;
class SkDrawFilter;
+class SkMetaData;
class SkPicture;
class SkSurface_Base;
@@ -62,6 +63,8 @@
explicit SkCanvas(const SkBitmap& bitmap);
virtual ~SkCanvas();
+ SkMetaData& getMetaData();
+
///////////////////////////////////////////////////////////////////////////
/**
@@ -986,6 +989,8 @@
SkDevice* fLastDeviceToGainFocus;
int fSaveLayerCount; // number of successful saveLayer calls
+ SkMetaData* fMetaData;
+
SkSurface_Base* fSurfaceBase;
SkSurface_Base* getSurfaceBase() const { return fSurfaceBase; }
void setSurfaceBase(SkSurface_Base* sb) {
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() {