| <?xml version="1.0" standalone="no"?> |
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" |
| "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> |
| |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| --> |
| <!-- ====================================================================== --> |
| <!-- Test of getting/setting current Scale and Translate. --> |
| <!-- --> |
| <!-- @author deweese@apache.org --> |
| <!-- @version $Id$ --> |
| <!-- ====================================================================== --> |
| |
| <?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?> |
| |
| <svg id="body" width="450" height="500" viewBox="0 0 450 500" |
| onload="setScaleTrans(2, 50, 50), update()" |
| xmlns="http://www.w3.org/2000/svg" |
| xmlns:xlink="http://www.w3.org/1999/xlink"> |
| |
| <title>svg current scale/translate modification</title> |
| |
| <script type="text/ecmascript"><![CDATA[ |
| var count = 1; |
| function setScaleTrans(scale, newX, newY) { |
| document.getRootElement().currentScale = scale; |
| var pt = document.getRootElement().currentTranslate; |
| pt.x = newX; |
| pt.y = newX; |
| } |
| |
| function update() { |
| if ((count%10) == 0) { |
| var scale = 1+((count/10)%10)/4; |
| document.getRootElement().currentScale = scale; |
| } |
| |
| var t; |
| var mat; |
| t = document.getElementById('cnt'); |
| t.firstChild.data = ("Count: " + count); |
| |
| mat = t.getScreenCTM(); |
| t = document.getElementById('foo'); |
| t.firstChild.data = |
| "The ScrnCTM is: (" + mat.a +","+ mat.b +","+ mat.c +","+ mat.d +","+ mat.e +","+ mat.f +")"; |
| |
| mat = t.getCTM(); |
| t = document.getElementById('bar'); |
| t.firstChild.data = |
| "The CTM is: (" + mat.a +","+ mat.b +","+ mat.c +","+ mat.d +","+ mat.e +","+ mat.f +")"; |
| |
| var scale = document.getRootElement().currentScale; |
| t = document.getElementById('baz'); |
| t.firstChild.data = "The Scale is: "+scale; |
| |
| var trans = document.getRootElement().currentTranslate; |
| t = document.getElementById('bat'); |
| t.firstChild.data = "The Trans is ["+trans.x+", " +trans.y+"]"; |
| |
| t = document.getElementById('vp'); |
| var vp = document.rootElement.viewport; |
| t.firstChild.data = ("Viewport: ["+ vp.x+", " +vp.y+", " + |
| vp.width+", " +vp.height+"]"); |
| |
| count++; |
| setTimeout('update()', 1000); |
| } |
| |
| function mouseOver(evt) { |
| t = document.getElementById('rec'); |
| var x = evt.getClientX(); |
| var y = evt.getClientY(); |
| mat = t.getScreenCTM(); |
| imat = mat.inverse(); |
| var pt = document.getRootElement().createSVGPoint(); |
| pt.x = x; |
| pt.y = y; |
| pt = pt.matrixTransform(imat); |
| t.firstChild.data = ("Loc: [" + evt.getClientX() + ", " + |
| evt.getClientY() + "] [" + |
| pt.x + ", " + pt.y + "]"); |
| } |
| ]]></script> |
| |
| <g id="test-content"> |
| <rect x="0" y="0" width="450" height="500" |
| fill="lightgrey" stroke="black" |
| onmousemove="mouseOver(evt)"/> |
| <text id="cnt" x="10" y=" 80">test</text> |
| <text id="foo" x="10" y="100">test</text> |
| <text id="bar" x="10" y="120">test</text> |
| <text id="baz" x="10" y="140">test</text> |
| <text id="bat" x="10" y="160">test</text> |
| <text id="vp" x="10" y="180">test</text> |
| <text id="rec" x="10" y="200">test</text> |
| </g> |
| </svg> |