Index: skia/ext/platform_canvas.cc |
diff --git a/skia/ext/platform_canvas.cc b/skia/ext/platform_canvas.cc |
index cf362b3ce3a3f95fad61c51db39d9b355db93514..0df64962bbcc7938e6bf04e67b0b6982418479f9 100644 |
--- a/skia/ext/platform_canvas.cc |
+++ b/skia/ext/platform_canvas.cc |
@@ -4,9 +4,33 @@ |
#include "skia/ext/platform_canvas.h" |
+#include "base/logging.h" |
#include "skia/ext/bitmap_platform_device.h" |
+#include "skia/ext/platform_device.h" |
+#include "third_party/skia/include/core/SkMetaData.h" |
#include "third_party/skia/include/core/SkTypes.h" |
+namespace { |
+ |
+#if defined(OS_MACOSX) |
+const char kIsPreviewMetafileKey[] = "CrIsPreviewMetafile"; |
+#endif |
+ |
+void SetBoolMetaData(const SkCanvas& canvas, const char* key, bool value) { |
+ SkMetaData& meta = skia::GetMetaData(canvas); |
+ meta.setBool(key, value); |
+} |
+ |
+bool GetBoolMetaData(const SkCanvas& canvas, const char* key) { |
+ bool value; |
+ SkMetaData& meta = skia::GetMetaData(canvas); |
+ if (!meta.findBool(key, &value)) |
+ value = false; |
+ return value; |
+} |
+ |
+} // namespace |
+ |
namespace skia { |
SkBaseDevice* GetTopDevice(const SkCanvas& canvas) { |
@@ -77,9 +101,34 @@ SkCanvas* CreateCanvas(const skia::RefPtr<SkBaseDevice>& device, OnFailureType f |
if (!device) { |
if (CRASH_ON_FAILURE == failureType) |
SK_CRASH(); |
- return NULL; |
+ return nullptr; |
} |
return new SkCanvas(device.get()); |
} |
+SkMetaData& GetMetaData(const SkCanvas& canvas) { |
+ SkBaseDevice* device = canvas.getDevice(); |
+ DCHECK(device != nullptr); |
+ return device->getMetaData(); |
+} |
+ |
+#if defined(OS_MACOSX) |
+void SetIsPreviewMetafile(const SkCanvas& canvas, bool is_preview) { |
+ SetBoolMetaData(canvas, kIsPreviewMetafileKey, is_preview); |
+} |
+ |
+bool IsPreviewMetafile(const SkCanvas& canvas) { |
+ return GetBoolMetaData(canvas, kIsPreviewMetafileKey); |
+} |
+ |
+CGContextRef GetBitmapContext(const SkCanvas& canvas) { |
+ SkBaseDevice* device = GetTopDevice(canvas); |
+ PlatformDevice* platform_device = GetPlatformDevice(device); |
+ return platform_device ? platform_device->GetBitmapContext() : |
+ nullptr; |
+} |
+ |
+#endif |
+ |
+ |
} // namespace skia |