Commit Graph
126 Commits
Author SHA1 Message Date
Kristian Bendiksen c87fff08d6 Revert "#14714 Add opt-in native window for 3D viewers"
This reverts commit aa3ec82e1c.
2026-09-11 08:15:21 -04:00
Magne Sjaastad aa3ec82e1c #14714 Add opt-in native window for 3D viewers
Two 3D views docked in the same tab group render black after switching
between tabs. Tracing the render path shows it completes correctly every
time: the offscreen FBO is complete, no OpenGL context is created or
destroyed on a tab switch, and the blit lands on the widget's own default
framebuffer in the widget's own context. The pixels are produced and never
reach the screen.

Without a native window a QOpenGLWidget is composited into the top-level
backing store, and that composition is not refreshed when the dock system
hides one viewer and shows another in the same tab group. A native surface
skips compositing, and the black view goes away.

On Wayland a native child widget becomes a subsurface with its own
rendering and stacking problems, so this is opt-in rather than default.
Set RESINSIGHT_ENABLE_NATIVE_GL_WIDGET=1 to enable it.

cafViewer now links cafPdmCore so the viewer can log through caf, which is
bridged to RiaLogging and therefore reaches the ResInsight log file.
2026-09-10 08:22:50 -04:00
Magne Sjaastad ccbb432b5c #14420 Viewer: Guard against non-finite near/far clipping planes 2026-07-31 08:35:50 +02:00
Magne Sjaastad 8005dc772f #13977 Viewer: Fix perspective clipping of very small models
Remove the hard floor against m_defaultPerspectiveNearPlaneDistance
(0.05) when computing the perspective near plane from the closest
bounding-box corner. For very small models the closest corner can sit
within that distance, and clamping pushed the near plane past the
model so it was clipped entirely; parallel projection was unaffected
because its near plane scales directly with the bbox.

The zero/negative guard at the end of the block is the actual safety
net, and the maxFarNearRatio constraint still protects depth-buffer
precision when geometry spans both very close and very distant
corners.
2026-05-08 10:28:00 +02:00
Magne Sjaastad 5239a4d378 #13930 Viewer: Guard against empty frustum in per-model culling
Camera::computeViewFrustum() returns an empty Frustum if the projection
matrix is degenerate (e.g., on the first paint after project open, before
a valid near/far has been set). The per-model culling introduced by
82c7172c1 calls Frustum::isOutside() unconditionally, which asserts when
the frustum has fewer than 6 planes. Skip culling when the frustum is
not fully populated; all valid models then contribute to the near/far
calculation, matching the pre-82c7172c1 behaviour.
2026-04-30 21:50:31 +02:00
Magne Sjaastad 82c7172c1a Viewer: Improve near/far clipping plane calculation
Iterate per-model bounding boxes and skip models outside the camera frustum to prevent distant off-screen objects from inflating the far plane. This improves depth buffer precision and reduces z-fighting.

Enforce a maximum far/near ratio of 3000.0 by pushing the near plane forward if necessary. Additionally, refine the near plane adjustment when zooming into a point of interest to prevent geometry clipping.
2026-03-16 09:02:41 +01:00
Magne Sjaastad 544e9eedd9 Improve spell checker using codespell
* Configures automated spell checking with codespell
Adds GitHub workflows and configuration files for automated spell checking using `codespell`.

This includes:
- A workflow for checking pull requests and preventing new typos
- A workflow for automatically fixing typos in the main codebase
- Configuration files for `codespell` to ignore specific terms and file types
- Documentation on how to use and configure the spell checking workflows.

* Corrects minor spelling and grammar errors.
2025-11-19 10:25:32 +01:00
Magne Sjaastad 892d7251ee Update to clang-format-18
Update to clang-format-18
Code changes related to clang-format-18
2025-04-11 18:34:32 +02:00
Magne Sjaastad ca0179d118 Remove obsolete CMake statements
When using modern CMake and Qt6 we can remove obsolete source_group() and QT_MOC_HEADERS
2025-01-28 07:01:42 +01:00
jonjenssen dbea0e2593 OpenGL DPI scaling support (#11883)
Scale opengl width/height based on primary screen DPI scaling.
2024-11-15 12:12:59 +01:00
Magne Sjaastad 2814b92055 Qt6: Adjustments (#11804)
* Qt6: Avoid insertWidget, use addWidget
In Qt6, the insertWidget function checks if the index parameter is valid based on current widgets present in the layout. This is error prone, and use addWidget to avoid manual counting of index.

* Disable use of Qt keyword foreach

* Replace use of QRegExp with QRegularExpression
Replace use of QRegExp with QRegularExpression
Remove dependency on qt5compat module
Simplify an expression based on review

* Remove Qt5 ifdefs

* Guard access out of bounds seen in debug build

* Avoid reuse of string variable

* Disconnect all signals from the QOpenGLContext
The call stack when this assert happens indicates that there are more signals to be disconnected from the object. Crash is fixed by disconnecting all signals.

Assert seen in debug build:

ASSERT failure in caf::Viewer: "Called object is not of the correct type (class destructor may have already run)", file C:\Qt\6.6.3\msvc2019_64\include\QtCore/qobjectdefs_impl.h, line 130

* Fix issue related to delete of a linked view
Guard null pointer use in view linker. Remove complicated cleanup in destructor in Rim3dVew.
2024-10-28 13:09:18 +01:00
Magne Sjaastad ca4a7b9000 Remove obsolete code related to Qt5
* Remove bundling of openssl1.1
* Remove obsolete compile flags
* Remove use of obsolete RimCommandObject
* Use QColor::isValidColorName
QColor::isValidColor is deprecated in Qt 6.6, QColor::isValidColorName was introduced in 6.4

* Make sure debug DLLs are copied when required
* Remove Qt5 from AppFwk
* Remove obsolete copy of Qt  DLLs
2024-10-07 10:16:48 +02:00
Kristian Bendiksen 835cf4a53c Qt6: Fix QMouseEvent.x() and .y() deprecation. 2024-10-04 15:27:43 +02:00
212f5bf5ae Add support for Qt6 and disable Qt5
Required changes to use Qt6 and disable support for Qt5. There are still some adjustments related to Qt6 to be done, but these changes are not required to make Qt6 compile on relevant systems.

* Build system changes Qt6
* Override enterEvent
* Update QKeySequence
* QtChart changes
* Use QScreen to instepct dotsPerInch
* Add app->quit()
* Required updates for code related to QString
* Use RiaQDateTimeTools
* Required changes related to regular expressions
* Support compile on Qt  < 6.5
When version < 6.5 is found, qt_generate_deploy_app_script() is disabled. Compilation of ResInsight will work, but the install target will be incomplete.
* Octave: add missing header.
* Qt Advanced Docking: force Qt6 where both Qt5 and Qt6 is available.

---------

Co-authored-by: magnesj <1793152+magnesj@users.noreply.github.com>
Co-authored-by: Kristian Bendiksen <kristian.bendiksen@gmail.com>
2024-09-30 11:21:17 +02:00
Magne Sjaastad c759a11888 Cmake cleanup and selected Qt6 adjustments
- Avoid warning using newer CMake by removing obsolete cmake requirements in sub projects
- Several adjustments preparing for Qt6
2024-04-17 15:06:51 +02:00
Eirik Marthinsen ea27e952f5 Prepare building with Qt6
* Fwk: Switch from delta to angleDelta for QWheelEvent
* Fwk: Add option to build more libraries with Qt6
* Fwk: Remove unused includes of QtOpenGL
* Fwk: Don't forward declare QStringList
* Fwk: Store cursor position in QPoint variable
* Fwk: Use QWheelEvent::position in Qt6
2024-03-06 08:32:27 +01:00
Magne Sjaastad 8e13d6c528 Use modern OpenGL Qt widget
Use cvfqt::OpenGLWidget and make required changes
- move code from paintEvent to paintGL to make grabFrambuffer work
- remove obsolete sharedWidget
- implement onWidgetOpenGLReady and initialize rendering in this function as OpenGL capabilities is required
- simplify snapshotImage to use grabFramebuffer

Fix missing include
2024-02-07 10:07:18 +01:00
10a579fac5 Add support in VizFwk for using QOpenGLWidget derived view widget (#11091)
* Refactor to deprecate existing QGLWidget derived widget

Renamed cvfqt::OpenGLWidget to cvfqt::GLWidget_deprecated
Renamed cvfqt::CvfBoundQGLContext to cvfqt::CvfBoundQGLContext_deprecated
Renamed cvfqt::OpenGLContext to cvfqt::OpenGLContext_QGLContextAdapter_deprecated
Added cvf::OpenGLUtils

* Marked existing QtMinimal and QtMultiView as deprecated

* Additional deprecated renaming

* Added missing type

* Added missing include

* Fixes to get snippets up and running before introducing new OpenGL widgets

* Added class for OpenGLInfo

* Refactored cvf::OpenGLContext and cvf::OpenGLContextGroup, and added first cut impl of cvfqt::GLWidget and cvfqt::OpenGLWidget

* Removed unused TriggerTBBCopy.txt

* Initial support for compilation on Qt6

* Added QtMinimal and QtMinimal_GLWidget

* Refactored SnippetRunner to handle utilize cvfqt::OpenGLWidget

* Removed unused code

* Fixes and workarounds from compiling on linux

* Fixes by clang-format (#11056)

Co-authored-by: sigurdp <sigurdp@users.noreply.github.com>

* Added QTMultiView test app based on cvfqt::OpenGLWidget

* Removed includes of QOpenGLFunctions

* Modifications for compile with Qt6

* Added test bench for cvfqt::OpenGLWidget

* Minor fixes

* Force to use Qt5

* Fixes by cmake-format

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: sigurdp <sigurdp@users.noreply.github.com>
2024-01-23 08:48:05 +01:00
Kristian Bendiksen 98796b0dd9 #10649 Fwk: Use collection.empty() instead of comparing with size 2023-09-27 10:16:37 +02:00
Magne Sjaastad 952e766c2f Update clang-format.yml (#10068)
* Update to clang-format-15
Removed two custom .clang-format files in subfolders of AppFwk

* Fixes by clang-format
2023-04-13 07:05:53 +02:00
Magne Sjaastad d23c6b4bb6 Janitor: Several code hygiene adjustments (#9981)
* Include all libraries in APP_FWK_LIBRARIES
* Several fixes detected by Static Code Analysis
* Remove unused code
* Add .clang.tidy
* Use QElapsedTimer
* Use horizontalAdvance
* Avoid | between enum of different classes
* Avoid illegal character
* Renaming and reorder of constructor initialization
2023-03-23 15:49:06 +01:00
Magne Sjaastad 583c248cf9 Janitor issues
* Use horizontalAdvance
* Remove unused code
* Hide some warnings from Qt code
* Remove message for _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
* Use CMP0077 NEW
* Move roff libraries to folder Thirdparty
* avoid operator()==
* Remove cmake_minimum_required and set version to 3.15
2023-01-24 12:29:27 +01:00
Magne Sjaastad dfa1bc2cd0 Some fixes for new gcc/clang
Minor fixes for newer gcc/clang. These issues were seen when using ubuntu-latest (Ubuntu 22.04) on Github Actions.
2022-11-25 08:59:10 +01:00
Magne Sjaastad 806a149809 Fix several deprecation warnings (#8657)
* Use constructor instead of nullptr for WindowFlags
* Use constructor instead of nullptr for Alignment
* Disable deprecation warning for QProcess
* Add string split method to RaTextStringTools
* Add caf.cpp used to manage Qt function deprecations
* Use position()
2022-03-11 13:24:01 +01:00
Magne Sjaastad 2d2bf0bbc7 CMake : Improve handling of compiler flags (#8486)
#8478 Code cleanup to fix some warnings

Several adjustments to improve the specification and usage of compile flags.
2022-01-26 10:08:28 +01:00
Magne Sjaastad 638f926429 cmake-format: Allow dangling parenthesis 2021-09-01 08:13:16 +02:00
Magne Sjaastad 3c07989c51 Janitor : Remove obsolete code related to Qt 4 2021-02-22 13:37:05 +01:00
github-actions[bot] 223fe756fe Fixes by cmake-format (#6874) 2020-10-30 12:31:16 +01:00
Gaute Lindkvist 069b427d10 Require CMake 3.12 2020-10-20 11:05:10 +02:00
Gaute Lindkvist f7aed637f8 Require CMake 3.6 2020-10-20 11:05:10 +02:00
Magne Sjaastad 2901ad2c54 #6398 System : Remove cotire 2020-08-29 10:30:56 +02:00
Magne Sjaastad bdc536dfc4 #6106 Apply clang-format on AppFwk 2020-06-19 08:00:01 +02:00
Magne Sjaastad 4b372b438e System : Remove support for Qt4 2020-04-24 11:40:22 +02:00
Magne Sjaastad 4e3a894464 #5370 Unity Build : Add config for AppFwk 2020-01-23 13:37:29 +01:00
Jacob Støren c27c19ce96 caf::Viewer: Add inComparisonView option to isAnimationActive
#4994 preparations
2019-11-08 10:40:37 +01:00
Jacob Støren 904808394b caf::Viewer: Maintain a flag telling if we have an active comparison view.
Set a custom widget property to communicate it to PdmUiSelection3dEditorVisualizer
Add method to specifically get the Ray intersect speck from each rendering
2019-11-06 14:13:01 +01:00
Jacob Støren c6e4641725 caf::Viewer: Avoid updating boundingboxes when static models are not removed 2019-11-05 09:30:58 +01:00
Jacob Støren ed54ccbd01 #4971 Fix Background color in comparison view is always the default color 2019-11-04 10:01:40 +01:00
Jacob Støren 720c83d2e3 caf::Viewer: Fixed linux warnings and a bogus comparison 2019-11-01 15:57:03 +01:00
Jacob Støren e62645341c caf::Viewer: Add method to get correct ray definition when it is inside comparison view 2019-11-01 15:57:03 +01:00
Jacob Støren 016f26725a #4862 Lock scale Z in comparison view to follow the main view.
#4858 Make timestep independent in comparison view. Make Linked Views timestep linking work
2019-10-22 13:39:18 +02:00
Jacob Støren 3f203b808b AppFwk: Viewer: Fix missing nearplane adjustments in comparison view 2019-10-17 15:02:38 +02:00
Jacob Støren e3dc32bd71 #4857 AppFwk: Add handling of comparison view to the 3d navigation policies 2019-10-17 15:02:38 +02:00
Jacob Støren d438158691 #4857 AppFwk: Handle picking in the comparison part of the view 2019-10-17 15:02:38 +02:00
Jacob Støren 468cea28bc AppFwk: Add comparison view support to the Viewer.
Add a separate overlay rendering to make rendering of overlay items more flexible and to support the comparison view.
Add control of the Rendering Enable mask
2019-10-11 14:52:49 +02:00
Jacob Støren f5f8df43a1 caf: Add support for user controlled fixed rotation sensitivity in trackball based navigations 2019-10-09 19:27:13 +02:00
Magne Sjaastad b70c88330a #4508 Qt5 : Crash when taking snapshot of MDI window 2019-06-28 13:37:37 +02:00
Magne Sjaastad d108e1f354 AppFwk : Guard use of timestamp() function introduced in Qt5 2019-06-25 18:02:47 +02:00
Jacob Støren 2930d41521 AppFwk: Fix of Qt5 OpenGL related problems: Offset + Context deletion.
Added option to control the direction of the parallel projection headlight
Added optional visualization of point of interest to caf::Viewer
2019-06-25 17:01:38 +02:00
Jacob Støren 936d2e122d AppFwk: Added optional adaptive rotation sensitivity to CAD and Ceetron Plus navigation policies 2019-06-25 16:59:53 +02:00