diff options
author | vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-03-21 17:34:30 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-03-21 17:34:30 +0000 |
commit | 79d3cb4ba74651ceaa862005a4244460e4662afd (patch) | |
tree | 6fdb45acd154817bb0740d93786e61005e2fc725 /gm/gmmain.cpp | |
parent | a43a532e94ad0142c86a7f0e271815335886dd43 (diff) |
[PDF] Add GM and infrastructure to test drawing shaders with an initial transform.
Previous review at https://codereview.appspot.com/5867047/ and https://codereview.appspot.com/5849045/
TBR=reed@google.com
Review URL: https://codereview.appspot.com/5860044
git-svn-id: http://skia.googlecode.com/svn/trunk@3452 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/gmmain.cpp')
-rw-r--r-- | gm/gmmain.cpp | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp index 61095e173f..1e63bb6d77 100644 --- a/gm/gmmain.cpp +++ b/gm/gmmain.cpp @@ -264,7 +264,10 @@ static void installFilter(SkCanvas* canvas) { } } -static void invokeGM(GM* gm, SkCanvas* canvas) { +static void invokeGM(GM* gm, SkCanvas* canvas, bool isPDF = false) { + if (!isPDF) { + canvas->setMatrix(gm->getInitialTransform()); + } installFilter(canvas); gm->draw(canvas); canvas->setDrawFilter(NULL); @@ -323,14 +326,26 @@ static void generate_image_from_picture(GM* gm, const ConfigData& gRec, static void generate_pdf(GM* gm, SkDynamicMemoryWStream& pdf) { #ifdef SK_SUPPORT_PDF - SkISize size = gm->getISize(); - SkMatrix identity; - identity.reset(); - SkPDFDevice* dev = new SkPDFDevice(size, size, identity); + SkMatrix initialTransform = gm->getInitialTransform(); + SkISize pageSize = gm->getISize(); + SkPDFDevice* dev = NULL; + if (initialTransform.isIdentity()) { + dev = new SkPDFDevice(pageSize, pageSize, initialTransform); + } else { + SkRect content = SkRect::MakeWH(SkIntToScalar(pageSize.width()), + SkIntToScalar(pageSize.height())); + initialTransform.mapRect(&content); + content.intersect(0, 0, SkIntToScalar(pageSize.width()), + SkIntToScalar(pageSize.height())); + SkISize contentSize = + SkISize::Make(SkScalarRoundToInt(content.width()), + SkScalarRoundToInt(content.height())); + dev = new SkPDFDevice(pageSize, contentSize, initialTransform); + } SkAutoUnref aur(dev); SkCanvas c(dev); - invokeGM(gm, &c); + invokeGM(gm, &c, true); SkPDFDocument doc; doc.appendPage(dev); |