diff options
author | 2013-07-11 15:20:50 +0000 | |
---|---|---|
committer | 2013-07-11 15:20:50 +0000 | |
commit | 444e25a66b6a1547fa0903d0cf075a0885a76bb7 (patch) | |
tree | 825c3c61e56b9db4f571933b6714a89d182c39f6 /experimental/PdfViewer/SkPdfRenderer.cpp | |
parent | 1310238d828c9fc9285875a7cc2185d5b53faa4b (diff) |
add ability to specify the DPI at which to render the page
Review URL: https://codereview.chromium.org/19000004
git-svn-id: http://skia.googlecode.com/svn/trunk@10009 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'experimental/PdfViewer/SkPdfRenderer.cpp')
-rw-r--r-- | experimental/PdfViewer/SkPdfRenderer.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/experimental/PdfViewer/SkPdfRenderer.cpp b/experimental/PdfViewer/SkPdfRenderer.cpp index c5fc8f5807..8502ac54b2 100644 --- a/experimental/PdfViewer/SkPdfRenderer.cpp +++ b/experimental/PdfViewer/SkPdfRenderer.cpp @@ -1923,7 +1923,7 @@ void PdfCompatibilitySectionLooper::loop() { PdfContext* gPdfContext = NULL; -bool SkPdfRenderer::renderPage(int page, SkCanvas* canvas) const { +bool SkPdfRenderer::renderPage(int page, SkCanvas* canvas, const SkRect& dst) const { if (!fPdfDoc) { return false; } @@ -1941,13 +1941,14 @@ bool SkPdfRenderer::renderPage(int page, SkCanvas* canvas) const { gPdfContext = &pdfContext; // TODO(edisonn): get matrix stuff right. - // TODO(edisonn): add DPI/scale/zoom. SkScalar z = SkIntToScalar(0); - SkRect rect = fPdfDoc->MediaBox(page); - SkScalar w = rect.width(); - SkScalar h = rect.height(); + SkScalar w = dst.width(); + SkScalar h = dst.height(); - SkPoint pdfSpace[4] = {SkPoint::Make(z, z), SkPoint::Make(w, z), SkPoint::Make(w, h), SkPoint::Make(z, h)}; + SkScalar wp = fPdfDoc->MediaBox(page).width(); + SkScalar hp = fPdfDoc->MediaBox(page).height(); + + SkPoint pdfSpace[4] = {SkPoint::Make(z, z), SkPoint::Make(wp, z), SkPoint::Make(wp, hp), SkPoint::Make(z, hp)}; // SkPoint skiaSpace[4] = {SkPoint::Make(z, h), SkPoint::Make(w, h), SkPoint::Make(w, z), SkPoint::Make(z, z)}; // TODO(edisonn): add flag for this app to create sourunding buffer zone @@ -1977,12 +1978,12 @@ bool SkPdfRenderer::renderPage(int page, SkCanvas* canvas) const { pdfContext.fGraphicsState.fMatrixTm = pdfContext.fGraphicsState.fMatrix; pdfContext.fGraphicsState.fMatrixTlm = pdfContext.fGraphicsState.fMatrix; - canvas->setMatrix(pdfContext.fOriginalMatrix); - #ifndef PDF_DEBUG_NO_PAGE_CLIPING - canvas->clipRect(SkRect::MakeXYWH(z, z, w, h), SkRegion::kIntersect_Op, true); + canvas->clipRect(dst, SkRegion::kIntersect_Op, true); #endif + canvas->setMatrix(pdfContext.fOriginalMatrix); + // erase with red before? // SkPaint paint; // paint.setColor(SK_ColorRED); |