Great Big Amazing Transformlist MERRRRRRRRRRRRRGE\!

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@934 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Alexis Deveria 2009-11-12 16:56:00 +00:00
commit 2a33e25dce
15 changed files with 5619 additions and 957 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,32 +1,168 @@
<svg xmlns="http://www.w3.org/2000/svg"> <svg xmlns="http://www.w3.org/2000/svg">
<!-- All images except logo created with SVG-edit - http://svg-edit.googlecode.com/ -->
<foreignContent id="select"> <g id="logo">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg version="1.0"
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> id="svg2" inkscape:output_extension="org.inkscape.output.svg.inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:cc="http://creativecommons.org/ns#" inkscape:export-ydpi="90" inkscape:export-xdpi="90" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
<a id="a32" xlink:href="http://svg-edit.googlecode.com/" xlink:title="SVG-edit, an in-browser vector graphics editor">
<path id="path3216" inkscape:randomized="0" inkscape:rounded="0" inkscape:flatsided="false" sodipodi:arg2="1.1780972" sodipodi:arg1="0.78539816" sodipodi:r2="155.59306" sodipodi:r1="194.03661" sodipodi:cy="346.96844" sodipodi:cx="239.79607" sodipodi:sides="8" sodipodi:type="star" fill="#FFFFFF" d="
M30.5,39.3l-6.2,0.5l-4.8,4l-4.8-4l-6.2-0.5L8,33.1l-4-4.8l4-4.8l0.5-6.2l6.2-0.5l4.8-4l4.8,4l6.2,0.5l0.5,6.2l4,4.8l-4,4.8
L30.5,39.3z"/>
<path id="path34" d="M20.6,44.7c2-0.6,3.3-2,3.6-3.9l0.1-0.7l0.4,0.3c2.6,1.9,6.1,1,7.3-1.9c0.7-1.6,0.4-4.1-0.6-4.9
c-0.4-0.3-0.3-0.4,0.5-0.5c5.1-0.7,5.2-8.3,0.2-9.4c-1.1-0.2-1.1-0.2-0.6-0.8c3.2-4.2-2.2-9.7-6.6-6.8l-0.7,0.5l-0.2-1
c-1.2-5-8.7-4.8-9.4,0.3c-0.1,0.8-0.1,0.8-0.7,0.3c-2.4-1.8-6.4-0.6-7.3,2.2c-0.5,1.6-0.2,3.8,0.7,4.6c0.4,0.4,0.4,0.5-0.4,0.6
c-5.3,0.8-5.3,8.8,0,9.5l0.7,0.1l-0.4,0.6c-2.2,3.3,0,7.6,3.9,7.6c1.2,0,2.5-0.4,3-1c0.4-0.4,0.5-0.4,0.5,0.1
C14.7,43.1,18,45.4,20.6,44.7L20.6,44.7z M18,42.1c-1.1-0.8-1.4-2.5-0.7-3.6c0.3-0.4,0.3-0.6,0.3-3.1v-2.7l-1.9,1.9
c-1.5,1.5-1.9,2-1.9,2.3c0,1.6-2.6,2.8-4,1.8C8,37.4,8.4,34.6,10.6,34c0.5-0.1,1-0.5,2.5-2l1.9-1.9l-2.6,0c-2.4,0-2.6,0-3.3,0.4
c-2.9,1.5-5.4-2.4-2.8-4.4c0.8-0.6,2.2-0.6,2.9-0.1c0.5,0.3,0.6,0.3,3.1,0.3h2.6l-1.8-1.8c-1.3-1.3-2-1.9-2.3-1.9
c-2.3-0.5-2.9-3.4-1-4.8c1.3-1,4,0.2,4,1.8c0,0.3,0.4,0.8,1.9,2.2l1.9,1.8l0-2.6c0-2.4,0-2.6-0.3-3c-1.1-1.6,0-3.8,2-4
c2.1-0.2,3.5,1.9,2.5,3.8c-0.4,0.7-0.4,0.9-0.4,3.3l0,2.6l1.8-1.8c1.3-1.3,1.9-2,1.9-2.3c0.5-2.4,3.7-2.9,4.8-0.7
c0.8,1.6,0,3.3-1.7,3.7c-0.5,0.1-1,0.5-2.5,2l-1.8,1.8h2.7c2.4,0,2.7,0,3.1-0.3c1-0.7,2.4-0.5,3.3,0.5c2,2.2-0.9,5.6-3.3,3.9
c-0.4-0.3-0.7-0.3-3.1-0.3h-2.7l1.8,1.8c1.5,1.5,2,1.9,2.5,2c2.9,0.7,2.7,4.9-0.3,5.1c-1.4,0.1-2.8-1.1-2.8-2.3
c0-0.1-0.8-1.1-1.9-2.1l-1.9-1.9l0,2.6c0,2.4,0,2.6,0.4,3.3C23,41.2,20.2,43.7,18,42.1L18,42.1z"/>
<g> <g>
<title>Layer 1</title> <g id="g36" transform="matrix(-4.6717475,0,0,4.6717475,1143.4575,-562.74962)">
<path stroke="#ffffff" fill="#000000" id="svg_13" d="m7.38168,2.46948l0.07502,17.03258l3.30083,-2.62617l2.62566,5.62751l4.20105,-2.62617l-3.30082,-4.80214l4.57614,-0.37517l-11.47787,-12.23044z"/> <path id="path38" opacity="0.2" enable-background="new " d="M240.5,126.5c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7
</g> c-0.3-0.4-1.1,0-1.7,0.6c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.5,126.5L240.5,126.5z"/>
</svg> <path id="path40" opacity="0.2" enable-background="new " d="M240.7,126.3c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7
</foreignContent> c-0.3-0.4-1.1,0-1.7,0.6c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.7,126.3L240.7,126.3z"/>
<path id="path42" opacity="0.2" enable-background="new " d="M240.1,126.1c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7
c-0.3-0.4-1.1,0-1.7,0.6c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.1,126.1L240.1,126.1z"/>
<path id="path44" fill="#FFFFFF" d="M240.1,126c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7c-0.3-0.4-1.1,0-1.7,0.6
c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.1,126L240.1,126z"/>
<foreignContent id="square"> <linearGradient id="path46_1_" gradientUnits="userSpaceOnUse" x1="251.6057" y1="30.2918" x2="373.0601" y2="100.0934" gradientTransform="matrix(-7.441159e-02 -0.3663 0.3663 -7.441159e-02 239.8726 211.8456)">
<stop offset="0" style="stop-color:#990000"/>
<stop offset="1" style="stop-color:#7C0000"/>
</linearGradient>
<path id="path46" fill="url(#path46_1_)" d="M240.1,126c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7c-0.3-0.4-1.1,0-1.7,0.6
c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.1,126L240.1,126z"/>
<linearGradient id="path48_1_" gradientUnits="userSpaceOnUse" x1="448.9506" y1="-141.7113" x2="469.8885" y2="-162.6511" gradientTransform="matrix(0.3734 -1.625768e-02 -1.625768e-02 -0.3734 65.4455 75.4761)">
<stop offset="0" style="stop-color:#F8F1DC"/>
<stop offset="1" style="stop-color:#D6A84A"/>
</linearGradient>
<path id="path48" fill="url(#path48_1_)" d="M238.5,122.6l1.1,3.1l-2.9-1.4l0,0c0,0,0,0-0.1,0l0,0l-6-6.7l0,0
c-0.2-0.2,0.1-0.7,0.6-1.2c0.5-0.5,1.1-0.7,1.2-0.5L238.5,122.6L238.5,122.6L238.5,122.6z"/>
<linearGradient id="path50_1_" gradientUnits="userSpaceOnUse" x1="473.214" y1="-2.063" x2="545.7217" y2="-163.0414" gradientTransform="matrix(-0.3737 0 0 -0.3737 407.2458 109.9867)">
<stop offset="0" style="stop-color:#FFA700"/>
<stop offset="0.7753" style="stop-color:#FFD700"/>
<stop offset="1" style="stop-color:#FF794B"/>
</linearGradient>
<path id="path50" fill="url(#path50_1_)" d="M237.1,124.4c0.2,0,0.4-0.1,0.6-0.3c0.1-0.1,0.3-0.2,0.4-0.3
c0.1-0.1,0.2-0.2,0.3-0.3c0.2-0.2,0.3-0.4,0.3-0.6l-0.1-0.3l0-0.1l-6-6.6c0,0.2-0.1,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3
c-0.1,0.1-0.3,0.2-0.4,0.3c-0.4,0.2-0.7,0.3-0.8,0.2l0,0l6,6.7l0,0c0,0,0,0,0.1,0l0,0L237.1,124.4L237.1,124.4z"/>
<path id="path52" fill="#FFFFFF" d="M230.6,117.5c0.1,0.1,0.5,0.1,0.9-0.2c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.2,0.3-0.3
c0.3-0.4,0.4-0.7,0.3-0.8l0,0l6.1,6.7c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.3
c-0.4,0.2-0.7,0.3-0.9,0.2c0,0-0.2-0.2-0.2-0.2L230.6,117.5L230.6,117.5L230.6,117.5z"/>
<path id="path54" fill="#FFFFFF" d="M231.2,116.4c0.5-0.5,1.1-0.7,1.2-0.5l1.4,1.5l0.1,2.1l-1.4,0.1l-1.8-2l0,0
C230.5,117.3,230.7,116.8,231.2,116.4L231.2,116.4z"/>
<path id="path56" fill="#FFFFFF" d="M230.6,117.5c0.1,0.1,0.5,0.1,0.9-0.2c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.2,0.3-0.3
c0.3-0.4,0.4-0.7,0.3-0.8l0,0l6.1,6.7c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.3
c-0.4,0.2-0.7,0.3-0.9,0.2c0,0-0.2-0.2-0.2-0.2L230.6,117.5L230.6,117.5L230.6,117.5z"/>
<linearGradient id="path58_1_" gradientUnits="userSpaceOnUse" x1="440.489" y1="-131.0965" x2="451.6169" y2="-117.8349" gradientTransform="matrix(0.3734 -1.625768e-02 -1.625768e-02 -0.3734 65.4455 75.4761)">
<stop offset="0" style="stop-color:#FFC957"/>
<stop offset="1" style="stop-color:#FF6D00"/>
</linearGradient>
<path id="path58" fill="url(#path58_1_)" d="M231.2,116.4c0.5-0.5,1.1-0.7,1.2-0.5l1.4,1.5l0.1,2.1l-1.4,0.1l-1.8-2l0,0
C230.5,117.3,230.7,116.8,231.2,116.4L231.2,116.4z"/>
<linearGradient id="path60_1_" gradientUnits="userSpaceOnUse" x1="454.4041" y1="-122.501" x2="501.1769" y2="-226.3438" gradientTransform="matrix(0.3734 -1.625768e-02 -1.625768e-02 -0.3734 65.4455 75.4761)">
<stop offset="0" style="stop-color:#FFA700"/>
<stop offset="0.7753" style="stop-color:#FFD700"/>
<stop offset="1" style="stop-color:#FF9200"/>
</linearGradient>
<path id="path60" fill="url(#path60_1_)" d="M230.6,117.5c0.1,0.1,0.5,0.1,0.9-0.2c0.1-0.1,0.3-0.2,0.4-0.3
c0.1-0.1,0.2-0.2,0.3-0.3c0.3-0.4,0.4-0.7,0.3-0.8l0,0l6.1,6.7c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3
c-0.1,0.1-0.3,0.2-0.4,0.3c-0.4,0.2-0.7,0.3-0.9,0.2c0,0-0.2-0.2-0.2-0.2L230.6,117.5L230.6,117.5L230.6,117.5z"/>
<linearGradient id="path62_1_" gradientUnits="userSpaceOnUse" x1="472.6249" y1="-26.9638" x2="549.3671" y2="-26.9638" gradientTransform="matrix(-0.3737 0 0 -0.3737 407.2458 109.9867)">
<stop offset="0" style="stop-color:#7D7D99"/>
<stop offset="0.1798" style="stop-color:#B1B1C5"/>
<stop offset="0.3727" style="stop-color:#BCBCC8"/>
<stop offset="0.6825" style="stop-color:#C8C8CB"/>
<stop offset="1" style="stop-color:#CCCCCC"/>
</linearGradient>
<path id="path62" fill="url(#path62_1_)" d="M231.1,118.1c0,0,0.5,0,0.9-0.3c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.2,0.3-0.3
c0.2-0.3,0.4-0.6,0.3-0.7l-0.5-0.6l0,0c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.3
c-0.4,0.2-0.7,0.3-0.9,0.2l0,0l5.9,6.5c0,0,0.1,0.2,0.2,0.2c0,0,0.1,0.1,0.1,0.1L231.1,118.1L231.1,118.1z"/>
<path id="path64" fill="#003333" d="M238.9,124.8c-0.1,0.1-0.3,0.2-0.4,0.3l1.1,0.5l-0.4-1.1C239.1,124.7,239,124.8,238.9,124.8z
"/>
<path id="path66" opacity="0.5" fill="#FFFFFF" enable-background="new " d="M238.2,123.4l-6.1-6.6c0,0,0,0,0,0
c0.1-0.1,0.2-0.3,0.3-0.4l6.1,6.6C238.4,123.1,238.4,123.2,238.2,123.4L238.2,123.4z"/>
<path id="path68" opacity="0.5" fill="#FFFFFF" enable-background="new " d="M232.2,116.7c0.1-0.1,0.1-0.1,0.1-0.2l6.1,6.6
c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.1-0.2,0.2l-6.1-6.7C232,116.9,232.1,116.8,232.2,116.7L232.2,116.7z"/>
</g>
</g>
</a>
</svg>
</g>
<g id="select">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path stroke="#ffffff" fill="#000000" id="svg_13" d="m7.38168,2.46948l0.07502,17.03258l3.30083,-2.62617l2.62566,5.62751l4.20105,-2.62617l-3.30082,-4.80214l4.57614,-0.37517l-11.47787,-12.23044z"/>
</svg>
</g>
<g id="select_node">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<circle stroke="#0000ff" fill="#00ffff" id="svg_44" r="3.87891" cy="5.3" cx="8.7" stroke-width="1.5"/>
<path d="m9.18161,5.6695l0.07763,15.16198l3.41588,-2.33775l2.71718,5.00947l4.34748,-2.33775l-3.41587,-4.27474l4.73565,-0.33397l-11.87794,-10.88723z" id="svg_13" fill="#000000" stroke="#ffffff"/>
</svg>
</g>
<g id="square">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient id="svg_2" x1="0.36328" y1="0.10156" x2="1" y2="1"> <linearGradient id="svg_2" x1="0.36328" y1="0.10156" x2="1" y2="1">
<stop offset="0" stop-color="#ffffff" stop-opacity="1"/> <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
<stop offset="1" stop-color="#3b7e9b" stop-opacity="1"/> <stop offset="1" stop-color="#3b7e9b" stop-opacity="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<rect x="1.5" y="1.5" width="20" height="20" id="svg_1" fill="url(#svg_2)" stroke="#000000"/> <rect x="1.5" y="1.5" width="20" height="20" id="svg_1" fill="url(#svg_2)" stroke="#000000"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="circle"> <g id="rect">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2">
<stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
<stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/>
</linearGradient>
</defs>
<rect transform="matrix(1, 0, 0, 1, 0, 0)" stroke="#000000" fill="url(#svg_2)" id="svg_1" height="12" width="20" y="5.5" x="1.5"/>
</svg>
</g>
<g id="fh_rect">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
<defs>
<linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2">
<stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
<stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/>
</linearGradient>
<linearGradient y2="0.3945" x2="0.6132" y1="0.1093" x1="0.3046" id="svg_9">
<stop stop-opacity="1" stop-color="#f9d225" offset="0"/>
<stop stop-opacity="1" stop-color="#bf5f00" offset="1"/>
</linearGradient>
</defs>
<rect stroke="#000000" stroke-width="2" fill="url(#svg_2)" id="svg_1" height="50" width="50" y="0.75" x="1.25"/>
<path stroke-width="2" stroke="#000000" fill="url(#svg_9)" id="svg_2" d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5"/>
<path stroke-width="2" stroke="#000000" fill="#fce0a9" id="svg_10" d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z"/>
<path id="svg_11" stroke-width="2" stroke="#000000" fill="#000000" d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z"/>
</svg>
</g>
<g id="circle">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54" id="svgzoom"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54" id="svgzoom">
<defs> <defs>
<linearGradient y2="1.0" x2="1.0" y1="0.1875" x1="0.171875" id="svg_4"> <linearGradient y2="1.0" x2="1.0" y1="0.1875" x1="0.171875" id="svg_4">
@ -34,13 +170,46 @@
<stop stop-opacity="1" stop-color="#ff6666" offset="1.0"/> <stop stop-opacity="1" stop-color="#ff6666" offset="1.0"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g style="pointer-events: all;"> <g>
<circle stroke-opacity="1" fill-opacity="1" style="pointer-events: all;" stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" r="23" cy="27" cx="27"/> <circle stroke-opacity="1" fill-opacity="1" stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" r="23" cy="27" cx="27"/>
</g> </g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="pencil"> <g id="ellipse">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54" id="svgzoom">
<defs>
<linearGradient y2="1.0" x2="1.0" y1="0.1875" x1="0.171875" id="svg_4">
<stop stop-opacity="1" stop-color="#ffffff" offset="0.0"/>
<stop stop-opacity="1" stop-color="#ff6666" offset="1.0"/>
</linearGradient>
</defs>
<g>
<ellipse stroke-opacity="1" fill-opacity="1" stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" rx="23" ry="15" cy="27" cx="27"/>
</g>
</svg>
</g>
<g id="fh_ellipse">
<svg viewBox="0 0 52 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945">
<stop offset="0" stop-color="#f9d225" stop-opacity="1"/>
<stop offset="1" stop-color="#bf5f00" stop-opacity="1"/>
</linearGradient>
<linearGradient id="svg_4" x1="0.17188" y1="0.1875" x2="1" y2="1">
<stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
<stop offset="1" stop-color="#ff6666" stop-opacity="1"/>
</linearGradient>
</defs>
<ellipse stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" rx="23" ry="12" cy="37" cx="27"/>
<path d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5" id="svg_2" fill="url(#svg_9)" stroke="#000000" stroke-width="2"/>
<path d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z" id="svg_10" fill="#fce0a9" stroke="#000000" stroke-width="2"/>
<path d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z" fill="#000000" stroke="#000000" stroke-width="2" id="svg_11"/>
</svg>
</g>
<g id="pencil">
<svg id="svgzoom" viewBox="0 0 48 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg id="svgzoom" viewBox="0 0 48 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs> <defs>
<linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945"> <linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945">
@ -53,11 +222,10 @@
<path d="M26.9318,41.1745 c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905 l0.1087,6.2126z" fill="#000000" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1" id="svg_11"/> <path d="M26.9318,41.1745 c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905 l0.1087,6.2126z" fill="#000000" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1" id="svg_11"/>
<path d="M2.3132,4.6197 c12.4998,-1.6891 10.4729,7.0945 0,21.6215 c22.9729,-4.0539 12.1620,5.4053 12.1620,13.1756 c-0.3377,4.0539 8.7836,21.9594 26.0135,-1.3513" id="svg_12" fill="none" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/> <path d="M2.3132,4.6197 c12.4998,-1.6891 10.4729,7.0945 0,21.6215 c22.9729,-4.0539 12.1620,5.4053 12.1620,13.1756 c-0.3377,4.0539 8.7836,21.9594 26.0135,-1.3513" id="svg_12" fill="none" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="pen"> <g id="pen">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient id="svg_16" x1="0.46484" y1="0.15625" x2="0.9375" y2="0.39453"> <linearGradient id="svg_16" x1="0.46484" y1="0.15625" x2="0.9375" y2="0.39453">
<stop offset="0" stop-color="#f2feff" stop-opacity="1"/> <stop offset="0" stop-color="#f2feff" stop-opacity="1"/>
@ -68,49 +236,37 @@
<stop offset="1" stop-color="#fce564" stop-opacity="1"/> <stop offset="1" stop-color="#fce564" stop-opacity="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<line x1="0.99844" y1="1.49067" x2="12.97691" y2="21.14149" id="svg_5" stroke="#000000" fill="none"/> <line x1="0.99844" y1="1.49067" x2="12.97691" y2="21.14149" id="svg_5" stroke="#000000" fill="none"/>
<path d="m14.05272,13.68732l-1.46451,7.52632l4.03769,-6.32571" id="svg_6" fill="#a0a0a0" stroke="#000000"/> <path d="m14.05272,13.68732l-1.46451,7.52632l4.03769,-6.32571" id="svg_6" fill="#a0a0a0" stroke="#000000"/>
<path d="m13.61215,10.26563c-0.38567,1.05257 -0.60723,2.40261 -0.50403,3.125l4.33468,1.81452c0.46153,-0.30769 1.6129,-1.71371 1.6129,-2.52016" id="svg_7" fill="url(#svg_19)" stroke="#000000"/> <path d="m13.61215,10.26563c-0.38567,1.05257 -0.60723,2.40261 -0.50403,3.125l4.33468,1.81452c0.46153,-0.30769 1.6129,-1.71371 1.6129,-2.52016" id="svg_7" fill="url(#svg_19)" stroke="#000000"/>
<path d="m16.61335,1.00028l-3.67325,8.60247l7.10285,3.47318l3.17783,-7.20549" id="svg_8" fill="url(#svg_16)" stroke="#000000"/> <path d="m16.61335,1.00028l-3.67325,8.60247l7.10285,3.47318l3.17783,-7.20549" id="svg_8" fill="url(#svg_16)" stroke="#000000"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="text"> <g id="text">
<svg id="svgzoom" viewBox="0 0 158 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg id="svgzoom" viewBox="0 0 158 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<text x="58" y="120" id="svg_1" fill="#000000" stroke="#000000" stroke-width="0" font-size="120pt" font-family="sans-serif" text-anchor="middle" fill-opacity="1" stroke-opacity="1" font-weight="bold">A</text> <text x="58" y="120" id="svg_1" fill="#000000" stroke="#000000" stroke-width="0" font-size="120pt" font-family="sans-serif" text-anchor="middle" fill-opacity="1" stroke-opacity="1" font-weight="bold">A</text>
<line x1="136" y1="7" x2="136" y2="121" id="svg_2" stroke="#000000" fill="none" fill-opacity="1" stroke-opacity="1" stroke-width="5"/> <line x1="136" y1="7" x2="136" y2="121" id="svg_2" stroke="#000000" fill="none" fill-opacity="1" stroke-opacity="1" stroke-width="5"/>
<line x1="120" y1="4" x2="152" y2="4" id="svg_3" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1"/> <line x1="120" y1="4" x2="152" y2="4" id="svg_3" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1"/>
</g>
<line x1="120" y1="124" x2="152" y2="124" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1" id="svg_4"/> <line x1="120" y1="124" x2="152" y2="124" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1" id="svg_4"/>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="path"> <g id="path">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient y2="1" x2="1" y1="0.28125" x1="0.33594" id="svg_4"> <linearGradient y2="1" x2="1" y1="0.28125" x1="0.33594" id="svg_4">
<stop stop-opacity="1" stop-color="#ffffff" offset="0"/> <stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
<stop stop-opacity="1" stop-color="#33a533" offset="1"/> <stop stop-opacity="1" stop-color="#33a533" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<path stroke-dasharray="null" stroke-width="4" stroke="#000000" fill="url(#svg_4)" id="svg_1" d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z"/> <path stroke-dasharray="null" stroke-width="4" stroke="#000000" fill="url(#svg_4)" id="svg_1" d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="image"> <g id="image">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_25"> <linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_25">
<stop stop-opacity="1" stop-color="#10284c" offset="0"/> <stop stop-opacity="1" stop-color="#10284c" offset="0"/>
@ -121,65 +277,53 @@
<stop stop-opacity="1" stop-color="#97c4ef" offset="1"/> <stop stop-opacity="1" stop-color="#97c4ef" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<rect x="1" y="3.83333" width="22" height="17" id="svg_18" fill="#202020" stroke="#ffffff" stroke-width="0"/> <rect x="1" y="3.83333" width="22" height="17" id="svg_18" fill="#202020" stroke="#ffffff" stroke-width="0"/>
<title>Layer 1</title>
<rect stroke-width="1.2" stroke="#ffffff" fill="#232947" id="svg_15" height="14" width="19" y="5.33333" x="2.5"/> <rect stroke-width="1.2" stroke="#ffffff" fill="#232947" id="svg_15" height="14" width="19" y="5.33333" x="2.5"/>
<rect fill="url(#svg_23)" id="svg_20" height="7.02244" width="15.96424" y="6.7266" x="4"/> <rect fill="url(#svg_23)" id="svg_20" height="7.02244" width="15.96424" y="6.7266" x="4"/>
<rect fill="url(#svg_25)" id="svg_24" height="4.02393" width="15.96303" y="13.77454" x="4"/> <rect fill="url(#svg_25)" id="svg_24" height="4.02393" width="15.96303" y="13.77454" x="4"/>
<circle fill="#ffffad" id="svg_26" r="1.83333" cy="9.82002" cx="7.13254"/> <circle fill="#ffffad" id="svg_26" r="1.83333" cy="9.82002" cx="7.13254"/>
<path d="m14.5696,13.77458l0.70243,-4.85313l-3.12899,4.85313l2.42656,0z" id="svg_14" fill="#404040" stroke="#000000" stroke-width="0"/> <path d="m14.5696,13.77458l0.70243,-4.85313l-3.12899,4.85313l2.42656,0z" id="svg_14" fill="#404040" stroke="#000000" stroke-width="0"/>
<path d="m15.27203,8.98531c2.74584,0.06386 2.42657,4.21456 -0.63857,4.85313c0.70243,-1.27714 1.66028,-3.63985 0.63857,-4.85313z" id="svg_17" fill="#404040" stroke="#000000" stroke-width="0"/> <path d="m15.27203,8.98531c2.74584,0.06386 2.42657,4.21456 -0.63857,4.85313c0.70243,-1.27714 1.66028,-3.63985 0.63857,-4.85313z" id="svg_17" fill="#404040" stroke="#000000" stroke-width="0"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="zoom"> <g id="zoom">
<svg viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient id="svg_30" x1="0" y1="0" x2="1" y2="0"> <linearGradient id="svg_30" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#d3d3d3" stop-opacity="1"/> <stop offset="0" stop-color="#d3d3d3" stop-opacity="1"/>
<stop offset="1" stop-color="#424242" stop-opacity="1"/> <stop offset="1" stop-color="#424242" stop-opacity="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<path d="m107.14774,101.03477l-0.64774,43.96523c5.00857,4.72089 14.00811,5.27188 19,0l-0.31667,-44.16l-9.61514,-19.84l-8.42046,20.03477z" id="svg_29" fill="url(#svg_30)" stroke="#202020" stroke-width="2" transform="rotate(-45, 116, 114)"/> <path d="m107.14774,101.03477l-0.64774,43.96523c5.00857,4.72089 14.00811,5.27188 19,0l-0.31667,-44.16l-9.61514,-19.84l-8.42046,20.03477z" id="svg_29" fill="url(#svg_30)" stroke="#202020" stroke-width="2" transform="rotate(-45, 116, 114)"/>
<circle cx="58" cy="58" r="51" id="svg_22" fill="#c0c0c0" stroke="#202020" stroke-width="5"/> <circle cx="58" cy="58" r="51" id="svg_22" fill="#c0c0c0" stroke="#202020" stroke-width="5"/>
<circle cx="58" cy="58" r="43" id="svg_27" fill="#aaccff" stroke="#202020" stroke-width="0"/> <circle cx="58" cy="58" r="43" id="svg_27" fill="#aaccff" stroke="#202020" stroke-width="0"/>
<path d="m15.68604,61.46511c38.13954,17.67442 48.13954,15.34883 85.11628,-0.46511c1.39536,18.60465 -19.30231,41.86047 -42.7907,40.93023c-21.6279,-0.93023 -42.7907,-21.86046 -42.32558,-40.46511z" id="svg_28" fill="#8cbaff" stroke="#202020" stroke-width="0"/> <path d="m15.68604,61.46511c38.13954,17.67442 48.13954,15.34883 85.11628,-0.46511c1.39536,18.60465 -19.30231,41.86047 -42.7907,40.93023c-21.6279,-0.93023 -42.7907,-21.86046 -42.32558,-40.46511z" id="svg_28" fill="#8cbaff" stroke="#202020" stroke-width="0"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="arrow_right"> <g id="arrow_right">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 50"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 50">
<path stroke="#000000" fill="#000000" d="m0,0l0,50l25,-25l-25,-25z"/> <path stroke="#000000" fill="#000000" d="m0,0l0,50l25,-25l-25,-25z"/>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="arrow_down"> <g id="arrow_down">
<svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<path transform="rotate(90, 26, 13)" d="m14,-12l0,50l25,-25l-25,-25z" fill="#000000" stroke="#000000"/> <path transform="rotate(90, 26, 13)" d="m14,-12l0,50l25,-25l-25,-25z" fill="#000000" stroke="#000000"/>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="new_image"> <g id="new_image">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/> <rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/>
<circle stroke-width="0" stroke="#a0a0a0" fill="#fff175" id="svg_65" r="3.83333" cy="6.24769" cx="19.16813"/> <circle stroke-width="0" stroke="#a0a0a0" fill="#fff175" id="svg_65" r="3.83333" cy="6.24769" cx="19.16813"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="save"> <g id="save">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_41"> <linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_41">
<stop stop-opacity="1" stop-color="#727272" offset="0"/> <stop stop-opacity="1" stop-color="#727272" offset="0"/>
@ -190,29 +334,39 @@
<stop stop-opacity="1" stop-color="#376eb7" offset="1"/> <stop stop-opacity="1" stop-color="#376eb7" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<g id="svg_44">
<path stroke="#202020" fill="#e0e0e0" id="svg_21" d="m1.51669,22.3458l21.13245,-0.10111l0,-6.06673l-2.62892,-9.80789l-16.27907,0.10111l-2.32558,9.20121l0.10111,6.67341z"/> <path stroke="#202020" fill="#e0e0e0" id="svg_21" d="m1.51669,22.3458l21.13245,-0.10111l0,-6.06673l-2.62892,-9.80789l-16.27907,0.10111l-2.32558,9.20121l0.10111,6.67341z"/>
<rect stroke="#efefef" fill="url(#svg_41)" id="svg_32" height="4.75108" width="19.21031" y="16.58227" x="2.42667"/> <rect stroke="#efefef" fill="url(#svg_41)" id="svg_32" height="4.75108" width="19.21031" y="16.58227" x="2.42667"/>
<path stroke="#ffffff" fill="#c0c0c0" id="svg_42" d="m4.55005,11.12235l0.70779,-2.83114l13.04348,0l0.70779,3.13448c-0.70779,2.52781 -4.04479,3.84227 -7.17897,3.84227c-2.72977,0 -6.37007,-1.41557 -7.28008,-4.1456z"/> <path stroke="#ffffff" fill="#c0c0c0" id="svg_42" d="m4.55005,11.12235l0.70779,-2.83114l13.04348,0l0.70779,3.13448c-0.70779,2.52781 -4.04479,3.84227 -7.17897,3.84227c-2.72977,0 -6.37007,-1.41557 -7.28008,-4.1456z"/>
</g>
<path stroke="#285582" fill="url(#svg_46)" id="svg_45" d="m7.14286,9.74903l5.21236,5.79151l5.50193,-5.88803l-2.50965,-0.09653l0,-2.79923c0,-2.3166 -2.3166,-5.59846 -6.56371,-5.59846c-4.05405,0 -6.27413,3.37838 -6.56371,6.75676c0.48263,-1.5444 2.7027,-4.53668 4.44015,-4.44015c2.12355,-0.09653 2.79923,1.64093 2.79923,3.37838l0.09653,2.79923l-2.41313,0.09653z"/> <path stroke="#285582" fill="url(#svg_46)" id="svg_45" d="m7.14286,9.74903l5.21236,5.79151l5.50193,-5.88803l-2.50965,-0.09653l0,-2.79923c0,-2.3166 -2.3166,-5.59846 -6.56371,-5.59846c-4.05405,0 -6.27413,3.37838 -6.56371,6.75676c0.48263,-1.5444 2.7027,-4.53668 4.44015,-4.44015c2.12355,-0.09653 2.79923,1.64093 2.79923,3.37838l0.09653,2.79923l-2.41313,0.09653z"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="docprops"> <g id="open">
<svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient y2="0.91406" x2="0.65234" y1="0.14063" x1="0.42578" id="svg_76">
<stop stop-opacity="1" stop-color="#81bbf4" offset="0"/>
<stop stop-opacity="1" stop-color="#376eb7" offset="1"/>
</linearGradient>
</defs>
<rect x="1.65" y="3.75" width="9.8" height="16.72712" id="svg_98" fill="#c0c0c0" stroke="#606060"/>
<rect stroke-width="0" stroke="#606060" fill="#a0a0a0" id="svg_88" height="14.17459" width="6.39585" y="4.9758" x="2.89542"/>
<path d="m18.62576,4.54365l0,6.91443l-9.9395,0l-0.08643,-10.11236l6.828,0l3.19792,3.19793z" id="svg_99" fill="#e0e0e0" stroke="#404040"/>
<path d="m2.95,20.53644l1.65,-12.03644l16.2,0l-1.5,12l-16.35,0.03643z" id="svg_97" fill="url(#svg_76)" stroke="#285582"/>
<line fill="none" stroke="#606060" id="svg_89" y2="4.28436" x2="13.95851" y1="4.28436" x1="10.32844"/>
<line fill="none" stroke="#606060" id="svg_91" y2="6.53155" x2="14.82282" y1="6.53155" x1="10.32844"/>
<path stroke-width="0" stroke="#606060" fill="#ffffff" id="svg_100" d="m15.25895,1.95069l-0.00401,2.85225l2.89558,0.00004l-2.89157,-2.85229z"/>
</svg>
</g>
<g id="docprops">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient y2="1" x2="1" y1="0.5" x1="1" id="svg_53"> <linearGradient y2="1" x2="1" y1="0.5" x1="1" id="svg_53">
<stop stop-opacity="1" stop-color="#606060" offset="0"/> <stop stop-opacity="1" stop-color="#606060" offset="0"/>
<stop stop-opacity="0" stop-color="#5e5e5e" offset="1"/> <stop stop-opacity="0" stop-color="#5e5e5e" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<rect stroke="#606060" fill="#eaeaea" id="svg_55" height="21" width="18" y="1.6692" x="2.42792"/> <rect stroke="#606060" fill="#eaeaea" id="svg_55" height="21" width="18" y="1.6692" x="2.42792"/>
<line fill="none" stroke="#a0a0a0" id="svg_56" y2="4.37757" x2="14.89023" y1="4.37757" x1="6.696"/> <line fill="none" stroke="#a0a0a0" id="svg_56" y2="4.37757" x2="14.89023" y1="4.37757" x1="6.696"/>
<line fill="none" stroke="#a0a0a0" id="svg_57" y2="7.10804" x2="12.92026" y1="7.10804" x1="6.6948"/> <line fill="none" stroke="#a0a0a0" id="svg_57" y2="7.10804" x2="12.92026" y1="7.10804" x1="6.6948"/>
@ -224,15 +378,11 @@
<path transform="rotate(-45, 12.5448, 11.7085)" stroke-width="0" stroke="#000000" fill="#606060" id="svg_31" d="m11.24329,8.73944l0,2.79974l2.53499,0.07777l0,-2.95528c1.78134,0.07777 2.26093,1.39987 2.12391,2.95528c-0.06851,1.63318 -1.30175,3.49967 -3.49418,3.26636c-2.19242,-0.31108 -2.87755,-1.39987 -3.15161,-2.72197c-0.27406,-1.39987 0.41108,-3.34413 1.98689,-3.4219z"/> <path transform="rotate(-45, 12.5448, 11.7085)" stroke-width="0" stroke="#000000" fill="#606060" id="svg_31" d="m11.24329,8.73944l0,2.79974l2.53499,0.07777l0,-2.95528c1.78134,0.07777 2.26093,1.39987 2.12391,2.95528c-0.06851,1.63318 -1.30175,3.49967 -3.49418,3.26636c-2.19242,-0.31108 -2.87755,-1.39987 -3.15161,-2.72197c-0.27406,-1.39987 0.41108,-3.34413 1.98689,-3.4219z"/>
<rect opacity="0.95" transform="rotate(-45, 16.2485, 15.1732)" stroke-width="0" stroke="#000000" fill="url(#svg_53)" id="svg_50" height="4.85445" width="2.57974" y="12.746" x="15.04047"/> <rect opacity="0.95" transform="rotate(-45, 16.2485, 15.1732)" stroke-width="0" stroke="#000000" fill="url(#svg_53)" id="svg_50" height="4.85445" width="2.57974" y="12.746" x="15.04047"/>
</g> </g>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="source"> <g id="source">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 52"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 52">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke-width="0" stroke="#000000" fill="#019191" id="svg_40" y="15" x="28.23" font-weight="bold">s</text> <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke-width="0" stroke="#000000" fill="#019191" id="svg_40" y="15" x="28.23" font-weight="bold">s</text>
<text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke-width="0" stroke="#000000" fill="#019191" id="svg_47" y="30" x="28.23" font-weight="bold">v</text> <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke-width="0" stroke="#000000" fill="#019191" id="svg_47" y="30" x="28.23" font-weight="bold">v</text>
<text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke-width="0" stroke="#000000" fill="#019191" id="svg_48" y="44" x="28.23" font-weight="bold">g</text> <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke-width="0" stroke="#000000" fill="#019191" id="svg_48" y="44" x="28.23" font-weight="bold">g</text>
@ -240,56 +390,42 @@
<line id="svg_62" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="16" y1="26" x1="5"/> <line id="svg_62" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="16" y1="26" x1="5"/>
<line id="svg_63" stroke-width="3" fill="none" stroke="#aa0000" y2="43" x2="39" y1="25" x1="50"/> <line id="svg_63" stroke-width="3" fill="none" stroke="#aa0000" y2="43" x2="39" y1="25" x1="50"/>
<line id="svg_64" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="39" y1="26" x1="51"/> <line id="svg_64" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="39" y1="26" x1="51"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="wireframe"> <g id="wireframe">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<circle stroke="#000000" fill="none" id="svg_49" r="8" cy="9.5" cx="9.5"/> <circle stroke="#000000" fill="none" id="svg_49" r="8" cy="9.5" cx="9.5"/>
<rect stroke="#000000" fill="none" id="svg_52" height="14" width="14" y="8.5" x="8.5"/> <rect stroke="#000000" fill="none" id="svg_52" height="14" width="14" y="8.5" x="8.5"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="undo"> <g id="undo">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient id="svg_66" x1="0.04297" y1="0.00391" x2="0.21484" y2="0.875"> <linearGradient id="svg_66" x1="0.04297" y1="0.00391" x2="0.21484" y2="0.875">
<stop offset="0" stop-color="#f7f963" stop-opacity="1"/> <stop offset="0" stop-color="#f7f963" stop-opacity="1"/>
<stop offset="1" stop-color="#d3c310" stop-opacity="1"/> <stop offset="1" stop-color="#d3c310" stop-opacity="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<path transform="rotate(-90, 10.3017, 11.5526)" d="m6.70188,10.72562l6.55493,-7.13388l6.65817,7.24912l-3.79441,0.03193l0,2.72259c-0.04257,2.74017 -2.76516,5.83068 -7.81235,6.02135c-5.18575,0 -7.1226,-3.75464 -7.49302,-7.41944c0.61736,1.6754 3.14913,3.78397 5.3716,3.67918c2.71635,0.1048 4.41501,-0.61714 4.41501,-2.50184l0,-2.64901l-3.89995,0z" id="svg_45" fill="url(#svg_66)" stroke="#b7a800"/> <path transform="rotate(-90, 10.3017, 11.5526)" d="m6.70188,10.72562l6.55493,-7.13388l6.65817,7.24912l-3.79441,0.03193l0,2.72259c-0.04257,2.74017 -2.76516,5.83068 -7.81235,6.02135c-5.18575,0 -7.1226,-3.75464 -7.49302,-7.41944c0.61736,1.6754 3.14913,3.78397 5.3716,3.67918c2.71635,0.1048 4.41501,-0.61714 4.41501,-2.50184l0,-2.64901l-3.89995,0z" id="svg_45" fill="url(#svg_66)" stroke="#b7a800"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="redo"> <g id="redo">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_71"> <linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_71">
<stop stop-opacity="1" stop-color="#98fc46" offset="0"/> <stop stop-opacity="1" stop-color="#98fc46" offset="0"/>
<stop stop-opacity="1" stop-color="#56aa25" offset="1"/> <stop stop-opacity="1" stop-color="#56aa25" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<path transform="rotate(-90, 12.7299, 11.5526)" d="m9.11294,12.43144l6.54089,6.84566l6.6439,-6.95624l-3.78628,-0.03064l0,-2.61259c-0.04248,-2.62946 -2.75924,-5.5951 -7.79561,-5.77807c-5.17464,0 -7.10734,3.60294 -7.47697,7.11967c0.61604,-1.60771 3.14238,-3.63109 5.36009,-3.53053c2.71053,-0.10056 4.40555,0.59221 4.40555,2.40076l0,2.54198l-3.89159,0z" id="svg_45" fill="url(#svg_71)" stroke="#44aa00"/> <path transform="rotate(-90, 12.7299, 11.5526)" d="m9.11294,12.43144l6.54089,6.84566l6.6439,-6.95624l-3.78628,-0.03064l0,-2.61259c-0.04248,-2.62946 -2.75924,-5.5951 -7.79561,-5.77807c-5.17464,0 -7.10734,3.60294 -7.47697,7.11967c0.61604,-1.60771 3.14238,-3.63109 5.36009,-3.53053c2.71053,-0.10056 4.40555,0.59221 4.40555,2.40076l0,2.54198l-3.89159,0z" id="svg_45" fill="url(#svg_71)" stroke="#44aa00"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="clone"> <g id="clone">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient y2="1" x2="1" y1="0" x1="0" id="svg_36"> <linearGradient y2="1" x2="1" y1="0" x1="0" id="svg_36">
<stop stop-opacity="1" stop-color="#f9f3de" offset="0"/> <stop stop-opacity="1" stop-color="#f9f3de" offset="0"/>
@ -300,47 +436,36 @@
<stop stop-opacity="1" stop-color="#af995b" offset="1"/> <stop stop-opacity="1" stop-color="#af995b" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<path stroke="#8f5902" fill="url(#svg_69)" id="svg_34" d="m2.11676,16.32061l-0.13787,-5.05515l1.93015,-2.02206l10.11029,0l2.02206,2.29779l0,4.77941l-13.92463,0z"/> <path stroke="#8f5902" fill="url(#svg_69)" id="svg_34" d="m2.11676,16.32061l-0.13787,-5.05515l1.93015,-2.02206l10.11029,0l2.02206,2.29779l0,4.77941l-13.92463,0z"/>
<title>Layer 1</title>
<rect x="7.85379" y="6.30027" width="2.2932" height="4.3407" id="svg_38" fill="url(#svg_36)" stroke="#8f5902" rx="1" ry="1"/> <rect x="7.85379" y="6.30027" width="2.2932" height="4.3407" id="svg_38" fill="url(#svg_36)" stroke="#8f5902" rx="1" ry="1"/>
<circle stroke="#8f5902" fill="url(#svg_36)" id="svg_35" r="2.96392" cy="4.48149" cx="9.11757"/> <circle stroke="#8f5902" fill="url(#svg_36)" id="svg_35" r="2.96392" cy="4.48149" cx="9.11757"/>
<line x1="2.44838" y1="12.03512" x2="15.5524" y2="12.03512" id="svg_39" stroke="#f9f3de" fill="none"/> <line x1="2.44838" y1="12.03512" x2="15.5524" y2="12.03512" id="svg_39" stroke="#f9f3de" fill="none"/>
<path d="m6.72427,12.55859l4.74203,0l-2.30831,2.07258l-2.43372,-2.07258z" id="svg_43" fill="#000000" stroke="#8f5902" fill-opacity="0.76" stroke-width="0"/> <path d="m6.72427,12.55859l4.74203,0l-2.30831,2.07258l-2.43372,-2.07258z" id="svg_43" fill="#000000" stroke="#8f5902" fill-opacity="0.76" stroke-width="0"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="delete"> <g id="delete">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<rect ry="3" rx="3" stroke="#800000" fill="#aa0000" id="svg_37" height="20.29514" width="21.17486" y="1.70304" x="1.42011"/> <rect ry="3" rx="3" stroke="#800000" fill="#aa0000" id="svg_37" height="20.29514" width="21.17486" y="1.70304" x="1.42011"/>
<rect ry="3" rx="3" stroke="#ff5555" fill="#aa0000" id="svg_67" height="18.63022" width="19.61118" y="2.53597" x="2.20258"/> <rect ry="3" rx="3" stroke="#ff5555" fill="#aa0000" id="svg_67" height="18.63022" width="19.61118" y="2.53597" x="2.20258"/>
<line stroke-width="2" fill="none" stroke="#ffffff" id="svg_68" y2="16.85127" x2="17.00646" y1="6.85127" x1="7.00646"/> <line stroke-width="2" fill="none" stroke="#ffffff" id="svg_68" y2="16.85127" x2="17.00646" y1="6.85127" x1="7.00646"/>
<line stroke-width="2" id="svg_70" fill="none" stroke="#ffffff" y2="16.85127" x2="7.00646" y1="6.85127" x1="17.00646"/> <line stroke-width="2" id="svg_70" fill="none" stroke="#ffffff" y2="16.85127" x2="7.00646" y1="6.85127" x1="17.00646"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="go_up"> <g id="go_up">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs> <defs>
<linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_74"> <linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_74">
<stop stop-opacity="1" stop-color="#afe853" offset="0"/> <stop stop-opacity="1" stop-color="#afe853" offset="0"/>
<stop stop-opacity="1" stop-color="#52a310" offset="1"/> <stop stop-opacity="1" stop-color="#52a310" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<path stroke="#008000" fill="url(#svg_74)" id="svg_33" d="m5.38492,16.77043l7.07692,0l0,-5.23077l4.15385,0l-7.69231,-10.15385l-7.69231,10.15385l4.15385,0l0,5.23077z"/> <path stroke="#008000" fill="url(#svg_74)" id="svg_33" d="m5.38492,16.77043l7.07692,0l0,-5.23077l4.15385,0l-7.69231,-10.15385l-7.69231,10.15385l4.15385,0l0,5.23077z"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="go_down"> <g id="go_down">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
<defs> <defs>
<linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_75"> <linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_75">
@ -348,14 +473,11 @@
<stop stop-opacity="1" stop-color="#52a310" offset="1"/> <stop stop-opacity="1" stop-color="#52a310" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<path stroke="#008000" fill="url(#svg_75)" id="svg_33" d="m5.3015,1.69202l6.93483,0l0,5.07323l4.07045,0l-7.53786,9.84803l-7.53786,-9.84803l4.07045,0l0,-5.07323z"/> <path stroke="#008000" fill="url(#svg_75)" id="svg_33" d="m5.3015,1.69202l6.93483,0l0,5.07323l4.07045,0l-7.53786,9.84803l-7.53786,-9.84803l4.07045,0l0,-5.07323z"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="move_bottom"> <g id="move_bottom">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 23"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 23">
<defs> <defs>
<linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_80"> <linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_80">
@ -363,19 +485,16 @@
<stop stop-opacity="1" stop-color="#fcfc9f" offset="1"/> <stop stop-opacity="1" stop-color="#fcfc9f" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<line stroke-width="2" fill="none" stroke="#000000" id="svg_72" y2="2.5" x2="22" y1="2.5" x1="10.5"/> <line stroke-width="2" fill="none" stroke="#000000" id="svg_72" y2="2.5" x2="22" y1="2.5" x1="10.5"/>
<line id="svg_73" stroke-width="2" fill="none" stroke="#000000" y2="6.5" x2="21.99844" y1="6.5" x1="10.49844"/> <line id="svg_73" stroke-width="2" fill="none" stroke="#000000" y2="6.5" x2="21.99844" y1="6.5" x1="10.49844"/>
<line id="svg_74" stroke-width="2" fill="none" stroke="#000000" y2="10.5" x2="21.99922" y1="10.5" x1="10.49922"/> <line id="svg_74" stroke-width="2" fill="none" stroke="#000000" y2="10.5" x2="21.99922" y1="10.5" x1="10.49922"/>
<line id="svg_75" stroke-width="2" fill="none" stroke="#000000" y2="14.5" x2="21.99922" y1="14.5" x1="10.49922"/> <line id="svg_75" stroke-width="2" fill="none" stroke="#000000" y2="14.5" x2="21.99922" y1="14.5" x1="10.49922"/>
<rect stroke="#000000" fill="url(#svg_80)" id="svg_77" height="2.2" width="20" y="17.65" x="1.65"/> <rect stroke="#000000" fill="url(#svg_80)" id="svg_77" height="2.2" width="20" y="17.65" x="1.65"/>
<path stroke-width="0" stroke="#000000" fill="#000000" id="svg_81" d="m4.25,1.55l2.35,0l0,11.05l2,0l-3.175,3.45l-3.175,-3.45l2,0l0,-11.05z"/> <path stroke-width="0" stroke="#000000" fill="#000000" id="svg_81" d="m4.25,1.55l2.35,0l0,11.05l2,0l-3.175,3.45l-3.175,-3.45l2,0l0,-11.05z"/>
</g>
</svg> </svg>
</foreignContent> </g>
<foreignContent id="move_top"> <g id="move_top">
<svg viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs> <defs>
<linearGradient id="svg_86" x1="0" y1="0" x2="1" y2="0"> <linearGradient id="svg_86" x1="0" y1="0" x2="1" y2="0">
@ -383,17 +502,172 @@
<stop offset="1" stop-color="#617e96" stop-opacity="1"/> <stop offset="1" stop-color="#617e96" stop-opacity="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<g>
<title>Layer 1</title>
<line x1="1.3" y1="8.19922" x2="12.8" y2="8.19922" id="svg_72" stroke="#000000" fill="none" stroke-width="2"/> <line x1="1.3" y1="8.19922" x2="12.8" y2="8.19922" id="svg_72" stroke="#000000" fill="none" stroke-width="2"/>
<line x1="1.29844" y1="12.19922" x2="12.79844" y2="12.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_73"/> <line x1="1.29844" y1="12.19922" x2="12.79844" y2="12.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_73"/>
<line x1="1.29922" y1="16.19922" x2="12.79922" y2="16.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_74"/> <line x1="1.29922" y1="16.19922" x2="12.79922" y2="16.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_74"/>
<line x1="1.29922" y1="20.19922" x2="12.79922" y2="20.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_75"/> <line x1="1.29922" y1="20.19922" x2="12.79922" y2="20.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_75"/>
<rect x="1.55" y="1.85" width="20" height="3.2" id="svg_77" fill="url(#svg_86)" stroke="#000000"/> <rect x="1.55" y="1.85" width="20" height="3.2" id="svg_77" fill="url(#svg_86)" stroke="#000000"/>
<path d="m16.83475,21.14603l2.33207,0l0,-11.04578l1.98474,0l-3.15077,-3.44869l-3.15077,3.44869l1.98474,0l0,11.04578z" id="svg_81" fill="#000000" stroke="#000000" stroke-width="0"/> <path d="m16.83475,21.14603l2.33207,0l0,-11.04578l1.98474,0l-3.15077,-3.44869l-3.15077,3.44869l1.98474,0l0,11.04578z" id="svg_81" fill="#000000" stroke="#000000" stroke-width="0"/>
</svg>
</g>
<g id="group">
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="svg_90" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#ccddff" stop-opacity="1"/>
<stop offset="1" stop-color="#789fed" stop-opacity="1"/>
</linearGradient>
<linearGradient id="svg_92" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#70a1e5" stop-opacity="1"/>
<stop offset="1" stop-color="#4b6baf" stop-opacity="1"/>
</linearGradient>
</defs>
<rect x="13.5" y="0.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_79"/>
<rect x="13.5" y="13.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_82"/>
<rect x="0.5" y="13.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_83"/>
<rect x="2.5" y="2.5" width="8" height="7" fill="#a0a0a0" stroke="#555555" id="svg_85"/>
<rect x="2.5" y="2.5" width="8" height="7" fill="url(#svg_90)" stroke="url(#svg_92)" id="svg_87"/>
<rect x="5.5" y="6.5" width="8" height="7" id="svg_84" fill="#7399d6" stroke="url(#svg_92)"/>
<rect x="0.5" y="0.5" width="2" height="2" id="svg_78" fill="#a0a0a0" stroke="#555555"/>
</svg>
</g>
<g id="ungroup">
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="svg_90" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#ccddff" stop-opacity="1"/>
<stop offset="1" stop-color="#789fed" stop-opacity="1"/>
</linearGradient>
<linearGradient id="svg_92" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#70a1e5" stop-opacity="1"/>
<stop offset="1" stop-color="#4b6baf" stop-opacity="1"/>
</linearGradient>
</defs>
<rect x="2.5" y="2.5" width="8" height="7" fill="url(#svg_90)" stroke="url(#svg_92)" id="svg_87"/>
<rect x="5.5" y="6.5" width="8" height="7" id="svg_84" fill="#7399d6" stroke="url(#svg_92)"/>
<rect x="9.5" y="1.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_79"/>
<rect x="1.5" y="8.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_83"/>
<rect x="1.5" y="1.5" width="2" height="2" id="svg_78" fill="#a0a0a0" stroke="#555555"/>
<rect id="svg_93" x="12.5" y="5.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
<rect id="svg_94" x="12.5" y="12.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
<rect id="svg_95" x="4.5" y="12.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
<rect id="svg_96" x="4.5" y="5.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
</svg>
</g>
<g id="align_left">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<rect stroke="#606060" fill="#ffffff" id="svg_4" height="7" width="12" y="2.5" x="2.5"/>
<rect stroke-width="0" stroke="#606060" fill="#c0c0c0" id="svg_5" height="4" width="11" y="4" x="2"/>
<rect id="svg_6" stroke="#606060" fill="#ffffff" height="7" width="18" y="12.5" x="2.5"/>
<rect id="svg_7" stroke-width="0" stroke="#606060" fill="#c0c0c0" height="4" width="17" y="14" x="2"/>
<rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="1.5"/>
</svg>
</g>
<g id="align_center">
<svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="1.5" y="12.5" width="18" height="7" fill="#c0c0c0" stroke="#606060" id="svg_6"/>
<rect x="4.5" y="2.5" width="12" height="7" id="svg_4" fill="#c0c0c0" stroke="#606060"/>
<rect x="9.5" y="-10" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/>
<rect x="2.5" y="13.5" width="16" height="5" fill="none" stroke="#ffffff" id="svg_7"/>
<rect x="5.5" y="3.5" width="10" height="5" id="svg_5" fill="none" stroke="#ffffff"/>
</svg>
</g>
<g id="align_right">
<svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="7.5" y="2.5" width="12" height="7" id="svg_4" fill="#ffffff" stroke="#606060"/>
<rect x="9" y="4" width="11" height="4" id="svg_5" fill="#c0c0c0" stroke="#606060" stroke-width="0"/>
<rect x="1.5" y="12.5" width="18" height="7" fill="#ffffff" stroke="#606060" id="svg_6"/>
<rect x="3" y="14" width="17" height="4" fill="#c0c0c0" stroke="#606060" stroke-width="0" id="svg_7"/>
<rect x="18.5" y="-10" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/>
</svg>
</g>
<g id="align_top">
<svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g transform="rotate(90, 11, 11)" id="svg_1">
<rect x="2.5" y="3.5" width="12" height="7" id="svg_4" fill="#ffffff" stroke="#606060"/>
<rect x="2" y="5" width="11" height="4" id="svg_5" fill="#c0c0c0" stroke="#606060" stroke-width="0"/>
<rect x="2.5" y="13.5" width="18" height="7" fill="#ffffff" stroke="#606060" id="svg_6"/>
<rect x="2" y="15" width="17" height="4" fill="#c0c0c0" stroke="#606060" stroke-width="0" id="svg_7"/>
<rect x="1.5" y="-9" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/>
</g> </g>
</svg> </svg>
</foreignContent> </g>
<g id="align_middle">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<g transform="rotate(90, 12, 11.5)" id="svg_1">
<rect id="svg_6" stroke="#606060" fill="#c0c0c0" height="7" width="18" y="14" x="3"/>
<rect stroke="#606060" fill="#c0c0c0" id="svg_4" height="7" width="12" y="4" x="6"/>
<rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-8.5" x="11"/>
<rect id="svg_7" stroke="#ffffff" fill="none" height="5" width="16" y="15" x="4"/>
<rect stroke="#ffffff" fill="none" id="svg_5" height="5" width="10" y="5" x="7"/>
</g>
</svg>
</g>
<g id="align_bottom">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<g transform="rotate(90, 11, 11)" id="svg_1">
<rect stroke="#606060" fill="#ffffff" id="svg_4" height="7" width="12" y="2.5" x="7.5"/>
<rect stroke-width="0" stroke="#606060" fill="#c0c0c0" id="svg_5" height="4" width="11" y="4" x="9"/>
<rect id="svg_6" stroke="#606060" fill="#ffffff" height="7" width="18" y="12.5" x="1.5"/>
<rect id="svg_7" stroke-width="0" stroke="#606060" fill="#c0c0c0" height="4" width="17" y="14" x="3"/>
<rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="18.5"/>
</g>
</svg>
</g>
<g id="eye">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 17">
<defs>
<linearGradient y2="0.79688" x2="0.5625" y1="0.19141" x1="0.42969" id="svg_91">
<stop stop-opacity="1" stop-color="#d3a16b" offset="0"/>
<stop stop-opacity="1" stop-color="#a37c53" offset="1"/>
</linearGradient>
</defs>
<path stroke-width="0" stroke="#000000" fill="url(#svg_91)" id="svg_9" d="m0.12852,8.18338c3.59931,-7.71208 13.19749,-7.36932 16.75236,0.08569c-3.02165,7.5407 -13.59741,7.66924 -16.75236,-0.08569z"/>
<path id="svg_76" stroke-width="0" stroke="#000000" fill="#ffffff" d="m0.33033,8.2557c3.5173,-4.97159 12.89675,-4.75063 16.37062,0.05524c-2.95279,4.86111 -13.28756,4.94397 -16.37062,-0.05524z"/>
<circle stroke-width="0" stroke="#000000" fill="#4f92c1" id="svg_88" r="3.08008" cy="7.71116" cx="8.45861"/>
<circle stroke-width="0" stroke="#000000" fill="#000000" id="svg_89" r="1.27539" cy="7.6539" cx="8.43159"/>
</svg>
</g>
<g id="no_color">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line fill="none" stroke="#d40000" id="svg_90" y2="24" x2="24" y1="0" x1="0"/>
<line id="svg_92" fill="none" stroke="#d40000" y2="24" x2="0" y1="0" x1="24"/>
</svg>
</g>
<g id="ok">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<defs>
<linearGradient y2="0.65625" x2="0.94141" y1="0.43359" x1="0.42969" id="svg_106">
<stop stop-opacity="1" stop-color="#38ff45" offset="0"/>
<stop stop-opacity="1" stop-color="#127c0c" offset="1"/>
</linearGradient>
</defs>
<path transform="rotate(45, 12, 10)" stroke="#005500" fill="url(#svg_106)" id="svg_101" d="m7.9,15.9l4.9,-0.05l0,-13.75l3.8,0l0,17.6l-8.7,0l0,-3.8z"/>
</svg>
</g>
<g id="cancel">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<defs>
<linearGradient y2="0.65625" x2="0.94141" y1="0.43359" x1="0.42969" id="svg_9">
<stop stop-opacity="1" stop-color="#ff3838" offset="0"/>
<stop stop-opacity="1" stop-color="#7a0c0c" offset="1"/>
</linearGradient>
</defs>
<path stroke="#550000" fill="url(#svg_9)" id="svg_101" d="m2.10526,10.52632l7.36842,0l0,-7.36842l3.68421,0l0,7.36842l7.36842,0l0,3.68421l-7.36842,0l0,7.36842l-3.68421,0l0,-7.36842l-7.36842,0l0,-3.68421z" transform="rotate(45, 11.3, 12.3)"/>
</svg>
</g>
<g id="svg_eof"/> <g id="svg_eof"/>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

View File

@ -116,5 +116,19 @@
{"id":"tool_node_delete","title":"Delete Node"}, {"id":"tool_node_delete","title":"Delete Node"},
{"id":"selLayerLabel","textContent":"Move elements to:"}, {"id":"selLayerLabel","textContent":"Move elements to:"},
{"id":"selLayerNames","title":"Move selected elements to a different layer"}, {"id":"selLayerNames","title":"Move selected elements to a different layer"},
{"id":"sidepanel_handle","title":"Drag left/right to resize side panel [X]","textContent":"L a y e r s"} {"id":"sidepanel_handle","title":"Drag left/right to resize side panel [X]","textContent":"L a y e r s"},
{"js_strings": {
"invalidAttrValGiven":"Invalid value given",
"noContentToFitTo":"No content to fit to",
'layer':"Layer",
"dupeLayerName":"There is already a layer named that!",
"enterUniqueLayerName":"Please enter a unique layer name",
"enterNewLayerName":"Please enter the new layer name",
"layerHasThatName":"Layer already has that name",
"QmoveElemsToLayer":"Move selected elements to layer '%s'?",
"QwantToClear":"Do you want to clear the drawing?\nThis will also erase your undo history!",
"QerrorsRevertToSource":"There were parsing errors in your SVG source.\nRevert back to original SVG source?",
"QignoreSourceChanges":"Ignore changes made to SVG source?"
}
}
]; ];

View File

@ -1,33 +1,43 @@
// function GUP is taken from http://www.netlobo.com/url_query_string_javascript.html var put_locale = function(svgCanvas, given_param){
// gup = get URL parameter var lang_param;
function gup( name ) if(given_param) {
{ lang_param = given_param;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); } else {
var regexS = "[\\?&]"+name+"=([^&#]*)"; lang_param = $.pref('lang');
var regex = new RegExp( regexS ); if(!lang_param) {
var results = regex.exec( window.location.href ); if (navigator.userLanguage) // Explorer
if( results == null ) lang_param = navigator.userLanguage;
return ""; else if (navigator.language) // FF, Opera, ...
else lang_param = navigator.language;
return results[1];
}
var put_locale = function(){
var lang_param = gup("lang");
if (lang_param == "") if (lang_param == "")
return; return;
}
// don't bother on first run if language is English
if(lang_param.indexOf("en") == 0) return;
}
var url = "locale/lang." + lang_param + ".js"; var url = "locale/lang." + lang_param + ".js";
$.get(url, function(data){ $.get(url, function(data){
var LangData = eval(data); var LangData = eval(data), js_strings;
for (var i=0;i<LangData.length;i++) $.each(LangData, function(i, data) {
{ if(data.id) {
var elem = document.getElementById(LangData[i].id); var elem = $('#'+data.id)[0];
if(elem) { if(elem) {
if(LangData[i].title) if(data.title)
elem.title = LangData[i].title; elem.title = data.title;
if(LangData[i].textContent) if(data.textContent) {
elem.textContent = LangData[i].textContent; // Only replace text nodes, not elements
$.each(elem.childNodes, function(j, node) {
if(node.nodeType == 3) {
node.textContent = data.textContent;
}
});
} }
} }
} else if(data.js_strings) {
js_strings = data.js_strings;
}
});
svgCanvas.setLang(lang_param, js_strings);
},"json"); },"json");
}; };

View File

@ -81,7 +81,6 @@ $.fn.SpinButton = function(cfg){
delay: cfg && cfg.delay ? Number(cfg.delay) : 500, delay: cfg && cfg.delay ? Number(cfg.delay) : 500,
interval: cfg && cfg.interval ? Number(cfg.interval) : 100, interval: cfg && cfg.interval ? Number(cfg.interval) : 100,
_btn_width: 20, _btn_width: 20,
_btn_height: 12,
_direction: null, _direction: null,
_delay: null, _delay: null,
_repeat: null, _repeat: null,
@ -112,9 +111,10 @@ $.fn.SpinButton = function(cfg){
var x = e.pageX || e.x; var x = e.pageX || e.x;
var y = e.pageY || e.y; var y = e.pageY || e.y;
var el = e.target || e.srcElement; var el = e.target || e.srcElement;
var height = $(el).outerHeight()/2;
var direction = var direction =
(x > coord(el,'offsetLeft') + el.offsetWidth - this.spinCfg._btn_width) (x > coord(el,'offsetLeft') + el.offsetWidth - this.spinCfg._btn_width)
? ((y < coord(el,'offsetTop') + this.spinCfg._btn_height) ? 1 : -1) : 0; ? ((y < coord(el,'offsetTop') + height) ? 1 : -1) : 0;
if (direction !== this.spinCfg._direction) { if (direction !== this.spinCfg._direction) {
// Style up/down buttons: // Style up/down buttons:

View File

@ -0,0 +1,679 @@
body {
background: #E8E8E8;
}
#svg_editor {
font-size: 8pt;
font-family: Verdana, Helvetica, Arial;
color: #000000;
}
#svg_editor a {
color: #0000FF;
}
#svg_editor hr {
border: none;
border-bottom: 1px solid #808080;
}
#svg_editor select {
margin-top: 4px;
}
#svg_editor #svgroot {
-moz-user-select: none;
position: absolute;
top: 0;
left: 0;
}
#svg_editor #svgcanvas {
background-color: #FFFFFF;
text-align: center;
vertical-align: middle;
width: 640px;
height: 480px;
-apple-dashboard-region:dashboard-region(control rectangle 0px 0px 0px 0px); /* for widget regions that shouldn't react to dragging */
position: relative;
}
#svg_editor div#palette_holder {
overflow-x: scroll;
overflow-y: hidden;
height: 31px;
border: 1px solid #808080;
border-top: none;
margin-top: 2px;
}
#svg_editor #fill_color, #svg_editor #stroke_color {
height: 16px;
width: 16px;
border: 1px solid #808080;
cursor: pointer;
}
#svg_editor div#palette {
float: left;
width: 6848px;
height: 16px;
}
#svg_editor div#workarea {
display: inline-block;
position:absolute;
top: 75px;
left: 40px;
bottom: 60px;
right: 14px;
background-color: #A0A0A0;
border: 1px solid #808080;
overflow: auto;
}
#svg_editor #sidepanels {
display: inline-block;
position:absolute;
top: 75px;
bottom: 60px;
right: 0px;
width: 2px;
padding: 10px;
border-color: #808080;
border-style: solid;
border-width: 1px;
border-left: none;
}
#svg_editor #layerpanel {
display: inline-block;
background-color: #E8E8E8;
position:absolute;
top: 1px;
bottom: 0px;
right: 0px;
width: 0px;
overflow: hidden;
margin: 0px;
}
/*
border-style: solid;
border-color: #666;
border-width: 0px 0px 0px 1px;
*/
#svg_editor #sidepanel_handle {
display: inline-block;
position: absolute;
background-color: #E8E8E8;
left: 0px;
top: 40%;
width: 1em;
padding: 5px 1px 5px 5px;
margin-left: 3px;
cursor: pointer;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-moz-user-select: none;
}
#svg_editor #sidepanel_handle:hover {
font-weight: bold;
}
#svg_editor #sidepanel_handle * {
cursor: pointer;
-moz-user-select: none;
}
#svg_editor #layerbuttons {
margin: 0px;
padding: 0px;
padding-left: 2px;
padding-right: 2px;
width: 106px;
height: 20px;
border-right: 1px solid #FFFFFF;
border-bottom: 1px solid #FFFFFF;
border-left: 1px solid #808080;
border-top: 1px solid #808080;
}
#svg_editor .layer_button {
width: 14px;
height: 14px;
padding: 1px;
border-left: 1px solid #FFFFFF;
border-top: 1px solid #FFFFFF;
border-right: 1px solid #808080;
border-bottom: 1px solid #808080;
cursor: pointer;
}
#svg_editor .layer_buttonpressed {
width: 14px;
height: 14px;
padding: 1px;
border-right: 1px solid #FFFFFF;
border-bottom: 1px solid #FFFFFF;
border-left: 1px solid #808080;
border-top: 1px solid #808080;
cursor: pointer;
}
#svg_editor #layerlist {
margin: 1px;
padding: 0px;
width: 110px;
border-collapse: collapse;
border: 1px solid #808080;
background-color: #FFFFFF;
}
#svg_editor #layerlist tr.layer {
background-color: #FFFFFF;
margin: 0px;
padding: 0px;
}
#svg_editor #layerlist tr.layersel {
border: 1px solid #808080;
background-color: #CCCCCC;
}
#svg_editor #layerlist td.layervis {
background-image: url('images/eye.png');
background-repeat: no-repeat;
background-position: 3px center;
width: 22px;
cursor:pointer;
}
#svg_editor #layerlist td.layerinvis {
background-image: none;
cursor:pointer;
}
#svg_editor #layerlist td.layername {
cursor: pointer;
}
#svg_editor #layerlist tr.layersel td.layername {
font-weight: bold;
}
#svg_editor #selLayerLabel {
white-space: nowrap;
}
#svg_editor #selLayerNames {
display: block;
}
#svg_editor div.palette_item {
height: 16px;
width: 16px;
float: left;
}
#svg_editor #logo {
position: absolute;
top: 4px;
left: 4px;
padding: 0px;
}
#svg_editor #logo a img {
border: 0;
width: 32px;
height: 32px;
}
#svg_editor #tools_top {
position: absolute;
left: 38px;
right: 2px;
top: 2px;
height: 75px;
border-bottom: none;
}
#svg_editor #tools_top > div {
float: left;
}
#svg_editor #tools_left {
position: absolute;
border-right: none;
width: 36px;
top: 75px;
left: 2px;
}
#workarea.wireframe #svgcontent * {
fill: none;
stroke: #000;
stroke-width: 1px;
stroke-opacity: 1.0;
stroke-dasharray: none;
opacity: 1;
pointer-events: stroke;
}
#workarea.wireframe #svgcontent text {
fill: #000;
stroke: none;
}
#svg_editor #selected_panel,
#svg_editor #multiselected_panel,
#svg_editor #g_panel,
#svg_editor #rect_panel,
#svg_editor #circle_panel,
#svg_editor #ellipse_panel,
#svg_editor #line_panel,
#svg_editor #image_panel,
#svg_editor #text_panel,
#svg_editor #path_node_panel {
display: none;
}
#svg_editor #selected_panel .selected_tool {
vertical-align: 12px;
}
#svg_editor #multiselected_panel .selected_tool {
vertical-align: 12px;
}
#svg_editor #tools_top > div, #tools_top {
float: left;
line-height: 26px;
}
#tools_top > div > * {
float: left;
margin-right: 2px;
}
#tools_top label {
margin-top: 3px;
margin-left: 5px;
}
#tools_top input {
margin-top: 5px;
height: 15px;
}
#svg_editor .flyout_arrow_horiz {
float: right;
position: relative;
top: -13px;
left: -5px;
margin-bottom: -13px;
}
.magic_field > * {
float: left;
}
span.zoom_tool {
line-height: 26px;
padding: 3px;
}
.magic_field input {
margin-top: 5px;
}
.dropdown {
position: relative;
}
.dropdown button {
background: transparent 3px 8px url('images/dropdown.gif') no-repeat;
width: 15px;
height: 21px;
margin: 6px 0 0 1px;
padding: 0;
border-left: 1px solid #FFFFFF;
border-top: 1px solid #FFFFFF;
border-right: 1px solid #808080;
border-bottom: 1px solid #808080;
}
.dropdown button.down {
border-left: 1px solid #808080;
border-top: 1px solid #808080;
border-right: 1px solid #FFFFFF;
border-bottom: 1px solid #FFFFFF;
background-color: #B0B0B0;
}
.dropdown ul {
list-style: none;
position: absolute;
margin: 0;
padding: 0;
left: -93px;
top: 26px;
display: none;
}
.dropup ul {
top: auto;
bottom: 26px;
}
.dropdown li {
display: block;
width: 120px;
padding: 4px;
background: #E8E8E8;
border: 1px solid #B0B0B0;
margin: 0 0 -1px 0;
line-height: 16px;
}
.dropdown li:hover {
background-color: #B0B0B0;
}
.dropdown li.special {
padding: 10px 4px;
}
.dropdown li.special:hover {
background: #E8E8E8;
}
#opacity_dropdown li {
width: 140px;
}
#svg_editor .tool_button,
#svg_editor .push_button,
#svg_editor .tool_button_current,
#svg_editor .tool_button_disabled {
height: 24px;
width: 24px;
margin: 2px;
padding: 2px;
border-left: 1px solid #FFFFFF;
border-top: 1px solid #FFFFFF;
border-right: 1px solid #808080;
border-bottom: 1px solid #808080;
cursor: pointer;
}
#svg_editor .tool_button_current,
#svg_editor .push_button_pressed {
border-left: 1px solid #808080;
border-top: 1px solid #808080;
border-right: 1px solid #FFFFFF;
border-bottom: 1px solid #FFFFFF;
background-color: #B0B0B0;
}
#svg_editor .tool_button_disabled {
opacity: 0.5;
cursor: default;
}
#svg_editor .tool_sep {
width: 2px;
height: 24px;
margin: 2px;
margin-right: 0;
padding: 2px;
}
#svg_editor #color_picker {
position: absolute;
display: none;
background: #E8E8E8;
height: 350px;
}
#svg_editor .tools_flyout {
position: absolute;
display: none;
cursor: pointer;
}
#svg_editor .tools_flyout_v {
position: absolute;
display: none;
cursor: pointer;
width: 30px;
}
#svg_editor #tool_square { background: 2px 2px url('images/square.png') no-repeat; }
#svg_editor #tool_rect { background: 2px 2px url('images/rect.png') no-repeat; }
#svg_editor #tool_fhrect { background: 2px 2px url('images/freehand-square.png') no-repeat; }
#svg_editor #tool_circle { background: 2px 2px url('images/circle.png') no-repeat; }
#svg_editor #tool_ellipse { background: 2px 2px url('images/ellipse.png') no-repeat; }
#svg_editor #tool_fhellipse { background: 2px 2px url('images/freehand-circle.png') no-repeat; }
#svg_editor #tool_stacktop { background: 2px 2px url('images/move_top.png') no-repeat; }
#svg_editor #tool_stackbottom { background: 2px 2px url('images/move_bottom.png') no-repeat; }
#svg_editor #tool_aligntop { background: 2px 2px url('images/align-top.png') no-repeat; }
#svg_editor #tool_alignmiddle { background: 2px 2px url('images/align-middle.png') no-repeat; }
#svg_editor #tool_alignbottom { background: 2px 2px url('images/align-bottom.png') no-repeat; }
#svg_editor #tool_alignleft { background: 2px 2px url('images/align-left.png') no-repeat; }
#svg_editor #tool_aligncenter { background: 2px 2px url('images/align-center.png') no-repeat; }
#svg_editor #tool_alignright { background: 2px 2px url('images/align-right.png') no-repeat; }
#svg_editor .tool_sep { background: 2px 2px url('images/sep.png') no-repeat; }
/* TODO: figure out what more-specific selector causes me to write this atrocity and not
simply .tool_flyout_button */
#svg_editor #tools_rect .tool_flyout_button, #svg_editor #tools_ellipse .tool_flyout_button {
float: left;
background-color: #E8E8E8;
border-left: 1px solid #FFFFFF;
border-top: 1px solid #FFFFFF;
border-right: 1px solid #808080;
border-bottom: 1px solid #808080;
height: 28px;
width: 28px;
}
#svg_editor .tool_button:hover,
#svg_editor .push_button:hover {
background-color: #FFF;
}
#svg_editor #tools_rect .tool_flyout_button_current, #svg_editor #tools_ellipse .tool_flyout_button_current {
border-left: 1px solid #808080;
border-top: 1px solid #808080;
border-right: 1px solid #FFFFFF;
border-bottom: 1px solid #FFFFFF;
background-color: #B0B0B0;
}
#svg_editor #tools_bottom {
position: absolute;
left: 40px;
right: 2px;
bottom: 2px;
height: 60px;
}
#svg_editor #tools_bottom_1 {
width: 115px;
float: left;
}
#svg_editor #tools_bottom_2 {
width: 250px;
float: left;
}
#svg_editor #tools_bottom_3 {
}
#svg_editor #copyright {
text-align: right;
}
#svg_source_editor {
display: none;
}
#svg_source_editor #svg_source_overlay {
position: absolute;
top: 0px;
right: 0px;
left: 0px;
bottom: 0px;
background-color: black;
opacity: 0.6;
}
#svg_source_editor #svg_source_container {
position: absolute;
top: 30px;
left: 30px;
right: 30px;
bottom: 30px;
background-color: #B0B0B0;
opacity: 1.0;
text-align: center;
}
/*
top: 100px;
left: 80px;
right: 80px;
bottom: 100px;
*/
#svg_docprops #svg_docprops_container {
position: absolute;
top: 50px;
padding: 10px;
background-color: #B0B0B0;
opacity: 1.0;
}
#svg_docprops_container fieldset {
padding: 5px;
margin: 5px;
}
#svg_docprops_container label {
display: block;
margin-bottom: .2em;
}
#canvas_title {
display: block;
}
#svg_source_editor #svg_source_textarea {
position: relative;
width: 95%;
top: 5px;
height: 250px;
padding: 5px;
font-size: 12px;
}
#svg_source_editor #tool_source_back {
text-align: left;
padding-left: 20px;
}
#svg_docprops_container div.color_block {
float: left;
margin: 2px;
padding: 20px;
}
#change_background div.cur_background {
border: 2px solid blue;
padding: 18px;
}
#change_background input {
color: #888;
}
#change_background input.cur_background {
border: 2px solid blue;
color: #000;
}
#background_img {
position: absolute;
top: 0;
left: 0;
text-align: left;
}
#svg_source_editor button, #svg_docprops button {
padding: 5px 5px 7px 28px;
margin: 5px 20px 0 0;
}
#svg_docprops button {
margin-top: 0;
margin-bottom: 5px;
}
#svg_docprops {
display: none;
}
#svg_docprops #svg_docprops_overlay {
position: absolute;
top: 0px;
right: 0px;
left: 0px;
bottom: 0px;
background-color: black;
opacity: 0.6;
}
#tool_source_save, #tool_docprops_save {
background: #E8E8E8 url(images/save.png) no-repeat 2px 0;
}
#tool_source_cancel, #tool_docprops_cancel {
background: #E8E8E8 url(images/cancel.png) no-repeat 2px 0;
}
#tool_source_save, #tool_docprops_save {
background: #E8E8E8 url(images/save.png) no-repeat 2px 0;
}
#tool_source_cancel, #tool_docprops_cancel {
background: #E8E8E8 url(images/cancel.png) no-repeat 2px 0;
}
/* Slider
----------------------------------*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }
.ui-slider {
border: 1px solid #B0B0B0;
}
.ui-slider-handle {
background: #B0B0B0;
border: 1px solid #000;
}

View File

@ -0,0 +1,438 @@
<!DOCTYPE html>
<html>
<!-- removed for now, causes problems in Firefox: manifest="svg-editor.manifest" -->
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
<link rel="icon" type="image/png" href="images/logo.png">
<link rel="stylesheet" href="jgraduate/css/jPicker-1.0.9.css" type="text/css"/>
<link rel="stylesheet" href="jgraduate/css/jGraduate-0.2.0.css" type="text/css"/>
<link rel="stylesheet" href="svg-editor-classic.css" type="text/css"/>
<link rel="stylesheet" href="spinbtn/JQuerySpinBtn.css" type="text/css"/>
<!-- Development version of script tags: -->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="js-hotkeys/jquery.hotkeys.min.js"></script>
<script type="text/javascript" src="jgraduate/jquery.jgraduate.js"></script>
<script type="text/javascript" src="spinbtn/JQuerySpinBtn.js"></script>
<script type="text/javascript" src="svgcanvas.js"></script>
<script type="text/javascript" src="svg-editor-classic.js"></script>
<script type="text/javascript" src="locale/locale.js"></script>
<!-- Release version of script tags: >
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="js-hotkeys/jquery.hotkeys-0.7.9.js"></script>
<script type="text/javascript" src="jgraduate/jquery.jgraduate.min.js"></script>
<script type="text/javascript" src="spinbtn/JQuerySpinBtn.min.js"></script>
<script type="text/javascript" src="svgcanvas.min.js"></script>
<script type="text/javascript" src="svg-editor.min.js"></script>
script type="text/javascript" src="locale/locale.min.js"></script-->
<!-- always minified scripts -->
<script type="text/javascript" src="jquery-ui/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="jgraduate/jpicker-1.0.9.min.js"></script>
<!-- feeds -->
<link rel="alternate" type="application/atom+xml" title="SVG-edit General Discussion" href="http://groups.google.com/group/svg-edit/feed/atom_v1_0_msgs.xml" />
<link rel="alternate" type="application/atom+xml" title="SVG-edit Updates (Issues/Fixes/Commits)" href="http://code.google.com/feeds/p/svg-edit/updates/basic" />
<!-- Add script with custom handlers here -->
<title>SVG-edit demo (Raster icons)</title>
</head>
<body>
<div id="svg_editor">
<div id="workarea">
<style id="styleoverrides" type="text/css" media="screen" scoped="scoped"></style>
<div id="svgcanvas"></div>
</div>
<div id="sidepanels">
<div id="layerpanel">
<h3 id="layersLable">Layers</h3>
<fieldset id="layerbuttons">
<img id="layer_new" class="layer_button" src="images/clear.png" alt="New Layer" title="New Layer"/>
<img id="layer_delete" class="layer_button" src="images/delete.png" alt="Delete Layer" title="Delete Layer"/>
<img id="layer_rename" class="layer_button" src="images/view-refresh.png" alt="Rename Layer" title="Rename Layer"/>
<img id="layer_up" class="layer_button" src="images/go-up.png" alt="Move Layer up" title="Move Layer Up"/>
<img id="layer_down" class="layer_button" src="images/go-down.png" alt="Move Layer Down" title="Move Layer Down"/>
</fieldset>
<table id="layerlist">
<tr class="layer">
<td class="layervis"></td>
<td class="layername">Layer 1</td>
</tr>
</table>
<span id="selLayerLabel">Move elements to:</span>
<select id="selLayerNames" title="Move selected elements to a different layer" disabled="disabled">
<option selected="selected" value="layer1">Layer 1</option>
</select>
</div>
<div id="sidepanel_handle" onselectstart="return false;" title="Drag left/right to resize side panel [X]">L a y e r s</div>
</div>
<div id="logo">
<a href="http://svg-edit.googlecode.com/" target="_blank" title="SVG-edit Home Page">
<img src="images/logo.png" alt="logo" />
</a>
</div>
<div id="tools_top" class="tools_panel">
<!-- File-like buttons: New, Save, Source -->
<div id="file_panel">
<img class="push_button" id="tool_clear" src="images/clear.png" title="New Image [N]" alt="Clear" />
<img style="display:none" class="push_button" id="tool_open" src="images/open.png" title="Open Image [O]" alt="Open"/>
<img class="push_button" id="tool_save" src="images/save.png" title="Save Image [S]" alt="Save"/>
<img class="push_button" id="tool_docprops" src="images/document-properties.png" title="Document Properties [I]"/>
<img class="push_button" id="tool_source" src="images/source.png" title="Edit Source [U]" alt="Source"/>
<img class="tool_button" id="tool_wireframe" src="images/wireframe.png" title="Wireframe Mode [F]" alt="Wireframe"/>
</div>
<!-- History buttons -->
<div id="history_panel">
<div class="tool_sep"></div>
<img class="push_button tool_button_disabled" id="tool_undo" src="images/undo.png" title="Undo [Z]"/>
<img class="push_button tool_button_disabled" id="tool_redo" src="images/redo.png" title="Redo [Y]"/>
</div>
<!-- Buttons when a single element is selected -->
<div id="selected_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<img class="push_button" id="tool_clone" src="images/clone.png" title="Clone Element [C]" alt="Copy"/>
<img class="push_button" id="tool_delete" src="images/delete.png" title="Delete Element [Delete/Backspace]" alt="Delete"/>
<img class="tool_sep" src="images/sep.png" alt="|"/>
<img class="push_button" id="tool_move_top" src="images/move_top.png" title="Move to Top [Shift+Up]" alt="Top"/>
<img class="push_button" id="tool_move_bottom" src="images/move_bottom.png" title="Move to Bottom [Shift+Down]" alt="Bottom"/>
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label id="group_opacityLabel" class="selected_tool" for="group_opacity">opac:</label>
<input id="group_opacity" class="selected_tool" title="Change selected item opacity" size="3" value="100" type="text"/>
<div id="opacity_dropdown" class="dropdown">
<button></button>
<ul>
<li class="special"><div id="opac_slider"></div></li>
<li>100% (no transparency)</li>
<li>0%</li>
<li>25%</li>
<li>50%</li>
<li>75%</li>
<li>100%</li>
</ul>
</div>
<label id="angleLabel" class="selected_tool">angle:</label>
<input id="angle" class="selected_tool" title="Change rotation angle" size="2" value="0" type="text"/>
</div>
<!-- Buttons when multiple elements are selected -->
<div id="multiselected_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<img class="push_button" id="tool_clone_multi" src="images/clone.png" title="Clone Elements [C]" alt="Clone"/>
<img class="push_button" id="tool_delete_multi" src="images/delete.png" title="Delete Selected Elements [Delete/Backspace]" alt="Delete"/>
<img class="tool_sep" src="images/sep.png" alt="|"/>
<img class="push_button" id="tool_group" src="images/shape_group.png" title="Group Elements [G]" alt="Group"/>
<div class="push_button" id="tool_alignleft" title="Align Left"></div>
<div class="push_button" id="tool_aligncenter" title="Align Center"></div>
<div class="push_button" id="tool_alignright" title="Align Right"></div>
<div class="push_button" id="tool_aligntop" title="Align Top"></div>
<div class="push_button" id="tool_alignmiddle" title="Align Middle"></div>
<div class="push_button" id="tool_alignbottom" title="Align Bottom"></div>
<span id="relativeToLabel" class="selected_tool">relative to:</span>
<select id="align_relative_to" class="selected_tool" title="Align relative to ...">
<option id="selected_objects" value="selected">selected objects</option>
<option id="largest_object" value="largest">largest object</option>
<option id="smallest_object" value="smallest">smallest object</option>
<option id="page" value="page">page</option>
</select>
<img class="tool_sep" src="images/sep.png" alt="|"/>
</div>
<div id="g_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<img class="push_button" id="tool_ungroup" src="images/shape_ungroup.png" title="Ungroup Elements [G]" alt="Ungroup"/>
</div>
<div id="rect_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label class="rect_tool">x:</label>
<input id="rect_x" class="rect_tool attr_changer" title="Change rectangle X coordinate" size="3" data-attr="x"/>
<label class="rect_tool">y:</label>
<input id="rect_y" class="rect_tool attr_changer" title="Change rectangle Y coordinate" size="3" data-attr="y"/>
<label id="rwidthLabel" class="rect_tool">width:</label>
<input id="rect_width" class="rect_tool attr_changer" title="Change rectangle width" size="3" data-attr="width"/>
<label id="rheightLabel" class="rect_tool">height:</label>
<input id="rect_height" class="rect_tool attr_changer" title="Change rectangle height" size="3" data-attr="height"/>
<label id="cornerRadiusLabel" class="rect_tool">Corner Radius:</label>
<input id="rect_rx" size="3" value="0" class="rect_tool" type="text" title="Change Rectangle Corner Radius" data-attr="Corner Radius"/>
</div>
<div id="image_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label class="image_tool">x:</label>
<input id="image_x" class="image_tool attr_changer" title="Change image X coordinate" size="3" data-attr="x"/>
<label class="image_tool">y:</label>
<input id="image_y" class="image_tool attr_changer" title="Change image Y coordinate" size="3" data-attr="y"/>
<label id="iwidthLabel" class="image_tool">width:</label>
<input id="image_width" class="image_tool attr_changer" title="Change image width" size="3" data-attr="width"/>
<label id="iheightLabel" class="image_tool">height:</label>
<input id="image_height" class="image_tool attr_changer" title="Change image height" size="3" data-attr="height"/>
<label class="image_tool">url:</label>
<input id="image_url" class="image_tool" type="text" title="Change URL" size="35"/>
</div>
<div id="circle_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label class="circle_tool">cx:</label>
<input id="circle_cx" class="circle_tool attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/>
<label class="circle_tool">cy:</label>
<input id="circle_cy" class="circle_tool attr_changer" title="Change circle's cy coordinate" size="3" data-attr="cy"/>
<label class="circle_tool">r:</label>
<input id="circle_r" class="circle_tool attr_changer" title="Change circle's radius" size="3" data-attr="r"/>
</div>
<div id="ellipse_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label class="ellipse_tool">cx:</label>
<input id="ellipse_cx" class="ellipse_tool attr_changer" title="Change ellipse's cx coordinate" size="3" data-attr="cx"/>
<label class="ellipse_tool">cy:</label>
<input id="ellipse_cy" class="ellipse_tool attr_changer" title="Change ellipse's cy coordinate" size="3" data-attr="cy"/>
<label class="ellipse_tool">rx:</label>
<input id="ellipse_rx" class="ellipse_tool attr_changer" title="Change ellipse's x radius" size="3" data-attr="rx"/>
<label class="ellipse_tool">ry:</label>
<input id="ellipse_ry" class="ellipse_tool attr_changer" title="Change ellipse's y radius" size="3" data-attr="ry"/>
</div>
<div id="line_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label class="line_tool">x1:</label>
<input id="line_x1" class="line_tool attr_changer" title="Change line's starting x coordinate" size="3" data-attr="x1"/>
<label class="line_tool">y1:</label>
<input id="line_y1" class="line_tool attr_changer" title="Change line's starting y coordinate" size="3" data-attr="y1"/>
<label class="line_tool">x2:</label>
<input id="line_x2" class="line_tool attr_changer" title="Change line's ending x coordinate" size="3" data-attr="x2"/>
<label class="line_tool">y2:</label>
<input id="line_y2" class="line_tool attr_changer" title="Change line's ending y coordinate" size="3" data-attr="y2"/>
</div>
<div id="text_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label class="text_tool">x:</label>
<input id="text_x" class="text_tool attr_changer" title="Change text X coordinate" size="3" data-attr="x"/>
<label class="text_tool">y:</label>
<input id="text_y" class="text_tool attr_changer" title="Change text Y coordinate" size="3" data-attr="y"/>
<img class="tool_button" id="tool_bold" src="images/bold.png" title="Bold Text [B]" alt="Bold"/>
<img class="tool_button" id="tool_italic" src="images/italic.png" title="Italic Text [I]" alt="Italic"/>
<select id="font_family" class="text_tool" title="Change Font Family">
<option selected="selected" value="serif">serif</option>
<option value="sans-serif">sans-serif</option>
<option value="cursive">cursive</option>
<option value="fantasy">fantasy</option>
<option value="monospace">monospace</option>
</select>
<label id="font_sizeLabel" class="text_tool" for="font_size">size:</label>
<input id="font_size" class="text_tool" title="Change Font Size" size="3" value="0" type="text"/>
<input id="text" class="text_tool" type="text" title="Change text contents" size="35"/>
</div>
<div id="path_node_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/>
<label class="path_node_tool">x:</label>
<input id="path_node_x" class="path_node_tool attr_changer" title="Change node's x coordinate" size="3" data-attr="x"/>
<label class="path_node_tool">y:</label>
<input id="path_node_y" class="path_node_tool attr_changer" title="Change node's y coordinate" size="3" data-attr="y"/>
<select id="seg_type" class="path_node_tool" title="Change Segment type">
<option id="straight_segments" selected="selected" value="4">Straight</option>
<option id="curve_segments" value="6">Curve</option>
</select>
<img class="tool_button" id="tool_node_clone" src="images/clone.png" title="Clone Node" alt="Clone"/>
<img class="tool_button" id="tool_node_delete" src="images/delete.png" title="Delete Node" alt="Delete"/>
</div>
</div> <!-- tools_top -->
<div id="tools_left" class="tools_panel">
<img class="tool_button_current" id="tool_select" src="images/select.png" title="Select Tool [1]" alt="Select"/><br/>
<img class="tool_button" id="tool_fhpath" src="images/fhpath.png" title="Pencil Tool [2]" alt="Pencil"/><br/>
<img class="tool_button" id="tool_line" src="images/line.png" title="Line Tool [3]" alt="Line"/><br/>
<img class="tool_button" id="tools_rect_show" src="images/square.png" title="Square/Rect Tool [4/Shift+4]" alt="Square"/>
<img class="flyout_arrow_horiz" src="images/flyouth.png"/>
<img class="tool_button" id="tools_ellipse_show" src="images/circle.png" title="Ellipse/Circle Tool [5/Shift+5]" alt="Circle"/><br/>
<img class="flyout_arrow_horiz" src="images/flyouth.png"/>
<img class="tool_button" id="tool_path" src="images/path.png" title="Path Tool [6]" alt="Path"/>
<img class="tool_button" id="tool_text" src="images/text.png" title="Text Tool [7]" alt="Text"/>
<img class="tool_button" id="tool_image" src="images/image.png" title="Image Tool [8]" alt="Image"/>
<img class="tool_button" id="tool_zoom" src="images/zoom.png" title="Zoom Tool [Ctrl+Up/Down]" alt="Zoom"/>
</div> <!-- tools_left -->
<div id="tools_bottom" class="tools_panel">
<!-- Zoom buttons -->
<div id="zoom_panel" class="magic_field">
<span id="zoomLabel" class="zoom_tool">zoom:</span>
<input id="zoom" class="zoom_tool" title="Change zoom level" size="3" value="100" type="text" />
<div id="zoom_dropdown" class="dropdown">
<button></button>
<ul>
<li>100%</li>
<li id="fit_to_all" data-val="content">Fit to all content</li>
<li id="fit_to_layer_content" data-val="layer">Fit to layer content</li>
<li id="fit_to_sel" data-val="selection">Fit to selection</li>
<li id="fit_to_canvas" data-val="canvas">Fit to canvas</li>
<li>25%</li>
<li>50%</li>
<li>100%</li>
<li>200%</li>
<li>400%</li>
<li>1000%</li>
</ul>
</div>
<img class="tool_sep" src="images/sep.png" alt="|"/>
</div>
<div id="tools_bottom_2">
<table>
<tr>
<td id="fill_tool_bottom">fill:</td>
<td><div id="fill_color" class="color_block" title="Change fill color"></div></td>
<td colspan="3"><div id="fill_opacity">100%</div></td>
</tr><tr>
<td id="stroke_tool_bottom">stroke:</td>
<td><div id="stroke_color" class="color_block" title="Change stroke color"></div></td>
<td><div id="stroke_opacity">100 %</div></td>
<td>
<input id="stroke_width" title="Change stroke width" size="2" value="5" type="text" data-attr="Stroke Width"/>
</td>
<td>
<select id="stroke_style" title="Change stroke dash style">
<option selected="selected" value="none">---</option>
<option value="2,2">...</option>
<option value="5,5">- -</option>
<option value="5,2,2,2">- .</option>
<option value="5,2,2,2,2,2">- ..</option>
</select>
</td>
</tr>
</table>
</div>
<div id="tools_bottom_3">
<div id="palette_holder"><div id="palette" title="Click to change fill color, shift-click to change stroke color"></div></div>
</div>
<div id="copyright">Powered by <a href="http://svg-edit.googlecode.com/" target="_blank">SVG-edit v2.4-alpha</a></div>
</div>
<!-- hidden divs -->
<div id="color_picker"></div>
<div id="tools_rect" class="tools_flyout">
<div id="tool_square" class="tool_flyout_button" title="Square"></div>
<div id="tool_rect" class="tool_flyout_button" title="Rectangle"></div>
<div id="tool_fhrect" class="tool_flyout_button" title="Free-Hand Rectangle"></div>
</div>
<div id="tools_ellipse" class="tools_flyout">
<div id="tool_circle" class="tool_flyout_button" title="Circle"></div>
<div id="tool_ellipse" class="tool_flyout_button" title="Ellipse"></div>
<div id="tool_fhellipse" class="tool_flyout_button" title="Free-Hand Ellipse"></div>
</div>
</div> <!-- svg_editor -->
<div id="svg_source_editor">
<div id="svg_source_overlay"></div>
<div id="svg_source_container">
<div id="tool_source_back" class="toolbar_button">
<button id="tool_source_save">Apply Changes</button>
<button id="tool_source_cancel">Cancel</button>
</div>
<form>
<textarea id="svg_source_textarea" spellcheck="false"></textarea>
</form>
</div>
</div>
<div id="svg_docprops">
<div id="svg_docprops_overlay"></div>
<div id="svg_docprops_container">
<div id="tool_docprops_back" class="toolbar_button">
<button id="tool_docprops_save">OK</button>
<button id="tool_docprops_cancel">Cancel</button>
<label><span id="svginfo_title">Image title:</span> <input type="text" id="canvas_title" size="24"></label>
<fieldset id="change_background">
<legend id="svginfo_change_background">Editor Background</legend>
<div id="bg_blocks"></div>
<label><span id="svginfo_bg_url">URL:</span> <input type="text" id="canvas_bg_url" size="17"></label>
</fieldset>
<fieldset id="change_resolution">
<legend id="svginfo_dim">Canvas Dimensions</legend>
<label><span id="svginfo_width">Width:</span> <input type="text" id="canvas_width" size="6"></label>
<label><span id="svginfo_height">Height:</span> <input type="text" id="canvas_height" size="6"></label>
<label>
<select id="resolution">
<option id="selectedPredefined" selected="selected">Select predefined:</option>
<option>640x480</option>
<option>800x600</option>
<option>1024x768</option>
<option>1280x960</option>
<option>1600x1200</option>
<option id="fitToContent" value="content">Fit to Content</option>
</select>
</label>
</fieldset>
</div>
</div>
</div>
</body>
</html>

1689
editor/svg-editor-classic.js Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,25 +11,54 @@
<link rel="stylesheet" href="spinbtn/JQuerySpinBtn.css" type="text/css"/> <link rel="stylesheet" href="spinbtn/JQuerySpinBtn.css" type="text/css"/>
<!-- Development version of script tags: --> <!-- Development version of script tags: -->
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<!-- <script type="text/javascript" src="../../../svg-icon-loader/jquery.svgicons.js"></script> -->
<script type="text/javascript" src="http://svg-icon-loader.googlecode.com/svn/trunk/jquery.svgicons.js"></script>
<script>
setIcons();
</script>
<script type="text/javascript" src="js-hotkeys/jquery.hotkeys.min.js"></script> <script type="text/javascript" src="js-hotkeys/jquery.hotkeys.min.js"></script>
<script type="text/javascript" src="jgraduate/jquery.jgraduate.js"></script> <script type="text/javascript" src="jgraduate/jquery.jgraduate.js"></script>
<script type="text/javascript" src="spinbtn/JQuerySpinBtn.js"></script> <script type="text/javascript" src="spinbtn/JQuerySpinBtn.js"></script>
<script type="text/javascript" src="svgcanvas.js"></script> <script type="text/javascript" src="svgcanvas.js"></script>
<script type="text/javascript" src="svg-editor.js"></script> <script type="text/javascript" src="svg-editor.js"></script>
<script type="text/javascript" src="locale/locale.js"></script> <script type="text/javascript" src="locale/locale.js"></script>
<!-- <script type="text/javascript" src="../../svg-icon-loader/jquery.svgicons.js"></script> -->
<script type="text/javascript" src="http://svg-icon-loader.googlecode.com/svn/trunk/jquery.svgicons.js"></script>
<style> <style>
#svg_editor .tools_panel div.tool_button { /* This CSS replaces parts of/adds to svg-editor.css */
#svg_editor .tool_button,
#svg_editor #tools_rect .tool_flyout_button,
#svg_editor #tools_ellipse .tool_flyout_button {
padding: 2px;
width: 24px; width: 24px;
height: 24px; height: 24px;
} }
#svg_editor .tool_sep {
width: 1px;
background: #888;
background-image: none;
border-left: 1px outset #EEE;
margin: 2px 3px;
padding: 0;
height: 24px;
}
#layerbuttons { #layerbuttons {
overflow: auto; overflow: auto;
} }
#svg_editor #layerlist td.layervis {
background: none;
}
#layerlist td.layervis .svg_icon {
display: block;
}
#layerlist td.layerinvis .svg_icon {
display: none;
}
.layer_button { .layer_button {
display: block; display: block;
float: left; float: left;
@ -71,130 +100,63 @@
border-bottom: 1px solid #808080; border-bottom: 1px solid #808080;
} }
/* Adjust size of all tools */
body.small_tools #svg_editor .tool_button, #svg_editor #tool_square,
body.small_tools #svg_editor .push_button, #svg_editor #tool_rect,
body.small_tools #svg_editor .tool_button_current, #svg_editor #tool_fhrect,
body.small_tools #svg_editor .tool_button_disabled { #svg_editor #tool_circle,
#svg_editor #tool_ellipse,
#svg_editor #tool_fhellipse,
#svg_editor #tool_alignleft,
#svg_editor #tool_aligncenter,
#svg_editor #tool_alignright,
#svg_editor #tool_aligntop,
#svg_editor #tool_alignmiddle,
#svg_editor #tool_alignbottom {
background: none;
}
button#tool_source_save,
button#tool_source_cancel,
button#tool_docprops_save,
button#tool_docprops_cancel {
border:1px solid #dedede;
line-height:130%;
background: #E8E8E8 none;
padding:5px 10px 5px 7px; /* Firefox */
line-height:17px; /* Safari */
}
.toolbar_button button .svg_icon {
margin:0 3px -3px 0 !important;
padding:0;
border:none;
width:16px; width:16px;
height:16px; height:16px;
padding: 1px;
} }
body.small_tools #svg_editor .tool_sep {
height: 16px;
}
body.small_tools #svg_editor #tools_left {
width: 26px;
top: 50px;
}
body.small_tools #svg_editor div#workarea {
left: 27px;
top: 50px;
}
body.small_tools #svg_editor #tools_top input {
margin-top: 2px;
height: 12px;
border: 1px solid #555;
font-size: .9em;
}
body.small_tools #svg_editor #tools_top > div, #tools_top {
line-height: 17px;
}
body.small_tools #tools_top .dropdown button {
margin-top: 2px;
height: 18px;
}
body.small_tools #tools_top label {
margin-top: 1px;
}
body.small_tools #tool_bold,
body.small_tools #tool_italic {
font-size: 1.5em;
}
body.small_tools #svg_editor #sidepanels {
top: 50px;
}
body.large_tools #svg_editor .tool_button,
body.large_tools #svg_editor .push_button,
body.large_tools #svg_editor .tool_button_current,
body.large_tools #svg_editor .tool_button_disabled {
width: 48px;
height: 48px;
padding: 3px;
}
body.large_tools #svg_editor .tool_sep {
height: 48px;
}
body.large_tools #svg_editor #tools_left {
width: 42px;
top: 125px;
}
body.large_tools #svg_editor div#workarea {
left: 65px;
top: 125px;
}
body.large_tools #svg_editor #tools_top input {
margin-top: 5px;
height: 45px;
/* border: 1px solid #555;*/
font-size: 2.5em;
}
body.large_tools #svg_editor #tools_top > div, #tools_top {
line-height: 50px;
}
body.large_tools #tools_top .dropdown button {
margin-top: 4px;
height: 50px;
}
body.large_tools #tools_top label {
font-size: 2em;
margin-top: 5px;
}
body.large_tools #tool_bold,
body.large_tools #tool_italic {
font-size: 4.5em;
}
body.large_tools #svg_editor select {
font-size: 2em;
}
body.large_tools #svg_editor #sidepanels {
top: 125px;
}
</style> </style>
<script> <script>
$(function() { /*
TODO for SVG icons:
- More sizing tweaks
- Make layer eye SVG icon work when making new layers
- Make transparency icon clone to fill/stroke box when clicked
*/
function setIcons() {
$.svgIcons('images/svg_edit_icons.svg', { $.svgIcons('images/svg_edit_icons.svg', {
w:24, h:24, w:24, h:24,
id_match: false, id_match: false,
no_img: true,
fallback_path:'images/', fallback_path:'images/',
fallback:{ fallback:{
'new_image':'clear.png', 'new_image':'clear.png',
'save':'save.png', 'save':'save.png',
'open':'open.png',
'source':'source.png', 'source':'source.png',
'docprops':'document-properties.png', 'docprops':'document-properties.png',
'wireframe':'wireframe.png', 'wireframe':'wireframe.png',
@ -206,20 +168,45 @@ $(function() {
'pencil':'fhpath.png', 'pencil':'fhpath.png',
'pen':'line.png', 'pen':'line.png',
'square':'square.png', 'square':'square.png',
'rect':'rect.png',
'fh_rect':'freehand-square.png',
'circle':'circle.png', 'circle':'circle.png',
'path':'polygon.png', 'ellipse':'ellipse.png',
'fh_ellipse':'freehand-circle.png',
'path':'path.png',
'text':'text.png', 'text':'text.png',
'image':'image.png', 'image':'image.png',
'zoom':'zoom.png', 'zoom':'zoom.png',
'clone':'clone.png', 'clone':'clone.png',
'delete':'delete.png', 'delete':'delete.png',
'group':'shape_group.png',
'ungroup':'shape_ungroup.png',
'move_top':'move_top.png',
'move_bottom':'move_bottom.png',
'arrow_right':'flyouth.png' 'align_left':'align-left.png',
'align_center':'align-center',
'align_right':'align-right',
'align_top':'align-top',
'align_middle':'align-middle',
'align_bottom':'align-bottom',
'go_up':'go-up.png',
'go_down':'go-down.png',
'ok':'save.png',
'cancel':'cancel.png',
'arrow_right':'flyouth.png',
'arrow_down':'dropdown.gif'
}, },
placement: { placement: {
'#logo a':'logo',
'#tool_clear,#layer_new':'new_image', '#tool_clear,#layer_new':'new_image',
'#tool_save':'save', '#tool_save':'save',
'#tool_open':'open',
'#tool_source':'source', '#tool_source':'source',
'#tool_docprops':'docprops', '#tool_docprops':'docprops',
'#tool_wireframe':'wireframe', '#tool_wireframe':'wireframe',
@ -230,8 +217,12 @@ $(function() {
'#tool_select':'select', '#tool_select':'select',
'#tool_fhpath':'pencil', '#tool_fhpath':'pencil',
'#tool_line':'pen', '#tool_line':'pen',
'#tools_ellipse_show':'circle', '#tool_square,#tools_rect_show':'square',
'#tools_rect_show':'square', '#tool_rect':'rect',
'#tool_fhrect':'fh_rect',
'#tool_circle,#tools_ellipse_show':'circle',
'#tool_ellipse':'ellipse',
'#tool_fhellipse':'fh_ellipse',
'#tool_path':'path', '#tool_path':'path',
'#tool_text,#layer_rename':'text', '#tool_text,#layer_rename':'text',
'#tool_image':'image', '#tool_image':'image',
@ -241,42 +232,276 @@ $(function() {
'#layer_delete,#tool_delete,#tool_delete_multi,#tool_node_delete':'delete', '#layer_delete,#tool_delete,#tool_delete_multi,#tool_node_delete':'delete',
'#tool_move_top':'move_top', '#tool_move_top':'move_top',
'#tool_move_bottom':'move_bottom', '#tool_move_bottom':'move_bottom',
'#tool_group':'group',
'#tool_ungroup':'ungroup',
'#tool_alignleft':'align_left',
'#tool_aligncenter':'align_center',
'#tool_alignright':'align_right',
'#tool_aligntop':'align_top',
'#tool_alignmiddle':'align_middle',
'#tool_alignbottom':'align_bottom',
'#layer_up':'go_up', '#layer_up':'go_up',
'#layer_down':'go_down', '#layer_down':'go_down',
'#layerlist td.layervis':'eye',
'#tool_source_save,#tool_docprops_save':'ok',
'#tool_source_cancel,#tool_docprops_cancel':'cancel',
'.flyout_arrow_horiz':'arrow_right', '.flyout_arrow_horiz':'arrow_right',
'.dropdown button':'arrow_down' '.dropdown button':'arrow_down',
'#palette .palette_item:first':'no_color'
}, },
resize: { resize: {
'#logo a .svg_icon': 32,
'.flyout_arrow_horiz .svg_icon': 5, '.flyout_arrow_horiz .svg_icon': 5,
'.layer_button .svg_icon': 14, '.layer_button .svg_icon, #layerlist td.layervis .svg_icon': 14,
'.dropdown button .svg_icon': 7 '.dropdown button .svg_icon': 7,
} '#palette .svg_icon': 16
},
callback: function(icons) {
$('.toolbar_button button .svg_icon').each(function() {
$(this).parent().prepend(this);
}); });
$('#iconsize').change(function() { var tleft = $('#tools_left')
var size, size_num; var min_height = tleft.offset().top + tleft.outerHeight();
switch ( this.value ) { if($(window).height() < min_height) {
case 's': // Make smaller
size = 'small', size_num = 16; $('#iconsize').val('s').change()
break; }
case 'm': }
size = 'medium', size_num = 24; });
break;
case 'l':
size = 'large', size_num = 48;
break;
} }
$('body').removeClass('small_tools large_tools');
if(size != 'medium') $('body').addClass(size + '_tools'); $(function() {
$('.tool_button, .push_button, .tool_button_current, .tool_button_disabled')
.find('.svg_icon').each(function() { /* Unchanged, just here because they're private methods */
var flyoutspeed = 1250;
var toolButtonClick = function(button, fadeFlyouts) {
if ($(button).hasClass('tool_button_disabled')) return false;
var fadeFlyouts = fadeFlyouts || 'normal';
$('.tools_flyout').fadeOut(fadeFlyouts);
$('#styleoverrides').text('');
$('.tool_button_current').removeClass('tool_button_current').addClass('tool_button');
$(button).addClass('tool_button_current');
// when a tool is selected, we should deselect any currently selected elements
svgCanvas.clearSelection();
return true;
};
// New function to add
var setIcon = function(holder_sel, id) {
var icon = $.getSvgIcon(id).clone();
var holder = $(holder_sel);
icon[0].setAttribute('width',holder.width());
icon[0].setAttribute('height',holder.height());
holder.empty().append(icon);
}
$('#palette .palette_item:first').css('background','none');
// Change in last line of each of these.
var clickSquare = function(){
if (toolButtonClick('#tools_rect_show', flyoutspeed)) {
flyoutspeed = 'normal';
svgCanvas.setMode('square');
}
setIcon('#tools_rect_show','square');
};
var clickRect = function(){
if (toolButtonClick('#tools_rect_show')) {
svgCanvas.setMode('rect');
}
setIcon('#tools_rect_show','rect');
};
var clickFHRect = function(){
if (toolButtonClick('#tools_rect_show')) {
svgCanvas.setMode('fhrect');
}
setIcon('#tools_rect_show','fh_rect');
};
var clickCircle = function(){
if (toolButtonClick('#tools_ellipse_show', flyoutspeed)) {
flyoutspeed = 'normal';
svgCanvas.setMode('circle');
}
setIcon('#tools_ellipse_show','circle');
};
var clickEllipse = function(){
if (toolButtonClick('#tools_ellipse_show')) {
svgCanvas.setMode('ellipse');
}
setIcon('#tools_ellipse_show','ellipse');
};
var clickFHEllipse = function(){
if (toolButtonClick('#tools_ellipse_show')) {
svgCanvas.setMode('fhellipse');
}
setIcon('#tools_ellipse_show','fh_ellipse');
};
// Bind replacements (no need to move over)
$('#tool_square').unbind('mouseup').mouseup(clickSquare);
$('#tool_rect').unbind('mouseup').mouseup(clickRect);
$('#tool_fhrect').unbind('mouseup').mouseup(clickFHRect);
$('#tool_circle').unbind('mouseup').mouseup(clickCircle);
$('#tool_ellipse').unbind('mouseup').mouseup(clickEllipse);
$('#tool_fhellipse').unbind('mouseup').mouseup(clickFHEllipse);
// This should only occur on docprops "OK", not immediately
$('#iconsize').change(function() {
var size = this.value;
var icon_sizes = { s:16, m:24, l:32, xl:48 };
var size_num = icon_sizes[size];
// Change icon size
$('.tool_button, .push_button, .tool_button_current, .tool_button_disabled, .tool_flyout_button')
.find('svg').each(function() {
this.setAttribute('width',size_num); this.setAttribute('width',size_num);
this.setAttribute('height',size_num); this.setAttribute('height',size_num);
}); });
$.resizeSvgIcons({
'.flyout_arrow_horiz svg': size_num / 3,
'#logo svg': size_num * 1.3
}); });
if(size != 's') {
$.resizeSvgIcons({'#layerbuttons svg': size_num * .6});
}
// Note that all rules will be prefixed with '#svg_editor' when parsed
var cssResizeRules = {
".tool_button,\
.push_button,\
.tool_button_current,\
.tool_button_disabled,\
#tools_rect .tool_flyout_button,\
#tools_ellipse .tool_flyout_button": {
'width': {s: '16px', l: '32px', xl: '48px'},
'height': {s: '16px', l: '32px', xl: '48px'},
'padding': {s: '1px', l: '2px', xl: '3px'}
},
".tool_sep": {
'height': {s: '16px', l: '32px', xl: '48px'},
'margin': {s: '2px 2px', l: '2px 5px', xl: '2px 8px'}
},
"#tools_top": {
'left': {s: '27px', l: '50px', xl: '70px'},
'height': {s: '50px', l: '88px', xl: '125px'}
},
"#tools_left": {
'width': {s: '26px', l: '34px', xl: '42px'},
'top': {s: '50px', l: '87px', xl: '125px'}
},
"div#workarea": {
'left': {s: '27px', l: '46px', xl: '65px'},
'top': {s: '50px', l: '88px', xl: '125px'},
'bottom': {s: '52px', l: '68px', xl: '75px'}
},
"#tools_bottom": {
'left': {s: '27px', l: '46px', xl: '65px'},
'height': {s: '52px', l: '68px', xl: '75px'}
},
"#tools_top input, #tools_bottom input": {
'margin-top': {s: '2px', l: '4px', xl: '5px'},
'height': {s: 'auto', l: 'auto', xl: 'auto'},
'border': {s: '1px solid #555', l: 'auto', xl: 'auto'},
'font-size': {s: '.9em', l: '2em', xl: '2.5em'}
},
"#tools_bottom input": {
'margin-top': {s: '6px', l: '4px', xl: '5px'},
},
"#tools_bottom span, #copyright, #tools_bottom .label": {
'font-size': {l: '1.5em', xl: '2em'}
},
"#tools_bottom_2": {
'width': {l: '295px', xl: '355px'}
},
"#tools_top > div, #tools_top": {
'line-height': {s: '17px', l: '34px', xl: '50px'}
},
".dropdown button": {
'height': {s: '18px', l: '34px', xl: '40px'}
},
"#tools_top label, #tools_bottom label": {
'font-size': {s: '1em', l: '1.5em', xl: '2em'},
'margin-top': {s: '1px', l: '3px', xl: '5px'}
},
"#tool_bold, #tool_italic": {
'font-size': {s: '1.5em', l: '3em', xl: '4.5em'}
},
"#sidepanels": {
'top': {s: '50px', l: '88px', xl: '125px'},
'bottom': {s: '52px', l: '68px', xl: '65px'},
},
'#layerbuttons': {
'width': {l: '130px', xl: '175px'},
'height': {l: '24px', xl: '30px'}
},
'#layerlist': {
'width': {l: '128px', xl: '150px'}
},
'.layer_button': {
'width': {l: '19px', xl: '28px'},
'height': {l: '19px', xl: '28px'}
},
".flyout_arrow_horiz": {
'left': {s: '-5px', l: '5px', xl: '14px'},
'top': {s: '-13px', l: '-13px', xl: '-20px'}
},
"input.spin-button": {
'background-image': {l: "url('images/spinbtn_updn_big.png')", xl: "url('images/spinbtn_updn_big.png')"},
'background-position': {l: '100% -5px', xl: '100% -2px'},
'padding-right': {l: '24px', xl: '24px' }
},
"input.spin-button.up": {
'background-position': {l: '100% -45px', xl: '100% -42px'}
},
"input.spin-button.down": {
'background-position': {l: '100% -85px', xl: '100% -82px'}
}
};
var rule_elem = $('#tool_size_rules');
if(!rule_elem.length) {
rule_elem = $('<style id="tool_size_rules"><\/style>').appendTo('head');
} else {
rule_elem.empty();
}
if(size != 'm') {
var style_str = '';
$.each(cssResizeRules, function(selector, rules) {
selector = '#svg_editor ' + selector.replace(/,/g,', #svg_editor');
style_str += selector + '{';
$.each(rules, function(prop, values) {
if(values[size]) {
style_str += (prop + ':' + values[size] + ';');
}
});
style_str += '}';
});
rule_elem.text(style_str);
}
var pos = $('#tools_rect_show').offset();
$('#tools_rect').css({'left': pos.left, 'top': pos.top});
pos = $('#tools_ellipse_show').offset();
$('#tools_ellipse').css({'left': pos.left, 'top': pos.top});
});
// For quick testing
// window.setTimeout(function() {
// $('#iconsize').val('s').change();
// },1000);
}); });
</script> </script>
@ -299,7 +524,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<link rel="alternate" type="application/atom+xml" title="SVG-edit Updates (Issues/Fixes/Commits)" href="http://code.google.com/feeds/p/svg-edit/updates/basic" /> <link rel="alternate" type="application/atom+xml" title="SVG-edit Updates (Issues/Fixes/Commits)" href="http://code.google.com/feeds/p/svg-edit/updates/basic" />
<!-- Add script with custom handlers here --> <!-- Add script with custom handlers here -->
<title>SVG-edit demo (w/SVG icons)</title> <title>SVG-edit demo</title>
</head> </head>
<body> <body>
@ -337,7 +562,6 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<div id="logo"> <div id="logo">
<a href="http://svg-edit.googlecode.com/" target="_blank" title="SVG-edit Home Page"> <a href="http://svg-edit.googlecode.com/" target="_blank" title="SVG-edit Home Page">
<img src="images/logo.png" alt="logo" />
</a> </a>
</div> </div>
@ -346,7 +570,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<!-- File-like buttons: New, Save, Source --> <!-- File-like buttons: New, Save, Source -->
<div id="file_panel"> <div id="file_panel">
<div class="push_button" id="tool_clear" title="New Image [N]"></div> <div class="push_button" id="tool_clear" title="New Image [N]"></div>
<img style="display:none" class="push_button" id="tool_open" src="images/open.png" title="Open Image [O]" alt="Open"/> <div class="push_button" id="tool_open" title="Open Image [O]" style="display:none"></div>
<div class="push_button" id="tool_save" title="Save Image [S]"></div> <div class="push_button" id="tool_save" title="Save Image [S]"></div>
<div class="push_button" id="tool_docprops" title="Document Properties [I]"></div> <div class="push_button" id="tool_docprops" title="Document Properties [I]"></div>
<div class="push_button" id="tool_source" title="Edit Source [U]"></div> <div class="push_button" id="tool_source" title="Edit Source [U]"></div>
@ -362,13 +586,13 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<!-- Buttons when a single element is selected --> <!-- Buttons when a single element is selected -->
<div id="selected_panel"> <div id="selected_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<div class="push_button" id="tool_clone" title="Clone Element [C]"></div> <div class="push_button" id="tool_clone" title="Clone Element [C]"></div>
<div class="push_button" id="tool_delete" title="Delete Element [Delete/Backspace]"></div> <div class="push_button" id="tool_delete" title="Delete Element [Delete/Backspace]"></div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<div class="push_button" id="tool_move_top" title="Move to Top [Shift+Up]"></div> <div class="push_button" id="tool_move_top" title="Move to Top [Shift+Up]"></div>
<div class="push_button" id="tool_move_bottom" title="Move to Bottom [Shift+Down]"></div> <div class="push_button" id="tool_move_bottom" title="Move to Bottom [Shift+Down]"></div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label id="group_opacityLabel" class="selected_tool" for="group_opacity">opac:</label> <label id="group_opacityLabel" class="selected_tool" for="group_opacity">opac:</label>
<input id="group_opacity" class="selected_tool" title="Change selected item opacity" size="3" value="100" type="text"/> <input id="group_opacity" class="selected_tool" title="Change selected item opacity" size="3" value="100" type="text"/>
@ -391,11 +615,11 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<!-- Buttons when multiple elements are selected --> <!-- Buttons when multiple elements are selected -->
<div id="multiselected_panel"> <div id="multiselected_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<div class="push_button" id="tool_clone_multi" title="Clone Elements [C]"></div> <div class="push_button" id="tool_clone_multi" title="Clone Elements [C]"></div>
<div class="push_button" id="tool_delete_multi" title="Delete Selected Elements [Delete/Backspace]"></div> <div class="push_button" id="tool_delete_multi" title="Delete Selected Elements [Delete/Backspace]"></div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<img class="push_button" id="tool_group" src="images/shape_group.png" title="Group Elements [G]" alt="Group"/> <div class="push_button" id="tool_group" title="Group Elements [G]"></div>
<div class="push_button" id="tool_alignleft" title="Align Left"></div> <div class="push_button" id="tool_alignleft" title="Align Left"></div>
<div class="push_button" id="tool_aligncenter" title="Align Center"></div> <div class="push_button" id="tool_aligncenter" title="Align Center"></div>
<div class="push_button" id="tool_alignright" title="Align Right"></div> <div class="push_button" id="tool_alignright" title="Align Right"></div>
@ -409,17 +633,17 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<option id="smallest_object" value="smallest">smallest object</option> <option id="smallest_object" value="smallest">smallest object</option>
<option id="page" value="page">page</option> <option id="page" value="page">page</option>
</select> </select>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
</div> </div>
<div id="g_panel"> <div id="g_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<img class="push_button" id="tool_ungroup" src="images/shape_ungroup.png" title="Ungroup Elements [G]" alt="Ungroup"/> <div class="push_button" id="tool_ungroup" title="Ungroup Elements [G]"></div>
</div> </div>
<div id="rect_panel"> <div id="rect_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="rect_tool">x:</label> <label class="rect_tool">x:</label>
<input id="rect_x" class="rect_tool attr_changer" title="Change rectangle X coordinate" size="3" data-attr="x"/> <input id="rect_x" class="rect_tool attr_changer" title="Change rectangle X coordinate" size="3" data-attr="x"/>
<label class="rect_tool">y:</label> <label class="rect_tool">y:</label>
@ -433,7 +657,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="image_panel"> <div id="image_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="image_tool">x:</label> <label class="image_tool">x:</label>
<input id="image_x" class="image_tool attr_changer" title="Change image X coordinate" size="3" data-attr="x"/> <input id="image_x" class="image_tool attr_changer" title="Change image X coordinate" size="3" data-attr="x"/>
<label class="image_tool">y:</label> <label class="image_tool">y:</label>
@ -447,7 +671,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="circle_panel"> <div id="circle_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="circle_tool">cx:</label> <label class="circle_tool">cx:</label>
<input id="circle_cx" class="circle_tool attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/> <input id="circle_cx" class="circle_tool attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/>
<label class="circle_tool">cy:</label> <label class="circle_tool">cy:</label>
@ -457,7 +681,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="ellipse_panel"> <div id="ellipse_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="ellipse_tool">cx:</label> <label class="ellipse_tool">cx:</label>
<input id="ellipse_cx" class="ellipse_tool attr_changer" title="Change ellipse's cx coordinate" size="3" data-attr="cx"/> <input id="ellipse_cx" class="ellipse_tool attr_changer" title="Change ellipse's cx coordinate" size="3" data-attr="cx"/>
<label class="ellipse_tool">cy:</label> <label class="ellipse_tool">cy:</label>
@ -469,7 +693,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="line_panel"> <div id="line_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="line_tool">x1:</label> <label class="line_tool">x1:</label>
<input id="line_x1" class="line_tool attr_changer" title="Change line's starting x coordinate" size="3" data-attr="x1"/> <input id="line_x1" class="line_tool attr_changer" title="Change line's starting x coordinate" size="3" data-attr="x1"/>
<label class="line_tool">y1:</label> <label class="line_tool">y1:</label>
@ -481,7 +705,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="text_panel"> <div id="text_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="text_tool">x:</label> <label class="text_tool">x:</label>
<input id="text_x" class="text_tool attr_changer" title="Change text X coordinate" size="3" data-attr="x"/> <input id="text_x" class="text_tool attr_changer" title="Change text X coordinate" size="3" data-attr="x"/>
<label class="text_tool">y:</label> <label class="text_tool">y:</label>
@ -501,7 +725,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="path_node_panel"> <div id="path_node_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="path_node_tool">x:</label> <label class="path_node_tool">x:</label>
<input id="path_node_x" class="path_node_tool attr_changer" title="Change node's x coordinate" size="3" data-attr="x"/> <input id="path_node_x" class="path_node_tool attr_changer" title="Change node's x coordinate" size="3" data-attr="x"/>
<label class="path_node_tool">y:</label> <label class="path_node_tool">y:</label>
@ -552,19 +776,19 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<li>1000%</li> <li>1000%</li>
</ul> </ul>
</div> </div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
</div> </div>
<div id="tools_bottom_2"> <div id="tools_bottom_2">
<table> <table>
<tr> <tr>
<td id="fill_tool_bottom">fill:</td> <td id="fill_tool_bottom" class="label">fill:</td>
<td><div id="fill_color" class="color_block" title="Change fill color"></div></td> <td><div id="fill_color" class="color_block" title="Change fill color"></div></td>
<td colspan="3"><div id="fill_opacity">100%</div></td> <td colspan="3"><div id="fill_opacity" class="label">100%</div></td>
</tr><tr> </tr><tr>
<td id="stroke_tool_bottom">stroke:</td> <td id="stroke_tool_bottom" class="label">stroke:</td>
<td><div id="stroke_color" class="color_block" title="Change stroke color"></div></td> <td><div id="stroke_color" class="color_block" title="Change stroke color"></div></td>
<td><div id="stroke_opacity">100 %</div></td> <td><div id="stroke_opacity" class="label">100 %</div></td>
<td> <td>
<input id="stroke_width" title="Change stroke width" size="2" value="5" type="text" data-attr="Stroke Width"/> <input id="stroke_width" title="Change stroke width" size="2" value="5" type="text" data-attr="Stroke Width"/>
</td> </td>
@ -659,6 +883,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<option id="icon_small" value="s">Small</option> <option id="icon_small" value="s">Small</option>
<option id="icon_medium" value="m" selected="selected">Medium</option> <option id="icon_medium" value="m" selected="selected">Medium</option>
<option id="icon_large" value="l">Large</option> <option id="icon_large" value="l">Large</option>
<option id="icon_xlarge" value="xl">Extra Large</option>
</select> </select>
</fieldset> </fieldset>
</div> </div>

View File

@ -47,11 +47,20 @@ body {
margin-top: 2px; margin-top: 2px;
} }
#svg_editor #stroke_bg,
#svg_editor #fill_bg {
height: 16px;
width: 16px;
margin: 2px;
}
#svg_editor #fill_color, #svg_editor #stroke_color { #svg_editor #fill_color, #svg_editor #stroke_color {
height: 16px; height: 16px;
width: 16px; width: 16px;
border: 1px solid #808080; border: 1px solid #808080;
cursor: pointer; cursor: pointer;
margin-top: -19px;
margin-left: 1px;
} }
#svg_editor div#palette { #svg_editor div#palette {
@ -138,6 +147,7 @@ body {
border-bottom: 1px solid #FFFFFF; border-bottom: 1px solid #FFFFFF;
border-left: 1px solid #808080; border-left: 1px solid #808080;
border-top: 1px solid #808080; border-top: 1px solid #808080;
overflow: auto;
} }
#svg_editor .layer_button { #svg_editor .layer_button {
@ -149,6 +159,8 @@ body {
border-right: 1px solid #808080; border-right: 1px solid #808080;
border-bottom: 1px solid #808080; border-bottom: 1px solid #808080;
cursor: pointer; cursor: pointer;
float: left;
margin-right: 3px;
} }
#svg_editor .layer_buttonpressed { #svg_editor .layer_buttonpressed {
@ -182,9 +194,6 @@ body {
} }
#svg_editor #layerlist td.layervis { #svg_editor #layerlist td.layervis {
background-image: url('images/eye.png');
background-repeat: no-repeat;
background-position: 3px center;
width: 22px; width: 22px;
cursor:pointer; cursor:pointer;
} }
@ -193,6 +202,14 @@ body {
cursor:pointer; cursor:pointer;
} }
#svg_editor #layerlist td.layervis * {
display: block;
}
#svg_editor #layerlist td.layerinvis * {
display: none;
}
#svg_editor #layerlist td.layername { #svg_editor #layerlist td.layername {
cursor: pointer; cursor: pointer;
} }
@ -311,6 +328,7 @@ body {
position: relative; position: relative;
top: -13px; top: -13px;
left: -5px; left: -5px;
margin-top: -3px;
margin-bottom: -13px; margin-bottom: -13px;
} }
@ -331,8 +349,7 @@ span.zoom_tool {
position: relative; position: relative;
} }
.dropdown button { #svg_editor .dropdown button {
background: transparent 3px 8px url('images/dropdown.gif') no-repeat;
width: 15px; width: 15px;
height: 21px; height: 21px;
margin: 6px 0 0 1px; margin: 6px 0 0 1px;
@ -422,13 +439,37 @@ span.zoom_tool {
} }
#svg_editor .tool_sep { #svg_editor .tool_sep {
width: 2px; width: 1px;
background: #888;
border-left: 1px outset #EEE;
margin: 2px 3px;
padding: 0;
height: 24px; height: 24px;
margin: 2px;
margin-right: 0;
padding: 2px;
} }
#tool_bold, #tool_italic {
font: bold 2.1em/1.1em serif;
text-align: center;
padding-left: 2px;
position: relative;
}
#tool_bold span, #tool_italic span {
position: absolute;
width: 100%;
height: 100%;
top: 0; left: 0;
background: #000;
opacity: 0;
}
#tool_italic {
font-weight: normal;
font-style: italic;
}
#svg_editor #color_picker { #svg_editor #color_picker {
position: absolute; position: absolute;
display: none; display: none;
@ -449,22 +490,6 @@ span.zoom_tool {
width: 30px; width: 30px;
} }
#svg_editor #tool_square { background: 2px 2px url('images/square.png') no-repeat; }
#svg_editor #tool_rect { background: 2px 2px url('images/rect.png') no-repeat; }
#svg_editor #tool_fhrect { background: 2px 2px url('images/freehand-square.png') no-repeat; }
#svg_editor #tool_circle { background: 2px 2px url('images/circle.png') no-repeat; }
#svg_editor #tool_ellipse { background: 2px 2px url('images/ellipse.png') no-repeat; }
#svg_editor #tool_fhellipse { background: 2px 2px url('images/freehand-circle.png') no-repeat; }
#svg_editor #tool_stacktop { background: 2px 2px url('images/move_top.png') no-repeat; }
#svg_editor #tool_stackbottom { background: 2px 2px url('images/move_bottom.png') no-repeat; }
#svg_editor #tool_aligntop { background: 2px 2px url('images/align-top.png') no-repeat; }
#svg_editor #tool_alignmiddle { background: 2px 2px url('images/align-middle.png') no-repeat; }
#svg_editor #tool_alignbottom { background: 2px 2px url('images/align-bottom.png') no-repeat; }
#svg_editor #tool_alignleft { background: 2px 2px url('images/align-left.png') no-repeat; }
#svg_editor #tool_aligncenter { background: 2px 2px url('images/align-center.png') no-repeat; }
#svg_editor #tool_alignright { background: 2px 2px url('images/align-right.png') no-repeat; }
#svg_editor .tool_sep { background: 2px 2px url('images/sep.png') no-repeat; }
/* TODO: figure out what more-specific selector causes me to write this atrocity and not /* TODO: figure out what more-specific selector causes me to write this atrocity and not
simply .tool_flyout_button */ simply .tool_flyout_button */
#svg_editor #tools_rect .tool_flyout_button, #svg_editor #tools_ellipse .tool_flyout_button { #svg_editor #tools_rect .tool_flyout_button, #svg_editor #tools_ellipse .tool_flyout_button {
@ -539,6 +564,7 @@ span.zoom_tool {
background-color: #B0B0B0; background-color: #B0B0B0;
opacity: 1.0; opacity: 1.0;
text-align: center; text-align: center;
border: 1px outset #777;
} }
/* /*
@ -548,22 +574,52 @@ span.zoom_tool {
bottom: 100px; bottom: 100px;
*/ */
#svg_docprops #svg_docprops_container { #svg_docprops #svg_docprops_container {
position: absolute; position: absolute;
top: 50px; top: 50px;
padding: 10px; padding: 10px;
background-color: #B0B0B0; background-color: #B0B0B0;
border: 1px outset #777;
opacity: 1.0; opacity: 1.0;
/* width: 450px;*/
font-family: Verdana, Helvetica, sans-serif;
font-size: .8em;
} }
#tool_docprops_back {
margin-left: 1em;
}
#svg_docprops_container #svg_docprops_docprops,
#svg_docprops_container #svg_docprops_prefs {
float: left;
width: 200px;
margin: 5px .7em;
}
#svg_docprops_docprops > legend, #svg_docprops_prefs > legend {
font-weight: bold;
font-size: 1.1em;
}
#svg_docprops_container fieldset { #svg_docprops_container fieldset {
padding: 5px; padding: 5px;
margin: 5px; margin: 5px;
border: 1px solid #DDD;
} }
#svg_docprops_container label { #svg_docprops_container label {
display: block; display: block;
margin-bottom: .2em; margin: .5em;
}
#svginfo_bg_note {
font-size: .9em;
font-style: italic;
color: #444;
} }
#canvas_title { #canvas_title {
@ -595,15 +651,6 @@ span.zoom_tool {
padding: 18px; padding: 18px;
} }
#change_background input {
color: #888;
}
#change_background input.cur_background {
border: 2px solid blue;
color: #000;
}
#background_img { #background_img {
position: absolute; position: absolute;
top: 0; top: 0;
@ -635,21 +682,25 @@ span.zoom_tool {
opacity: 0.6; opacity: 0.6;
} }
#tool_source_save, #tool_docprops_save { button#tool_source_save,
background: #E8E8E8 url(images/save.png) no-repeat 2px 0; button#tool_source_cancel,
button#tool_docprops_save,
button#tool_docprops_cancel {
border:1px solid #dedede;
line-height:130%;
background: #E8E8E8 none;
padding:5px 10px 5px 7px; /* Firefox */
line-height:17px; /* Safari */
} }
#tool_source_cancel, #tool_docprops_cancel { .toolbar_button button .svg_icon {
background: #E8E8E8 url(images/cancel.png) no-repeat 2px 0; margin:0 3px -3px 0 !important;
padding:0;
border:none;
width:16px;
height:16px;
} }
#tool_source_save, #tool_docprops_save {
background: #E8E8E8 url(images/save.png) no-repeat 2px 0;
}
#tool_source_cancel, #tool_docprops_cancel {
background: #E8E8E8 url(images/cancel.png) no-repeat 2px 0;
}
/* Slider /* Slider
----------------------------------*/ ----------------------------------*/
@ -677,3 +728,11 @@ span.zoom_tool {
background: #B0B0B0; background: #B0B0B0;
border: 1px solid #000; border: 1px solid #000;
} }
/* Possibly not necessary */
#svg_editor #tools_rect .tool_flyout_button,
#svg_editor #tools_ellipse .tool_flyout_button {
padding: 2px;
width: 24px;
height: 24px;
}

View File

@ -13,12 +13,12 @@
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="js-hotkeys/jquery.hotkeys.min.js"></script> <script type="text/javascript" src="js-hotkeys/jquery.hotkeys.min.js"></script>
<script type="text/javascript" src="jgraduate/jquery.jgraduate.js"></script> <script type="text/javascript" src="jgraduate/jquery.jgraduate.js"></script>
<script type="text/javascript" src="svgicons/jquery.svgicons.js"></script>
<script type="text/javascript" src="spinbtn/JQuerySpinBtn.js"></script> <script type="text/javascript" src="spinbtn/JQuerySpinBtn.js"></script>
<script type="text/javascript" src="svgcanvas.js"></script> <script type="text/javascript" src="svgcanvas.js"></script>
<script type="text/javascript" src="svg-editor.js"></script> <script type="text/javascript" src="svg-editor.js"></script>
<script type="text/javascript" src="locale/locale.js"></script> <script type="text/javascript" src="locale/locale.js"></script>
<!-- Release version of script tags: > <!-- Release version of script tags: >
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="js-hotkeys/jquery.hotkeys-0.7.9.js"></script> <script type="text/javascript" src="js-hotkeys/jquery.hotkeys-0.7.9.js"></script>
@ -53,11 +53,11 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<div id="layerpanel"> <div id="layerpanel">
<h3 id="layersLable">Layers</h3> <h3 id="layersLable">Layers</h3>
<fieldset id="layerbuttons"> <fieldset id="layerbuttons">
<img id="layer_new" class="layer_button" src="images/clear.png" alt="New Layer" title="New Layer"/> <div id="layer_new" class="layer_button" title="New Layer"></div>
<img id="layer_delete" class="layer_button" src="images/delete.png" alt="Delete Layer" title="Delete Layer"/> <div id="layer_delete" class="layer_button" title="Delete Layer"></div>
<img id="layer_rename" class="layer_button" src="images/view-refresh.png" alt="Rename Layer" title="Rename Layer"/> <div id="layer_rename" class="layer_button" title="Rename Layer"></div>
<img id="layer_up" class="layer_button" src="images/go-up.png" alt="Move Layer up" title="Move Layer Up"/> <div id="layer_up" class="layer_button" title="Move Layer Up"></div>
<img id="layer_down" class="layer_button" src="images/go-down.png" alt="Move Layer Down" title="Move Layer Down"/> <div id="layer_down" class="layer_button" title="Move Layer Down"></div>
</fieldset> </fieldset>
<table id="layerlist"> <table id="layerlist">
@ -76,7 +76,6 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<div id="logo"> <div id="logo">
<a href="http://svg-edit.googlecode.com/" target="_blank" title="SVG-edit Home Page"> <a href="http://svg-edit.googlecode.com/" target="_blank" title="SVG-edit Home Page">
<img src="images/logo.png" alt="logo" />
</a> </a>
</div> </div>
@ -84,30 +83,30 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<!-- File-like buttons: New, Save, Source --> <!-- File-like buttons: New, Save, Source -->
<div id="file_panel"> <div id="file_panel">
<img class="push_button" id="tool_clear" src="images/clear.png" title="New Image [N]" alt="Clear" /> <div class="push_button" id="tool_clear" title="New Image [N]"></div>
<img style="display:none" class="push_button" id="tool_open" src="images/open.png" title="Open Image [O]" alt="Open"/> <div class="push_button" id="tool_open" title="Open Image [O]" style="display:none"></div>
<img class="push_button" id="tool_save" src="images/save.png" title="Save Image [S]" alt="Save"/> <div class="push_button" id="tool_save" title="Save Image [S]"></div>
<img class="push_button" id="tool_docprops" src="images/document-properties.png" title="Document Properties [I]"/> <div class="push_button" id="tool_docprops" title="Document Properties [I]"></div>
<img class="push_button" id="tool_source" src="images/source.png" title="Edit Source [U]" alt="Source"/> <div class="push_button" id="tool_source" title="Edit Source [U]"></div>
<img class="tool_button" id="tool_wireframe" src="images/wireframe.png" title="Wireframe Mode [F]" alt="Wireframe"/> <div class="tool_button" id="tool_wireframe" title="Wireframe Mode [F]"></div>
</div> </div>
<!-- History buttons --> <!-- History buttons -->
<div id="history_panel"> <div id="history_panel">
<div class="tool_sep"></div> <div class="tool_sep"></div>
<img class="push_button tool_button_disabled" id="tool_undo" src="images/undo.png" title="Undo [Z]"/> <div class="push_button tool_button_disabled" id="tool_undo" title="Undo [Z]"></div>
<img class="push_button tool_button_disabled" id="tool_redo" src="images/redo.png" title="Redo [Y]"/> <div class="push_button tool_button_disabled" id="tool_redo" title="Redo [Y]"></div>
</div> </div>
<!-- Buttons when a single element is selected --> <!-- Buttons when a single element is selected -->
<div id="selected_panel"> <div id="selected_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<img class="push_button" id="tool_clone" src="images/clone.png" title="Clone Element [C]" alt="Copy"/> <div class="push_button" id="tool_clone" title="Clone Element [C]"></div>
<img class="push_button" id="tool_delete" src="images/delete.png" title="Delete Element [Delete/Backspace]" alt="Delete"/> <div class="push_button" id="tool_delete" title="Delete Element [Delete/Backspace]"></div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<img class="push_button" id="tool_move_top" src="images/move_top.png" title="Move to Top [Shift+Up]" alt="Top"/> <div class="push_button" id="tool_move_top" title="Move to Top [Shift+Up]"></div>
<img class="push_button" id="tool_move_bottom" src="images/move_bottom.png" title="Move to Bottom [Shift+Down]" alt="Bottom"/> <div class="push_button" id="tool_move_bottom" title="Move to Bottom [Shift+Down]"></div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label id="group_opacityLabel" class="selected_tool" for="group_opacity">opac:</label> <label id="group_opacityLabel" class="selected_tool" for="group_opacity">opac:</label>
<input id="group_opacity" class="selected_tool" title="Change selected item opacity" size="3" value="100" type="text"/> <input id="group_opacity" class="selected_tool" title="Change selected item opacity" size="3" value="100" type="text"/>
@ -130,11 +129,11 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<!-- Buttons when multiple elements are selected --> <!-- Buttons when multiple elements are selected -->
<div id="multiselected_panel"> <div id="multiselected_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<img class="push_button" id="tool_clone_multi" src="images/clone.png" title="Clone Elements [C]" alt="Clone"/> <div class="push_button" id="tool_clone_multi" title="Clone Elements [C]"></div>
<img class="push_button" id="tool_delete_multi" src="images/delete.png" title="Delete Selected Elements [Delete/Backspace]" alt="Delete"/> <div class="push_button" id="tool_delete_multi" title="Delete Selected Elements [Delete/Backspace]"></div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<img class="push_button" id="tool_group" src="images/shape_group.png" title="Group Elements [G]" alt="Group"/> <div class="push_button" id="tool_group" title="Group Elements [G]"></div>
<div class="push_button" id="tool_alignleft" title="Align Left"></div> <div class="push_button" id="tool_alignleft" title="Align Left"></div>
<div class="push_button" id="tool_aligncenter" title="Align Center"></div> <div class="push_button" id="tool_aligncenter" title="Align Center"></div>
<div class="push_button" id="tool_alignright" title="Align Right"></div> <div class="push_button" id="tool_alignright" title="Align Right"></div>
@ -148,17 +147,17 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<option id="smallest_object" value="smallest">smallest object</option> <option id="smallest_object" value="smallest">smallest object</option>
<option id="page" value="page">page</option> <option id="page" value="page">page</option>
</select> </select>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
</div> </div>
<div id="g_panel"> <div id="g_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<img class="push_button" id="tool_ungroup" src="images/shape_ungroup.png" title="Ungroup Elements [G]" alt="Ungroup"/> <div class="push_button" id="tool_ungroup" title="Ungroup Elements [G]"></div>
</div> </div>
<div id="rect_panel"> <div id="rect_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="rect_tool">x:</label> <label class="rect_tool">x:</label>
<input id="rect_x" class="rect_tool attr_changer" title="Change rectangle X coordinate" size="3" data-attr="x"/> <input id="rect_x" class="rect_tool attr_changer" title="Change rectangle X coordinate" size="3" data-attr="x"/>
<label class="rect_tool">y:</label> <label class="rect_tool">y:</label>
@ -172,7 +171,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="image_panel"> <div id="image_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="image_tool">x:</label> <label class="image_tool">x:</label>
<input id="image_x" class="image_tool attr_changer" title="Change image X coordinate" size="3" data-attr="x"/> <input id="image_x" class="image_tool attr_changer" title="Change image X coordinate" size="3" data-attr="x"/>
<label class="image_tool">y:</label> <label class="image_tool">y:</label>
@ -186,7 +185,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="circle_panel"> <div id="circle_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="circle_tool">cx:</label> <label class="circle_tool">cx:</label>
<input id="circle_cx" class="circle_tool attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/> <input id="circle_cx" class="circle_tool attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/>
<label class="circle_tool">cy:</label> <label class="circle_tool">cy:</label>
@ -196,7 +195,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="ellipse_panel"> <div id="ellipse_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="ellipse_tool">cx:</label> <label class="ellipse_tool">cx:</label>
<input id="ellipse_cx" class="ellipse_tool attr_changer" title="Change ellipse's cx coordinate" size="3" data-attr="cx"/> <input id="ellipse_cx" class="ellipse_tool attr_changer" title="Change ellipse's cx coordinate" size="3" data-attr="cx"/>
<label class="ellipse_tool">cy:</label> <label class="ellipse_tool">cy:</label>
@ -208,7 +207,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="line_panel"> <div id="line_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="line_tool">x1:</label> <label class="line_tool">x1:</label>
<input id="line_x1" class="line_tool attr_changer" title="Change line's starting x coordinate" size="3" data-attr="x1"/> <input id="line_x1" class="line_tool attr_changer" title="Change line's starting x coordinate" size="3" data-attr="x1"/>
<label class="line_tool">y1:</label> <label class="line_tool">y1:</label>
@ -220,13 +219,13 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="text_panel"> <div id="text_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="text_tool">x:</label> <label class="text_tool">x:</label>
<input id="text_x" class="text_tool attr_changer" title="Change text X coordinate" size="3" data-attr="x"/> <input id="text_x" class="text_tool attr_changer" title="Change text X coordinate" size="3" data-attr="x"/>
<label class="text_tool">y:</label> <label class="text_tool">y:</label>
<input id="text_y" class="text_tool attr_changer" title="Change text Y coordinate" size="3" data-attr="y"/> <input id="text_y" class="text_tool attr_changer" title="Change text Y coordinate" size="3" data-attr="y"/>
<img class="tool_button" id="tool_bold" src="images/bold.png" title="Bold Text [B]" alt="Bold"/> <div class="tool_button" id="tool_bold" title="Bold Text [B]"><span></span>B</div>
<img class="tool_button" id="tool_italic" src="images/italic.png" title="Italic Text [I]" alt="Italic"/> <div class="tool_button" id="tool_italic" title="Italic Text [I]"><span></span>i</div>
<select id="font_family" class="text_tool" title="Change Font Family"> <select id="font_family" class="text_tool" title="Change Font Family">
<option selected="selected" value="serif">serif</option> <option selected="selected" value="serif">serif</option>
<option value="sans-serif">sans-serif</option> <option value="sans-serif">sans-serif</option>
@ -240,7 +239,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div> </div>
<div id="path_node_panel"> <div id="path_node_panel">
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
<label class="path_node_tool">x:</label> <label class="path_node_tool">x:</label>
<input id="path_node_x" class="path_node_tool attr_changer" title="Change node's x coordinate" size="3" data-attr="x"/> <input id="path_node_x" class="path_node_tool attr_changer" title="Change node's x coordinate" size="3" data-attr="x"/>
<label class="path_node_tool">y:</label> <label class="path_node_tool">y:</label>
@ -249,24 +248,24 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<option id="straight_segments" selected="selected" value="4">Straight</option> <option id="straight_segments" selected="selected" value="4">Straight</option>
<option id="curve_segments" value="6">Curve</option> <option id="curve_segments" value="6">Curve</option>
</select> </select>
<img class="tool_button" id="tool_node_clone" src="images/clone.png" title="Clone Node" alt="Clone"/> <div class="tool_button" id="tool_node_clone" title="Clone Node"></div>
<img class="tool_button" id="tool_node_delete" src="images/delete.png" title="Delete Node" alt="Delete"/> <div class="tool_button" id="tool_node_delete" title="Delete Node"></div>
</div> </div>
</div> <!-- tools_top --> </div> <!-- tools_top -->
<div id="tools_left" class="tools_panel"> <div id="tools_left" class="tools_panel">
<img class="tool_button_current" id="tool_select" src="images/select.png" title="Select Tool [1]" alt="Select"/><br/> <div class="tool_button_current" id="tool_select" title="Select Tool [1]"></div>
<img class="tool_button" id="tool_fhpath" src="images/fhpath.png" title="Pencil Tool [2]" alt="Pencil"/><br/> <div class="tool_button" id="tool_fhpath" title="Pencil Tool [2]"></div>
<img class="tool_button" id="tool_line" src="images/line.png" title="Line Tool [3]" alt="Line"/><br/> <div class="tool_button" id="tool_line" title="Line Tool [3]"></div>
<img class="tool_button" id="tools_rect_show" src="images/square.png" title="Square/Rect Tool [4/Shift+4]" alt="Square"/> <div class="tool_button" id="tools_rect_show" title="Square/Rect Tool [4/Shift+4]"></div>
<img class="flyout_arrow_horiz" src="images/flyouth.png"/> <div class="flyout_arrow_horiz"></div>
<img class="tool_button" id="tools_ellipse_show" src="images/circle.png" title="Ellipse/Circle Tool [5/Shift+5]" alt="Circle"/><br/> <div class="tool_button" id="tools_ellipse_show" title="Ellipse/Circle Tool [5/Shift+5]"></div>
<img class="flyout_arrow_horiz" src="images/flyouth.png"/> <div class="flyout_arrow_horiz"></div>
<img class="tool_button" id="tool_path" src="images/path.png" title="Path Tool [6]" alt="Path"/> <div class="tool_button" id="tool_path" title="Path Tool [7]"></div>
<img class="tool_button" id="tool_text" src="images/text.png" title="Text Tool [7]" alt="Text"/> <div class="tool_button" id="tool_text" title="Text Tool [6]"></div>
<img class="tool_button" id="tool_image" src="images/image.png" title="Image Tool [8]" alt="Image"/> <div class="tool_button" id="tool_image" title="Image Tool [8]"></div>
<img class="tool_button" id="tool_zoom" src="images/zoom.png" title="Zoom Tool [Ctrl+Up/Down]" alt="Zoom"/> <div class="tool_button" id="tool_zoom" title="Zoom Tool [Ctrl+Up/Down]"></div>
</div> <!-- tools_left --> </div> <!-- tools_left -->
<div id="tools_bottom" class="tools_panel"> <div id="tools_bottom" class="tools_panel">
@ -291,19 +290,19 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<li>1000%</li> <li>1000%</li>
</ul> </ul>
</div> </div>
<img class="tool_sep" src="images/sep.png" alt="|"/> <div class="tool_sep"></div>
</div> </div>
<div id="tools_bottom_2"> <div id="tools_bottom_2">
<table> <table>
<tr> <tr>
<td id="fill_tool_bottom">fill:</td> <td id="fill_tool_bottom" class="label">fill:</td>
<td><div id="fill_color" class="color_block" title="Change fill color"></div></td> <td><div id="fill_bg"></div><div id="fill_color" class="color_block" title="Change fill color"></div></td>
<td colspan="3"><div id="fill_opacity">100%</div></td> <td colspan="3"><div id="fill_opacity" class="label">100%</div></td>
</tr><tr> </tr><tr>
<td id="stroke_tool_bottom">stroke:</td> <td id="stroke_tool_bottom" class="label">stroke:</td>
<td><div id="stroke_color" class="color_block" title="Change stroke color"></div></td> <td><div id="stroke_bg"></div><div id="stroke_color" class="color_block" title="Change stroke color"></div></td>
<td><div id="stroke_opacity">100 %</div></td> <td><div id="stroke_opacity" class="label">100 %</div></td>
<td> <td>
<input id="stroke_width" title="Change stroke width" size="2" value="5" type="text" data-attr="Stroke Width"/> <input id="stroke_width" title="Change stroke width" size="2" value="5" type="text" data-attr="Stroke Width"/>
</td> </td>
@ -330,14 +329,14 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<div id="color_picker"></div> <div id="color_picker"></div>
<div id="tools_rect" class="tools_flyout"> <div id="tools_rect" class="tools_flyout">
<div id="tool_square" class="tool_flyout_button" title="Square"></div>
<div id="tool_rect" class="tool_flyout_button" title="Rectangle"></div> <div id="tool_rect" class="tool_flyout_button" title="Rectangle"></div>
<div id="tool_square" class="tool_flyout_button" title="Square"></div>
<div id="tool_fhrect" class="tool_flyout_button" title="Free-Hand Rectangle"></div> <div id="tool_fhrect" class="tool_flyout_button" title="Free-Hand Rectangle"></div>
</div> </div>
<div id="tools_ellipse" class="tools_flyout"> <div id="tools_ellipse" class="tools_flyout">
<div id="tool_circle" class="tool_flyout_button" title="Circle"></div>
<div id="tool_ellipse" class="tool_flyout_button" title="Ellipse"></div> <div id="tool_ellipse" class="tool_flyout_button" title="Ellipse"></div>
<div id="tool_circle" class="tool_flyout_button" title="Circle"></div>
<div id="tool_fhellipse" class="tool_flyout_button" title="Free-Hand Ellipse"></div> <div id="tool_fhellipse" class="tool_flyout_button" title="Free-Hand Ellipse"></div>
</div> </div>
@ -362,15 +361,15 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<div id="tool_docprops_back" class="toolbar_button"> <div id="tool_docprops_back" class="toolbar_button">
<button id="tool_docprops_save">OK</button> <button id="tool_docprops_save">OK</button>
<button id="tool_docprops_cancel">Cancel</button> <button id="tool_docprops_cancel">Cancel</button>
</div>
<label><span id="svginfo_title">Image title:</span> <input type="text" id="canvas_title" size="24"></label>
<fieldset id="change_background"> <fieldset id="svg_docprops_docprops">
<legend id="svginfo_change_background">Editor Background</legend> <legend id="svginfo_image_props">Image Properties</legend>
<div id="bg_blocks"></div> <label>
<label><span id="svginfo_bg_url">URL:</span> <input type="text" id="canvas_bg_url" size="17"></label> <span id="svginfo_title">Title:</span>
</fieldset> <input type="text" id="canvas_title" size="24">
</label>
<fieldset id="change_resolution"> <fieldset id="change_resolution">
<legend id="svginfo_dim">Canvas Dimensions</legend> <legend id="svginfo_dim">Canvas Dimensions</legend>
@ -390,9 +389,43 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<option id="fitToContent" value="content">Fit to Content</option> <option id="fitToContent" value="content">Fit to Content</option>
</select> </select>
</label> </label>
</fieldset>
</fieldset> </fieldset>
</div>
<fieldset id="svg_docprops_prefs">
<legend id="svginfo_editor_profs">Editor Preferences</legend>
<label><span id="svginfo_lang">Language:</span>
<select id="lang_select">
<option value="cs">Czech</option>
<option value="nl">Dutch</option>
<option value="en" selected="selected">English</option>
<option value="fr">French</option>
<option value="de">German</option>
<option value="ro">Romanian</option>
<option value="sk">Slovak</option>
</select>
</label>
<label><span id="svginfo_icons">Icon size:</span>
<select id="iconsize">
<option id="icon_small" value="s">Small</option>
<option id="icon_medium" value="m" selected="selected">Medium</option>
<option id="icon_large" value="l">Large</option>
<option id="icon_xlarge" value="xl">Extra Large</option>
</select>
</label>
<fieldset id="change_background">
<legend id="svginfo_change_background">Editor Background</legend>
<div id="bg_blocks"></div>
<label><span id="svginfo_bg_url">URL:</span> <input type="text" id="canvas_bg_url" size="21"></label>
<p id="svginfo_bg_note">Note: Background will not be saved with image.</p>
</fieldset>
</fieldset>
</div> </div>
</div> </div>

View File

@ -8,12 +8,72 @@ if(!window.console) {
*/ */
function svg_edit_setup() { function svg_edit_setup() {
var uiStrings = {
'invalidAttrValGiven':'Invalid value given',
'noContentToFitTo':'No content to fit to',
'layer':"Layer",
'dupeLayerName':"There is already a layer named that!",
'enterUniqueLayerName':"Please enter a unique layer name",
'enterNewLayerName':"Please enter the new layer name",
'layerHasThatName':"Layer already has that name",
'QmoveElemsToLayer':"Move selected elements to layer '%s'?",
'QwantToClear':'Do you want to clear the drawing?\nThis will also erase your undo history!',
'QerrorsRevertToSource':'There were parsing errors in your SVG source.\nRevert back to original SVG source?',
'QignoreSourceChanges':'Ignore changes made to SVG source?'
};
var palette = ["#000000","#202020","#404040","#606060","#808080","#a0a0a0","#c0c0c0","#e0e0e0","#ffffff","#800000","#ff0000","#808000","#ffff00","#008000","#00ff00","#008080","#00ffff","#000080","#0000ff","#800080","#ff00ff","#2b0000","#550000","#800000","#aa0000","#d40000","#ff0000","#ff2a2a","#ff5555","#ff8080","#ffaaaa","#ffd5d5","#280b0b","#501616","#782121","#a02c2c","#c83737","#d35f5f","#de8787","#e9afaf","#f4d7d7","#241c1c","#483737","#6c5353","#916f6f","#ac9393","#c8b7b7","#e3dbdb","#2b1100","#552200","#803300","#aa4400","#d45500","#ff6600","#ff7f2a","#ff9955","#ffb380","#ffccaa","#ffe6d5","#28170b","#502d16","#784421","#a05a2c","#c87137","#d38d5f","#deaa87","#e9c6af","#f4e3d7","#241f1c","#483e37","#6c5d53","#917c6f","#ac9d93","#c8beb7","#e3dedb","#2b2200","#554400","#806600","#aa8800","#d4aa00","#ffcc00","#ffd42a","#ffdd55","#ffe680","#ffeeaa","#fff6d5","#28220b","#504416","#786721","#a0892c","#c8ab37","#d3bc5f","#decd87","#e9ddaf","#f4eed7","#24221c","#484537","#6c6753","#918a6f","#aca793","#c8c4b7","#e3e2db","#222b00","#445500","#668000","#88aa00","#aad400","#ccff00","#d4ff2a","#ddff55","#e5ff80","#eeffaa","#f6ffd5","#22280b","#445016","#677821","#89a02c","#abc837","#bcd35f","#cdde87","#dde9af","#eef4d7","#22241c","#454837","#676c53","#8a916f","#a7ac93","#c4c8b7","#e2e3db","#112b00","#225500","#338000","#44aa00","#55d400","#66ff00","#7fff2a","#99ff55","#b3ff80","#ccffaa","#e5ffd5","#17280b","#2d5016","#447821","#5aa02c","#71c837","#8dd35f","#aade87","#c6e9af","#e3f4d7","#1f241c","#3e4837","#5d6c53","#7c916f","#9dac93","#bec8b7","#dee3db","#002b00","#005500","#008000","#00aa00","#00d400","#00ff00","#2aff2a","#55ff55","#80ff80","#aaffaa","#d5ffd5","#0b280b","#165016","#217821","#2ca02c","#37c837","#5fd35f","#87de87","#afe9af","#d7f4d7","#1c241c","#374837","#536c53","#6f916f","#93ac93","#b7c8b7","#dbe3db","#002b11","#005522","#008033","#00aa44","#00d455","#00ff66","#2aff80","#55ff99","#80ffb3","#aaffcc","#d5ffe6","#0b2817","#16502d","#217844","#2ca05a","#37c871","#5fd38d","#87deaa","#afe9c6","#d7f4e3","#1c241f","#37483e","#536c5d","#6f917c","#93ac9d","#b7c8be","#dbe3de","#002b22","#005544","#008066","#00aa88","#00d4aa","#00ffcc","#2affd5","#55ffdd","#80ffe6","#aaffee","#d5fff6","#0b2822","#165044","#217867","#2ca089","#37c8ab","#5fd3bc","#87decd","#afe9dd","#d7f4ee","#1c2422","#374845","#536c67","#6f918a","#93aca7","#b7c8c4","#dbe3e2","#00222b","#004455","#006680","#0088aa","#00aad4","#00ccff","#2ad4ff","#55ddff","#80e5ff","#aaeeff","#d5f6ff","#0b2228","#164450","#216778","#2c89a0","#37abc8","#5fbcd3","#87cdde","#afdde9","#d7eef4","#1c2224","#374548","#53676c","#6f8a91","#93a7ac","#b7c4c8","#dbe2e3","#00112b","#002255","#003380","#0044aa","#0055d4","#0066ff","#2a7fff","#5599ff","#80b3ff","#aaccff","#d5e5ff","#0b1728","#162d50","#214478","#2c5aa0","#3771c8","#5f8dd3","#87aade","#afc6e9","#d7e3f4","#1c1f24","#373e48","#535d6c","#6f7c91","#939dac","#b7bec8","#dbdee3","#00002b","#000055","#000080","#0000aa","#0000d4","#0000ff","#2a2aff","#5555ff","#8080ff","#aaaaff","#d5d5ff","#0b0b28","#161650","#212178","#2c2ca0","#3737c8","#5f5fd3","#8787de","#afafe9","#d7d7f4","#1c1c24","#373748","#53536c","#6f6f91","#9393ac","#b7b7c8","#dbdbe3","#11002b","#220055","#330080","#4400aa","#5500d4","#6600ff","#7f2aff","#9955ff","#b380ff","#ccaaff","#e5d5ff","#170b28","#2d1650","#442178","#5a2ca0","#7137c8","#8d5fd3","#aa87de","#c6afe9","#e3d7f4","#1f1c24","#3e3748","#5d536c","#7c6f91","#9d93ac","#beb7c8","#dedbe3","#22002b","#440055","#660080","#8800aa","#aa00d4","#cc00ff","#d42aff","#dd55ff","#e580ff","#eeaaff","#f6d5ff","#220b28","#441650","#672178","#892ca0","#ab37c8","#bc5fd3","#cd87de","#ddafe9","#eed7f4","#221c24","#453748","#67536c","#8a6f91","#a793ac","#c4b7c8","#e2dbe3","#2b0022","#550044","#800066","#aa0088","#d400aa","#ff00cc","#ff2ad4","#ff55dd","#ff80e5","#ffaaee","#ffd5f6","#280b22","#501644","#782167","#a02c89","#c837ab","#d35fbc","#de87cd","#e9afdd","#f4d7ee","#241c22","#483745","#6c5367","#916f8a","#ac93a7","#c8b7c4","#e3dbe2","#2b0011","#550022","#800033","#aa0044","#d40055","#ff0066","#ff2a7f","#ff5599","#ff80b2","#ffaacc","#ffd5e5","#280b17","#50162d","#782144","#a02c5a","#c83771","#d35f8d","#de87aa","#e9afc6","#f4d7e3","#241c1f","#48373e","#6c535d","#916f7c","#ac939d","#c8b7be","#e3dbde"] var palette = ["#000000","#202020","#404040","#606060","#808080","#a0a0a0","#c0c0c0","#e0e0e0","#ffffff","#800000","#ff0000","#808000","#ffff00","#008000","#00ff00","#008080","#00ffff","#000080","#0000ff","#800080","#ff00ff","#2b0000","#550000","#800000","#aa0000","#d40000","#ff0000","#ff2a2a","#ff5555","#ff8080","#ffaaaa","#ffd5d5","#280b0b","#501616","#782121","#a02c2c","#c83737","#d35f5f","#de8787","#e9afaf","#f4d7d7","#241c1c","#483737","#6c5353","#916f6f","#ac9393","#c8b7b7","#e3dbdb","#2b1100","#552200","#803300","#aa4400","#d45500","#ff6600","#ff7f2a","#ff9955","#ffb380","#ffccaa","#ffe6d5","#28170b","#502d16","#784421","#a05a2c","#c87137","#d38d5f","#deaa87","#e9c6af","#f4e3d7","#241f1c","#483e37","#6c5d53","#917c6f","#ac9d93","#c8beb7","#e3dedb","#2b2200","#554400","#806600","#aa8800","#d4aa00","#ffcc00","#ffd42a","#ffdd55","#ffe680","#ffeeaa","#fff6d5","#28220b","#504416","#786721","#a0892c","#c8ab37","#d3bc5f","#decd87","#e9ddaf","#f4eed7","#24221c","#484537","#6c6753","#918a6f","#aca793","#c8c4b7","#e3e2db","#222b00","#445500","#668000","#88aa00","#aad400","#ccff00","#d4ff2a","#ddff55","#e5ff80","#eeffaa","#f6ffd5","#22280b","#445016","#677821","#89a02c","#abc837","#bcd35f","#cdde87","#dde9af","#eef4d7","#22241c","#454837","#676c53","#8a916f","#a7ac93","#c4c8b7","#e2e3db","#112b00","#225500","#338000","#44aa00","#55d400","#66ff00","#7fff2a","#99ff55","#b3ff80","#ccffaa","#e5ffd5","#17280b","#2d5016","#447821","#5aa02c","#71c837","#8dd35f","#aade87","#c6e9af","#e3f4d7","#1f241c","#3e4837","#5d6c53","#7c916f","#9dac93","#bec8b7","#dee3db","#002b00","#005500","#008000","#00aa00","#00d400","#00ff00","#2aff2a","#55ff55","#80ff80","#aaffaa","#d5ffd5","#0b280b","#165016","#217821","#2ca02c","#37c837","#5fd35f","#87de87","#afe9af","#d7f4d7","#1c241c","#374837","#536c53","#6f916f","#93ac93","#b7c8b7","#dbe3db","#002b11","#005522","#008033","#00aa44","#00d455","#00ff66","#2aff80","#55ff99","#80ffb3","#aaffcc","#d5ffe6","#0b2817","#16502d","#217844","#2ca05a","#37c871","#5fd38d","#87deaa","#afe9c6","#d7f4e3","#1c241f","#37483e","#536c5d","#6f917c","#93ac9d","#b7c8be","#dbe3de","#002b22","#005544","#008066","#00aa88","#00d4aa","#00ffcc","#2affd5","#55ffdd","#80ffe6","#aaffee","#d5fff6","#0b2822","#165044","#217867","#2ca089","#37c8ab","#5fd3bc","#87decd","#afe9dd","#d7f4ee","#1c2422","#374845","#536c67","#6f918a","#93aca7","#b7c8c4","#dbe3e2","#00222b","#004455","#006680","#0088aa","#00aad4","#00ccff","#2ad4ff","#55ddff","#80e5ff","#aaeeff","#d5f6ff","#0b2228","#164450","#216778","#2c89a0","#37abc8","#5fbcd3","#87cdde","#afdde9","#d7eef4","#1c2224","#374548","#53676c","#6f8a91","#93a7ac","#b7c4c8","#dbe2e3","#00112b","#002255","#003380","#0044aa","#0055d4","#0066ff","#2a7fff","#5599ff","#80b3ff","#aaccff","#d5e5ff","#0b1728","#162d50","#214478","#2c5aa0","#3771c8","#5f8dd3","#87aade","#afc6e9","#d7e3f4","#1c1f24","#373e48","#535d6c","#6f7c91","#939dac","#b7bec8","#dbdee3","#00002b","#000055","#000080","#0000aa","#0000d4","#0000ff","#2a2aff","#5555ff","#8080ff","#aaaaff","#d5d5ff","#0b0b28","#161650","#212178","#2c2ca0","#3737c8","#5f5fd3","#8787de","#afafe9","#d7d7f4","#1c1c24","#373748","#53536c","#6f6f91","#9393ac","#b7b7c8","#dbdbe3","#11002b","#220055","#330080","#4400aa","#5500d4","#6600ff","#7f2aff","#9955ff","#b380ff","#ccaaff","#e5d5ff","#170b28","#2d1650","#442178","#5a2ca0","#7137c8","#8d5fd3","#aa87de","#c6afe9","#e3d7f4","#1f1c24","#3e3748","#5d536c","#7c6f91","#9d93ac","#beb7c8","#dedbe3","#22002b","#440055","#660080","#8800aa","#aa00d4","#cc00ff","#d42aff","#dd55ff","#e580ff","#eeaaff","#f6d5ff","#220b28","#441650","#672178","#892ca0","#ab37c8","#bc5fd3","#cd87de","#ddafe9","#eed7f4","#221c24","#453748","#67536c","#8a6f91","#a793ac","#c4b7c8","#e2dbe3","#2b0022","#550044","#800066","#aa0088","#d400aa","#ff00cc","#ff2ad4","#ff55dd","#ff80e5","#ffaaee","#ffd5f6","#280b22","#501644","#782167","#a02c89","#c837ab","#d35fbc","#de87cd","#e9afdd","#f4d7ee","#241c22","#483745","#6c5367","#916f8a","#ac93a7","#c8b7c4","#e3dbe2","#2b0011","#550022","#800033","#aa0044","#d40055","#ff0066","#ff2a7f","#ff5599","#ff80b2","#ffaacc","#ffd5e5","#280b17","#50162d","#782144","#a02c5a","#c83771","#d35f8d","#de87aa","#e9afc6","#f4d7e3","#241c1f","#48373e","#6c535d","#916f7c","#ac939d","#c8b7be","#e3dbde"]
var isMac = false; //(navigator.platform.indexOf("Mac") != -1); var isMac = false; //(navigator.platform.indexOf("Mac") != -1);
var modKey = ""; //(isMac ? "meta+" : "ctrl+"); var modKey = ""; //(isMac ? "meta+" : "ctrl+");
var svgCanvas = new SvgCanvas(document.getElementById("svgcanvas")); var svgCanvas = new SvgCanvas(document.getElementById("svgcanvas"));
// Store and retrieve preferences
$.pref = function(key, val) {
curPrefs[key] = val;
key = 'svg-edit-'+key;
var host = location.hostname;
var onweb = host && host.indexOf('.') != -1;
var store = (val != undefined);
var storage = false;
// Some FF versions throw security errors here
try {
if(window.localStorage && onweb) {
storage = localStorage;
}
} catch(e) {}
try {
if(window.globalStorage && onweb) {
storage = globalStorage[host];
}
} catch(e) {}
if(storage) {
if(store) storage.setItem(key, val);
else return storage.getItem(key);
} else if(window.widget) {
if(store) widget.setPreferenceForKey(val, key);
else return widget.preferenceForKey(key);
} else {
if(store) {
var d = new Date();
d.setTime(d.getTime() + 31536000000);
val = encodeURIComponent(val);
document.cookie = key+'='+val+'; expires='+d.toUTCString();
} else {
var result = document.cookie.match(new RegExp(key + "=([^;]+)"));
return result?decodeURIComponent(result[1]):'';
}
}
}
var curPrefs = {
lang:'en',
iconsize:'m',
bg_color:'#FFF',
bg_url:''
};
var setSelectMode = function() { var setSelectMode = function() {
$('.tool_button_current').removeClass('tool_button_current').addClass('tool_button'); $('.tool_button_current').removeClass('tool_button_current').addClass('tool_button');
$('#tool_select').addClass('tool_button_current'); $('#tool_select').addClass('tool_button_current');
@ -66,14 +126,16 @@ function svg_edit_setup() {
// Deal with pathedit mode // Deal with pathedit mode
$('#path_node_panel').toggle(is_node); $('#path_node_panel').toggle(is_node);
$('#tools_bottom_2,#tools_bottom_3').toggle(!is_node); $('#tools_bottom_2,#tools_bottom_3').toggle(!is_node);
var size = $('#tool_select > svg')[0].getAttribute('width');
if(is_node) { if(is_node) {
// Change select icon // Change select icon
$('.tool_button').removeClass('tool_button_current'); $('.tool_button').removeClass('tool_button_current');
$('#tool_select').attr('src','images/select_node.png').addClass('tool_button_current'); $('#tool_select').addClass('tool_button_current')
.empty().append($.getSvgIcon('select_node'));
} else { } else {
$('#tool_select').attr('src','images/select.png'); $('#tool_select').empty().append($.getSvgIcon('select'));
} }
$.resizeSvgIcons({'#tool_select .svg_icon':size});
updateContextPanel(); updateContextPanel();
}; };
@ -194,7 +256,6 @@ function svg_edit_setup() {
fillOpacity = "N/A"; fillOpacity = "N/A";
} }
document.getElementById("gradbox_fill").parentNode.firstChild.setAttribute("fill", fillColor); document.getElementById("gradbox_fill").parentNode.firstChild.setAttribute("fill", fillColor);
if (strokeColor == null || strokeColor == "" || strokeColor == "none") { if (strokeColor == null || strokeColor == "" || strokeColor == "none") {
strokeColor = "none"; strokeColor = "none";
strokeOpacity = "N/A"; strokeOpacity = "N/A";
@ -322,20 +383,10 @@ function svg_edit_setup() {
if ( (elem && !is_node) || multiselected) { if ( (elem && !is_node) || multiselected) {
// update the selected elements' layer // update the selected elements' layer
$('#selLayerNames')[0].removeAttribute('disabled'); $('#selLayerNames').removeAttr('disabled').val(currentLayer);
var opts = $('#selLayerNames option');
for (var i = 0; i < opts.length; ++i) {
var opt = opts[i];
if (currentLayer == opt.textContent) {
opt.setAttribute('selected', 'selected');
} }
else { else {
opt.removeAttribute('selected'); $('#selLayerNames').attr('disabled', 'disabled');
}
}
}
else {
$('#selLayerNames')[0].setAttribute('disabled', 'disabled');
} }
}; };
@ -349,7 +400,7 @@ function svg_edit_setup() {
svgCanvas.bind("saved", saveHandler); svgCanvas.bind("saved", saveHandler);
svgCanvas.bind("zoomed", zoomChanged); svgCanvas.bind("zoomed", zoomChanged);
var str = '<div class="palette_item" style="background-image: url(\'images/none.png\');" data-rgb="none"></div>' var str = '<div class="palette_item" data-rgb="none"></div>'
$.each(palette, function(i,item){ $.each(palette, function(i,item){
str += '<div class="palette_item" style="background-color: ' + item + ';" data-rgb="' + item + '"></div>'; str += '<div class="palette_item" style="background-color: ' + item + ';" data-rgb="' + item + '"></div>';
}); });
@ -369,13 +420,12 @@ function svg_edit_setup() {
blk.click(function() { blk.click(function() {
blocks.removeClass(cur_bg); blocks.removeClass(cur_bg);
$(this).addClass(cur_bg); $(this).addClass(cur_bg);
$('#canvas_bg_url').removeClass(cur_bg);
}); });
}); });
$('#canvas_bg_url').focus(function() {
blocks.removeClass(cur_bg); if($.pref('bg_color')) {
$(this).addClass(cur_bg); setBackground($.pref('bg_color'), $.pref('bg_url'));
}); }
var pos = $('#tools_rect_show').position(); var pos = $('#tools_rect_show').position();
$('#tools_rect').css({'left': pos.left+4, 'top': pos.top+77}); $('#tools_rect').css({'left': pos.left+4, 'top': pos.top+77});
@ -435,8 +485,8 @@ function svg_edit_setup() {
var promptMoveLayerOnce = false; var promptMoveLayerOnce = false;
$('#selLayerNames').change(function(){ $('#selLayerNames').change(function(){
var destLayer = this.options[this.selectedIndex].value; var destLayer = this.options[this.selectedIndex].value;
// TODO: localize this prompt var confirm_str = uiStrings.QmoveElemsToLayer.replace('%s',destLayer);
if (destLayer && (promptMoveLayerOnce || confirm('Move selected elements to layer \'' + destLayer + '\'?'))) { if (destLayer && (promptMoveLayerOnce || confirm(confirm_str))) {
promptMoveLayerOnce = true; promptMoveLayerOnce = true;
svgCanvas.moveSelectedToLayer(destLayer); svgCanvas.moveSelectedToLayer(destLayer);
svgCanvas.clearSelection(); svgCanvas.clearSelection();
@ -480,9 +530,7 @@ function svg_edit_setup() {
} else valid = true; } else valid = true;
if(!valid) { if(!valid) {
// TODO: localize this alert(uiStrings.invalidAttrValGiven);
alert('Invalid value given for' + $(this).attr('title').replace('Change','')
+ '.');
this.value = selectedElement.getAttribute(attr); this.value = selectedElement.getAttribute(attr);
return false; return false;
} }
@ -616,6 +664,14 @@ function svg_edit_setup() {
} }
}, true); }, true);
var setIcon = function(holder_sel, id) {
var icon = $.getSvgIcon(id).clone();
var holder = $(holder_sel);
icon[0].setAttribute('width',holder.width());
icon[0].setAttribute('height',holder.height());
holder.empty().append(icon);
}
var clickSelect = function() { var clickSelect = function() {
if (toolButtonClick('#tool_select')) { if (toolButtonClick('#tool_select')) {
svgCanvas.setMode('select'); svgCanvas.setMode('select');
@ -640,14 +696,43 @@ function svg_edit_setup() {
flyoutspeed = 'normal'; flyoutspeed = 'normal';
svgCanvas.setMode('square'); svgCanvas.setMode('square');
} }
$('#tools_rect_show').attr('src', 'images/square.png'); setIcon('#tools_rect_show','square');
}; };
var clickRect = function(){ var clickRect = function(){
if (toolButtonClick('#tools_rect_show')) { if (toolButtonClick('#tools_rect_show')) {
svgCanvas.setMode('rect'); svgCanvas.setMode('rect');
} }
$('#tools_rect_show').attr('src', 'images/rect.png'); setIcon('#tools_rect_show','rect');
};
var clickFHRect = function(){
if (toolButtonClick('#tools_rect_show')) {
svgCanvas.setMode('fhrect');
}
setIcon('#tools_rect_show','fh_rect');
};
var clickCircle = function(){
if (toolButtonClick('#tools_ellipse_show', flyoutspeed)) {
flyoutspeed = 'normal';
svgCanvas.setMode('circle');
}
setIcon('#tools_ellipse_show','circle');
};
var clickEllipse = function(){
if (toolButtonClick('#tools_ellipse_show')) {
svgCanvas.setMode('ellipse');
}
setIcon('#tools_ellipse_show','ellipse');
};
var clickFHEllipse = function(){
if (toolButtonClick('#tools_ellipse_show')) {
svgCanvas.setMode('fhellipse');
}
setIcon('#tools_ellipse_show','fh_ellipse');
}; };
var clickImage = function(){ var clickImage = function(){
@ -673,35 +758,6 @@ function svg_edit_setup() {
} }
}; };
var clickFHRect = function(){
if (toolButtonClick('#tools_rect_show')) {
svgCanvas.setMode('fhrect');
}
$('#tools_rect_show').attr('src', 'images/freehand-square.png');
};
var clickCircle = function(){
if (toolButtonClick('#tools_ellipse_show', flyoutspeed)) {
flyoutspeed = 'normal';
svgCanvas.setMode('circle');
}
$('#tools_ellipse_show').attr('src', 'images/circle.png');
};
var clickEllipse = function(){
if (toolButtonClick('#tools_ellipse_show')) {
svgCanvas.setMode('ellipse');
}
$('#tools_ellipse_show').attr('src', 'images/ellipse.png');
};
var clickFHEllipse = function(){
if (toolButtonClick('#tools_ellipse_show')) {
svgCanvas.setMode('fhellipse');
}
$('#tools_ellipse_show').attr('src', 'images/freehand-circle.png');
};
var clickText = function(){ var clickText = function(){
toolButtonClick('#tool_text'); toolButtonClick('#tool_text');
svgCanvas.setMode('text'); svgCanvas.setMode('text');
@ -767,8 +823,7 @@ function svg_edit_setup() {
} }
var clickClear = function(){ var clickClear = function(){
// TODO: localize this prompt if( confirm(uiStrings.QwantToClear) ) {
if( confirm('Do you want to clear the drawing?\nThis will also erase your undo history!') ) {
svgCanvas.clear(); svgCanvas.clear();
updateContextPanel(); updateContextPanel();
} }
@ -863,6 +918,8 @@ function svg_edit_setup() {
$('#svg_source_textarea').focus(); $('#svg_source_textarea').focus();
}; };
$('#svg_docprops_container').draggable({cancel:'button,fieldset'});
var showDocProperties = function(){ var showDocProperties = function(){
if (docprops) return; if (docprops) return;
docprops = true; docprops = true;
@ -904,19 +961,27 @@ function svg_edit_setup() {
if (!editingsource) return; if (!editingsource) return;
if (!svgCanvas.setSvgString($('#svg_source_textarea').val())) { if (!svgCanvas.setSvgString($('#svg_source_textarea').val())) {
// TODO: localize this prompt if( !confirm(uiStrings.QerrorsRevertToSource) ) {
if( !confirm('There were parsing errors in your SVG source.\nRevert back to original SVG source?') ) {
return false; return false;
} }
} }
svgCanvas.clearSelection(); svgCanvas.clearSelection();
hideSourceEditor(); hideSourceEditor();
populateLayers(); populateLayers();
setTitle(svgCanvas.getImageTitle());
}; };
var setTitle = function(title) {
var editor_title = $('title:first').text().split(':')[0];
var new_title = editor_title + (title?': ' + title:'');
$('title:first').text(new_title);
}
var saveDocProperties = function(){ var saveDocProperties = function(){
// set title // set title
svgCanvas.setImageTitle($('#canvas_title').val()); var new_title = $('#canvas_title').val();
setTitle(new_title);
svgCanvas.setImageTitle(new_title);
// update resolution // update resolution
var x = parseInt($('#canvas_width').val()); var x = parseInt($('#canvas_width').val());
@ -925,41 +990,193 @@ function svg_edit_setup() {
x ='fit'; x ='fit';
} }
if(!svgCanvas.setResolution(x,y)) { if(!svgCanvas.setResolution(x,y)) {
alert('No content to fit to'); alert(uiStrings.noContentToFitTo);
return false; return false;
} }
// set background // set background
var new_bg, bg_url = $('#canvas_bg_url').val(); var color = $('#bg_blocks div.cur_background').css('background') || '#FFF';
var bg_blk = $('#bg_blocks div.cur_background'); setBackground(color, $('#canvas_bg_url').val());
if(bg_blk.length) {
new_bg = bg_blk.css('background'); // set language
$('#svgcanvas').css('background',new_bg); var lang = $('#lang_select').val();
$('#background_img').remove(); if(lang != curPrefs.lang) {
} else if(bg_url) { put_locale(svgCanvas, lang);
if(!$('#background_img').length) {
$('<div id="background_img"><img src="'+bg_url+'" style="width:100%"></div>')
.prependTo('#svgcanvas');
} else {
$('#background_img img').attr('src',bg_url);
}
} else {
new_bg = '#FFF';
$('#svgcanvas').css('background',new_bg);
$('#background_img').remove();
} }
// set icon size
setIconSize($('#iconsize').val());
hideDocProperties(); hideDocProperties();
}; };
function setBackground(color, url) {
if(color == curPrefs.bg_color && url == curPrefs.bg_url) return;
$.pref('bg_color', color);
$.pref('bg_url', url);
$('#svgcanvas').css('background',color);
if(url) {
if(!$('#background_img').length) {
$('<div id="background_img"><img src="'+url+'" style="width:100%"></div>')
.prependTo('#svgcanvas');
} else {
$('#background_img img').attr('src',url);
}
} else {
$('#background_img').remove();
}
}
var setIconSize = function(size) {
if(size == curPrefs.size) return;
$.pref('iconsize', size);
$('#iconsize').val(size);
var icon_sizes = { s:16, m:24, l:32, xl:48 };
var size_num = icon_sizes[size];
// Change icon size
$('.tool_button, .push_button, .tool_button_current, .tool_button_disabled, .tool_flyout_button')
.find('> svg').each(function() {
this.setAttribute('width',size_num);
this.setAttribute('height',size_num);
});
$.resizeSvgIcons({
'.flyout_arrow_horiz svg': size_num / 3,
'#logo a > svg': size_num * 1.3
});
if(size != 's') {
$.resizeSvgIcons({'#layerbuttons svg': size_num * .6});
}
// Note that all rules will be prefixed with '#svg_editor' when parsed
var cssResizeRules = {
".tool_button,\
.push_button,\
.tool_button_current,\
.tool_button_disabled,\
#tools_rect .tool_flyout_button,\
#tools_ellipse .tool_flyout_button": {
'width': {s: '16px', l: '32px', xl: '48px'},
'height': {s: '16px', l: '32px', xl: '48px'},
'padding': {s: '1px', l: '2px', xl: '3px'}
},
".tool_sep": {
'height': {s: '16px', l: '32px', xl: '48px'},
'margin': {s: '2px 2px', l: '2px 5px', xl: '2px 8px'}
},
"#tools_top": {
'left': {s: '27px', l: '50px', xl: '70px'},
'height': {s: '50px', l: '88px', xl: '125px'}
},
"#tools_left": {
'width': {s: '26px', l: '34px', xl: '42px'},
'top': {s: '50px', l: '87px', xl: '125px'}
},
"div#workarea": {
'left': {s: '27px', l: '46px', xl: '65px'},
'top': {s: '50px', l: '88px', xl: '125px'},
'bottom': {s: '52px', l: '68px', xl: '75px'}
},
"#tools_bottom": {
'left': {s: '27px', l: '46px', xl: '65px'},
'height': {s: '52px', l: '68px', xl: '75px'}
},
"#tools_top input, #tools_bottom input": {
'margin-top': {s: '2px', l: '4px', xl: '5px'},
'height': {s: 'auto', l: 'auto', xl: 'auto'},
'border': {s: '1px solid #555', l: 'auto', xl: 'auto'},
'font-size': {s: '.9em', l: '2em', xl: '2.5em'}
},
"#tools_bottom input": {
'margin-top': {s: '6px', l: '4px', xl: '5px'},
},
"#tools_bottom span, #copyright, #tools_bottom .label": {
'font-size': {l: '1.5em', xl: '2em'}
},
"#tools_bottom_2": {
'width': {l: '295px', xl: '355px'}
},
"#tools_top > div, #tools_top": {
'line-height': {s: '17px', l: '34px', xl: '50px'}
},
".dropdown button": {
'height': {s: '18px', l: '34px', xl: '40px'}
},
"#tools_top label, #tools_bottom label": {
'font-size': {s: '1em', l: '1.5em', xl: '2em'},
'margin-top': {s: '1px', l: '3px', xl: '5px'}
},
"#tool_bold, #tool_italic": {
'font-size': {s: '1.5em', l: '3em', xl: '4.5em'}
},
"#sidepanels": {
'top': {s: '50px', l: '88px', xl: '125px'},
'bottom': {s: '52px', l: '68px', xl: '65px'},
},
'#layerbuttons': {
'width': {l: '130px', xl: '175px'},
'height': {l: '24px', xl: '30px'}
},
'#layerlist': {
'width': {l: '128px', xl: '150px'}
},
'.layer_button': {
'width': {l: '19px', xl: '28px'},
'height': {l: '19px', xl: '28px'}
},
".flyout_arrow_horiz": {
'left': {s: '-5px', l: '5px', xl: '14px'},
'top': {s: '-13px', l: '-13px', xl: '-20px'}
},
"input.spin-button": {
'background-image': {l: "url('images/spinbtn_updn_big.png')", xl: "url('images/spinbtn_updn_big.png')"},
'background-position': {l: '100% -5px', xl: '100% -2px'},
'padding-right': {l: '24px', xl: '24px' }
},
"input.spin-button.up": {
'background-position': {l: '100% -45px', xl: '100% -42px'}
},
"input.spin-button.down": {
'background-position': {l: '100% -85px', xl: '100% -82px'}
}
};
var rule_elem = $('#tool_size_rules');
if(!rule_elem.length) {
rule_elem = $('<style id="tool_size_rules"><\/style>').appendTo('head');
} else {
rule_elem.empty();
}
if(size != 'm') {
var style_str = '';
$.each(cssResizeRules, function(selector, rules) {
selector = '#svg_editor ' + selector.replace(/,/g,', #svg_editor');
style_str += selector + '{';
$.each(rules, function(prop, values) {
if(values[size]) {
style_str += (prop + ':' + values[size] + ';');
}
});
style_str += '}';
});
rule_elem.text(style_str);
}
var pos = $('#tools_rect_show').offset();
$('#tools_rect').css({'left': pos.left, 'top': pos.top});
pos = $('#tools_ellipse_show').offset();
$('#tools_ellipse').css({'left': pos.left, 'top': pos.top});
}
var cancelOverlays = function() { var cancelOverlays = function() {
if (!editingsource && !docprops) return; if (!editingsource && !docprops) return;
if (editingsource) { if (editingsource) {
var oldString = svgCanvas.getSvgString(); var oldString = svgCanvas.getSvgString();
if (oldString != $('#svg_source_textarea').val()) { if (oldString != $('#svg_source_textarea').val()) {
// TODO: localize this prompt if( !confirm(uiStrings.QignoreSourceChanges) ) {
if( !confirm('Ignore changes made to SVG source?') ) {
return false; return false;
} }
} }
@ -1328,16 +1545,15 @@ function svg_edit_setup() {
for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); } for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); }
var j = (curNames.length+1); var j = (curNames.length+1);
var uniqName = "Layer " + j; var uniqName = uiStrings.layer + " " + j;
while (jQuery.inArray(uniqName, curNames) != -1) { while ($.inArray(uniqName, curNames) != -1) {
j++; j++;
uniqName = "Layer " + j; uniqName = uiStrings.layer + " " + j;
} }
// TODO: localize this var newName = prompt(uiStrings.enterUniqueLayerName,uniqName);
var newName = prompt("Please enter a unique layer name",uniqName);
if (!newName) return; if (!newName) return;
if (jQuery.inArray(newName, curNames) != -1) { if ($.inArray(newName, curNames) != -1) {
alert("There is already a layer named that!"); alert(uiStrings.dupeLayerName);
return; return;
} }
svgCanvas.createLayer(newName); svgCanvas.createLayer(newName);
@ -1388,18 +1604,17 @@ function svg_edit_setup() {
$('#layer_rename').click(function() { $('#layer_rename').click(function() {
var curIndex = $('#layerlist tr.layersel').prevAll().length; var curIndex = $('#layerlist tr.layersel').prevAll().length;
var oldName = $('#layerlist tr.layersel td.layername').text(); var oldName = $('#layerlist tr.layersel td.layername').text();
// TODO: localize this var newName = prompt(uiStrings.enterNewLayerName,"");
var newName = prompt("Please enter the new layer name","");
if (!newName) return; if (!newName) return;
if (oldName == newName) { if (oldName == newName) {
alert("Layer already has that name"); alert(uiStrings.layerHasThatName);
return; return;
} }
var curNames = new Array(svgCanvas.getNumLayers()); var curNames = new Array(svgCanvas.getNumLayers());
for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); } for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); }
if (jQuery.inArray(newName, curNames) != -1) { if ($.inArray(newName, curNames) != -1) {
alert("There is already a layer named that!"); alert(uiStrings.layerHasThatName);
return; return;
} }
@ -1498,6 +1713,7 @@ function svg_edit_setup() {
selLayerNames.empty(); selLayerNames.empty();
var currentlayer = svgCanvas.getCurrentLayer(); var currentlayer = svgCanvas.getCurrentLayer();
var layer = svgCanvas.getNumLayers(); var layer = svgCanvas.getNumLayers();
var icon = $.getSvgIcon('eye');
// we get the layers in the reverse z-order (the layer rendered on top is listed first) // we get the layers in the reverse z-order (the layer rendered on top is listed first)
while (layer--) { while (layer--) {
var name = svgCanvas.getLayer(layer); var name = svgCanvas.getLayer(layer);
@ -1515,7 +1731,12 @@ function svg_edit_setup() {
appendstr += "<td class=\"layervis layerinvis\"/><td class=\"layername\" >" + name + "</td></tr>"; appendstr += "<td class=\"layervis layerinvis\"/><td class=\"layername\" >" + name + "</td></tr>";
} }
layerlist.append(appendstr); layerlist.append(appendstr);
selLayerNames.append("<option values=\"" + name + "\">" + name + "</option>"); selLayerNames.append("<option value=\"" + name + "\">" + name + "</option>");
}
if(icon !== undefined) {
var copy = icon.clone();
$('td.layervis',layerlist).append(icon.clone());
$.resizeSvgIcons({'td.layervis .svg_icon':14});
} }
// handle selection of layer // handle selection of layer
$('#layerlist td.layername') $('#layerlist td.layername')
@ -1661,6 +1882,18 @@ function svg_edit_setup() {
$('#group_opacity').SpinButton({ step: 5, min: 0, max: 100, callback: changeOpacity }); $('#group_opacity').SpinButton({ step: 5, min: 0, max: 100, callback: changeOpacity });
$('#zoom').SpinButton({ min: 0.001, max: 10000, step: 50, stepfunc: stepZoom, callback: changeZoom }); $('#zoom').SpinButton({ min: 0.001, max: 10000, step: 50, stepfunc: stepZoom, callback: changeZoom });
svgCanvas.setIconSize = setIconSize;
svgCanvas.setLang = function(lang, strings) {
curPrefs.lang = lang;
$.pref('lang', lang);
$('#lang_select').val(lang);
if(strings) {
// $.extend will only replace the given strings
$.extend(uiStrings,strings);
}
};
svgCanvas.setCustomHandlers = function(opts) { svgCanvas.setCustomHandlers = function(opts) {
if(opts.open) { if(opts.open) {
$('#tool_open').show(); $('#tool_open').show();
@ -1681,10 +1914,147 @@ function svg_edit_setup() {
return svgCanvas; return svgCanvas;
}; };
// This process starts before document.ready so the icons appear ASAP
setSVGIcons();
function setSVGIcons() {
$.svgIcons('images/svg_edit_icons.svg', {
w:24, h:24,
id_match: false,
no_img: true,
fallback_path:'images/',
fallback:{
'new_image':'clear.png',
'save':'save.png',
'open':'open.png',
'source':'source.png',
'docprops':'document-properties.png',
'wireframe':'wireframe.png',
'undo':'undo.png',
'redo':'redo.png',
'select':'select.png',
'pencil':'fhpath.png',
'pen':'line.png',
'square':'square.png',
'rect':'rect.png',
'fh_rect':'freehand-square.png',
'circle':'circle.png',
'ellipse':'ellipse.png',
'fh_ellipse':'freehand-circle.png',
'path':'path.png',
'text':'text.png',
'image':'image.png',
'zoom':'zoom.png',
'clone':'clone.png',
'delete':'delete.png',
'group':'shape_group.png',
'ungroup':'shape_ungroup.png',
'move_top':'move_top.png',
'move_bottom':'move_bottom.png',
'align_left':'align-left.png',
'align_center':'align-center',
'align_right':'align-right',
'align_top':'align-top',
'align_middle':'align-middle',
'align_bottom':'align-bottom',
'go_up':'go-up.png',
'go_down':'go-down.png',
'ok':'save.png',
'cancel':'cancel.png',
'arrow_right':'flyouth.png',
'arrow_down':'dropdown.gif'
},
placement: {
'#logo a':'logo',
'#tool_clear,#layer_new':'new_image',
'#tool_save':'save',
'#tool_open':'open',
'#tool_source':'source',
'#tool_docprops':'docprops',
'#tool_wireframe':'wireframe',
'#tool_undo':'undo',
'#tool_redo':'redo',
'#tool_select':'select',
'#tool_fhpath':'pencil',
'#tool_line':'pen',
'#tool_rect,#tools_rect_show':'rect',
'#tool_square':'square',
'#tool_fhrect':'fh_rect',
'#tool_ellipse,#tools_ellipse_show':'ellipse',
'#tool_circle':'circle',
'#tool_fhellipse':'fh_ellipse',
'#tool_path':'path',
'#tool_text,#layer_rename':'text',
'#tool_image':'image',
'#tool_zoom':'zoom',
'#tool_clone,#tool_clone_multi,#tool_node_clone':'clone',
'#layer_delete,#tool_delete,#tool_delete_multi,#tool_node_delete':'delete',
'#tool_move_top':'move_top',
'#tool_move_bottom':'move_bottom',
'#tool_group':'group',
'#tool_ungroup':'ungroup',
'#tool_alignleft':'align_left',
'#tool_aligncenter':'align_center',
'#tool_alignright':'align_right',
'#tool_aligntop':'align_top',
'#tool_alignmiddle':'align_middle',
'#tool_alignbottom':'align_bottom',
'#layer_up':'go_up',
'#layer_down':'go_down',
'#layerlist td.layervis':'eye',
'#tool_source_save,#tool_docprops_save':'ok',
'#tool_source_cancel,#tool_docprops_cancel':'cancel',
'.flyout_arrow_horiz':'arrow_right',
'.dropdown button':'arrow_down',
'#palette .palette_item:first, #fill_bg, #stroke_bg':'no_color'
},
resize: {
'#logo a .svg_icon': 32,
'.flyout_arrow_horiz .svg_icon': 5,
'.layer_button .svg_icon, #layerlist td.layervis .svg_icon': 14,
'.dropdown button .svg_icon': 7,
'.palette_item:first .svg_icon, #fill_bg .svg_icon, #stroke_bg .svg_icon': 16,
'.toolbar_button button .svg_icon':16
},
callback: function(icons) {
$('.toolbar_button button > svg').each(function() {
$(this).parent().prepend(this);
});
// Use small icons by default if not all left tools are visible
var tleft = $('#tools_left');
var min_height = tleft.offset().top + tleft.outerHeight();
var size = $.pref('iconsize');
if(size && size != 'm') {
svgCanvas.setIconSize(size);
} else if($(window).height() < min_height) {
// Make smaller
svgCanvas.setIconSize('s');
}
}
});
}
// This happens when the page is loaded // This happens when the page is loaded
$(function() { $(function() {
put_locale();
svgCanvas = svg_edit_setup(); svgCanvas = svg_edit_setup();
put_locale(svgCanvas);
try{ try{
window.addEventListener("message", function(e){ window.addEventListener("message", function(e){

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,422 @@
/*
* SVG Icon Loader
*
* jQuery Plugin for loading SVG icons from a single file
*
* Copyright (c) 2009 Alexis Deveria
* http://a.deveria.com
*
* Apache 2 License
How to use:
1. Create the SVG master file that includes all icons:
The master SVG icon-containing file is an SVG file that contains
<foreignContent> elements. Each <foreignContent> element should contain the markup of an SVG
icon. The <foreignContent> element has an ID that should
correspond with the ID of the HTML element used on the page that should contain
or optionally be replaced by the icon. Additionally, one empty element should be
added at the end with id "svg_eof".
2. Optionally create fallback raster images for each SVG icon.
3. Include the jQuery and the SVG Icon Loader scripts on your page.
4. Run $.svgIcons() when the document is ready:
$.svgIcons( file [string], options [object literal]);
File is the location of a local SVG or SVGz file.
All options are optional and can include:
- 'w (number)': The icon widths
- 'h (number)': The icon heights
- 'fallback (object literal)': List of raster images with each
key being the SVG icon ID to replace, and the value the image file name.
- 'fallback_path (string)': The path to use for all images
listed under "fallback"
- 'replace (boolean)': If set to true, HTML elements will be replaced by,
rather than include the SVG icon.
- 'placement (object literal)': List with selectors for keys and SVG icon ids
as values. This provides a custom method of adding icons.
- 'resize (object literal)': List with selectors for keys and numbers
as values. This allows an easy way to resize specific icons.
- 'callback (function)': A function to call when all icons have been loaded.
Includes an object literal as its argument with as keys all icon IDs and the
icon as a jQuery object as its value.
- 'id_match (boolean)': Automatically attempt to match SVG icon ids with
corresponding HTML id (default: true)
- 'no_img (boolean)': Prevent attempting to convert the icon into an <img> element (may be faster, help for browser consistency)
5. To access an icon at a later point without using the callback, use this:
$.getSvgIcon(id (string));
This will return the icon (as jQuery object) with a given ID.
6. To resize icons at a later point without using the callback, use this:
$.resizeSvgIcons(resizeOptions) (use the same way as the "resize" parameter)
Example usage #1:
$(function() {
$.svgIcons('my_icon_set.svg'); // The SVG file that contains all icons
// No options have been set, so all icons will automatically be inserted
// into HTML elements that match the same IDs.
});
Example usage #2:
$(function() {
$.svgIcons('my_icon_set.svg', { // The SVG file that contains all icons
callback: function(icons) { // Custom callback function that sets click
// events for each icon
$.each(icons, function(id, icon) {
icon.click(function() {
alert('You clicked on the icon with id ' + id);
});
});
}
}); //The SVG file that contains all icons
});
Example usage #3:
$(function() {
$.svgIcons('my_icon_set.svgz', { // The SVGZ file that contains all icons
w: 32, // All icons will be 32px wide
h: 32, // All icons will be 32px high
fallback_path: 'icons/', // All fallback files can be found here
fallback: {
'#open_icon': 'open.png', // The "open.png" will be appended to the
// HTML element with ID "open_icon"
'#close_icon': 'close.png',
'#save_icon': 'save.png'
},
placement: {'.open_icon','open'}, // The "open" icon will be added
// to all elements with class "open_icon"
resize: function() {
'#save_icon .svg_icon': 64 // The "save" icon will be resized to 64 x 64px
},
callback: function(icons) { // Sets background color for "close" icon
icons['close'].css('background','red');
}
})
});
*/
(function($) {
var svg_icons = {};
$.svgIcons = function(file, opts) {
var svgns = "http://www.w3.org/2000/svg",
xlinkns = "http://www.w3.org/1999/xlink",
icon_w = opts.w?opts.w : 24,
icon_h = opts.h?opts.h : 24,
elems, svgdoc, testImg,
icons_made = false, data_loaded = false, load_attempts = 0,
ua = navigator.userAgent, isOpera = !!window.opera, isSafari = (ua.indexOf('Safari/') > -1 && ua.indexOf('Chrome/')==-1),
data_pre = 'data:image/svg+xml;charset=utf-8;base64,';
if(opts.svgz) {
var data_el = $('<object data="' + file + '" type=image/svg+xml>').appendTo('body').hide();
try {
svgdoc = data_el[0].contentDocument;
// TODO: IE still loads this, shouldn't even bother.
data_el.load(getIcons);
getIcons(0, true); // Opera will not run "load" event if file is already cached
} catch(err1) {
useFallback();
}
} else {
$.ajax({
url: file,
dataType: 'xml',
success: function(data) {
svgdoc = data;
$(function() {
getIcons('ajax');
});
},
error: function() {
$(function() {
useFallback();
});
}
});
}
function getIcons(evt, no_wait) {
if(evt !== 'ajax') {
if(data_loaded) return;
// Webkit sometimes says svgdoc is undefined, other times
// it fails to load all nodes. Thus we must make sure the "eof"
// element is loaded.
svgdoc = data_el[0].contentDocument; // Needed again for Webkit
var isReady = (svgdoc && svgdoc.getElementById('svg_eof'));
if(!isReady && !(no_wait && isReady)) {
load_attempts++;
if(load_attempts < 50) {
setTimeout(getIcons, 20);
} else {
useFallback();
data_loaded = true;
}
return;
}
data_loaded = true;
}
// Clean source SVGs (mostly for Inkscape files)
// TODO: Find a way to do this without crashing Safari (when converting to IMG)
$(svgdoc).find('metadata').remove().end()
.find('*').each(function(i, el) {
if(el.nodeName.indexOf(':') != -1) {
$(el).remove();
}
var attrs = $.extend(false, el.attributes, {});
for(i in attrs) {
var attr = attrs[i];
var fullattr = attr.prefix?attr.prefix + ':' + attr.localName:'';
if(attr.prefix) {
el.removeAttribute(attr.localName); // for Opera
el.removeAttribute(fullattr); // for Webkit
}
if(fullattr == 'xlink:href') {
el.setAttribute('xlink:href', attr.nodeValue);
}
}
});
elems = $(svgdoc.firstChild).children(); //.getElementsByTagName('foreignContent');
var testSrc = data_pre + 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D';
testImg = $(new Image()).attr({
src: testSrc,
width: 0,
height: 0
}).appendTo('body')
.load(function () {
// Safari 4 crashes, Opera and Chrome don't
makeIcons(!isSafari);
}).error(function () {
makeIcons();
});
}
function makeIcons(toImage, fallback) {
if(icons_made) return;
if(opts.no_img) toImage = false;
var holder;
var setIcon = function(target, icon, id, setID) {
if(isOpera) icon.css('visibility','hidden');
if(opts.replace) {
if(setID) icon.attr('id',id);
var cl = target.attr('class');
if(cl) icon.attr('class','svg_icon '+cl);
target.replaceWith(icon);
} else {
target.append(icon);
}
if(isOpera) {
setTimeout(function() {
icon.attr('style','visibility:visible;');
},1);
}
}
var addIcon = function(icon, id) {
if(opts.id_match === undefined || opts.id_match !== false) {
setIcon(holder, icon, id, true);
}
svg_icons[id] = icon;
}
if(toImage) {
var temp_holder = $(document.createElement('div'));
temp_holder.hide().appendTo('body');
}
if(fallback) {
var path = opts.fallback_path?opts.fallback_path:'';
$.each(fallback, function(id, imgsrc) {
holder = $('#' + id);
var icon = $(new Image())
.attr({
'class':'svg_icon',
src: path + imgsrc,
'width': icon_w,
'height': icon_h,
'alt': 'icon'
});
addIcon(icon, id);
});
} else {
$.each(elems, function(i, elem) {
var id = elem.getAttribute('id');
if(id == 'svg_eof') return;
holder = $('#' + id);
var svg = elem.getElementsByTagNameNS(svgns, 'svg')[0];
var svgroot = svgdoc.createElementNS(svgns, "svg");
svgroot.setAttributeNS(svgns, 'viewBox', [0,0,icon_w,icon_h].join(' '));
$(svgroot).attr({
"xmlns": svgns,
"width": icon_w,
"height": icon_h,
"xmlns:xlink": xlinkns,
"class": 'svg_icon'
});
// Without cloning, Firefox will make another GET request.
// With cloning, causes issue in Opera/Win/Non-EN
if(!isOpera) svg = svg.cloneNode(true);
svgroot.appendChild(svg);
if(toImage) {
// Without cloning, Safari will crash
// With cloning, causes issue in Opera/Win/Non-EN
var svgcontent = isOpera?svgroot:svgroot.cloneNode(true);
temp_holder.empty().append(svgroot);
var str = data_pre + encode64(temp_holder.html());
var icon = $(new Image())
.attr({'class':'svg_icon', src:str});
} else {
var icon = fixIDs($(svgroot), i);
}
addIcon(icon, id);
});
}
if(opts.placement) {
$.each(opts.placement, function(sel, id) {
if(!svg_icons[id]) return;
$(sel).each(function(i) {
var copy = svg_icons[id].clone();
if(i > 0 && !toImage) copy = fixIDs(copy, i, true);
setIcon($(this), copy, id);
})
});
}
if(!fallback) {
if(toImage) temp_holder.remove();
if(data_el) data_el.remove();
testImg.remove();
}
if(opts.resize) $.resizeSvgIcons(opts.resize);
icons_made = true;
if(opts.callback) opts.callback(svg_icons);
}
function fixIDs(svg_el, svg_num, force) {
var defs = svg_el.find('defs');
if(!defs.length) return svg_el;
defs.find('[id]').each(function(i) {
var id = this.id;
var no_dupes = ($(svgdoc).find('#' + id).length <= 1);
if(isOpera) no_dupes = false; // Opera didn't clone svg_el, so not reliable
if(!force && no_dupes) return;
var new_id = id + svg_num + i;
$(this).attr('id', new_id);
svg_el.find('[fill="url(#' + id + ')"]').each(function() {
$(this).attr('fill', 'url(#' + new_id + ')');
}).end().find('[stroke="url(#' + id + ')"]').each(function() {
$(this).attr('stroke', 'url(#' + new_id + ')');
}).end().find('use').each(function() {
if(this.getAttribute('xlink:href') == '#' + id) {
this.setAttributeNS(xlinkns,'href','#' + new_id);
}
});
});
return svg_el;
}
function useFallback() {
if(file.indexOf('.svgz') != -1) {
var reg_file = file.replace('.svgz','.svg');
if(window.console) {
console.log('.svgz failed, trying with .svg');
}
$.svgIcons(reg_file, opts);
} else if(opts.fallback) {
makeIcons(false, opts.fallback);
}
}
function encode64(input) {
// base64 strings are 4/3 larger than the original string
if(window.btoa) return window.btoa(input);
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 );
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0, p = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output[p++] = _keyStr.charAt(enc1);
output[p++] = _keyStr.charAt(enc2);
output[p++] = _keyStr.charAt(enc3);
output[p++] = _keyStr.charAt(enc4);
} while (i < input.length);
return output.join('');
}
}
$.getSvgIcon = function(id) { return svg_icons[id]; }
$.resizeSvgIcons = function(obj) {
// FF2 and older don't detect .svg_icon, so we change it detect svg elems instead
var change_sel = !$('.svg_icon:first').length;
$.each(obj, function(sel, size) {
var arr = $.isArray(size);
var w = arr?size[0]:size,
h = arr?size[1]:size;
if(change_sel) {
sel = sel.replace(/\.svg_icon/g,'svg');
}
$(sel).each(function() {
this.setAttribute('width', w);
this.setAttribute('height', h);
});
});
}
})(jQuery);