Mercurial > hg > orthanc-stone
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++) |