summaryrefslogtreecommitdiffstats
path: root/chrome/utility/utility_thread.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/utility/utility_thread.cc')
-rw-r--r--chrome/utility/utility_thread.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/chrome/utility/utility_thread.cc b/chrome/utility/utility_thread.cc
index 9fc175c6..7b665ae 100644
--- a/chrome/utility/utility_thread.cc
+++ b/chrome/utility/utility_thread.cc
@@ -30,7 +30,8 @@
#include "app/win/iat_patch_function.h"
#include "base/scoped_ptr.h"
#include "base/win/scoped_handle.h"
-#include "printing/emf_win.h"
+#include "printing/native_metafile_factory.h"
+#include "printing/native_metafile.h"
#endif
namespace {
@@ -256,17 +257,18 @@ bool UtilityThread::RenderPDFToWinMetafile(
if (!get_info_proc(&buffer.front(), buffer.size(), &total_page_count, NULL))
return false;
- printing::Emf metafile;
- metafile.InitToFile(metafile_path);
+ scoped_ptr<printing::NativeMetafile> metafile(
+ printing::NativeMetafileFactory::CreateMetafile());
+ metafile->CreateFileBackedDc(NULL, NULL, metafile_path);
// Since we created the metafile using the screen DPI (but we actually want
// the PDF DLL to print using the passed in render_dpi, we apply the following
// transformation.
- SetGraphicsMode(metafile.context(), GM_ADVANCED);
+ SetGraphicsMode(metafile->context(), GM_ADVANCED);
XFORM xform = {0};
int screen_dpi = GetDeviceCaps(GetDC(NULL), LOGPIXELSX);
xform.eM11 = xform.eM22 =
static_cast<float>(screen_dpi) / static_cast<float>(render_dpi);
- ModifyWorldTransform(metafile.context(), &xform, MWT_LEFTMULTIPLY);
+ ModifyWorldTransform(metafile->context(), &xform, MWT_LEFTMULTIPLY);
bool ret = false;
std::vector<printing::PageRange>::const_iterator iter;
@@ -274,18 +276,18 @@ bool UtilityThread::RenderPDFToWinMetafile(
for (int page_number = iter->from; page_number <= iter->to; ++page_number) {
if (page_number >= total_page_count)
break;
- metafile.StartPage();
+ metafile->StartPage();
if (render_proc(&buffer.front(), buffer.size(), page_number,
- metafile.context(), render_dpi, render_dpi,
+ metafile->context(), render_dpi, render_dpi,
render_area.x(), render_area.y(), render_area.width(),
render_area.height(), true, false, true, true))
if (*highest_rendered_page_number < page_number)
*highest_rendered_page_number = page_number;
ret = true;
- metafile.FinishPage();
+ metafile->FinishPage();
}
}
- metafile.Close();
+ metafile->Close();
return ret;
}
#endif // defined(OS_WIN)