9 February 2006 Andreas Fabri - The edge iterator now has the iterator category of the underlying container 10 September 2005 Sylvain Pion - Add missing this-> for g++ 4.1. 4 August 2005 Sylvain Pion - Add clear(). - Remove caching and CGAL_POLYGON_2_CACHED. 3 August 2005 Sylvain Pion - Remove CGAL_CFG_NO_MEMBER_TEMPLATES workarounds. - Remove CGAL_CFG_NO_LAZY_INSTANTIATION workarounds. - Remove CGAL_POLYGON_2_MOD_ITER, it is probably not needed anymore. ============================== CGAL 3.1 ======================== 19 December 2004 Sylvain Pion - Squash warning. 19 December 2004 Andreas Fabri - Updated file headers in the demos 25 September 2004 Sylvain Pion - _GLIBCXX_DEBUG fixes : avoid copying default construted iterators, by splitting Vertex_data's constructor in an init function which has access to Tree's end() iterator, instead of the default constructed one. 4 September 2004 Menelaos Karavelas - re-wrote author names in copyright notices using 7-bit characters 13 August 2004 Andreas Fabri - Replaced the \Ipe with an \includegraphics 24 June 2004 Sylvain Pion - Remove warning with g++ -O2 (and micro-optimisation). 22 June 2004 Sylvain Pion - Add some "using base::member;" to please g++ 3.4. 17 May 2004 Menelaos Karavelas - replaced Point by Point_2 in the demo in order to resolve clash with the Mac version of Qt 26 March 2004 Radu Ursu -made doc work with the current implementation of the Manual tools 10 February 2004 Radu Ursu -Updated headers in examples 4.35 (19 Jan 2004) [af] - Added bbox_2 functor to the doc, and replaced .bbox() function call by functor 4.34 (18 Jan 2004) - Rename CGAL_TYPENAME_MSVC_NULL to typename. 4.33 (18 Jan 2004) - Remove obsolete workaround for CGAL_CFG_NO_ITERATOR_TRAITS. 4.32 (1 Dec 2003) - Better documentation of the required Compute_area_2. 4.31 (1 Dec 2003) - Use compute_area_2(3 points) instead of construcing a temporary triangle. 4.30 (17 Nov 2003) [lk] - Removed CGAL_CFG_NO_SCOPE_MEMBER_FUNCTION_PARAMETERS workaround. =========================== CGAL 3.0 ===================== 4.29 (22 October 2003) [af] - new headers 4.28 (30 September 2003) [af] - moved \chapter from polygon.tex to main.tex 4.27 (23 September 2003) [mh] - Added one more missing typename 4.26 (22 September) - resubmission, just to be sure 4.25 (20 September) - Added typenames 4.24 - New headers 4.23 (17 Sep 2003) [af] - Removed Polygon_traits 4.22 ( 16 Sep 2003) [af] - Added missing typenames - deduced point type from the value type of the iterator 4.21 ( 16 Sep 2003) [af] - Removed dependency on Point_2 in Polygon_2_algorithms.h 4.20 ( 16 Sep 2003) [af] - Removed usage of class Polygon_traits 4.19 (10/09/2003) [rursu] + Qt_help_window class is in the CGAL namespace now 4.18 (07/09/2003) [rursu] + demo use now the new help class Qt_help_window instead of HelpWindow + demo use the new icon demoicon 4.17 (28/06/2003) [rursu] + fixed demo/Polygon/makefile for FreeBSD 4.16 (11/06/2003) [af] + Added workaround for SunPro CC which has switched off member templates in the RW STL 4.15 (19/05/2003) [ru] + Replaced Leda window demo by the Qt demo 4.14 (17 May 2003) [af] + Bug fix in Polygon_2_circulator.h after change in package Circulator 4.13 (6 April 2003) [sp] + Another couple of 'this->' and other missing 'std::' for g++ 3.4. 4.12 (4 April 2003) [gjg] + Added a few times 'this->' to keep newer compilers happy. 4.11 (31 March 2003) [af] + Changed #ifdef _MSC_VER to #ifdef CGAL_CFG_NO_SCOPE_MEMBER_FUNCTION_PARAMETERS 4.10 (12 September 2002) [af] + Added "const" to Polygon_2_const_edge_circulator::operator*() 4.9 (2 July 2002) + Added fill color support for window 4.8.1 (11 April 2002) + Corrected typo in Traits name in Edge_const_iterator 4.8 (8 April 2002) + Added operator-> for Edge_const_iterator 4.7 (20 March 2002) + Added test for availability of GMP in SimplicityTest.C 4.6.4 (15 March 2002) + No changes, but something went wrong during previous submit. 4.6.3 (15 March 2002) + Removed a few lines in Polygon_2_algortihms.C that were accidently left in during the rewrite to the kernel traits interface. 4.6.2 (17 December 2001) + Added a typename to deal with a warning. 4.6.1 (13 December 2001) + Small change to please Borland compiler 4.6 (6 December 2001) + Added check for identity in assignment and equality operators. 4.5.2 (5 December 2001) + Removed some non essential tests from PolygonTest.C. Those tests tested standard iterator functionality more than specific polygon functionality. 4.5 (30 October 2001) + Susan made a base class for Vertex_data so it can be shared with the Vertex_data used in generating random polygons (Generator package) + Susan changed template parameters of some internal class to make code sharing easier + Susan made traits classes passed by const-ref 4.4 (21 September 2001) + Fixed a bug in the simplicity test. 4.3 (10 September 2001) + Fixed bug in polygon area computation. 4.2.3 (31 July 2001) + Susan moved Polygon_2_ref directory up one level 4.2.2 (27 July 2001) + Susan made minor formatting changes, fixed some undefined references, and commented out some headings for empty sections. Added TOC for reference pages in intro.tex 4.2.2 (27 July 2001) + Susan made changes necessary in doc to do the manual split 4.2.1 (16 July 2001) + Added polygon_area_2.tex + Removed test program. 4.2 (9 July 2001) + Added random access iterator functionality to Vertex_iterator. + Removed ShoulFailToCompile test program. + Slight modification to AlgorithmTest.C. + Some changes in the documentation. 4.1 (4 July 2001) + Renamed second form of area_2 to polygon_area_2 (to fix compiler bug) + Rewrote some documentation. + Introduced a new vertex_circulator class, which should allow set, insert and erase by circulator. Alas, gives Internal Compiler Errors on MSVC. + Adapted test programs to work with new functionality. 4.0.1 (3 July 2001) + Made the caching design safer. Caching should be enabled explicitly by setting CGAL_POLYGON_2_CACHED. Some compilers will fail to compile with this flag. An extra flag, CGAL_POLYGON_2_MOD_ITER will allow to compile at the expense of safety 4.0 (2 July 2001) + Made Polygon_2 cache several operations. + Made iterators of Polygon_2 const. -not backwards compatible change Effected by flag CGAL_POLYGON_2_CONST_ITER + Added an area_2 algorithm that returns the area (in contrast to taking result as ref parameter) + Added and modified test programs. 3.3.1 (27 June 2001) + Fixed small problems in examples/Polygon/polygon_algorithms.C + Fixed wrong path in documentation. 3.3 (26 June 2001) + Fixed problems with Borland and MSVC compiler. + Added default temp[late argument for Container of Polygon. + Polygon constructors now take a traits parameter. + Added documentation (not complete yet). 3.2 (22 June 2001) + Converted further to kernel traits (using Equal_2 and Construct_segment_2) + Added a few missing typenames. + Made a preliminary split of the manual pages (work in progress). 3.1 (21 June 2001) + Converted the algorithms to use kernel traits. + Made polygon_traits be the kernel. + Fixed a bug in the is_simple implementation. + Removed two example files (which dealt with polygon traits) and adapted the two remaining. 3.0 (20 June 2001) + Completely rewrote the is_simple code. + Adapted the demo to work with the new cgal-window package. 2.20 (13 February 2001) + New polygon_assertions.h file 2.19 (29 September 2000) + Minor change in examples/Custompoint1.C to keep MSVC happy. 2.18 (1 September 2000) + Minor bug fix 2.17 (31 August 2000) + Moved class Simplicity_test_2 to a separate header file. 2.16 (24 August 2000) + Rewrote input operator>> for polygons. //-----------------------------------------------------------------------// 2.15 (30 June 2000) + Placed abs, is_negative and sign in namespace CGAL_NTS. //-----------------------------------------------------------------------// // 2.14 (25 May 2000) + Fixed edge_compare_consecutive in Polygon_2_algorithms.C with a fix by Susan. //-----------------------------------------------------------------------// // 2.13 (3 April 2000) + Fix in Polygon_2_algorithms.C, replacing non standard vector.resize(...) by vector.insert(...) //-----------------------------------------------------------------------// // 2.12 Rewrote example Custompoint1.C. It does not use 'using namespace CGAL' anymore. This led to problems with max() being defined twice. //-----------------------------------------------------------------------// // 2.11 In Polygon_2_algorithms.C: Modifications in sweepline algorithm for is_simple: + Made replacing edge by another edge more efficient (using insert with hint). + altered the output during debugging somewhat. + Removed a bug that did not initialise the vector index properly (it did a reserve, but used it as if a resize had been done). + Fixed a bug that no intersection check was done for new neighbours after erasing an edge. + Made all private members protected. + Renamed some functions. In SimplicityTest.C: + Return value now reflects if the tests went ok. + Added a testfile that detects the second bug mentioned above (erase bug). //-----------------------------------------------------------------------// // 2.10 + Removed test of old-fashioned stl functionality (value_type, iterator_category and distance_type functions) from test. + Removed include file guards. //-----------------------------------------------------------------------// // 2.9.1 + Added a typename in Polygon_2_algorithms.C //-----------------------------------------------------------------------// // 2.9 + Demo checks if LEDA is available. If not, it compiles but just gives an informative message at runtime. + Adapted template parameter names in CGAL/Polygon_2.C. //-----------------------------------------------------------------------// // 2.8.2 + Slight change to the documentation. //-----------------------------------------------------------------------// // 2.8.1 + Added typedef for pointer, reference and const_reference in Polygon. + Renamed some template parameters (reserved names). //-----------------------------------------------------------------------// // 2.8 +Updated demo directory - new makefile - std:: prefixes - display() called for window. //-----------------------------------------------------------------------// // 2.7 +Made some adaptations for compilation under Borland. In CGAL/Polygon_2_algorithms.C: - used iterator instead of const_iterator for index of Simplicity_test_2::SweepStatus. - Altered the declaration of area_2 a bit and moved it to the .h file (to please MSVC, which doesn't recognise the forward declaration otherwise) +Added a typedef of FT to example CustomPoint2.C //-----------------------------------------------------------------------// // 2.6 +Added std:: in several places in the testsuite. +Removed constructor that takes a circulator as parameter. MSVC and egcs had problems with this one in combination with the copy constructor. //-----------------------------------------------------------------------// // 2.5 +Added constructor that takes a circulator as parameter //-----------------------------------------------------------------------// // 2.4.8 +Added CGAL qualification to Less_xy_2 +Added std qualification to endl //-----------------------------------------------------------------------// // Changes in 2.4.8: //-----------------------------------------------------------------------// Some small fixes for getting things out of std (istream, ostream, endl). //-----------------------------------------------------------------------// // Changes in 2.4.7: //-----------------------------------------------------------------------// Added operator != to Polygon_2_edge_iterator.h //-----------------------------------------------------------------------// // Changes in 2.4.6: //-----------------------------------------------------------------------// Adapted the documentation. //-----------------------------------------------------------------------// // Changes in 2.4.5: //-----------------------------------------------------------------------// Incorporated the editorial changes of release 1.2 in the doc. //-----------------------------------------------------------------------// // Changes in 2.4.4: //-----------------------------------------------------------------------// Removed CGAL prefix in documentation //-----------------------------------------------------------------------// // Changes in 2.4: //-----------------------------------------------------------------------// Added operator != in Polygon_2_edge_circulator. Aded an explicit namespace CGAL in Polygon_traits_2.h. //-----------------------------------------------------------------------// // Changes in 2.3: //-----------------------------------------------------------------------// Now the examples and demo are also converted to namespace CGAL. //-----------------------------------------------------------------------// // Changes from 2.1 to 2.2: //-----------------------------------------------------------------------// Further changes to support namespace CGAL. //-----------------------------------------------------------------------// // Changes from 2.0 to 2.1: //-----------------------------------------------------------------------// New polygon_assertions.h, generated by the new script (CGAL namespace proof). Replaced #include by #include <...> Replaced CGAL_STD by std. //-----------------------------------------------------------------------// // Changes from 1.13 to 2.0: //-----------------------------------------------------------------------// Added support for namespace CGAL in the source and test files. Removed distance_type and value_type in Polygon_2_edge_circulator.h. //-----------------------------------------------------------------------// // Changes from 1.12 to 1.13: //-----------------------------------------------------------------------// Guarded definition of iterator_category in include/CGAL/Polygon_2_edge_circulator.h and include/CGAL/Polygon_2_edge_iterator.h by the flag CGAL_CFG_NO_ITERATOR_TRAITS. If iterator_traits are available, this definition is not necessary, as it is provided by a template. //-----------------------------------------------------------------------// // Changes from 1.9 to 1.10: //-----------------------------------------------------------------------// -> renamed transform to CGAL_transform -> removed comments ending with '\' // Changes in 1.9 -> solved three further typename problems for SGI CC 7.2 in the testsuite. //-----------------------------------------------------------------------// // Changes from 1.8 to 1.8a: //-----------------------------------------------------------------------// -> solved a typename problem for the SGI CC 7.2 compiler //-----------------------------------------------------------------------// // Changes from 1.7 to 1.8: //-----------------------------------------------------------------------// -> lines longer than 80 characters were corrected (except for assertions) //-----------------------------------------------------------------------// // Changes from 1.6 to 1.7: //-----------------------------------------------------------------------// -> some minor modifications to documentation -> typedef for value_type added (necessary for back insert iterators) //-----------------------------------------------------------------------// // Changes from 1.5 to 1.6: //-----------------------------------------------------------------------// To make the polygon code now compile with egcs the following needs to be done: 1) the flag -ftemplate-depth-NN has to be increased (for example to 25) 2) the file circulator needs a few adaptations for egcs -> added the keyword typename (for egcs) -> moved the edge circulator to a separate file -> removed some predicates from the traits class -> added a graphical demo program -> added polygon assertions/preconditions -> updated the documentation //-----------------------------------------------------------------------// // Changes from 1.4 to 1.5: //-----------------------------------------------------------------------// N.B. This is an intermediary release! The main purpose is to repair the errors in the custom points example programs. -> some additional test progams were added (not completely finished) -> removed the method append -> the method insert(position, first, last) is now only available if a compiler supports member templates -> the custom point programs now compile on SGI C++ 4.0 and g++ 2.7.2 using a new workaround flag CGAL_CFG_NO_TEMPLATE_FUNCTION_MATCHING -> I have changed a few predicates in the traits class to make the simplicity test more robust //-----------------------------------------------------------------------// // Changes from 1.3 to 1.4: //-----------------------------------------------------------------------// Removed a bug in the simplicity test. There was an error in the comparison of two edges in the following special case: + e1 / / / -----------------+---------+-------------- sweepline e2 In this case the edge compare function returned EdgeCompare(e1,e2) == true EdgeCompare(e2,e1) == true which may lead to inconsistencies in the sweep status. //-----------------------------------------------------------------------// // Changes from 1.2 to 1.3: //-----------------------------------------------------------------------// I have done result some experiments with defining a traits class with custom points. As a result the traits class requirements have been adapted slightly. Also some methods from the Polygon_2 class have been removed: - the constructors for Point_2, Segment_2, Triangle_2 and Iso_rectangle_2 - the transform method Using custom point types ------------------------ I have distinguished two ways of defining a custom point: I) deriving from CGAL_Point_2 II) using your own point type The first way should of course be possible. To make this easy for the user, a default traits class with a template parameter Point should be provided. I think that the second way should also be possible, but I'm not sure if this is the general opinion in CGAL. To enable this, the code may not rely directly on CGAL types and CGAL predicates. All these types and predicates must be put in the traits class. These were my experiences: 1) When I define my own point type, I lose virtually all kernel types and predicates. This means that I have to redefine and reimplement all types and predicates in the traits class (Vector, Segment, do_intersect() etc.). It would be nice if I could reuse some of the kernel types and predicates. This would have been easier if the kernel was designed like this template class Segment_2 template do_intersect(const Segment_2& p1, const Segment_2& p2) instead of template class Segment_2 template do_intersect(const Segment_2& p1, const Segment_2& p2) 2) If the traits class uses many other types (Iso_rectangle, Aff_transformation_2, Triangle_2, CGAL_Bbox_2, ...) then I have to plug in something for these types. When I create my own traits class I really don't want to do this. Therefore I decided to remove most of these types (and the corresponding methods) from the polygon traits class. Only the really necessary types (Point_2, Vector_2 and Segment_2) are still present. 3) I cannot get it to work for g++ 2.7.2, for two reasons: - the 'lazy instantiation bug' of g++ causes a problems: all methods that require a representation type R [like transform(CGAL_Aff_transformation_2&)] cannot be used, since the g++ compiler tries to instantiate them - even if all these methods are removed a type unification problem remains that I don't know how to solve (this happens also when I derive a point from CGAL_Point_2) On SGI C++ 4.0 it compiles without any problems. 4) I had to put some extra predicates in the traits class, to make the code independent from the CGAL kernel (the predicates 'sign' and 'equal_direction'). Furthermore I decided to change the predicate do_intersect(const Segment_2&, const Segment_2&) into do_intersect(const Point_2&, const Point_2&, const Point_2&, const Point_2&), to decrease the requirements on the type Segment_2. 5) When I use my own point type, I don't want to include or . This is not possible. The obvious solution (#define CGAL_REP_CLASS_DEFINED) doesn't work. Version 1.3 contains two test programs (Polygon1.C and Polygon2.C) with custom point types. These programs do not compile with g++ 2.7.2! //-----------------------------------------------------------------------// // Changes from 1.1 to 1.2: //-----------------------------------------------------------------------// -> is removed again -> some compiler flags are updated //-----------------------------------------------------------------------// // Changes from 1.0 to 1.1: //-----------------------------------------------------------------------// -> the polygon code is now divided over three files: - Polygon_2.h - Polygon_2_edge_iterator.h - Polygon_2_algorithms.h -> the following random access methods were added: const Point_2& vertex(int i) const Point_2& vertex(int i) const Point_2& operator[](int i) const Point_2& operator[](int i) Segment_2 edge(int i) const These methods are only available for compilers that instantiate templates when needed. For example the Gnu g++ 2.7.2 does not comply to this. -> a typedef problem for Sun C++ 4.2 is solved -> for the moment a new version of is added to the polygon code; this is needed for the flags CGAL_CFG_NO_MEMBER_TEMPLATES and CGAL_CFG_NO_LAZY_INSTANTIATION this file will be removed in the future -> the documentation is not up to date yet! //-----------------------------------------------------------------------// // Changes from 0.9 to 1.0: //-----------------------------------------------------------------------// -> bug fix in area computation -> the method 'append' is now called 'push_back' -> the polygon now uses a traits class -> support for Window_stream will be in the next version of Window_stream.h The following lines should be added to this file: //-----------------------------------------------------------------------// #ifdef CGAL_POLYGON_2_H #ifndef CGAL_WINDOW_STREAM_POLYGON_2_H #define CGAL_WINDOW_STREAM_POLYGON_2_H template < class I, class C > CGAL_Window_stream& operator<<(CGAL_Window_stream& os, const CGAL_Polygon_2 &P) { typedef CGAL_Polygon_2::Edge_const_circulator Edge_circ; Edge_circ edge_circ = P.edges_circulator(); if ( edge_circ != NULL) { Edge_circ end_circ = edge_circ; do { os << *edge_circ; os << (*edge_circ).source(); ++edge_circ; } while ( edge_circ != end_circ); } return os; } #endif // CGAL_WINDOW_STREAM_POLYGON_2_H #endif // CGAL_POLYGON_2_H //-----------------------------------------------------------------------//