DIA¦p¦ó¦Û©w§Îª¬
§@ªÌ:cschen33.tw@yahoo.com.tw
«Ø¥ß¤é´Á:2007/8/20
°ò¦
diaªº¦Û©w§Îª¬¦Ü¤Ö¥]§t¤F¤GÓÀÉ®×
shape- ©w¸q§Îª¬n¨Ï¥ÎXML ªºSVG®æ¦¡,
sheet - ¶°¦X¤Wz¤£¦Pªº§Îª¬,¤@¼Ë¬O¨Ï¥ÎXMLl®æ¦¡
¥Ø¿ý¦bC:\Documents and Settings\¨Ï¥ÎªÌ¦WºÙ\.diaªºshape,sheet
§A¥i¥H¨Ï¥Î¤å¦r½s¿è¾¹(¤ä´©UTF8)
À˵ø¤£¦PªºÀÉ®×,°Ñ¦Ò,§A¥unª`·N ¤£§t»y¨¥¤Î xml:lang="zh_tw"³¡¥÷¨ä©ó©¿²¤¤£¬Ý
¶}±Ò dia,³]p¤@Ó¼gªºDIA ,µM«á¶×¥X¬°shapeÀÉ,³o±N·|²£¥Í¨âÓÀÉ®×, ¤@Ó .shape©M .png
ÀÉ(·í¦¨¹Ï¥Ü).
§ÚÀH«K«Ø¥ß¤@ӧΪ¬,¨Ã¶×¥X¬°c1.shape,¶×¥X®É·|°Ý¤j¤p,³o¬O«ü¹Ï¥Üªº¤j¤p(¦b¤u¨ã¦CÅã¥Ü),¤£¼vÅT¯u¥¿§Îª¬ªº¤j¤p
½Ð¶×¥X¨ìC:\Documents and Settings\¨Ï¥ÎªÌ¦WºÙ\.dia\shape
·í¦³¦hÓ shape®É¡A ¥un¦b object¤¤¦h¥[¤J¤@Ó´N¥i¥H¤F,³]¦n¤§«á, µM«á«·s±Ò°Ê Dia,·sªºª«¥ó±N·|Åã¥Ü¦b sheets¦Cªí.
#¦pªG¨S¦³Åã¥Ü,¥i¯à¬O§AªºXMLªº»yªk¦³°ÝÃD
¦Û©w§Îª¬¼Ò²Õ
===================
¨Ï¥ÎXMLÀɮרӴyz§Îª¬.
¥¿½Tªº§Îª¬¬O¨Ï¥ÎSVGªº®æ¦¡. line, polyline, polygon, rect, circle, ellipse,path ©M g ¤ä´©¤¸¥óe.
ª`·N¸ô®|¤¸¥ó¥u¤ä´©¥]§tM,m,L,l,H,h,V,v,C,c,S,s,Z ©M z ©R¥O.
¤£¤ä´©ÅÜ«¬©M CSS ³æ¦ì,¨Ã¥B¥u¦³¤ä´©¦³ªºCSS¶°¦X
¤@Ó¤å¦rtext box¥i¥HÃö³s¨ì§Îª¬. ¦Û©wªº§Îª¬½X±N½T©w¤å¦r¿é¤J·|¦X¥G¨ä§Îª¬ªº¤j¤p.
¤å¦rtext boxªº³æ¦ì©M§Îª¬¬Û¦P.
#¤å¦r²°ªº¦ì¸m,½Ð°Ñ¦Ò¨ä§Îª¬´yzªº¦ì¸m,§_«h¨ä¦ì¸m·|«Ü©_©Ç
§Îª¬
======
¤@Ө嫬ªº§Îª¬¬Ý°_¨Ó¦p¤U:
<?xml version="1.0"?>
<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns"
xmlns:svg="http://www.w3.org/2000/svg">
<name>Circuit - NPN Transistor</name>
<icon>npn.xpm</icon>
<connections>
<point x="0" y="0"/>
<point x="6" y="-4"/>
<point x="6" y="4"/>
</connections>
<aspectratio type="fixed"/>
<svg:svg width="3.0" height="3.0">
<svg:line x1="0" y1="0" x2="3" y2="0" />
<svg:line x1="3" y1="-3" x2="3" y2="3" />
<svg:line x1="3" y1="-2" x2="6" y2="-4" />
<svg:line x1="3" y1="2" x2="6" y2="4" />
<svg:polyline points="5,4 6,4 5.6154,3.0769" />
</svg:svg>
</shape>
name©Msvg¼ÐÅÒ¬O¥²¶·ªº
name¬OID¦b¸ü¤J©MÀx¦s®É¨Ï¥Î.
¹Ï¥Üicon«ü©w¤@Ó xpm©Î¨ä¥¦¹ÏÀɨӨϥΦb¤u¨ã¦Cªº¹Ï¥Ü.
ÀɦW¬OÃö³s¨ì§Îª¬ÀÉ. ¦pªG§A¨S¦³µ¹«h·|¨Ï¥Î¹w³]ªºÀÉ®×.
connections «ü©w§Îª¬ªº³s±µÂI. ®y¼Ð¨t¦Psvg§Îª¬»¡©ú.
aspectratio ¥i¥HÅý§A«ü©wÅܧÎ. ¦³¤TºØ¥i¯à©Ê¬O:
<aspectratio type="free"/> ¥ô¦ó¤ñ¦C¬OOKªº(¹w³])
<aspectratio type="fixed"/> ©T©w¤ñ¦C.
<aspectratio type="range" min="n" max="m"/> «ü©w¬Y¤@½d³ò
³Ì«áªº¿ï¶µ¥i¥HÅý§A«ü©w¬Y¤@¼Æ¶qªº§á¦±, ¦b¬Y¨Çª¬ªp¤U«Ü¦³¥Î.
¤å¦r®Ø(textbox) (¤£Åã¥Ü)¥i¥HÅý§A±N¤å¦rÃö³s¨ì§Îª¬. »yªk¬O:
<textbox x1="left" y1="top" x2="right" y2="bottom"/>
³oùذѼƬO«ü©wÃä¬É,®y¼Ð¨t¦PSVG §Îª¬»¡©ú.ª`·N:³Ì«á¬O/>
svg ¼ÐÅÒ»¡©ú§Îª¬.¼e«×©M°ª«×ªº°Ñ¼Æ¬O³Q©¿²¤,¨Ã¥B¥u¿í¦uªº SVG ³W®æ. §ó¦hªº¸ê°T¦bSVG, ½Ð¬Ý W3C ¶±¬ÛÃö»¡©ú:
http://www.w3.org/Graphics/SVG/
¤U¤@¸`¦³Ãö©óSVGªº³W®æ¥i¥H¨Ï¥Î¦b§Îª¬Àɪº©ú²Ó.
§Îª¬»¡©ú
=====================
Scalable Vector Graphics(SVG) ®æ¦¡¥Î¦b³oӧΪ¬.
¨C¤@Ó SVG ¼ÐÅÒªºÄÝ©Ê. ÄÝ©ÊÀ³¸Ó¦p¤Uªº®æ¦¡:
<svg:whatever style="name1: value1; name2: value2; ... name42: value42"/>
¥Ø«e¥u¦³¤U±¼Ë¦¡ÄݩʬO¥i¥H¨Ï¥Î:
stroke-width - ½uªº¼e«×,¬Û¹ï¨Ï¥ÎªÌ«ü©wªº¼e«×.
stroke-linecap - ½uºÝÂI. ¨ä¤¤¤@Ó butt, round, square,
projecting (a synonym for square), ©Î¹w³].
stroke-linejoin - ½u³s±µ®æ¦¡. ¨ä¤¤¤@Ó miter, round, bevel ©Î¹w³].
stroke-pattern - dash ¼Ë¥». ¨ä¤¤¤@Ónone, dashed, dash-dot,
dash-dot-dot, dotted ©Î¹w³].
stroke-dashlength - ¯}§é¸¹ªºªø«×¦bdash ¼Ë¥»ªº, ¦b¬Û¹ï©ó¨Ï¥ÎªÌ¿ï¾ÜªºÈ(¹w³]¬Osynonym for 1.0).
stroke - µ§Ä²ªºÃC¦â. §A¥i¥H«e´ºÃC¦â fg, ¹w³]È, I´º, bg ¬Û¤Ï,
¤å¦r©Î¨S¦³, ©Î¨Ï¥Î16¶i¦ìªºÃC¦âȮ榡 #rrggbb.
fill - ¶ñ¤JÃC¦â. ¬Û¦PªºÈ¦p´yÃä,
°£¤Fdefault ªº·N¸q¥~inverse ¬O¥æ´«. ¹w³]¤£·|¶ñ¤JÃC¦â, ¦pªGn¶ñ¤JÃC¦â½Ð¨Ï¥Î"fill: default"
©Ò¥Hnø»s¤@ӨϥÎhairlineªºµ§Ä²ªº¤è§Î, ¤U±¨Ï¥Î§Þ¥©:
<svg:rect style="stroke-width: 0" x="..." y="..." width="..." height="..."/>
³Q»{¥XªºÃ¸»s¤¸¥ó¬O:
<svg:g>
¸s²Õ¤¸¥ó. §A¥i¥H©ñ¸m¨ä¥¦ªº¤¸¥ó¦b¨ä¤¤. ¦b¸s²Õ¤¸¥óªº¼Ë¦¡±N·|Ác´Þ¨ì¥]§tªº¤¸¥ó(°£«D¥¦³Q»\¼g).
<svg:line x1="..." y1="..." x2="..." y2="..."/>
¤¸¥ó¬O½u.
<svg:polyline points="...."/>
³o¬O¤@Ó§é½u. That is, a number of connected line segments.
The points attribute holds the coordinates of the end points for the
line segments. ®y¼Ð¤À¶}¬O¨Ï¥ÎªÅ¥ÕÁä©Î³r¸¹.
«ØÄ³ªº®æ¦¡¬O "x1,y1 x2,y2 x3,y3 ...".
<svg:polygon points="...."/>
¦hÃä§Î.ÂIªº°Ñ¼Æ¦p¦P§é½u.
<svg:rect x1="..." y1="..." x2="..." y2="..."/>
³o¬O¤@Ó¤è§Î. ¥ª¤W¨¤¬O(x1,y1),¥k¤U¨¤ (x2,y2).
<svg:circle cx="..." cy="..." r="..."/>
¶ê§Îªº¶ê¤ß¬O (cx,cy) ¥b®|¬O r.
<svg:ellipse cx="..." cy="..." rx="..." ry="..."/>
¾ò¶ê,¶ê¤ß(cx, cy) ¥¦ªº¥b®|rx ¦b x ¤è¦V
¥B ry ¦b y ¤è¦V.
<svg:path d="...."/>
³o¬O³Ì½ÆÂøªºÃ¸»sªº¤¸¥ó. ¥¦»¡©ú¤F¤@Ó¸ô®|§êºtline segments©Mbezier curves. ¥¦¥Ø«e
¤ä´©elliptic arc ©Îquadratic bezier curves. d ¦r¦ê§êºt¼Æ¦r©R¥O¥Ñ"x arg1 arg2 ..."
³oùØ x ¬O¦r¤¸¥N½X¬O©R¥O,¦Ó°Ñ¼Æ¬O¨Ï¥ÎªÅ¥Õ©Î¬O³r¸¹¤À¶}.¨C¤@Ó©R¥O¦³¤@Óµ´¹ï©Î¬Û¹ïªº®t²§. .
¤ä´©ªº©R¥O¬O:
M x,y ²¾°Ê´å¼Ð
L x,y ø»s½u¨ì(x,y)
H x ø»s¤ô¥½u¨ì x
V y ø»s««ª½½u¨ì y
C x1,y1 x2,y2, x3,y3 ø»sbezier ¦±½u¥Ñ (x3,y3)¨ì (x1,y1) ©M (x2,y2) ¬°±±¨îÂI.
S x1,y1 x2,y2 ¦P¤W, ¦ý¬Oø»s`¥·Æ' bezier.¤]´N¬O, ±ÀÂ_²Ä¤@²Ä¤@Ó±±¨îÂI¥Ñ«e±ªºbezier.
Z Ãö³¬¸ô®|.
¦pªG¸ô®|Ãö³¬¨Ï¥Î z ©Î Z, µM«á¥¦¥i³Q¶ñº¡.