Mercurial > hg > orthanc-stone
diff Samples/Sdl/TrackerSampleApp.h @ 656:002d9562c8f5
Added support to DISABLE legacy scaling in SDL Windows (only in WIN32... this
might also be needed on macos and GNU/Linux ?) + fixed text info overlay pos
for angle measure (this requires the app to be aware of the compositor)
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Tue, 14 May 2019 16:54:13 +0200 |
parents | 462a5074f914 |
children | cb3b76d16234 |
line wrap: on
line diff
--- a/Samples/Sdl/TrackerSampleApp.h Tue May 14 13:51:32 2019 +0200 +++ b/Samples/Sdl/TrackerSampleApp.h Tue May 14 16:54:13 2019 +0200 @@ -48,7 +48,8 @@ const char* MeasureToolToString(size_t i); - static const unsigned int FONT_SIZE = 32; + static const unsigned int FONT_SIZE_0 = 32; + static const unsigned int FONT_SIZE_1 = 24; class Scene2D; @@ -61,22 +62,32 @@ , currentTool_(GuiTool_Rotate) , scene_(broker) { + scene_.RegisterObserverCallback( + new Callable<TrackerSampleApp, Scene2D::SceneTransformChanged> + (*this, &TrackerSampleApp::OnSceneTransformChanged)); + TEXTURE_2x2_1_ZINDEX = 1; TEXTURE_1x1_ZINDEX = 2; TEXTURE_2x2_2_ZINDEX = 3; LINESET_1_ZINDEX = 4; LINESET_2_ZINDEX = 5; - INFOTEXT_LAYER_ZINDEX = 6; + FLOATING_INFOTEXT_LAYER_ZINDEX = 6; + FIXED_INFOTEXT_LAYER_ZINDEX = 7; } void PrepareScene(); + void Run(); void DisableTracker(); Scene2D& GetScene(); - void HandleApplicationEvent( - const OpenGLCompositor& compositor, - const SDL_Event& event); + void HandleApplicationEvent(const SDL_Event& event); + + /** + This method is called when the scene transform changes. It allows to + recompute the visual elements whose content depend upon the scene transform + */ + void OnSceneTransformChanged(const Scene2D::SceneTransformChanged& message); private: void SelectNextTool(); @@ -86,8 +97,7 @@ FlexiblePointerTrackerPtr CreateSuitableTracker( const SDL_Event& event, - const PointerEvent& e, - const OpenGLCompositor& compositor); + const PointerEvent& e); void TakeScreenshot( const std::string& target, @@ -102,10 +112,12 @@ void Redo(); private: - void DisplayInfoText(const PointerEvent& e); + void DisplayFloatingCtrlInfoText(const PointerEvent& e); + void DisplayInfoText(); void HideInfoText(); private: + std::auto_ptr<OpenGLCompositor> compositor_; /** WARNING: the measuring tools do store a reference to the scene, and it paramount that the scene gets destroyed AFTER the measurement tools. @@ -119,21 +131,16 @@ std::vector<MeasureToolPtr> measureTools_; //static const int LAYER_POSITION = 150; -#if 0 - int TEXTURE_2x2_1_ZINDEX = 12; - int TEXTURE_1x1_ZINDEX = 13; - int TEXTURE_2x2_2_ZINDEX = 14; - int LINESET_1_ZINDEX = 50; - int LINESET_2_ZINDEX = 100; - int INFOTEXT_LAYER_ZINDEX = 150; -#else + + int TEXTURE_2x2_1_ZINDEX; int TEXTURE_1x1_ZINDEX; int TEXTURE_2x2_2_ZINDEX; int LINESET_1_ZINDEX; int LINESET_2_ZINDEX; - int INFOTEXT_LAYER_ZINDEX; -#endif + int FLOATING_INFOTEXT_LAYER_ZINDEX; + int FIXED_INFOTEXT_LAYER_ZINDEX; + GuiTool currentTool_; };