Home Documentation Download Examples Developer

# Change Log

## March 1st 2010 - 2.3.5

New features

- Mouse shortcuts displayed in help window use native display for Ctrl/Command/Alt/Option... keys.
- New mouse bindings added on Mac architecture to enable camera translation using the Option key (no right button on the touchpad).

Bug fixes or improvements

- Tuning `DYLD_LIBRARY_PATH` is no longer needed to run the examples on Mac architecture (Linux soon to come).
- Use of `CONFIG += no_keywords` so that the library can be used with Boost.
- Smoother compilation on Mac, now creating a Framework by default. Compilation documentation updated.
- `GL_DEPTH_TEST` disabled before rendering frame rate to fix a weird display on Mac (bugfinder FX).
- The `About` button has been moved to a cleaner new tab in the help window.
- `WIN32` added to default `DEFINES` to fix compilation problems with Visual Studio when using the Intel compiler (bugfinder Jiawen).
- The examples applications now have a nice associated icon (Mac and Windows).
- `restoreStateFromFile` updates camera aspect ratio when loading window's size.

Changes in the API

- The `aboutQGLViewer()` method now displays the help window 'About' tab.

## September 1st 2009 - 2.3.4

Bug fixes or improvements

- Patches for compilation with Qt3 (thanks to Rainer and Florent).

## July 14th 2009 - 2.3.3

New features

- `snapshotToClipboard()` method binded to `Ctrl+C` eases snapshot creation.
- Visual Studio `.vcproj` project files added to `QGLViewer` and examples' directories.

## July 7th 2009 - 2.3.2

New features

- A new dual licensing explanation page.

Bug fixes or improvements

- `printf` debug calls removed. Tested with the future version 4.4 of gcc.
- `domUtils.h` includes fixed (thanks Frederic).
- `Camera::initFromDOMElement` bug fixed (bugfinder Forrester).
- Snapshot rendering bug when using screen coordinates with large image size (tiled rendering) fixed. New `scaledFont()` method to be used with `renderText()`. Bugfinder Jorik.

## October 1st 2008 - 2.3.1

New features

- Exceptions added to the GPL Open Source license to make it compatible with CGAL.
- Although it still works, the compilation with Qt version 2 is no longer supported.
- The x3d example has been removed from the distribution since the x3d library is no longer maintained.

## September 1st 2008 - 2.3.0

New features

- Default package distribution is now based on Qt4.
- A package installer is available for Windows, including the library, pre-compiled examples and full documentation.
- A new compilation with libQGLViewer page explains how to compile your programs with QGLViewer.
- A new overpainting example demonstrates mixing OpenGL and `QPainter` drawing.
- A new cameraLight example shows how to place a light at camera position.
- A new cornerAxis example displays the scene orientation in the lower left corner.

Changes in the API

- A deleted `QGLViewer` is no longer removed from the `QGLViewerPool` (a `null` replaces it) in order to preserve viewer's indexes (used by `stateFileName`) (bug finder Gianluca).
- Unix install no longer features a static version of the library.

Bug fixes or improvements

- All the texts used by the library are now translatable. A french translation is available.
- Visual Studio installation procedure refreshed.
- Includes were modified to satisfy new gcc 4.3 cleaner standards (thanks Artur).
- All examples' warnings under Visual Studio have been fixed.
- Help window spaced and made fully translatable.

## May 29th 2007 - 2.2.6

New features

- The `Camera` now saves and restores its scene center and radius in its XML representation.
- A new `Camera::getModelViewProjectionMatrix` convenient method (suggester Elmar).

Bug fixes or improvements

- Compilation warnings with MSVC 2003 and 2005 fixed.
- Null viewer dimensions no longer cause divisions by 0 (bug finder Elmar).

## January 31st 2007- 2.2.5

Bug fixes or improvements

- 1 pixel shift in `Camera::pointUnderPixel()` fixed (bug finder Aurélien).
- Included file naming changed to follow Qt4 conventions (suggester Maxime).
- Lighting disabled for text drawing in the `screenCoordSystem` example (bug finder Greg).
- Documentation switched to doxygen 1.5 tab style (bug finder Xavier).

## November 28th 2006 - 2.2.4

New features

- A new `DRIVE` MouseAction. Similar to fly, but speed depends on mouse vertical position (suggester Le Thanh).
- A new standardCamera example shows how to customize your `Camera`.

Bug fixes or improvements

- `orthogonalVec()` had problems for some vectors (bug finder David).
- `MOVE_FORWARD` and `MOVE_BACKWARD` behavior improved.
- Double file overwriting question with Qt4 removed.

## May 14th 2006 - 2.2.3

New features

- `Camera::interpolateTo` moves the Camera to a target position.

Changes in the API

- `setSceneCenter` and `setSceneRadius` were made `virtual`.

Bug fixes or improvements

- Problem with constraints on frame hierarchy fixed (thanks Sylvain).
- `unregisterTimer` error mesage fixed (thanks Xavier).
- Spurious brace correctly closed in examples' .pro (thanks Xavier).

## May 14th 2006 - 2.2.2

New features

- Snapshot can be created at an arbitrary size (using image mosaicing) with optional oversampling anti-aliassing.

Bug fixes or improvements

- Problem with `QT3_SUPPORT` under Qt4 fixed (prevented designer plugin creation under windows).

## March 8th 2006 - 2.2.1

New features

- Designer plugin installation directory can now be changed (suggester Markus).

Changes in the API

- Deprecated `setSnapshotFilename` (lowercase n) method (kept for backward source code compatibility) was removed due to ActiveX conflicts (thanks Juergen).

Bug fixes or improvements

- `saveSnapshot` was not recognized as a slot with Qt3 (bug finder Gheorghe).
- Generated snapshots files didn't have the proper `.jpg` extension.
- Animation added to the blobWar example.

## February 8th 2006 - 2.2.0

New features

- `Camera::getFrustumPlanesCoefficients()` function (see the frustumCulling example).
- `Camera::setFromModelViewMatrix()` makes a `Camera` match a given `modelView` matrix (suggester Daria).
- Non-const `Vec::float*()` operator, so that `Vec` parameters can be passed to `float*` filling methods.
- `Quaternion::normalized()` method.
- `Camera::rightVector()` that completes the `viewDirection()` and `upVector()` methods.
- New frustumCulling and blobWar examples.
- In the multiSelect example, the selected set can now be manipulated.

Changes in the API

- `Camera::draw()` method parameters changed. Can now also draw ORTHOGRAPHIC Camera type.
- `Camera::drawCamera()` static method removed. Use `(new Camera())->draw()` instead.
- Z-buffer display has been removed (not supported on many architectures). Code is available in `copyBufferToTexture()`.
- `Quaternion::setFromRotationMatrix` takes a `double` (instead of `float`) parameter for better precision.
- `Frame::referenceFrame()` now returns a `const Frame*` (suggester Xavier).
- `Quaternion::setFromRotatedBase()` renamed `setFromRotatedBasis()`.
- Mouse events are now prioritarily interpreted as `ClickAction` and then passed to the `mouseGrabber()` if no `ClickAction` corresponds (was the inverse).
- `drawAxis()` and `drawGrid()` no longer modify the OpenGL state (suggester Manu).

Bug fixes or improvements

- Bug in `KeyFrameInterpolator` path drawing fixed (bug finder Manuel).
- `Quaternion(from, to)` bug fixed for colinear vectors (bug finder Aurélien).
- `Quaternion::setFromRotationMatrix` patched and made more robust.
- Camera's `zClippingCoefficient` correctly restored when `cameraIsEdited`.
- `Frame::initFromDOMElement` normalizes the orientation.
- This changeLog file was split in two parts (see the archive).
- Download statistics are back.
- Private classes removed from documentation.
- The dvonn example now also compiles with Qt4.

## September 18th 2005 - 2.1.1

Changes in the API

- `snapshotFilename` renamed `snapshotFileName` (uppercased 'N').
- When negative, the `snapshotCounter` is not appended to `snapshotFileName` in automatic mode.

Bug fixes or improvements

- `saveSnapshot(fileName)` no longer opens a file dialog (bug finder Jürgen).

## September 14th 2005 - 2.1.0

The library now compiles with Qt version 2, 3 and 4. When enum or function names have been changed in Qt4, the QGLViewer documentation uses their Qt 4 version and gives Qt 2 & 3 translations.

New features

- Support for Qt version 2, 3 and 4.
- Dual licensing : a LGPL version of the library is available for commercial applications.
- `QGLViewer::drawArrow()` method from two points (thanks Sylvain).

Changes in the API

`Qt::ButtonState` (Qt versions 2 & 3) has been split into `Qt::KeyboardModifiers` and `Qt::MouseButtons` in Qt4. Since these are just enums, previous code will still work.

- `playPathStateKey()` and `addKeyFrameStateKey()` were renamed `playPathKeyboardModifiers()` and `addKeyFrameKeyboardModifiers()`.
  Their `int` parameter has been replaced by a type-safe `Qt::KeyboardModifiers`.
- `setHandlerStateKey` renamed `setHandlerKeyboardModifiers`.

Bug fixes or improvements

- `Camera` copy constructor fixed (bug finder Xavier).

## August 10th 2005 - 2.0.1

Bug fixes or improvements

- Bounding box warning when viewing generated EPS snapshots fixed. Thanks Dominik.

## June 24th 2005 - 2.0.0

New features

- Cyril Soler entirely rewrote the VRender vectorial rendering code. Smaller and better ouput files.
- New `QGLViewer::copyBufferToTexture()` to copy the frame buffer in a texture.
- New `Camera::drawCamera()` and `draw()` methods.
- New `QGLViewer::drawArrow()` static method.
- New `QGLViewer::mouseGrabberIsEnabled()` method.
- Copy constructor and `=` operator implemented for `Camera` and `KeyFrameInterpolator` classes.

Changes in the API
The API has been cleaned up and simplified. The documentation has entirely been rewritten.

- Vec

- `address()` deprecated, use `operator const float*` instead.
- `sqNorm()` renamed `Vec::squaredNorm()`.

- Quaternion

- Constructor with half angle removed.
- `randomOrientation` renamed `randomQuaternion`.
- `operator*` now returns a non-const `Quaternion`.

- Frame

- `referenceFrame()` is no longer `const`.
- `setOrientationAxisAngle()` and `Frame::setRotationAxisAngle()` removed.
- `translate(float t[3])` and `Frame::rotate(float q[4])` removed: use `Vec` and `Quaternion` equivalents instead.
- `invert()` and `Frame::worldInvert()` removed: use `inverse()` instead.
- `inverseMatrix()` and `worldInverseMatrix()` removed: use `inverse().matrix()` instead.
- `setReferenceFrame()` emits the `modified()` signal as expected.

- SpinningFrame

- `SpinningFrame` class has been removed. Spinning was integrated in `ManipulatedFrame`.

- ManipulatedFrame

- `spinned` signal renamed `spun`.

- MouseGrabber

- Mouse event method now all take a non-const `Camera` parameter.

- AxisPlaneConstraint

- `float` methods removed: use `Vec` equivalents instead.
- `*Dir()` methods renamed `*Direction()`.

- KeyFrameInterpolator
  - `keyFramePosition()` and `keyFrameOrientation()` removed: use `KeyFrame().position()` and `KeyFrame().orientation()` instead.
  - `finished()` renamed `endReached()`.
- Camera

- Methods with `float` parameter removed. Use their `Vec(x,y,z)` and `Quaternion(q0,q1,q2,q3)` equivalents instead.
- `editCameraPath()` and `cameraPathIsEdited()` removed.
- `float` versions of `getModelViewMatrix` and `getProjectionMatrix` removed. Use `double` equivalents instead.
- Methods using pixel input (`pointUnderPixel()`...) take `QPoint` parameter instead of x and y. Use `QPoint(x,y)` constructor if needed.
- `nbPaths()` removed. Camera now contains an arbitrary number of paths.
- `fitScreenRegion` now takes a `QRect` parameter.
- `getOrthoWidthHeight` made `virtual`.
- `ORTHO` type renamed `ORTHOGRAPHIC`.
- `zNearCoef` and `zClippingCoef` renamed `zNearCoefficient` and `zClippingCoefficient`.
- `setWindowWidthAndHeight` renamed `setScreenWidthAndHeight`.
- `playKeyFramePath, deleteKeyFramePath and resetKeyFramePath` renamed `playPath, deletePath and resetPath`.
- `addKeyFrame` renamed `addKeyFrameToPath`.
- `distanceToScreen()` renamed `physicalDistanceToScreen()`.
- `distanceToZeroParallaxPlane()` renamed `focusDistance()`.
- `IODist` renamed `IODistance`.
- `setCameraFromProjectionMatrix()` renamed `setFromProjectionMatrix()`.

- QGLViewer

- `cameraPathIsEdited` and `editCameraPath` renamed `cameraIsEdited` and `setCameraIsEdited`.
- `EDIT_CAMERA_PATHS` renamed `EDIT_CAMERA` in prevision of a future camera edition.
- `setDrawAxis, setDrawGrid, setDisplayFPS, setDisplayText` renamed `setAxisIsDrawn, setGridIsDrawn, setFPSIsDisplayed, setTextIsEnabled`.
- `float` methods removed. Use `Vec` and `Quaternion` equivalents instead.
- `drawAxis` made `static`.
- `setMouseStateKey` renamed `setHandlerStateKey`.
- `keyFrameKey` renamed `pathKey`, with swapped parameters.
- `playKeyFramePathStateKey` renamed `playPathStateKey`.
- `keyboardAccelerator` (resp. `setKeyboardAccelerator`) renamed `shortcut` (resp. `setShortcut`).
- `select, beginSelection, endSelection` and `postSelection` use `QPoint` instead of `x` and `y`.
- `toggleAnimationMode` renamed `toggleAnimation`.
- `version` syntax in state file changed and is now compared with current version on restoration.
- Destructor now also deletes the `camera()`.
- `connectSignalToAllViewers, disconnectSignalToAllViewers` and `updateGLForAllViewers` removed. Use `QGLViewerPool` insead.
- Keys F1-F12 are binded to camera keyFrameInterpolator indexes 1..12 (was 0..11).

Other modifications:

- `zip` and `tar` files names include release number.
- `rpm` now includes a static version of the library.

Bug fixes or improvements

- `QGLViewer::stateFileName` no longer skips the directory prefix.
- `QGLViewer::drawLight` nicer and fixed.
- WheelEvents now use `fastDraw()`. A final `draw()` is now triggered at a short delay after the last wheel event.

## Previous changeLog

See the previous changeLog (Version 1.2.5 to 1.3.9, July 2002 to April 2005).
Please send any comment, suggestion or problem by e-mail.

Last modified on Sunday, February 28, 2010.