Mercurial > hg > orthanc-stone
comparison Framework/Scene2D/Scene2D.cpp @ 654:462a5074f914
Turned the scene into an observable to be able to dynamically react to
scene to canvas transform changes --> now the handles and angle measure
adornments are immune to zoom changes
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Tue, 14 May 2019 13:51:00 +0200 |
parents | b4fe9642e83b |
children | 059e1fd05fd6 |
comparison
equal
deleted
inserted
replaced
653:4eccf698e52f | 654:462a5074f914 |
---|---|
73 return identifier_; | 73 return identifier_; |
74 } | 74 } |
75 }; | 75 }; |
76 | 76 |
77 | 77 |
78 Scene2D::Scene2D(const Scene2D& other) : | 78 Scene2D::Scene2D(const Scene2D& other) |
79 sceneToCanvas_(other.sceneToCanvas_), | 79 : IObservable(other.GetBroker()) |
80 canvasToScene_(other.canvasToScene_), | 80 , sceneToCanvas_(other.sceneToCanvas_) |
81 layerCounter_(0) | 81 , canvasToScene_(other.canvasToScene_) |
82 , layerCounter_(0) | |
82 { | 83 { |
83 for (Content::const_iterator it = other.content_.begin(); | 84 for (Content::const_iterator it = other.content_.begin(); |
84 it != other.content_.end(); ++it) | 85 it != other.content_.end(); ++it) |
85 { | 86 { |
86 content_[it->first] = new Item(it->second->GetLayer().Clone(), layerCounter_++); | 87 content_[it->first] = new Item(it->second->GetLayer().Clone(), layerCounter_++); |
218 // Make sure the transform is invertible before making any change | 219 // Make sure the transform is invertible before making any change |
219 AffineTransform2D inverse = AffineTransform2D::Invert(transform); | 220 AffineTransform2D inverse = AffineTransform2D::Invert(transform); |
220 | 221 |
221 sceneToCanvas_ = transform; | 222 sceneToCanvas_ = transform; |
222 canvasToScene_ = inverse; | 223 canvasToScene_ = inverse; |
223 } | 224 BroadcastMessage(SceneTransformChanged(*this)); |
224 | 225 } |
225 | 226 |
226 void Scene2D::FitContent(unsigned int canvasWidth, | 227 void Scene2D::FitContent(unsigned int canvasWidth, |
227 unsigned int canvasHeight) | 228 unsigned int canvasHeight) |
228 { | 229 { |
229 Extent2D extent; | 230 Extent2D extent; |