SVG2代码生成器
svg2code的Python项目详细描述
svg2code
==
将一个或多个svg文件合并到一个类中,该类包含使用bezier曲线的绘图方法,以便无论大小都可以启用平滑曲线绘图。它还生成创建任意大小图像的方法。
我决定创建此项目,因为我需要完全控制代码生成。
-------
`` bash
最简单的命令是,它生成一个名为'svgdrawableskit.swift'的类
$svg2code<;files\or\u directories>;
$svg2code~/desktop/svgs
[-o--output]以选择不同的输出文件名
$svg2code-o<;output>;<;files_or_u directories>;
$svg2code-o svgicons.swift.
[-c--class name]选择不同的类名
$svg2code-o<;output>;-c<;class_name>;<;files_or_u directories>;
$svg2code-o svgicons.swift-c可缩放图标*
[-author]设置作者姓名
$svg2code-o<;output>;--作者<;作者姓名>;<;文件或目录>;
$svg2code-o svgicons.swift--作者"john smith"*
[--project]设置项目名称
$svg2code-o<;output>;--项目<;项目名称>;<;文件或_目录>;
$svg2code-o svgicons.swift--project awesomeapp*
[--tabs]使用制表符而不是空格(4)
$svg2code--制表符。
$svg2code-o svgicons.swift--制表符。
[-s--空格n]选择缩进中使用的空格数
$svg2code-s<;number_of_spaces>;
$svg2code-s 2-o svgicons.swift~/documents/awesomesvgs
[--stdout]将输出发送到stdout
$svg2code--stdout~/documents/svgs
$svg2code--stdout-s 2。
vg_file>;svg2code-o<;output>;<;file s_or_directories>;
$cat~/desktop/logo.svg python svg2code/cli.py--stdout-s 2
``````
example
----
应用程序--stdout`
``xml
<;!--rect.svg-->;
<;svg width="200"height="200">;
<;rect x="50"y="50"width="100"height="100"
style="fill:rgb(0,0255);stroke width:3;stroke:rgb(255,0,0)"/>;
<;svg>;
``````
``xml
<;!--circle.svg-->obileap
/
//由詹姆斯于2017年4月1日创建。
//版权所有©2017詹姆斯。保留所有权利。
/
import uikit
case circle
case rect
var size:cgsize{
switch self{
case.circle:返回cgsize(宽度:100.0,高度:100.0)
case.rect:返回cgsize(宽度:100.0,高度:100.0th:200.0,高度:200.0)
}
}
var路径:uibezierpath{
switch self{
case.circle:return svgicons.circlepath1
case.rect:return svgicons.rectpath1
}
func图像(大小:cgsize,opaque:bool=false,alignment:alignment=.center)->;uiimage{
切换self{
大小写。circle:return svgicons.image(带size:size,opaque:opaque,alignment:alignment,drawingMethod:svgicons.drawcirle)
大小写。rect:return svgicons.image(带size:size,opaquE:不透明,对齐:对齐,绘制方法:svgicons.drawrect)
}
}
}
funcdraw(在rect target:cgrect,alignment:alignment=.center){
切换self{
case.circle:返回svgicons.drawcircle(在rect:target,alignment:alignment)
case.rect:返回svgicons.drawrect(在rect:target,alignment:alignment)
}
私有静态Func DrawCircle(在ect target:cgrect=cgrect(x:0,y:0,width:100.0,height:100.0),对齐方式:alignment=.center){
let frame=cgrect(原点:.zero,大小:svgicons.circle.size)
let context=uigraphicsGetCurrentContext()!
context.savegstate()
context.concatenate(svgicons.transformtofit(rect:frame,inrect:target,alignment:alignment))
let path1=svgicons.circlepath1
uicolor(red:0,green:0,blue:0,alpha:1.0)。setfill()
path1.fill()
context.restoregstate()
}
private static func drawrect(在ect target:cgrect=cgrect(x:0,y:0,width:200.0,height:200.0),alignment:alignment=.center){
let frame=cgrect(origin:.zero,size:svgicons.rect.size)
let context=uigraphicsGetCurrentContext()!
context.savegstate()
context.concatenate(svgicons.transformtofit(rect:frame,inrect:target,alignment:alignment))
let path1=svgicons.rectpath1
path1.linewidth=3.0
uicolor(red:0,green:0,blue:1.0,alpha:1.0)。setfill()
path1.fill()
uicolor(红色:1.0,绿色:0,蓝色:0,alpha:1.0)。setstroke()
path1.stroke()
}
静态私有func图像(大小:cgsize,不透明:bool,对齐:对齐,绘制方法:(cgrect,对齐)->;void)->;uiimage{
uigraphicsbeginimagecontextwithoptions(size,opaque,0.0)
drawingMethod(cgrit(origin:.zero,size:size),对齐)
let image=uigraphicsGetImageFromcurrentImageContext()!
uigraphicsendimagecontext()
返回图像
}
宽度/rect.size.width),
y:abs(target.size.height/rect.size.height)
let widerhantaller=scale.y<;scale.x
scale.x=min(scale.x,scale.y)
scale.y=scale.x
var translate=target.origin
如果WideR调用方{
切换对齐{
大小写。右:translate.x+=rect.size.width*scale.x
大小写。中:translate.x+=0.5*(target.size.width-(rect.size.width*scale.x))
默认值:break//它已与左边距对齐
}
}否则{
切换对齐{
大小写。底部:translate.y+=rect.size.height*scale.y
大小写。中心:translate.y+=0.5*(target.size.height-(rect.size.height*scale.y))
默认值:break//它已经与t对齐操作边距
}
}
let scalet=cgafinetransform(scale x:scale.x,y:scale.y)
let translatet=cgafinetransform(translationx:translate.x,y:translate.y)
gnment{
case center,top,bottom,left,right
/路径定义
私有静态let circlepath1:uibezierpath={
let path=uibezierpath()
路径.移动(到:cgpoint(x:50.0,y:10.0))
路径.addcurve(到:cgpoint(x:90.0,y:50.0),控制点1:cgPoint(x:72.0913899932,y:10.0),控制点2:cgPoint(x:90.0,y:27.9086100068))
路径.addcurve(To:CGPOint(X:50.0,Y:90.0),Contropoint1:CGPOint(X:90.0,Y:72.09138999932),Contropoint2:CGPOint(X:72.09138999932,Y:90.0))
path.addcurve(to:CGPOint(X:10.0.0,Y:50.0),Contropoint1:CGPOint(X:27:10091389999999999932,Y:90.0.0),Contropoint2:CGPoint(X(to:CGPOINT(X:50.0,Y:10.0),ControllPointPoint1:CGPOint(X:10.0,Y:27 9086100068),ControllPoint2:CGPOint(X:27 9086100068,Y:10.0))
path.close(
return path
)()
private static let rectpath 1:uibezierpath={<
uibezierpath={
br/>bezierpath=mphath
path.addline(to:cgpoint)(x: 150.0, y: 50.0))
path.addLine(to: CGPoint(x: 150.0, y: 150.0))
path.addLine(to: CGPoint(x: 50.0, y: 150.0))
path.close()
return path
}()
}
```
How to use it
-------------
```swift
// Using images
let imageViewSize = CGSize(width: 200, heIght:200)
let imageview
let imageview=uiimageview=uiimageview(frame:CGRECT(origin:zero,size:imageview size))
imageview.image=sv gicons.circle.image(withsize:imageview size)
bur//using draw(rect:
class customview:view:bruibr/>Svgicons.circle.draw(Inrect:self.bounds)
br/>let customview=customview=customview(frame:CGRECT(X:0,Y:0,Width:200,Hight:200))
customview.backgroundcolor=uicolor.white
notes
br/>br/>br/>customIt doesn't implement the full SVG 1.1 specification.当我从我需要的规格中找到一些东西时,
i might also accept implementation requests,e.g.,if someone needs shadows or gradients support.
>br/>br/>br/>-----------
br/>br/>>i may also accepted implementation requests,e g.>if someone needs shadows or gradients support.
br/>b>
==
将一个或多个svg文件合并到一个类中,该类包含使用bezier曲线的绘图方法,以便无论大小都可以启用平滑曲线绘图。它还生成创建任意大小图像的方法。
我决定创建此项目,因为我需要完全控制代码生成。
-------
`` bash
最简单的命令是,它生成一个名为'svgdrawableskit.swift'的类
$svg2code<;files\or\u directories>;
$svg2code~/desktop/svgs
[-o--output]以选择不同的输出文件名
$svg2code-o<;output>;<;files_or_u directories>;
$svg2code-o svgicons.swift.
[-c--class name]选择不同的类名
$svg2code-o<;output>;-c<;class_name>;<;files_or_u directories>;
$svg2code-o svgicons.swift-c可缩放图标*
[-author]设置作者姓名
$svg2code-o<;output>;--作者<;作者姓名>;<;文件或目录>;
$svg2code-o svgicons.swift--作者"john smith"*
[--project]设置项目名称
$svg2code-o<;output>;--项目<;项目名称>;<;文件或_目录>;
$svg2code-o svgicons.swift--project awesomeapp*
[--tabs]使用制表符而不是空格(4)
$svg2code--制表符。
$svg2code-o svgicons.swift--制表符。
[-s--空格n]选择缩进中使用的空格数
$svg2code-s<;number_of_spaces>;
$svg2code-s 2-o svgicons.swift~/documents/awesomesvgs
[--stdout]将输出发送到stdout
$svg2code--stdout~/documents/svgs
$svg2code--stdout-s 2。
vg_file>;svg2code-o<;output>;<;file s_or_directories>;
$cat~/desktop/logo.svg python svg2code/cli.py--stdout-s 2
``````
example
----
应用程序--stdout`
``xml
<;!--rect.svg-->;
<;svg width="200"height="200">;
<;rect x="50"y="50"width="100"height="100"
style="fill:rgb(0,0255);stroke width:3;stroke:rgb(255,0,0)"/>;
<;svg>;
``````
``xml
<;!--circle.svg-->obileap
/
//由詹姆斯于2017年4月1日创建。
//版权所有©2017詹姆斯。保留所有权利。
/
import uikit
case rect
var size:cgsize{
switch self{
case.circle:返回cgsize(宽度:100.0,高度:100.0)
case.rect:返回cgsize(宽度:100.0,高度:100.0th:200.0,高度:200.0)
}
}
var路径:uibezierpath{
switch self{
case.circle:return svgicons.circlepath1
case.rect:return svgicons.rectpath1
}
func图像(大小:cgsize,opaque:bool=false,alignment:alignment=.center)->;uiimage{
切换self{
大小写。circle:return svgicons.image(带size:size,opaque:opaque,alignment:alignment,drawingMethod:svgicons.drawcirle)
大小写。rect:return svgicons.image(带size:size,opaquE:不透明,对齐:对齐,绘制方法:svgicons.drawrect)
}
}
}
funcdraw(在rect target:cgrect,alignment:alignment=.center){
切换self{
case.circle:返回svgicons.drawcircle(在rect:target,alignment:alignment)
case.rect:返回svgicons.drawrect(在rect:target,alignment:alignment)
}
私有静态Func DrawCircle(在ect target:cgrect=cgrect(x:0,y:0,width:100.0,height:100.0),对齐方式:alignment=.center){
let frame=cgrect(原点:.zero,大小:svgicons.circle.size)
let context=uigraphicsGetCurrentContext()!
context.savegstate()
context.concatenate(svgicons.transformtofit(rect:frame,inrect:target,alignment:alignment))
let path1=svgicons.circlepath1
uicolor(red:0,green:0,blue:0,alpha:1.0)。setfill()
path1.fill()
context.restoregstate()
}
private static func drawrect(在ect target:cgrect=cgrect(x:0,y:0,width:200.0,height:200.0),alignment:alignment=.center){
let frame=cgrect(origin:.zero,size:svgicons.rect.size)
let context=uigraphicsGetCurrentContext()!
context.savegstate()
context.concatenate(svgicons.transformtofit(rect:frame,inrect:target,alignment:alignment))
let path1=svgicons.rectpath1
path1.linewidth=3.0
uicolor(red:0,green:0,blue:1.0,alpha:1.0)。setfill()
path1.fill()
uicolor(红色:1.0,绿色:0,蓝色:0,alpha:1.0)。setstroke()
path1.stroke()
静态私有func图像(大小:cgsize,不透明:bool,对齐:对齐,绘制方法:(cgrect,对齐)->;void)->;uiimage{
uigraphicsbeginimagecontextwithoptions(size,opaque,0.0)
drawingMethod(cgrit(origin:.zero,size:size),对齐)
let image=uigraphicsGetImageFromcurrentImageContext()!
uigraphicsendimagecontext()
返回图像
}
宽度/rect.size.width),
y:abs(target.size.height/rect.size.height)
let widerhantaller=scale.y<;scale.x
scale.x=min(scale.x,scale.y)
scale.y=scale.x
var translate=target.origin
如果WideR调用方{
切换对齐{
大小写。右:translate.x+=rect.size.width*scale.x
大小写。中:translate.x+=0.5*(target.size.width-(rect.size.width*scale.x))
默认值:break//它已与左边距对齐
}
}否则{
切换对齐{
大小写。底部:translate.y+=rect.size.height*scale.y
大小写。中心:translate.y+=0.5*(target.size.height-(rect.size.height*scale.y))
默认值:break//它已经与t对齐操作边距
}
}
let scalet=cgafinetransform(scale x:scale.x,y:scale.y)
let translatet=cgafinetransform(translationx:translate.x,y:translate.y)
gnment{
case center,top,bottom,left,right
/路径定义
私有静态let circlepath1:uibezierpath={
let path=uibezierpath()
路径.移动(到:cgpoint(x:50.0,y:10.0))
路径.addcurve(到:cgpoint(x:90.0,y:50.0),控制点1:cgPoint(x:72.0913899932,y:10.0),控制点2:cgPoint(x:90.0,y:27.9086100068))
路径.addcurve(To:CGPOint(X:50.0,Y:90.0),Contropoint1:CGPOint(X:90.0,Y:72.09138999932),Contropoint2:CGPOint(X:72.09138999932,Y:90.0))
path.addcurve(to:CGPOint(X:10.0.0,Y:50.0),Contropoint1:CGPOint(X:27:10091389999999999932,Y:90.0.0),Contropoint2:CGPoint(X(to:CGPOINT(X:50.0,Y:10.0),ControllPointPoint1:CGPOint(X:10.0,Y:27 9086100068),ControllPoint2:CGPOint(X:27 9086100068,Y:10.0))
path.close(
return path
)()
private static let rectpath 1:uibezierpath={<
uibezierpath={
br/>bezierpath=mphath
path.addline(to:cgpoint)(x: 150.0, y: 50.0))
path.addLine(to: CGPoint(x: 150.0, y: 150.0))
path.addLine(to: CGPoint(x: 50.0, y: 150.0))
path.close()
return path
}()
}
```
How to use it
-------------
```swift
// Using images
let imageViewSize = CGSize(width: 200, heIght:200)
let imageview
let imageview=uiimageview=uiimageview(frame:CGRECT(origin:zero,size:imageview size))
imageview.image=sv gicons.circle.image(withsize:imageview size)
bur//using draw(rect:
class customview:view:bruibr/>Svgicons.circle.draw(Inrect:self.bounds)
br/>let customview=customview=customview(frame:CGRECT(X:0,Y:0,Width:200,Hight:200))
customview.backgroundcolor=uicolor.white
notes
br/>br/>br/>customIt doesn't implement the full SVG 1.1 specification.当我从我需要的规格中找到一些东西时,
i might also accept implementation requests,e.g.,if someone needs shadows or gradients support.
>br/>br/>br/>-----------
br/>br/>>i may also accepted implementation requests,e g.>if someone needs shadows or gradients support.
br/>b>