| <?xml version="1.0"?> |
| <svg xmlns="http://www.w3.org/2000/svg" onload="fillTestContent()"> |
| <style type="text/css"> |
| rect { |
| stroke-width: 6px; |
| } |
| </style> |
| <script type="text/javascript"> |
| <![CDATA[ |
| var visibleValues = [ 'visible', 'hidden' ]; |
| var fillValues = ['none', 'orange' ]; |
| var strokeValues = ['none', 'blue' ]; |
| |
| var pointerEventsValues = ['auto', 'visiblePainted', 'visibleFill', 'visibleStroke', 'visible', 'painted', 'fill', 'stroke', 'all', 'none']; |
| |
| var leftEdge = 100; |
| var topEdge = 30; |
| |
| var rectSpacing = 57; |
| |
| var svgNS = "http://www.w3.org/2000/svg"; |
| |
| function clickHit(event, identifierString) { |
| // This is my cheap hack to see if we hit the stroke. |
| if ((event.clientX - parseInt(event.target.getAttribute('x'))) == 0) { |
| var strokeText = document.getElementById('stroke-text' + identifierString); |
| strokeText.textContent = 'HIT'; |
| } |
| var fillText = document.getElementById('fill-text' + identifierString); |
| fillText.textContent = 'HIT'; |
| } |
| |
| function fillTestContent() { |
| var xOffset = leftEdge; |
| var yOffset = topEdge; |
| |
| var testContent = document.getElementById("test-content"); |
| |
| for (var pi = 0; pi < pointerEventsValues.length; pi++) { |
| var eventLabel = document.createElementNS(svgNS, 'text'); |
| eventLabel.setAttribute('x', 0); |
| eventLabel.setAttribute('y', yOffset + 30); |
| eventLabel.textContent = pointerEventsValues[pi]; |
| testContent.appendChild(eventLabel); |
| |
| for (var vi = 0; vi < visibleValues.length; vi++) { |
| for (var fi = 0; fi < fillValues.length; fi++) { |
| for (var si = 0; si < strokeValues.length; si++) { |
| |
| var identString = "_" + pi + "_" + vi + "_" + fi + "_" + si; |
| |
| var rect = document.createElementNS(svgNS, 'rect'); |
| rect.setAttribute('x', xOffset); |
| rect.setAttribute('y', yOffset); |
| rect.setAttribute('width', 50); |
| rect.setAttribute('height', 50); |
| rect.setAttribute('visibility', visibleValues[vi]); |
| rect.setAttribute('fill', fillValues[fi]); |
| rect.setAttribute('stroke', strokeValues[si]); |
| rect.setAttribute('pointer-events', pointerEventsValues[pi]); |
| rect.setAttribute('onclick', 'clickHit(evt, "' + identString + '")'); |
| |
| testContent.appendChild(rect); |
| |
| var fillText = document.createElementNS(svgNS, 'text'); |
| fillText.setAttribute('x', xOffset + 5); |
| fillText.setAttribute('y', yOffset + 20); |
| fillText.textContent = "miss"; |
| fillText.setAttribute('id', 'fill-text' + identString); |
| fillText.setAttribute('pointer-events', 'none'); |
| testContent.appendChild(fillText); |
| |
| var stokeText = document.createElementNS(svgNS, 'text'); |
| stokeText.setAttribute('x', xOffset + 5); |
| stokeText.setAttribute('y', yOffset + 40); |
| stokeText.textContent = "miss"; |
| stokeText.setAttribute('id', 'stroke-text' + identString); |
| stokeText.setAttribute('pointer-events', 'none'); |
| testContent.appendChild(stokeText); |
| |
| if (window.eventSender) { |
| // Stroke click |
| eventSender.mouseMoveTo(xOffset, yOffset); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| |
| // Fill click |
| eventSender.mouseMoveTo(xOffset + 25, yOffset + 25); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| } |
| xOffset += rectSpacing; |
| } |
| } |
| } |
| xOffset = leftEdge; |
| yOffset += rectSpacing; |
| } |
| getSelection().removeAllRanges(); |
| } |
| ]]> |
| </script> |
| |
| <text x="610" y="18">Example:</text> |
| |
| <text x="605" y="40">Hit Fill:</text> |
| <text x="605" y="60">Hit Stroke:</text> |
| |
| <text x="110" y="20">Visibility: visible</text> |
| <text x="340" y="20">Visibility: hidden</text> |
| |
| <g id="test-content"> |
| <rect x="680" y="20" width="50" height="50" fill="orange" /> |
| <text x="685" y="40">HIT</text> |
| <text x="685" y="60">miss</text> |
| </g> |
| </svg> |