diff options
author | mtklein <mtklein@chromium.org> | 2014-09-11 12:30:12 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-11 12:30:12 -0700 |
commit | 0b36e6b65f8c124f2ef2601294288219b3c3a1f0 (patch) | |
tree | 62c07c66beca97e2f1ebf9d09d47e53d61f647e3 | |
parent | 56b00d9e7aecce7ffc6b915972cc3cbfbe051d7e (diff) |
Add --matrix to DM, to play around with and maybe use on a bot.
BUG=skia:
R=reed@google.com, mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/563723005
-rw-r--r-- | dm/DMCpuGMTask.cpp | 1 | ||||
-rw-r--r-- | dm/DMGpuGMTask.cpp | 2 | ||||
-rw-r--r-- | dm/DMPDFTask.cpp | 2 | ||||
-rw-r--r-- | dm/DMPipeTask.cpp | 1 | ||||
-rw-r--r-- | dm/DMUtil.cpp | 15 | ||||
-rw-r--r-- | dm/DMUtil.h | 4 |
6 files changed, 24 insertions, 1 deletions
diff --git a/dm/DMCpuGMTask.cpp b/dm/DMCpuGMTask.cpp index 63a3c424c8..c3c4ae1367 100644 --- a/dm/DMCpuGMTask.cpp +++ b/dm/DMCpuGMTask.cpp @@ -24,6 +24,7 @@ void CpuGMTask::draw() { AllocatePixels(fColorType, fGM->getISize().width(), fGM->getISize().height(), &bm); SkCanvas canvas(bm); + CanvasPreflight(&canvas); canvas.concat(fGM->getInitialTransform()); fGM->draw(&canvas); canvas.flush(); diff --git a/dm/DMGpuGMTask.cpp b/dm/DMGpuGMTask.cpp index 3178fd6d99..65d65d9598 100644 --- a/dm/DMGpuGMTask.cpp +++ b/dm/DMGpuGMTask.cpp @@ -1,5 +1,4 @@ #include "DMGpuGMTask.h" - #include "DMUtil.h" #include "DMWriteTask.h" #include "SkCommandLineFlags.h" @@ -35,6 +34,7 @@ void GpuGMTask::draw(GrContextFactory* grFactory) { return; } SkCanvas* canvas = surface->getCanvas(); + CanvasPreflight(canvas); canvas->concat(fGM->getInitialTransform()); fGM->draw(canvas); diff --git a/dm/DMPDFTask.cpp b/dm/DMPDFTask.cpp index c996aae53c..3102478c2f 100644 --- a/dm/DMPDFTask.cpp +++ b/dm/DMPDFTask.cpp @@ -71,12 +71,14 @@ void PDFTask::draw() { if (fGM.get()) { rasterize = 0 == (fGM->getFlags() & skiagm::GM::kSkipPDFRasterization_Flag); SinglePagePDF pdf(fGM->width(), fGM->height()); + CanvasPreflight(pdf.canvas()); //TODO(mtklein): GM doesn't do this. Why not? //pdf.canvas()->concat(fGM->getInitialTransform()); fGM->draw(pdf.canvas()); pdfData.reset(pdf.end()); } else { SinglePagePDF pdf(fPicture->cullRect().width(), fPicture->cullRect().height()); + CanvasPreflight(pdf.canvas()); fPicture->playback(pdf.canvas()); pdfData.reset(pdf.end()); } diff --git a/dm/DMPipeTask.cpp b/dm/DMPipeTask.cpp index c7c64bd578..9f54560fe0 100644 --- a/dm/DMPipeTask.cpp +++ b/dm/DMPipeTask.cpp @@ -55,6 +55,7 @@ void PipeTask::draw() { fFlags, bitmap.width(), bitmap.height()); + CanvasPreflight(pipeCanvas); pipeCanvas->concat(fGM->getInitialTransform()); fGM->draw(pipeCanvas); writer.endRecording(); diff --git a/dm/DMUtil.cpp b/dm/DMUtil.cpp index 19b1c0f397..a702bbe874 100644 --- a/dm/DMUtil.cpp +++ b/dm/DMUtil.cpp @@ -1,11 +1,25 @@ #include "DMUtil.h" #include "SkColorPriv.h" +#include "SkCommandLineFlags.h" #include "SkPicture.h" #include "SkPictureRecorder.h" +DEFINE_string(matrix, "1 0 0 0 1 0 0 0 1", + "Matrix to apply to the canvas before drawing."); + namespace DM { +void CanvasPreflight(SkCanvas* canvas) { + if (FLAGS_matrix.count() == 9) { + SkMatrix m; + for (int i = 0; i < 9; i++) { + m[i] = (SkScalar)atof(FLAGS_matrix[i]); + } + canvas->concat(m); + } +} + SkString UnderJoin(const char* a, const char* b) { SkString s; s.appendf("%s_%s", a, b); @@ -27,6 +41,7 @@ SkPicture* RecordPicture(skiagm::GM* gm, SkBBHFactory* factory, bool skr) { SkCanvas* canvas = skr ? recorder.EXPERIMENTAL_beginRecording(w, h, factory) : recorder. DEPRECATED_beginRecording(w, h, factory); + CanvasPreflight(canvas); canvas->concat(gm->getInitialTransform()); gm->draw(canvas); canvas->flush(); diff --git a/dm/DMUtil.h b/dm/DMUtil.h index fa29c76757..49da857edb 100644 --- a/dm/DMUtil.h +++ b/dm/DMUtil.h @@ -2,6 +2,7 @@ #define DMUtil_DEFINED #include "SkBitmap.h" +#include "SkCanvas.h" #include "SkString.h" #include "gm.h" @@ -36,6 +37,9 @@ unsigned MaxComponentDifference(const SkBitmap& a, const SkBitmap& b); // Are these identical bitmaps? bool BitmapsEqual(const SkBitmap& a, const SkBitmap& b); +// Hook to modify canvas using global flag values (e.g. --matrix). +void CanvasPreflight(SkCanvas*); + } // namespace DM #endif // DMUtil_DEFINED |