comparison Framework/Widgets/LayerWidget.cpp @ 78:93b917b02fee wasm

fix
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 24 May 2017 21:20:06 +0200
parents f5f54ed8d307
children c75377306598
comparison
equal deleted inserted replaced
77:f5f54ed8d307 78:93b917b02fee
89 bool IsComplete() const 89 bool IsComplete() const
90 { 90 {
91 return countMissing_ == 0; 91 return countMissing_ == 0;
92 } 92 }
93 93
94 bool IsSamePlane(const SliceGeometry& slice,
95 double sliceThickness)
96 {
97 return slice_.IsSamePlane(slice, sliceThickness);
98 }
99
100 bool RenderScene(CairoContext& context, 94 bool RenderScene(CairoContext& context,
101 const ViewportGeometry& view) 95 const ViewportGeometry& view)
102 { 96 {
103 bool fullQuality = true; 97 bool fullQuality = true;
104 98
275 269
276 assert(layers_.size() == styles_.size()); 270 assert(layers_.size() == styles_.size());
277 renderer->SetLayerStyle(styles_[index]); 271 renderer->SetLayerStyle(styles_[index]);
278 272
279 if (currentScene_.get() != NULL && 273 if (currentScene_.get() != NULL &&
280 currentScene_->IsSamePlane(slice.GetGeometry(), sliceThickness_)) 274 slice.ContainsPlane(currentScene_->GetSlice()))
281 { 275 {
282 currentScene_->SetLayer(index, tmp.release()); 276 currentScene_->SetLayer(index, tmp.release());
283 NotifyChange(); 277 NotifyChange();
284 } 278 }
285 else if (pendingScene_.get() != NULL && 279 else if (pendingScene_.get() != NULL &&
286 pendingScene_->IsSamePlane(slice.GetGeometry(), sliceThickness_)) 280 slice.ContainsPlane(pendingScene_->GetSlice()))
287 { 281 {
288 pendingScene_->SetLayer(index, tmp.release()); 282 pendingScene_->SetLayer(index, tmp.release());
289 283
290 if (currentScene_.get() == NULL || 284 if (currentScene_.get() == NULL ||
291 pendingScene_->IsComplete()) 285 pendingScene_->IsComplete())
296 } 290 }
297 } 291 }
298 292
299 293
300 LayerWidget::LayerWidget() : 294 LayerWidget::LayerWidget() :
301 started_(false), 295 started_(false)
302 sliceThickness_(1)
303 { 296 {
304 SetBackgroundCleared(true); 297 SetBackgroundCleared(true);
305 } 298 }
306 299
307 300
356 349
357 NotifyChange(); 350 NotifyChange();
358 } 351 }
359 352
360 353
361 void LayerWidget::SetSlice(const SliceGeometry& slice, 354 void LayerWidget::SetSlice(const SliceGeometry& slice)
362 double sliceThickness)
363 { 355 {
364 if (!slice_.IsSamePlane(slice, 100.0 * std::numeric_limits<double>::epsilon())) 356 if (!slice_.IsSamePlane(slice, 100.0 * std::numeric_limits<double>::epsilon()))
365 { 357 {
366 if (currentScene_.get() == NULL || 358 if (currentScene_.get() == NULL ||
367 (pendingScene_.get() != NULL && 359 (pendingScene_.get() != NULL &&
369 { 361 {
370 currentScene_ = pendingScene_; 362 currentScene_ = pendingScene_;
371 } 363 }
372 364
373 slice_ = slice; 365 slice_ = slice;
374 sliceThickness_ = sliceThickness;
375 ResetPendingScene(); 366 ResetPendingScene();
376 367
377 if (started_) 368 if (started_)
378 { 369 {
379 for (size_t i = 0; i < layers_.size(); i++) 370 for (size_t i = 0; i < layers_.size(); i++)