| Index: tools/dump_record.cpp
|
| diff --git a/tools/dump_record.cpp b/tools/dump_record.cpp
|
| index 2d851e7c9f62dc0e9a4b7130fb0b7d2c56c46a2f..14b1a5bbe01dc81dcdc24828d6cb03eb3214868b 100644
|
| --- a/tools/dump_record.cpp
|
| +++ b/tools/dump_record.cpp
|
| @@ -7,118 +7,35 @@
|
|
|
| #include <stdio.h>
|
|
|
| -#include "BenchTimer.h"
|
| -#include "LazyDecodeBitmap.h"
|
| #include "SkCommandLineFlags.h"
|
| #include "SkGraphics.h"
|
| -#include "SkOSFile.h"
|
| #include "SkPicture.h"
|
| -#include "SkRecord.h"
|
| -#include "SkRecordDraw.h"
|
| #include "SkRecordOpts.h"
|
| #include "SkRecorder.h"
|
| #include "SkStream.h"
|
|
|
| +#include "DumpRecord.h"
|
| +#include "LazyDecodeBitmap.h"
|
| +
|
| DEFINE_string2(skps, r, "", ".SKPs to dump.");
|
| DEFINE_string(match, "", "The usual filters on file names to dump.");
|
| DEFINE_bool2(optimize, O, false, "Run SkRecordOptimize before dumping.");
|
| DEFINE_int32(tile, 1000000000, "Simulated tile size.");
|
| DEFINE_bool(timeWithCommand, false, "If true, print time next to command, else in first column.");
|
|
|
| -class Dumper {
|
| -public:
|
| - explicit Dumper(SkCanvas* canvas, int count) : fDigits(0), fIndent(0), fDraw(canvas) {
|
| - while (count > 0) {
|
| - count /= 10;
|
| - fDigits++;
|
| - }
|
| - }
|
| -
|
| - unsigned index() const { return fDraw.index(); }
|
| - void next() { fDraw.next(); }
|
| -
|
| - template <typename T>
|
| - void operator()(const T& command) {
|
| - BenchTimer timer;
|
| - timer.start();
|
| - fDraw(command);
|
| - timer.end();
|
| -
|
| - this->print(command, timer.fCpu);
|
| - }
|
| -
|
| - void operator()(const SkRecords::NoOp&) {
|
| - // Move on without printing anything.
|
| - }
|
| -
|
| - template <typename T>
|
| - void print(const T& command, double time) {
|
| - this->printNameAndTime(command, time);
|
| - }
|
| -
|
| - void print(const SkRecords::Restore& command, double time) {
|
| - --fIndent;
|
| - this->printNameAndTime(command, time);
|
| - }
|
| -
|
| - void print(const SkRecords::Save& command, double time) {
|
| - this->printNameAndTime(command, time);
|
| - ++fIndent;
|
| - }
|
| -
|
| - void print(const SkRecords::SaveLayer& command, double time) {
|
| - this->printNameAndTime(command, time);
|
| - ++fIndent;
|
| - }
|
| -
|
| -private:
|
| - template <typename T>
|
| - void printNameAndTime(const T& command, double time) {
|
| - if (!FLAGS_timeWithCommand) {
|
| - printf("%6.1f ", time * 1000);
|
| - }
|
| - printf("%*d ", fDigits, fDraw.index());
|
| - for (int i = 0; i < fIndent; i++) {
|
| - putchar('\t');
|
| - }
|
| - if (FLAGS_timeWithCommand) {
|
| - printf("%6.1f ", time * 1000);
|
| - }
|
| - puts(NameOf(command));
|
| - }
|
| -
|
| - template <typename T>
|
| - static const char* NameOf(const T&) {
|
| - #define CASE(U) case SkRecords::U##_Type: return #U;
|
| - switch(T::kType) { SK_RECORD_TYPES(CASE); }
|
| - #undef CASE
|
| - SkDEBUGFAIL("Unknown T");
|
| - return "Unknown T";
|
| - }
|
| -
|
| - static const char* NameOf(const SkRecords::SaveLayer&) {
|
| - return "\x1b[31;1mSaveLayer\x1b[0m"; // Bold red.
|
| - }
|
| -
|
| - int fDigits;
|
| - int fIndent;
|
| - SkRecords::Draw fDraw;
|
| -};
|
| -
|
| -
|
| static void dump(const char* name, int w, int h, const SkRecord& record) {
|
| SkBitmap bitmap;
|
| bitmap.allocN32Pixels(w, h);
|
| SkCanvas canvas(bitmap);
|
| - canvas.clipRect(SkRect::MakeWH(SkIntToScalar(FLAGS_tile), SkIntToScalar(FLAGS_tile)));
|
| + canvas.clipRect(SkRect::MakeWH(SkIntToScalar(FLAGS_tile),
|
| + SkIntToScalar(FLAGS_tile)));
|
|
|
| printf("%s %s\n", FLAGS_optimize ? "optimized" : "not-optimized", name);
|
|
|
| - for (Dumper dumper(&canvas, record.count()); dumper.index() < record.count(); dumper.next()) {
|
| - record.visit<void>(dumper.index(), dumper);
|
| - }
|
| + DumpRecord(record, &canvas, FLAGS_timeWithCommand);
|
| }
|
|
|
| +
|
| int tool_main(int argc, char** argv);
|
| int tool_main(int argc, char** argv) {
|
| SkCommandLineFlags::Parse(argc, argv);
|
|
|