diff --git a/framework/3rd/termbox_next/license b/framework/3rd/termbox_next/license deleted file mode 100755 index e9bb4ea..0000000 --- a/framework/3rd/termbox_next/license +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2010-2013 nsf - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/framework/lualib-src/Makefile b/framework/lualib-src/Makefile index 7a53071..1700673 100644 --- a/framework/lualib-src/Makefile +++ b/framework/lualib-src/Makefile @@ -21,6 +21,9 @@ SHIFTTIMER_SO = $(LUA_CLIB_PATH)/shiftimer.so CLUA_SO = $(LUA_CLIB_PATH)/clua.so AOI_SO = $(LUA_CLIB_PATH)/aoi.so ECS_SO = $(LUA_CLIB_PATH)/ecs.so +LUASOCKET_SO = $(LUA_CLIB_PATH)/socket.so +TERMFX_SO = $(LUA_CLIB_PATH)/termfx.so +RC4_SO = $(LUA_CLIB_PATH)/rc4.so ##################################################### all: $(LFS_SO) \ @@ -31,6 +34,9 @@ all: $(LFS_SO) \ $(SHIFTTIMER_SO) \ $(AOI_SO) \ $(ECS_SO) \ + $(LUASOCKET_SO) \ + $(TERMFX_SO) \ + $(RC4_SO) \ $(CLUA_SO) ##################################################### @@ -61,11 +67,25 @@ $(CLUA_SO): $(ECS_SO): cd lua-ecs && $(MAKE) PLAT=$(PLAT) -##################################################### +$(RC4_SO): + cd lua-rc4 && $(MAKE) PLAT=$(PLAT) + +$(TERMFX_SO): + cd lua-termfx && $(MAKE) + cp -f lua-termfx/termfx.so $@ + +$(LUASOCKET_SO): + cd luasocket && $(MAKE) DEBUG=DEBUG PLAT=$(PLAT) LUAINC_$(PLAT)=$(SKYNET_ROOT)/3rd/lua/ CDIR_$(PLAT)=$(SKYNET_ROOT)/3rd/lua/ LDIR_$(PLAT)=$(SKYNET_ROOT)/3rd/lua/ + cp -f luasocket/src/socket-3.0-rc1.so $@ +##################################################### cleanall: rm -f $(LUA_CLIB_PATH)/*.so && \ rm -rf $(LUA_CLIB_PATH)/*.dSYM && \ - rm -f $(LUA_CLIB_PATH)/*.o + rm -f $(LUA_CLIB_PATH)/*.o && \ + cd lua-termfx && $(MAKE) clean && \ + cd .. && \ + cd luasocket && $(MAKE) clean && \ + cd ../../ .PHONY: all cleanall diff --git a/framework/lualib-src/lua-rc4/.gitignore b/framework/lualib-src/lua-rc4/.gitignore deleted file mode 100644 index 9d22eb4..0000000 --- a/framework/lualib-src/lua-rc4/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.o -*.so diff --git a/framework/lualib-src/lua-rc4/Makefile b/framework/lualib-src/lua-rc4/Makefile index f670b43..8cae626 100755 --- a/framework/lualib-src/lua-rc4/Makefile +++ b/framework/lualib-src/lua-rc4/Makefile @@ -1,26 +1,30 @@ -PROJECT = rc4 -SRC = . -INC = -I. -I/usr/local/include - -CC = gcc -CC_FLAGS = -O2 -fPIC $(INC) -Wall -Wextra -c +SKYNET_ROOT ?= ../../skynet +include $(SKYNET_ROOT)/platform.mk -SRC_C = $(foreach dir, $(SRC), $(wildcard $(dir)/*.c)) -OBJ_C = $(patsubst %.c, %.o, $(SRC_C)) -OBJ = $(OBJ_C) +PLAT ?= none -.PHONY : all -all: $(PROJECT).so +TARGET = ../../luaclib/rc4.so -$(PROJECT).so: $(OBJ) - ld -shared $(OBJ) -o $(PROJECT).so -ifdef OUTPUT - cp -f $(PROJECT).so $(OUTPUT) +ifeq ($(PLAT), macosx) + CFLAGS = -g -O2 -dynamiclib -Wl,-undefined,dynamic_lookup +else +ifeq ($(PLAT), linux) + CFLAGS = -g -O2 -shared -fPIC endif +endif + +LUA_LIB ?= $(SKYNET_ROOT)/3rd/lua/ +LUA_INC ?= $(SKYNET_ROOT)/3rd/lua/ +SKYNET_SRC ?= $(SKYNET_ROOT)/skynet-src + +SRC = . + +.PHONY: all clean + +all: $(TARGET) -$(OBJ_C) : %.o : %.c - $(CC) $(CC_FLAGS) -o $@ $< +$(TARGET): $(foreach dir, $(SRC), $(wildcard $(dir)/*.c)) + $(CC) $(CFLAGS) $(SHARED) -I$(LUA_INC) -I$(SKYNET_SRC) $^ -o $@ -.PHONY : clean clean: - rm -f $(PROJECT).so $(OBJ) + rm -f *.o $(TARGET) \ No newline at end of file diff --git a/framework/lualib-src/lua-rc4/luabinding.c b/framework/lualib-src/lua-rc4/lua-rc4.c similarity index 100% rename from framework/lualib-src/lua-rc4/luabinding.c rename to framework/lualib-src/lua-rc4/lua-rc4.c diff --git a/framework/lualib-src/lua-termfx/Makefile b/framework/lualib-src/lua-termfx/Makefile index a919216..694258c 100755 --- a/framework/lualib-src/lua-termfx/Makefile +++ b/framework/lualib-src/lua-termfx/Makefile @@ -3,14 +3,15 @@ # Gunnar Zötl , 2014-2015. # Released under the terms of the MIT license. See file LICENSE for details. -TERMBOX = ../../3rd//termbox_next +TERMBOX = ../../3rd/termbox_next +SKYNET_ROOT ?= ../../skynet # try some automatic discovery. If that does not work for you, just set # the following values manually. OS = $(shell uname -s) LUAVERSION = $(shell lua -e "print(string.match(_VERSION, '%d+%.%d+'))") -LUA_BINDIR = $(shell dirname `which lua`) -LUAROOT = $(shell dirname $(LUA_BINDIR)) +# LUA_BINDIR = $(shell dirname `which lua`) +# LUAROOT = $(shell dirname $(LUA_BINDIR)) OBJS = termfx.o termfx_color.o tbutils.o @@ -18,8 +19,9 @@ TARGET = termfx.so CC = gcc CFLAGS = -fPIC -Wall -LUA_INCDIR = $(LUAROOT)/include -LUA_LIBDIR = $(LUAROOT)/lib + +LUA_INCDIR ?= $(SKYNET_ROOT)/3rd/lua/ +LUA_LIBDIR ?= $(SKYNET_ROOT)/3rd/lua/ # OS specialities ifeq ($(OS),Darwin) diff --git a/framework/lualib-src/testluaclib.lua b/framework/lualib-src/testluaclib.lua index 2475bb4..5e4711e 100644 --- a/framework/lualib-src/testluaclib.lua +++ b/framework/lualib-src/testluaclib.lua @@ -20,4 +20,14 @@ local profile = require "profile.c" print("profile", profile) local clua = require "clua" -print("clua", clua) \ No newline at end of file +print("clua", clua) + +local rc4 = require "rc4.c" +print("rc4", rc4) + +local termfx = require "termfx" +print("termfx", termfx) + +local socket = require "socket" +print("socket", socket) + diff --git a/framework/lualib/3rd/termfx/blittest.lua b/framework/lualib/3rd/termfx/blittest.lua index 259ccc1..6c21dd2 100755 --- a/framework/lualib/3rd/termfx/blittest.lua +++ b/framework/lualib/3rd/termfx/blittest.lua @@ -1,81 +1,93 @@ -- sample for termfx -- Gunnar Zötl , 2014-2015 -- Released under the terms of the MIT license. See file LICENSE for details. - tfx = require "termfx" tfx.init() function makespr(s, fg, bg) - local c = "-:+=%ZXH#" - local spr = tfx.newbuffer(s, s/2) - spr:attributes(fg, bg) - for y=1, s/2 do - for x=1, s do - local lx, ly = (x-0.5)/s, (2*y-1)/s - local v = math.floor((math.sin(lx*math.pi) + math.sin(ly*math.pi)) / 2 * #c) - local ch = string.sub(c, v, v) - spr:setcell(x, y, ch) - end - end - return spr + local c = "-:+=%ZXH#" + local spr = tfx.newbuffer(s, s / 2) + spr:attributes(fg, bg) + for y = 1, s / 2 do + for x = 1, s do + local lx, ly = (x - 0.5) / s, (2 * y - 1) / s + local v = math.floor((math.sin(lx * math.pi) + math.sin(ly * math.pi)) / 2 * #c) + local ch = string.sub(c, v, v) + spr:setcell(x, y, ch) + end + end + return spr end tfx.outputmode(tfx.output.NORMAL) ok, err = pcall(function() - local sprites = {} - local blit2screen = true - - for i=1, 5 do - sprites[i] = makespr(2^(i+2), i+1, tfx.color.BLACK) - end - - local snum = 1 - local spr = sprites[snum] - local sw, sh = spr:width(), spr:height() - local x, y = 1-sw, 1-sh - local xo, yo = 1, 1 - local fw, fh = tfx.width(), tfx.height() - local target = tfx.newbuffer(fw - 2, fh - 2) - local w, h = target:width(), target:height() + local sprites = {} + local blit2screen = true + + for i = 1, 5 do + sprites[i] = makespr(2 ^ (i + 2), i + 1, tfx.color.BLACK) + end + + local snum = 1 + local spr = sprites[snum] + local sw, sh = spr:width(), spr:height() + local x, y = 1 - sw, 1 - sh + local xo, yo = 1, 1 + local fw, fh = tfx.width(), tfx.height() + local target = tfx.newbuffer(fw - 2, fh - 2) + local w, h = target:width(), target:height() + + repeat - repeat - - if blit2screen then - tfx.clear(tfx.color.WHITE, tfx.color.BLACK) - tfx.blit(x, y, spr) - else - tfx.clear(tfx.color.WHITE, tfx.color.RED) - target:clear(tfx.color.WHITE, tfx.color.BLACK) - target:blit(x, y, spr) - tfx.blit(2, 2, target) - end + if blit2screen then + tfx.clear(tfx.color.WHITE, tfx.color.BLACK) + tfx.blit(x, y, spr) + else + tfx.clear(tfx.color.WHITE, tfx.color.RED) + target:clear(tfx.color.WHITE, tfx.color.BLACK) + target:blit(x, y, spr) + tfx.blit(2, 2, target) + end - x = x + xo - if x > w or x < 1-sw then xo = -xo end - y = y + yo - if y > h or y < 1-sh then yo = -yo end + x = x + xo + if x > w or x < 1 - sw then + xo = -xo + end + y = y + yo + if y > h or y < 1 - sh then + yo = -yo + end - tfx.printat(1, tfx.height(), "print 1.."..#sprites.." for sprite size, t to toggle blit to screen or buffer, q to quit") - tfx.printat(1, 1, "Current size: "..snum.." ("..spr:width().."x"..spr:height()..")") + tfx.printat(1, tfx.height(), + "print 1.." .. #sprites .. " for sprite size, t to toggle blit to screen or buffer, q to quit") + tfx.printat(1, 1, "Current size: " .. snum .. " (" .. spr:width() .. "x" .. spr:height() .. ")") - tfx.present() - evt = tfx.pollevent(333) - snum = evt and tonumber(evt.char) or snum - if snum >= 1 and snum <= #sprites then - spr = sprites[snum] - sw, sh = spr:width(), spr:height() - if x < 1-sw then x = 1-sw xo = 1 end - if y < 1-sh then y = 1-sh yo = 1 end - end - - if evt and evt.char == 't' then - blit2screen = not blit2screen - end - - until evt and evt.type == "key" and evt.char == "q" + tfx.present() + evt = tfx.pollevent(333) + snum = evt and tonumber(evt.char) or snum + if snum >= 1 and snum <= #sprites then + spr = sprites[snum] + sw, sh = spr:width(), spr:height() + if x < 1 - sw then + x = 1 - sw + xo = 1 + end + if y < 1 - sh then + y = 1 - sh + yo = 1 + end + end + + if evt and evt.char == 't' then + blit2screen = not blit2screen + end + + until evt and evt.type == "key" and evt.char == "q" end) tfx.shutdown() -if not ok then print("Error: "..err) end +if not ok then + print("Error: " .. err) +end diff --git a/framework/lualib/3rd/termfx/screenshot.lua b/framework/lualib/3rd/termfx/screenshot.lua index 819c8d5..fb34191 100755 --- a/framework/lualib/3rd/termfx/screenshot.lua +++ b/framework/lualib/3rd/termfx/screenshot.lua @@ -1,7 +1,6 @@ -- sample for termfx -- Gunnar Zötl , 2014-2015 -- Released under the terms of the MIT license. See file LICENSE for details. - --[[ screenshot.lua a simple screenshot facility for termfx programs, outputs html in a string. Cell colors and attributes are preserved. Note, this only @@ -21,68 +20,71 @@ html = screenshot(buf) -- then write it to a file, surrounded by a html template as necessary. ---]] - -local tfx = require "termfx" +--]] local tfx = require "termfx" local function to_html(scr) - local fg, bg - local res = { "
" }
-	for y=1, scr.h do
-		for x=1, scr.w do
-			local cel = scr[y][x]
-			if fg ~= cel.fg or bg ~= cel.bg then
-				if fg then
-					res[#res+1] = ""
-				end
-				local fgcol, fgattr = tfx.colorinfo(cel.fg % 256), math.floor(cel.fg / 256)
-				local bgcol = tfx.colorinfo(cel.bg % 256)
-				local style, weight = "", ""
-				if fgattr % 2 == 1 then
-					weight = "; font-weight: bold"
-				end
-				fgattr = fgattr / 2
-				if fgattr % 2 == 1 then
-					style = "; text-decoration: underline"
-				end
-				fgattr = fgattr / 2
-				if fgattr % 2 == 1 then
-					fgcol, bgcol = bgcol, fgcol
-				end
+    local fg, bg
+    local res = {"
"}
+    for y = 1, scr.h do
+        for x = 1, scr.w do
+            local cel = scr[y][x]
+            if fg ~= cel.fg or bg ~= cel.bg then
+                if fg then
+                    res[#res + 1] = ""
+                end
+                local fgcol, fgattr = tfx.colorinfo(cel.fg % 256), math.floor(cel.fg / 256)
+                local bgcol = tfx.colorinfo(cel.bg % 256)
+                local style, weight = "", ""
+                if fgattr % 2 == 1 then
+                    weight = "; font-weight: bold"
+                end
+                fgattr = fgattr / 2
+                if fgattr % 2 == 1 then
+                    style = "; text-decoration: underline"
+                end
+                fgattr = fgattr / 2
+                if fgattr % 2 == 1 then
+                    fgcol, bgcol = bgcol, fgcol
+                end
 
-				res[#res+1] = string.format(''
-				fg = cel.fg
-				bg = cel.bg
-			end
-			res[#res+1] = string.format('%c', cel.ch)
-		end
-		res[#res+1] = "
" - end - res[#res+1] = "
" - return table.concat(res) + res[#res + 1] = string.format('' + fg = cel.fg + bg = cel.bg + end + res[#res + 1] = string.format('%c', cel.ch) + end + res[#res + 1] = "
" + end + res[#res + 1] = "
" + return table.concat(res) end local function screenshot(buf) - local w, h, getcell - if buf then - w, h = buf:size() - getcell = function(x, y) return buf:getcell(x, y) end - else - w, h = tfx.size() - getcell = tfx.getcell - end + local w, h, getcell + if buf then + w, h = buf:size() + getcell = function(x, y) + return buf:getcell(x, y) + end + else + w, h = tfx.size() + getcell = tfx.getcell + end - local res = {w = w, h = h} - for y=1, h do - res[y] = {} - for x=1, w do - res[y][x] = getcell(x, y) - end - end + local res = { + w = w, + h = h, + } + for y = 1, h do + res[y] = {} + for x = 1, w do + res[y][x] = getcell(x, y) + end + end - return to_html(res) + return to_html(res) end -return screenshot \ No newline at end of file +return screenshot diff --git a/framework/lualib/3rd/termfx/simpleui.lua b/framework/lualib/3rd/termfx/simpleui.lua index 46b54ce..06b656b 100755 --- a/framework/lualib/3rd/termfx/simpleui.lua +++ b/framework/lualib/3rd/termfx/simpleui.lua @@ -1,7 +1,6 @@ -- sample for termfx -- Gunnar Zötl , 2014-2015 -- Released under the terms of the MIT license. See file LICENSE for details. - --[[ simpleui.lua @@ -30,104 +29,114 @@ local _M = {} local tfx = require "termfx" local function draw_box(x, y, w, h) - local ccell = tfx.newcell('+') - local hcell = tfx.newcell('-') - local vcell = tfx.newcell('|') - - for i = x, x+w do - tfx.setcell(i, y-1, hcell) - tfx.setcell(i, y+h, hcell) - end - for i = y, y+h do - tfx.setcell(x-1, i, vcell) - tfx.setcell(x+w, i, vcell) - end - tfx.setcell(x-1, y-1, ccell) - tfx.setcell(x-1, y+h, ccell) - tfx.setcell(x+w, y-1, ccell) - tfx.setcell(x+w, y+h, ccell) - - tfx.rect(x, y, w, h, ' ', fg, bg) + local ccell = tfx.newcell('+') + local hcell = tfx.newcell('-') + local vcell = tfx.newcell('|') + + for i = x, x + w do + tfx.setcell(i, y - 1, hcell) + tfx.setcell(i, y + h, hcell) + end + for i = y, y + h do + tfx.setcell(x - 1, i, vcell) + tfx.setcell(x + w, i, vcell) + end + tfx.setcell(x - 1, y - 1, ccell) + tfx.setcell(x - 1, y + h, ccell) + tfx.setcell(x + w, y - 1, ccell) + tfx.setcell(x + w, y + h, ccell) + + tfx.rect(x, y, w, h, ' ', fg, bg) end _M.box = draw_box local function frame(w, h) - local tw, th = tfx.size() - if w + 2 > tw then w = tw - 2 end - if h + 2 > th then h = th - 2 end - local x = math.floor((tw - w) / 2) - local y = math.floor((th - h) / 2) - - draw_box(x, y, w, h) - - return x, y, w, h + local tw, th = tfx.size() + if w + 2 > tw then + w = tw - 2 + end + if h + 2 > th then + h = th - 2 + end + local x = math.floor((tw - w) / 2) + local y = math.floor((th - h) / 2) + + draw_box(x, y, w, h) + + return x, y, w, h end function _M.ask(msg) - local mw = #msg - if mw < 6 then mw = 6 end - local x, y, w, h = frame(mw, 3) - tfx.printat(x, y, msg, w) - local p = x + math.floor((w - 6) / 2) - tfx.attributes(tfx.color.BLACK, tfx.color.GREEN) - tfx.printat(p, y+2, "Yes") - tfx.attributes(tfx.color.BLACK, tfx.color.RED) - tfx.printat(p+4, y+2, "No") - tfx.present() - - local answer = nil - while answer == nil do - local evt = tfx.pollevent() - if evt.char == 'y' or evt.char == 'Y' then - answer = true - elseif evt.char == 'n' or evt.char == 'N' then - answer = false - end - end - return answer + local mw = #msg + if mw < 6 then + mw = 6 + end + local x, y, w, h = frame(mw, 3) + tfx.printat(x, y, msg, w) + local p = x + math.floor((w - 6) / 2) + tfx.attributes(tfx.color.BLACK, tfx.color.GREEN) + tfx.printat(p, y + 2, "Yes") + tfx.attributes(tfx.color.BLACK, tfx.color.RED) + tfx.printat(p + 4, y + 2, "No") + tfx.present() + + local answer = nil + while answer == nil do + local evt = tfx.pollevent() + if evt.char == 'y' or evt.char == 'Y' then + answer = true + elseif evt.char == 'n' or evt.char == 'N' then + answer = false + end + end + return answer end function _M.message(msg) - local mw = #msg - local x, y, w, h = frame(mw, 3) - tfx.printat(x, y, msg, w) - local p = x + math.floor((w - 2) / 2) - tfx.attributes(tfx.color.BLACK, tfx.color.GREEN) - tfx.printat(p, y+2, "Ok") - tfx.present() - - local evt - repeat - evt = tfx.pollevent() - until evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC + local mw = #msg + local x, y, w, h = frame(mw, 3) + tfx.printat(x, y, msg, w) + local p = x + math.floor((w - 2) / 2) + tfx.attributes(tfx.color.BLACK, tfx.color.GREEN) + tfx.printat(p, y + 2, "Ok") + tfx.present() + + local evt + repeat + evt = tfx.pollevent() + until evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC end function _M.select(msg, tbl) - local mw = #msg - local mh = #tbl - if mh > 9 then mh = 9 end - for i=1, mh do - if mw < #tbl[i] + 2 then mw = #tbl[i] + 2 end - end - - local x, y, w, h = frame(mw, mh+2) - tfx.printat(x, y, msg, w) - for i=1, mh do - tfx.printat(x, y+1+i, i.." "..tbl[i], w) - end - tfx.present() - - local answer = nil - while answer == nil do - local evt = tfx.pollevent() - if evt.char >= '1' and evt.char <= tostring(mh) then - answer = tbl[tonumber(evt.char)] - elseif evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC then - answer = false - end - end - return answer + local mw = #msg + local mh = #tbl + if mh > 9 then + mh = 9 + end + for i = 1, mh do + if mw < #tbl[i] + 2 then + mw = #tbl[i] + 2 + end + end + + local x, y, w, h = frame(mw, mh + 2) + tfx.printat(x, y, msg, w) + for i = 1, mh do + tfx.printat(x, y + 1 + i, i .. " " .. tbl[i], w) + end + tfx.present() + + local answer = nil + while answer == nil do + local evt = tfx.pollevent() + if evt.char >= '1' and evt.char <= tostring(mh) then + answer = tbl[tonumber(evt.char)] + elseif evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC then + answer = false + end + end + return answer end return _M