[READ-ONLY] Mirror of https://github.com/thoda-dev/svg-lua. svg lua library
0

Configure Feed

Select the types of activity you want to include in your feed.

add text support

Thomas DAGES (Dec 6, 2018, 5:25 PM +0100) a08cd7a3 1a42e1f7

+36 -5
+12
README.md
··· 39 39 **svg:draw()** *return the svg formated string* 40 40 41 41 ### Elements for svg:add(element) 42 + **svg:Text(text, x, y, style, transform)** *add text* 43 + 44 + - text: string => the text to write 45 + - x: number => Horizontal position, default to 10 46 + - y: number => Vertical position, default to 50 47 + - style: string => style of the text (css with svg params), default to: 48 + * `font-family: Verdana` 49 + * `font-size: 10` 50 + * `stroke: self.stroke` svg:create() parameter ("#000000" by default) 51 + * `fill: self.fill` svg:create() parameter ("transparent" by default) 52 + - tranform: string => transformation options (eg: rotation) 53 + 42 54 **svg:Rect(x, y, width, height, stroke, strokeWidth, fill, rx, ry)** *add a rectangle* 43 55 44 56 - x: number => Horizontal position from top left corner, default to 10
+1 -1
index.html
··· 1 - <svg width="100" height="100" fill="transparent" stroke="#000000" version="1.1" xmlns="http://www.w3.org/2000/svg"><rect stroke="#000000" fill="transparent" y="10" x="10" height="10" rx="0" ry="0" stroke-width="1" width="10" /><circle stroke="#000000" r="25" cx="30" cy="30" fill="transparent" stroke-width="1" /><ellipse stroke="#000000" ry="15" rx="25" cx="30" cy="30" fill="transparent" stroke-width="1" /></svg> 1 + <svg width="100" height="100" fill="transparent" stroke="#000000" version="1.1" xmlns="http://www.w3.org/2000/svg"><rect x="10" y="10" width="10" stroke="#000000" stroke-width="1" ry="0" rx="0" fill="transparent" height="10" /><circle cx="30" cy="30" r="25" stroke="#000000" fill="transparent" stroke-width="1" /><ellipse ry="15" rx="25" fill="transparent" cx="30" stroke="#000000" cy="30" stroke-width="1" /><text x="10" y="50" style="font-family: Verdana; font-size: 10; stroke: #000000; fill: transparent;" transform="" >this is a test</text></svg>
+21 -2
svg.lua
··· 24 24 -- function to create svg.Element 25 25 -- name: string => name of the element (standard svg element name) 26 26 -- options: table => a table containing all the parameters of the element 27 - function s.Element:create(name, options) 27 + function s.Element:create(name, options, content) 28 28 local e = {} 29 29 setmetatable(e,s.Element) 30 30 e.name = name ··· 33 33 e[key] = value 34 34 e.strElement = e.strElement .. key .. "=\"" .. value .. "\" " 35 35 end 36 - e.strElement = e.strElement .. "/>" 36 + if content ~= nil then 37 + e.strElement = e.strElement .. ">" .. content .. "</" .. name .. ">" 38 + else 39 + e.strElement = e.strElement .. "/>" 40 + end 37 41 return e; 38 42 end 39 43 ··· 54 58 end 55 59 svgStr = svgStr .. "</svg>" 56 60 return svgStr 61 + end 62 + 63 + -- function to add text 64 + -- text: string => the text to write 65 + -- x: number => Horizontal position 66 + -- y: number => Vertical position 67 + -- style: string => style of the text (css with svg params) 68 + -- tranform: string => transformation options (eg: rotation) 69 + function svg:Text(text, x, y, style, transform) 70 + return self.Element:create("text", { 71 + x = x or 10, 72 + y = y or 50, 73 + style = style or ("font-family: Verdana; font-size: 10; stroke: " .. self.stroke .. "; fill: " .. self.fill .. ";"), 74 + transform = transform or "" 75 + }, text) 57 76 end 58 77 59 78 -- function to create a rectangle
+1 -1
svg.min.lua
··· 1 - svg={}svg.__index=svg;function svg:create(a,b,c,d)local e={}setmetatable(e,svg)e.width=a or 100;e.height=height or 100;e.stroke=c or"#000000"e.fill=d or"transparent"e.elements={}e.Element={}e.Element.__index=svg.Element;function e.Element:create(f,g)local h={}setmetatable(h,e.Element)h.name=f;h.strElement="<"..f.." "for i,j in pairs(g)do h[i]=j;h.strElement=h.strElement..i.."=\""..j.."\" "end;h.strElement=h.strElement.."/>"return h end;return e end;function svg:add(k)table.insert(self.elements,k)end;function svg:draw()local l="<svg width=\""..self.width.."\" height=\""..self.height.."\" fill=\""..self.fill.."\" stroke=\""..self.stroke.."\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">"for m,n in pairs(self.elements)do l=l..n.strElement end;l=l.."</svg>"return l end;function svg:Rect(o,p,a,height,c,q,d,s,t)return self.Element:create("rect",{x=o or 10,y=p or 10,width=a or 10,height=height or 10,stroke=c or self.stroke,fill=d or self.fill,["stroke-width"]=q or 1,rx=s or 0,ry=t or 0})end;function svg:Circle(r,u,v,c,q,d)return self.Element:create("circle",{r=r or 25,cx=u or 30,cy=v or 30,stroke=c or self.stroke,["stroke-width"]=q or 1,fill=d or self.fill})end;function svg:Ellipse(u,v,s,t,c,q,d)return self.Element:create("ellipse",{rx=r or 25,ry=r or 15,cx=u or 30,cy=v or 30,stroke=c or self.stroke,["stroke-width"]=q or 1,fill=d or self.fill})end 1 + svg={}svg.__index=svg;function svg:create(a,b,c,d)local e={}setmetatable(e,svg)e.width=a or 100;e.height=height or 100;e.stroke=c or"#000000"e.fill=d or"transparent"e.elements={}e.Element={}e.Element.__index=svg.Element;function e.Element:create(f,g,h)local i={}setmetatable(i,e.Element)i.name=f;i.strElement="<"..f.." "for j,k in pairs(g)do i[j]=k;i.strElement=i.strElement..j.."=\""..k.."\" "end;if h~=nil then i.strElement=i.strElement..">"..h.."</"..f..">"else i.strElement=i.strElement.."/>"end;return i end;return e end;function svg:add(l)table.insert(self.elements,l)end;function svg:draw()local m="<svg width=\""..self.width.."\" height=\""..self.height.."\" fill=\""..self.fill.."\" stroke=\""..self.stroke.."\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">"for n,o in pairs(self.elements)do m=m..o.strElement end;m=m.."</svg>"return m end;function svg:Text(p,q,s,t,u)return self.Element:create("text",{x=q or 10,y=s or 50,style=t or"font-family: Verdana; font-size: 10; stroke: "..self.stroke.."; fill: "..self.fill..";",transform=u or""},p)end;function svg:Rect(q,s,a,height,c,v,d,w,x)return self.Element:create("rect",{x=q or 10,y=s or 10,width=a or 10,height=height or 10,stroke=c or self.stroke,fill=d or self.fill,["stroke-width"]=v or 1,rx=w or 0,ry=x or 0})end;function svg:Circle(r,y,z,c,v,d)return self.Element:create("circle",{r=r or 25,cx=y or 30,cy=z or 30,stroke=c or self.stroke,["stroke-width"]=v or 1,fill=d or self.fill})end;function svg:Ellipse(y,z,w,x,c,v,d)return self.Element:create("ellipse",{rx=r or 25,ry=r or 15,cx=y or 30,cy=z or 30,stroke=c or self.stroke,["stroke-width"]=v or 1,fill=d or self.fill})end
+1 -1
test.lua
··· 1 - svg={}svg.__index=svg;function svg:create(a,b,c,d)local e={}setmetatable(e,svg)e.width=a or 100;e.height=height or 100;e.stroke=c or"#000000"e.fill=d or"transparent"e.elements={}e.Element={}e.Element.__index=svg.Element;function e.Element:create(f,g)local h={}setmetatable(h,e.Element)h.name=f;h.strElement="<"..f.." "for i,j in pairs(g)do h[i]=j;h.strElement=h.strElement..i.."=\""..j.."\" "end;h.strElement=h.strElement.."/>"return h end;return e end;function svg:add(k)table.insert(self.elements,k)end;function svg:draw()local l="<svg width=\""..self.width.."\" height=\""..self.height.."\" fill=\""..self.fill.."\" stroke=\""..self.stroke.."\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">"for m,n in pairs(self.elements)do l=l..n.strElement end;l=l.."</svg>"return l end;function svg:Rect(o,p,a,height,c,q,d,s,t)return self.Element:create("rect",{x=o or 10,y=p or 10,width=a or 10,height=height or 10,stroke=c or self.stroke,fill=d or self.fill,["stroke-width"]=q or 1,rx=s or 0,ry=t or 0})end;function svg:Circle(r,u,v,c,q,d)return self.Element:create("circle",{r=r or 25,cx=u or 30,cy=v or 30,stroke=c or self.stroke,["stroke-width"]=q or 1,fill=d or self.fill})end;function svg:Ellipse(u,v,s,t,c,q,d)return self.Element:create("ellipse",{rx=r or 25,ry=r or 15,cx=u or 30,cy=v or 30,stroke=c or self.stroke,["stroke-width"]=q or 1,fill=d or self.fill})end 1 + svg={}svg.__index=svg;function svg:create(a,b,c,d)local e={}setmetatable(e,svg)e.width=a or 100;e.height=height or 100;e.stroke=c or"#000000"e.fill=d or"transparent"e.elements={}e.Element={}e.Element.__index=svg.Element;function e.Element:create(f,g,h)local i={}setmetatable(i,e.Element)i.name=f;i.strElement="<"..f.." "for j,k in pairs(g)do i[j]=k;i.strElement=i.strElement..j.."=\""..k.."\" "end;if h~=nil then i.strElement=i.strElement..">"..h.."</"..f..">"else i.strElement=i.strElement.."/>"end;return i end;return e end;function svg:add(l)table.insert(self.elements,l)end;function svg:draw()local m="<svg width=\""..self.width.."\" height=\""..self.height.."\" fill=\""..self.fill.."\" stroke=\""..self.stroke.."\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">"for n,o in pairs(self.elements)do m=m..o.strElement end;m=m.."</svg>"return m end;function svg:Text(p,q,s,t,u)return self.Element:create("text",{x=q or 10,y=s or 50,style=t or"font-family: Verdana; font-size: 10; stroke: "..self.stroke.."; fill: "..self.fill..";",transform=u or""},p)end;function svg:Rect(q,s,a,height,c,v,d,w,x)return self.Element:create("rect",{x=q or 10,y=s or 10,width=a or 10,height=height or 10,stroke=c or self.stroke,fill=d or self.fill,["stroke-width"]=v or 1,rx=w or 0,ry=x or 0})end;function svg:Circle(r,y,z,c,v,d)return self.Element:create("circle",{r=r or 25,cx=y or 30,cy=z or 30,stroke=c or self.stroke,["stroke-width"]=v or 1,fill=d or self.fill})end;function svg:Ellipse(y,z,w,x,c,v,d)return self.Element:create("ellipse",{rx=r or 25,ry=r or 15,cx=y or 30,cy=z or 30,stroke=c or self.stroke,["stroke-width"]=v or 1,fill=d or self.fill})end 2 2 3 3 mon_dessin = svg:create() 4 4 mon_dessin:add(mon_dessin:Rect())