diff options
author | caryclark <caryclark@google.com> | 2014-07-11 12:14:51 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-07-11 12:14:51 -0700 |
commit | 936b73424f7393994be832376287da988a52b993 (patch) | |
tree | 593058a39c92a62ab13de099542884aa307f6848 /tools | |
parent | bc9205be0a1094e312da098348601398c210dc5a (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.h | 2 | ||||
-rw-r--r-- | tools/Resources.cpp | 4 | ||||
-rw-r--r-- | tools/Resources.h | 1 | ||||
-rw-r--r-- | tools/flags/SkCommandLineFlags.h | 4 | ||||
-rw-r--r-- | tools/iOSShell.cpp | 95 | ||||
-rw-r--r-- | tools/iOSShell.h | 37 |
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 |