blob: 49f5038ea1c38dda6cbbf732a1178bf81b4d7ca6 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg onload="init(evt)" width="500" height="500" zoomAndPan="disable"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<script type="text/ecmascript"><![CDATA[
var svgns = "http://www.w3.org/2000/svg";
var width = 6;
var height = 6;
var r = 15;
var offset = 30;
var spacing = 20;
var elems = [];
var midX = (500 - ((width-1) * spacing)) / 2;
var midY = (470 - ((height-1) * spacing)) / 2;
var world;
function init(e) {
if ( window.svgDocument == null )
svgDocument = e.target.ownerDocument;
world = svgDocument.getElementById("world");
world.setAttributeNS(
null,
"transform",
"translate(" + midX + "," + midY + ")"
);
createElements();
}
function createElements() {
for ( var y = 0; y < height; y++ ) {
for ( var x = 0; x < width; x++ ) {
createElement(x, y);
}
}
}
function createElement(x, y) {
var elem = svgDocument.createElementNS(svgns, "circle");
var cx = x * spacing;
var cy = y * spacing;
var translate = "translate(" + cx + "," + cy + ")";
elem.setAttributeNS(null, "cx", -offset);
elem.setAttributeNS(null, "r", r);
elem.setAttributeNS(null, "transform", translate);
// store shape for later manipulation
elems.push([elem, cx, cy]);
// add shape to world
world.appendChild(elem);
}
function update(e) {
var length = elems.length;
for ( var i = 0; i < length; i++ ) {
var elem = elems[i];
var dx = (e.clientX - elem[1]) - midX;
var dy = (e.clientY - elem[2]) - midY;
var angle = 180 * Math.atan2(dy, dx) / Math.PI;
var rotate = "rotate(" + angle + ")";
var translate = "translate(" + elem[1] + "," + elem[2] + ")";
elem[0].setAttributeNS(
null,
"transform",
translate + " " + rotate
);
}
}
function changeColor(e) {
var color = e.target.getAttributeNS(null, "stroke");
world.setAttributeNS(null, "stroke", color);
world.setAttributeNS(null, "fill", color);
}
]]></script>
<rect x="-16384" y="-16384" width="32767" height="32767"
fill="none" pointer-events="fill" onmousemove="update(evt)"/>
<rect x="10" y="10" width="478" height="478" rx="5" ry="5"
fill="none" stroke="grey" stroke-width="2"/>
<g id="world" pointer-events="none"
stroke="rgb(192,124,158)" fill="rgb(192,124,158)" fill-opacity="0.5"/>
<rect x="10" y="460" width="478" height="29" rx="5" ry="5"
stroke="grey" stroke-width="2" fill="rgb(230,230,230)"/>
<g fill-opacity="0.5" onclick="changeColor(evt)">
<circle cx="25" cy="475" r="10" stroke="rgb(192,124,158)" fill="rgb(192,124,158)"/>
<circle cx="50" cy="475" r="10" stroke="rgb(100,149,5)" fill="rgb(100,149,5)"/>
<circle cx="75" cy="475" r="10" stroke="rgb(8,168,128)" fill="rgb(8,168,128)"/>
<circle cx="100" cy="475" r="10" stroke="rgb(240,96,18)" fill="rgb(240,96,18)"/>
<circle cx="125" cy="475" r="10" stroke="rgb(73,122,247)" fill="rgb(73,122,247)"/>
<circle cx="150" cy="475" r="10" stroke="rgb(240,203,0)" fill="rgb(240,203,0)"/>
<circle cx="175" cy="475" r="10" stroke="rgb(170,78,247)" fill="rgb(170,78,247)"/>
</g>
<text x="485" y="485" font-size="10px" font-rendering="optimizeLegibility" fill="grey" text-anchor="end" pointer-events="none">Copyright 2004, Kevin Lindsey</text>
</svg>