| 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, M
ode mode) |
| 15 : CpuTask(parent) | 15 : CpuTask(parent) |
| 16 , fName(UnderJoin(parent.name().c_str(), optimize ? "skr" : "skr-noopt")) | 16 , fOptimize(mode == kOptimize_Mode) |
| 17 , fName(UnderJoin(parent.name().c_str(), fOptimize ? "skr" : "skr-noopt")) |
| 17 , fGM(gm) | 18 , fGM(gm) |
| 18 , fReference(reference) | 19 , fReference(reference) |
| 19 , fOptimize(optimize) | 20 {} |
| 21 |
| 22 RecordTask::RecordTask(const Task& parent, SkPicture* pic, SkBitmap reference, M
ode mode) |
| 23 : CpuTask(parent) |
| 24 , fOptimize(mode == kOptimize_Mode) |
| 25 , fName(UnderJoin(parent.name().c_str(), fOptimize ? "skr" : "skr-noopt")) |
| 26 , fPicture(SkRef(pic)) |
| 27 , fReference(reference) |
| 20 {} | 28 {} |
| 21 | 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 |