summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/tools/lua/lua_app.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/tools/lua/lua_app.cpp')
-rw-r--r--chromium/third_party/skia/tools/lua/lua_app.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/chromium/third_party/skia/tools/lua/lua_app.cpp b/chromium/third_party/skia/tools/lua/lua_app.cpp
new file mode 100644
index 00000000000..50b1352c2dc
--- /dev/null
+++ b/chromium/third_party/skia/tools/lua/lua_app.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkLua.h"
+#include "SkGraphics.h"
+#include "SkStream.h"
+#include "SkData.h"
+#include "SkOSFile.h"
+
+extern "C" {
+ #include "lua.h"
+ #include "lualib.h"
+ #include "lauxlib.h"
+}
+
+static SkData* read_into_data(const char file[]) {
+ SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(file));
+ if (!stream.get()) {
+ return SkData::NewEmpty();
+ }
+ size_t len = stream->getLength();
+ void* buffer = sk_malloc_throw(len);
+ stream->read(buffer, len);
+ return SkData::NewFromMalloc(buffer, len);
+}
+
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
+ SkAutoGraphics ag;
+ SkLua L;
+
+ for (int i = 1; i < argc; ++i) {
+ SkData* data = NULL;
+ const void* ptr;
+ size_t len;
+
+ if (!strcmp(argv[i], "--lua") && i < argc-1) {
+ ptr = argv[i + 1];
+ len = strlen(argv[i + 1]);
+ i += 1;
+ } else {
+ data = read_into_data(argv[i]);
+ ptr = data->data();
+ len = data->size();
+ }
+ if (!L.runCode(ptr, len)) {
+ SkDebugf("failed to load %s\n", argv[i]);
+ exit(-1);
+ }
+ SkSafeUnref(data);
+ }
+ return 0;
+}
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+ return tool_main(argc, (char**) argv);
+}
+#endif