OLD | NEW |
1 #include "DMQuiltTask.h" | 1 #include "DMQuiltTask.h" |
2 #include "DMUtil.h" | 2 #include "DMUtil.h" |
3 #include "DMWriteTask.h" | 3 #include "DMWriteTask.h" |
4 | 4 |
5 #include "SkBBHFactory.h" | 5 #include "SkBBHFactory.h" |
6 #include "SkCommandLineFlags.h" | 6 #include "SkCommandLineFlags.h" |
7 #include "SkPicture.h" | 7 #include "SkPicture.h" |
8 #include "SkTaskGroup.h" | 8 #include "SkTaskGroup.h" |
9 | 9 |
10 DEFINE_bool(quilt, true, "If true, draw GM via a picture into a quilt of small t
iles and compare."); | 10 DEFINE_bool(quilt, true, "If true, draw GM via a picture into a quilt of small t
iles and compare."); |
(...skipping 28 matching lines...) Expand all Loading... |
39 , fY(y * FLAGS_quiltTile) | 39 , fY(y * FLAGS_quiltTile) |
40 , fPicture(picture) | 40 , fPicture(picture) |
41 , fQuilt(quilt) {} | 41 , fQuilt(quilt) {} |
42 | 42 |
43 virtual void run() SK_OVERRIDE { | 43 virtual void run() SK_OVERRIDE { |
44 SkBitmap tile; | 44 SkBitmap tile; |
45 fQuilt->extractSubset(&tile, SkIRect::MakeXYWH(fX, fY, FLAGS_quiltTile,
FLAGS_quiltTile)); | 45 fQuilt->extractSubset(&tile, SkIRect::MakeXYWH(fX, fY, FLAGS_quiltTile,
FLAGS_quiltTile)); |
46 SkCanvas tileCanvas(tile); | 46 SkCanvas tileCanvas(tile); |
47 | 47 |
48 tileCanvas.translate(SkIntToScalar(-fX), SkIntToScalar(-fY)); | 48 tileCanvas.translate(SkIntToScalar(-fX), SkIntToScalar(-fY)); |
49 fPicture.draw(&tileCanvas); | 49 fPicture.playback(&tileCanvas); |
50 tileCanvas.flush(); | 50 tileCanvas.flush(); |
51 | 51 |
52 delete this; | 52 delete this; |
53 } | 53 } |
54 | 54 |
55 private: | 55 private: |
56 const int fX, fY; | 56 const int fX, fY; |
57 const SkPicture& fPicture; | 57 const SkPicture& fPicture; |
58 SkBitmap* fQuilt; | 58 SkBitmap* fQuilt; |
59 }; | 59 }; |
(...skipping 25 matching lines...) Expand all Loading... |
85 | 85 |
86 SkAutoTUnref<const SkPicture> recorded( | 86 SkAutoTUnref<const SkPicture> recorded( |
87 RecordPicture(fGM.get(), factory.get(), kSkRecord_Backend == fBacken
d)); | 87 RecordPicture(fGM.get(), factory.get(), kSkRecord_Backend == fBacken
d)); |
88 | 88 |
89 SkBitmap full; | 89 SkBitmap full; |
90 AllocatePixels(fReference, &full); | 90 AllocatePixels(fReference, &full); |
91 | 91 |
92 if (fGM->getFlags() & skiagm::GM::kSkipTiled_Flag) { | 92 if (fGM->getFlags() & skiagm::GM::kSkipTiled_Flag) { |
93 // Some GMs don't draw exactly the same when tiled. Draw them in one go
. | 93 // Some GMs don't draw exactly the same when tiled. Draw them in one go
. |
94 SkCanvas canvas(full); | 94 SkCanvas canvas(full); |
95 recorded->draw(&canvas); | 95 recorded->playback(&canvas); |
96 canvas.flush(); | 96 canvas.flush(); |
97 } else { | 97 } else { |
98 // Draw tiles in parallel into the same bitmap, simulating aggressive im
pl-side painting. | 98 // Draw tiles in parallel into the same bitmap, simulating aggressive im
pl-side painting. |
99 SkTaskGroup tg; | 99 SkTaskGroup tg; |
100 for (int y = 0; y < tiles_needed(full.height(), FLAGS_quiltTile); y++) { | 100 for (int y = 0; y < tiles_needed(full.height(), FLAGS_quiltTile); y++) { |
101 for (int x = 0; x < tiles_needed(full.width(), FLAGS_quiltTile); x++
) { | 101 for (int x = 0; x < tiles_needed(full.width(), FLAGS_quiltTile); x++
) { |
102 // Deletes itself when done. | 102 // Deletes itself when done. |
103 tg.add(new Tile(x, y, *recorded, &full)); | 103 tg.add(new Tile(x, y, *recorded, &full)); |
104 } | 104 } |
105 } | 105 } |
106 } | 106 } |
107 | 107 |
108 if (!BitmapsEqual(full, fReference)) { | 108 if (!BitmapsEqual(full, fReference)) { |
109 this->fail(); | 109 this->fail(); |
110 this->spawnChild(SkNEW_ARGS(WriteTask, (*this, full))); | 110 this->spawnChild(SkNEW_ARGS(WriteTask, (*this, full))); |
111 } | 111 } |
112 } | 112 } |
113 | 113 |
114 bool QuiltTask::shouldSkip() const { | 114 bool QuiltTask::shouldSkip() const { |
115 if (fGM->getFlags() & skiagm::GM::kSkipPicture_Flag) { | 115 if (fGM->getFlags() & skiagm::GM::kSkipPicture_Flag) { |
116 return true; | 116 return true; |
117 } | 117 } |
118 return !FLAGS_quilt; | 118 return !FLAGS_quilt; |
119 } | 119 } |
120 | 120 |
121 } // namespace DM | 121 } // namespace DM |
OLD | NEW |