aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/gmmain.cpp
diff options
context:
space:
mode:
authorGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-03-21 17:34:30 +0000
committerGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-03-21 17:34:30 +0000
commit79d3cb4ba74651ceaa862005a4244460e4662afd (patch)
tree6fdb45acd154817bb0740d93786e61005e2fc725 /gm/gmmain.cpp
parenta43a532e94ad0142c86a7f0e271815335886dd43 (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.cpp27
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);