annotate www/tests/gg-animated.svg @ 101:52e44ee1c791 tip master

enabled all scores in autostart script
author Rob Canning <rc@kiben.net>
date Tue, 21 Apr 2015 16:20:57 +0100
parents 49c94f63b8b0
children
rev   line source
rc-web@42 1 <svg width="100%" height="100%"
rc-web@42 2 xmlns="http://www.w3.org/2000/svg"
rc-web@42 3 xmlns:xlink="http://www.w3.org/1999/xlink"
rc-web@42 4 onload="startUp(evt)" onmousemove="mouseMove(evt)"
rc-web@42 5 >
rc-web@42 6
rc-web@42 7 <script>
rc-web@42 8
rc-web@42 9 <![CDATA[
rc-web@42 10
rc-web@42 11 var xmlns="http://www.w3.org/2000/svg";
rc-web@42 12 var xmlnsxlink="http://www.w3.org/1999/xlink" ;
rc-web@42 13
rc-web@42 14 var numpics = 17;
rc-web@42 15 var smallW = 50;
rc-web@42 16 var smallH = 50;
rc-web@42 17 var bigW = 100;
rc-web@42 18 var bigH = 100;
rc-web@42 19 var bigLength = 100;
rc-web@42 20 var centerX = 350;
rc-web@42 21 var centerY = 350;
rc-web@42 22 var centerW = 300;
rc-web@42 23 var centerH = 300;
rc-web@42 24 var centerID = numpics - 1;
rc-web@42 25 var centerPic ;
rc-web@42 26 var radiusC = 250;
rc-web@42 27 var img = new Array();
rc-web@42 28 var angle = 2*Math.PI/(numpics-1);
rc-web@42 29
rc-web@42 30 function startUp(evt)
rc-web@42 31 {
rc-web@42 32 for (i=0; i<centerID; i++) {
rc-web@42 33 img[i] = document.createElementNS(xmlns,"image");
rc-web@42 34 img[i].setAttributeNS(null,"id",i);
rc-web@42 35 img[i].setAttributeNS(null,"width",smallW);
rc-web@42 36 img[i].setAttributeNS(null,"height",smallH);
rc-web@42 37 x = getX(i);
rc-web@42 38 y = getY(i);
rc-web@42 39 img[i].setAttributeNS(null,"x",x);
rc-web@42 40 img[i].setAttributeNS(null,"y",y);
rc-web@42 41 img[i].setAttributeNS(xmlnsxlink,"href","../images/goldengate/gg"+i+".jpg");
rc-web@42 42 img[i].addEventListener("click", mouseClick,false);
rc-web@42 43 document.getElementById("pictures").appendChild(img[i]);
rc-web@42 44 }
rc-web@42 45 i = centerID;
rc-web@42 46 img[i] = document.createElementNS(xmlns,"image");
rc-web@42 47 img[i].setAttributeNS(null,"id",i);
rc-web@42 48 img[i].setAttributeNS(null,"width",centerW);
rc-web@42 49 img[i].setAttributeNS(null,"height",centerH);
rc-web@42 50 img[i].setAttributeNS(null,"x",centerX-centerW/2);
rc-web@42 51 img[i].setAttributeNS(null,"y",centerY-centerH/2);
rc-web@42 52 img[i].setAttributeNS(xmlnsxlink,"href","../images/goldengate/gg"+i+".jpg");
rc-web@42 53 img[i].addEventListener("click", mouseClick,false);
rc-web@42 54 document.getElementById("pictures").appendChild(img[i]);
rc-web@42 55 centerPic = "../images/goldengate/gg"+i+".jpg";
rc-web@42 56 }
rc-web@42 57
rc-web@42 58 // left x
rc-web@42 59 function getX(i)
rc-web@42 60 {
rc-web@42 61 var x = centerX + radiusC*Math.cos(angle*i)-getW(i)/2
rc-web@42 62 return x;
rc-web@42 63 }
rc-web@42 64
rc-web@42 65 // top y
rc-web@42 66 function getY(i)
rc-web@42 67 {
rc-web@42 68 var y = centerY + radiusC*Math.sin(angle*i)-getH(i)/2;
rc-web@42 69 return y;
rc-web@42 70 }
rc-web@42 71
rc-web@42 72 // center x
rc-web@42 73 function getXc(i)
rc-web@42 74 {
rc-web@42 75 var xc = centerX + radiusC*Math.cos(angle*i);
rc-web@42 76 return xc;
rc-web@42 77 }
rc-web@42 78
rc-web@42 79 // center y
rc-web@42 80 function getYc(i)
rc-web@42 81 {
rc-web@42 82 var yc = centerY + radiusC*Math.sin(angle*i);
rc-web@42 83 return yc;
rc-web@42 84 }
rc-web@42 85
rc-web@42 86 // get width
rc-web@42 87 function getW(i)
rc-web@42 88 {
rc-web@42 89 return img[i].getAttributeNS(null,"width");
rc-web@42 90 }
rc-web@42 91
rc-web@42 92 // get height
rc-web@42 93 function getH(i)
rc-web@42 94 {
rc-web@42 95 return img[i].getAttributeNS(null,"height");
rc-web@42 96 }
rc-web@42 97
rc-web@42 98
rc-web@42 99 /* Swap the picked picture with the picture at the center */
rc-web@42 100
rc-web@42 101 function mouseClick(evt)
rc-web@42 102 {
rc-web@42 103 var idPicked = evt.target.getAttributeNS(null,"id");
rc-web@42 104 var imgPicked = evt.target.getAttributeNS(xmlnsxlink,"href");
rc-web@42 105
rc-web@42 106 // picked
rc-web@42 107 img[idPicked].setAttributeNS(xmlnsxlink,"href", centerPic);
rc-web@42 108
rc-web@42 109 // center
rc-web@42 110 img[centerID].setAttributeNS(xmlnsxlink,"href",imgPicked);
rc-web@42 111 centerPic = imgPicked;
rc-web@42 112 }
rc-web@42 113
rc-web@42 114
rc-web@42 115 function mouseMove(evt)
rc-web@42 116 {
rc-web@42 117 var xm = evt.clientX;
rc-web@42 118 var ym = evt.clientY;
rc-web@42 119
rc-web@42 120 var id = parseInt(evt.target.getAttributeNS(null,"id"));
rc-web@42 121
rc-web@42 122 /* If a mouse is far away from any picture,
rc-web@42 123 just return without modifying the picture. */
rc-web@42 124
rc-web@42 125 var distance = Math.sqrt(
rc-web@42 126 (xm-centerX)*(xm-centerX) + (ym-centerY)*(ym-centerY) );
rc-web@42 127 if(distance < (radiusC - bigLength) ||
rc-web@42 128 distance > (radiusC + bigLength ) ) {
rc-web@42 129 return;
rc-web@42 130 }
rc-web@42 131
rc-web@42 132 /* Calculate the distance of each picture from a mouse
rc-web@42 133 and set the size of pictures depending on the distance. */
rc-web@42 134
rc-web@42 135 var distMin;
rc-web@42 136 var distMax = radiusC * 2;
rc-web@42 137 var x,y,xc,yc,h,w;
rc-web@42 138 var wNew = new Array();
rc-web@42 139 var hNew = new Array();
rc-web@42 140
rc-web@42 141 for (i=0; i<numpics-1; i++)
rc-web@42 142 {
rc-web@42 143 xc = getXc(i);
rc-web@42 144 yc = getYc(i);
rc-web@42 145 distance= Math.sqrt(
rc-web@42 146 (xm-xc)*(xm-xc)+(ym-yc)*(ym-yc) );
rc-web@42 147 h = getH(i);
rc-web@42 148 w = getW(i);
rc-web@42 149 distMin = Math.sqrt(h*h+w*w)/2;
rc-web@42 150 wNew[i] = (smallW-bigW)/(distMax - distMin)*distance + bigW;
rc-web@42 151 hNew[i] = (smallH-bigH)/(distMax - distMin)*distance + bigH;
rc-web@42 152 }
rc-web@42 153
rc-web@42 154 for (i=0; i<numpics-1; i++)
rc-web@42 155 {
rc-web@42 156 xc = getXc(i);
rc-web@42 157 yc = getYc(i);
rc-web@42 158 x = xc - wNew[i]/2;
rc-web@42 159 y = yc - hNew[i]/2;
rc-web@42 160 img[i].setAttributeNS(null,"width", wNew[i]);
rc-web@42 161 img[i].setAttributeNS(null,"height", hNew[i]);
rc-web@42 162 img[i].setAttributeNS(null,"x", x);
rc-web@42 163 img[i].setAttributeNS(null,"y", y);
rc-web@42 164 }
rc-web@42 165 }
rc-web@42 166
rc-web@42 167
rc-web@42 168 //]]>
rc-web@42 169 </script>
rc-web@42 170
rc-web@42 171
rc-web@42 172 <rect x="0" y="0" width="100%" height="100%" fill="white" />
rc-web@42 173
rc-web@42 174 <g id="pictures" />
rc-web@42 175
rc-web@42 176 <!-- text % -->
rc-web@42 177 <text id="ggText" x="270" y="490" font-size="20" fill="#ff4f00">
rc-web@42 178 Golden Gate Bridge</text>
rc-web@42 179
rc-web@42 180 </svg>