diff --git a/README.md b/README.md
index 3a7cfb4..becb6f6 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,18 @@ can be tested [here](https://www.lua.org/cgi-bin/demo) *(use the minified versio
**svg:draw()** *return the svg formated string*
### Elements for svg:add(element)
+**svg:Text(text, x, y, style, transform)** *add text*
+
+ - text: string => the text to write
+ - x: number => Horizontal position, default to 10
+ - y: number => Vertical position, default to 50
+ - style: string => style of the text (css with svg params), default to:
+ * `font-family: Verdana`
+ * `font-size: 10`
+ * `stroke: self.stroke` svg:create() parameter ("#000000" by default)
+ * `fill: self.fill` svg:create() parameter ("transparent" by default)
+ - tranform: string => transformation options (eg: rotation)
+
**svg:Rect(x, y, width, height, stroke, strokeWidth, fill, rx, ry)** *add a rectangle*
- x: number => Horizontal position from top left corner, default to 10
diff --git a/index.html b/index.html
index 1ca5360..8807a8e 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/svg.lua b/svg.lua
index 6d895cc..feecd1d 100644
--- a/svg.lua
+++ b/svg.lua
@@ -24,7 +24,7 @@ function svg:create(width, heigth, stroke, fill)
-- function to create svg.Element
-- name: string => name of the element (standard svg element name)
-- options: table => a table containing all the parameters of the element
- function s.Element:create(name, options)
+ function s.Element:create(name, options, content)
local e = {}
setmetatable(e,s.Element)
e.name = name
@@ -33,7 +33,11 @@ function svg:create(width, heigth, stroke, fill)
e[key] = value
e.strElement = e.strElement .. key .. "=\"" .. value .. "\" "
end
- e.strElement = e.strElement .. "/>"
+ if content ~= nil then
+ e.strElement = e.strElement .. ">" .. content .. "" .. name .. ">"
+ else
+ e.strElement = e.strElement .. "/>"
+ end
return e;
end
@@ -56,6 +60,21 @@ function svg:draw()
return svgStr
end
+-- function to add text
+-- text: string => the text to write
+-- x: number => Horizontal position
+-- y: number => Vertical position
+-- style: string => style of the text (css with svg params)
+-- tranform: string => transformation options (eg: rotation)
+function svg:Text(text, x, y, style, transform)
+ return self.Element:create("text", {
+ x = x or 10,
+ y = y or 50,
+ style = style or ("font-family: Verdana; font-size: 10; stroke: " .. self.stroke .. "; fill: " .. self.fill .. ";"),
+ transform = transform or ""
+ }, text)
+end
+
-- function to create a rectangle
-- x: number => Position du rectangle sur l'axe horizontal par rapport au coin supérieur gauche
-- y: number => Position du rectangle sur l'axe vertical par rapport au coin supérieur gauche
diff --git a/svg.min.lua b/svg.min.lua
index b923968..079e215 100644
--- a/svg.min.lua
+++ b/svg.min.lua
@@ -1 +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=""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
\ No newline at end of file
+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=""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
\ No newline at end of file
diff --git a/test.lua b/test.lua
index f6dbce3..eb5b1bc 100644
--- a/test.lua
+++ b/test.lua
@@ -1,4 +1,4 @@
-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=""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
+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=""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
mon_dessin = svg:create()
mon_dessin:add(mon_dessin:Rect())