OLD | NEW |
---|---|
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <script src="../../resources/testharness.js"></script> |
2 <html> | 2 <script src="../../resources/testharnessreport.js"></script> |
3 <head> | |
4 <script src="../../resources/js-test.js"></script> | |
5 </head> | |
6 <body> | 3 <body> |
7 <script src="script-tests/canvas-createPattern-fillRect-shadow.js"></script> | 4 <script> |
5 | |
6 // Create auxiliary canvas to draw to and create an image from. | |
7 // This is done instead of simply loading an image from the file system | |
8 // because that would throw a SECURITY_ERR DOM Exception. | |
9 var aCanvas = document.createElement('canvas'); | |
10 aCanvas.setAttribute('width', '200'); | |
11 aCanvas.setAttribute('height', '200'); | |
12 var aCtx = aCanvas.getContext('2d'); | |
13 | |
14 // Draw a circle on the same canvas. | |
15 aCtx.beginPath(); | |
16 aCtx.fillStyle = 'blue'; | |
17 aCtx.arc(100, 100, 100, 0, Math.PI*2, false); | |
18 aCtx.fill(); | |
19 | |
20 // Create the image object to be drawn on the master canvas. | |
21 var img = new Image(); | |
22 img.onload = drawImageToCanvasAndCheckPixels; | |
23 img.src = aCanvas.toDataURL(); // set a data URI of the base64 encoded image as the source | |
24 | |
25 // Create master canvas. | |
26 var canvas = document.createElement('canvas'); | |
27 document.body.appendChild(canvas); | |
28 canvas.setAttribute('width', '700'); | |
29 canvas.setAttribute('height', '1100'); | |
30 var ctx = canvas.getContext('2d'); | |
31 | |
32 function drawImageToCanvasAndCheckPixels() { | |
33 ctx.shadowOffsetX = 250; | |
34 ctx.fillStyle = ctx.createPattern(img, 'repeat'); | |
35 | |
36 ctx.shadowColor = 'rgba(255, 0, 0, 1.0)'; | |
37 ctx.fillRect(50, 50, 200, 200); | |
38 | |
39 ctx.shadowColor = 'rgba(255, 0, 0, 0.2)'; | |
40 ctx.fillRect(50, 300, 200, 200); | |
41 | |
42 ctx.shadowBlur = 10; | |
43 ctx.shadowColor = 'rgba(255, 0, 0, 1.0)'; | |
44 ctx.fillRect(50, 550, 200, 200); | |
45 | |
46 ctx.shadowColor = 'rgba(255, 0, 0, 0.2)'; | |
47 ctx.fillRect(50, 800, 200, 200); | |
48 | |
49 checkPixels(); | |
50 } | |
51 | |
52 function checkPixels() { | |
53 test(function(t) { | |
Justin Novosad
2017/02/08 18:23:33
The test hraness may terminate before this is reac
zakerinasab
2017/02/08 19:57:49
Done.
| |
54 var imageData, data; | |
55 | |
56 // Verify solid shadow. | |
57 imageData = ctx.getImageData(300, 50, 1, 1); | |
58 d = imageData.data; | |
59 assert_equals(d[0], 255); | |
60 assert_equals(d[1], 0); | |
61 assert_equals(d[2], 0); | |
62 assert_equals(d[3], 255); | |
63 | |
64 imageData = ctx.getImageData(300, 249, 1, 1); | |
65 d = imageData.data; | |
66 assert_equals(d[0], 255); | |
67 assert_equals(d[1], 0); | |
68 assert_equals(d[2], 0); | |
69 assert_equals(d[3], 255); | |
70 | |
71 imageData = ctx.getImageData(490, 240, 1, 1); | |
72 d = imageData.data; | |
73 assert_equals(d[0], 255); | |
74 assert_equals(d[1], 0); | |
75 assert_equals(d[2], 0); | |
76 assert_equals(d[3], 255); | |
77 | |
78 // Verify solid alpha shadow. | |
79 imageData = ctx.getImageData(310, 350, 1, 1); | |
80 d = imageData.data; | |
81 assert_equals(d[0], 255); | |
82 assert_equals(d[1], 0); | |
83 assert_equals(d[2], 0); | |
84 assert_approx_equals(d[3], 51, 10); | |
85 | |
86 imageData = ctx.getImageData(490, 490, 1, 1); | |
87 d = imageData.data; | |
88 assert_equals(d[0], 255); | |
89 assert_equals(d[1], 0); | |
90 assert_equals(d[2], 0); | |
91 assert_approx_equals(d[3], 51, 10); | |
92 | |
93 imageData = ctx.getImageData(300, 499, 1, 1); | |
94 d = imageData.data; | |
95 assert_equals(d[0], 255); | |
96 assert_equals(d[1], 0); | |
97 assert_equals(d[2], 0); | |
98 assert_approx_equals(d[3], 51, 10); | |
99 | |
100 // Verify blurry shadow. | |
101 imageData = ctx.getImageData(310, 550, 1, 1); | |
102 d = imageData.data; | |
103 assert_equals(d[0], 255); | |
104 assert_equals(d[1], 0); | |
105 assert_equals(d[2], 0); | |
106 assert_approx_equals(d[3], 141, 10); | |
107 | |
108 imageData = ctx.getImageData(490, 750, 1, 1); | |
109 d = imageData.data; | |
110 assert_equals(d[0], 255); | |
111 assert_equals(d[1], 0); | |
112 assert_equals(d[2], 0); | |
113 assert_approx_equals(d[3], 113, 10); | |
114 | |
115 imageData = ctx.getImageData(499, 499, 1, 1); | |
116 d = imageData.data; | |
117 assert_equals(d[0], 255); | |
118 assert_equals(d[1], 0); | |
119 assert_equals(d[2], 0); | |
120 assert_approx_equals(d[3], 51, 10); | |
121 | |
122 // Verify blurry alpha shadow. | |
123 imageData = ctx.getImageData(300, 850, 1, 1); | |
124 d = imageData.data; | |
125 assert_equals(d[0], 255); | |
126 assert_equals(d[1], 0); | |
127 assert_equals(d[2], 0); | |
128 assert_approx_equals(d[3], 29, 10); | |
129 | |
130 imageData = ctx.getImageData(500, 875, 1, 1); | |
131 d = imageData.data; | |
132 assert_equals(d[0], 255); | |
133 assert_equals(d[1], 0); | |
134 assert_equals(d[2], 0); | |
135 assert_approx_equals(d[3], 23, 10); | |
136 | |
137 imageData = ctx.getImageData(300, 900, 1, 1); | |
138 d = imageData.data; | |
139 assert_equals(d[0], 255); | |
140 assert_equals(d[1], 0); | |
141 assert_equals(d[2], 0); | |
142 assert_approx_equals(d[3], 29, 10); | |
143 }, "Ensure correct behavior of canvas with createPattern + fillRect with sha dow."); | |
144 } | |
145 | |
146 window.jsTestIsAsync = true; | |
Justin Novosad
2017/02/08 18:23:33
This is no longer relevant.
zakerinasab
2017/02/08 19:57:50
Done.
| |
147 </script> | |
8 </body> | 148 </body> |
9 </html> | |
OLD | NEW |