more paint methods to lua

git-svn-id: http://skia.googlecode.com/svn/trunk@9483 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/lua/lua_app.cpp b/tools/lua/lua_app.cpp
new file mode 100644
index 0000000..50b1352
--- /dev/null
+++ b/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