Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(632)

Side by Side Diff: tests/html/canvasrenderingcontext2d_test.dart

Issue 15773008: Exposing DOM float & double types as double rather than num. Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tests/html/canvas_test.dart ('k') | tests/html/css_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library canvas_rendering_context_2d_test; import '../../pkg/unittest/lib/unittes t.dart'; 5 library canvas_rendering_context_2d_test; import '../../pkg/unittest/lib/unittes t.dart';
6 import '../../pkg/unittest/lib/html_individual_config.dart'; 6 import '../../pkg/unittest/lib/html_individual_config.dart';
7 import 'dart:html'; 7 import 'dart:html';
8 import 'dart:math'; 8 import 'dart:math';
9 9
10 // Some rounding errors in the browsers. 10 // Some rounding errors in the browsers.
(...skipping 17 matching lines...) Expand all
28 28
29 context = canvas.context2D; 29 context = canvas.context2D;
30 } 30 }
31 31
32 void createOtherCanvas() { 32 void createOtherCanvas() {
33 otherCanvas = new CanvasElement(); 33 otherCanvas = new CanvasElement();
34 otherCanvas.width = 10; 34 otherCanvas.width = 10;
35 otherCanvas.height = 10; 35 otherCanvas.height = 10;
36 otherContext = otherCanvas.context2D; 36 otherContext = otherCanvas.context2D;
37 otherContext.fillStyle = "red"; 37 otherContext.fillStyle = "red";
38 otherContext.fillRect(0, 0, otherCanvas.width, otherCanvas.height); 38 otherContext.fillRect(0.0, 0.0,
39 otherCanvas.width.toDouble(), otherCanvas.height.toDouble());
39 } 40 }
40 41
41 void setupFunc() { 42 void setupFunc() {
42 createCanvas(); 43 createCanvas();
43 createOtherCanvas(); 44 createOtherCanvas();
44 video = new VideoElement(); 45 video = new VideoElement();
45 } 46 }
46 47
47 void tearDownFunc() { 48 void tearDownFunc() {
48 canvas = null; 49 canvas = null;
49 context = null; 50 context = null;
50 otherCanvas = null; 51 otherCanvas = null;
51 otherContext = null; 52 otherContext = null;
52 video = null; 53 video = null;
53 } 54 }
54 55
55 List<int> readPixel(int x, int y) { 56 List<int> readPixel(num x, num y) {
56 var imageData = context.getImageData(x, y, 1, 1); 57 var imageData = context.getImageData(x.toDouble(), y.toDouble(), 1.0, 1.0);
57 return imageData.data; 58 return imageData.data;
58 } 59 }
59 60
60 /// Returns true if the pixel has some data in it, false otherwise. 61 /// Returns true if the pixel has some data in it, false otherwise.
61 bool isPixelFilled(int x, int y) => readPixel(x,y).any((p) => p != 0); 62 bool isPixelFilled(num x, num y) => readPixel(x,y).any((p) => p != 0);
62 63
63 String pixelDataToString(List<int> data, int x, int y) { 64 String pixelDataToString(List<int> data, num x, num y) {
64 return '[${data.join(", ")}]'; 65 return '[${data.join(", ")}]';
65 } 66 }
66 67
67 String _filled(bool v) => v ? "filled" : "unfilled"; 68 String _filled(bool v) => v ? "filled" : "unfilled";
68 69
69 void expectPixelFilled(int x, int y, [bool filled = true]) { 70 void expectPixelFilled(num x, num y, [bool filled = true]) {
70 expect(isPixelFilled(x, y), filled, reason: 71 expect(isPixelFilled(x.toInt(), y.toInt()), filled, reason:
71 'Pixel at ($x, $y) was expected to' 72 'Pixel at ($x, $y) was expected to'
72 ' be: <${_filled(filled)}> but was: <${_filled(!filled)}> with data: ' 73 ' be: <${_filled(filled)}> but was: <${_filled(!filled)}> with data: '
73 '${pixelDataToString(readPixel(x, y), x, y)}'); 74 '${pixelDataToString(readPixel(x, y), x, y)}');
74 } 75 }
75 76
76 void expectPixelUnfilled(int x, int y) { 77 void expectPixelUnfilled(num x, num y) {
77 expectPixelFilled(x, y, false); 78 expectPixelFilled(x, y, false);
78 } 79 }
79 80
80 main() { 81 main() {
81 useHtmlIndividualConfiguration(); 82 useHtmlIndividualConfiguration();
82 83
83 group('pixel_manipulation', () { 84 group('pixel_manipulation', () {
84 setUp(setupFunc); 85 setUp(setupFunc);
85 tearDown(tearDownFunc); 86 tearDown(tearDownFunc);
86 87
87 test('setFillColorRgb', () { 88 test('setFillColorRgb', () {
88 context.setFillColorRgb(255, 0, 255, 1); 89 context.setFillColorRgb(255, 0, 255, 1);
89 context.fillRect(0, 0, canvas.width, canvas.height); 90 context.fillRect(0.0, 0.0,
91 canvas.width.toDouble(), canvas.height.toDouble());
90 expect(readPixel(2, 2), [255, 0, 255, 255]); 92 expect(readPixel(2, 2), [255, 0, 255, 255]);
91 }); 93 });
92 94
93 test('setFillColorHsl hue', () { 95 test('setFillColorHsl hue', () {
94 context.setFillColorHsl(0, 100, 50); 96 context.setFillColorHsl(0, 100, 50);
95 context.fillRect(0, 0, canvas.width, canvas.height); 97 context.fillRect(0.0, 0.0,
98 canvas.width.toDouble(), canvas.height.toDouble());
96 checkPixel(readPixel(2, 2), [255, 0, 0, 255]); 99 checkPixel(readPixel(2, 2), [255, 0, 0, 255]);
97 }); 100 });
98 101
99 test('setFillColorHsl hue 2', () { 102 test('setFillColorHsl hue 2', () {
100 context.setFillColorHsl(240, 100, 50); 103 context.setFillColorHsl(240, 100, 50);
101 context.fillRect(0, 0, canvas.width, canvas.height); 104 context.fillRect(0.0, 0.0,
105 canvas.width.toDouble(), canvas.height.toDouble());
102 checkPixel(readPixel(2, 2), [0, 0, 255, 255]); 106 checkPixel(readPixel(2, 2), [0, 0, 255, 255]);
103 }); 107 });
104 108
105 test('setFillColorHsl sat', () { 109 test('setFillColorHsl sat', () {
106 context.setFillColorHsl(0, 0, 50); 110 context.setFillColorHsl(0, 0, 50);
107 context.fillRect(0, 0, canvas.width, canvas.height); 111 context.fillRect(0.0, 0.0,
112 canvas.width.toDouble(), canvas.height.toDouble());
108 checkPixel(readPixel(2, 2), [127, 127, 127, 255]); 113 checkPixel(readPixel(2, 2), [127, 127, 127, 255]);
109 }); 114 });
110 115
111 test('setStrokeColorRgb', () { 116 test('setStrokeColorRgb', () {
112 context.setStrokeColorRgb(255, 0, 255, 1); 117 context.setStrokeColorRgb(255, 0, 255, 1);
113 context.lineWidth = 10; 118 context.lineWidth = 10.0;
114 context.strokeRect(0, 0, canvas.width, canvas.height); 119 context.strokeRect(0.0, 0.0,
120 canvas.width.toDouble(), canvas.height.toDouble());
115 expect(readPixel(2, 2), [255, 0, 255, 255]); 121 expect(readPixel(2, 2), [255, 0, 255, 255]);
116 }); 122 });
117 123
118 test('setStrokeColorHsl hue', () { 124 test('setStrokeColorHsl hue', () {
119 context.setStrokeColorHsl(0, 100, 50); 125 context.setStrokeColorHsl(0, 100, 50);
120 context.lineWidth = 10; 126 context.lineWidth = 10.0;
121 context.strokeRect(0, 0, canvas.width, canvas.height); 127 context.strokeRect(0.0, 0.0,
128 canvas.width.toDouble(), canvas.height.toDouble());
122 expect(readPixel(2, 2), [255, 0, 0, 255]); 129 expect(readPixel(2, 2), [255, 0, 0, 255]);
123 }); 130 });
124 131
125 test('setStrokeColorHsl hue 2', () { 132 test('setStrokeColorHsl hue 2', () {
126 context.setStrokeColorHsl(240, 100, 50); 133 context.setStrokeColorHsl(240, 100, 50);
127 context.lineWidth = 10; 134 context.lineWidth = 10.0;
128 context.strokeRect(0, 0, canvas.width, canvas.height); 135 context.strokeRect(0.0, 0.0,
136 canvas.width.toDouble(), canvas.height.toDouble());
129 expect(readPixel(2, 2), [0, 0, 255, 255]); 137 expect(readPixel(2, 2), [0, 0, 255, 255]);
130 }); 138 });
131 139
132 test('setStrokeColorHsl sat', () { 140 test('setStrokeColorHsl sat', () {
133 context.setStrokeColorHsl(0, 0, 50); 141 context.setStrokeColorHsl(0, 0, 50);
134 context.lineWidth = 10; 142 context.lineWidth = 10.0;
135 context.strokeRect(0, 0, canvas.width, canvas.height); 143 context.strokeRect(0.0, 0.0,
144 canvas.width.toDouble(), canvas.height.toDouble());
136 checkPixel(readPixel(2, 2), [127, 127, 127, 255]); 145 checkPixel(readPixel(2, 2), [127, 127, 127, 255]);
137 }); 146 });
138 147
139 test('fillStyle', () { 148 test('fillStyle', () {
140 context.fillStyle = "red"; 149 context.fillStyle = "red";
141 context.fillRect(0, 0, canvas.width, canvas.height); 150 context.fillRect(0.0, 0.0,
151 canvas.width.toDouble(), canvas.height.toDouble());
142 checkPixel(readPixel(2, 2), [255, 0, 0, 255]); 152 checkPixel(readPixel(2, 2), [255, 0, 0, 255]);
143 }); 153 });
144 154
145 test('strokeStyle', () { 155 test('strokeStyle', () {
146 context.strokeStyle = "blue"; 156 context.strokeStyle = "blue";
147 context.lineWidth = 10; 157 context.lineWidth = 10.0;
148 context.strokeRect(0, 0, canvas.width, canvas.height); 158 context.strokeRect(0.0, 0.0,
159 canvas.width.toDouble(), canvas.height.toDouble());
149 expect(readPixel(2, 2), [0, 0, 255, 255]); 160 expect(readPixel(2, 2), [0, 0, 255, 255]);
150 }); 161 });
151 162
152 test('fillStyle linearGradient', () { 163 test('fillStyle linearGradient', () {
153 var gradient = context.createLinearGradient(0,0,20,20); 164 var gradient = context.createLinearGradient(0.0,0.0,20.0,20.0);
154 gradient.addColorStop(0,'red'); 165 gradient.addColorStop(0.0,'red');
155 gradient.addColorStop(1,'blue'); 166 gradient.addColorStop(1.0,'blue');
156 context.fillStyle = gradient; 167 context.fillStyle = gradient;
157 context.fillRect(0, 0, canvas.width, canvas.height); 168 context.fillRect(0.0, 0.0,
169 canvas.width.toDouble(), canvas.height.toDouble());
158 expect(context.fillStyle is CanvasGradient, isTrue); 170 expect(context.fillStyle is CanvasGradient, isTrue);
159 }); 171 });
160 172
161 test('putImageData', () { 173 test('putImageData', () {
162 context.fillStyle = 'green'; 174 context.fillStyle = 'green';
163 context.fillRect(0, 0, canvas.width, canvas.height); 175 context.fillRect(0.0, 0.0,
176 canvas.width.toDouble(), canvas.height.toDouble());
164 177
165 ImageData expectedData = context.getImageData(0, 0, 10, 10); 178 ImageData expectedData = context.getImageData(0.0, 0.0, 10.0, 10.0);
166 expectedData.data[0] = 25; 179 expectedData.data[0] = 25;
167 expectedData.data[1] = 65; 180 expectedData.data[1] = 65;
168 expectedData.data[2] = 255; 181 expectedData.data[2] = 255;
169 // Set alpha to 255 to make the pixels show up. 182 // Set alpha to 255 to make the pixels show up.
170 expectedData.data[3] = 255; 183 expectedData.data[3] = 255;
171 184
172 context.putImageData(expectedData, 0, 0); 185 context.putImageData(expectedData, 0.0, 0.0);
173 186
174 var resultingData = context.getImageData(0, 0, 10, 10); 187 var resultingData = context.getImageData(0.0, 0.0, 10.0, 10.0);
175 // Make sure that we read back what we wrote. 188 // Make sure that we read back what we wrote.
176 expect(resultingData.data, expectedData.data); 189 expect(resultingData.data, expectedData.data);
177 }); 190 });
178 191
179 test('putImageData dirty rectangle', () { 192 test('putImageData dirty rectangle', () {
180 context.fillStyle = 'green'; 193 context.fillStyle = 'green';
181 context.fillRect(0, 0, canvas.width, canvas.height); 194 context.fillRect(0.0, 0.0, canvas.width.toDouble(), canvas.height.toDouble ());
182 195
183 ImageData drawnData = context.getImageData(0, 0, 10, 10); 196 ImageData drawnData = context.getImageData(0.0, 0.0, 10.0, 10.0);
184 drawnData.data[0] = 25; 197 drawnData.data[0] = 25;
185 drawnData.data[1] = 65; 198 drawnData.data[1] = 65;
186 drawnData.data[2] = 255; 199 drawnData.data[2] = 255;
187 drawnData.data[3] = 255; 200 drawnData.data[3] = 255;
188 201
189 // Draw these pixels to the 2nd pixel. 202 // Draw these pixels to the 2nd pixel.
190 drawnData.data[2 * 4 + 0] = 25; 203 drawnData.data[2 * 4 + 0] = 25;
191 drawnData.data[2 * 4 + 1] = 65; 204 drawnData.data[2 * 4 + 1] = 65;
192 drawnData.data[2 * 4 + 2] = 255; 205 drawnData.data[2 * 4 + 2] = 255;
193 drawnData.data[2 * 4 + 3] = 255; 206 drawnData.data[2 * 4 + 3] = 255;
194 207
195 // Draw these pixels to the 8th pixel. 208 // Draw these pixels to the 8th pixel.
196 drawnData.data[7 * 4 + 0] = 25; 209 drawnData.data[7 * 4 + 0] = 25;
197 drawnData.data[7 * 4 + 1] = 65; 210 drawnData.data[7 * 4 + 1] = 65;
198 drawnData.data[7 * 4 + 2] = 255; 211 drawnData.data[7 * 4 + 2] = 255;
199 drawnData.data[7 * 4 + 3] = 255; 212 drawnData.data[7 * 4 + 3] = 255;
200 213
201 // Use a dirty rectangle to limit what pixels are drawn. 214 // Use a dirty rectangle to limit what pixels are drawn.
202 context.putImageData(drawnData, 0, 0, 1, 0, 5, 5); 215 context.putImageData(drawnData, 0.0, 0.0, 1.0, 0.0, 5.0, 5.0);
203 216
204 // Expect the data to be all green, as we skip all drawn pixels. 217 // Expect the data to be all green, as we skip all drawn pixels.
205 ImageData expectedData = context.createImageData(10, 10); 218 ImageData expectedData = context.createImageData(10.0, 10.0);
206 for (int i = 0; i < expectedData.data.length; i++) { 219 for (int i = 0; i < expectedData.data.length; i++) {
207 switch (i % 4) { 220 switch (i % 4) {
208 case 0: 221 case 0:
209 expectedData.data[i] = 0; 222 expectedData.data[i] = 0;
210 break; 223 break;
211 case 1: 224 case 1:
212 expectedData.data[i] = 128; 225 expectedData.data[i] = 128;
213 break; 226 break;
214 case 2: 227 case 2:
215 expectedData.data[i] = 0; 228 expectedData.data[i] = 0;
216 break; 229 break;
217 case 3: 230 case 3:
218 expectedData.data[i] = 255; 231 expectedData.data[i] = 255;
219 break; 232 break;
220 } 233 }
221 } 234 }
222 // Third pixel was copied. 235 // Third pixel was copied.
223 expectedData.data[2 * 4 + 0] = 25; 236 expectedData.data[2 * 4 + 0] = 25;
224 expectedData.data[2 * 4 + 1] = 65; 237 expectedData.data[2 * 4 + 1] = 65;
225 expectedData.data[2 * 4 + 2] = 255; 238 expectedData.data[2 * 4 + 2] = 255;
226 expectedData.data[2 * 4 + 3] = 255; 239 expectedData.data[2 * 4 + 3] = 255;
227 240
228 // Make sure that our data is all green. 241 // Make sure that our data is all green.
229 var resultingData = context.getImageData(0, 0, 10, 10); 242 var resultingData = context.getImageData(0.0, 0.0, 10.0, 10.0);
230 expect(resultingData.data, expectedData.data); 243 expect(resultingData.data, expectedData.data);
231 }); 244 });
232 245
233 test('putImageData throws with wrong number of arguments', () { 246 test('putImageData throws with wrong number of arguments', () {
234 ImageData expectedData = context.getImageData(0, 0, 10, 10); 247 ImageData expectedData = context.getImageData(0.0, 0.0, 10.0, 10.0);
235 248
236 // TODO(antonm): in Dartium ArgumentError should be thrown too. 249 // TODO(antonm): in Dartium ArgumentError should be thrown too.
237 expect(() => context.putImageData(expectedData, 0, 0, 1), 250 expect(() => context.putImageData(expectedData, 0.0, 0.0, 1.0),
238 throws); 251 throws);
239 expect(() => context.putImageData(expectedData, 0, 0, 1, 1), 252 expect(() => context.putImageData(expectedData, 0.0, 0.0, 1.0, 1.0),
240 throws); 253 throws);
241 expect(() => context.putImageData(expectedData, 0, 0, 1, 1, 5), 254 expect(() => context.putImageData(expectedData, 0.0, 0.0, 1.0, 1.0, 5.0),
242 throws); 255 throws);
243 }); 256 });
244 }); 257 });
245 258
246 group('arc', () { 259 group('arc', () {
247 setUp(setupFunc); 260 setUp(setupFunc);
248 tearDown(tearDownFunc); 261 tearDown(tearDownFunc);
249 262
250 test('default arc should be clockwise', () { 263 test('default arc should be clockwise', () {
251 context.beginPath(); 264 context.beginPath();
252 final r = 10; 265 final r = 10.0;
253 266
254 // Center of arc. 267 // Center of arc.
255 final cx = 20; 268 final cx = 20.0;
256 final cy = 20; 269 final cy = 20.0;
257 // Arc centered at (20, 20) with radius 10 will go clockwise 270 // Arc centered at (20, 20) with radius 10 will go clockwise
258 // from (20 + r, 20) to (20, 20 + r), which is 1/4 of a circle. 271 // from (20 + r, 20) to (20, 20 + r), which is 1/4 of a circle.
259 context.arc(cx, cy, r, 0, PI/2); 272 context.arc(cx, cy, r, 0.0, PI/2);
260 273
261 context.strokeStyle = 'green'; 274 context.strokeStyle = 'green';
262 context.lineWidth = 2; 275 context.lineWidth = 2.0;
263 context.stroke(); 276 context.stroke();
264 277
265 // Center should not be filled. 278 // Center should not be filled.
266 expectPixelUnfilled(cx, cy); 279 expectPixelUnfilled(cx, cy);
267 280
268 // (cx + r, cy) should be filled. 281 // (cx + r, cy) should be filled.
269 expectPixelFilled(cx + r, cy, true); 282 expectPixelFilled(cx + r, cy, true);
270 // (cx, cy + r) should be filled. 283 // (cx, cy + r) should be filled.
271 expectPixelFilled(cx, cy + r, true); 284 expectPixelFilled(cx, cy + r, true);
272 // (cx - r, cy) should be empty. 285 // (cx - r, cy) should be empty.
273 expectPixelFilled(cx - r, cy, false); 286 expectPixelFilled(cx - r, cy, false);
274 // (cx, cy - r) should be empty. 287 // (cx, cy - r) should be empty.
275 expectPixelFilled(cx, cy - r, false); 288 expectPixelFilled(cx, cy - r, false);
276 289
277 // (cx + r/SQRT2, cy + r/SQRT2) should be filled. 290 // (cx + r/SQRT2, cy + r/SQRT2) should be filled.
278 expectPixelFilled((cx + r/SQRT2).toInt(), (cy + r/SQRT2).toInt(), true); 291 expectPixelFilled((cx + r/SQRT2).toInt(), (cy + r/SQRT2).toInt(), true);
279 292
280 // (cx - r/SQRT2, cy - r/SQRT2) should be empty. 293 // (cx - r/SQRT2, cy - r/SQRT2) should be empty.
281 expectPixelFilled((cx - r/SQRT2).toInt(), (cy + r/SQRT2).toInt(), false); 294 expectPixelFilled((cx - r/SQRT2).toInt(), (cy + r/SQRT2).toInt(), false);
282 295
283 // (cx + r/SQRT2, cy + r/SQRT2) should be empty. 296 // (cx + r/SQRT2, cy + r/SQRT2) should be empty.
284 expectPixelFilled((cx - r/SQRT2).toInt(), (cy - r/SQRT2).toInt(), false); 297 expectPixelFilled((cx - r/SQRT2).toInt(), (cy - r/SQRT2).toInt(), false);
285 298
286 // (cx - r/SQRT2, cy - r/SQRT2) should be empty. 299 // (cx - r/SQRT2, cy - r/SQRT2) should be empty.
287 expectPixelFilled((cx + r/SQRT2).toInt(), (cy - r/SQRT2).toInt(), false); 300 expectPixelFilled((cx + r/SQRT2).toInt(), (cy - r/SQRT2).toInt(), false);
288 }); 301 });
289 302
290 test('arc anticlockwise', () { 303 test('arc anticlockwise', () {
291 context.beginPath(); 304 context.beginPath();
292 final r = 10; 305 final r = 10.0;
293 306
294 // Center of arc. 307 // Center of arc.
295 final cx = 20; 308 final cx = 20.0;
296 final cy = 20; 309 final cy = 20.0;
297 // Arc centered at (20, 20) with radius 10 will go anticlockwise 310 // Arc centered at (20, 20) with radius 10 will go anticlockwise
298 // from (20 + r, 20) to (20, 20 + r), which is 3/4 of a circle. 311 // from (20 + r, 20) to (20, 20 + r), which is 3/4 of a circle.
299 // Because of the way arc work, when going anti-clockwise, the end points 312 // Because of the way arc work, when going anti-clockwise, the end points
300 // are not included, so small values are added to radius to make a little 313 // are not included, so small values are added to radius to make a little
301 // more than a 3/4 circle. 314 // more than a 3/4 circle.
302 context.arc(cx, cy, r, .1, PI/2 - .1, true); 315 context.arc(cx, cy, r, .1, PI/2 - .1, true);
303 316
304 context.strokeStyle = 'green'; 317 context.strokeStyle = 'green';
305 context.lineWidth = 2; 318 context.lineWidth = 2.0;
306 context.stroke(); 319 context.stroke();
307 320
308 // Center should not be filled. 321 // Center should not be filled.
309 expectPixelUnfilled(cx, cy); 322 expectPixelUnfilled(cx, cy);
310 323
311 // (cx + r, cy) should be filled. 324 // (cx + r, cy) should be filled.
312 expectPixelFilled(cx + r, cy, true); 325 expectPixelFilled(cx + r, cy, true);
313 // (cx, cy + r) should be filled. 326 // (cx, cy + r) should be filled.
314 expectPixelFilled(cx, cy + r, true); 327 expectPixelFilled(cx, cy + r, true);
315 // (cx - r, cy) should be filled. 328 // (cx - r, cy) should be filled.
(...skipping 17 matching lines...) Expand all
333 346
334 group('drawImage_image_element', () { 347 group('drawImage_image_element', () {
335 setUp(setupFunc); 348 setUp(setupFunc);
336 tearDown(tearDownFunc); 349 tearDown(tearDownFunc);
337 // Draw an image to the canvas from an image element. 350 // Draw an image to the canvas from an image element.
338 test('with 3 params', () { 351 test('with 3 params', () {
339 var dataUrl = otherCanvas.toDataUrl('image/gif'); 352 var dataUrl = otherCanvas.toDataUrl('image/gif');
340 var img = new ImageElement(); 353 var img = new ImageElement();
341 354
342 img.onLoad.listen(expectAsync1((_) { 355 img.onLoad.listen(expectAsync1((_) {
343 context.drawImage(img, 50, 50); 356 context.drawImage(img, 50.0, 50.0);
344 357
345 expectPixelFilled(50, 50); 358 expectPixelFilled(50, 50);
346 expectPixelFilled(55, 55); 359 expectPixelFilled(55, 55);
347 expectPixelFilled(59, 59); 360 expectPixelFilled(59, 59);
348 expectPixelUnfilled(60, 60); 361 expectPixelUnfilled(60, 60);
349 expectPixelUnfilled(0, 0); 362 expectPixelUnfilled(0, 0);
350 expectPixelUnfilled(70, 70); 363 expectPixelUnfilled(70, 70);
351 })); 364 }));
352 img.onError.listen((_) { 365 img.onError.listen((_) {
353 guardAsync(() { 366 guardAsync(() {
(...skipping 24 matching lines...) Expand all
378 guardAsync(() { 391 guardAsync(() {
379 fail('URL failed to load.'); 392 fail('URL failed to load.');
380 }); 393 });
381 }); 394 });
382 img.src = dataUrl; 395 img.src = dataUrl;
383 }); 396 });
384 397
385 // Draw an image to the canvas from an image element and scale it. 398 // Draw an image to the canvas from an image element and scale it.
386 test('with 9 params', () { 399 test('with 9 params', () {
387 otherContext.fillStyle = "blue"; 400 otherContext.fillStyle = "blue";
388 otherContext.fillRect(5, 5, 5, 5); 401 otherContext.fillRect(5.0, 5.0, 5.0, 5.0);
389 var dataUrl = otherCanvas.toDataUrl('image/gif'); 402 var dataUrl = otherCanvas.toDataUrl('image/gif');
390 var img = new ImageElement(); 403 var img = new ImageElement();
391 404
392 img.onLoad.listen(expectAsync1((_) { 405 img.onLoad.listen(expectAsync1((_) {
393 // This will take a 6x6 square from the first canvas from position 2,2 406 // This will take a 6x6 square from the first canvas from position 2,2
394 // and then scale it to a 20x20 square and place it to the second 407 // and then scale it to a 20x20 square and place it to the second
395 // canvas at 50,50. 408 // canvas at 50,50.
396 context.drawImageToRect(img, new Rect(50, 50, 20, 20), 409 context.drawImageToRect(img, new Rect(50, 50, 20, 20),
397 sourceRect: new Rect(2, 2, 6, 6)); 410 sourceRect: new Rect(2, 2, 6, 6));
398 411
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 'W5khoVWX1ZQOIOBASPjg4QCYloA4AEAAAAAAAASsIEIuoEIVLCBCFS6gQhUsoEDH0O2d' 489 'W5khoVWX1ZQOIOBASPjg4QCYloA4AEAAAAAAAASsIEIuoEIVLCBCFS6gQhUsoEDH0O2d'
477 'QEAAAAAAABZ54EAo72BAACA8AIAnQEqCAAIAABHCIWFiIWEiAICAnWqA/gD+gINTRgA/' 490 'QEAAAAAAABZ54EAo72BAACA8AIAnQEqCAAIAABHCIWFiIWEiAICAnWqA/gD+gINTRgA/'
478 'v0hRf/kb+PnRv/I4//8WE8DijI//FRAo5WBACgAsQEAARAQABgAGFgv9AAIAAAcU7trA' 491 'v0hRf/kb+PnRv/I4//8WE8DijI//FRAo5WBACgAsQEAARAQABgAGFgv9AAIAAAcU7trA'
479 'QAAAAAAAA67jLOBALeH94EB8YIBfw=='; 492 'QAAAAAAAA67jLOBALeH94EB8YIBfw==';
480 group('drawImage_video_element', () { 493 group('drawImage_video_element', () {
481 setUp(setupFunc); 494 setUp(setupFunc);
482 tearDown(tearDownFunc); 495 tearDown(tearDownFunc);
483 496
484 test('with 3 params', () { 497 test('with 3 params', () {
485 video.onCanPlay.listen(expectAsync1((_) { 498 video.onCanPlay.listen(expectAsync1((_) {
486 context.drawImage(video, 50, 50); 499 context.drawImage(video, 50.0, 50.0);
487 500
488 expectPixelFilled(50, 50); 501 expectPixelFilled(50, 50);
489 expectPixelFilled(54, 54); 502 expectPixelFilled(54, 54);
490 expectPixelFilled(57, 57); 503 expectPixelFilled(57, 57);
491 expectPixelUnfilled(58, 58); 504 expectPixelUnfilled(58, 58);
492 expectPixelUnfilled(0, 0); 505 expectPixelUnfilled(0, 0);
493 expectPixelUnfilled(70, 70); 506 expectPixelUnfilled(70, 70);
494 })); 507 }));
495 508
496 video.onError.listen((_) { 509 video.onError.listen((_) {
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 } 621 }
609 }); 622 });
610 }); 623 });
611 624
612 group('drawImage_canvas_element', () { 625 group('drawImage_canvas_element', () {
613 setUp(setupFunc); 626 setUp(setupFunc);
614 tearDown(tearDownFunc); 627 tearDown(tearDownFunc);
615 628
616 test('with 3 params', () { 629 test('with 3 params', () {
617 // Draw an image to the canvas from a canvas element. 630 // Draw an image to the canvas from a canvas element.
618 context.drawImage(otherCanvas, 50, 50); 631 context.drawImage(otherCanvas, 50.0, 50.0);
619 632
620 expectPixelFilled(50, 50); 633 expectPixelFilled(50, 50);
621 expectPixelFilled(55, 55); 634 expectPixelFilled(55, 55);
622 expectPixelFilled(59, 59); 635 expectPixelFilled(59, 59);
623 expectPixelUnfilled(60, 60); 636 expectPixelUnfilled(60, 60);
624 expectPixelUnfilled(0, 0); 637 expectPixelUnfilled(0, 0);
625 expectPixelUnfilled(70, 70); 638 expectPixelUnfilled(70, 70);
626 }); 639 });
627 test('with 5 params', () { 640 test('with 5 params', () {
628 // Draw an image to the canvas from a canvas element. 641 // Draw an image to the canvas from a canvas element.
629 context.drawImageToRect(otherCanvas, new Rect(50, 50, 20, 20)); 642 context.drawImageToRect(otherCanvas, new Rect(50, 50, 20, 20));
630 643
631 expectPixelFilled(50, 50); 644 expectPixelFilled(50, 50);
632 expectPixelFilled(55, 55); 645 expectPixelFilled(55, 55);
633 expectPixelFilled(59, 59); 646 expectPixelFilled(59, 59);
634 expectPixelFilled(60, 60); 647 expectPixelFilled(60, 60);
635 expectPixelFilled(69, 69); 648 expectPixelFilled(69, 69);
636 expectPixelUnfilled(70, 70); 649 expectPixelUnfilled(70, 70);
637 expectPixelUnfilled(0, 0); 650 expectPixelUnfilled(0, 0);
638 expectPixelUnfilled(80, 80); 651 expectPixelUnfilled(80, 80);
639 }); 652 });
640 test('with 9 params', () { 653 test('with 9 params', () {
641 // Draw an image to the canvas from a canvas element. 654 // Draw an image to the canvas from a canvas element.
642 otherContext.fillStyle = "blue"; 655 otherContext.fillStyle = "blue";
643 otherContext.fillRect(5, 5, 5, 5); 656 otherContext.fillRect(5.0, 5.0, 5.0, 5.0);
644 context.drawImageToRect(otherCanvas, new Rect(50, 50, 20, 20), 657 context.drawImageToRect(otherCanvas, new Rect(50, 50, 20, 20),
645 sourceRect: new Rect(2, 2, 6, 6)); 658 sourceRect: new Rect(2, 2, 6, 6));
646 659
647 checkPixel(readPixel(50, 50), [255, 0, 0, 255]); 660 checkPixel(readPixel(50, 50), [255, 0, 0, 255]);
648 checkPixel(readPixel(55, 55), [255, 0, 0, 255]); 661 checkPixel(readPixel(55, 55), [255, 0, 0, 255]);
649 checkPixel(readPixel(60, 50), [255, 0, 0, 255]); 662 checkPixel(readPixel(60, 50), [255, 0, 0, 255]);
650 checkPixel(readPixel(65, 65), [0, 0, 255, 255]); 663 checkPixel(readPixel(65, 65), [0, 0, 255, 255]);
651 checkPixel(readPixel(69, 69), [0, 0, 255, 255]); 664 checkPixel(readPixel(69, 69), [0, 0, 255, 255]);
652 expectPixelFilled(50, 50); 665 expectPixelFilled(50, 50);
653 expectPixelFilled(55, 55); 666 expectPixelFilled(55, 55);
654 expectPixelFilled(59, 59); 667 expectPixelFilled(59, 59);
655 expectPixelFilled(60, 60); 668 expectPixelFilled(60, 60);
656 expectPixelFilled(69, 69); 669 expectPixelFilled(69, 69);
657 expectPixelUnfilled(70, 70); 670 expectPixelUnfilled(70, 70);
658 expectPixelUnfilled(0, 0); 671 expectPixelUnfilled(0, 0);
659 expectPixelUnfilled(80, 80); 672 expectPixelUnfilled(80, 80);
660 }); 673 });
661 674
662 test('createImageData', () { 675 test('createImageData', () {
663 var imageData = context.createImageData(15, 15); 676 var imageData = context.createImageData(15.0, 15.0);
664 expect(imageData.width, 15); 677 expect(imageData.width, 15);
665 expect(imageData.height, 15); 678 expect(imageData.height, 15);
666 679
667 var other = context.createImageDataFromImageData(imageData); 680 var other = context.createImageDataFromImageData(imageData);
668 expect(other.width, 15); 681 expect(other.width, 15);
669 expect(other.height, 15); 682 expect(other.height, 15);
670 }); 683 });
671 }); 684 });
672 } 685 }
OLDNEW
« no previous file with comments | « tests/html/canvas_test.dart ('k') | tests/html/css_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698