···3939**svg:draw()** *return the svg formated string*
40404141### Elements for svg:add(element)
4242+**svg:Text(text, x, y, style, transform)** *add text*
4343+4444+ - text: string => the text to write
4545+ - x: number => Horizontal position, default to 10
4646+ - y: number => Vertical position, default to 50
4747+ - style: string => style of the text (css with svg params), default to:
4848+ * `font-family: Verdana`
4949+ * `font-size: 10`
5050+ * `stroke: self.stroke` svg:create() parameter ("#000000" by default)
5151+ * `fill: self.fill` svg:create() parameter ("transparent" by default)
5252+ - tranform: string => transformation options (eg: rotation)
5353+4254**svg:Rect(x, y, width, height, stroke, strokeWidth, fill, rx, ry)** *add a rectangle*
43554456 - x: number => Horizontal position from top left corner, default to 10
···2424 -- function to create svg.Element
2525 -- name: string => name of the element (standard svg element name)
2626 -- options: table => a table containing all the parameters of the element
2727- function s.Element:create(name, options)
2727+ function s.Element:create(name, options, content)
2828 local e = {}
2929 setmetatable(e,s.Element)
3030 e.name = name
···3333 e[key] = value
3434 e.strElement = e.strElement .. key .. "=\"" .. value .. "\" "
3535 end
3636- e.strElement = e.strElement .. "/>"
3636+ if content ~= nil then
3737+ e.strElement = e.strElement .. ">" .. content .. "</" .. name .. ">"
3838+ else
3939+ e.strElement = e.strElement .. "/>"
4040+ end
3741 return e;
3842 end
3943···5458 end
5559 svgStr = svgStr .. "</svg>"
5660 return svgStr
6161+end
6262+6363+-- function to add text
6464+-- text: string => the text to write
6565+-- x: number => Horizontal position
6666+-- y: number => Vertical position
6767+-- style: string => style of the text (css with svg params)
6868+-- tranform: string => transformation options (eg: rotation)
6969+function svg:Text(text, x, y, style, transform)
7070+ return self.Element:create("text", {
7171+ x = x or 10,
7272+ y = y or 50,
7373+ style = style or ("font-family: Verdana; font-size: 10; stroke: " .. self.stroke .. "; fill: " .. self.fill .. ";"),
7474+ transform = transform or ""
7575+ }, text)
5776end
58775978-- function to create a rectangle
+1-1
svg.min.lua
···11-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})end11+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
···11-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
11+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
2233mon_dessin = svg:create()
44mon_dessin:add(mon_dessin:Rect())