candle 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +20 -0
- data/README.md +4 -0
- data/VERSION +1 -0
- data/bin/candle +21 -0
- data/lib/candle.rb +68 -0
- data/lib/candle/command.rb +27 -0
- data/lib/candle/generators/actions.rb +183 -0
- data/lib/candle/generators/blank.rb +127 -0
- data/lib/candle/generators/cli.rb +55 -0
- data/lib/candle/generators/help.rb +47 -0
- data/lib/candle/generators/jam.rb +80 -0
- data/lib/candle/generators/lua/scripts/AppDelegate.lua +36 -0
- data/lib/candle/generators/lua/scripts/tests/init.lua +6 -0
- data/lib/candle/generators/lua/scripts/tests/someTest.lua +12 -0
- data/lib/candle/generators/lua/wax/ProtocolLoader.h +12 -0
- data/lib/candle/generators/lua/wax/bin/hammer +157 -0
- data/lib/candle/generators/lua/wax/bin/update-xibs +131 -0
- data/lib/candle/generators/lua/wax/bin/waxsim +0 -0
- data/lib/candle/generators/lua/wax/lib/build-scripts/compile-stdlib.sh +14 -0
- data/lib/candle/generators/lua/wax/lib/build-scripts/copy-scripts.sh +58 -0
- data/lib/candle/generators/lua/wax/lib/build-scripts/luac.lua +80 -0
- data/lib/candle/generators/lua/wax/lib/extensions/CGAffine/wax_CGTransform.h +12 -0
- data/lib/candle/generators/lua/wax/lib/extensions/CGAffine/wax_CGTransform.m +85 -0
- data/lib/candle/generators/lua/wax/lib/extensions/CGContext/wax_CGContext.h +12 -0
- data/lib/candle/generators/lua/wax/lib/extensions/CGContext/wax_CGContext.m +251 -0
- data/lib/candle/generators/lua/wax/lib/extensions/HTTP/wax_http.h +14 -0
- data/lib/candle/generators/lua/wax/lib/extensions/HTTP/wax_http.m +240 -0
- data/lib/candle/generators/lua/wax/lib/extensions/HTTP/wax_http_connection.h +54 -0
- data/lib/candle/generators/lua/wax/lib/extensions/HTTP/wax_http_connection.m +304 -0
- data/lib/candle/generators/lua/wax/lib/extensions/filesystem/wax_filesystem.h +9 -0
- data/lib/candle/generators/lua/wax/lib/extensions/filesystem/wax_filesystem.m +273 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/Rakefile +10 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/wax_json.c +304 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/wax_json.h +11 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl-1.0.9.tar.gz +0 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/api/yajl_common.h +85 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/api/yajl_gen.h +159 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/api/yajl_parse.h +193 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl.c +159 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_alloc.c +65 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_alloc.h +50 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_buf.c +119 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_buf.h +73 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_bytestack.h +85 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_common.h +85 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_encode.c +188 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_encode.h +50 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_gen.c +322 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_gen.h +159 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_lex.c +737 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_lex.h +133 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_parse.h +193 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_parser.c +448 -0
- data/lib/candle/generators/lua/wax/lib/extensions/json/yajl/yajl_parser.h +82 -0
- data/lib/candle/generators/lua/wax/lib/lua/lapi.c +1087 -0
- data/lib/candle/generators/lua/wax/lib/lua/lapi.h +16 -0
- data/lib/candle/generators/lua/wax/lib/lua/lauxlib.c +652 -0
- data/lib/candle/generators/lua/wax/lib/lua/lauxlib.h +174 -0
- data/lib/candle/generators/lua/wax/lib/lua/lbaselib.c +653 -0
- data/lib/candle/generators/lua/wax/lib/lua/lcode.c +839 -0
- data/lib/candle/generators/lua/wax/lib/lua/lcode.h +76 -0
- data/lib/candle/generators/lua/wax/lib/lua/ldblib.c +397 -0
- data/lib/candle/generators/lua/wax/lib/lua/ldebug.c +638 -0
- data/lib/candle/generators/lua/wax/lib/lua/ldebug.h +33 -0
- data/lib/candle/generators/lua/wax/lib/lua/ldo.c +518 -0
- data/lib/candle/generators/lua/wax/lib/lua/ldo.h +57 -0
- data/lib/candle/generators/lua/wax/lib/lua/ldump.c +164 -0
- data/lib/candle/generators/lua/wax/lib/lua/lfunc.c +174 -0
- data/lib/candle/generators/lua/wax/lib/lua/lfunc.h +34 -0
- data/lib/candle/generators/lua/wax/lib/lua/lgc.c +711 -0
- data/lib/candle/generators/lua/wax/lib/lua/lgc.h +110 -0
- data/lib/candle/generators/lua/wax/lib/lua/linit.c +38 -0
- data/lib/candle/generators/lua/wax/lib/lua/liolib.c +553 -0
- data/lib/candle/generators/lua/wax/lib/lua/llex.c +461 -0
- data/lib/candle/generators/lua/wax/lib/lua/llex.h +81 -0
- data/lib/candle/generators/lua/wax/lib/lua/llimits.h +128 -0
- data/lib/candle/generators/lua/wax/lib/lua/lmathlib.c +263 -0
- data/lib/candle/generators/lua/wax/lib/lua/lmem.c +86 -0
- data/lib/candle/generators/lua/wax/lib/lua/lmem.h +49 -0
- data/lib/candle/generators/lua/wax/lib/lua/loadlib.c +666 -0
- data/lib/candle/generators/lua/wax/lib/lua/lobject.c +214 -0
- data/lib/candle/generators/lua/wax/lib/lua/lobject.h +381 -0
- data/lib/candle/generators/lua/wax/lib/lua/lopcodes.c +102 -0
- data/lib/candle/generators/lua/wax/lib/lua/lopcodes.h +268 -0
- data/lib/candle/generators/lua/wax/lib/lua/loslib.c +243 -0
- data/lib/candle/generators/lua/wax/lib/lua/lparser.c +1339 -0
- data/lib/candle/generators/lua/wax/lib/lua/lparser.h +82 -0
- data/lib/candle/generators/lua/wax/lib/lua/lstate.c +214 -0
- data/lib/candle/generators/lua/wax/lib/lua/lstate.h +169 -0
- data/lib/candle/generators/lua/wax/lib/lua/lstring.c +111 -0
- data/lib/candle/generators/lua/wax/lib/lua/lstring.h +31 -0
- data/lib/candle/generators/lua/wax/lib/lua/lstrlib.c +869 -0
- data/lib/candle/generators/lua/wax/lib/lua/ltable.c +588 -0
- data/lib/candle/generators/lua/wax/lib/lua/ltable.h +40 -0
- data/lib/candle/generators/lua/wax/lib/lua/ltablib.c +287 -0
- data/lib/candle/generators/lua/wax/lib/lua/ltm.c +75 -0
- data/lib/candle/generators/lua/wax/lib/lua/ltm.h +54 -0
- data/lib/candle/generators/lua/wax/lib/lua/lua.h +388 -0
- data/lib/candle/generators/lua/wax/lib/lua/luaconf.h +753 -0
- data/lib/candle/generators/lua/wax/lib/lua/lualib.h +53 -0
- data/lib/candle/generators/lua/wax/lib/lua/lundump.c +227 -0
- data/lib/candle/generators/lua/wax/lib/lua/lundump.h +36 -0
- data/lib/candle/generators/lua/wax/lib/lua/lvm.c +763 -0
- data/lib/candle/generators/lua/wax/lib/lua/lvm.h +36 -0
- data/lib/candle/generators/lua/wax/lib/lua/lzio.c +82 -0
- data/lib/candle/generators/lua/wax/lib/lua/lzio.h +67 -0
- data/lib/candle/generators/lua/wax/lib/lua/print.c +227 -0
- data/lib/candle/generators/lua/wax/lib/project.rake +159 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/enums.lua +396 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/ext/http.lua +43 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/ext/init.lua +4 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/ext/number.lua +21 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/ext/string.lua +97 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/ext/table.lua +165 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/WaxServer.lua +49 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/autoload.lua +10 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/base64.lua +64 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/bit.lua +274 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/cache.lua +73 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/callback.lua +22 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/frame.lua +76 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/init.lua +78 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/pickView.lua +54 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/helpers/time.lua +102 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/init.lua +18 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/luaspec/init.lua +2 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/luaspec/luamock.lua +84 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/luaspec/luaspec.lua +377 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/repl.lua +9 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/structs.lua +11 -0
- data/lib/candle/generators/lua/wax/lib/stdlib/waxClass.lua +42 -0
- data/lib/candle/generators/lua/wax/lib/wax.h +16 -0
- data/lib/candle/generators/lua/wax/lib/wax.m +260 -0
- data/lib/candle/generators/lua/wax/lib/wax_class.h +18 -0
- data/lib/candle/generators/lua/wax/lib/wax_class.m +190 -0
- data/lib/candle/generators/lua/wax/lib/wax_gc.h +20 -0
- data/lib/candle/generators/lua/wax/lib/wax_gc.m +56 -0
- data/lib/candle/generators/lua/wax/lib/wax_helpers.h +102 -0
- data/lib/candle/generators/lua/wax/lib/wax_helpers.m +870 -0
- data/lib/candle/generators/lua/wax/lib/wax_instance.h +34 -0
- data/lib/candle/generators/lua/wax/lib/wax_instance.m +810 -0
- data/lib/candle/generators/lua/wax/lib/wax_server.h +47 -0
- data/lib/candle/generators/lua/wax/lib/wax_server.m +252 -0
- data/lib/candle/generators/lua/wax/lib/wax_stdlib.h +3 -0
- data/lib/candle/generators/lua/wax/lib/wax_struct.h +26 -0
- data/lib/candle/generators/lua/wax/lib/wax_struct.m +335 -0
- data/lib/candle/generators/templates/blank/WaxApplication.xcodeproj/project.pbxproj +836 -0
- data/lib/candle/generators/templates/blank/WaxApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/lib/candle/generators/templates/blank/WaxApplication.xcodeproj/project.xcworkspace/xcuserdata/eiffel.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/lib/candle/generators/templates/blank/WaxApplication.xcodeproj/xcuserdata/eiffel.xcuserdatad/xcschemes/WaxApplication.xcscheme +86 -0
- data/lib/candle/generators/templates/blank/WaxApplication.xcodeproj/xcuserdata/eiffel.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
- data/lib/candle/generators/templates/blank/WaxApplication/Default-568h@2x.png +0 -0
- data/lib/candle/generators/templates/blank/WaxApplication/Default.png +0 -0
- data/lib/candle/generators/templates/blank/WaxApplication/Default@2x.png +0 -0
- data/lib/candle/generators/templates/blank/WaxApplication/ProtocolLoader.h +12 -0
- data/lib/candle/generators/templates/blank/WaxApplication/WaxApplication-Info.plist.tt +38 -0
- data/lib/candle/generators/templates/blank/WaxApplication/WaxApplication-Prefix.pch.tt +14 -0
- data/lib/candle/generators/templates/blank/WaxApplication/en.lproj/InfoPlist.strings +2 -0
- data/lib/candle/generators/templates/blank/WaxApplication/main.m.tt +20 -0
- data/lib/candle/tasks.rb +22 -0
- data/lib/candle/utility.rb +30 -0
- data/lib/candle/version.rb +9 -0
- data/lib/candle/view.rb +48 -0
- metadata +582 -0
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/zsh
|
|
2
|
+
|
|
3
|
+
# Compiles the wax stdlib into one file
|
|
4
|
+
lua "$PROJECT_DIR/wax/lib/build-scripts/luac.lua" wax wax.dat "$PROJECT_DIR/wax/lib/stdlib/" "$PROJECT_DIR/wax/lib/stdlib/init.lua" -L "$PROJECT_DIR/wax/lib/stdlib"/**/*.lua
|
|
5
|
+
|
|
6
|
+
# Dumps the compiled file into a byte array, then it places this into the source code
|
|
7
|
+
cat > "$PROJECT_DIR/wax/lib/wax_stdlib.h" <<EOF
|
|
8
|
+
// DO NOT MODIFY
|
|
9
|
+
// This is auto generated, it contains a compiled version of the wax stdlib
|
|
10
|
+
#define WAX_STDLIB {$(hexdump -v -e '1/1 "%d,"' wax.dat)}
|
|
11
|
+
EOF
|
|
12
|
+
|
|
13
|
+
# clean up
|
|
14
|
+
rm wax.dat
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/bin/zsh
|
|
2
|
+
|
|
3
|
+
# Created by Corey Johnson
|
|
4
|
+
|
|
5
|
+
WAX_SCRIPTS_DIR="scripts"
|
|
6
|
+
SOURCE_SCRIPTS_DIR="$PROJECT_DIR/$WAX_SCRIPTS_DIR"
|
|
7
|
+
DESTINATION_SCRIPTS_DIR="$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/$WAX_SCRIPTS_DIR"
|
|
8
|
+
|
|
9
|
+
# Verify that the user isn't using an old version of Wax
|
|
10
|
+
if [ -d "$PROJECT_DIR/data/scripts" ]; then
|
|
11
|
+
echo "error: Wax 1.0 changes the Lua loadpath."
|
|
12
|
+
echo "error: Wax won't look for Lua scripts in '$PROJECT_DIR/data/scripts' instead, place all your scripts in '$SOURCE_SCRIPTS_DIR'"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# If the user has luac installed, preparse the lua files and make sure they are cool
|
|
17
|
+
if type luac &> /dev/null; then;
|
|
18
|
+
LUAC_OUTPUT=$(luac -p -- "$SOURCE_SCRIPTS_DIR"/**/*.lua 2>&1)
|
|
19
|
+
LUAC_EXIT_VALUE=$?
|
|
20
|
+
if [ $LUAC_EXIT_VALUE != 0 ] ; then
|
|
21
|
+
echo "\n\n--------------------ERROR--------------------"
|
|
22
|
+
echo "Lua Scripts were not compiled correctly!"
|
|
23
|
+
echo "error::: ${LUAC_OUTPUT}"
|
|
24
|
+
echo "--------------------ERROR--------------------\n\n"
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
mkdir -p "$SOURCE_SCRIPTS_DIR"
|
|
30
|
+
rm -rf "$DESTINATION_SCRIPTS_DIR"
|
|
31
|
+
mkdir -p "$DESTINATION_SCRIPTS_DIR"
|
|
32
|
+
|
|
33
|
+
if [ $WAX_COMPILE_SCRIPTS ]; then
|
|
34
|
+
echo "note: Wax is using compiled Lua scripts."
|
|
35
|
+
# This requires that you run a special build of lua. Since snow leopard is 64-bit
|
|
36
|
+
# and iOS is 32-bit, luac files compiled on snow leopard won't work on iOS
|
|
37
|
+
|
|
38
|
+
lua "$PROJECT_DIR/wax/lib/build-scripts/luac.lua" wax wax.dat "$PROJECT_DIR/wax/lib/stdlib/" "$PROJECT_DIR/wax/lib/stdlib/init.lua" -L "$PROJECT_DIR/wax/lib/stdlib"/**/*.lua
|
|
39
|
+
lua "$PROJECT_DIR/wax/lib/build-scripts/luac.lua" "" AppDelegate.dat "$SOURCE_SCRIPTS_DIR/" "$SOURCE_SCRIPTS_DIR/AppDelegate.lua" -L "$SOURCE_SCRIPTS_DIR"/**/*.lua
|
|
40
|
+
mv AppDelegate.dat "$DESTINATION_SCRIPTS_DIR"
|
|
41
|
+
mv wax.dat "$DESTINATION_SCRIPTS_DIR"
|
|
42
|
+
else
|
|
43
|
+
# copy everything in the data dir to the app (doesn't just have to be lua files, can be images, sounds, etc...)
|
|
44
|
+
if [[ -d "$PROJECT_DIR/wax" ]]; then;
|
|
45
|
+
# If we are using the framework, there is no wax dir
|
|
46
|
+
cp -r "$PROJECT_DIR/wax/lib/stdlib" "$DESTINATION_SCRIPTS_DIR/wax"
|
|
47
|
+
fi
|
|
48
|
+
cp -r "$SOURCE_SCRIPTS_DIR/" "$DESTINATION_SCRIPTS_DIR"
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# This forces xcode to load all the Lua scripts (without having to clean
|
|
52
|
+
# the project first"
|
|
53
|
+
THE_FUTURE=$(date -v +1M -j +"%m%d%H%M")
|
|
54
|
+
touch -t $THE_FUTURE "$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH"/*.plist
|
|
55
|
+
|
|
56
|
+
# Note:
|
|
57
|
+
# It's handy to see the env of the build processes, there is some good stuff in there!
|
|
58
|
+
env
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env lua
|
|
2
|
+
|
|
3
|
+
-- usage: lua luac.lua module-name output.file base_dir starting-file.lua [-L [other-files.lua]*]
|
|
4
|
+
--
|
|
5
|
+
-- base_dir: The root for all the lua files. So folder modules can be used
|
|
6
|
+
--
|
|
7
|
+
-- creates a precompiled chunk that preloads all modules listed after
|
|
8
|
+
-- -L and then runs all programs listed before -L.
|
|
9
|
+
--
|
|
10
|
+
-- assumptions:
|
|
11
|
+
-- file xxx.lua contains module xxx
|
|
12
|
+
-- '/' is the directory separator (could have used package.config)
|
|
13
|
+
-- int and size_t take 4 bytes (could have read sizes from header)
|
|
14
|
+
-- does not honor package.path
|
|
15
|
+
--
|
|
16
|
+
-- Luiz Henrique de Figueiredo <lhf@tecgraf.puc-rio.br>
|
|
17
|
+
-- Tue Aug 5 22:57:33 BRT 2008
|
|
18
|
+
-- This code is hereby placed in the public domain.
|
|
19
|
+
|
|
20
|
+
local MARK = "////////"
|
|
21
|
+
local NAME = "luac"
|
|
22
|
+
|
|
23
|
+
local MODULE_NAME = table.remove(arg, 1)
|
|
24
|
+
local OUTPUT = table.remove(arg, 1)
|
|
25
|
+
local BASE_DIR = table.remove(arg, 1)
|
|
26
|
+
NAME = "=("..NAME..")"
|
|
27
|
+
|
|
28
|
+
local argCount = #arg
|
|
29
|
+
local executableIndex = n
|
|
30
|
+
local b
|
|
31
|
+
|
|
32
|
+
for i = 1, argCount do
|
|
33
|
+
if arg[i] == "-L" then executableIndex = i - 1 break end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
if executableIndex + 2 <= argCount then b = "local t=package.preload;\n" else b = "local t;\n" end
|
|
37
|
+
|
|
38
|
+
for i = executableIndex + 2, argCount do
|
|
39
|
+
local requireString = string.gsub(arg[i], "^" .. string.gsub(BASE_DIR, "(%W)", "%%%1"), "")
|
|
40
|
+
requireString = string.gsub(requireString,"^[\./]*(.-)\.lua$", "%1")
|
|
41
|
+
requireString = string.gsub(requireString, "/", ".")
|
|
42
|
+
requireString = string.gsub(requireString, ".init$", "") -- if it is an init file within a directory... ignore it!
|
|
43
|
+
if MODULE_NAME and #MODULE_NAME > 0 then requireString = MODULE_NAME .. "." .. requireString end
|
|
44
|
+
|
|
45
|
+
b = b.."t['"..requireString.."']=function()end;\n"
|
|
46
|
+
arg[i]=string.sub(string.dump(assert(loadfile(arg[i]))), 13) -- string.sub Removes header from file
|
|
47
|
+
end
|
|
48
|
+
b = b.."t='"..MARK.."';\n"
|
|
49
|
+
|
|
50
|
+
for i = 1, executableIndex do
|
|
51
|
+
b = b.."(function()end)();\n"
|
|
52
|
+
arg[i]=string.sub(string.dump(assert(loadfile(arg[i]))), 13) -- string.sub Removes header from file
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
b = string.dump(assert(loadstring(b, NAME)))
|
|
56
|
+
local x, y = string.find(b, MARK)
|
|
57
|
+
-- 64
|
|
58
|
+
--b = string.sub(b, 1, x - 6 - 4).."\0"..string.sub(b, y + 2, y + 5) -- WTF does this do?
|
|
59
|
+
|
|
60
|
+
-- 32
|
|
61
|
+
b = string.sub(b, 1, x - 6).."\0"..string.sub(b, y + 2, y + 5) -- WTF does this do?
|
|
62
|
+
|
|
63
|
+
f = assert(io.open(OUTPUT, "wb"))
|
|
64
|
+
|
|
65
|
+
assert(f:write(b))
|
|
66
|
+
|
|
67
|
+
for i = executableIndex + 2, argCount do
|
|
68
|
+
assert(f:write(arg[i]))
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
for i=1,executableIndex do
|
|
72
|
+
assert(f:write(arg[i]))
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
-- 64
|
|
76
|
+
--assert(f:write(string.rep("\0", 3 * 8)))
|
|
77
|
+
|
|
78
|
+
-- 32
|
|
79
|
+
assert(f:write(string.rep("\0", 12)))
|
|
80
|
+
assert(f:close())
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//
|
|
2
|
+
// wax_CGAffine.h
|
|
3
|
+
// EmpireState
|
|
4
|
+
//
|
|
5
|
+
// Created by Corey Johnson on 10/6/09.
|
|
6
|
+
// Copyright 2009 Probably Interactive. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import "lua.h"
|
|
11
|
+
|
|
12
|
+
int luaopen_wax_CGTransform(lua_State *L);
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
//
|
|
2
|
+
// wax_CGAffine.m
|
|
3
|
+
// EmpireState
|
|
4
|
+
//
|
|
5
|
+
// Created by Corey Johnson on 10/6/09.
|
|
6
|
+
// Copyright 2009 Probably Interactive. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "wax_CGTransform.h"
|
|
10
|
+
|
|
11
|
+
#import "wax_instance.h"
|
|
12
|
+
#import "wax_helpers.h"
|
|
13
|
+
|
|
14
|
+
#import "lua.h"
|
|
15
|
+
#import "lauxlib.h"
|
|
16
|
+
|
|
17
|
+
#define METATABLE_NAME "wax.CGTransform"
|
|
18
|
+
|
|
19
|
+
static int identity(lua_State *L) {
|
|
20
|
+
CGAffineTransform identity = CGAffineTransformIdentity;
|
|
21
|
+
wax_fromObjc(L, @encode(CGAffineTransform), &identity);
|
|
22
|
+
|
|
23
|
+
return 1;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// wax.CGTransform.scale(transform, 2, 2) -- Returns new transform
|
|
28
|
+
static int scale(lua_State *L) {
|
|
29
|
+
void *value = wax_copyToObjc(L, @encode(CGAffineTransform), 1, nil);
|
|
30
|
+
CGAffineTransform transform = *(CGAffineTransform *)value;
|
|
31
|
+
free(value);
|
|
32
|
+
transform = CGAffineTransformScale(transform, luaL_checknumber(L, 2), luaL_checknumber(L, 3));
|
|
33
|
+
wax_fromObjc(L, @encode(CGAffineTransform), &transform);
|
|
34
|
+
|
|
35
|
+
return 1;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// wax.CGTransform.translate(transform, 2, 2) -- Returns new transform
|
|
39
|
+
static int translate(lua_State *L) {
|
|
40
|
+
void *value = wax_copyToObjc(L, @encode(CGAffineTransform), 1, nil);
|
|
41
|
+
CGAffineTransform transform = *(CGAffineTransform *)value;
|
|
42
|
+
free(value);
|
|
43
|
+
transform = CGAffineTransformTranslate(transform, luaL_checknumber(L, 2), luaL_checknumber(L, 3));
|
|
44
|
+
wax_fromObjc(L, @encode(CGAffineTransform), &transform);
|
|
45
|
+
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// wax.CGTransform.rotate(transform, angle) -- Returns new transform
|
|
50
|
+
static int rotate(lua_State *L) {
|
|
51
|
+
void *value = wax_copyToObjc(L, @encode(CGAffineTransform), 1, nil);
|
|
52
|
+
CGAffineTransform transform = *(CGAffineTransform *)value;
|
|
53
|
+
free(value);
|
|
54
|
+
transform = CGAffineTransformRotate(transform, luaL_checknumber(L, 2));
|
|
55
|
+
wax_fromObjc(L, @encode(CGAffineTransform), &transform);
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
return 1;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static const struct luaL_Reg metaFunctions[] = {
|
|
63
|
+
{NULL, NULL}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
static const struct luaL_Reg functions[] = {
|
|
67
|
+
{"identity", identity},
|
|
68
|
+
{"scale", scale},
|
|
69
|
+
{"translate", translate},
|
|
70
|
+
{"rotate", rotate},
|
|
71
|
+
|
|
72
|
+
{NULL, NULL}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
int luaopen_wax_CGTransform(lua_State *L) {
|
|
76
|
+
BEGIN_STACK_MODIFY(L);
|
|
77
|
+
|
|
78
|
+
luaL_newmetatable(L, METATABLE_NAME);
|
|
79
|
+
luaL_register(L, NULL, metaFunctions);
|
|
80
|
+
luaL_register(L, METATABLE_NAME, functions);
|
|
81
|
+
|
|
82
|
+
END_STACK_MODIFY(L, 0)
|
|
83
|
+
|
|
84
|
+
return 1;
|
|
85
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//
|
|
2
|
+
// WaxCGContext.h
|
|
3
|
+
// EmpireState
|
|
4
|
+
//
|
|
5
|
+
// Created by Corey Johnson on 10/5/09.
|
|
6
|
+
// Copyright 2009 Probably Interactive. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import "lua.h"
|
|
11
|
+
|
|
12
|
+
int luaopen_wax_CGContext(lua_State *L);
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
//
|
|
2
|
+
// WaxCGContext.m
|
|
3
|
+
// EmpireState
|
|
4
|
+
//
|
|
5
|
+
// Created by Corey Johnson on 10/5/09.
|
|
6
|
+
// Copyright 2009 Probably Interactive. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "wax_CGContext.h"
|
|
10
|
+
|
|
11
|
+
#import "wax_instance.h"
|
|
12
|
+
#import "wax_helpers.h"
|
|
13
|
+
|
|
14
|
+
#import "lua.h"
|
|
15
|
+
#import "lauxlib.h"
|
|
16
|
+
|
|
17
|
+
#define METATABLE_NAME "wax.CGContext"
|
|
18
|
+
|
|
19
|
+
static int currentContext(lua_State *L) {
|
|
20
|
+
CGContextRef context = UIGraphicsGetCurrentContext();
|
|
21
|
+
|
|
22
|
+
wax_fromObjc(L, @encode(CGContextRef), &context);
|
|
23
|
+
if (lua_gettop(L) > 1 && lua_isfunction(L, 1)) { // Function!
|
|
24
|
+
CGContextSaveGState(context);
|
|
25
|
+
lua_call(L, 1, 1);
|
|
26
|
+
CGContextRestoreGState(context);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static int imageContext(lua_State *L) {
|
|
33
|
+
int startTop = lua_gettop(L);
|
|
34
|
+
int width = luaL_checknumber(L, 1);
|
|
35
|
+
int height = luaL_checknumber(L, 2);
|
|
36
|
+
|
|
37
|
+
UIGraphicsBeginImageContext(CGSizeMake(width, height));
|
|
38
|
+
lua_call(L, 0, LUA_MULTRET);
|
|
39
|
+
UIGraphicsEndImageContext();
|
|
40
|
+
|
|
41
|
+
int nresults = lua_gettop(L) - startTop + 1; // Add one because the function is popped
|
|
42
|
+
|
|
43
|
+
return nresults;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static int imageFromContext(lua_State *L) {
|
|
47
|
+
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
|
48
|
+
wax_instance_create(L, image, NO);
|
|
49
|
+
|
|
50
|
+
return 1;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
static int translate(lua_State *L) {
|
|
54
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
55
|
+
CGFloat x = lua_tonumber(L, 2);
|
|
56
|
+
CGFloat y = lua_tonumber(L, 3);
|
|
57
|
+
|
|
58
|
+
CGContextTranslateCTM(c, x, y);
|
|
59
|
+
|
|
60
|
+
return 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static int setAlpha(lua_State *L) {
|
|
64
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
65
|
+
double alpha = lua_tonumber(L, 2);
|
|
66
|
+
CGContextSetAlpha(c, alpha);
|
|
67
|
+
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Can take percent values (0 - 1) or a UIColor
|
|
72
|
+
// setFillColor(context, r, g, b [, a])
|
|
73
|
+
// setFillColor(context, color)
|
|
74
|
+
static int setFillColor(lua_State *L) {
|
|
75
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
76
|
+
|
|
77
|
+
if (lua_gettop(L) >= 4) {
|
|
78
|
+
double r = luaL_checknumber(L, 2);
|
|
79
|
+
double g = luaL_checknumber(L, 3);
|
|
80
|
+
double b = luaL_checknumber(L, 4);
|
|
81
|
+
double a = lua_isnoneornil(L, 5) ? 1 : luaL_checknumber(L, 5);
|
|
82
|
+
CGContextSetRGBFillColor(c, r, g, b, a);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
UIColor **color = wax_copyToObjc(L, @encode(UIColor *), 2, nil);
|
|
86
|
+
CGContextSetFillColorWithColor(c, [*color CGColor]);
|
|
87
|
+
free(color);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Can take percent values (0 - 1) or a UIColor
|
|
94
|
+
// setStrokeColor(context, r, g, b [, a])
|
|
95
|
+
// setStrokeColor(context, color)
|
|
96
|
+
static int setStrokeColor(lua_State *L) {
|
|
97
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
98
|
+
|
|
99
|
+
if (lua_gettop(L) >= 4) {
|
|
100
|
+
double r = luaL_checknumber(L, 2);
|
|
101
|
+
double g = luaL_checknumber(L, 3);
|
|
102
|
+
double b = luaL_checknumber(L, 4);
|
|
103
|
+
double a = lua_isnoneornil(L, 5) ? 1 : luaL_checknumber(L, 5);
|
|
104
|
+
CGContextSetRGBStrokeColor(c, r, g, b, a);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
UIColor **color = wax_copyToObjc(L, @encode(id), 2, nil);
|
|
108
|
+
CGContextSetStrokeColorWithColor(c, [*color CGColor]);
|
|
109
|
+
free(color);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// fillRect(context, CGRect(0,0,10,10))
|
|
116
|
+
static int fillRect(lua_State *L) {
|
|
117
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
118
|
+
CGRect *rect = wax_copyToObjc(L, @encode(CGRect), 2, nil);
|
|
119
|
+
CGContextFillRect(c, *rect);
|
|
120
|
+
free(rect);
|
|
121
|
+
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// fillRoundedRect(context, CGRect(0,0,10,10), 10)
|
|
126
|
+
static int fillRoundedRect(lua_State *L) {
|
|
127
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
128
|
+
CGRect *rect = wax_copyToObjc(L, @encode(CGRect), 2, nil);
|
|
129
|
+
CGFloat radius = luaL_checknumber(L, 3);
|
|
130
|
+
|
|
131
|
+
CGFloat width = CGRectGetWidth(*rect);
|
|
132
|
+
CGFloat height = CGRectGetHeight(*rect);
|
|
133
|
+
|
|
134
|
+
// Make sure corner radius isn't larger than half the shorter side
|
|
135
|
+
if (radius > width/2.0) {
|
|
136
|
+
radius = width/2.0;
|
|
137
|
+
}
|
|
138
|
+
if (radius > height/2.0) {
|
|
139
|
+
radius = height/2.0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
CGFloat minx = CGRectGetMinX(*rect);
|
|
143
|
+
CGFloat midx = CGRectGetMidX(*rect);
|
|
144
|
+
CGFloat maxx = CGRectGetMaxX(*rect);
|
|
145
|
+
CGFloat miny = CGRectGetMinY(*rect);
|
|
146
|
+
CGFloat midy = CGRectGetMidY(*rect);
|
|
147
|
+
CGFloat maxy = CGRectGetMaxY(*rect);
|
|
148
|
+
CGContextMoveToPoint(c, minx, midy);
|
|
149
|
+
CGContextAddArcToPoint(c, minx, miny, midx, miny, radius);
|
|
150
|
+
CGContextAddArcToPoint(c, maxx, miny, maxx, midy, radius);
|
|
151
|
+
CGContextAddArcToPoint(c, maxx, maxy, midx, maxy, radius);
|
|
152
|
+
CGContextAddArcToPoint(c, minx, maxy, minx, midy, radius);
|
|
153
|
+
CGContextClosePath(c);
|
|
154
|
+
CGContextDrawPath(c, kCGPathFill);
|
|
155
|
+
|
|
156
|
+
free(rect);
|
|
157
|
+
|
|
158
|
+
return 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// fillPath(context, pointArray)
|
|
162
|
+
static int fillPath(lua_State *L) {
|
|
163
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
164
|
+
CGContextBeginPath(c);
|
|
165
|
+
|
|
166
|
+
int indexCount = lua_objlen(L, 2);
|
|
167
|
+
if (indexCount % 2 != 0) luaL_error(L, "Requires an even number of indexes for points.");
|
|
168
|
+
|
|
169
|
+
int pointCount = indexCount / 2;
|
|
170
|
+
CGPoint *points = calloc(pointCount, sizeof(CGPoint));
|
|
171
|
+
|
|
172
|
+
for (int i = 0; i < pointCount; i++) {
|
|
173
|
+
int arrayIndex = (i * 2) + 1;
|
|
174
|
+
lua_rawgeti(L, 2, arrayIndex);
|
|
175
|
+
lua_rawgeti(L, 2, arrayIndex + 1);
|
|
176
|
+
points[i].x = luaL_checknumber(L, -2);
|
|
177
|
+
points[i].y = luaL_checknumber(L, -1);
|
|
178
|
+
lua_pop(L, 2);
|
|
179
|
+
}
|
|
180
|
+
CGContextAddLines(c, points, pointCount);
|
|
181
|
+
CGContextDrawPath(c, kCGPathFill);
|
|
182
|
+
|
|
183
|
+
free(points);
|
|
184
|
+
|
|
185
|
+
return 0;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// drawLinearGradient(context, startPoint, endPoint, colors, locations)
|
|
189
|
+
// FOR SOME REASON THIS DOESN'T WORK WITH GRAY/BLACK COLORS... WTF!
|
|
190
|
+
static int drawLinearGradient(lua_State *L) {
|
|
191
|
+
CGContextRef c = (CGContextRef)lua_topointer(L, 1);
|
|
192
|
+
CGPoint *start = wax_copyToObjc(L, @encode(CGPoint), 2, nil);
|
|
193
|
+
CGPoint *end = wax_copyToObjc(L, @encode(CGPoint), 3, nil);
|
|
194
|
+
NSArray *colors = wax_copyToObjc(L, @encode(NSArray *), 4, nil);
|
|
195
|
+
|
|
196
|
+
CGFloat *locations = malloc(lua_objlen(L, 5) * sizeof(CGFloat));
|
|
197
|
+
|
|
198
|
+
for (int i = 0; i < lua_objlen(L, 5); i++) {
|
|
199
|
+
lua_rawgeti(L, 5, i + 1);
|
|
200
|
+
locations[i] = luaL_checknumber(L, -1);
|
|
201
|
+
lua_pop(L, 1);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
CGGradientRef gradient = CGGradientCreateWithColors(nil, *(CFArrayRef *)colors, nil);
|
|
206
|
+
|
|
207
|
+
CGContextDrawLinearGradient(c, gradient, *start, *end, 0);
|
|
208
|
+
|
|
209
|
+
free(start);
|
|
210
|
+
free(end);
|
|
211
|
+
free(colors);
|
|
212
|
+
free(locations);
|
|
213
|
+
CGGradientRelease(gradient);
|
|
214
|
+
|
|
215
|
+
return 0;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
static const struct luaL_Reg metaFunctions[] = {
|
|
219
|
+
{NULL, NULL}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
static const struct luaL_Reg functions[] = {
|
|
223
|
+
{"currentContext", currentContext},
|
|
224
|
+
{"imageContext", imageContext},
|
|
225
|
+
{"imageFromContext", imageFromContext},
|
|
226
|
+
|
|
227
|
+
{"translate", translate},
|
|
228
|
+
|
|
229
|
+
{"setFillColor", setFillColor},
|
|
230
|
+
{"setStrokeColor", setStrokeColor},
|
|
231
|
+
{"setAlpha", setAlpha},
|
|
232
|
+
|
|
233
|
+
{"fillRect", fillRect},
|
|
234
|
+
{"fillRoundedRect", fillRoundedRect},
|
|
235
|
+
{"fillPath", fillPath},
|
|
236
|
+
{"drawLinearGradient", drawLinearGradient},
|
|
237
|
+
|
|
238
|
+
{NULL, NULL}
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
int luaopen_wax_CGContext(lua_State *L) {
|
|
242
|
+
BEGIN_STACK_MODIFY(L);
|
|
243
|
+
|
|
244
|
+
luaL_newmetatable(L, METATABLE_NAME);
|
|
245
|
+
luaL_register(L, NULL, metaFunctions);
|
|
246
|
+
luaL_register(L, METATABLE_NAME, functions);
|
|
247
|
+
|
|
248
|
+
END_STACK_MODIFY(L, 0)
|
|
249
|
+
|
|
250
|
+
return 1;
|
|
251
|
+
}
|