173d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org/* 273d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org * Copyright 2013 Google Inc. 373d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org * 473d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org * Use of this source code is governed by a BSD-style license that can be 573d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org * found in the LICENSE file. 673d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org */ 773d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org 873d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org#include "SkLua.h" 973d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org#include "SkGraphics.h" 1073d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org#include "SkStream.h" 1173d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org#include "SkData.h" 1273d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org#include "SkOSFile.h" 1373d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org 1473d9f1c65114ba638637152605b0f03e871271damike@reedtribe.orgextern "C" { 1573d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org #include "lua.h" 1673d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org #include "lualib.h" 1773d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org #include "lauxlib.h" 1873d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org} 1973d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org 2073d9f1c65114ba638637152605b0f03e871271damike@reedtribe.orgstatic SkData* read_into_data(const char file[]) { 219594da111dc1c36c1912eb61207aaa54c17ea550reed SkData* data = SkData::NewFromFileName(file); 229594da111dc1c36c1912eb61207aaa54c17ea550reed if (!data) { 239594da111dc1c36c1912eb61207aaa54c17ea550reed data = SkData::NewEmpty(); 2473d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org } 259594da111dc1c36c1912eb61207aaa54c17ea550reed return data; 2673d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org} 2773d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org 2873d9f1c65114ba638637152605b0f03e871271damike@reedtribe.orgint tool_main(int argc, char** argv); 2973d9f1c65114ba638637152605b0f03e871271damike@reedtribe.orgint tool_main(int argc, char** argv) { 3073d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org SkAutoGraphics ag; 3173d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org SkLua L; 3273d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org 3373d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org for (int i = 1; i < argc; ++i) { 3473d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org SkData* data = NULL; 3573d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org const void* ptr; 3673d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org size_t len; 3773d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org 3873d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org if (!strcmp(argv[i], "--lua") && i < argc-1) { 3973d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org ptr = argv[i + 1]; 4073d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org len = strlen(argv[i + 1]); 4173d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org i += 1; 4273d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org } else { 4373d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org data = read_into_data(argv[i]); 4473d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org ptr = data->data(); 4573d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org len = data->size(); 4673d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org } 4773d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org if (!L.runCode(ptr, len)) { 4873d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org SkDebugf("failed to load %s\n", argv[i]); 4973d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org exit(-1); 5073d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org } 5173d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org SkSafeUnref(data); 5273d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org } 5373d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org return 0; 5473d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org} 5573d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org 5673d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org#if !defined SK_BUILD_FOR_IOS 5773d9f1c65114ba638637152605b0f03e871271damike@reedtribe.orgint main(int argc, char * const argv[]) { 5873d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org return tool_main(argc, (char**) argv); 5973d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org} 6073d9f1c65114ba638637152605b0f03e871271damike@reedtribe.org#endif 61