DM: tweaks
- translate filenames to task names instead of using a verbatim mode in WriteTask
- add an option to write out only PNG data to the .png if you don't need -r to work
BUG=skia:
R=reed@google.com, mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/288823002
git-svn-id: http://skia.googlecode.com/svn/trunk@14742 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/dm/DMSKPTask.cpp b/dm/DMSKPTask.cpp
index 3eb4c5d..53f8408 100644
--- a/dm/DMSKPTask.cpp
+++ b/dm/DMSKPTask.cpp
@@ -5,8 +5,17 @@
namespace DM {
-SKPTask::SKPTask(Reporter* r, TaskRunner* tr, SkPicture* pic, SkString name)
- : CpuTask(r, tr), fPicture(SkRef(pic)), fName(name) {}
+// foo_bar.skp -> foo-bar_skp
+static SkString filename_to_task_name(SkString filename) {
+ for (size_t i = 0; i < filename.size(); i++) {
+ if ('_' == filename[i]) { filename[i] = '-'; }
+ if ('.' == filename[i]) { filename[i] = '_'; }
+ }
+ return filename;
+}
+
+SKPTask::SKPTask(Reporter* r, TaskRunner* tr, SkPicture* pic, SkString filename)
+ : CpuTask(r, tr), fPicture(SkRef(pic)), fName(filename_to_task_name(filename)) {}
void SKPTask::draw() {
SkBitmap bitmap;
@@ -17,7 +26,7 @@
(*this, fPicture, bitmap, RecordTask::kNoOptimize_Mode)));
this->spawnChild(SkNEW_ARGS(RecordTask,
(*this, fPicture, bitmap, RecordTask::kOptimize_Mode)));
- this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap, WriteTask::kVerbatim_Mode)));
+ this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap)));
}
} // namespace DM
diff --git a/dm/DMWriteTask.cpp b/dm/DMWriteTask.cpp
index cfac415..7c9bb62 100644
--- a/dm/DMWriteTask.cpp
+++ b/dm/DMWriteTask.cpp
@@ -9,6 +9,8 @@
#include "SkString.h"
DEFINE_string2(writePath, w, "", "If set, write GMs here as .pngs.");
+DEFINE_bool(writePngOnly, false, "If true, don't encode raw bitmap after .png data. "
+ "This means -r won't work, but skdiff will still work fine.");
namespace DM {
@@ -26,16 +28,12 @@
return consumed;
}
-WriteTask::WriteTask(const Task& parent, SkBitmap bitmap, Mode mode)
+WriteTask::WriteTask(const Task& parent, SkBitmap bitmap)
: CpuTask(parent), fBitmap(bitmap) {
- if (mode == kVerbatim_Mode) {
- fGmName.set(parent.name());
- } else {
- const int suffixes = parent.depth() + 1;
- const SkString& name = parent.name();
- const int totalSuffixLength = split_suffixes(suffixes, name.c_str(), &fSuffixes);
- fGmName.set(name.c_str(), name.size()-totalSuffixLength);
- }
+ const int suffixes = parent.depth() + 1;
+ const SkString& name = parent.name();
+ const int totalSuffixLength = split_suffixes(suffixes, name.c_str(), &fSuffixes);
+ fGmName.set(name.c_str(), name.size()-totalSuffixLength);
}
void WriteTask::makeDirOrFail(SkString dir) {
@@ -61,6 +59,9 @@
SkDebugf("Can't encode a PNG.\n");
return false;
}
+ if (FLAGS_writePngOnly) {
+ return true;
+ }
// Pad out so the raw pixels start 4-byte aligned.
const uint32_t maxPadding = 0;
diff --git a/dm/DMWriteTask.h b/dm/DMWriteTask.h
index 121dc0d..a90f66a 100644
--- a/dm/DMWriteTask.h
+++ b/dm/DMWriteTask.h
@@ -15,13 +15,8 @@
class WriteTask : public CpuTask {
public:
- enum Mode {
- kParseName_Mode, // Parse the parent's name into directories by underscores.
- kVerbatim_Mode, // Don't parse the name at all.
- };
WriteTask(const Task& parent, // WriteTask must be a child Task. Pass its parent here.
- SkBitmap bitmap, // Bitmap to write.
- Mode = kParseName_Mode);
+ SkBitmap bitmap); // Bitmap to write.
virtual void draw() SK_OVERRIDE;
virtual bool shouldSkip() const SK_OVERRIDE;