<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>QGLViewer - ChangeLog</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="qglviewer.css" rel="stylesheet" type="text/css" /> <link rel="shortcut icon" href="images/qglviewer.ico" type="image/x-icon" /> <link rel="icon" href="images/qglviewer.icon.png" type="image/png" /> </head> <body> <div class="banner"> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="refManual/hierarchy.html">Documentation</a> <a class="qindex" href="download.html">Download</a> <a class="qindex" href="examples/index.html">Examples</a> <a class="qindex highlight" href="developer.html">Developer</a> </div> <h1>Change Log</h1> <h2>September xxth 2008 - 2.3.1</h2> <b>New features</b> <ul> <li>Exceptions added to the GPL Open Source license to make it compatible with CGAL.</li> <li>Although it still works, the compilation with Qt version 2 is no longer supported.</li> <li>The x3d example has been removed from the distribution since the x3d library is no longer maintained.</li> </ul> <h2>September 1st 2008 - 2.3.0</h2> <b>New features</b> <ul> <li>Default package distribution is now based on Qt4.</li> <li>A package installer is available for Windows, including the library, pre-compiled examples and full documentation.</li> <li>A new <a href="compilation.html">compilation with libQGLViewer</a> page explains how to compile your programs with QGLViewer.</li> <li>A new <a href="examples/overpainting.html">overpainting example</a> demonstrates mixing OpenGL and <code>QPainter</code> drawing.</li> <li>A new <a href="examples/cameraLight.html">cameraLight example</a> shows how to place a light at camera position.</li> <li>A new <a href="examples/contribs.html#cornerAxis">cornerAxis example</a> displays the scene orientation in the lower left corner.</li> </ul> <b>Changes in the API</b> <ul> <li>A deleted <code>QGLViewer</code> is no longer removed from the <code>QGLViewerPool</code> (a <code>null</code> replaces it) in order to preserve viewer's indexes (used by <code>stateFileName</code>) (bug finder Gianluca).</li> <li>Unix install no longer features a static version of the library.</li> </ul> <b>Bug fixes or improvements</b> <ul> <li>All the texts used by the library are now translatable. A french translation is available.</li> <li>Visual Studio installation procedure refreshed.</li> <li>Includes were modified to satisfy new gcc 4.3 cleaner standards (thanks Artur).</li> <li>All examples' warnings under Visual Studio have been fixed.</li> <li>Help window spaced and made fully translatable.</li> </ul> <h2>May 29th 2007 - 2.2.6</h2> <b>New features</b> <ul> <li>The <code>Camera</code> now saves and restores its scene center and radius in its XML representation.</li> <li>A new <code>Camera::getModelViewProjectionMatrix</code> convenient method (suggester Elmar).</li> </ul> <b>Bug fixes or improvements</b> <ul> <li>Compilation warnings with MSVC 2003 and 2005 fixed.</li> <li>Null viewer dimensions no longer cause divisions by 0 (bug finder Elmar).</li> </ul> <h2>January 31st 2007- 2.2.5</h2> <b>Bug fixes or improvements</b> <ul> <li>1 pixel shift in <code>Camera::pointUnderPixel()</code> fixed (bug finder Aurélien).</li> <li>Included file naming changed to follow Qt4 conventions (suggester Maxime).</li> <li>Lighting disabled for text drawing in the <code>screenCoordSystem</code> example (bug finder Greg).</li> <li>Documentation switched to doxygen 1.5 tab style (bug finder Xavier).</li> </ul> <h2>November 28th 2006 - 2.2.4</h2> <b>New features</b> <ul> <li>A new <code>DRIVE</code> MouseAction. Similar to fly, but speed depends on mouse vertical position (suggester Le Thanh).</li> <li>A new <a href="examples/standardCamera.html">standardCamera</a> example shows how to customize your <code>Camera</code>.</li> </ul> <b>Bug fixes or improvements</b> <ul> <li><code>orthogonalVec()</code> had problems for some vectors (bug finder David).</li> <li><code>MOVE_FORWARD</code> and <code>MOVE_BACKWARD</code> behavior improved.</li> <li>Double file overwriting question with Qt4 removed.</li> </ul> <h2>May 14th 2006 - 2.2.3</h2> <b>New features</b> <ul> <li><code>Camera::interpolateTo</code> moves the Camera to a target position.</li> </ul> <b>Changes in the API</b> <ul> <li><code>setSceneCenter</code> and <code>setSceneRadius</code> were made <code>virtual</code>.</li> </ul> <b>Bug fixes or improvements</b> <ul> <li>Problem with constraints on frame hierarchy fixed (thanks Sylvain).</li> <li><code>unregisterTimer</code> error mesage fixed (thanks Xavier).</li> <li>Spurious brace correctly closed in examples' .pro (thanks Xavier).</li> </ul> <h2>May 14th 2006 - 2.2.2</h2> <b>New features</b> <ul> <li>Snapshot can be created at an arbitrary size (using image mosaicing) with optional oversampling anti-aliassing.</li> </ul> <b>Bug fixes or improvements</b> <ul> <li>Problem with <code>QT3_SUPPORT</code> under Qt4 fixed (prevented designer plugin creation under windows).</li> </ul> <h2>March 8th 2006 - 2.2.1</h2> <b>New features</b> <ul> <li>Designer plugin installation directory can now be changed (suggester Markus).</li> </ul> <b>Changes in the API</b> <ul> <li>Deprecated <code>setSnapshotFilename</code> (lowercase n) method (kept for backward source code compatibility) was removed due to ActiveX conflicts (thanks Juergen).</li> </ul> <b>Bug fixes or improvements</b> <ul> <li><code>saveSnapshot</code> was not recognized as a slot with Qt3 (bug finder Gheorghe).</li> <li>Generated snapshots files didn't have the proper <code>.jpg</code> extension.</li> <li>Animation added to the <a href="examples/contribs.html#blobWar">blobWar example</a>.</li> </ul> <h2>February 8th 2006 - 2.2.0</h2> <b>New features</b> <ul> <li><code>Camera::getFrustumPlanesCoefficients()</code> function (see the <a href="examples/frustumCulling.html">frustumCulling example</a>).</li> <li><code>Camera::setFromModelViewMatrix()</code> makes a <code>Camera</code> match a given <code>modelView</code> matrix (suggester Daria).</li> <li>Non-const <code>Vec::float*()</code> operator, so that <code>Vec</code> parameters can be passed to <code>float*</code> filling methods.</li> <li><code>Quaternion::normalized()</code> method.</li> <li><code>Camera::rightVector()</code> that completes the <code>viewDirection()</code> and <code>upVector()</code> methods.</li> <li>New <a href="examples/frustumCulling.html">frustumCulling</a> and <a href="examples/contribs.html#blobWar">blobWar</a> examples.</li> <li>In the <a href="examples/multiSelect.html">multiSelect</a> example, the selected set can now be manipulated.</li> </ul> <b>Changes in the API</b> <ul> <li><code>Camera::draw()</code> method parameters changed. Can now also draw ORTHOGRAPHIC Camera type.</li> <li><code>Camera::drawCamera()</code> static method removed. Use <code>(new Camera())->draw()</code> instead.</li> <li>Z-buffer display has been removed (not supported on many architectures). Code is available in <code>copyBufferToTexture()</code>.</li> <li><code>Quaternion::setFromRotationMatrix</code> takes a <code>double</code> (instead of <code>float</code>) parameter for better precision.</li> <li><code>Frame::referenceFrame()</code> now returns a <code>const Frame*</code> (suggester Xavier).</li> <li><code>Quaternion::setFromRotatedBase()</code> renamed <code>setFromRotatedBasis()</code>.</li> <li>Mouse events are now prioritarily interpreted as <code>ClickAction</code> and then passed to the <code>mouseGrabber()</code> if no <code>ClickAction</code> corresponds (was the inverse).</li> <li><code>drawAxis()</code> and <code>drawGrid()</code> no longer modify the OpenGL state (suggester Manu).</li> </ul> <b>Bug fixes or improvements</b> <ul> <li>Bug in <code>KeyFrameInterpolator</code> path drawing fixed (bug finder Manuel).</li> <li><code>Quaternion(from, to)</code> bug fixed for colinear vectors (bug finder Aurélien).</li> <li><code>Quaternion::setFromRotationMatrix</code> patched and made more robust.</li> <li>Camera's <code>zClippingCoefficient</code> correctly restored when <code>cameraIsEdited</code>.</li> <li><code>Frame::initFromDOMElement</code> normalizes the orientation.</li> <li>This changeLog file was split in two parts (see the <a href="changeLog-1.html">archive</a>).</li> <li><a href="http://www.libqglviewer.com/download_statistics.html">Download statistics</a> are back.</li> <li>Private classes removed from documentation.</li> <li>The <a href="examples/contribs.html#dvonn">dvonn</a> example now also compiles with Qt4.</li> </ul> <h2>September 18th 2005 - 2.1.1</h2> <b>Changes in the API</b> <ul> <li><code>snapshotFilename</code> renamed <code>snapshotFile<b>N</b>ame</code> (uppercased 'N').</li> <li>When negative, the <code>snapshotCounter</code> is not appended to <code>snapshotFileName</code> in automatic mode.</li> </ul> <b>Bug fixes or improvements</b> <ul> <li><code>saveSnapshot(fileName)</code> no longer opens a file dialog (bug finder Jürgen).</li> </ul> <h2>September 14th 2005 - 2.1.0</h2> <p> 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. </p> <b>New features</b> <ul> <li>Support for Qt version 2, 3 and 4.</li> <li>Dual licensing : a LGPL version of the library is available for commercial applications.</li> <li><code>QGLViewer::drawArrow()</code> method from two points (thanks Sylvain).</li> </ul> <b>Changes in the API</b> <p> <code>Qt::ButtonState</code> (Qt versions 2 & 3) has been split into <code>Qt::KeyboardModifiers</code> and <code>Qt::MouseButtons</code> in Qt4. Since these are just enums, previous code will still work. </p> <ul> <li><code>playPathStateKey()</code> and <code>addKeyFrameStateKey()</code> were renamed <code>playPathKeyboardModifiers()</code> and <code>addKeyFrameKeyboardModifiers()</code>.<br/> Their <code>int</code> parameter has been replaced by a type-safe <code>Qt::KeyboardModifiers</code>.</li> <li><code>setHandlerStateKey</code> renamed <code>setHandlerKeyboardModifiers</code>.</li> </ul> <b>Bug fixes or improvements</b> <ul> <li><code>Camera</code> copy constructor fixed (bug finder Xavier).</li> </ul> <h2>August 10th 2005 - 2.0.1</h2> <b>Bug fixes or improvements</b> <ul> <li>Bounding box warning when viewing generated EPS snapshots fixed. Thanks Dominik.</li> </ul> <h2>June 24th 2005 - 2.0.0</h2> <b>New features</b> <ul> <li>Cyril Soler entirely rewrote the <a href="http://artis.imag.fr/Software/VRender/">VRender</a> vectorial rendering code. Smaller and better ouput files.</li> <li>New <code>QGLViewer::copyBufferToTexture()</code> to copy the frame buffer in a texture.</li> <li>New <code>Camera::drawCamera()</code> and <code>draw()</code> methods.</li> <li>New <code>QGLViewer::drawArrow()</code> static method.</li> <li>New <code>QGLViewer::mouseGrabberIsEnabled()</code> method.</li> <li>Copy constructor and <code>=</code> operator implemented for <code>Camera</code> and <code>KeyFrameInterpolator</code> classes.</li> </ul> <b>Changes in the API</b> <br/> The API has been cleaned up and simplified. The documentation has entirely been rewritten. <ul> <li>Vec</li> <ul> <li><code>address()</code> deprecated, use <code>operator const float*</code> instead.</li> <li><code>sqNorm()</code> renamed <code>Vec::squaredNorm()</code>.</li> </ul> <li>Quaternion</li> <ul> <li>Constructor with half angle removed.</li> <li><code>randomOrientation</code> renamed <code>randomQuaternion</code>.</li> <li><code>operator*</code> now returns a non-const <code>Quaternion</code>.</li> </ul> <li>Frame</li> <ul> <li><code>referenceFrame()</code> is no longer <code>const</code>.</li> <li><code>setOrientationAxisAngle()</code> and <code>Frame::setRotationAxisAngle()</code> removed.</li> <li><code>translate(float t[3])</code> and <code>Frame::rotate(float q[4])</code> removed: use <code>Vec</code> and <code>Quaternion</code> equivalents instead.</li> <li><code>invert()</code> and <code>Frame::worldInvert()</code> removed: use <code>inverse()</code> instead.</li> <li><code>inverseMatrix()</code> and <code>worldInverseMatrix()</code> removed: use <code>inverse().matrix()</code> instead.</li> <li><code>setReferenceFrame()</code> emits the <code>modified()</code> signal as expected.</li> </ul> <li>SpinningFrame</li> <ul> <li><code>SpinningFrame</code> class has been removed. Spinning was integrated in <code>ManipulatedFrame</code>.</li> </ul> <li>ManipulatedFrame</li> <ul> <li><code>spinned</code> signal renamed <code>spun</code>.</li> </ul> <li>MouseGrabber</li> <ul> <li>Mouse event method now all take a non-const <code>Camera</code> parameter.</li> </ul> <li>AxisPlaneConstraint</li> <ul> <li><code>float</code> methods removed: use <code>Vec</code> equivalents instead.</li> <li><code>*Dir()</code> methods renamed <code>*Direction()</code>.</li> </ul> <li>KeyFrameInterpolator</code> <ul> <li><code>keyFramePosition()</code> and <code>keyFrameOrientation()</code> removed: use <code>KeyFrame().position()</code> and <code>KeyFrame().orientation()</code> instead.</li> <li><code>finished()</code> renamed <code>endReached()</code>.</li> </ul> <li>Camera</li> <ul> <li>Methods with <code>float</code> parameter removed. Use their <code>Vec(x,y,z)</code> and <code>Quaternion(q0,q1,q2,q3)</code> equivalents instead.</li> <li><code>editCameraPath()</code> and <code>cameraPathIsEdited()</code> removed.</li> <li><code>float</code> versions of <code>getModelViewMatrix</code> and <code>getProjectionMatrix</code> removed. Use <code>double</code> equivalents instead.</li> <li>Methods using pixel input (<code>pointUnderPixel()</code>...) take <code>QPoint</code> parameter instead of x and y. Use <code>QPoint(x,y)</code> constructor if needed.</li> <li><code>nbPaths()</code> removed. Camera now contains an arbitrary number of paths.</li> <li><code>fitScreenRegion</code> now takes a <code>QRect</code> parameter.</li> <li><code>getOrthoWidthHeight</code> made <code>virtual</code>.</li> <li><code>ORTHO</code> type renamed <code>ORTHOGRAPHIC</code>.</li> <li><code>zNearCoef</code> and <code>zClippingCoef</code> renamed <code>zNearCoefficient</code> and <code>zClippingCoefficient</code>.</li> <li><code>setWindowWidthAndHeight</code> renamed <code>setScreenWidthAndHeight</code>.</li> <li><code>playKeyFramePath, deleteKeyFramePath and resetKeyFramePath</code> renamed <code>playPath, deletePath and resetPath</code>.</li> <li><code>addKeyFrame</code> renamed <code>addKeyFrameToPath</code>.</li> <li><code>distanceToScreen()</code> renamed <code>physicalDistanceToScreen()</code>.</li> <li><code>distanceToZeroParallaxPlane()</code> renamed <code>focusDistance()</code>.</li> <li><code>IODist</code> renamed <code>IODistance</code>.</li> <li><code>setCameraFromProjectionMatrix()</code> renamed <code>setFromProjectionMatrix()</code>.</li> </ul> <li>QGLViewer</li> <ul> <li><code>cameraPathIsEdited</code> and <code>editCameraPath</code> renamed <code>cameraIsEdited</code> and <code>setCameraIsEdited</code>.</li> <li><code>EDIT_CAMERA_PATHS</code> renamed <code>EDIT_CAMERA</code> in prevision of a future camera edition.</li> <li><code>setDrawAxis, setDrawGrid, setDisplayFPS, setDisplayText</code> renamed <code>setAxisIsDrawn, setGridIsDrawn, setFPSIsDisplayed, setTextIsEnabled</code>.</li> <li><code>float</code> methods removed. Use <code>Vec</code> and <code>Quaternion</code> equivalents instead.</li> <li><code>drawAxis</code> made <code>static</code>.</li> <li><code>setMouseStateKey</code> renamed <code>setHandlerStateKey</code>.</li> <li><code>keyFrameKey</code> renamed <code>pathKey</code>, with swapped parameters.</li> <li><code>playKeyFramePathStateKey</code> renamed <code>playPathStateKey</code>.</li> <li><code>keyboardAccelerator</code> (resp. <code>setKeyboardAccelerator</code>) renamed <code>shortcut</code> (resp. <code>setShortcut</code>).</li> <li><code>select, beginSelection, endSelection </code> and <code>postSelection</code> use <code>QPoint</code> instead of <code>x</code> and <code>y</code>.</li> <li><code>toggleAnimationMode</code> renamed <code>toggleAnimation</code>.</li> <li><code>version</code> syntax in state file changed and is now compared with current version on restoration.</li> <li>Destructor now also deletes the <code>camera()</code>.</li> <li><code>connectSignalToAllViewers, disconnectSignalToAllViewers</code> and <code>updateGLForAllViewers</code> removed. Use <code>QGLViewerPool</code> insead.</li> <li>Keys F1-F12 are binded to camera keyFrameInterpolator indexes 1..12 (was 0..11).</li> </ul> </ul> Other modifications: <ul> <li><code>zip</code> and <code>tar</code> files names include release number.</li> <li><code>rpm</code> now includes a static version of the library.</li> </ul> <b>Bug fixes or improvements</b> <ul> <li><code>QGLViewer::stateFileName</code> no longer skips the directory prefix.</li> <li><code>QGLViewer::drawLight</code> nicer and fixed.</li> <li>WheelEvents now use <code>fastDraw()</code>. A final <code>draw()</code> is now triggered at a short delay after the last wheel event.</li> </ul> <h2>Previous changeLog</h2> See the <a href="changeLog-1.html">previous changeLog</a> (Version 1.2.5 to 1.3.9, July 2002 to April 2005). <br/><br/> Please send any comment, suggestion or problem by <a href="mailto:contact@libqglviewer.com">e-mail</a>. <p> <a href="http://validator.w3.org/check/referer"><img src="images/xhtml.png" alt="Valid XHTML 1.0!" height="31" width="88"/></a> <a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="images/css.png" alt="Valid CSS!" width="88" height="31"/></a> <i>Last modified on Tuesday, September 30, 2008.</i> </p> </body></html>