aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/picture_utils.cpp
diff options
context:
space:
mode:
authorGravatar keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-09 18:32:08 +0000
committerGravatar keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-09 18:32:08 +0000
commitd1dc920097194e3342355185528c84408a9929c8 (patch)
treea65d0998c09fa0625fd635ff97d662cf45ebeeca /tools/picture_utils.cpp
parent3a67a668dbdc3a6bba68700a6dfdef8164ae0c69 (diff)
Allow specific files and multiple inputs for picture testing tools.
Changed the render_pictures, bench_pictures and test_pictures.py so that multiple inputs can be given. Furthermore, specific files can also be specified. Unit tests have also been added for picture_utils.cpp. Review URL: https://codereview.appspot.com/6345054 git-svn-id: http://skia.googlecode.com/svn/trunk@4486 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tools/picture_utils.cpp')
-rw-r--r--tools/picture_utils.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/picture_utils.cpp b/tools/picture_utils.cpp
index 6a9e1f51f7..98351b84b5 100644
--- a/tools/picture_utils.cpp
+++ b/tools/picture_utils.cpp
@@ -22,6 +22,49 @@ namespace sk_tools {
path->append(name);
}
+ namespace {
+ bool is_path_seperator(const char chr) {
+#if defined(SK_BUILD_FOR_WIN)
+ return chr == '\\' || chr == '/';
+#else
+ return chr == '/';
+#endif
+ }
+ }
+
+ void get_basename(SkString* basename, const SkString& path) {
+ if (path.size() == 0) {
+ basename->reset();
+ return;
+ }
+
+ size_t end = path.size() - 1;
+
+ // Paths pointing to directories often have a trailing slash,
+ // we remove it so the name is not empty
+ if (is_path_seperator(path[end])) {
+ if (end == 0) {
+ basename->reset();
+ return;
+ }
+
+ end -= 1;
+ }
+
+ size_t i = end;
+ do {
+ --i;
+ if (is_path_seperator(path[i])) {
+ const char* basenameStart = path.c_str() + i + 1;
+ size_t basenameLength = end - i;
+ basename->set(basenameStart, basenameLength);
+ return;
+ }
+ } while (i > 0);
+
+ basename->set(path.c_str(), end + 1);
+ }
+
void setup_bitmap(SkBitmap* bitmap, int width, int height) {
bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height);
bitmap->allocPixels();