@@ -134,107 +134,94 @@ void tst_layoutnode_horizontal_grid()
134
134
root->append (r[i]);
135
135
}
136
136
137
- // Layout out in a single row, based on cell size
137
+ // cellsize, one row
138
138
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , 20 , 0 , 0 , 0 , 0 );
139
139
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , 0 , 10 , 20 ));
140
140
check_equal (r[1 ]->geometry (), rect2d::fromXywh (10 , 0 , 10 , 20 ));
141
141
check_equal (r[2 ]->geometry (), rect2d::fromXywh (20 , 0 , 10 , 20 ));
142
142
check_equal (r[3 ]->geometry (), rect2d::fromXywh (30 , 0 , 10 , 20 ));
143
- // Layout out in a single row, negative cell width
144
143
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , 20 , 0 , 0 , 0 , 0 );
145
144
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , 0 , 10 , 20 ));
146
145
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-20 , 0 , 10 , 20 ));
147
146
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-30 , 0 , 10 , 20 ));
148
147
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-40 , 0 , 10 , 20 ));
149
- // Layout out in a single row, negative cell dimensions
150
148
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , -20 , 0 , 0 , 0 , 0 );
151
149
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , -20 , 10 , 20 ));
152
150
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-20 , -20 , 10 , 20 ));
153
151
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-30 , -20 , 10 , 20 ));
154
152
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-40 , -20 , 10 , 20 ));
155
- // Layout out in a single row, negative cell height
156
153
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , -20 , 0 , 0 , 0 , 0 );
157
154
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , -20 , 10 , 20 ));
158
155
check_equal (r[1 ]->geometry (), rect2d::fromXywh (10 , -20 , 10 , 20 ));
159
156
check_equal (r[2 ]->geometry (), rect2d::fromXywh (20 , -20 , 10 , 20 ));
160
157
check_equal (r[3 ]->geometry (), rect2d::fromXywh (30 , -20 , 10 , 20 ));
161
158
162
- // Layout out in a single row, based on cell size. With margin/spacing
159
+ // cellsize, margin/spacing
163
160
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , 20 , 0 , 0 , 1 , 2 );
164
161
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , 1 , 10 , 20 ));
165
162
check_equal (r[1 ]->geometry (), rect2d::fromXywh (13 , 1 , 10 , 20 ));
166
163
check_equal (r[2 ]->geometry (), rect2d::fromXywh (25 , 1 , 10 , 20 ));
167
164
check_equal (r[3 ]->geometry (), rect2d::fromXywh (37 , 1 , 10 , 20 ));
168
- // Layout out in a single row, negative cellwidth, with margin/spacing
169
165
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , 20 , 0 , 0 , 1 , 2 );
170
166
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , 1 , 10 , 20 ));
171
167
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-23 , 1 , 10 , 20 ));
172
168
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-35 , 1 , 10 , 20 ));
173
169
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-47 , 1 , 10 , 20 ));
174
- // Layout out in a single row, negative cell dimensions, with margin/spacing
175
170
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , -20 , 0 , 0 , 1 , 2 );
176
171
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , -21 , 10 , 20 ));
177
172
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-23 , -21 , 10 , 20 ));
178
173
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-35 , -21 , 10 , 20 ));
179
174
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-47 , -21 , 10 , 20 ));
180
- // Layout out in a single row, negative cell height, with margin/spacing
181
175
apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , -20 , 0 , 0 , 1 , 2 );
182
176
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , -21 , 10 , 20 ));
183
177
check_equal (r[1 ]->geometry (), rect2d::fromXywh (13 , -21 , 10 , 20 ));
184
178
check_equal (r[2 ]->geometry (), rect2d::fromXywh (25 , -21 , 10 , 20 ));
185
179
check_equal (r[3 ]->geometry (), rect2d::fromXywh (37 , -21 , 10 , 20 ));
186
180
187
- // Layout out in a single row, based on width/4cols
181
+ // width/height, 1x4 grid
188
182
apply_w_h_cw_ch_r_c_m_s (root, 40 , 20 , 0 , 0 , 1 , 4 , 0 , 0 );
189
183
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , 0 , 10 , 20 ));
190
184
check_equal (r[1 ]->geometry (), rect2d::fromXywh (10 , 0 , 10 , 20 ));
191
185
check_equal (r[2 ]->geometry (), rect2d::fromXywh (20 , 0 , 10 , 20 ));
192
186
check_equal (r[3 ]->geometry (), rect2d::fromXywh (30 , 0 , 10 , 20 ));
193
- // Layout out in a single row, negative width/4cols
194
187
apply_w_h_cw_ch_r_c_m_s (root, -40 , 20 , 0 , 0 , 1 , 4 , 0 , 0 );
195
188
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , 0 , 10 , 20 ));
196
189
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-20 , 0 , 10 , 20 ));
197
190
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-30 , 0 , 10 , 20 ));
198
191
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-40 , 0 , 10 , 20 ));
199
- // Layout out in a single row, negative width/4cols negative height
200
192
apply_w_h_cw_ch_r_c_m_s (root, -40 , -20 , 0 , 0 , 1 , 4 , 0 , 0 );
201
193
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , -20 , 10 , 20 ));
202
194
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-20 , -20 , 10 , 20 ));
203
195
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-30 , -20 , 10 , 20 ));
204
196
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-40 , -20 , 10 , 20 ));
205
- // Layout out in a single row, width/4cols and negative height
206
197
apply_w_h_cw_ch_r_c_m_s (root, 40 , -20 , 0 , 0 , 1 , 4 , 0 , 0 );
207
198
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , -20 , 10 , 20 ));
208
199
check_equal (r[1 ]->geometry (), rect2d::fromXywh (10 , -20 , 10 , 20 ));
209
200
check_equal (r[2 ]->geometry (), rect2d::fromXywh (20 , -20 , 10 , 20 ));
210
201
check_equal (r[3 ]->geometry (), rect2d::fromXywh (30 , -20 , 10 , 20 ));
211
202
212
- // Layout out in a single row, based on width/4cols + margin/space
203
+ // width/height, 1x4 grid, space/ margin
213
204
apply_w_h_cw_ch_r_c_m_s (root, 48 , 22 , 0 , 0 , 1 , 4 , 1 , 2 );
214
205
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , 1 , 10 , 20 ));
215
206
check_equal (r[1 ]->geometry (), rect2d::fromXywh (13 , 1 , 10 , 20 ));
216
207
check_equal (r[2 ]->geometry (), rect2d::fromXywh (25 , 1 , 10 , 20 ));
217
208
check_equal (r[3 ]->geometry (), rect2d::fromXywh (37 , 1 , 10 , 20 ));
218
- // Layout out in a single row, negative width/4cols + margin/space
219
209
apply_w_h_cw_ch_r_c_m_s (root, -48 , 22 , 0 , 0 , 1 , 4 , 1 , 2 );
220
210
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , 1 , 10 , 20 ));
221
211
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-23 , 1 , 10 , 20 ));
222
212
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-35 , 1 , 10 , 20 ));
223
213
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-47 , 1 , 10 , 20 ));
224
- // Layout out in a single row, negative width/4cols negative height + margin/space
225
214
apply_w_h_cw_ch_r_c_m_s (root, -48 , -22 , 0 , 0 , 1 , 4 , 1 , 2 );
226
215
check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , -21 , 10 , 20 ));
227
216
check_equal (r[1 ]->geometry (), rect2d::fromXywh (-23 , -21 , 10 , 20 ));
228
217
check_equal (r[2 ]->geometry (), rect2d::fromXywh (-35 , -21 , 10 , 20 ));
229
218
check_equal (r[3 ]->geometry (), rect2d::fromXywh (-47 , -21 , 10 , 20 ));
230
- // Layout out in a single row, width/4cols and negative height + margin/space
231
219
apply_w_h_cw_ch_r_c_m_s (root, 48 , -22 , 0 , 0 , 1 , 4 , 1 , 2 );
232
220
check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , -21 , 10 , 20 ));
233
221
check_equal (r[1 ]->geometry (), rect2d::fromXywh (13 , -21 , 10 , 20 ));
234
222
check_equal (r[2 ]->geometry (), rect2d::fromXywh (25 , -21 , 10 , 20 ));
235
223
check_equal (r[3 ]->geometry (), rect2d::fromXywh (37 , -21 , 10 , 20 ));
236
224
237
-
238
225
// And then all the same tests, but this time limited to 2 columns
239
226
240
227
// cell size, 2 columns
@@ -331,10 +318,207 @@ void tst_layoutnode_horizontal_grid()
331
318
root->destroy ();
332
319
}
333
320
321
+
322
+ void tst_layoutnode_vertical_grid ()
323
+ {
324
+ LayoutNode *root = LayoutNode::create ();
325
+ root->setActivationMode (LayoutNode::Explicit);
326
+ root->setLayoutType (LayoutEngine::Grid_Vertical);
327
+
328
+ RectangleNode *r[4 ];
329
+ for (int i=0 ; i<4 ; ++i) {
330
+ r[i] = RectangleNode::create ();
331
+ root->append (r[i]);
332
+ }
333
+
334
+ // cellsize, one column
335
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , 20 , 0 , 0 , 0 , 0 );
336
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (0 , 0 , 10 , 20 ));
337
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (0 , 20 , 10 , 20 ));
338
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (0 , 40 , 10 , 20 ));
339
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (0 , 60 , 10 , 20 ));
340
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , 20 , 0 , 0 , 0 , 0 );
341
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , 0 , 10 , 20 ));
342
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , 20 , 10 , 20 ));
343
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-10 , 40 , 10 , 20 ));
344
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-10 , 60 , 10 , 20 ));
345
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , -20 , 0 , 0 , 0 , 0 );
346
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , -20 , 10 , 20 ));
347
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , -40 , 10 , 20 ));
348
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-10 , -60 , 10 , 20 ));
349
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-10 , -80 , 10 , 20 ));
350
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , -20 , 0 , 0 , 0 , 0 );
351
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (0 , -20 , 10 , 20 ));
352
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (0 , -40 , 10 , 20 ));
353
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (0 , -60 , 10 , 20 ));
354
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (0 , -80 , 10 , 20 ));
355
+
356
+ // cellsize, one column, margin/spacing
357
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , 20 , 0 , 0 , 1 , 2 );
358
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (1 , 1 , 10 , 20 ));
359
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (1 , 23 , 10 , 20 ));
360
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (1 , 45 , 10 , 20 ));
361
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (1 , 67 , 10 , 20 ));
362
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , 20 , 0 , 0 , 1 , 2 );
363
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , 1 , 10 , 20 ));
364
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , 23 , 10 , 20 ));
365
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-11 , 45 , 10 , 20 ));
366
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-11 , 67 , 10 , 20 ));
367
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , -20 , 0 , 0 , 1 , 2 );
368
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , -21 , 10 , 20 ));
369
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , -43 , 10 , 20 ));
370
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-11 , -65 , 10 , 20 ));
371
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-11 , -87 , 10 , 20 ));
372
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , -20 , 0 , 0 , 1 , 2 );
373
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (1 , -21 , 10 , 20 ));
374
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (1 , -43 , 10 , 20 ));
375
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (1 , -65 , 10 , 20 ));
376
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (1 , -87 , 10 , 20 ));
377
+
378
+ // width/height, 4x1 grid
379
+ apply_w_h_cw_ch_r_c_m_s (root, 10 , 80 , 0 , 0 , 4 , 1 , 0 , 0 );
380
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (0 , 0 , 10 , 20 ));
381
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (0 , 20 , 10 , 20 ));
382
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (0 , 40 , 10 , 20 ));
383
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (0 , 60 , 10 , 20 ));
384
+ apply_w_h_cw_ch_r_c_m_s (root, -10 , 80 , 0 , 0 , 4 , 1 , 0 , 0 );
385
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , 0 , 10 , 20 ));
386
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , 20 , 10 , 20 ));
387
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-10 , 40 , 10 , 20 ));
388
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-10 , 60 , 10 , 20 ));
389
+ apply_w_h_cw_ch_r_c_m_s (root, -10 , -80 , 0 , 0 , 4 , 1 , 0 , 0 );
390
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , -20 , 10 , 20 ));
391
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , -40 , 10 , 20 ));
392
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-10 , -60 , 10 , 20 ));
393
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-10 , -80 , 10 , 20 ));
394
+ apply_w_h_cw_ch_r_c_m_s (root, 10 , -80 , 0 , 0 , 4 , 1 , 0 , 0 );
395
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (0 , -20 , 10 , 20 ));
396
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (0 , -40 , 10 , 20 ));
397
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (0 , -60 , 10 , 20 ));
398
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (0 , -80 , 10 , 20 ));
399
+
400
+ // width/height, 4x1 grid, space/margin
401
+ apply_w_h_cw_ch_r_c_m_s (root, 12 , 88 , 0 , 0 , 4 , 1 , 1 , 2 );
402
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (1 , 1 , 10 , 20 ));
403
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (1 , 23 , 10 , 20 ));
404
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (1 , 45 , 10 , 20 ));
405
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (1 , 67 , 10 , 20 ));
406
+ apply_w_h_cw_ch_r_c_m_s (root, -12 , 88 , 0 , 0 , 4 , 1 , 1 , 2 );
407
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , 1 , 10 , 20 ));
408
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , 23 , 10 , 20 ));
409
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-11 , 45 , 10 , 20 ));
410
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-11 , 67 , 10 , 20 ));
411
+ apply_w_h_cw_ch_r_c_m_s (root, -12 , -88 , 0 , 0 , 4 , 1 , 1 , 2 );
412
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , -21 , 10 , 20 ));
413
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , -43 , 10 , 20 ));
414
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-11 , -65 , 10 , 20 ));
415
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-11 , -87 , 10 , 20 ));
416
+ apply_w_h_cw_ch_r_c_m_s (root, 12 , -88 , 0 , 0 , 4 , 1 , 1 , 2 );
417
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (1 , -21 , 10 , 20 ));
418
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (1 , -43 , 10 , 20 ));
419
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (1 , -65 , 10 , 20 ));
420
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (1 , -87 , 10 , 20 ));
421
+
422
+ // And then all the same tests, but this time limited to 2 rows
423
+
424
+ // cell size, 2 rows
425
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , 20 , 2 , 0 , 0 , 0 );
426
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , 0 , 10 , 20 ));
427
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 0 , 20 , 10 , 20 ));
428
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (10 , 0 , 10 , 20 ));
429
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (10 , 20 , 10 , 20 ));
430
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , 20 , 2 , 0 , 0 , 0 );
431
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , 0 , 10 , 20 ));
432
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , 20 , 10 , 20 ));
433
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-20 , 0 , 10 , 20 ));
434
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-20 , 20 , 10 , 20 ));
435
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , -20 , 2 , 0 , 0 , 0 );
436
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , -20 , 10 , 20 ));
437
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , -40 , 10 , 20 ));
438
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-20 , -20 , 10 , 20 ));
439
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-20 , -40 , 10 , 20 ));
440
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , -20 , 2 , 0 , 0 , 0 );
441
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , -20 , 10 , 20 ));
442
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 0 , -40 , 10 , 20 ));
443
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (10 , -20 , 10 , 20 ));
444
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (10 , -40 , 10 , 20 ));
445
+
446
+ // cell size, space/margin, 2 rows
447
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , 20 , 2 , 0 , 1 , 2 );
448
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , 1 , 10 , 20 ));
449
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 1 , 23 , 10 , 20 ));
450
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (13 , 1 , 10 , 20 ));
451
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (13 , 23 , 10 , 20 ));
452
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , 20 , 2 , 0 , 1 , 2 );
453
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , 1 , 10 , 20 ));
454
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , 23 , 10 , 20 ));
455
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-23 , 1 , 10 , 20 ));
456
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-23 , 23 , 10 , 20 ));
457
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , -10 , -20 , 2 , 0 , 1 , 2 );
458
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , -21 , 10 , 20 ));
459
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , -43 , 10 , 20 ));
460
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-23 , -21 , 10 , 20 ));
461
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-23 , -43 , 10 , 20 ));
462
+ apply_w_h_cw_ch_r_c_m_s (root, 0 , 0 , 10 , -20 , 2 , 0 , 1 , 2 );
463
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , -21 , 10 , 20 ));
464
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 1 , -43 , 10 , 20 ));
465
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (13 , -21 , 10 , 20 ));
466
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (13 , -43 , 10 , 20 ));
467
+
468
+ // width/height, 2x2 grid
469
+ apply_w_h_cw_ch_r_c_m_s (root, 20 , 40 , 0 , 0 , 2 , 2 , 0 , 0 );
470
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , 0 , 10 , 20 ));
471
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 0 , 20 , 10 , 20 ));
472
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (10 , 0 , 10 , 20 ));
473
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (10 , 20 , 10 , 20 ));
474
+ apply_w_h_cw_ch_r_c_m_s (root, -20 , 40 , 0 , 0 , 2 , 2 , 0 , 0 );
475
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , 0 , 10 , 20 ));
476
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , 20 , 10 , 20 ));
477
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-20 , 0 , 10 , 20 ));
478
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-20 , 20 , 10 , 20 ));
479
+ apply_w_h_cw_ch_r_c_m_s (root, -20 , -40 , 0 , 0 , 2 , 2 , 0 , 0 );
480
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-10 , -20 , 10 , 20 ));
481
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-10 , -40 , 10 , 20 ));
482
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-20 , -20 , 10 , 20 ));
483
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-20 , -40 , 10 , 20 ));
484
+ apply_w_h_cw_ch_r_c_m_s (root, 20 , -40 , 0 , 0 , 2 , 2 , 0 , 0 );
485
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 0 , -20 , 10 , 20 ));
486
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 0 , -40 , 10 , 20 ));
487
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (10 , -20 , 10 , 20 ));
488
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (10 , -40 , 10 , 20 ));
489
+
490
+ // width/height, 2x2 grid
491
+ apply_w_h_cw_ch_r_c_m_s (root, 24 , 44 , 0 , 0 , 2 , 2 , 1 , 2 );
492
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , 1 , 10 , 20 ));
493
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 1 , 23 , 10 , 20 ));
494
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (13 , 1 , 10 , 20 ));
495
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (13 , 23 , 10 , 20 ));
496
+ apply_w_h_cw_ch_r_c_m_s (root, -24 , 44 , 0 , 0 , 2 , 2 , 1 , 2 );
497
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , 1 , 10 , 20 ));
498
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , 23 , 10 , 20 ));
499
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-23 , 1 , 10 , 20 ));
500
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-23 , 23 , 10 , 20 ));
501
+ apply_w_h_cw_ch_r_c_m_s (root, -24 , -44 , 0 , 0 , 2 , 2 , 1 , 2 );
502
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh (-11 , -21 , 10 , 20 ));
503
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh (-11 , -43 , 10 , 20 ));
504
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (-23 , -21 , 10 , 20 ));
505
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (-23 , -43 , 10 , 20 ));
506
+ apply_w_h_cw_ch_r_c_m_s (root, 24 , -44 , 0 , 0 , 2 , 2 , 1 , 2 );
507
+ check_equal (r[0 ]->geometry (), rect2d::fromXywh ( 1 , -21 , 10 , 20 ));
508
+ check_equal (r[1 ]->geometry (), rect2d::fromXywh ( 1 , -43 , 10 , 20 ));
509
+ check_equal (r[2 ]->geometry (), rect2d::fromXywh (13 , -21 , 10 , 20 ));
510
+ check_equal (r[3 ]->geometry (), rect2d::fromXywh (13 , -43 , 10 , 20 ));
511
+
512
+ cout << __PRETTY_FUNCTION__ << " : ok" << endl;
513
+
514
+ root->destroy ();
515
+ }
516
+
334
517
int main (int argc, char **argv)
335
518
{
336
519
tst_layoutnode_properties ();
337
520
tst_layoutnode_horizontal_grid ();
521
+ tst_layoutnode_vertical_grid ();
338
522
339
523
return 0 ;
340
524
}
0 commit comments