change logs
BLUE LOG

Issue of a stable version.

GREEN LOG

Change available in the last stable version, announced by the last blue log.

RED LOG

Change on the current stable version, announced by the last blue log. The change will be available when the next stable version is issued.

* * *  *  * * *
Nov 28 2008

Qgar 4.0.0 (Caravelas version) is issued.

Oct 08 2008 QgarLib

Bug fixed in PgmFile.cpp in pgm header files generation. The maximum gray level was written in unreadable characters.
[ Vitor Vasconcelos ]

Aug 29 2008 QgarDoc

Improved the Compilation Guide. A deep explanation about how to use CMake options and how to compile Qgar with its many options.
[ Vitor Vasconcelos ]

Aug 28 2008

Qgar 3.0.1 (Boazinha version) is issued.

Aug 22 2008 Qgar

Improvement of 'install' session of CMake script. Now header files and libraries are installed in system directories.
[ Vitor Vasconcelos ]

Jul 03 2008 QgarLib

Bug fixed in PbmFile.cpp which could no read pbm files with empty commented header.
[ Vitor Vasconcelos ]

Dec 21 2007

Qgar 3.0 (Seleta version) is issued.

Dec 14 2007 Qgar

Documentation page upgraded.
[ Vitor Vasconcelos ]

Dec 11 2007 Qgar

Automatic generation of DEBIAN packages included in the compilation script.
[ Vitor Vasconcelos ]

Dec 06 2007 QgarLib

Definition of static member variables NB_POINTS and NB_CLUSTERS changed to implementation file in class GenKMeans.
[ Vitor Vasconcelos ]

Oct 22 2007 Qgar

Added the Windows Installer manual and the Linux Packaging manual.
[ Vitor Vasconcelos ]

Aug 31 2007 Qgar

The first Qgar Windows Installer ALPHA version is available in Qgar page on INRIAGforge.
[ Vitor Vasconcelos ]

Jun 04 2007 Qgar

The Qgar Project was added do INRIAGforge and started to use Subversion as version control tool.
[ Vitor Vasconcelos ]

Mar 15 2007 Qgar

The file CMakeLists.txt, reponsable for all install/compilation process was added. Files with the same name exists in all Qgar directories, related to local install procedures.
[ Vitor Vasconcelos ]

Mar 09 2007 Qgar

Re-engineering of Qgar directory structure. (Included a diagram) Under the main directory qgarlib the directories DocMisc, DocSources, Images and QgarEmacs were removed. All information concerning documentation is now located in QgarDoc directory. The files related to the old install and configurations (am_edit, bootstrap, config.h.in, configure.in.in, configure.pl, install-qgar, install-sh, ltconfig, ltmain.sh, Makefile.am, missing, mkinstalldirs, stamp-h.in) were removed. The directory qgardevlib contains the files of the development library. The directory QgarGUI was removed due the absence of Graphical Interface. The directory QgarDoc contains a directory called src were are all documentation information. In case of a compilation/package with documentation included, one directory called html contains all final documentation.
[ Vitor Vasconcelos ]

Mar 08 2007 QgarLib

Initialization of label and color in method makeBinaryImg of class ConnectedComponents.
[ Vitor Vasconcelos ]

QgarLib

In class LinkedChainList some pointers initialization in main algorithm.
[ Vitor Vasconcelos ]

QgarLib

In class QgarApp in method getStringOption correction of some memory allocation and conformation to C++ sintaxe. Minor correction in method nextWord: supression of useless variable.
[ Vitor Vasconcelos ]

QgarLib

The method startParam of QgarAppDescr now throws an exception if the descriptor parameter is QGE_NONE.
[ Vitor Vasconcelos ]

QgarLib

In function RWARCVECTOR_bestAttributes some variables where initialized and had the scope changed.
[ Vitor Vasconcelos ]

Feb 27 2007 QgarLib

Included the STL string header in file AbstractQgarError.cpp due to Visual Studio compilation.
[ Vitor Vasconcelos ]

QgarLib

In file KanungBinaryImage.C was added a #ifdef directive to garatee if on Windows, include the headers ctime and process.h due to Windows compilation issues.
[ Vitor Vasconcelos ]

Feb 26 2007 QgarLib

Included the STL limits header in files Component.cpp and LabeledSkeletonImage.cpp due to Visual Studio compilation.
[ Vitor Vasconcelos ]

Feb 20 2007 QgarLib

In the template class GenImage, the parameter GenImage_NoCheck was changed to CheckPolicy. Due the absence or warnings in gcc compiler concerning this problem, the correction was detected by Visual Studio 2005 compiler. Matrix operation methods had simplified return value to GenImage.
[ Vitor Vasconcelos ]

Feb 14 2007 QgarLib

The methods qgFill() and qgFind() are ordered by the number of arguments due to some new constraints of gcc compiler.
[ Vitor Vasconcelos ]

Jul 12 2006 QgarLib

Data member area_ and corresponding access function area() of class Maer are respectively renamed areaPx_ and areaPx() to conform to Qgar standard naming.
[ Gérald Masini ]

QgarLib

Bug fixed in class PgmFile: a possible state EOF must be cleared between successive readings in a stream (function readHeader). Some junk in class PbmFile is also removed.
[ Gérald Masini ]

Jul 07 2006 QgarLib

Class DericheGradientImage is reengineered: useless function and data members are suppressed, the number of runs over the image is minimized.
[ Gérald Masini ]

QgarLib

The bug occurring while reading the header of a PBM file (class PbmFile) is fixed: a string stream must be cleared (using function std::clear()) before being reused!
[ Gérald Masini ]

Jul 04 2006 QgarLib

Class CleanedBinaryImage is reengineered so that configuration tests are optimized: a cleaning runs now about 30% faster.
[ Gérald Masini ]

Jun 26 2006 QgarLib

File I/O is reengineered:

  • enum type QGEpbmFormat is renamed QGEpbm.

  • Functions isOpenRONLY, isOpenWONLY, isOpenAPPEND, isOpenRW, and isOpenRA are now predicates: they do not throw an exception when the tested file is not open in the required mode.

  • Functions to read/write image rows in PBM/PGM files are suppressed. The way to use DXF, Tgif, Maple and ordinary files is not changed. For the moment, there are just two functions to perform I/O on PBM/PGM files, read and write, which do not require to open (resp. close) the corresponding file before (resp. after) the I/O operation. Incidentally, it is no longer possible to open PBM/PGM files in append and read-append modes.

  • The source code of classes AbstractFile, AbstractPbmPlusFile, DxfFile, File, MapleFile, PbmFile, PgmFile, and TgifFile is refactored. The source code of the QgarApps applications is consequently updated.

[ Gérald Masini ]

QgarLib

Two new global functions, qgVersionNb, to get the number of the current Qgar Software version, and qgVersion, to get the full name of the current Qgar software version.
[ Gérald Masini ]

Apr 14 2006 QgarLib

New class DesShapeContext, to construct the so-called Shape Context descriptor, such as it is defined by Serge Belongie et al in IEEE Transactions on PAMI 24(24):509-522, 2002.
[ Gérald Masini ]

QgarLib

Global function qgMemSet is renamed qgMemSet0.
[ Gérald Masini ]

Mar 30 2006 QgarLib

Class Component is reengineered, mostly because of particular cases. A (connected) component is now provided with two extra features: the full list of the external contour points (computed using 8-connectivity when the component is black, 4-connectivity when the component is white; the list may contain duplicates due to possible one-pixel-thick parts), the perimeter of the component, i.e. the sum of the distances between the centers of the pairs of consecutive contour points (such a distance is 1 in North, East, South and West directions, sqrt(2) in North-East, South-East, South-West and North-West directions). New access functions are Component::contour, Component::accessContour, Component::contourVertices, Component::accessContourVertices, and Component::perimeter. Moreover, the default constructor is moved to a private section, to prevent its use by clients.
[ Gérald Masini ]

QgarLib

New versions of global functions qgAngle, qgAngleDegrees, qgSlope, and qgSlopeDegrees, to compute angles between vectors and segments: their arguments are the X and Y coordinates of the extremities of the vectors/segments.
[ Gérald Masini ]

QgarLib

All the constructors with one argument are declared explicit to prevent a possible use in implicit conversions.
[ Gérald Masini ]

Mar 13 2006 QgarLib

Function Maer::area, which computes the MAER area in pixels, is corrected: the pixels of the component borders are now counted in the area.
[ Gérald Masini ]

Fev 22 2006 QgarLib

New enum type QGEconnectivity (image.H ). A minor syntactical error in the source code of global function qgSqr_Dist is corrected. The implementation of some template member functions of classes DxfFile and TgifFile are moved from the corresponding source files to the corresponding header files.
[ Gérald Masini ]

Jan 31 2006 QgarApps

The Design and installation guide of a Qgar application is included in the online documentation (subsection QgarApps of section Design Papers in the left menu). It is also included in the documentation package which can be downloaded from this site, but it is not yet included in the tar archives.
[ Gérald Masini ]

Dec 05 2005 QgarLib

In order to bring functions AbstractGraphicsFile::write into the scope of classes DxfFile, TgifFile and VecFile (which derive from class AbstractGraphicsFile), declaration using AbstractGraphicsFile::write is moved from the private section (where it was) to the public section (where it should always have been) of the classes.
[ Gérald Masini ]

Nov 23 2005 QgarLib

New class VecFile, to read and write files in VEC format (as defined for the GREC Symbol Recognition Contests), is added to QgarLib; subsequent updates are completed. Incidentally, pure virtual functions write of class AbstractGraphicsFile have also been modified: The arguments which were primitives in the old versions are substituted for the X and Y coordinates of the points defining the primitives.
[ Gérald Masini ]

QgarLib

New global functions qgDist to compute the distance between 2 points: each point argument is given as two X and Y coordinates.
[ Gérald Masini ]

Nov 02 2005

Qgar 2.2 (Zmijovka version) is issued.

Oct 30 2005 QgarLib

The definitions of inline function of class WDSegment are provided with missing keyword inline (file WDSegmentList.H).
[ Jean-Pierre Salmon ]

Qgar

The installation guide (installGuide-tutorial.xml) is updated and completed.
[ Gérald Masini ]

Oct 27 2005 Qgar

The qgar-mdk.specs.in RPM specification file is updated so that symbolic links to Qgar applications are created in directory installation_directory/bin when installing Qgar packages from RPM's.
[ Gérald Masini ]

Oct 18 2005 QgarLib

Base class AbstractGenPointChain is provided with a virtual destructor, whereas it just had a default destructor until now!
[ Jan Rendek ]

Qgar

QgarLib documentation and related pages (particularly the bibliography) are updated. The new sh script install-qgar makes package Qgar installation easier. The full set of tests successfully run.
[ Gérald Masini ]

Oct 10 2005 QgarLib

Miscellaneous corrections. In file GenUGraph.H : include paths of files GenEdge.H and GenNode.H are corrected. In file GenUGraph.TCC : misplaced default values of parameters are removed in implementations of global helpers qgKMeans, header algorithm is included. In file KanungoBinaryImage.C: useless inclusion of header unistd.h is removed, In file QgarApp.C: the bug caused by a dynamic allocation of an array on the stack is fixed. In file QgarArgs.C: useless inclusion of header config.h is removed, In file TgifFile.C: the call to the non-standard function round is substituted for a call to the standard function floor. In file ThresholdedBinaryImage.C: the implementation of the destructor is defined (it was not until now!). In file GenKMeansTest.C: the call to the non-standard function random is substituted for a call to the standard function rand.
[ Jan Rendek ]

Oct 04 2005 QgarLib

New global functions qgErf and qgErfc (just the same as non-standard C functions erfc and erf from <cmath>) are implemented and successfully tested. The call to C function erfc in class Mask1dGauss is substituted for a call to function qgErfc.

QgarLib

Class Math is provided with functions relError (resp. setRelError) to get (resp. set) the precision rate for numeric calculus, which is especially used in both global functions above.
[ Gérald Masini ]

Sep 27 2005 QgarLib

All uses of obsolete keyword register are removed. All calls to gcc-specific macro __PRETTY__FUNCTION__ are substituted for explicit function names (character chains).

Class GenKMeans is provided with functions accessClusters and accessClusterElts to access clusters as instances of class GenCluster and as vectors of pointers to cluster elements, respectively.
[ Gérald Masini ]

Sep 22 2005 QgarLib

A whole bunch of functions are renamed for standardization. Globals: __qgarPrintAssert as __qgPrintAssert, qgArrayInit as qgFill, qgArrayMaxIdx as qgMaxElement, qgArrayMinIdx as qgMinElement, qgBlankArray as qgMemSet, qgArrayMapF as qgForEach. Global helpers: KanungoDegradation as qgKanungoDegradation, qgKmeans as qgKMeans, thresholdedBinarization as qgThresBinarization. In class Math: qgEDouble as epsilonD, qgEFloat as epsilonF, qgEInt as epsilonI, qgERadian as epsilonRadian, qgEDegree as epsilonDegree, qgSetEDouble as setEpsilonD, qgSetEFloat as setEpsilonF, qgSetEInt as setEpsilonI, qgSetERadian as setEpsilonRadian, qgSetEDegree as setEpsilonDegree. In class GenKMeans: clusterRefs as clusterElts.
[ Gérald Masini ]

QgarLib

Class Math is provided with new constants, in the way of standard header math.h: QG_E, QG_LOG2E, QG_LOG10E, QG_LN2, QG_LN10, QG_2_PI, QG_2_SQRT_PI. All uses of M_PI et M_PI_2 are subsequently substituted for QG_PI et QG_PI_2. Class Math is also provided with constants QG_RADIANS_TO_DEGREES and QG_DEGREES_TO_RADIANS for conversions between radians and degrees.
[ Gérald Masini ]

Sep 12 2005 QgarLib

Some classes are renamed for standardization: ThresholdedBinaryImage as ThresBinaryImage, HysteresisThresholdedBinaryImage as HysteresisBinaryImage, Dist34IntImage as Dist34Image, DistBlackCCImage as Dist8cBlackCCImage.
[ Gérald Masini ]

Sep 07 2005 QgarLib

The bug in global function qgAngle(const GenPoint<T>&, const GenPoint<T>&, const GenPoint<T>&) is fixed.
[ Gérald Masini ]

QgarLib

The documentation about modules is updated.
[ Gérald Masini ]

Jul 27 2005 QgarLib

Class TrierBinaryImage is renamed TTBinaryImage for standardization, and is entirely reengineered. The source code is completely new (in particular, the recurrent bug of the previous version is fixed) and runs much faster.
[ Gérald Masini ]

Jul 19 2005 Qgar

Perl script configure.pl is modified so as to include the installation guide files, installGuide.css and installGuide.html, in distributed packages.
[ Gérald Masini ]

Jul 18 2005 QgarApps

All applications are updated according to last Qgarlib modifications. All tests are updated and run successfully.
[ Gérald Masini ]

Jul 13 2005 Qgar

All patterns (of Doxygen macros) to be used from (x)emacs to edit header and source files are updated and simplified for more convenience. The formats of the messages sent by the corresponding (x)emacs macros are standardized. New patterns qgar.pattern-template-H, gar.pattern-template-simple-H, and qgar.pattern-TCC are used for files including template classes. Pattern files qgar.pattern-C-test, qgar.pattern-H-simple, and qgar.pattern-H-test are respectively renamed qgar.pattern-test-C, qgar.pattern-simple-H, and qgar.pattern-test-H for standardization. The bug in the (x)emacs macro inserting the class name in a visited file (menu QGAR:insert) is fixed. The toggle macro, to switch from a header file to the corresponding source file, and conversely, now deals with .TCC extensions. In the same way, the various macros designed to visit files deal with such extensions (menu QGAR:visit-file).
[ Gérald Masini ]

Jun 28 2005 QgarLib

The default constructor of class FreemanChain is removed, as it was a source of pernicious bugs.
[ Gérald Masini ]

QgarLib

All template classes (GenConvexHull<T>, GenConvolImage<T>, GenEdge<T>, etc.) are provided with predefined types (using typedef) in the STL way, so that clients have access to the instantiation values of the template parameter types: typically, value_type represents the instantiated parameter type (T), reference represents a reference to the instantiated parameter type (T&), const_reference represents a constant reference to the instantiated parameter type (const T&), pointer represents a pointer to the instantiated parameter type (T*), const_pointer represents a constant pointer to the instantiated parameter type (const T*).
[ Gérald Masini ]

Qgar

In the documentation, inherited functions are now listed in class interfaces. The major bugs reported by Doxygen log files of documentation generation are fixed.
[ Gérald Masini ]

Jun 16 2005 QgarLib

New file AbstractGraphicsFile.TCC contains the implementation of the functions of class AbstractGraphicsFile.
[ Gérald Masini ]

QgarLib

The names of the functions of classes DxfFile and TgifFile are standardized: public functions to read an object in a file (input) are prefixed by read, public functions to write an object in a file (output) are prefixed by write, auxiliary (protected) functions to dump an object in a file are prefixed by save, and auxiliary (protected) functions to get an object from a file are prefixed by retrieve. Class DxfFile is provided with new and renamed access functions: chains (resp. accessChains), segments (resp. accessSegments) arcs (resp. accessArcs), and polylines (resp. accessPolylines) to get a copy of (resp. a protected access to) the corresponding primitives contained by the current file.
[ Gérald Masini ]

Jun 09 2005 QgarLib

In classes PbmFile and PgmFile, Input/Output functions check the correct opening of the current file before performing the corresponding operation. Only functions of graphics files (classes DxfFile and TgifFile) did so previously.
[ Gérald Masini ]

Jun 01 2005 QgarLib

The interfaces of all primitives and Qgar primitives classes are now homogeneous, i.e. include same-named functions for access, transformations, common operators, and geometrical operations. Main changes:

  • Primitives: translate functions are now calls to global functions (see file _QGAR_translation.TCC). More generally, all member functions which do not modify the structure of primitives are removed from the corresponding classes and transformed into global functions: see files _QGAR_angle.H, _QGAR_distance.H, _QGAR_geomPredicates.H, _QGAR_point.H, _QGAR_segment.H, and _QGAR_translation.H. Incidentally, function translate(const GenPoint<T>&) is definitively removed.

  • (Qgar) primitives: classes Gen(Qgar)Segments and Gen(Qgar)Arcs are provided with functions equal and notEqual testing both coordinates equality and attributes (thickness, color, outline) equality. Functions setXYSource and setXYTarget from classes AbstractGen(Qgar)Primitive are renamed setSource and setTarget, respectively.

  • Qgar primitives: functions dx and dy are moved to class AbstractGenQgarPrimitive (they were previously declared in each Qgar primitive class). Data members _thickness, _color and _outline (for Qgar primitive attributes) are now declared in that precise order and must consequently be used in that precise order in the initialization lists of constructors.

  • (Qgar) segments: features length, rho, and theta are now computed when needed only (they were previously stored in the structure of segments).

  • (Qgar) arcs: the radius, as well as so-called source and target angles, are computed when needed only (they were previously stored in the structure of arcs). New functions setXCenter and setYCenter set the corresponding coordinate of the center.

  • (Qgar) polygons and polylines: new function getVertices provides non-protected access to the vertices, and new function size gives the number of vertices.

All classes and tests are subsequently updated. All tests run successfully.
[ Gérald Masini ]

Apr 11 2005 QgarApps

Installation of a new application, QAdist34Skeletonization, which constructs the skeleton of a binary image, using the 3-4 Chamfer distance transform.
[ Jan Rendek ]

Mar 29 2005 QgarLib

Minor improvements and changes: new global functions, e.g. qgSlope and qgSlopeDegrees to get the angle between a segment and the X axis, new mathematical constants, e.g. square root of 3, new value names for some global enum types, e.g. QGE_OUTLINE, removal of some useless (global) functions, e.g. qgAngleSign.
[ Gérald Masini ]

Mar 25 2005 QgarLib

The geometrical structure of a primitive is no longer self-updated when its source or target is modified using functions setSource, setTarget, or setSourceTarget, as well as functions performing geometrical transformations like translations and so on. Functions fixSource, fixTarget, and fixSourceTarget must be used from now on when self-update is needed. Corresponding updates are respectively performed by functions updateSource, updateTarget, and updateSourceTarget, which are pure virtual functions of class AbstractGenPrimitive. They are implemented in each class defining a primitive type and deriving from AbstractGenPrimitive.

By default, concrete functions updateSource, updateTarget, and updateSourceTarget, have no effect. Users needing self-updating primitives must redefine these functions in own classes deriving from the appropriate built-in primitive classes.
[ Gérald Masini ]

Mar 01 2005 QgarLib

Global functions are now dispatched into several files, according to their application domain: _QGAR_angle.(H/TCC) for functions computing angles, _QGAR_distance.(H/TCC) for functions computing distances, _QGAR_geomPredicates.(H/TCC) for functions implementing geometrical predicates, _QGAR_point.(H/TCC) for functions applying to points, _QGAR_segment.(H/TCC) for functions applying to line segments, _QGAR_symmetry.(H/TCC) for functions performing symmetries, _QGAR_translation.(H/TCC) for functions performing translations. File _QGAR_globalPrimitiveFunctions.(H/TCC), which included the code of all the definitions of the global functions until now, is removed. Inclusion directives in users' existing code remain unchanged.
[ Gérald Masini ]

Feb 08 2005 QgarLib

Exception throws are substituted for calls to standard function assert() in class QgarArgs.
[ Gérald Masini ]

QgarLib

Global functions to test approximate (in)equality are available for scalar types int, float and double, as well as for angles, in radians and degrees. Each of these types is associated with a test threshold, which may be changed by the user.
[ Gérald Masini ]

QgarApps

Various minor bugs in the description files and in the source code of the applications are fixed.
[ Gérald Masini ]

Jan 28 2005 QgarLib

The source code of the function members of all the template classes is removed from the header files and stored into files with extension .TCC, which are included at the end of the corresponding header files.
[ Gérald Masini ]

Jan 27 2005 QgarLib

Points and all (geometrical and graphical) primitives are hereafter defined in a single header file, primitives.H, to prevent inclusion loops problems. Header files for separate primitives (GenPoint.H, GenSegment.H, GenQgarSegment.H, etc.) can no longer be directly included. They are renamed using prefix _QGAR_ (_QGAR_GenPoint.H, _QGAR_GenSegment.H, _QGAR_GenQgarSegment.H, etc.).
[ Gérald Masini ]

QgarLib

Header files Globals.H, globalFunctions.H, and qgarTypes.H are removed. Corresponding globals, enums and types are dispatched into headers defining the related classes, when appropriate. For example, type QGEoutline is now defined together with graphical primitives, so that there is no need to include an extra header when including primitives.H. Other globals and types are defined in three new header files: array.H (utilities for arrays) image.H (utilities for images), and math.H (mathematical functions and constants of general interest). Files qgarSTL.H and qgarAssert.H are respectively renamed stl.H and assert.H, to conform to the new way of naming files for globals.
[ Gérald Masini ]

Qgar

The source code of the QgarLib library and of the applications is subsequently corrected. Compilation successfully runs, but tests do not yet. The documentation is updated.
[ Gérald Masini ]

Oct 13 2004 QgarLib

Class QgarApp for applications is completed with return codes to return properly from applications (instead of exiting) in case of normal termination, error, and so on. Available applications are subsequently updated.
[ Gérald Masini ]

Oct 05 2004 QgarLib

New classes GenUGraph, GenNode, and GenEdge, for undirected graphs. Tests are successfull, and documentation is updated. Obsolete classes GenUndirectedGraph, GenGraphNode, GenGraphEdge, and SegmentGraph are removed.
[ Gérald Masini ]

Sep 08 2004

Qgar 2.1.1 (Pshenichnaya version) is issued.