occt: master 879768fb

Author Committer Branch Timestamp Parent
kgv smoskvin master 2022-04-11 20:00:39 master 179fb346
Affected Issues  0032886: Visualization, V3d_View - introduce interface for creating a subview
Changeset 0032886: Visualization, V3d_View - introduce interface for creating a subview

V3d_View/Graphic3d_CView pair has been extended to define subview within the other V3d_View instance.
The initialization is done in form of V3d_View::SetWindow() taking parent V3d_View instance on input.

Subview definition includes dimensions defined as a fraction of a parent view and offset from a corner.
This scheme allows splitting window into several subviews automatically occupying entire viewport,
like splitting window into two vertial subviews (100%x50% + 100%x50%),
three horizontal subviews (33%x100% + 30%x100% + 30%x100%),
1 + 2 stacked subviews (50%x100% + 50%x50% + 50%x50%),
as well as thumbnail-alike subviews displayed on top of another larger view.

OpenGl_View::Redraw() blits content of subviews into the window within immediate redraw step.

AIS_ViewController::FlushViewEvents() has been extended
to re-calculate mouse input into local subview coordinates.
AIS_ViewController::handleViewRedraw() first redraws subviews and then parent views.
Introduced new callback AIS_ViewController::OnSubviewChanged()
to switch input focus to another subview on mouse click,
implemented by ViewerTest_EventManager (has to be done at application level).

vinit command has been extended with parameters -subview and -parent to create a subview.
In addition, view dimension arguments now can be defined as a fraction of screen size instead of pixels.
mod - src/AIS/AIS_ViewController.cxx Diff File
mod - src/AIS/AIS_ViewController.hxx Diff File
mod - src/Aspect/Aspect_Window.hxx Diff File
mod - src/D3DHost/D3DHost_View.cxx Diff File
mod - src/D3DHost/D3DHost_View.hxx Diff File
mod - src/DPrsStd/DPrsStd_AISViewerCommands.cxx Diff File
mod - src/Graphic3d/Graphic3d_CView.cxx Diff File
mod - src/Graphic3d/Graphic3d_CView.hxx Diff File
mod - src/OpenGl/OpenGl_GraphicDriver.cxx Diff File
mod - src/OpenGl/OpenGl_GraphicDriver.hxx Diff File
mod - src/OpenGl/OpenGl_View.cxx Diff File
mod - src/OpenGl/OpenGl_View.hxx Diff File
mod - src/OpenGl/OpenGl_Window.cxx Diff File
mod - src/OpenGl/OpenGl_Window.hxx Diff File
mod - src/OpenGl/OpenGl_Window_1.mm Diff File
mod - src/V3d/V3d_View.cxx Diff File
mod - src/V3d/V3d_View.hxx Diff File
mod - src/V3d/V3d_Viewer.cxx Diff File
mod - src/V3d/V3d_Viewer.hxx Diff File
mod - src/ViewerTest/ViewerTest.cxx Diff File
mod - src/ViewerTest/ViewerTest.hxx Diff File
mod - src/ViewerTest/ViewerTest_AutoUpdater.cxx Diff File
mod - src/ViewerTest/ViewerTest_EventManager.cxx Diff File
mod - src/ViewerTest/ViewerTest_EventManager.hxx Diff File
mod - src/ViewerTest/ViewerTest_OpenGlCommands.cxx Diff File
mod - src/ViewerTest/ViewerTest_ViewerCommands.cxx Diff File
mod - src/XDEDRAW/XDEDRAW.cxx Diff File
add - tests/opengl/data/general/multiview1 Diff File
add - tests/opengl/data/general/multiview1ssaa Diff File
add - tests/opengl/data/general/multiview2 Diff File
add - tests/opengl/data/general/multiview3 Diff File
add - tests/opengl/data/general/multiview4 Diff File
add - tests/opengl/data/general/multiview5 Diff File
add - tests/opengl/data/general/multiview6 Diff File