# Category openinventor History

See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
which **must** added in reverse chronological order (newest at the top).
It must **not** be used as a substitute for writing good git commit messages!

-------------------------------------------------------------------------------

## 2024-06-06 Guy Barrand (openinventor-V11-02-01)
- G4OpenInventorQtViewer: Qt6: reparent the G4OpenInventorQtExaminerViewer
  in its own QWidget (and not in the global SoQt::getTopLevelWidget()).
  It permits to restore a goood behaviour of multiple "/vis/open OIQt".
   Handle a "destroyed signal/slot" on the parent QWidget so that
  deleting a viewer deletes also the G4OpenInventorQtExaminerViewer.
   Have the "addInTab" done in the Initialise() method. Clearly the
  existing mechanism done on the G4OpenInventorQtExaminerViewer::afterRealizeHook()
  does not work properly; we see that some "QWidget::show" does not trigger it!
  (This is related to a problem in SoQt itself).
   Have what is done concerning scene graph in the afterRealizeHook()
  done now in some G4OpenInventorQtExaminerViewer::setupSceneGraph(), and call
  this in the Initialise() method.
   Avoid to do an examiner viewer "move/resize" in the Initialise() method,
  it confuses SoQt and we have strange widget rendering behaviour;
  then we let the QTabWidget and SoQt decide of the "move/resize".
   With the upper modifications we have a good behaviour when creating/deleting
  multiple viewers.
- G4OpenInventorQtExaminerViewer: Qt6: then avoid the usage of the afterRealizeHook() logic
  and have a setupSceneGraph() method called from the G4OpenInventorQtViewer::Intialise().
- G4OpenInventorQtExaminerViewer: Qt6: avoid to map at startup the "Bookmark AuxWindow dialog",
  it is cumbersome; but have this done when asking to create a new bookmark from the
  dedicated "app button" of each viewer. Moreover, like that, it permits to map again
  the dialog in case someone closed it with the mouse.
- G4OpenInventorQtExaminerViewer: Qt6: enforce, even on macOS, each viewer QMenuBar triggered
  from a new "app button" of each viewer. The today logic, especially on macOS, is not adapted
  to the case of multiple viewers. Then have the QMenuBar on an "app button" and not as parent
  of the examiner viewer "getRenderAreaWidget". Like that it let free the full area of the render area.
  It works nicely on all platforms. (In fact with the last SoQt working on Qt6, parenting on the
  render area does not work at all on Linux and Windows).
- G4OpenInventorQtExaminerViewer: Qt6: have the "detached logic" in a standalone QDialog.
  Have the title window reflecting the name of the viewer. Have that "closing" induces "destroying",
  else if closing with the mouse, we have a dandling hidden viewer with no way to map it back.
  (I did not find a multiplatform way to get rid of the close button on this detached window).
- G4OpenInventorQtExaminerViewer: Qt6: have "curViewPtName", "viewPtData/viewPtName" on an std::string.
  Having them on "char*" appears to be very crashy. Protect "viewPtIdx" to be sure it
  is in the range of the viewPtList std::vector.
- G4OpenInventorQtExaminerViewer: Qt6 : in case of MT, I put the "viewer->newEvents = true;" done
  on "EndOfRun" instead of "EndOfEvent" since the HookEventProcState (a G4VStateDependent)
  is not called anymore from the master thread in case of MT. This permits to have the
  "set default fly path" done anyway. Note that multiple "/run/beamOn" done within multiple viewers
  looks ok with MT.
- G4OpenInventorQtExaminerViewer: Qt6 : remove unsued methods, fields.

## 2024-01-11 Ben Morgan (openinventor-V11-02-00)
- Make headers of implementation details private.

## 2023-09-05 Ben Morgan (openinventor-V11-01-10)
- Set AUTOMOC property on module when Qt used.

## 2023-08-18 John Allison (openinventor-V11-01-09)
- G4OpenInventor: fix IsUISessionCompatible.
  - An OI driver is not appropriate for a batch session.
    - This is a fix to a mistaker in the  update openinventor-V11-01-07.
    - No longer needs G4UIQt.hh - removed.

## 2023-08-18 Gabriele Cosmo (openinventor-V11-01-08)
- G4OpenInventor: added missing inclusion of G4UIQt.hh header.

## 2023-08-14 John Allison (openinventor-V11-01-07)
- G4OpenInventor: simplify IsUISessionCompatible.
  - Exploit new method, G4UImanager::GetBaseSession (intercoms-V11-01-07).

## 2023-07-03 Ben Morgan (openinventor-V11-01-06)
- Address Coverity reports on uninitialized variables and memory leaks.
  - Reports 98819, 104820, 104827-104830, 104832, 104834-104837, 104840, 104842-104844,
    104846, 104848, 104850, 104851, 104855, 104857-104860.

## 2023-04-27 Ben Morgan (openinventor-V11-01-05)
- Support compilation against Qt5 and Qt6.

## 2023-04-14 John Allison (openinventor-V11-01-04)
- Co-working: visman-V11-01-04, greps-V11-01-03, interfaces-V11-01-11,
  opengl-V11-01-06, vis_toolssg-V11-01-05.
- New Scene Tree Phase 2 - first implementation of a no-frills GUI-side
  - See visualization/management/History for full description.
- Revert earlier changes for the new scene tree.
  - After the introduction of virtual G4VInteractiveSession::UpdateSceneTree
    they are no loner necessary.

## 2023-04-02 Ben Morgan (openinventor-V11-01-03)
- No longer link to QtPrintSupport, which is not used in the toolkit.

## 2023-03-28 John Allison (openinventor-V11-01-02)
- Add code for scene tree.
- G4OpenInventorViewer:
  - Call UpdateGUISceneTree in DrawView.
- G4OpenInventorQtExaminerViewer:
  - Add GetUIQt.
- G4OpenInventorQtViewer:
  - Implement virtual void UpdateGUISceneTree() {
    - if (fUIQt) fUIQt->UpdateSceneTree(fSceneTree);

## 2023-03-22 Ben Morgan (openinventor-V11-01-01)
- Export public compile definitions to indicate availablity of specific drivers. Moves to
  "use on link" model.

## 2023-01-30 Ben Morgan (openinventor-V11-01-00)
- Link to new G4UIcore/UIimplementation modules in place of former G4UIbasic/UIcommon

## 2022-11-25 Gabriele Cosmo (openinventor-V11-00-18)
- Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1.

## 2022-11-06 John Allison (openinventor-V11-00-17)
- Eliminate G4cerr and introduce G4warn.
  - `#define G4warn G4cout`
    - The above is temporary until a genuine G4warn output stream is
      implemented.
  - Change G4cerr to G4warn in all cases.
  - In all except the Xt files, which, I understand are scheduled for
    removal, change G4cout to G4warn in those cases where it is clearly
    an error report or a warning.

## 2022-10-28 John Allison (openinventor-V11-00-16)
- Request kernel visit when cutaway mode changes:
  - G4OpenInventorViewer.cc

## 2022-10-24 Frederick Jones (openinventor-V11-00-15)
- G4OpenInventorQtExaminerViewer.cc: For MacOS only, disabled the mouse
  wheel event handler to fix the trackpad zoom direction issue.
- G4OpenInventorXtExtendedViewer.cc: replaced sprintf by snprintf.

## 2022-10-18 Gabriele Cosmo (openinventor-V11-00-14)
- Fixed compilation warning on gcc-12.

## 2022-10-14 Gabriele Cosmo (openinventor-V11-00-13)
- Replaced use of sprintf() and vsprintf() with snprintf() and vsnprintf()
  respectively, to fix deprecation compilation warnings on macOS-13 SDK.

## 2022-10-07 Gabriele Cosmo (openinventor-V11-00-12)
- Fixed compilation warnings on Intel/icc compiler for deprecated conversion
  of string literal to char* in G4OpenInventorQtExaminerViewer.

## 2022-09-14 John Allison (openinventor-V11-00-11)
- G4OpenInventorViewer.cc:
  - Add check on special mesh rendering option in CompareForKernelVisit.

## 2022-09-03 John Allison (openinventor-V11-00-10)
- Implement special mesh rendering:
  - Use base class `StandardSpecialMeshRendering`.

## 2022-08-31 Gabriele Cosmo (openinventor-V11-00-09)
- Fixed reported Coverity defects for potentially uninitialised variables.

## 2022-07-05 Gabriele Cosmo (openinventor-V11-00-08)
- Fixed compilation error for missing inclusion of G4Types.hh
  in G4OpenInventorTransform3D.hh, induced by recent changes in "global"
  category.

## 2022-05-03 Ben Morgan (openinventor-V11-00-07)
- Preliminary build support for Qt5 and Qt6

## 2022-04-21 Guy Barrand (openinventor-V11-00-06)
- Have G4OpenGLOpenInventorViewer and SoGL2PSAction not using visman/G4gl2ps (but still using the thread safe tools/gl2ps).

## 2022-04-11 Guy Barrand (openinventor-V11-00-05)
- Have G4OpenGLOpenInventorViewer and SoGL2PSAction use the thread safe tools/gl2ps.

## 2022-03-22 Ben Morgan (openinventor-V11-00-04)
- Use geant4_module_sources to add optional sources

## 2022-02-09 Gabriele Cosmo (openinventor-V11-00-03)
- `G4OpenInventorQtExaminerViewer`: Fixed compilation warning on Intel
  compiler for shadowing data.

## 2022-01-28 Ben Morgan (openinventor-V11-00-02)
- Replace `geant4_global_library_target` with direct file inclusion and
  call to `geant4_add_category` to define library build from source modules.

## 2021-12-11 John Allison (openinventor-V11-00-01)
- `G4OpenInventorViewer`: Remove misleading obsolete comment regarding
  kernel visit in the case of a change in vis attribute modifiers.

## 2021-12-10 Ben Morgan (openinventor-V11-00-00)
- Change to new Markdown History format

---

# History entries prior to 11.0

12 November 2021 - Ben Morgan (openinventor-V10-07-06)
- Retire G4VIS_... preprocessor symbols in toolkit build, only required
  by obsolete GNUmake system

8 November 2021 - Ben Morgan (openinventor-V10-07-05)
- Retire G4UI/G4INTY_... preprocessor symbols in toolkit build, only required
  by obsolete GNUmake system

07 June 2021  John Allison  (openinventor-v10-07-04)
- Requires greps-V10-07-07 (new method AddCompound (const G4Mesh&)).
- Requires modeling-V10-07-09 (new class G4Mesh).
- Requires visman-V10-07-10 (new default method and new commands).
- G4OpenInventorViewer.hh:
  o Fix hidden function warning.
- G4OpenInventorViewer.cc:
  o Force kernel visit if special mesh rendering parameters change.

28 May 2021 Ben Morgan (openinventor-V10-07-03)
- Migrate to modular CMake build

14 May 2021 Frederick Jones (openinventor-v10-07-02)
- Minor cleanup and tagged for MR

05 May 2021 Frederick Jones
- Code clean-up of OpenInventorQt classes
- G4OpenInventorViewer.cc,hh:
  o Upgraded the group node sensor to process camera movements,
    thus eliminating the need for the camera sensor.  The node
    sensor receives all camera notifications and is immune to
    changes in the camera type.
- G4OpenInventorQtExaminerViewer:
  o Added event handler for mouse wheel to fix the non-intuitive
    behavior.  Mouse-wheel-forward now zooms/dollys in.
  o Added viewer button to enable the "axis cross" (3d axes)
    feedback mechanism.

30 January 2021 Frederick Jones
- G4OpenInventorQtExaminerViewer
  o For tabbed viewer in UIQt, added a Detach button to
    move the viewer to its own dedicated and resizable
    window on the desktop.

06 January 2021 Frederick Jones (openinventor-v10-07-01)
- G4OpenInventorQtViewer, G4OpenInventorQtExaminerViewer
  o Under UIQt: viewer fails (root node is null) if
    /vis/open/OI command is entered.  Suspected a timing
    problem and moved uiQt->addTabWidget() from G4OIQtViewer
    to G4OIQtExaminerviewer::afterRealizeHook().

08 December 2020 Frederick Jones
- G4OpenInventorQtViewer.hh,cc:
  o Fixed the uiQt->addTabWidget() call with correct arguments
    so that tabbed viewer opens correctly.
  o For UIQt case suppressed the viewer window titling which was
    changing the UI window title.

22 October 2020 John Allison
- Some changes to instantiation and initialisation.
  o G4OpenInventorQtViewer now opens in a tab with correct name.
  o The main window name is left unchanged (it has same name as executable).
  o But the G4OpenInventorQtExaminerViewer still opens in a detached window.

20 October 2020 Frederick Jones (openinventor-v10-06-11)
- Completed all the planned features of the OIQt viewer.
- This Qt based viewer implements all the functionality
  of the older Xt/Xm based OIXE viewer and is ready to
  be used as its replacement.

18 September 2020  John Allison (openinventor-V10-06-10)
- Part of vis-V10-06-07.
- G4OpenInventorViewer.cc:
  o CompareForKernelVisit; Force kernel visit if global parameters change.
    . GlobalMarkerScale and GlobalLineWidthScale.

07 September 2020 Gabriele Cosmo (openinventor-V10-06-09)
- Corrected condition for inclusion of GL headers in SbGL.h.

28 August 2020 Ben Morgan (openinventor-V10-06-08)
- Ensure use of XQuartz/System GL on macOS with SoXt/SoQt
  respectively.

01 June 2020 Ben Morgan (openinventor-V10-06-07)
- Use CMake AUTOMOC to automatically generate and compile Moc
  sources

25 May 2020 Gabriele Cosmo (openinventor-V10-06-06)
- Corrected GNUmakefile after introduction of dependency on G4UIQt.

21 May 2020 Frederick Jones and John Allison (openinventor-V10-06-05)
- Corrections to OIQT viewer and changes for use with Qt UI.

30 April 2020 Gabriele Cosmo (openinventor-V10-06-04)
- Fixed compilation warnings for unused argument/variable in
  G4OpenInventorQtExaminerViewer and G4OpenInventorQt respectively.

22 April 2020 Frederick Jones (openinventor-V10-06-03)
- sources.cmake: Configuration for OIQT Vis driver which is
  orthogonal to OIX and OIXE drivers.

16 April 2020 Ben Morgan (openinventor-V10-06-02)
- Remove Qt4 support

22 January 2020 Ben Morgan (openinventor-V10-06-01)
- Add include paths to Inventor et al to usage requirements on G4OpenInventor
  Inventor does not yet support imported targets, and paths added by
  include_directories are now explicitly removed.
  Fixes Bugzilla 2215

12 December 2019 Ben Morgan (openinventor-V10-06-00)
- Cleanup CMake build, removing obsolete granular library option and
  explicit include_directories.

23rd October 2019 Ben Morgan (openinventor-V10-05-07)
- Remove inclusion of QT_USE_FILE from CMake scripts.
  All usage is now through the qtX_ macros and imported targets

14 June 2019  Gabriele Cosmo (openinventor-V10-05-06)
- Fixed compilation error in G4OpenInventorViewer::CompareForKernelVisit()
  for typo introduced in previous tag...

13 June 2019  John Allison (openinventor-V10-05-05)
- Part of vis-V10-05-20.
- Test number of cloud points for kernel visit.

10 June 2019  John Allison (openinventor-V10-05-04)
- Part of vis-V10-05-19.
- G4OpenInventorXtExaminerViewer.cc and wheelmouse.cc:
  Add #ifdef G4VIS_BUILD_OIX_DRIVER

16 May 2019  Gabriele Cosmo (openinventor-V10-05-03)
- Fixed compilation warning from gcc-9.1 in SoCounterAction for setting
  of name, apparently not allowed in OpenInventor.

18 March 2019  Gabriele Cosmo (openinventor-V10-05-02)
- Corrected typo in comments.

12 March 2019  John Allison (openinventor-V10-05-01)
- Fix compiler warnings about new cloud style.
  Note: this does not yet mean that OI can handle cloud style. In fact
  I think it will render in wireframe if cloud is selected.

11 March 2019  Gabriele Cosmo (openinventor-V10-05-00)
- Fixed typos in printouts in SbPainterPS.

22 August 2018  Gabriele Cosmo (openinventor-V10-04-08)
- sources.cmake: make OIQT driver installation optional when QT is
  selected for CMake configuration (SoQt library is not mandatory
  for Inventor). Requires introduction of GEANT4_USE_INVENTOR_QT flag
  in main CMake module of Geant4 for optional build associated to Qt.
  Corrected paths for Moc sources and added INVENTOR_SOQT_LIBRARY
  to link list.

20 August 2018  John Allison (openinventor-V10-04-07)
- sources.cmake: Fix spelling mistake.

20 August 2018  John Allison (openinventor-V10-04-06)
- sources.cmake: Protected Qt files with if(GEANT4_USE_QT).

19 August 2018  Frederick Jones
- Added missing G4VIS_BUILD_OIQT_DRIVER to G4OpenInventorQt.hh
  and G4OpenInventorQtExaminerViewer.hh.

17 August 2018  John Allison
- G4OpenInventorQtViewer constructor: Initialise fViewer to keep Coverity happy.

11 August 2018  John Allison (openinventor-V10-04-05)
- Consolidate Fred's updates.
- Update sources.cmake for CDash.

15 June 2018  Fred Jones (openinventor-V10-04-03)
- Fixed compilation warnings for casts on gcc-8.1.

28 May 2018  Gabriele Cosmo (openinventor-V10-04-02)
- Fixed compilation error in SoGL2PSAction, induced after last changes in
  visualization.

26 April 2018  John Allison (openinventor-V10-04-01)
- Fix compilation errors.

25 April 2018  John Allison (openinventor-V10-04-00)
- G4OpenInventorViewer::CompareForKernelVisit:
  o Implement comparison for "colour by density".

13 January 2017  Frederick Jones
- G4OpenInventorXtExaminerViewer:
  In lookAtSceneElementCB disabled default height setting for
  ortho camera prior to moveCamera().
  In moveCamera removed unnecessary distance calculation
  for ortho camera and fixed incorrect camera position
  setting to preserve the focal distance.
  Restored focal distance setting to maintain correct
  target point (center of rotation) for perspective camera.

10 January 2017  Fred Jones (openinventor-V10-03-00)
- G4OpenInventorXtExtendedViewer:
  Added viewer button for Wireframe/Solid switching.
  Added workaround to prevent empty second page in
  PS and PDF output (due to superimposed scene).

01 June 2016  Fred Jones (openinventor-V10-02-03)
- G4OpenInventorXtExtendedViewer.hh:
  Removed fPDFButton - not used.  Fixes Coverity warning.

30 May 2016  John Allison (openinventor-V10-02-02)
- G4OpenInventorWin.cc: Fixed dispatching (Guy Barrand, Tom Roberts).
- G4OpenInventorXtViewer.cc, G4OpenInventorWinViewer.cc:
  setTransparencyType(SoGLRenderAction::SORTED_OBJECT_ADD).

27 May 2016  Gabriele Cosmo (openinventor-V10-02-01)
- Fixed compilation warnings on MacOS for conversion to char* in
  G4OpenInventorXtExtendedViewer and G4OpenInventorXtViewer sources.

22 Mar 2016  Gabriele Cosmo (openinventor-V10-02-00)
- Corrected delete statement in G4OpenInventorXtExaminerViewer::sortBookmarksCB().

18 Dec 2015  Frederick Jones
- G4OpenInventorXtExaminerViewer:
  o Designed new icons (XPM) for the "Extended Pick Mode" and
    "Pick Reference Trajectory" buttons.
  o Modified the mouse-over-trajectory output to make it
    more clear.
  o Modifications for Coverity fault 48023 "Resource leak"
  o Modifications for Coverity fault 48027 "Freed internal location"
  o Improved diagnostics for Bookmark file handling.
  o New approach for determining distance along the reference
    path, using element centers instead of bounding boxes.
    Solves problems with spurious bounding box warnings and
    incorrect distance values.
- G4OpenInventorXtExtended & G4OpenInventorXtExtendedViewer
  o Suppressed some unwanted diagnostic output.

30th July 2015  John Allison  (openinventor-V10-01-02)
- G4OpenInventor:
  o Added IsUISessionCompatible.
  o The OI graphics system is not compatible with a batch job.

2nd February 2015  Gabriele Cosmo (openinventor-V10-01-01)
- Fix to sources.cmake script to include missing dependency on external library.

18 Dec 2014  Frederick Jones
- G4OpenInventorViewer & G4OpenInventorXtExtendedViewer:
  o Added viewer menu button and methods for PDF output

5th December 2014  Gabriele Cosmo  (openinventor-V10-01-00)
- Corrected sources.cmake to include missing files:
    G4OpenInventorXtExaminerViewerMessenger.hh
    G4OpenInventorXtExaminerViewerMessenger.cc

13th May 2014  John Allison  (openinventor-V10-00-01)
- Coworks: DAWN-V10-00-02, visman-V10-00-08, opengl-V10-00-05.
- Moved G4VisFeaturesOfOpenInventor from management sub-category.

03 Feb 2014  Gabriele Cosmo  (openinventor-V10-00-00)
- Fixed shadowing compilation warnings in G4OpenInventorXtExaminerViewer.cc.

21 Dec 2013  Frederick Jones
- G4OpenInventorXtExaminerViewer.cc:
  o Adjusted dimensions of viewer aux window.
  o Implemented look-ahead for better tracking of trajectory animation.
  o Implemented mouse-over readout for trajectories.

29th May 2013  John Allison  (openinventor-V09-06-04)
- SoCounterAction.cc:
  o Completed initialisation list in constructor (Coverity warning).

09 April 2013  Frederick Jones
- G4OpenInventorXtExaminerViewer.hh:
  o Removed unneeded assignment operator in struct sceneElement.
    (Coverity warning)

15th March 2013  John Allison  (openinventor-V09-06-03)
- G4OpenInventorXtExaminerViewer.cc:
  o Changed strlcpy back to strncpy.  Fixes SLC5 compilation error.
    (Can't remember why I changed to strlcopy in the first place.)

24th February 2013  John Allison  (openinventor-V09-06-02)
- SbPainterPS:
  o Removed unused fields as warned by new clang compiler.

29th January 2013  John Allison  (openinventor-V09-06-01)
- More Coverity fixes and un-doing of some previous ones.

8th January 2013  John Allison
- G4OpenInventorXtExaminerViewer.cc, G4OpenInventorXtExtendedViewer.cc,
  G4OpenInventorXtViewer.cc, SbPainterPS.cc:
  o Fixes some Coverity warnings.

2nd December 2012  John Allison  (openinventor-V09-06-00)
- Remove NURBS.

17th November 2012  John Allison (openinventor-V09-05-17)
- G4OpenInventorXtExaminerViewer:
  o Reverted to openinventor-V09-05-14 (except small fix for compiler
    warning about uninitialised quantity).
- wheelmouse.cc:
  o Fixed compiler warning about un-used parameter.
- Note: The fix in sources.cmake (openinventor-V09-05-16) is kept for
  possible future development.

5th November 2012  John Allison (openinventor-V09-05-16)
- sources.cmake: Added ${X11_Xpm_LIB} for createPixmapFromXpm on Mac.

02nd November 2012  Frederick Jones (openinventor-V09-05-15)
- G4OpenInventorXtExaminerViewer:
  o Removed dependency on SoXtCursor.h
    This is a Coin3d extension which is incompatible with
    SGI Open Inventor and with old versions of Coin3d.
  o Removed dependency on SoXtInternal.h
    Moved code for createPixmapFromXpm() into the class.
  o Fixed compiler warnings for unused/uninitialized variables.

31st October 2012  John Allison  (openinventor-V09-05-14)
- History:
  o Corrected date!!!

31st October 2012  John Allison  (openinventor-V09-05-13)
- G4OpenInventorXtExaminerViewer.cc/hh:
  o Added License and Disclaimer.

30th October 2012  Frederick Jones
- G4OpenInventorXtExaminerViewer:
  o Fixed shadowed variables (compiler warnings)
  o Corrected unrecoverable zoom-out when switching
    to Perspective camera.
  o Fixed incomplete mouse-over position readout.

18th October 2012  Frederick Jones
- G4OpenInventorXtExtendedViewer:
  o Removed inheritance from G4OpenInventorXtViewer.
  o Now inherits from G4OpenInventorViewer.

17th October 2012  John Allison  (openinventor-V09-05-12)
- G4OpenInventorXtExaminerViewer.cc:
  o Disabled initial auto setting to first viewpoint (FWJ).
- G4OpenInventorXtExtendedViewer
  o Bug fix.  Inherit all except G4OpenInventorXtExaminerViewer* fViewer.
- G4OpenInventorXtViewer:
  o Bug fix.  Was not fully reverted.  None of Fred's stuff remains;
    it's now only in G4OpenInventorXtExtendedViewer.

17th October 2012  John Allison  (openinventor-V09-05-11)
- Encapsulated Fred's code in a new driver, G4OpenInventorXtExtended
  (OIXE).

16 October 2012  Frederick Jones  (openinventor-V09-05-10)
- G4OpenInventorXtExaminerViewer
  o New class implements functional extensions to the
    Xt-based viewer.  A plug-in replacement for
    SoXtExaminerViewer (the standard viewer provided
    with Coin3d).
- G4OpenInventorXtViewer
  o Instantiates G4OpenInventorXtExaminerViewer instead
    of SoXtExaminerViewer.  Added some additional menu items.

7th October 2012  John Allison  (openinventor-V09-05-09)
- G4OpenInventorViewer::CompareForKernelVisit:
  o Added test of VisAttributesModifiers to list checked for kernel visit.

25th September 2012  John Allison (openinventor-V09-05-08)
- G4OpenInventorSceneHandler:
  o Pick up default vis attributes if primitive has none.

13th September 2012  John Allison (openinventor-V09-05-07)
- G4OpenInventorSceneHandler: Fixed text positioning.

8th August 2012  John Allison  (openinventor-V09-05-06)
- G4OpenInventorSceneHandler.cc:
  o Intercepted 2D primitives - JustWarning printed.

3rd July 2012  John Allison  (openinventor-V09-05-05)
- Fixed some Coverity warnings.

8th June 2012  John Allison  (openinventor-V09-05-04)
- Shadow clean.

23rd May 2012  John Allison  (openinventor-V09-05-03)
- Health Check 2012: Migrated (see management/History):
  o G4OpenInventorSceneHandler::ClearStore/ClearTransientStore:
    . Removed call to G4VSceneHandler::ClearStore/ClearTransientStore.

10th April 2012  Pere Mato  (openinventor-V09-05-02)
- G4OOpenInventorWinViewer.cc: Make it work for Win64
  replacing [Get|Set]WindowLong() by [Get|Set]WindowLongPtr() and GWL_USERDATA by GWLP_USERDATA

28th March 2012  John Alliso  (openinventor-V09-05-01)
- Migrated to G4VScenehandler::fObjectTransformation.

3rd January 2012  John Allison  (openinventor-V09-05-00)
- G4OpeninventorX//Xt/Win/Win32:
  o Removed #ifdef G4VIS... protection from header files so that they
    can be used for a possible dynamic library.  Of course, the
    protection remains on the implementation files.

30th November 2011 Ben Morgan (openinventor-V09-04-04)
- sources.cmake : Added explicit inclusion and linking of X11 and Motif
  libraries. Appears needed so that OpenGL X11/XM and OpenInventor can
  co-exist.

30th November 2011 Ben Morgan (openinventor-V09-04-03)
- sources.cmake : Added inclusion and linking to Inventor base library and
  OpenGL. Needed on Mac to correctly find X11 GL.

8th November 2011 Ben Morgan (openinventor-V09-04-02)
- source.cmake [BUGFIX #1196]: Added support for CMake build of OpenInventor
  driver (NB requires cotag cmake-V09-04-32).

27th December 2010  Gabriele Cosmo  (openinventor-V09-04-01)
- Fixed compilation error in SbPainterPS.cc introduced in previous tag.

27th December 2010  John Allison  (openinventor-V09-04-00)
- Tagged.

11th December 2010  John Allison
- Fixed some Coverity warnings.

10th November 2010  John Allison  (openinventor-V09-03-02)
- G4OpenInventor*Viewer.cc:
  o Protected output with G4VisManager::confirmations.

6th October 2010  John Allison  (openinventor-V09-03-01)
- G4OpenInventorViewer.cc:
  o Added default colour and default text colour to list of parameters
    that trigger a kernel visit.

26th May 2010  John Allison  (openinventor-V09-03-00)
- G4OpenInventorWin.cc, G4OpenInventorXt.cc: Protection against
  repeated initialisation.

17th November 2009  John Allison  (openinventor-V09-02-03)
- Tagged for vis tag.

17th November 2009  Gabriele Cosmo
- Fixed GNUmakefile.  Fixes build problem with gl2ps on Windows.

29 September 2009  John Allison  (openinventor-V09-02-02)
- Tagged.

18 August 2009 Laurent Garnier
 - G4OpenInventorXt/WinViewer : Fix a wrong initialization introduce by the
   new way of handling window size hints (January 2009)

24 July 2009, Laurent Garnier
 - Remove Geant4_gl2ps.h gl2ps.cc gl2ps.h which were copied in external/gl2ps
   in february but forgot to remove them from OpenInventor

18 February 2009, Laurent Garnier (openinventor-V09-02-01)
 - Bug fix in gl2ps drawing

16 February 2009, Laurent Garnier
 - Modifications in GNUMakefile for gl2ps.
 - SoGL2PSAction Modified.
 - G4OpenInventorViewer.cc add a protection on file writing in gl2ps

30th April 2008  John Allison  (openinventor-V09-01-01)
- Fixes more gcc-4.3.0 compiler warnings.

4th April 2008  John Allison  (openinventor-V09-01-00)
- Fixes most gcc-4.3.0 compiler warnings.

23rd October 2007  Gabriele Cosmo
- Initialise local vectors in SoPolyhedron.cc to fix compilation warnings
  on gcc-4.2.2 for use of non-initialised values.

3rd April 2007  John Allison  (openinventor-V08-02-02 - needs visman-V08-02-03)
- Introduced picking control.  Default is "true" for Open Inventor.

25th March 2007  John Allison  (openinventor-V08-02-01)
- G4OpenInventorSceneHandler: Introduced AddProperties. Rationalises.
- G4OpenInventorViewer.cc: Added scale factor to list of changes
  requiring kernel visit.

5th January 2007  John Allison  (openinventor-V08-02-00)
- Moved LoadAtts to vis management.

5th November 2006  John Allison  (openinventor-V08-01-04)
- Protected against zero material pointer.

2nd November 2006  John Allison  (openinventor-V08-01-03)
- Rationalised G4Att loading and extended picking to hits.

1st November 2006  John Allison  (openinventor-V08-01-02)
- Follow changes to greps-V08-01-09: G4AttCheck/Holder rationalisation.

26th October 2006  John Allison  (openinventor-V08-01-01)
- Added SoG4LineSet, SoG4MarkerSet and SoG4Polyhedron - classes extended to
  include G4Atts (G4AttValues and G4AttDefs) for picking.
- G4OpenInventorSceneHandler.cc: Load lines, markers and polyhedron objects
  with G4Atts.
- G4OpenInventorViewer.cc: print G4Atts on picking.

29th August 2006  John Allison  (openinventor-V08-01-00)
- G4OpenInventorViewer::CompareForKernelVisit: Rationalisation. This
  assumes use of generic clipping (sectioning, slicing, DCUT,
  cutaway).  If a decision is made to implement locally, this will
  need changing.  See G4OpenGLViewer::SetView,
  G4OpenGLStoredViewer.cc::CompareForKernelVisit and
  G4OpenGLStoredSceneHander::CreateSection/CutawayPolyhedron.

4th June 2006 Joseph Perl (openinventor-V08-00-05)
- This tag includes all the changes below.

2 June 2006  Guy Barrand :
- G4OpenInvenot, G4OpenInvenotXt, G4OpenInvenotWin : have an Initialize
  method in order to init Xt and Inventor only is really used
  (when creating a viewer or a scene handler).

19th April 2006  Gabriele Cosmo  (openinventor-V08-00-04)
- Use cmath instead of math.h.

28th March John Allison  (openinventor-V08-00-03)
- Cosmetic.

21st March John Allison  (openinventor-V08-00-02)
- Rationalised G4OpenInventorSceneHandler:
  o Introduced GeneratePrerequisites.
  o Uses dynamic_cast<G4PhysicalVolumeModel*>(fpModel) instead
    of fpCurrentPV, etc.
  o Uses G4VSceneHandler utility functions,
    GetApplicableVisAttributes, GetColour, GetTextColour,
    GetMarkerSize, GetDrawingStyle, GetAuxEdgeVisible, where possible.
  o Revision 1.43: messy version with original code commented out.
  o Revision 1.44 (.cc) and 1.28 (.hh) (tagged): tidied versions.
- Investigated G4OpenInventorViewer:
  o Changed: DrawDetector and UpdateScene.  No noticeable effect!

20th March John Allison
- G4OpenInventorSceneHandler:
  o Bug fix for transient solids.
  o Replaced some code in AddPrimitive(const G4Polymarker&) by GetMarkerSize.
  o Attempt to finish AddPrimitive (const G4Text&) - still draws at origin.

30th January 2006  John Allison  (openinventor-V08-00-01)
- Implemented drawn volume path.  Needs modeling-V08-00-01.  Scene
  graph now corresponds to drawn, i.e., non-culled geometry.
  Inability to find (drawn) mothers shouldn't happen now, and it
  triggers an error message.

26th January 2006  John Allison  (openinventor-V08-00-00)
- Coworks with visman-V08-00-04 (removed fModified).
- Removed references to fModified.

20th December 2005  Guy Barrand
- SoAlternateRepAction.cc : add the #ifdef G4VIS_BUILD_OI_DRIVER.

12th December 2005  John Allison
- G4OpenInventorSceneHandler.cc: Pick up colour and transformation
  correctly for non-physical-volume solids.
  o G4OpenInventorSceneHandler::AddPrimitive (const G4Polyhedron&):
    Added code to pick up colour if LV and PV pointers are zero.
  o G4OpenInventorSceneHandler::BeginPrimitives: Pick up
    transformation if LV and PV pointers are zero.
  o G4OpenInventorSceneHandler::PreAddSolid: Added code to pick up
    colour if LV and PV pointers are zero and removed return statement
    so that transformation is picked up too.

30th November 2005  Gabriele Cosmo (openinventor-V07-01-04)
- Trivial fix to SoPolyhedron for support of CLHEP-2.0.X series.

15th November 2005  Guy Barrand (openinventor-V07-01-03)
- G4OpenInventorXtViewer : handle fVP.GetXGeometryString().
- G4OpenInventorSceneHandler : handle global scale view parameter.
  Done in BeginPrimitives and PreAddSolid by doing a
  SbMatrix::multRight(sbScale) to the incoming global G4Transform3D matrix.
- G4OpenInventor[Xt,Win]Viewer : handle set background. Done
  in the overloaded SetView method.

17th October 2005  Guy Barrand
- G4OpenInventorViewer::G4OpenInventorViewer : read a g4view.iv
  file at creating of a view. If found, the scene graph in g4view.iv
  if added at head of the overall scene graph. This permits easy
  out of band customization of the scene without having to touch
  the code.
- Modification in order to save geometry in an Inventor file.
  Addition of an "alternateRep" for the SoPolyhedron (see Inventor doc).
  Addition of an "alternateRep" for the SoDetectorTreeKit.
  Addition of the SoAlternaterRepAction to traverse a scene graph
  and construct / delete the alternate reps.
  Modification of G4OpenInventorViewer::WriteInventor to write the
  alternateRep of the SoPolyhedron and then save geometry in a
  .iv file by using Inventor standard lib. In particular the produced
  .iv files are readable by the ivview standard tool.

2nd September 2005  John Allison (openinventor-V07-01-02)
- Corrected treatment of edgeflags.

1st August 2005  Gabriele Cosmo  (openinventor-V07-01-01)
- Fixed compilation errors and warnings on gcc-4.0.0. Modified files:
  SoDetectorTreeKit.cc, gl2ps[.h.cc].

20th July 2005  John Allison  (openinventor-V07-01-00)
- Changed Geant4_SoPolyhedron to construct from G4Polyhedron rather
  than its base class, HepPolyhedron, for possible future
  developments.  Functionality unchanged.

2nd June 2005  John Allison  (openinventor-V07-00-02)
- Changed char* to const char* in gl2psMsg.

27th May 2005  John Allison  (openinventor-V07-00-01)
- Implemented marker sizes.

25th May 2005  Guy Barrand  (openinventor-V07-00-00)
- G4OpenInventorTransform3D.cc : use the CLHEP::Transform3D::operator(i,j)
  to initialize the m array in order to be compatible with new versions
  of CLHEP.

19th March 2005  Guy Barrand
- SoCounterAction.cc : remove extra ';' at end of SO_ACTION_SOURCE.
  Code with ';;' does not compile with the "-pedantic" mode of g++-3.4.

26th November 2004  Guy Barrand  (openinventor-V06-02-02)
- G4OpenInventorXtViewer, SoPolyhedron, SoCounterAction.h :
  correct some warnings on g++-3.2.1 (reported by Tom Roberts).

25th November 2004  Guy Barrand
- G4OpenInventor[Viewer,SceneHandle] : handle aux edges.
- G4OpenInventorViewer : in SetSolid, etc... avoid to do a FinishView
  that will do a viewAll that may displace the camera.
- G4OpenInventorViewer : put the camera under a group and put
  a sensor (fGroupCameraSensor) on the group to detect that the viewer
  changed the camera type.
- G4OpenInventor[Xt,Win]Viewer : GetCamera() to get camera of the viewer.
- G4OpenInventorViewer : delete fSoCameraSensor.

24th November 2004  John Allison
- Fixed SetView to respond to view parameters and CameraSensorCB to
  provide view parameters. Target point not quite right. Only for
  orthogonal view so far.

24th November 2004  Guy Barrand
- So*.cc : have #ifdef G4VIS_BUILD_OI_DRIVER instead of OIX_DRIVER !!!
- G4OpenInventor[Xt,Win]Viewer, SceneHandler : handle reduced wire frame
  at the level of the view.
- SoPolyhedron : reducedWireFramw field.

23th November 2004  Guy Barrand
- So*.cc : have #ifdef G4VIS_BUILD_OIX_DRIVER.

22th November 2004  Guy Barrand
- G4OpenInventor[Xt,Win]Viewer : "Set preview", "Set preview and full"
  menu items.
- G4OpenInventorViewer : count nodes and shapes.
- SoCounterAction : to count nodes.
- G4OpenInventorViewer : SetSolid, SetWireFrame : arrange to avoid a SetView
  for the moment. It will move the camera ! Arrange to not clear the
  transient store.
- G4OpenInventorViewer : commit commented SoNodeSensor on fSoCamera.
- G4OpenInventorXtViewer : have a help dialog.
- G4OpenInventorSceneHandler : delete the SbMatrix returned
  by G4OpenInventorTransform3D::GetSbMatrix. Not done before !
- G4OpenInventorTransform3D : use SbMatrix instead of SoSFMatrix.
- G4OpenInventorSceneHandler : cache SoResetTransform.
- SoStyleCache : destructor protected.
- G4OpenInventor[Xt,Win]Viewer : Help pulldown menu.
- G4OpenInventorViewer : in "Scene graph stats", count triangles,lines,points.
- G4OpenInventorViewer : set auto refresh by default.

21th November 2004  Guy Barrand
- G4OpenInventor[Xt,Win]Viewer, SceneHandler : add a simple picking that
  dumps picked SoNode address, type and name.
- G4OpenInventor[Xt,Win]Viewer : "Help controls" menu item.
- G4OpenInventorSceneHandler::PreAddThis : comment the "ERROR leaf protocal"
  message. Misleading to users.

19th November 2004  Guy Barrand
- G4OpenInventorSceneHandler::ClearStore: clear the fSeparatorMap.

18th November 2004  Guy Barrand
- G4OpenInventorSceneHandler::PreAddThis : handle viewer style.
- G4OpenInventorView : have an SoOrthographicCamera
  and a first implementation of SetView.
- Removed redundant fLastVP from G4OpenInventorSceneHandler (JA).

17th November 2004  Guy Barrand
- G4OpenInventorSceneHandler : rm the AddThis(G4Box,....). We use
  then only the generic AddPrimitive(G4Polyhedron). Much simpler.

15th November 2004  Guy Barrand
- G4OpenInventorViewer : //FIXME comment out on
  f[Default]VP.SetCulling(false) by default. Not convinced that it is
  the right thing to do.
- G4OpenInventorViewer : have f[Default]VP.SetCulling(false) by default.
- On viewer have "Erase detector, event" menuitems for Xt and Win.
- G4OpenInventorWinViewer : have it inheriting G4OpenInventorViewer.
- G4OpenInventorSceneHandler : WIN32 : correct some warnings.

14th November 2004  Guy Barrand
- G4OpenInventorSceneHandler.cc : handle transparency.
- SoImageWriter, SbPainter, SbPainterPS : material to produce pixmap PS.
- G4OpenInventorViewer : base class for Inventor viewers.
- Menuitem "Etc/Triangles" : to count rendered triangles.
- Menuitem "File/IV" : to write the scene in an inventor file.

14th November 2004  John Allison  (openinventor-V06-02-01)
- Tag on branch openinventor-V06-02-01-branch.
- Consolidating the changes below, plus:
  - forcing culling off by default;
  - forcing solid mode;
  so that the user:
  - sees all of the requested geometry volume tree;
  - can use pointer button and CTRL-left-click to uncover (SHIFT-left-click
    to re-cover);
  - can use the hand button and right-click to get wireframe.
- Removed G4OpenInventorSceneHandler::EndModeling (empty function).

12th November 2004  Guy Barrand
- G4OpenInventor.cc : initClass of Geant4_SoPolyhedron.
- G4OpenInventorWinViewer.cc : WM_COMMAND : filter only messages
  from the window viewer menu.
- G4OpenInventorSceneHandler.cc : rm G4Polymarker::line handling.

11th November 2004  Guy Barrand
- Add SoPolyhedron that permits to visualize directly HepPolyhedron.
- G4OpenInventorSceneHandler::AddThis : uses the generic
  SoPolyhedron. Modeling is wireFrame by default.
  Solid modeling is used only in case visAtb.SetForceSolid(true).
- G4OpenInventorSceneHandler::PreAddThis : correct a flaw
  in the non-leaf part ; in case mother not found in fSeparatorMap
  the SoDetectorTreeKit were added nowhere ! This induced that
  exaN03Vis5 displayed no gemetry.
- SoStyleCache : permit to cache commonly used colors, line styles and
  light models.
- G4OpenInventorSceneHandler : use SoStyleCache to minimize number of nodes.
- End of the first world war.
- Death of Arrafat.

10th November 2004  Guy Barrand
- SoMarkerSet, SoGL2PSAction : corrections to work with SGI Inventor.
- gl2ps : gl2psPrintPostScriptPixmap : fix nbit=2,4 width truncation.
  (On SoMarkerSet, the last column of pixmapswere missing ).

9th November 2004  Guy Barrand
- WIN32 : G4OpenInventorWinViewer : have a File pulldown menu
  with an Escape button to quit secondary Windows event loops.
- Xt : G4OpenInventorXtViewer : in destructor comment (and //FIXME)
  the "delete fViewer". With SGI, it hangs.
- Xt : Have a menubar and put escape button in the File pulldown menu.
- SoGL2PSAction, gl2ps : action to handle PostScript production with gl2ps.
- Xt : "PostScript" menu item.
- WIN32 : "PostScript" menu item.

8th November 2004  Guy Barrand
- WIN32 : Have HEPVis/SbGL.h to access GL.h properly on Windows.
  Use by SoMarkerSet.cc.
- G4OpenInventor.cc : initialize SoMarkerSet.
- G4OpenInventorWinViewer : correct bad viewer look and feel.

7th November 2004  Guy Barrand
- Have SoMarkerSet.h, .cc in the repository.
- G4OpenInventorSceneHandler :
  Have a AddPrimitive(G4Polymarker) using SoMarkerSet.
  SoMarkerSet draws markers in the frame buffer. It is much
  more performant than having SoSphere and SoCube for markers.

6th November 2004  Guy Barrand
- G4OpenInventorXtViewer : restore the escape button.
  This button is put in the "app buttons" of the SoXtExaminerViewer.
  (The "app buttons" are put in the left border of decoration).
  It is ok with SGI-2.1.510 and recent SoXt of Coin,

21th July 2004  Guy Barrand (openinventor-V06-02-00)
- G4OpenInventorXtViewer : add include X11/Shell.h to have
  XtNgeometry that may not come throught the includes of some
  Inventor implementation.

08th April 2004  Guy Barrand (openinventor-V06-01-00)
- Bring in the repository the necessary HEPVis code. In fact few of HEPVis
  is used in this G4 driver. Then HEPVis is no more needed.
  Note that, to avoid clashes of G4/vis within experiments, the HEPVis
  node are protected by some : #define Geant4_<node> <node>.  Then, for
  example, within the G4OpenInventor lib there are Geant4_SoBox, etc...
  (and not SoBox,... that may clash with other HEPVis code in  experiments).
- Have code to run on Windows.
- Split Viewer to have G4OpenInventorXtViewer and G4OpenInventorWinViewer.
- Split G4OpenInventor to have G4OpenInventorXt and G4OpenInventorWin.
  Xt and Win (and not X and Win32 like in vis/OpenGL) to follow
  the conventions found in the OpenInventor world.

29th October 2003  Cosmo Gabriele (openinventor-V05-02-00)
- Patch in G4OpenInventorSceneHandler in PreAddThis() to cope with changes
  introduced in G4VPhysicalVolume in "geant4-05-02-ref-04", where pointer to
  mother physical-volume was removed.
  Separators map now refers to logical-volumes and is no longer built
  iteratively for each call to the method as it was done in an attempt
  implemented previously.
  NOTE: requires more investigation and eventually a revision of the
        adopted algorithm.
- Cleared usage of 'NULL' in favour of '0'.

4th October 2003  Cosmo Gabriele (vis-V05-02-01)
- Simplified GNUmakefile.

14th January 2003  John Allison  (openinventor-V05-00-00)
- Removed vertex.transform (*fpObjectTransformation) from
  G4OpenInventorSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron).
  Symptom was that polyhedron objects were being transformed twice.
  The transformation is stored in
  G4OpenInventorSceneHandler::PreAddThis
  ...
  G4OpenInventorTransform3D oiTran (objectTransformation);
  SoSFMatrix* oiMat = oiTran.GetOIMatrix();
  SoMatrixTransform* xform = new SoMatrixTransform;
  xform->matrix.setValue(oiMat->getValue());
  currentSeparator->addChild(new SoResetTransform);
  currentSeparator->addChild(xform);
}

27th November 2002  John Allison  (vis-V04-01-08)
- Improved algorithm of CompareForKernelVisit.

14th August 2001  John Allison  (vis-V03-02-11)
- Improved KernelVisitDecision - but see note therein.
