Mael Rouxel-Labbé
d62927d9e7
Removed empty lines from the constraint matrix
...
Default linear solvers are Umfpack and Eigen SparseLU
2017-06-22 16:15:57 +02:00
Andreas Fabri
92accde094
static_cast to avoid warnings
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
37e35eeea8
Misc minor changes
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
df70fedbcf
Small changes in matrix size in SMP's orbital
...
Preparation to clean the matrix A from its useless (but not harmful in practice)
empty lines.
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
9a148a4a06
Simplified SMP's CMakeLists.txt
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
c62e503a39
Added Orbital Tutte parameterizer and an example
...
Only the orbifold type I method with MVC coefs is implented in this commit
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
f910d2ee60
Misc minor changes
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
ccdf3a6bf4
Added some safety guard when vertices are given to border paramterizers
...
to make sure that the given vertices are on the same border/connected component.
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
de433db108
Fixed some headers still using vertices(mesh) or faces(mesh)
...
...which grabs too many entities while we only want a connected component.
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
20bcc9233c
Improved the initial parameterization of ARAP
...
and gave bool_pmap its own header
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
8e77c99653
Fixed seam meshes not always picking the longest border in a connected component
2017-06-22 16:15:57 +02:00
Mael Rouxel-Labbé
cde65fd465
Fixed validity tests considering all the faces of the mesh
...
and not a single connected component
2017-06-22 16:15:57 +02:00
Andreas Fabri
7e9ecd5cf2
more backticks
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
66a2119da6
Documentation changes for SMP
2017-06-22 16:14:55 +02:00
Andreas Fabri
59a04915db
fixes
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
a8f82f4382
Merged the ParameterizedTraits_3 and BorderParameterizer_3 concepts
...
Incident changes:
- Angle computations helper, Error_code and kernel_traits<TriangleMesh> live in
their own file
- Doc and examples changes
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
8922e36408
Fixed compilation after moving headers
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
4f811d1dbe
Moved all headers into a Surface_mesh_parameterization folder
...
This is simply the move + adding a convenience file at the root, and no other
changes, thus it does not compile.
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
e96c474f78
Documentation changes for SMP
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
7ce8fdf3f6
Misc minor changes
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
2ee44c1c15
Added discrete authalic and ARAP to the Polyhedron demo
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
a8492d987f
Reworked the way corner vertices are passed to the square_border_parameterizer
...
and added an example of usage.
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
0438d6d34d
Fixed some doc warnings
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
6f40a05af1
Removed an unused error code
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
fcfe9662af
Renamed the function parameterize_border() of border parameterizers
...
to the simpler "parameterize()"
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
a52040fb4e
Added is_one_to_one_mapping() to all parameterizers
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
8da6683ef0
Misc minor changes
...
Some doc, some typos, some indentation...
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
b17c60f4d8
Fixed const correctness in SMP
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
62979fc9b5
Improved SMP's documentation
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
bb9230f4ff
Fixed discrete authalic example
...
This example is now used to illustrate the use of various border parameterizers
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
656d996e6f
Fixed Circular and Square border parameterizer
...
-- Reintroduced the uniform circular border parameterizer for consistency
-- Fixed the Square border parameterizer to work with BGL meshes
-- The square border parameterizer can now be given four vertices that will
be used as corners of the square border
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
013e32d314
Replaced calls to num_vertices()
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
ae06b044ce
Improved existing SMP code
...
-Factorized the different tools to construct vertices and faces container in
a single class.
-Updated all examples accordingly and replaced the polylines output by an OFF
output across all files.
-Some other minor changes (missing includes, indentation, typos, etc.)
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
3245d726e3
Misc minor changes
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
c71d8285d0
Updated the examples of the SMP to work with the new Seam mesh
...
Also a small change in the Polyhedron demo
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
922d072609
Added flip and non-valid parameterization tests
...
MVC post processor is only called in ARAP if the parameterization is no valid.
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
6d47ef3735
Fixed the MVC post processor overzealously constraining all borders
...
As for the 'real' MVC parameterizer, only one border must be constrained.
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
b8d7bd24c0
Fixed using ARAP's border parameterizer in the initial MVC parameterization
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
12344fd325
Fixed the brute force 'simpleness' test of the borders in the ARAP post processor
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
a7da445497
The initial parameterization in ARAP_param now depends on the number of borders
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
fcdc127a08
Fixed a function duplicated over different files
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
3644a91f82
Added a way to write uvmaps into OFF files
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
4a9f01685a
Fixed not using the solver member in MVC_post_processing_3
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
30a7d7843f
Updated Surface_mesh_parameterization's documentation
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
e5dcc1c9a0
Properly factorized the Containers_filler internal class
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
7e7ff03831
Changed some comments
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
e8d22d0f24
Some progress towards compilation of ARAP with a seam_mesh
...
Most of the issues come from the incomplete seam_mesh graph traits now.
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
320e40d6c4
Fixed some return type in the MVC post processor
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
8afe8af986
Fixed choice of fixed vertices for different types of lambda
...
Not too sure about that change, but it (sort of) makes sense to only
fix one point when lambda !=0, it works, and looking -now- at the other
branch on ARAP, they had done the same.
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
95bc5f4b91
Changed some comments
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
8a1688e13f
Fixed include directives
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
b4c0784a67
Small changes to make ARAP work with a Surface_mesh
...
Note that this requires the boost hash maps of commit ec7aa45
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
23ac9a95c1
Fixed compilation of the ARAP paramaterizer
...
The location of Misc_conic.h was changed by the merge of master
2017-06-22 16:14:55 +02:00
Sébastien Loriot
8a8948ebed
update doc
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
92496eacfc
Split post processing functions away from ARAP parameterizer's class
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
a83fecb3c7
Changed some comments
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
0f10528369
Added post processing that (attempts to) fix potential flips in the ARAP param
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
17e3477151
Changed some comments
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
c73c0c904e
Reworked the counter of the energy-minimizing loop
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
e738fc6dac
Added a macro to choose which vertices are fixed
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
fd4e709c1b
Added a way to compute 'a' using the algeabric kernel to solve the cubic eq
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
8cbd200250
Changed some comments
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
81cfaeb944
Fixed using the wrong coordinates in the RHS of the system and the energy
...
Global coordinates were used instead of UV coordinates...
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
18091ce6df
Removed superfluous references to property maps
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
4388da9582
Added draft of the local/global mesh parameterization algorithm
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
688340cf50
Fixed a comment
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
65b2708daf
Removed the superfluous uv_map from ContainersFiller
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
c478443b3e
Fixed const correctness
2017-06-22 16:14:55 +02:00
Mael Rouxel-Labbé
79490fd8b0
Cleaned code (indentation, whitespace, etc.)
2017-06-22 16:14:55 +02:00
Maxime Gimeno
c403f3c688
Fix remaining bugs and add a "highlighting" of the current patch being projected.
2017-06-22 16:12:26 +02:00
Maxime Gimeno
ee8f7d0dff
Fix the LSCM Parameterizer
2017-06-22 16:12:26 +02:00
Maxime Gimeno
fd8336ecf8
Implementation of the seaming.
2017-06-22 16:12:26 +02:00
Maxime Gimeno
407bb3e675
Restore Parameterization_plugin with the BGL API.
2017-06-22 16:12:26 +02:00
Andreas Fabri
63a5c1fd0b
still WIP
2017-06-22 16:12:26 +02:00
Andreas Fabri
c03ca8fb63
broken code, as I ask Sebastien to find the compile timer error
2017-06-22 16:12:26 +02:00
Andreas Fabri
f6f52e01b0
cleanup and fix of Simple_parameterization.cpp
2017-06-22 16:12:26 +02:00
Maxime Gimeno
63abf210c9
WIP parameterization_plugin + fixes for parameterization files.
2017-06-22 16:12:26 +02:00
Andreas Fabri
f7b826125b
Add the possibility to pass the two vertices that are selected
2017-06-22 16:12:26 +02:00
Andreas Fabri
92be8f478d
Add lscm.cpp
2017-06-22 16:12:26 +02:00
Andreas Fabri
45e19be366
Use property maps to store seam edges and vertices
2017-06-22 16:12:26 +02:00
Andreas Fabri
902ff15f87
fix target(halfedge, Seam_mesh) for when the halfedge is on the border of a seam edge
2017-06-22 16:12:26 +02:00
Andreas Fabri
9cc84e828c
Add an initial User Manual section for Seam_mesh
2017-06-22 16:12:26 +02:00
Andreas Fabri
162759ca87
polish
2017-06-22 16:11:38 +02:00
Andreas Fabri
ac11cf8032
deal correctly with a patch
2017-06-22 16:11:38 +02:00
Andreas Fabri
36530e3f98
polish
2017-06-22 16:11:38 +02:00
Andreas Fabri
b11385455f
Fix target(Seam_msh)
2017-06-22 16:11:38 +02:00
Andreas Fabri
82f2a2b4ca
WIP
2017-06-22 16:11:38 +02:00
Andreas Fabri
afc6476992
start rewriting the doc
2017-06-22 16:11:38 +02:00
Andreas Fabri
fa68850338
Use Vertex_around_target_circulator again
2017-06-22 16:11:38 +02:00
Andreas Fabri
869dfbb1e9
finally it works with a Seam_mesh
2017-06-22 16:11:38 +02:00
Andreas Fabri
a6a62bc4f6
index vertices inside parameterize()
2017-06-22 16:11:38 +02:00
Andreas Fabri
b7c5d49689
clean Simple_parameterization.cpp
2017-06-22 16:11:38 +02:00
Andreas Fabri
b077704d04
rename template parameter; remove files related to the mesh_patch class
2017-06-22 16:11:38 +02:00
Andreas Fabri
46ed3edf92
LSCM seems to work too
2017-06-22 16:11:38 +02:00
Andreas Fabri
6dc52b4166
port two parametrisation classes
2017-06-22 16:11:38 +02:00
Andreas Fabri
7901186856
remove Taucs support
2017-06-22 16:11:38 +02:00
Andreas Fabri
92a463bdcc
split constructor of Seam_mesh in two functions
2017-06-22 16:11:38 +02:00
Andreas Fabri
99a3b99283
make connecteced_component work for Seam_mesh
2017-06-22 16:11:38 +02:00
Andreas Fabri
4a2344f0cc
discrete authalic now works for Surface_mesh and for a Seam_mesh
2017-06-22 16:11:38 +02:00
Andreas Fabri
e1089a9168
WIP: Add vertex_descriptor which is a kind of canonical halfede_descriptor
2017-06-22 16:11:38 +02:00
Andreas Fabri
1164cb14bf
Discrete Authalic parametrisation now works for a Seam_mesh with borders and seams
2017-06-22 16:11:38 +02:00
Andreas Fabri
b7cdb47463
WIP - lets get it working with the Seam_graph next
2017-06-22 16:11:38 +02:00
Andreas Fabri
c746425f8c
Authalic parametrization works with a Surface_mesh with border
2017-06-22 16:11:38 +02:00
Andreas Fabri
3d6b3ca909
fix
2017-06-22 16:11:38 +02:00
Andreas Fabri
4bd2f363d0
simplify code
2017-06-22 16:11:38 +02:00
Andreas Fabri
b237249d0b
deal with seam tree. so far seam must not touch the border
2017-06-22 16:11:38 +02:00
Andreas Fabri
e90fbb9867
it seems to work with seams. need visual output next to inspect it
2017-06-22 16:11:38 +02:00
Andreas Fabri
871b831992
use halfedge and not vertex circulator
2017-06-22 16:11:38 +02:00
Andreas Fabri
37a32d6727
WIP
2017-06-22 16:11:38 +02:00
Andreas Fabri
a09df5d2d2
simplify code
2017-06-22 16:11:38 +02:00
Andreas Fabri
9699e99162
make square border parameterizer work
2017-06-22 16:11:38 +02:00
Andreas Fabri
d77bb6c242
make all parametrization methods work
2017-06-22 16:11:38 +02:00
Andreas Fabri
f664cb4268
get it working for Surface_mesh
2017-06-22 16:11:38 +02:00
Andreas Fabri
cb9f0aa21d
fixes so that LSCM works as well
2017-06-22 16:11:38 +02:00
Andreas Fabri
3350d2871c
simplify the border (will become complicated again later, but different)
2017-06-22 16:11:38 +02:00
Andreas Fabri
59dd85f56d
simplify the border (will become complicated again later, but different)
2017-06-22 16:11:38 +02:00
Andreas Fabri
6399e49be0
use a property map for the uv values
2017-06-22 16:11:38 +02:00
Andreas Fabri
511add25fa
introduce index property maps
2017-06-22 16:11:38 +02:00
Andreas Fabri
8721b58b1a
towards a BGL API -- still a long way to go :<
2017-06-22 16:11:38 +02:00
Sébastien Loriot
50510c05ea
add include directive for license of all GPL header files
...
done using:
ack-grep "^GPL" */package_info/*/license.txt -l | awk -F "/" '{print $1}' > /tmp/gpl_packages
for i in `cat /tmp/gpl_packages | \
grep -v Operations_on_polyhedra | \
grep -v Algebraic_kernel_for_circles | \
grep -v Algebraic_kernel_for_spheres | \
grep -v Polyhedron_IO`;
do
echo $i
python Scripts/developer_scripts/add_license_in_pkg_header.py $i
done
python Scripts/developer_scripts/add_license_in_pkg_header.py Operations_on_polyhedra Polygon_mesh_processing
python Scripts/developer_scripts/add_license_in_pkg_header.py Algebraic_kernel_for_circles Circular_kernel_2
python Scripts/developer_scripts/add_license_in_pkg_header.py Algebraic_kernel_for_spheres Circular_kernel_3
python Scripts/developer_scripts/add_license_in_pkg_header.py Polyhedron_IO Polyhedron
2017-01-19 15:20:25 +01:00
Andreas Fabri
8bf639ab94
static -> CGAL_STATIC_THREAD_LOCAL_VARIABLE
2016-12-01 16:23:46 +01:00
Simon Giraudot
da9422e77b
Warning fix: variable may be used uninitialized
2015-12-17 10:54:36 +01:00
Simon Giraudot
d77dd257ef
Warning fix: unused parameter
2015-12-17 10:53:21 +01:00
Sébastien Loriot
f151025380
fix the bad conflict resolution
2015-09-26 18:07:36 +02:00
Sébastien Loriot
da650cbd1c
Merge branch 'old/CGAL-Solver-packages-GF' into CGAL-Solver-package-GF
2015-09-26 15:47:54 +02:00
Simon Giraudot
ba619c8a0d
Include Eigen default parameter in manual
2015-09-18 15:33:12 +02:00
Simon Giraudot
6ef242b7af
Remove useless duplicate code, use default template parameter to call Eigen_solver_traits
2015-09-18 10:30:13 +02:00
Simon Giraudot
2b676edd1e
Clean up least square solver wrapper
2015-08-24 15:02:51 +02:00
Simon Giraudot
6d1332c3fa
Replace OpenNL by Eigen Conjugate Gradient (not least squares yet). More than 2x speed up.
2015-08-10 07:54:01 +02:00
Simon Giraudot
db4a974f64
Eigen interface for LSCM
2015-08-07 11:55:00 +02:00
Andreas Fabri
8ae42933c7
Do not explain OpenNL and say that LSCM has no parameter for a solver
2015-04-13 16:37:40 +02:00
Laurent Rineau
495ed0b6ab
Merge remote-tracking branch 'origin/CGAL-Less_warnings-GF'
...
Fix various warnings.
Tested in CGAL-4.5-Ic-97. Approved by the Release Manager.
2014-07-16 17:48:56 +02:00
Andreas Fabri
c0be9a38d3
initialize to avoid warning
2014-07-11 09:27:10 +02:00
Sébastien Loriot
2892c2fb4e
Merge branch 'Surface_modeling-new_package-GF-old' into Surface_modeling-new_package-GF
...
Conflicts:
Documentation/biblio/geom.bib
Documentation/doxyassist.xml
2014-04-08 14:41:09 +02:00
Sébastien Loriot
6f3c2d1151
pre-factor -> factor
2014-02-17 09:12:25 +01:00
Andreas Fabri
6ecba63bb1
Mostly add #includes
2013-09-14 19:31:13 +02:00
Sébastien Loriot
b352ca7410
Merge branch 'Surface_modeling-new_package-GF-old' into Surface_modeling-new_package-GF
2013-08-06 16:34:47 +02:00
Sébastien Loriot
d282ade623
use \cgalCite instead of \cite
...
using perl -i -pe 's/\\cite\s*{?([a-zA-Z0-9:-]+)}?/\\cgalCite{$1}/g'
2013-08-05 18:25:26 +02:00
Sébastien Loriot
d9cf655db1
Merge branch 'Surface_modeling-new_package-GF-old' into Surface_modeling-new_package-GF
...
Conflicts:
Documentation/doxyassist.xml
Documentation/header_package.html
Polyhedron/demo/Polyhedron/CMakeLists.txt
2013-06-27 08:55:59 +02:00
Andreas Fabri
cfd69b1490
long/int -> size_t
2013-02-27 11:44:55 +01:00
Sébastien Loriot
c8fb9844aa
Merge branch 'gsoc2011-surface-modeling-Yzju' into Surface_modeling-new_package-GF
...
Conflicts:
.gitattributes
AABB_tree/doc_tex/AABB_tree_ref/AABBGeomTraits.tex
AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex
AABB_tree/dont_submit
AABB_tree/test/AABB_tree/AABB_test_util.h
AABB_tree/test/AABB_tree/aabb_correctness_triangle_test.cpp
Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h
Boolean_set_operations_2/examples/Boolean_set_operations_2/bezier_traits_adapter2.cpp
Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake
Installation/cmake/modules/CGAL_Macros.cmake
Installation/cmake/modules/CGAL_SetupDependencies.cmake
Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_triangulation.cpp
Maintenance/svn_server/hooks/Mail/Sender/CType/Ext.pm
Polyhedron/demo/Polyhedron/CMakeLists.txt
Polyhedron/demo/Polyhedron/Polyhedron_demo_normal_estimation_plugin.cpp
Polyhedron/demo/Polyhedron/Polyhedron_demo_point_set_outliers_removal_plugin.cpp
Polyhedron/demo/Polyhedron/data/cow.off
Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_segments_3.cpp
Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt
Surface_reconstruction_points_3/include/CGAL/Poisson_reconstruction_function.h
2013-02-07 17:00:00 +01:00
Philipp Möller
e271a13a33
Document files in Surface_mesh_parameterization
2012-12-04 14:25:00 +01:00
Sébastien Loriot
4ec9529581
Merge branch 'doxy-port-pmoeller'
...
Conflicts:
.gitattributes
Surface_reconstruction_points_3/include/CGAL/Poisson_reconstruction_function.h
Surface_reconstruction_points_3/include/CGAL/Reconstruction_triangulation_3.h
Surface_reconstruction_points_3/include/CGAL/k_nearest_neighbor.h
2012-11-27 10:05:41 +01:00
Sébastien Loriot
bfca42081d
add missing backquotes in cgalModels
2012-11-23 09:55:55 +01:00
Sébastien Loriot
ae8362b7d6
replace \cgalModels ::FOO by \cgalModels `FOO`
...
using:
perl -pi -e 's/\\cgalModels\s+::([A-Za-z0-9_:]+)\s*$/\\cgalModels `$1`\n/'
2012-11-23 09:37:53 +01:00
Sébastien Loriot
128b02abb8
update CGAL custom doxygen macros
...
corresponds to a run of the script Documentation/conversion_tools/rename_macros.sh
+manual edit of doxyassist.xml and pkglist_filter.py
2012-11-14 00:31:05 +01:00
Alex Tsui
a11d3408d6
Fixed a bug to properly check whether a facet is seaming.
2012-11-06 20:12:41 +00:00
Alex Tsui
c06c1c09d9
Fixed a bug where we try to deref a reference in get_decorated_mesh().
2012-11-06 19:45:28 +00:00
Sébastien Loriot
3c8f53b7bf
fix reference manual
2012-10-22 15:48:42 +00:00
Andreas Fabri
b8b7a5dad3
get rid of spurious XX
2012-10-03 17:02:54 +00:00