Files
Techmino/Zframework/doGC.lua
2021-04-25 10:41:08 +08:00

56 lines
1.4 KiB
Lua

local gc=love.graphics
local cmds={
origin="origin",
move="translate",
scale="scale",
rotate="rotate",
clear="clear",
setCL="setColor",
setCM="setColorMask",
setLW="setLineWidth",
setLS="setLineStyle",
setLJ="setLineJoin",
setFT=function(...)setFont(...)end,
dText="print",
mText=function(...)ADRAW.str(...)end,
mDraw=function(...)ADRAW.draw(...)end,
draw="draw",
dLine="line",
fRect=function(...)gc.rectangle("fill",...)end,
dRect=function(...)gc.rectangle("line",...)end,
fCirc=function(...)gc.circle("fill",...)end,
dCirc=function(...)gc.circle("line",...)end,
fPoly=function(...)gc.polygon("fill",...)end,
dPoly=function(...)gc.polygon("line",...)end,
dPie=function(...)gc.arc("line",...)end,
dArc=function(...)gc.arc("line","open",...)end,
dBow=function(...)gc.arc("line","closed",...)end,
fPie=function(...)gc.arc("fill",...)end,
fArc=function(...)gc.arc("fill","open",...)end,
fBow=function(...)gc.arc("fill","closed",...)end,
}
return function(L)
gc.push()
local canvas=gc.newCanvas(L[1],L[2])
gc.setCanvas(canvas)
gc.origin()
gc.setColor(1,1,1)
gc.setLineWidth(1)
for i=3,#L do
local cmd=cmds[L[i][1]]
if type(cmd)=="string"then
gc[cmd](unpack(L[i],2))
elseif cmd then
cmd(unpack(L[i],2))
else
error("No gc command: "..(L[i][1]or"[nil]"))
end
end
gc.setCanvas()
gc.pop()
return canvas
end