DIA¦p¦ó¦Û©w§Îª¬

§@ªÌ:cschen33.tw@yahoo.com.tw
«Ø¥ß¤é´Á:2007/8/20


°ò¦
diaªº¦Û©w§Îª¬¦Ü¤Ö¥]§t¤F¤G­ÓÀÉ®×
shape- ©w¸q§Îª¬­n¨Ï¥ÎXML ªºSVG®æ¦¡,
sheet - ¶°¦X¤W­z¤£¦Pªº§Îª¬,¤@¼Ë¬O¨Ï¥ÎXMLl®æ¦¡

¥Ø¿ý¦bC:\Documents and Settings\¨Ï¥ÎªÌ¦WºÙ\.diaªºshape,sheet
§A¥i¥H¨Ï¥Î¤å¦r½s¿è¾¹(¤ä´©UTF8)
À˵ø¤£¦PªºÀÉ®×,°Ñ¦Ò,§A¥u­nª`·N ¤£§t»y¨¥¤Î xml:lang="zh_tw"³¡¥÷¨ä©ó©¿²¤¤£¬Ý


1.§Ö³t«Ø¥ß¤@­Ó¦Û©w§Îª¬

¶}±Ò 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

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg">
  <name>shape - c1</name>
  <icon>c1.png</icon>
  <connections/>
  <aspectratio type="fixed"/>
  <svg:svg>
    <svg:path style="fill: #ffffff" d="M 8.35 5.4 C 9.35,5.4 13.65,6.7 8.25,6.6 C 2.85,6.5 7.35,5.4 8.35,5.4z"/>
    <svg:path style="fill: none; fill-opacity:0; stroke-width: 0.1; stroke: #000000" d="M 8.35 5.4 C 9.35,5.4 13.65,6.7 8.25,6.6 C 2.85,6.5 7.35,5.4 8.35,5.4"/>
  </svg:svg>
</shape>
±N<name>¤¤ªºshape§ï¬°custom(µù:name ¬O¤@­Ó­«­nªºkey±NshapeÀÉÃö³s¨ìsheetÀÉ,¦]¦¹¦WºÙ­n§¹¥þ¬Û¦P)
«Ø¥ßsheetÀÉ®× ¥»½d¨Ò¤¤ºÙ custom.sheet. ¨ä¤º®e¬O:
<?xml version="1.0" encoding="utf-8"?>
<sheet xmlns="http://www.lysator.liu.se/~alla/dia/dia-sheet-ns">
     <name>custom</name>
    <description>custom shape</description>
    <contents>
        <object name="custom - c1">
             <description>´ú¸Õ1</description>
        </object>
     </contents>
</sheet> 

·í¦³¦h­Ó shape®É¡A ¥u­n¦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


2.»¡©ú
°Ñ¦Ò¦Ûdiaºô¯¸¤Wªº¤å¥ó»¡©ú
¦Û©w§Îª¬¼Ò²Õ
===================
¨Ï¥ÎXMLÀɮרӴy­z§Îª¬.

¥¿½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,½Ð°Ñ¦Ò¨ä§Îª¬´y­zªº¦ì¸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ªG­n¶ñ¤JÃC¦â½Ð¨Ï¥Î"fill: default"

©Ò¥H­nø»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¶ñº¡.