14 var context = getContext("2d");
15 context.fillStyle = "red";
16 context.fillRect(0, 0, 100, 100);
18 property int paintCount:spyPaint.count
19 property int paintedCount:spyPainted.count
20 property int canvasSizeChangedCount:spyCanvasSizeChanged.count
21 property int tileSizeChangedCount:spyTileSizeChanged.count
22 property int renderStrategyChangedCount:spyRenderStrategyChanged.count
23 property int canvasWindowChangedCount:spyCanvasWindowChanged.count
24 property int renderTargetChangedCount:spyRenderTargetChanged.count
25 property int imageLoadedCount:spyImageLoaded.count
26 property int availableChangedCount:spyAvailableChanged.count
28 SignalSpy {id: spyPaint;target:c;signalName: "paint"}
29 SignalSpy {id: spyPainted;target:c;signalName: "painted"}
30 SignalSpy {id: spyCanvasSizeChanged;target:c;signalName: "canvasSizeChanged"}
31 SignalSpy {id: spyTileSizeChanged;target:c;signalName: "tileSizeChanged"}
32 SignalSpy {id: spyRenderStrategyChanged;target:c;signalName: "renderStrategyChanged"}
33 SignalSpy {id: spyCanvasWindowChanged;target:c;signalName: "canvasWindowChanged"}
34 SignalSpy {id: spyRenderTargetChanged;target:c;signalName: "renderTargetChanged"}
35 SignalSpy {id: spyImageLoaded;target:c;signalName: "imageLoaded"}
36 SignalSpy {id: spyAvailableChanged;target:c;signalName: "availableChanged"}
41 name: "Canvas"; when: windowShown
42 function test_canvasSize() {
43 var c = canvas.createObject(container);
46 verify(c.availableChangedCount, 1);
48 //by default canvasSize is same with canvas' actual size
49 // when canvas size changes, canvasSize should be changed as well.
50 compare(c.canvasSize.width, c.width);
51 compare(c.canvasSize.height, c.height);
53 compare(c.canvasSize.width, 20);
54 compare(c.canvasSizeChangedCount, 1);
56 compare(c.canvasSizeChangedCount, 2);
57 compare(c.canvasSize.height, 5);
59 //change canvasSize manually, then canvasSize detaches from canvas
61 c.canvasSize.width = 100;
62 compare(c.canvasSizeChangedCount, 3);
63 compare(c.canvasSize.width, 100);
65 c.canvasSize.height = 50;
66 compare(c.canvasSizeChangedCount, 4);
67 compare(c.canvasSize.height, 50);
71 compare(c.canvasSizeChangedCount, 4);
72 compare(c.canvasSize.width, 100);
73 compare(c.canvasSize.height, 50);
76 compare(c.canvasSizeChangedCount, 4);
77 compare(c.canvasSize.width, 100);
78 compare(c.canvasSize.height, 50);
81 function test_tileSize() {
82 var c = canvas.createObject(container);
85 verify(c.availableChangedCount, 1);
87 compare(c.tileSize.width, c.width);
88 compare(c.tileSize.height, c.height);
90 compare(c.tileSize.width, 20);
91 compare(c.tileSizeChangedCount, 1);
93 compare(c.tileSizeChangedCount, 2);
94 compare(c.tileSize.height, 5);
96 c.tileSize.width = 100;
97 compare(c.tileSizeChangedCount, 3);
98 compare(c.tileSize.width, 100);
100 c.tileSize.height = 50;
101 compare(c.tileSizeChangedCount, 4);
102 compare(c.tileSize.height, 50);
103 compare(c.height, 5);
106 compare(c.tileSizeChangedCount, 4);
107 compare(c.tileSize.width, 100);
108 compare(c.tileSize.height, 50);
111 compare(c.tileSizeChangedCount, 4);
112 compare(c.tileSize.width, 100);
113 compare(c.tileSize.height, 50);
118 function test_canvasWindow() {
119 var c = canvas.createObject(container);
122 verify(c.availableChangedCount, 1);
123 compare(c.canvasWindow.x, 0);
124 compare(c.canvasWindow.y, 0);
125 compare(c.canvasWindow.width, c.width);
126 compare(c.canvasWindow.height, c.height);
129 compare(c.canvasWindow.width, 20);
130 compare(c.canvasWindowChangedCount, 1);
132 compare(c.canvasWindowChangedCount, 2);
133 compare(c.canvasWindow.height, 5);
135 c.canvasWindow.x = 5;
136 c.canvasWindow.y = 6;
137 c.canvasWindow.width = 10;
138 c.canvasWindow.height =20;
139 compare(c.canvasWindowChangedCount, 6);
140 compare(c.canvasWindow.width, 10);
141 compare(c.canvasWindow.height, 20);
142 compare(c.canvasWindow.x, 5);
143 compare(c.canvasWindow.y, 6);
147 function test_renderTargetAndStrategy() {
148 var c = canvas.createObject(container);
151 verify(c.availableChangedCount, 1);
153 compare(c.renderTarget, Canvas.Image);
154 compare(c.renderStrategy, Canvas.Threaded);
158 function test_save() {
159 var c = canvas.createObject(container);
162 verify(c.availableChangedCount, 1);
164 c.renderTarget = Canvas.Image;
167 verify(c.save("c.png"));
168 c.loadImage("c.png");
170 compare(c.imageLoadedCount, 1);
171 verify(c.isImageLoaded("c.png"));
172 verify(!c.isImageLoading("c.png"));
173 verify(!c.isImageError("c.png"));
177 function test_toDataURL_data() {
178 return [{mimeType:"image/png"},
179 {mimeType:"image/bmp"},
180 {mimeType:"image/jpeg"},
181 {mimeType:"image/x-portable-pixmap"},
182 //{mimeType:"image/tiff"}, QTBUG-23980
183 {mimeType:"image/xpm"},
187 function test_toDataURL(data) {
188 var c = canvas.createObject(container);
191 verify(c.availableChangedCount, 1);
193 var ctx = c.getContext("2d");
194 ctx.fillStyle = "red";
195 ctx.fillRect(0, 0, c.width, c.height);
198 var dataUrl = c.toDataURL();
199 verify(dataUrl != "data:,");
200 dataUrl = c.toDataURL("image/invalid");
201 verify(dataUrl == "data:,");
203 dataUrl = c.toDataURL(data.mimeType);
204 verify(dataUrl != "data:,");
207 ctx.fillStyle = "blue";
208 ctx.fillRect(0, 0, c.width, c.height);
212 var dataUrl2 = c.toDataURL(data.mimeType);
213 verify (dataUrl2 != "data:,");
214 verify (dataUrl2 != dataUrl);
218 function test_paint() {
219 var c = canvas.createObject(container);
222 verify(c.availableChangedCount, 1);
224 c.renderTarget = Canvas.Image;
225 c.renderStrategy = Canvas.Immediate;
226 var ctx = c.getContext("2d");
227 ctx.fillRect(0, 0, c.width, c.height);
231 compare(c.paintedCount, 1);
232 compare(c.paintCount, 1);
236 function test_loadImage() {
237 var c = canvas.createObject(container);
240 verify(c.availableChangedCount, 1);
242 c.loadImage("red.png");
244 compare(c.imageLoadedCount, 1);
245 verify(c.isImageLoaded("red.png"));
246 verify(!c.isImageLoading("red.png"));
247 verify(!c.isImageError("red.png"));
249 c.unloadImage("red.png");
250 verify(!c.isImageLoaded("red.png"));
251 verify(!c.isImageLoading("red.png"));
252 verify(!c.isImageError("red.png"));
257 function test_getContext() {
258 var c = canvas.createObject(container);
261 verify(c.availableChangedCount, 1);
263 var ctx = c.getContext("2d");
265 compare(ctx.canvas, c);
266 ctx = c.getContext('2d');
268 compare(ctx.canvas, c);
269 ctx = c.getContext('2D');
271 compare(ctx.canvas, c);
272 ctx = c.getContext('invalid');