123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?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 baseFrequency="0.03" numOctaves="4" seed="67" result="turb"/>
- <feGaussianBlur in="SourceGraphic" primitiveUnits="objectBoundingBox" stdDeviation="1" result="blur"/>
- <feComposite in="turb" in2="blur" operator="arithmetic" k2="0.3" k3="1" result="comp"/>
- <feDiffuseLighting in="comp" primitiveUnits="objectBoundingBox" 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" diffuseConstant="1" lighting-color="#A66102" surfaceScale="10" result="ambient" >
- <feDistantLight 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>
|