OLD | NEW |
---|---|
1 #include "DMRecordTask.h" | 1 #include "DMRecordTask.h" |
2 #include "DMUtil.h" | 2 #include "DMUtil.h" |
3 #include "DMWriteTask.h" | 3 #include "DMWriteTask.h" |
4 #include "SkCommandLineFlags.h" | 4 #include "SkCommandLineFlags.h" |
5 #include "SkRecord.h" | 5 #include "SkRecord.h" |
6 #include "SkRecordDraw.h" | 6 #include "SkRecordDraw.h" |
7 #include "SkRecordOpts.h" | 7 #include "SkRecordOpts.h" |
8 #include "SkRecorder.h" | 8 #include "SkRecorder.h" |
9 | 9 |
10 DEFINE_bool(skr, true, "If true, run SKR tests."); | 10 DEFINE_bool(skr, true, "If true, run SKR tests."); |
11 | 11 |
12 namespace DM { | 12 namespace DM { |
13 | 13 |
14 RecordTask::RecordTask(const Task& parent, skiagm::GM* gm, SkBitmap reference, b ool optimize) | 14 RecordTask::RecordTask(const Task& parent, skiagm::GM* gm, SkBitmap reference, b ool optimize) |
15 : CpuTask(parent) | 15 : CpuTask(parent) |
16 , fName(UnderJoin(parent.name().c_str(), optimize ? "skr" : "skr-noopt")) | 16 , fName(UnderJoin(parent.name().c_str(), optimize ? "skr" : "skr-noopt")) |
17 , fGM(gm) | 17 , fGM(gm) |
18 , fReference(reference) | 18 , fReference(reference) |
19 , fOptimize(optimize) | 19 , fOptimize(optimize) |
20 {} | 20 {} |
21 | 21 |
22 RecordTask::RecordTask(const Task& parent, SkPicture* pic, SkBitmap reference, b ool optimize) | |
reed1
2014/05/14 12:40:11
nit: the call-sites are slightly harder to underst
mtklein
2014/05/14 17:47:18
Done, for all the existing tasks too.
| |
23 : CpuTask(parent) | |
24 , fName(UnderJoin(parent.name().c_str(), optimize ? "skr" : "skr-noopt")) | |
25 , fPicture(SkRef(pic)) | |
26 , fReference(reference) | |
27 , fOptimize(optimize) | |
28 {} | |
29 | |
22 void RecordTask::draw() { | 30 void RecordTask::draw() { |
23 // Record the GM into an SkRecord. | 31 // Record into an SkRecord. |
24 SkRecord record; | 32 SkRecord record; |
25 SkRecorder recorder(SkRecorder::kWriteOnly_Mode, &record, | 33 SkRecorder recorder(SkRecorder::kWriteOnly_Mode, &record, |
26 fReference.width(), fReference.height()); | 34 fReference.width(), fReference.height()); |
27 recorder.concat(fGM->getInitialTransform()); | 35 |
28 fGM->draw(&recorder); | 36 if (fGM.get()) { |
37 recorder.concat(fGM->getInitialTransform()); | |
38 fGM->draw(&recorder); | |
39 } else { | |
40 fPicture->draw(&recorder); | |
41 } | |
42 | |
29 | 43 |
30 if (fOptimize) { | 44 if (fOptimize) { |
31 SkRecordOptimize(&record); | 45 SkRecordOptimize(&record); |
32 } | 46 } |
33 | 47 |
34 // Draw the SkRecord back into a bitmap. | 48 // Draw the SkRecord back into a bitmap. |
35 SkBitmap bitmap; | 49 SkBitmap bitmap; |
36 SetupBitmap(fReference.colorType(), fGM.get(), &bitmap); | 50 if (fGM.get()) { |
51 SetupBitmap(fReference.colorType(), fGM.get(), &bitmap); | |
52 } else { | |
53 SetupBitmap(fReference.colorType(), *fPicture, &bitmap); | |
54 } | |
37 SkCanvas target(bitmap); | 55 SkCanvas target(bitmap); |
38 SkRecordDraw(record, &target); | 56 SkRecordDraw(record, &target); |
39 | 57 |
40 if (!BitmapsEqual(bitmap, fReference)) { | 58 if (!BitmapsEqual(bitmap, fReference)) { |
41 this->fail(); | 59 this->fail(); |
42 this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap))); | 60 this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap))); |
43 } | 61 } |
44 } | 62 } |
45 | 63 |
46 bool RecordTask::shouldSkip() const { | 64 bool RecordTask::shouldSkip() const { |
47 return !FLAGS_skr; | 65 return !FLAGS_skr; |
48 } | 66 } |
49 | 67 |
50 } // namespace DM | 68 } // namespace DM |
OLD | NEW |