aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar caryclark <caryclark@google.com>2014-07-11 12:14:51 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-07-11 12:14:51 -0700
commit936b73424f7393994be832376287da988a52b993 (patch)
tree593058a39c92a62ab13de099542884aa307f6848 /tools
parentbc9205be0a1094e312da098348601398c210dc5a (diff)
ios fixes
skia_ios.mm Get the app's Documents directory and pass use it to set the resource path. This is a quick hack which will be replaced by a new application that is a tiny shim around a command line tool. SkImageEncoder.h SkForceLinking.cpp SkImageDecoder_CG.cpp Add support for FORCE_LINKING so iOS sees the PNG encoder and others. SkFloatBits.cpp SkPoint.cpp Handle denormalized numbers that are floored by the iOS ARM processor. SkImageDecoder_iOS.mm Remove empty encoder factory. SkTouchGesture.cpp Return early on empty state on touch rather than aborting (crashing) JpegTest.cpp Hal via stackoverflow.com says partial jpegs can be gray as well. skia_test.cpp Remove crash handler call for now to avoid link failure. OverwriteLine.h Remove fancy line overwrite for iOS. Resources.cpp Add interface to set resource directory based on runtime query. BUG=skia:2736 skia:2737 skia:2738 R=reed@google.com, halcanary@google.com, mtklein@google.com, tfarina@chromium.org Author: caryclark@google.com Review URL: https://codereview.chromium.org/373383003
Diffstat (limited to 'tools')
-rw-r--r--tools/OverwriteLine.h2
-rw-r--r--tools/Resources.cpp4
-rw-r--r--tools/Resources.h1
-rw-r--r--tools/flags/SkCommandLineFlags.h4
-rw-r--r--tools/iOSShell.cpp95
-rw-r--r--tools/iOSShell.h37
6 files changed, 143 insertions, 0 deletions
diff --git a/tools/OverwriteLine.h b/tools/OverwriteLine.h
index b76c223ba6..e8f0504b1a 100644
--- a/tools/OverwriteLine.h
+++ b/tools/OverwriteLine.h
@@ -5,6 +5,8 @@
static const char* kSkOverwriteLine =
#ifdef SK_BUILD_FOR_WIN32
"\r \r"
+#elif defined(SK_BUILD_FOR_IOS)
+"\r"
#else
"\r\033[K"
#endif
diff --git a/tools/Resources.cpp b/tools/Resources.cpp
index 756d14ad3a..0efd66b246 100644
--- a/tools/Resources.cpp
+++ b/tools/Resources.cpp
@@ -15,3 +15,7 @@ DEFINE_string2(resourcePath, i, "resources", "Directory with test resources: ima
SkString GetResourcePath(const char* resource) {
return SkOSPath::SkPathJoin(FLAGS_resourcePath[0], resource);
}
+
+void SetResourcePath(const char* resource) {
+ FLAGS_resourcePath.set(0, resource);
+}
diff --git a/tools/Resources.h b/tools/Resources.h
index a10612b78d..485a112231 100644
--- a/tools/Resources.h
+++ b/tools/Resources.h
@@ -11,5 +11,6 @@
#include "SkString.h"
SkString GetResourcePath(const char* resource = "");
+void SetResourcePath(const char* );
#endif // Resources_DEFINED
diff --git a/tools/flags/SkCommandLineFlags.h b/tools/flags/SkCommandLineFlags.h
index 370198b5a2..c6a783de3f 100644
--- a/tools/flags/SkCommandLineFlags.h
+++ b/tools/flags/SkCommandLineFlags.h
@@ -137,6 +137,10 @@ public:
return false;
}
+ void set(int i, const char* str) {
+ fStrings[i].set(str);
+ }
+
private:
void reset() { fStrings.reset(); }
diff --git a/tools/iOSShell.cpp b/tools/iOSShell.cpp
new file mode 100644
index 0000000000..bd709386ec
--- /dev/null
+++ b/tools/iOSShell.cpp
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "iOSShell.h"
+
+#include "Resources.h"
+#include "SkCanvas.h"
+#include "SkCommandLineFlags.h"
+#include "SkGraphics.h"
+#include "SkWindow.h"
+#include "sk_tool_utils.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+static SkView* curr_view(SkWindow* wind) {
+ SkView::F2BIter iter(wind);
+ return iter.next();
+}
+
+ShellWindow::ShellWindow(void* hwnd, int argc, char** argv)
+ : INHERITED(hwnd) {
+ SkCommandLineFlags::Parse(argc, argv);
+}
+
+ShellWindow::~ShellWindow() {
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool ShellWindow::onDispatchClick(int x, int y, Click::State state,
+ void* owner, unsigned modi) {
+ int w = SkScalarRoundToInt(this->width());
+ int h = SkScalarRoundToInt(this->height());
+
+ // check for the resize-box
+ if (w - x < 16 && h - y < 16) {
+ return false; // let the OS handle the click
+ } else {
+ return this->INHERITED::onDispatchClick(x, y, state, owner, modi);
+ }
+}
+
+void ShellWindow::onSizeChange() {
+ this->INHERITED::onSizeChange();
+
+ SkView::F2BIter iter(this);
+ SkView* view = iter.next();
+ view->setSize(this->width(), this->height());
+}
+
+void tool_main(int argc, char *argv[]);
+
+bool set_cmd_line_args(int argc, char *argv[], const char* resourceDir) {
+ for (int index = 0; index < argc; ++index) {
+ if (!strcmp("--test", argv[index])) {
+ SetResourcePath(resourceDir);
+ tool_main(argc - 1, argv);
+ return true;
+ }
+ }
+ return false;
+}
+
+// FIXME: this should be in a header
+SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv);
+SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) {
+ return new ShellWindow(hwnd, argc, argv);
+}
+
+// FIXME: this should be in a header
+void get_preferred_size(int* x, int* y, int* width, int* height);
+void get_preferred_size(int* x, int* y, int* width, int* height) {
+ *x = 10;
+ *y = 50;
+ *width = 640;
+ *height = 480;
+}
+
+// FIXME: this should be in a header
+void application_init();
+void application_init() {
+ SkGraphics::Init();
+ SkEvent::Init();
+}
+
+// FIXME: this should be in a header
+void application_term();
+void application_term() {
+ SkEvent::Term();
+ SkGraphics::Term();
+}
diff --git a/tools/iOSShell.h b/tools/iOSShell.h
new file mode 100644
index 0000000000..7473e0187c
--- /dev/null
+++ b/tools/iOSShell.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2014 Skia
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef iOSShell_DEFINED
+#define iOSShell_DEFINED
+
+#include "SkWindow.h"
+
+class SkCanvas;
+class SkEvent;
+class SkViewFactory;
+
+class ShellWindow : public SkOSWindow {
+public:
+ ShellWindow(void* hwnd, int argc, char** argv);
+ virtual ~ShellWindow();
+
+ virtual SkCanvas* createCanvas() SK_OVERRIDE {
+ SkCanvas* canvas = this->INHERITED::createCanvas();
+ return canvas;
+ }
+
+protected:
+ virtual void onSizeChange() SK_OVERRIDE;
+
+ virtual bool onDispatchClick(int x, int y, Click::State, void* owner,
+ unsigned modi) SK_OVERRIDE;
+
+private:
+ typedef SkOSWindow INHERITED;
+};
+
+#endif