summaryrefslogtreecommitdiffstats
path: root/printing/native_metafile_factory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'printing/native_metafile_factory.cc')
-rw-r--r--printing/native_metafile_factory.cc21
1 files changed, 20 insertions, 1 deletions
diff --git a/printing/native_metafile_factory.cc b/printing/native_metafile_factory.cc
index f971452..f31994b 100644
--- a/printing/native_metafile_factory.cc
+++ b/printing/native_metafile_factory.cc
@@ -4,6 +4,8 @@
#include "printing/native_metafile_factory.h"
+#include "base/scoped_ptr.h"
+
#if defined(OS_WIN)
#include "printing/emf_win.h"
#elif defined(OS_MACOSX)
@@ -15,7 +17,24 @@
namespace printing {
// static
-printing::NativeMetafile* NativeMetafileFactory::Create() {
+NativeMetafile* NativeMetafileFactory::Create() {
+ scoped_ptr<NativeMetafile> metafile(CreateNewMetafile());
+ if (!metafile->Init())
+ return NULL;
+ return metafile.release();
+}
+
+// static
+NativeMetafile* NativeMetafileFactory::CreateFromData(
+ const void* src_buffer, uint32 src_buffer_size) {
+ scoped_ptr<NativeMetafile> metafile(CreateNewMetafile());
+ if (!metafile->InitFromData(src_buffer, src_buffer_size))
+ return NULL;
+ return metafile.release();
+}
+
+// static
+NativeMetafile* NativeMetafileFactory::CreateNewMetafile(){
#if defined(OS_WIN)
return new printing::Emf;
#elif defined(OS_MACOSX)