From e3f99e90918199b9e31a97eae3900e10ee2ff8ba Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 10 Aug 2015 13:49:06 +0200 Subject: [PATCH] aligning to the tests of Daniel Rosenwasser --- snapsvg/snapsvg-tests-2.ts | 132 +++++++++++++++++++++++++++++++++++++ snapsvg/snapsvg.d.ts | 26 ++++++-- 2 files changed, 151 insertions(+), 7 deletions(-) create mode 100644 snapsvg/snapsvg-tests-2.ts diff --git a/snapsvg/snapsvg-tests-2.ts b/snapsvg/snapsvg-tests-2.ts new file mode 100644 index 0000000000..a710a273a8 --- /dev/null +++ b/snapsvg/snapsvg-tests-2.ts @@ -0,0 +1,132 @@ +/// + +function tester1() { + var paper = Snap("#content"); + + var i = 0; + var n = 1000000; + + var x = 0; + var y = 0; + + paper.click((ev) => { var x = ev.clientX; }, this) + + redrawLoop(); + + function redrawLoop(): void { + if (i < n) { + setTimeout(redrawLoop, 50 + Math.random() * 50); + drawDrop(); + i++; + } + } + + function drawDrop(): void { + //var c = paper.circle(window.innerWidth * Math.random(), window.innerHeight * Math.random(), 50); + var radius = 25; + var c = paper.circle(x + radius * Math.random() - radius*2, y + radius * Math.random() - radius, radius*2); + c.animate({ r: 0 }, 1000, Mina.bounce, () => c.remove()); + } +} + +function tester2() { + var m1 = Snap.Matrix(1,2,3,4,5,6); + + m1.add(m1).add(m1); + + var m2 = Snap.Matrix(0,0,0,0,0,0); + m2.add(1,-1,1,-1,1,-1).add(-1,1,-1,1,-1,1); + + var m3 = Snap.Matrix(1,1,1,1,1,1); + m3.add(Snap.Matrix(0,0,0,0,0,0)).add(m2); + + console.log(m1.toString()); + console.log(m2.toString()); + console.log(m3.toString()); +} + +function tester3() { + // true + console.log(Snap.deg(Snap.rad(Snap.deg(Math.PI))) === Snap.deg(Snap.rad(180))); + + var colorString = "#BADA55"; + var rgb = Snap.getRGB(colorString); + var col = Snap.color(colorString); + var hsl = Snap.rgb2hsl(rgb.r, rgb.g, rgb.b); + var hsb = Snap.rgb2hsb(rgb.r, rgb.g, rgb.b); + + // all true + console.log(rgb.r === col.r && rgb.g === col.g && rgb.b === col.b && rgb.hex === col.hex); + console.log(hsl.h === hsb.h); + console.log(hsl.h === col.h && hsl.s === col.s && hsb.b === col.v); + console.log(!col.error); +} + +function tester4() { + console.log("tester4"); + var paper = Snap(800,600); + var bbox = paper.getBBox(); + + console.log("cx: " + bbox.cx); + console.log("cy: " + bbox.cy); + console.log("h: " + bbox.h); + console.log("height: " + bbox.height); + console.log("path: " + bbox.path); + console.log("r0: " + bbox.r0); + console.log("r1: " + bbox.r1); + console.log("r2: " + bbox.r2); + console.log("vb: " + bbox.vb); + console.log("w: " + bbox.w); + console.log("width: " + bbox.width); + console.log("x2: " + bbox.x2); + console.log("x: " + bbox.x); + console.log("y2: " + bbox.y2); + console.log("y: " + bbox.y); +} + +function tester5() { + var sideLength = 100; + var papel = Snap(1000, 1000); + var square = papel.rect(100, 100, sideLength, sideLength, 10, 10); + + function updater(newSideLength: number) { + square.attr({ x: newSideLength, y: newSideLength }); + } + + function easer(iArdlyKnowEr: number) { + return iArdlyKnowEr * iArdlyKnowEr; + } + + Snap.animate(sideLength, sideLength + 100, updater, 1500 /*ms*/); + setTimeout(500, () => { Snap.animate(sideLength + 100, + 0, + updater, + 100 /*ms*/, + easer, + square.remove); }); +} + +function tester6() { + var path: snapsvg.PathStatic = Snap.path; + // bboxing + var b1 = path.bezierBBox(0, 0, 0, 0, 100, 100, 100, 100); + var b2 = path.bezierBBox(50, 50, 50, 50, 150, 150, 150, 150); + var b3 = path.bezierBBox(100, 100, 100, 100, 200, 200, 200, 200); + + // all true + console.log(path.isBBoxIntersect(b1, b2)); + console.log(path.isBBoxIntersect(b1, b3)); + console.log(path.isPointInsideBBox(b1, 50, 50)); + console.log(path.isPointInsideBBox(b2, 50, 50)); + console.log(!path.isPointInsideBBox(b3, 50, 50)); +} + +//$(function () { +// tester1(); +//}); + +//tester2(); +//tester3(); +//tester4(); +//tester5(); +//tester6(); diff --git a/snapsvg/snapsvg.d.ts b/snapsvg/snapsvg.d.ts index ba4115eac5..47d11c49ed 100644 --- a/snapsvg/snapsvg.d.ts +++ b/snapsvg/snapsvg.d.ts @@ -80,7 +80,8 @@ declare module Snap { export function animate(from:Array,to:Array,setter:Function,duration:number,easing?:(num:number)=>number,callback?:()=>void):Mina.MinaAnimation; export function animation(attr:Object,duration:number,easing?:(num:number)=>number,callback?:()=>void):Snap.Animation; - export function color(clr:string):Object;export function getRGB(color:string):Object; + export function color(clr:string):Object; + export function getRGB(color:string):RGB; export function hsb(h:number,s:number,b:number):HSB; export function hsl(h:number,s:number,l:number):HSL; export function rgb(r:number,g:number,b:number):RGB; @@ -246,22 +247,33 @@ declare module Snap { selectAll(query ?:string):Snap.Set; } + export interface Matrix { - add(a:number,b:number,c:number,d:number,e:number,f:number):void; - add(matrix:Matrix):void; + add(a:number,b:number,c:number,d:number,e:number,f:number):Matrix; + add(matrix:Matrix):Matrix; clone():Matrix; determinant():number; invert():Matrix; - rotate(a:number,x:number,y:number):void; - scale(x:number,y?:number,cx?:number,cy?:number):void; - split():Object; + rotate(a:number,x:number,y:number):Matrix; + scale(x:number,y?:number,cx?:number,cy?:number):Matrix; + split():ExplicitTransform; toTransformString():string; - translate(x:number,y:number):void; + translate(x:number,y:number):Matrix; x(x:number,y:number):number; y(x:number,y:number):number; } + interface ExplicitTransform { + dx: number; + dy: number; + scalex: number; + scaley: number; + shear: number; + rotate: number; + isSimple: boolean; + } + interface Paper extends Snap.Element { clear():void;