diff options
Diffstat (limited to 'Source/WebCore/manual-tests/svg-filter-animation.svg')
-rw-r--r-- | Source/WebCore/manual-tests/svg-filter-animation.svg | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/Source/WebCore/manual-tests/svg-filter-animation.svg b/Source/WebCore/manual-tests/svg-filter-animation.svg new file mode 100644 index 0000000..5b7c9cc --- /dev/null +++ b/Source/WebCore/manual-tests/svg-filter-animation.svg @@ -0,0 +1,120 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> + +<!-- + Copyright (C) 2010 University of Szeged + Copyright (C) 2010 Zoltan Herczeg + Copyright (C) 2010 Gabor Loki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF SZEGED OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"> +<rect x="0%" y="0%" width="100%" height="100%" fill="black" /> + +<defs> +<filter id="filt" filterUnits="objectBoundingBox" x="0" y="0" width="100%" height="100%"> + <feTurbulence id="turb" baseFrequency="0.03" numOctaves="4" seed="67" result="turb"/> + <feGaussianBlur in="SourceGraphic" primitiveUnits="objectBoundingBox" id="blur" stdDeviation="1" result="blur"/> + <feComposite in="turb" in2="blur" operator="arithmetic" k2="0.3" k3="1" result="comp"/> + <feDiffuseLighting in="comp" primitiveUnits="objectBoundingBox" id="diff" diffuseConstant="1" lighting-color="white" surfaceScale="10" result="light" > + <feSpotLight id="light" x="0" y="300" z="200" pointsAtX="-200" pointsAtY="100" pointsAtZ="0" limitingConeAngle="90" specularExponent="20" /> + </feDiffuseLighting> + <feSpecularLighting in="comp" primitiveUnits="objectBoundingBox" id="diff" diffuseConstant="1" lighting-color="#A66102" surfaceScale="10" result="ambient" > + <feDistantLight id="light" azimuth="0" elevation="90" /> + </feSpecularLighting> + <feComposite in="light" in2="ambient" operator="arithmetic" k2="1.2" k3=".8"/> +</filter> +</defs> + +<g filter="url(#filt)" fill="white" stroke="black" onclick="start()"> + <rect x="0" y="0" width="400" height="5" /> + <rect x="0" y="0" width="5" height="200" /> + <rect x="0" y="195" width="400" height="5" /> + <rect x="395" y="0" width="5" height="200" /> + <text font-size="150" font-weight="bold" x="40" y="150">SVG</text> +</g> + +<text id="fps" x="150" y="240" font-size="20" fill="white" stroke="white">afps:</text> +<text x="30" y="265" font-size="20" font-weight="bold" fill="white" stroke="white">click on the image to start the animation</text> + +<script> +<![CDATA[ +var light_x = document.getElementById('light').x; +var light_y = document.getElementById('light').y; +var light_pointsAtX = document.getElementById('light').pointsAtX; +var light_pointsAtY = document.getElementById('light').pointsAtY; +var fps = document.getElementById('fps'); + +var round = Math.round + +var startDate = 0; +var frameCounter = 0; +var phase = 0; +function anim() { + switch(phase) { + case 0: + light_pointsAtX.baseVal += 10; + if (light_pointsAtX.baseVal >= 380) + ++phase; + break; + case 1: + light_x.baseVal += 10; + light_pointsAtX.baseVal -= 10; + if (light_x.baseVal >= 450) { + ++phase; + waitCounter = 0; + } + break; + case 2: + light_y.baseVal -= 5; + if (light_y.baseVal <= -100) + ++phase; + break; + case 3: + light_pointsAtX.baseVal += 10; + if (light_pointsAtX.baseVal >= 450) { + light_x.baseVal = 0; + light_pointsAtX.baseVal = -200; + light_y.baseVal = 300; + light_pointsAtY.baseVal = 100; + phase = 0; + } + break; + } + + frameCounter++; + fps.textContent = "afps: " +(round(frameCounter * 100000 / (new Date() - startDate)) / 100); +} + +function start() { + if (!startDate) { + startDate = new Date(); + setInterval(anim,1); + } +} + +//]]> +</script> + +</svg> |