Mercurial > hg > orthanc-stone
comparison Framework/Widgets/WorldSceneWidget.cpp @ 331:7ccf919faff0 am-2
simplify WorldSceneWidget
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 17 Oct 2018 15:18:48 +0200 |
parents | 7a364e44fbb4 |
children | 50e5ec1bdd46 |
comparison
equal
deleted
inserted
replaced
330:7a364e44fbb4 | 331:7ccf919faff0 |
---|---|
174 ViewportGeometry view = GetView(); | 174 ViewportGeometry view = GetView(); |
175 view.ApplyTransform(context); | 175 view.ApplyTransform(context); |
176 | 176 |
177 double sceneX, sceneY; | 177 double sceneX, sceneY; |
178 MapMouseToScene(sceneX, sceneY, view, x, y); | 178 MapMouseToScene(sceneX, sceneY, view, x, y); |
179 RenderSceneMouseOver(context, view, sceneX, sceneY); | 179 |
180 if (interactor_) | |
181 { | |
182 interactor_->MouseOver(context, *this, view, sceneX, sceneY, GetStatusBar()); | |
183 } | |
180 } | 184 } |
181 | 185 |
182 | 186 |
183 void WorldSceneWidget::SetSceneExtent(ViewportGeometry& view) | 187 void WorldSceneWidget::SetSceneExtent(ViewportGeometry& view) |
184 { | 188 { |
230 { | 234 { |
231 double sceneX, sceneY; | 235 double sceneX, sceneY; |
232 MapMouseToScene(sceneX, sceneY, view_, x, y); | 236 MapMouseToScene(sceneX, sceneY, view_, x, y); |
233 | 237 |
234 // asks the Widget Interactor to provide a mouse tracker | 238 // asks the Widget Interactor to provide a mouse tracker |
235 std::auto_ptr<IWorldSceneMouseTracker> tracker | 239 std::auto_ptr<IWorldSceneMouseTracker> tracker; |
236 (CreateMouseSceneTracker(view_, button, sceneX, sceneY, modifiers)); | 240 |
237 | 241 if (interactor_) |
242 { | |
243 tracker.reset(interactor_->CreateMouseTracker(*this, view_, button, modifiers, sceneX, sceneY, GetStatusBar())); | |
244 } | |
245 | |
238 if (tracker.get() != NULL) | 246 if (tracker.get() != NULL) |
239 { | 247 { |
240 return new SceneMouseTracker(view_, tracker.release()); | 248 return new SceneMouseTracker(view_, tracker.release()); |
241 } | 249 } |
250 | |
242 //TODO: allow Interactor to create Pan & Zoom | 251 //TODO: allow Interactor to create Pan & Zoom |
243 switch (button) | 252 switch (button) |
244 { | 253 { |
245 case MouseButton_Middle: | 254 case MouseButton_Middle: |
246 return new PanMouseTracker(*this, x, y); | 255 return new PanMouseTracker(*this, x, y); |
247 | 256 |
248 case MouseButton_Right: | 257 case MouseButton_Right: |
249 return new ZoomMouseTracker(*this, x, y); | 258 return new ZoomMouseTracker(*this, x, y); |
250 | 259 |
251 default: | 260 default: |
252 return NULL; | |
253 } | |
254 } | |
255 | |
256 | |
257 void WorldSceneWidget::RenderSceneMouseOver(CairoContext& context, | |
258 const ViewportGeometry& view, | |
259 double x, | |
260 double y) | |
261 { | |
262 if (interactor_) | |
263 { | |
264 interactor_->MouseOver(context, *this, view, x, y, GetStatusBar()); | |
265 } | |
266 } | |
267 | |
268 IWorldSceneMouseTracker* WorldSceneWidget::CreateMouseSceneTracker(const ViewportGeometry& view, | |
269 MouseButton button, | |
270 double x, | |
271 double y, | |
272 KeyboardModifiers modifiers) | |
273 { | |
274 if (interactor_) | |
275 { | |
276 return interactor_->CreateMouseTracker(*this, view, button, modifiers, x, y, GetStatusBar()); | |
277 } | |
278 else | |
279 { | |
280 return NULL; | 261 return NULL; |
281 } | 262 } |
282 } | 263 } |
283 | 264 |
284 | 265 |