comparison Framework/Widgets/LayerWidget.cpp @ 109:53bd9277b025 wasm

using the Extent class
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 14 Jun 2017 15:34:08 +0200
parents 474d85e76499
children 53025eecbc95
comparison
equal deleted inserted replaced
108:37d4ae7052a5 109:53bd9277b025
230 } 230 }
231 } 231 }
232 } 232 }
233 233
234 234
235 void LayerWidget::GetSceneExtent(double& x1, 235 Extent LayerWidget::GetSceneExtent()
236 double& y1,
237 double& x2,
238 double& y2)
239 { 236 {
240 Extent sceneExtent; 237 Extent sceneExtent;
241 238
242 for (size_t i = 0; i < layers_.size(); i++) 239 for (size_t i = 0; i < layers_.size(); i++)
243 { 240 {
246 GetLayerExtent(layerExtent, *layers_[i]); 243 GetLayerExtent(layerExtent, *layers_[i]);
247 244
248 sceneExtent.Union(layerExtent); 245 sceneExtent.Union(layerExtent);
249 } 246 }
250 247
251 if (sceneExtent.IsEmpty()) 248 return sceneExtent;
252 {
253 // Set a default extent of (-1,-1) -> (0,0)
254 x1 = -1;
255 y1 = -1;
256 x2 = 1;
257 y2 = 1;
258 }
259 else
260 {
261 x1 = sceneExtent.GetX1();
262 y1 = sceneExtent.GetY1();
263 x2 = sceneExtent.GetX2();
264 y2 = sceneExtent.GetY2();
265
266 // Ensure the extent is non-empty
267 if (x1 >= x2)
268 {
269 double tmp = x1;
270 x1 = tmp - 0.5;
271 x2 = tmp + 0.5;
272 }
273
274 if (y1 >= y2)
275 {
276 double tmp = y1;
277 y1 = tmp - 0.5;
278 y2 = tmp + 0.5;
279 }
280 }
281 } 249 }
282 250
283 251
284 bool LayerWidget::RenderScene(CairoContext& context, 252 bool LayerWidget::RenderScene(CairoContext& context,
285 const ViewportGeometry& view) 253 const ViewportGeometry& view)