annotate client/digitallibrary/jquery/dlGeometry.js @ 732:fb76c621d064 jquery

busy cursor while loading doesn't work (for me)
author robcast
date Wed, 02 Feb 2011 14:41:38 +0100
parents 3a7fbdc39f6c
children 7773ccc93729
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
1 /* digilib geometry classes
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
2 * should be integrated into jquery.digilib.js
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
3 */
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
4
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
5 var dlGeometry = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
6 /*
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
7 * Size class
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
8 */
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
9 var size = function (w, h) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
10 var that = {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
11 width : parseFloat(w),
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
12 height : parseFloat(h)
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
13 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
14 that.equals = function(other) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
15 return (this.width === other.width && this.height === other.height);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
16 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
17 that.toString = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
18 return (this.width + "x" + this.height);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
19 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
20 return that;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
21 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
22
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
23 /*
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
24 * Position class
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
25 */
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
26 var position = function (x, y) {
647
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
27 if (typeof x === "object") {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
28 if (x instanceof jQuery) {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
29 // jQuery object
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
30 var pos = x.offset();
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
31 var that = {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
32 x : pos.left,
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
33 y : pos.top
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
34 };
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
35 } else {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
36 // event object(?)
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
37 var that = {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
38 x : x.pageX,
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
39 y : x.pageY
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
40 };
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
41 }
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
42 } else {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
43 var that = {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
44 x : parseFloat(x),
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
45 y : parseFloat(y)
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
46 };
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
47 }
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
48 that.equals = function (other) {
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
49 return (this.x === other.x && this.y === other.y);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
50 };
726
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
51 // add position other to this
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
52 that.add = function (other) {
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
53 this.x += other.x;
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
54 this.y += other.y;
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
55 return this;
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
56 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
57 // returns new position that is the difference between this and other
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
58 that.delta = function (other) {
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
59 return position(other.x - this.x, other.y - this.y);
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
60 };
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
61 // adjusts position $elem to this position
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
62 that.adjustDiv = function ($elem) {
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
63 $elem.offset({left : this.x, top : this.y});
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
64 };
726
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
65 // returns distance of this position to pos (length if pos == null)
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
66 that.distance = function (pos) {
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
67 if (pos == null) {
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
68 pos = {x : 0, y : 0};
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
69 }
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
70 var dx = pos.x - this.x;
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
71 var dy = pos.y - this.y;
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
72 return Math.sqrt(dx * dx + dy * dy);
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
73 };
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
74 that.toString = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
75 return (this.x + "," + this.y);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
76 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
77 return that;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
78 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
79 /*
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
80 * Rectangle class
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
81 */
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
82 var rectangle = function (x, y, w, h) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
83 var that = {};
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
84 if (typeof x === "object") {
647
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
85 if (x instanceof jQuery) {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
86 // jQuery object
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
87 var pos = x.offset();
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
88 that = {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
89 x : pos.left,
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
90 y : pos.top,
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
91 width : x.width(),
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
92 height : x.height()
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
93 };
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
94 } else {
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
95 // assume x and y are Position
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
96 that = {
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
97 x : Math.min(x.x, y.x),
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
98 y : Math.min(x.y, y.y),
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
99 width : Math.abs(y.x - x.x),
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
100 height : Math.abs(y.y - x.y)
647
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
101 };
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
102 }
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
103 } else {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
104 that = {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
105 x : parseFloat(x),
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
106 y : parseFloat(y),
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
107 width : parseFloat(w),
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
108 height : parseFloat(h)
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
109 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
110 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
111 // returns a copy of this Rectangle
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
112 that.copy = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
113 return rectangle(this.x, this.y, this.width, this.height);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
114 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
115 // returns the position of this Rectangle
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
116 that.getPosition = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
117 return position(this.x, this.y);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
118 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
119 // returns the upper left corner position
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
120 that.getPt1 = that.getPosition;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
121 // returns the lower right corner position of this Rectangle
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
122 that.getPt2 = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
123 return position(this.x + this.width, this.y + this.height);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
124 };
726
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
125 // sets the upper left corner position to pos
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
126 that.setPosition = function(pos) {
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
127 this.x = pos.x;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
128 this.y = pos.y;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
129 return this;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
130 };
726
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
131 that.setPt1 = that.setPosition; // TODO: not really the same
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
132 // adds pos to the position
f5a0ac47bddd fixed setupZoomDrag
robcast
parents: 723
diff changeset
133 that.addPosition = function(pos) {
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
134 this.x += pos.x;
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
135 this.y += pos.y;
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
136 return this;
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
137 };
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
138 // sets the lower right corner to position pos
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
139 that.setPt2 = function(pos) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
140 this.width = pos.x - this.x;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
141 this.height = pos.y - this.y;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
142 return this;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
143 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
144 // returns the center position of this Rectangle
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
145 that.getCenter = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
146 return position(this.x + this.width / 2, this.y + this.height / 2);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
147 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
148 // moves this Rectangle's center to position pos
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
149 that.setCenter = function(pos) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
150 this.x = pos.x - this.width / 2;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
151 this.y = pos.y - this.height / 2;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
152 return this;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
153 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
154 // returns the size of this Rectangle
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
155 that.getSize = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
156 return size(this.width, this.height);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
157 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
158 that.equals = function(other) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
159 // equal props
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
160 var eq = (this.x === other.x && this.y === other.y &&
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
161 this.width === other.width);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
162 return eq;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
163 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
164 // returns the area of this Rectangle
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
165 that.getArea = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
166 return (this.width * this.height);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
167 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
168 // eliminates negative width and height
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
169 that.normalize = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
170 var p = this.getPt2();
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
171 this.x = Math.min(this.x, p.x);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
172 this.y = Math.min(this.y, p.y);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
173 this.width = Math.abs(this.width);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
174 this.height = Math.abs(this.height);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
175 return this;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
176 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
177 // returns if Position "pos" lies inside of this rectangle
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
178 that.containsPosition = function(pos) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
179 var ct = ((pos.x >= this.x) && (pos.y >= this.y) &&
647
a2aadf44a454 zoomarea works now
robcast
parents: 620
diff changeset
180 (pos.x <= this.x + this.width) && (pos.y <= this.y + this.height));
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
181 return ct;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
182 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
183 // returns if rectangle "rect" is contained in this rectangle
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
184 that.containsRect = function(rect) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
185 return (this.containsPosition(rect.getPt1()) && this.containsPosition(rect.getPt2()));
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
186 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
187 // changes this rectangle's x/y values so it stays inside of rectangle rect
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
188 // keeping the proportions
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
189 that.stayInside = function(rect) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
190 if (this.x < rect.x) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
191 this.x = rect.x;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
192 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
193 if (this.y < rect.y) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
194 this.y = rect.y;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
195 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
196 if (this.x + this.width > rect.x + rect.width) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
197 this.x = rect.x + rect.width - this.width;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
198 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
199 if (this.y + this.height > rect.y + rect.height) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
200 this.y = rect.y + rect.height - this.height;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
201 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
202 return this;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
203 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
204 // clips this rectangle so it stays inside of rectangle rect
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
205 that.clipTo = function(rect) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
206 var p1 = rect.getPt1();
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
207 var p2 = rect.getPt2();
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
208 var this2 = this.getPt2();
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
209 this.setPt1(position(Math.max(this.x, p1.x), Math.max(this.y, p1.y)));
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
210 this.setPt2(position(Math.min(this2.x, p2.x), Math.min(this2.y, p2.y)));
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
211 return this;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
212 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
213 // returns the intersection of the given Rectangle and this one
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
214 that.intersect = function(rect) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
215 // FIX ME: not really, it should return null if there is no overlap
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
216 var sec = rect.copy();
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
217 if (sec.x < this.x) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
218 sec.width = sec.width - (this.x - sec.x);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
219 sec.x = this.x;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
220 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
221 if (sec.y < this.y) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
222 sec.height = sec.height - (this.y - sec.y);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
223 sec.y = this.y;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
224 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
225 if (sec.x + sec.width > this.x + this.width) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
226 sec.width = (this.x + this.width) - sec.x;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
227 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
228 if (sec.y + sec.height > this.y + this.height) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
229 sec.height = (this.y + this.height) - sec.y;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
230 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
231 return sec;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
232 };
723
a653d96166e9 better birdMoveArea, now called setupBirdDrag.
robcast
parents: 668
diff changeset
233 // returns a Rectangle that fits into this one (by moving first)
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
234 that.fit = function(rect) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
235 var sec = rect.copy();
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
236 sec.x = Math.max(sec.x, this.x);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
237 sec.y = Math.max(sec.y, this.x);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
238 if (sec.x + sec.width > this.x + this.width) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
239 sec.x = this.x + this.width - sec.width;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
240 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
241 if (sec.y + sec.height > this.y + this.height) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
242 sec.y = this.y + this.height - sec.height;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
243 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
244 return sec.intersect(this);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
245 };
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
246 // adjusts position and size of $elem to this rectangle
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
247 that.adjustDiv = function ($elem) {
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
248 $elem.offset({left : this.x, top : this.y});
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
249 $elem.width(this.width).height(this.height);
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
250 };
731
3a7fbdc39f6c small improvements
robcast
parents: 726
diff changeset
251 // returns size and position in css-compatible format
3a7fbdc39f6c small improvements
robcast
parents: 726
diff changeset
252 that.getAsCss = function () {
3a7fbdc39f6c small improvements
robcast
parents: 726
diff changeset
253 return {left : this.x, top : this.y,
3a7fbdc39f6c small improvements
robcast
parents: 726
diff changeset
254 width : this.width, height : this.height};
3a7fbdc39f6c small improvements
robcast
parents: 726
diff changeset
255 };
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
256 that.toString = function() {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
257 return this.width+"x"+this.height+"@"+this.x+","+this.y;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
258 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
259 return that;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
260 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
261
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
262 /*
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
263 * Transform class
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
264 *
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
265 * defines a class of affine transformations
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
266 */
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
267 var transform = function (spec) {
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
268 var that = {
620
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
269 m00 : 1.0,
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
270 m01 : 0.0,
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
271 m02 : 0.0,
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
272 m10 : 0.0,
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
273 m11 : 1.0,
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
274 m12 : 0.0,
620
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
275 m20 : 0.0,
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
276 m21 : 0.0,
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
277 m22 : 1.0
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
278 };
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
279 if (spec) {
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
280 jQuery.extend(that, spec);
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
281 };
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
282 that.concat = function(trafA) {
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
283 // add Transform trafA to this Transform (i.e. this = trafC = trafA * this)
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
284 var trafC = {};
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
285 for (var i = 0; i < 3; i++) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
286 for (var j = 0; j < 3; j++) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
287 var c = 0.0;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
288 for (var k = 0; k < 3; k++) {
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
289 c += trafA["m"+i+k] * this["m"+k+j];
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
290 }
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
291 trafC["m"+i+j] = c;
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
292 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
293 }
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
294 jQuery.extend(this, trafC);
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
295 return this;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
296 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
297 that.transform = function(rect) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
298 // returns transformed Rectangle or Position with this Transform applied
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
299 var x = this.m00 * rect.x + this.m01 * rect.y + this.m02;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
300 var y = this.m10 * rect.x + this.m11 * rect.y + this.m12;
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
301 var pt = position(x, y);
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
302 if (rect.width) {
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
303 // transform the other corner point
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
304 var pt2 = this.transform(rect.getPt2());
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
305 return rectangle(pt, pt2);
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
306 }
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
307 return pt;
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
308 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
309 that.invtransform = function(rect) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
310 // returns transformed Rectangle or Position with the inverse of this Transform applied
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
311 var det = this.m00 * this.m11 - this.m01 * this.m10;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
312 var x = (this.m11 * rect.x - this.m01 * rect.y - this.m11 * this.m02 + this.m01 * this.m12) / det;
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
313 var y = (-this.m10 * rect.x + this.m00 * rect.y + this.m10 * this.m02 - this.m00 * this.m12) / det;
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
314 var pt = position(x, y);
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
315 if (rect.width) {
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
316 // transform the other corner point
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
317 var pt2 = this.invtransform(rect.getPt2());
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
318 return rectangle(pt, pt2);
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
319 }
665
0d3d9517e448 image transform works now under rotation!!! (at least for multiples of 90deg)
robcast
parents: 664
diff changeset
320 return pt;
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
321 };
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
322 that.toString = function (pretty) {
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
323 var s = '[';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
324 if (pretty) s += '\n';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
325 for (var i = 0; i < 3; ++i) {
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
326 s += '[';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
327 for (var j = 0; j < 3; ++j) {
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
328 if (j) s += ',';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
329 s += this['m'+i+j];
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
330 }
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
331 s += ']';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
332 if (pretty) s += '\n';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
333 }
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
334 s += ']';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
335 if (pretty) s += '\n';
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
336 return s;
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
337 };
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
338 // add class methods to instance
620
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
339 that.getRotation = transform.getRotation;
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
340 that.getRotationAround = transform.getRotationAround;
620
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
341 that.getTranslation = transform.getTranslation;
668
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
342 that.getMirror = transform.getMirror;
620
b930fa64c684 scalerImgLoaded sets up img trafo
robcast
parents: 599
diff changeset
343 that.getScale = transform.getScale;
648
8f76bd79648e first try at birdview indicator
hertzhaft
parents: 620
diff changeset
344
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
345 return that;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
346 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
347
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
348 transform.getRotation = function (angle) {
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
349 // returns a Transform that is a rotation by angle degrees around [0,0]
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
350 if (angle !== 0) {
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
351 var t = Math.PI * parseFloat(angle) / 180.0;
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
352 var cost = Math.cos(t);
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
353 var sint = Math.sin(t);
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
354 var traf = {
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
355 m00 : cost,
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
356 m01 : -sint,
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
357 m10 : sint,
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
358 m11 : cost
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
359 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
360 return transform(traf);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
361 }
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
362 return transform();
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
363 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
364
668
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
365 transform.getRotationAround = function (angle, pos) {
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
366 // returns a Transform that is a rotation by angle degrees around pos
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
367 var traf = transform.getTranslation({x : -pos.x, y : -pos.y});
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
368 traf.concat(transform.getRotation(angle));
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
369 traf.concat(transform.getTranslation(pos));
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
370 return traf;
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
371 };
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
372
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
373 transform.getTranslation = function (pos) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
374 // returns a Transform that is a translation by [pos.x, pos,y]
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
375 var traf = {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
376 m02 : pos.x,
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
377 m12 : pos.y
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
378 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
379 return transform(traf);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
380 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
381
668
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
382 transform.getMirror = function (type) {
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
383 // returns a Transform that is a mirror about the axis type
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
384 if (type === 'x') {
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
385 var traf = {
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
386 m00 : 1,
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
387 m11 : -1
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
388 };
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
389 } else {
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
390 var traf = {
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
391 m00 : -1,
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
392 m11 : 1
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
393 };
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
394 }
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
395 return transform(traf);
657
b0c6cc4a0932 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 649
diff changeset
396 };
668
9f8056d6c289 transformation with mirror works now too!
robcast
parents: 665
diff changeset
397
599
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
398 transform.getScale = function (size) {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
399 // returns a Transform that is a scale by [size.width, size.height]
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
400 var traf = {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
401 m00 : size.width,
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
402 m11 : size.height
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
403 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
404 return transform(traf);
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
405 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
406
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
407 // export functions
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
408 var that = {
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
409 size : size,
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
410 position : position,
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
411 rectangle : rectangle,
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
412 transform : transform
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
413 };
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
414
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
415 return that;
0d6fa11f7f98 geometry classes as extra file
robcast
parents:
diff changeset
416 };