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>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用CSPRNG中的序列种子PRNG安全吗?   java如何使JTable列大小与内容精确(或紧密)匹配?   java Android textview具有两种不同大小的文本   java在任意事物的列表(数组)中创建关联的最佳方法是什么?   java保存可扩展字符串?   java成员类(内部类)如何访问外部类的实例变量?   java使用Android 6.0(API级别23)使用rest的最佳方式是什么   java为什么我会收到“学习记录”。Student@25a43blb'尝试显示链接列表中的所有对象时?   java如何将SVG文本转换为SVG路径?   java Paypal返回URL参数支付状态   java Libgdx:导出到可运行Jar   java JPA获取连接实体的最小/最大属性   附加到类型变量的java编号?   java Object[]到底是什么?   java如何在安卓中的片段和活动之间共享数据   java使用MinGW为windows构建linux库   java将变量值传递给eval函数   java仅在转换完成时使方法返回   Java二维数组对角线