summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/manual-tests/svg-filter-animation.svg
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/manual-tests/svg-filter-animation.svg')
-rw-r--r--Source/WebCore/manual-tests/svg-filter-animation.svg120
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>