summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhugues <hugues@0f7e0d06-a6f9-0310-a55f-d5f984f55e4c>2006-03-25 15:07:51 +0000
committerHugues Hiegel <hugues@hiegel.fr>2008-03-18 10:06:55 +0100
commit56cc59cf44ec64440ba4d1c0d005196195c758e6 (patch)
tree0e4bc431438a05c2e32b8703a8c79dcbf26a7cbf
parentd49be924baa2759aefa5b5311a35adf50db48e12 (diff)
Nettoyage du repository glagenHEADmaster
git-svn-id: file:///usr/local/opt/svn/repos/glagen@12 0f7e0d06-a6f9-0310-a55f-d5f984f55e4c
-rw-r--r--3d/Archs.txt (renamed from branches/hugues/glagen/3d/Archs.txt)0
-rw-r--r--3d/FIXME (renamed from trunk/glagen/3d/FIXME)0
-rw-r--r--3d/Glagen.dev (renamed from branches/hugues/glagen/3d/Glagen.dev)0
-rw-r--r--3d/Glagen.ico (renamed from branches/hugues/glagen/3d/Glagen.ico)bin29766 -> 29766 bytes
-rw-r--r--3d/Makefile (renamed from branches/hugues/glagen/3d/Makefile)0
-rw-r--r--3d/Makefile.mac (renamed from branches/hugues/glagen/3d/Makefile.mac)0
-rw-r--r--3d/Makefile.macosx (renamed from branches/hugues/glagen/3d/Makefile.macosx)0
-rw-r--r--3d/Makefile.windows (renamed from branches/hugues/glagen/3d/Makefile.windows)0
-rw-r--r--3d/data_glagen.hh (renamed from branches/hugues/glagen/3d/data_glagen.hh)0
-rw-r--r--3d/display.cc (renamed from branches/hugues/glagen/3d/display.cc)0
-rw-r--r--3d/display.hh (renamed from branches/hugues/glagen/3d/display.hh)0
-rw-r--r--3d/dot.cc (renamed from branches/hugues/glagen/3d/dot.cc)0
-rw-r--r--3d/dot.hh (renamed from branches/hugues/glagen/3d/dot.hh)0
-rw-r--r--3d/dot_gl.cc (renamed from branches/hugues/glagen/3d/dot_gl.cc)0
-rw-r--r--3d/end.cc (renamed from branches/hugues/glagen/3d/end.cc)0
-rw-r--r--3d/end.hh (renamed from branches/hugues/glagen/3d/end.hh)0
-rw-r--r--3d/frame.cc (renamed from branches/hugues/glagen/3d/frame.cc)0
-rw-r--r--3d/frame.hh (renamed from branches/hugues/glagen/3d/frame.hh)0
-rw-r--r--3d/header.cc (renamed from branches/hugues/glagen/3d/header.cc)0
-rw-r--r--3d/isosahedron.cc (renamed from branches/hugues/glagen/3d/isosahedron.cc)0
-rw-r--r--3d/isosahedron.hh (renamed from branches/hugues/glagen/3d/isosahedron.hh)0
-rw-r--r--3d/library.cc (renamed from branches/hugues/glagen/3d/library.cc)0
-rw-r--r--3d/library.hh (renamed from branches/hugues/glagen/3d/library.hh)0
-rw-r--r--3d/main.cc (renamed from branches/hugues/glagen/3d/main.cc)0
-rw-r--r--3d/matrix3d.cc (renamed from branches/hugues/glagen/3d/matrix3d.cc)0
-rw-r--r--3d/matrix3d.hh (renamed from branches/hugues/glagen/3d/matrix3d.hh)0
-rw-r--r--3d/misc.cc (renamed from branches/hugues/glagen/3d/misc.cc)0
-rw-r--r--3d/misc.hh (renamed from branches/hugues/glagen/3d/misc.hh)0
-rw-r--r--3d/perlin.cc (renamed from branches/hugues/glagen/3d/perlin.cc)0
-rw-r--r--3d/perlin.hh (renamed from branches/hugues/glagen/3d/perlin.hh)0
-rw-r--r--3d/simul.cc (renamed from branches/hugues/glagen/3d/simul.cc)0
-rw-r--r--3d/simul.hh (renamed from branches/hugues/glagen/3d/simul.hh)0
-rw-r--r--3d/time.hh (renamed from branches/hugues/glagen/3d/time.hh)0
-rw-r--r--3d/time_unix.cc (renamed from branches/hugues/glagen/3d/time_unix.cc)0
-rw-r--r--3d/time_windows.cc (renamed from branches/hugues/glagen/3d/time_windows.cc)0
-rw-r--r--3d/triangle.cc (renamed from branches/hugues/glagen/3d/triangle.cc)0
-rw-r--r--3d/triangle.hh (renamed from branches/hugues/glagen/3d/triangle.hh)0
-rw-r--r--3d/triangle_gl.cc (renamed from branches/hugues/glagen/3d/triangle_gl.cc)0
-rw-r--r--3d/vector.cc (renamed from branches/hugues/glagen/3d/vector.cc)0
-rw-r--r--3d/vector.hh (renamed from branches/hugues/glagen/3d/vector.hh)0
-rw-r--r--LICENCE (renamed from trunk/glagen/LICENCE)0
-rw-r--r--NOTES (renamed from trunk/glagen/NOTES)0
-rw-r--r--README (renamed from trunk/glagen/README)0
-rw-r--r--algo_distribue/Distribue.cc (renamed from branches/hugues/glagen/algo_distribue/Distribue.cc)0
-rw-r--r--algo_distribue/Distribue.hh (renamed from branches/hugues/glagen/algo_distribue/Distribue.hh)0
-rw-r--r--algo_distribue/Makefile (renamed from branches/hugues/glagen/algo_distribue/Makefile)0
-rw-r--r--algo_distribue/main.cc (renamed from branches/hugues/glagen/algo_distribue/main.cc)0
-rw-r--r--algo_distribue/network/Client.cc (renamed from branches/hugues/glagen/algo_distribue/network/Client.cc)0
-rw-r--r--algo_distribue/network/Client.hh (renamed from branches/hugues/glagen/algo_distribue/network/Client.hh)0
-rw-r--r--algo_distribue/network/Makefile (renamed from branches/hugues/glagen/algo_distribue/network/Makefile)0
-rw-r--r--algo_distribue/network/Server.cc (renamed from branches/hugues/glagen/algo_distribue/network/Server.cc)0
-rw-r--r--algo_distribue/network/Server.hh (renamed from branches/hugues/glagen/algo_distribue/network/Server.hh)0
-rw-r--r--algo_distribue/network/data/Data.cc (renamed from branches/hugues/glagen/algo_distribue/network/data/Data.cc)0
-rw-r--r--algo_distribue/network/data/Data.hh (renamed from branches/hugues/glagen/algo_distribue/network/data/Data.hh)0
-rw-r--r--algo_distribue/network/data/Data_exemple.cc (renamed from branches/hugues/glagen/algo_distribue/network/data/Data_exemple.cc)0
-rw-r--r--algo_distribue/network/data/Data_exemple.hh (renamed from branches/hugues/glagen/algo_distribue/network/data/Data_exemple.hh)0
-rw-r--r--algo_distribue/network/data/Data_string.cc (renamed from branches/hugues/glagen/algo_distribue/network/data/Data_string.cc)0
-rw-r--r--algo_distribue/network/data/Data_string.hh (renamed from branches/hugues/glagen/algo_distribue/network/data/Data_string.hh)0
-rw-r--r--algo_distribue/network/main_client.cc (renamed from branches/hugues/glagen/algo_distribue/network/main_client.cc)0
-rw-r--r--algo_distribue/network/main_server.cc (renamed from branches/hugues/glagen/algo_distribue/network/main_server.cc)0
-rw-r--r--algo_distribue/tools/matrix.cc (renamed from branches/hugues/glagen/algo_distribue/tools/matrix.cc)0
-rw-r--r--algo_distribue/tools/matrix.hh (renamed from branches/hugues/glagen/algo_distribue/tools/matrix.hh)0
-rw-r--r--algo_distribue/tree/Makefile (renamed from branches/hugues/glagen/algo_distribue/tree/Makefile)0
-rw-r--r--algo_distribue/tree/main.cc (renamed from branches/hugues/glagen/algo_distribue/tree/main.cc)0
-rw-r--r--algo_distribue/tree/node.cc (renamed from branches/hugues/glagen/algo_distribue/tree/node.cc)0
-rw-r--r--algo_distribue/tree/node.hh (renamed from branches/hugues/glagen/algo_distribue/tree/node.hh)0
-rw-r--r--algo_distribue/tree/tree.cc (renamed from branches/hugues/glagen/algo_distribue/tree/tree.cc)0
-rw-r--r--algo_distribue/tree/tree.hh (renamed from branches/hugues/glagen/algo_distribue/tree/tree.hh)0
-rw-r--r--branches/hugues/glagen/3d/Fixme.txt13
-rw-r--r--branches/hugues/glagen/3d/GPL.txt292
-rw-r--r--branches/hugues/glagen/3d/Greatings.txt18
-rwxr-xr-xbranches/hugues/glagen/3d/glagenbin886824 -> 0 bytes
-rw-r--r--branches/hugues/glagen/dll/.emacs.desktop93
-rw-r--r--branches/hugues/glagen/trucs10
-rw-r--r--dll/MANUAL (renamed from branches/hugues/glagen/dll/MANUAL)0
-rw-r--r--dll/Makefile (renamed from branches/hugues/glagen/dll/Makefile)0
-rw-r--r--dll/NOTES (renamed from branches/hugues/glagen/dll/NOTES)0
-rw-r--r--dll/README (renamed from branches/hugues/glagen/dll/README)0
-rw-r--r--dll/classes/Data_property.cc (renamed from branches/hugues/glagen/dll/classes/Data_property.cc)0
-rw-r--r--dll/classes/Data_property.hh (renamed from branches/hugues/glagen/dll/classes/Data_property.hh)0
-rw-r--r--dll/classes/Data_string.cc (renamed from branches/hugues/glagen/dll/classes/Data_string.cc)0
-rw-r--r--dll/classes/Data_string.hh (renamed from branches/hugues/glagen/dll/classes/Data_string.hh)0
-rw-r--r--dll/classes/GLG-libraries-devel.cc (renamed from branches/hugues/glagen/dll/classes/GLG-libraries-devel.cc)0
-rw-r--r--dll/classes/GLG-libraries-devel.hh (renamed from branches/hugues/glagen/dll/classes/GLG-libraries-devel.hh)0
-rw-r--r--dll/classes/dot.cc (renamed from branches/hugues/glagen/dll/classes/dot.cc)0
-rw-r--r--dll/classes/dot.hh (renamed from branches/hugues/glagen/dll/classes/dot.hh)0
-rw-r--r--dll/classes/libclass.cc (renamed from branches/hugues/glagen/dll/classes/libclass.cc)0
-rw-r--r--dll/classes/libclass.hh (renamed from branches/hugues/glagen/dll/classes/libclass.hh)0
-rw-r--r--dll/classes/matrix.cc (renamed from branches/hugues/glagen/dll/classes/matrix.cc)0
-rw-r--r--dll/classes/matrix.hh (renamed from branches/hugues/glagen/dll/classes/matrix.hh)0
-rw-r--r--dll/classes/node.cc (renamed from branches/hugues/glagen/dll/classes/node.cc)0
-rw-r--r--dll/classes/node.hh (renamed from branches/hugues/glagen/dll/classes/node.hh)0
-rw-r--r--dll/create_dotproperty_init.cc (renamed from branches/hugues/glagen/dll/create_dotproperty_init.cc)0
-rw-r--r--dll/create_dotproperty_init.hh (renamed from branches/hugues/glagen/dll/create_dotproperty_init.hh)0
-rw-r--r--dll/header.cc (renamed from branches/hugues/glagen/dll/header.cc)0
-rw-r--r--dll/includes/errors.hh (renamed from branches/hugues/glagen/dll/includes/errors.hh)0
-rw-r--r--dll/libraryloader.cc (renamed from branches/hugues/glagen/dll/libraryloader.cc)0
-rw-r--r--dll/libraryloader.hh (renamed from branches/hugues/glagen/dll/libraryloader.hh)0
-rw-r--r--dll/main.cc (renamed from branches/hugues/glagen/dll/main.cc)0
-rw-r--r--dll/main.hh (renamed from branches/hugues/glagen/dll/main.hh)0
-rw-r--r--dll/samples2/gps/libtoto.gps (renamed from branches/hugues/glagen/dll/samples2/gps/libtoto.gps)0
-rw-r--r--tags/START/glagen/3d/Archs.txt13
-rw-r--r--tags/START/glagen/3d/Fixme.txt13
-rw-r--r--tags/START/glagen/3d/GPL.txt292
-rw-r--r--tags/START/glagen/3d/Glagen.dev345
-rw-r--r--tags/START/glagen/3d/Glagen.icobin29766 -> 0 bytes
-rw-r--r--tags/START/glagen/3d/Greatings.txt18
-rw-r--r--tags/START/glagen/3d/Makefile139
-rw-r--r--tags/START/glagen/3d/Makefile.mac138
-rw-r--r--tags/START/glagen/3d/Makefile.macosx133
-rw-r--r--tags/START/glagen/3d/Makefile.windows98
-rw-r--r--tags/START/glagen/3d/data_glagen.hh115
-rw-r--r--tags/START/glagen/3d/display.cc411
-rw-r--r--tags/START/glagen/3d/display.hh44
-rw-r--r--tags/START/glagen/3d/dot.cc184
-rw-r--r--tags/START/glagen/3d/dot.hh84
-rw-r--r--tags/START/glagen/3d/dot_gl.cc83
-rw-r--r--tags/START/glagen/3d/end.cc53
-rw-r--r--tags/START/glagen/3d/end.hh39
-rw-r--r--tags/START/glagen/3d/frame.cc152
-rw-r--r--tags/START/glagen/3d/frame.hh69
-rwxr-xr-xtags/START/glagen/3d/glagenbin886824 -> 0 bytes
-rw-r--r--tags/START/glagen/3d/header.cc28
-rw-r--r--tags/START/glagen/3d/isosahedron.cc220
-rw-r--r--tags/START/glagen/3d/isosahedron.hh38
-rw-r--r--tags/START/glagen/3d/library.cc100
-rw-r--r--tags/START/glagen/3d/library.hh40
-rw-r--r--tags/START/glagen/3d/main.cc132
-rw-r--r--tags/START/glagen/3d/matrix3d.cc216
-rw-r--r--tags/START/glagen/3d/matrix3d.hh80
-rw-r--r--tags/START/glagen/3d/misc.cc43
-rw-r--r--tags/START/glagen/3d/misc.hh38
-rw-r--r--tags/START/glagen/3d/perlin.cc347
-rw-r--r--tags/START/glagen/3d/perlin.hh39
-rw-r--r--tags/START/glagen/3d/simul.cc409
-rw-r--r--tags/START/glagen/3d/simul.hh41
-rw-r--r--tags/START/glagen/3d/time.hh36
-rw-r--r--tags/START/glagen/3d/time_unix.cc51
-rw-r--r--tags/START/glagen/3d/time_windows.cc53
-rw-r--r--tags/START/glagen/3d/triangle.cc729
-rw-r--r--tags/START/glagen/3d/triangle.hh122
-rw-r--r--tags/START/glagen/3d/triangle_gl.cc180
-rw-r--r--tags/START/glagen/3d/vector.cc252
-rw-r--r--tags/START/glagen/3d/vector.hh77
-rw-r--r--tags/START/glagen/algo_distribue/Distribue.cc1
-rw-r--r--tags/START/glagen/algo_distribue/Distribue.hh97
-rw-r--r--tags/START/glagen/algo_distribue/Makefile51
-rw-r--r--tags/START/glagen/algo_distribue/main.cc113
-rw-r--r--tags/START/glagen/algo_distribue/network/Client.cc1
-rw-r--r--tags/START/glagen/algo_distribue/network/Client.hh113
-rw-r--r--tags/START/glagen/algo_distribue/network/Makefile62
-rw-r--r--tags/START/glagen/algo_distribue/network/Server.cc1
-rw-r--r--tags/START/glagen/algo_distribue/network/Server.hh218
-rw-r--r--tags/START/glagen/algo_distribue/network/data/Data.cc1
-rw-r--r--tags/START/glagen/algo_distribue/network/data/Data.hh78
-rw-r--r--tags/START/glagen/algo_distribue/network/data/Data_exemple.cc1
-rw-r--r--tags/START/glagen/algo_distribue/network/data/Data_exemple.hh66
-rw-r--r--tags/START/glagen/algo_distribue/network/data/Data_string.cc1
-rw-r--r--tags/START/glagen/algo_distribue/network/data/Data_string.hh60
-rw-r--r--tags/START/glagen/algo_distribue/network/main_client.cc54
-rw-r--r--tags/START/glagen/algo_distribue/network/main_server.cc73
-rw-r--r--tags/START/glagen/algo_distribue/tools/matrix.cc3
-rw-r--r--tags/START/glagen/algo_distribue/tools/matrix.hh324
-rw-r--r--tags/START/glagen/algo_distribue/tree/Makefile45
-rw-r--r--tags/START/glagen/algo_distribue/tree/main.cc99
-rw-r--r--tags/START/glagen/algo_distribue/tree/node.cc11
-rw-r--r--tags/START/glagen/algo_distribue/tree/node.hh78
-rw-r--r--tags/START/glagen/algo_distribue/tree/tree.cc11
-rw-r--r--tags/START/glagen/algo_distribue/tree/tree.hh51
-rw-r--r--tags/START/glagen/dll/.emacs.desktop93
-rw-r--r--tags/START/glagen/dll/MANUAL138
-rw-r--r--tags/START/glagen/dll/Makefile72
-rw-r--r--tags/START/glagen/dll/NOTES13
-rw-r--r--tags/START/glagen/dll/README237
-rw-r--r--tags/START/glagen/dll/classes/Data_property.cc30
-rw-r--r--tags/START/glagen/dll/classes/Data_property.hh88
-rw-r--r--tags/START/glagen/dll/classes/Data_string.cc1
-rw-r--r--tags/START/glagen/dll/classes/Data_string.hh62
-rw-r--r--tags/START/glagen/dll/classes/GLG-libraries-devel.cc32
-rw-r--r--tags/START/glagen/dll/classes/GLG-libraries-devel.hh1
-rw-r--r--tags/START/glagen/dll/classes/dot.cc100
-rw-r--r--tags/START/glagen/dll/classes/dot.hh49
-rw-r--r--tags/START/glagen/dll/classes/libclass.cc391
-rw-r--r--tags/START/glagen/dll/classes/libclass.hh91
-rw-r--r--tags/START/glagen/dll/classes/matrix.cc3
-rw-r--r--tags/START/glagen/dll/classes/matrix.hh324
-rw-r--r--tags/START/glagen/dll/classes/node.cc11
-rw-r--r--tags/START/glagen/dll/classes/node.hh82
-rw-r--r--tags/START/glagen/dll/create_dotproperty_init.cc86
-rw-r--r--tags/START/glagen/dll/create_dotproperty_init.hh0
-rw-r--r--tags/START/glagen/dll/header.cc28
-rw-r--r--tags/START/glagen/dll/includes/errors.hh19
-rw-r--r--tags/START/glagen/dll/libraryloader.cc322
-rw-r--r--tags/START/glagen/dll/libraryloader.hh41
-rw-r--r--tags/START/glagen/dll/main.cc21
-rw-r--r--tags/START/glagen/dll/main.hh1
-rw-r--r--tags/START/glagen/dll/samples2/gps/libtoto.gps4
-rw-r--r--tags/START/glagen/trucs10
-rw-r--r--trunk/CVSROOT/checkoutlist13
-rw-r--r--trunk/CVSROOT/commitinfo24
-rw-r--r--trunk/CVSROOT/config37
-rw-r--r--trunk/CVSROOT/cvswrappers19
-rw-r--r--trunk/CVSROOT/loginfo31
-rw-r--r--trunk/CVSROOT/modules26
-rw-r--r--trunk/CVSROOT/notify17
-rw-r--r--trunk/CVSROOT/rcsinfo13
-rw-r--r--trunk/CVSROOT/taginfo40
-rw-r--r--trunk/CVSROOT/verifymsg29
-rw-r--r--trunk/glagen/3d/Archs.txt13
-rw-r--r--trunk/glagen/3d/Glagen.dev345
-rw-r--r--trunk/glagen/3d/Glagen.icobin29766 -> 0 bytes
-rw-r--r--trunk/glagen/3d/Makefile139
-rw-r--r--trunk/glagen/3d/Makefile.mac138
-rw-r--r--trunk/glagen/3d/Makefile.macosx133
-rw-r--r--trunk/glagen/3d/Makefile.windows98
-rw-r--r--trunk/glagen/3d/data_glagen.hh115
-rw-r--r--trunk/glagen/3d/display.cc411
-rw-r--r--trunk/glagen/3d/display.hh44
-rw-r--r--trunk/glagen/3d/dot.cc184
-rw-r--r--trunk/glagen/3d/dot.hh84
-rw-r--r--trunk/glagen/3d/dot_gl.cc83
-rw-r--r--trunk/glagen/3d/end.cc53
-rw-r--r--trunk/glagen/3d/end.hh39
-rw-r--r--trunk/glagen/3d/frame.cc152
-rw-r--r--trunk/glagen/3d/frame.hh69
-rw-r--r--trunk/glagen/3d/header.cc28
-rw-r--r--trunk/glagen/3d/isosahedron.cc220
-rw-r--r--trunk/glagen/3d/isosahedron.hh38
-rw-r--r--trunk/glagen/3d/library.cc100
-rw-r--r--trunk/glagen/3d/library.hh40
-rw-r--r--trunk/glagen/3d/main.cc132
-rw-r--r--trunk/glagen/3d/matrix3d.cc216
-rw-r--r--trunk/glagen/3d/matrix3d.hh80
-rw-r--r--trunk/glagen/3d/misc.cc43
-rw-r--r--trunk/glagen/3d/misc.hh38
-rw-r--r--trunk/glagen/3d/perlin.cc347
-rw-r--r--trunk/glagen/3d/perlin.hh39
-rw-r--r--trunk/glagen/3d/simul.cc409
-rw-r--r--trunk/glagen/3d/simul.hh41
-rw-r--r--trunk/glagen/3d/time.hh36
-rw-r--r--trunk/glagen/3d/time_unix.cc51
-rw-r--r--trunk/glagen/3d/time_windows.cc53
-rw-r--r--trunk/glagen/3d/triangle.cc729
-rw-r--r--trunk/glagen/3d/triangle.hh122
-rw-r--r--trunk/glagen/3d/triangle_gl.cc180
-rw-r--r--trunk/glagen/3d/vector.cc252
-rw-r--r--trunk/glagen/3d/vector.hh77
-rw-r--r--trunk/glagen/algo_distribue/Distribue.cc1
-rw-r--r--trunk/glagen/algo_distribue/Distribue.hh97
-rw-r--r--trunk/glagen/algo_distribue/Makefile51
-rw-r--r--trunk/glagen/algo_distribue/main.cc113
-rw-r--r--trunk/glagen/algo_distribue/network/Client.cc1
-rw-r--r--trunk/glagen/algo_distribue/network/Client.hh113
-rw-r--r--trunk/glagen/algo_distribue/network/Makefile62
-rw-r--r--trunk/glagen/algo_distribue/network/Server.cc1
-rw-r--r--trunk/glagen/algo_distribue/network/Server.hh218
-rw-r--r--trunk/glagen/algo_distribue/network/data/Data.cc1
-rw-r--r--trunk/glagen/algo_distribue/network/data/Data.hh78
-rw-r--r--trunk/glagen/algo_distribue/network/data/Data_exemple.cc1
-rw-r--r--trunk/glagen/algo_distribue/network/data/Data_exemple.hh66
-rw-r--r--trunk/glagen/algo_distribue/network/data/Data_string.cc1
-rw-r--r--trunk/glagen/algo_distribue/network/data/Data_string.hh60
-rw-r--r--trunk/glagen/algo_distribue/network/main_client.cc54
-rw-r--r--trunk/glagen/algo_distribue/network/main_server.cc73
-rw-r--r--trunk/glagen/algo_distribue/tools/matrix.cc3
-rw-r--r--trunk/glagen/algo_distribue/tools/matrix.hh324
-rw-r--r--trunk/glagen/algo_distribue/tree/Makefile45
-rw-r--r--trunk/glagen/algo_distribue/tree/main.cc99
-rw-r--r--trunk/glagen/algo_distribue/tree/node.cc11
-rw-r--r--trunk/glagen/algo_distribue/tree/node.hh78
-rw-r--r--trunk/glagen/algo_distribue/tree/tree.cc11
-rw-r--r--trunk/glagen/algo_distribue/tree/tree.hh51
-rw-r--r--trunk/glagen/dll/MANUAL138
-rw-r--r--trunk/glagen/dll/Makefile72
-rw-r--r--trunk/glagen/dll/NOTES13
-rw-r--r--trunk/glagen/dll/README237
-rw-r--r--trunk/glagen/dll/classes/Data_property.cc30
-rw-r--r--trunk/glagen/dll/classes/Data_property.hh88
-rw-r--r--trunk/glagen/dll/classes/Data_string.cc1
-rw-r--r--trunk/glagen/dll/classes/Data_string.hh62
-rw-r--r--trunk/glagen/dll/classes/GLG-libraries-devel.cc32
-rw-r--r--trunk/glagen/dll/classes/GLG-libraries-devel.hh1
-rw-r--r--trunk/glagen/dll/classes/dot.cc100
-rw-r--r--trunk/glagen/dll/classes/dot.hh49
-rw-r--r--trunk/glagen/dll/classes/libclass.cc391
-rw-r--r--trunk/glagen/dll/classes/libclass.hh91
-rw-r--r--trunk/glagen/dll/classes/matrix.cc3
-rw-r--r--trunk/glagen/dll/classes/matrix.hh324
-rw-r--r--trunk/glagen/dll/classes/node.cc11
-rw-r--r--trunk/glagen/dll/classes/node.hh82
-rw-r--r--trunk/glagen/dll/create_dotproperty_init.cc86
-rw-r--r--trunk/glagen/dll/create_dotproperty_init.hh0
-rw-r--r--trunk/glagen/dll/header.cc28
-rw-r--r--trunk/glagen/dll/includes/errors.hh19
-rw-r--r--trunk/glagen/dll/libraryloader.cc322
-rw-r--r--trunk/glagen/dll/libraryloader.hh41
-rw-r--r--trunk/glagen/dll/main.cc21
-rw-r--r--trunk/glagen/dll/main.hh1
-rw-r--r--trunk/glagen/dll/samples2/gps/libtoto.gps4
299 files changed, 0 insertions, 19563 deletions
diff --git a/branches/hugues/glagen/3d/Archs.txt b/3d/Archs.txt
index a39618d..a39618d 100644
--- a/branches/hugues/glagen/3d/Archs.txt
+++ b/3d/Archs.txt
diff --git a/trunk/glagen/3d/FIXME b/3d/FIXME
index 6a57b48..6a57b48 100644
--- a/trunk/glagen/3d/FIXME
+++ b/3d/FIXME
diff --git a/branches/hugues/glagen/3d/Glagen.dev b/3d/Glagen.dev
index 6dc18da..6dc18da 100644
--- a/branches/hugues/glagen/3d/Glagen.dev
+++ b/3d/Glagen.dev
diff --git a/branches/hugues/glagen/3d/Glagen.ico b/3d/Glagen.ico
index acb0589..acb0589 100644
--- a/branches/hugues/glagen/3d/Glagen.ico
+++ b/3d/Glagen.ico
Binary files differ
diff --git a/branches/hugues/glagen/3d/Makefile b/3d/Makefile
index a7d46b5..a7d46b5 100644
--- a/branches/hugues/glagen/3d/Makefile
+++ b/3d/Makefile
diff --git a/branches/hugues/glagen/3d/Makefile.mac b/3d/Makefile.mac
index 7e4d5d9..7e4d5d9 100644
--- a/branches/hugues/glagen/3d/Makefile.mac
+++ b/3d/Makefile.mac
diff --git a/branches/hugues/glagen/3d/Makefile.macosx b/3d/Makefile.macosx
index 37b8e5b..37b8e5b 100644
--- a/branches/hugues/glagen/3d/Makefile.macosx
+++ b/3d/Makefile.macosx
diff --git a/branches/hugues/glagen/3d/Makefile.windows b/3d/Makefile.windows
index 1a9a741..1a9a741 100644
--- a/branches/hugues/glagen/3d/Makefile.windows
+++ b/3d/Makefile.windows
diff --git a/branches/hugues/glagen/3d/data_glagen.hh b/3d/data_glagen.hh
index e02332b..e02332b 100644
--- a/branches/hugues/glagen/3d/data_glagen.hh
+++ b/3d/data_glagen.hh
diff --git a/branches/hugues/glagen/3d/display.cc b/3d/display.cc
index a956274..a956274 100644
--- a/branches/hugues/glagen/3d/display.cc
+++ b/3d/display.cc
diff --git a/branches/hugues/glagen/3d/display.hh b/3d/display.hh
index da18a8f..da18a8f 100644
--- a/branches/hugues/glagen/3d/display.hh
+++ b/3d/display.hh
diff --git a/branches/hugues/glagen/3d/dot.cc b/3d/dot.cc
index 86df62b..86df62b 100644
--- a/branches/hugues/glagen/3d/dot.cc
+++ b/3d/dot.cc
diff --git a/branches/hugues/glagen/3d/dot.hh b/3d/dot.hh
index 8e17049..8e17049 100644
--- a/branches/hugues/glagen/3d/dot.hh
+++ b/3d/dot.hh
diff --git a/branches/hugues/glagen/3d/dot_gl.cc b/3d/dot_gl.cc
index 463df20..463df20 100644
--- a/branches/hugues/glagen/3d/dot_gl.cc
+++ b/3d/dot_gl.cc
diff --git a/branches/hugues/glagen/3d/end.cc b/3d/end.cc
index a16a634..a16a634 100644
--- a/branches/hugues/glagen/3d/end.cc
+++ b/3d/end.cc
diff --git a/branches/hugues/glagen/3d/end.hh b/3d/end.hh
index 402c4b2..402c4b2 100644
--- a/branches/hugues/glagen/3d/end.hh
+++ b/3d/end.hh
diff --git a/branches/hugues/glagen/3d/frame.cc b/3d/frame.cc
index 6f3aabd..6f3aabd 100644
--- a/branches/hugues/glagen/3d/frame.cc
+++ b/3d/frame.cc
diff --git a/branches/hugues/glagen/3d/frame.hh b/3d/frame.hh
index 2fd125f..2fd125f 100644
--- a/branches/hugues/glagen/3d/frame.hh
+++ b/3d/frame.hh
diff --git a/branches/hugues/glagen/3d/header.cc b/3d/header.cc
index cdcdf6d..cdcdf6d 100644
--- a/branches/hugues/glagen/3d/header.cc
+++ b/3d/header.cc
diff --git a/branches/hugues/glagen/3d/isosahedron.cc b/3d/isosahedron.cc
index 1f3fc71..1f3fc71 100644
--- a/branches/hugues/glagen/3d/isosahedron.cc
+++ b/3d/isosahedron.cc
diff --git a/branches/hugues/glagen/3d/isosahedron.hh b/3d/isosahedron.hh
index f339154..f339154 100644
--- a/branches/hugues/glagen/3d/isosahedron.hh
+++ b/3d/isosahedron.hh
diff --git a/branches/hugues/glagen/3d/library.cc b/3d/library.cc
index 19d706f..19d706f 100644
--- a/branches/hugues/glagen/3d/library.cc
+++ b/3d/library.cc
diff --git a/branches/hugues/glagen/3d/library.hh b/3d/library.hh
index acb262f..acb262f 100644
--- a/branches/hugues/glagen/3d/library.hh
+++ b/3d/library.hh
diff --git a/branches/hugues/glagen/3d/main.cc b/3d/main.cc
index d2d3561..d2d3561 100644
--- a/branches/hugues/glagen/3d/main.cc
+++ b/3d/main.cc
diff --git a/branches/hugues/glagen/3d/matrix3d.cc b/3d/matrix3d.cc
index c02ac39..c02ac39 100644
--- a/branches/hugues/glagen/3d/matrix3d.cc
+++ b/3d/matrix3d.cc
diff --git a/branches/hugues/glagen/3d/matrix3d.hh b/3d/matrix3d.hh
index 859f480..859f480 100644
--- a/branches/hugues/glagen/3d/matrix3d.hh
+++ b/3d/matrix3d.hh
diff --git a/branches/hugues/glagen/3d/misc.cc b/3d/misc.cc
index caf7264..caf7264 100644
--- a/branches/hugues/glagen/3d/misc.cc
+++ b/3d/misc.cc
diff --git a/branches/hugues/glagen/3d/misc.hh b/3d/misc.hh
index 696d5a4..696d5a4 100644
--- a/branches/hugues/glagen/3d/misc.hh
+++ b/3d/misc.hh
diff --git a/branches/hugues/glagen/3d/perlin.cc b/3d/perlin.cc
index 5cb4aee..5cb4aee 100644
--- a/branches/hugues/glagen/3d/perlin.cc
+++ b/3d/perlin.cc
diff --git a/branches/hugues/glagen/3d/perlin.hh b/3d/perlin.hh
index 3deb1c9..3deb1c9 100644
--- a/branches/hugues/glagen/3d/perlin.hh
+++ b/3d/perlin.hh
diff --git a/branches/hugues/glagen/3d/simul.cc b/3d/simul.cc
index d68daa5..d68daa5 100644
--- a/branches/hugues/glagen/3d/simul.cc
+++ b/3d/simul.cc
diff --git a/branches/hugues/glagen/3d/simul.hh b/3d/simul.hh
index cf2bd68..cf2bd68 100644
--- a/branches/hugues/glagen/3d/simul.hh
+++ b/3d/simul.hh
diff --git a/branches/hugues/glagen/3d/time.hh b/3d/time.hh
index 8afe7ed..8afe7ed 100644
--- a/branches/hugues/glagen/3d/time.hh
+++ b/3d/time.hh
diff --git a/branches/hugues/glagen/3d/time_unix.cc b/3d/time_unix.cc
index 013e2a6..013e2a6 100644
--- a/branches/hugues/glagen/3d/time_unix.cc
+++ b/3d/time_unix.cc
diff --git a/branches/hugues/glagen/3d/time_windows.cc b/3d/time_windows.cc
index 32a5d3d..32a5d3d 100644
--- a/branches/hugues/glagen/3d/time_windows.cc
+++ b/3d/time_windows.cc
diff --git a/branches/hugues/glagen/3d/triangle.cc b/3d/triangle.cc
index ee80216..ee80216 100644
--- a/branches/hugues/glagen/3d/triangle.cc
+++ b/3d/triangle.cc
diff --git a/branches/hugues/glagen/3d/triangle.hh b/3d/triangle.hh
index 3a3903f..3a3903f 100644
--- a/branches/hugues/glagen/3d/triangle.hh
+++ b/3d/triangle.hh
diff --git a/branches/hugues/glagen/3d/triangle_gl.cc b/3d/triangle_gl.cc
index 173db4f..173db4f 100644
--- a/branches/hugues/glagen/3d/triangle_gl.cc
+++ b/3d/triangle_gl.cc
diff --git a/branches/hugues/glagen/3d/vector.cc b/3d/vector.cc
index 06e3085..06e3085 100644
--- a/branches/hugues/glagen/3d/vector.cc
+++ b/3d/vector.cc
diff --git a/branches/hugues/glagen/3d/vector.hh b/3d/vector.hh
index 2a7a47f..2a7a47f 100644
--- a/branches/hugues/glagen/3d/vector.hh
+++ b/3d/vector.hh
diff --git a/trunk/glagen/LICENCE b/LICENCE
index 0dd1a53..0dd1a53 100644
--- a/trunk/glagen/LICENCE
+++ b/LICENCE
diff --git a/trunk/glagen/NOTES b/NOTES
index 8589cba..8589cba 100644
--- a/trunk/glagen/NOTES
+++ b/NOTES
diff --git a/trunk/glagen/README b/README
index 1d05835..1d05835 100644
--- a/trunk/glagen/README
+++ b/README
diff --git a/branches/hugues/glagen/algo_distribue/Distribue.cc b/algo_distribue/Distribue.cc
index 09efc50..09efc50 100644
--- a/branches/hugues/glagen/algo_distribue/Distribue.cc
+++ b/algo_distribue/Distribue.cc
diff --git a/branches/hugues/glagen/algo_distribue/Distribue.hh b/algo_distribue/Distribue.hh
index ff3b76d..ff3b76d 100644
--- a/branches/hugues/glagen/algo_distribue/Distribue.hh
+++ b/algo_distribue/Distribue.hh
diff --git a/branches/hugues/glagen/algo_distribue/Makefile b/algo_distribue/Makefile
index fb30eba..fb30eba 100644
--- a/branches/hugues/glagen/algo_distribue/Makefile
+++ b/algo_distribue/Makefile
diff --git a/branches/hugues/glagen/algo_distribue/main.cc b/algo_distribue/main.cc
index e78d461..e78d461 100644
--- a/branches/hugues/glagen/algo_distribue/main.cc
+++ b/algo_distribue/main.cc
diff --git a/branches/hugues/glagen/algo_distribue/network/Client.cc b/algo_distribue/network/Client.cc
index 23ccb2c..23ccb2c 100644
--- a/branches/hugues/glagen/algo_distribue/network/Client.cc
+++ b/algo_distribue/network/Client.cc
diff --git a/branches/hugues/glagen/algo_distribue/network/Client.hh b/algo_distribue/network/Client.hh
index 923b83e..923b83e 100644
--- a/branches/hugues/glagen/algo_distribue/network/Client.hh
+++ b/algo_distribue/network/Client.hh
diff --git a/branches/hugues/glagen/algo_distribue/network/Makefile b/algo_distribue/network/Makefile
index 18878df..18878df 100644
--- a/branches/hugues/glagen/algo_distribue/network/Makefile
+++ b/algo_distribue/network/Makefile
diff --git a/branches/hugues/glagen/algo_distribue/network/Server.cc b/algo_distribue/network/Server.cc
index 63f45ff..63f45ff 100644
--- a/branches/hugues/glagen/algo_distribue/network/Server.cc
+++ b/algo_distribue/network/Server.cc
diff --git a/branches/hugues/glagen/algo_distribue/network/Server.hh b/algo_distribue/network/Server.hh
index fdfecb4..fdfecb4 100644
--- a/branches/hugues/glagen/algo_distribue/network/Server.hh
+++ b/algo_distribue/network/Server.hh
diff --git a/branches/hugues/glagen/algo_distribue/network/data/Data.cc b/algo_distribue/network/data/Data.cc
index d3bbe6a..d3bbe6a 100644
--- a/branches/hugues/glagen/algo_distribue/network/data/Data.cc
+++ b/algo_distribue/network/data/Data.cc
diff --git a/branches/hugues/glagen/algo_distribue/network/data/Data.hh b/algo_distribue/network/data/Data.hh
index 3b630ff..3b630ff 100644
--- a/branches/hugues/glagen/algo_distribue/network/data/Data.hh
+++ b/algo_distribue/network/data/Data.hh
diff --git a/branches/hugues/glagen/algo_distribue/network/data/Data_exemple.cc b/algo_distribue/network/data/Data_exemple.cc
index 9578493..9578493 100644
--- a/branches/hugues/glagen/algo_distribue/network/data/Data_exemple.cc
+++ b/algo_distribue/network/data/Data_exemple.cc
diff --git a/branches/hugues/glagen/algo_distribue/network/data/Data_exemple.hh b/algo_distribue/network/data/Data_exemple.hh
index ca1291b..ca1291b 100644
--- a/branches/hugues/glagen/algo_distribue/network/data/Data_exemple.hh
+++ b/algo_distribue/network/data/Data_exemple.hh
diff --git a/branches/hugues/glagen/algo_distribue/network/data/Data_string.cc b/algo_distribue/network/data/Data_string.cc
index 9578493..9578493 100644
--- a/branches/hugues/glagen/algo_distribue/network/data/Data_string.cc
+++ b/algo_distribue/network/data/Data_string.cc
diff --git a/branches/hugues/glagen/algo_distribue/network/data/Data_string.hh b/algo_distribue/network/data/Data_string.hh
index a395725..a395725 100644
--- a/branches/hugues/glagen/algo_distribue/network/data/Data_string.hh
+++ b/algo_distribue/network/data/Data_string.hh
diff --git a/branches/hugues/glagen/algo_distribue/network/main_client.cc b/algo_distribue/network/main_client.cc
index 66cb083..66cb083 100644
--- a/branches/hugues/glagen/algo_distribue/network/main_client.cc
+++ b/algo_distribue/network/main_client.cc
diff --git a/branches/hugues/glagen/algo_distribue/network/main_server.cc b/algo_distribue/network/main_server.cc
index 4fafd09..4fafd09 100644
--- a/branches/hugues/glagen/algo_distribue/network/main_server.cc
+++ b/algo_distribue/network/main_server.cc
diff --git a/branches/hugues/glagen/algo_distribue/tools/matrix.cc b/algo_distribue/tools/matrix.cc
index 7991769..7991769 100644
--- a/branches/hugues/glagen/algo_distribue/tools/matrix.cc
+++ b/algo_distribue/tools/matrix.cc
diff --git a/branches/hugues/glagen/algo_distribue/tools/matrix.hh b/algo_distribue/tools/matrix.hh
index 4894360..4894360 100644
--- a/branches/hugues/glagen/algo_distribue/tools/matrix.hh
+++ b/algo_distribue/tools/matrix.hh
diff --git a/branches/hugues/glagen/algo_distribue/tree/Makefile b/algo_distribue/tree/Makefile
index 895117b..895117b 100644
--- a/branches/hugues/glagen/algo_distribue/tree/Makefile
+++ b/algo_distribue/tree/Makefile
diff --git a/branches/hugues/glagen/algo_distribue/tree/main.cc b/algo_distribue/tree/main.cc
index 3b6f02d..3b6f02d 100644
--- a/branches/hugues/glagen/algo_distribue/tree/main.cc
+++ b/algo_distribue/tree/main.cc
diff --git a/branches/hugues/glagen/algo_distribue/tree/node.cc b/algo_distribue/tree/node.cc
index a3ae387..a3ae387 100644
--- a/branches/hugues/glagen/algo_distribue/tree/node.cc
+++ b/algo_distribue/tree/node.cc
diff --git a/branches/hugues/glagen/algo_distribue/tree/node.hh b/algo_distribue/tree/node.hh
index b80a699..b80a699 100644
--- a/branches/hugues/glagen/algo_distribue/tree/node.hh
+++ b/algo_distribue/tree/node.hh
diff --git a/branches/hugues/glagen/algo_distribue/tree/tree.cc b/algo_distribue/tree/tree.cc
index 047ca89..047ca89 100644
--- a/branches/hugues/glagen/algo_distribue/tree/tree.cc
+++ b/algo_distribue/tree/tree.cc
diff --git a/branches/hugues/glagen/algo_distribue/tree/tree.hh b/algo_distribue/tree/tree.hh
index 86ce136..86ce136 100644
--- a/branches/hugues/glagen/algo_distribue/tree/tree.hh
+++ b/algo_distribue/tree/tree.hh
diff --git a/branches/hugues/glagen/3d/Fixme.txt b/branches/hugues/glagen/3d/Fixme.txt
deleted file mode 100644
index 6a57b48..0000000
--- a/branches/hugues/glagen/3d/Fixme.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-To fix :
-
- * Find a fast distace approximation.
-
- * The light!
-
- * Add 2D graphics (Head Up Display, fonts...).
-
- * Bug when near the ground;
-
- * Try different noise;
-
- * Increase definatly the precision depth.
diff --git a/branches/hugues/glagen/3d/GPL.txt b/branches/hugues/glagen/3d/GPL.txt
deleted file mode 100644
index 0dd1a53..0000000
--- a/branches/hugues/glagen/3d/GPL.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-GNU GENERAL PUBLIC LICENSE
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom
-to share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on,
-we want its recipients to know that what they have is not the
-original, so that any problems introduced by others will not reflect
-on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at
-all.
-
-The precise terms and conditions for copying, distribution and
-modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION
-AND MODIFICATION
-
-0. This License applies to any program or other work which contains a
- notice placed by the copyright holder saying it may be distributed
- under the terms of this General Public License. The "Program",
- below, refers to any such program or work, and a "work based on the
- Program" means either the Program or any derivative work under
- copyright law: that is to say, a work containing the Program or a
- portion of it, either verbatim or with modifications and/or
- translated into another language. (Hereinafter, translation is
- included without limitation in the term "modification".) Each
- licensee is addressed as "you".
-
- Activities other than copying, distribution and modification are
- not covered by this License; they are outside its scope. The act of
- running the Program is not restricted, and the output from the
- Program is covered only if its contents constitute a work based on
- the Program (independent of having been made by running the
- Program). Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source
- code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an appropriate
- copyright notice and disclaimer of warranty; keep intact all the
- notices that refer to this License and to the absence of any
- warranty; and give any other recipients of the Program a copy of
- this License along with the Program.
-
- You may charge a fee for the physical act of transferring a copy,
- and you may at your option offer warranty protection in exchange
- for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of
- it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
-
- * a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- * b) You must cause any work that you distribute or publish, that
- in whole or in part contains or is derived from the Program or
- any part thereof, to be licensed as a whole at no charge to all
- third parties under the terms of this License.
-
- * c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you
- provide a warranty) and that users may redistribute the program
- under these conditions, and telling the user how to view a copy
- of this License. (Exception: if the Program itself is
- interactive but does not normally print such an announcement,
- your work based on the Program is not required to print an
- announcement.)
-
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the
- Program, and can be reasonably considered independent and separate
- works in themselves, then this License, and its terms, do not apply
- to those sections when you distribute them as separate works. But
- when you distribute the same sections as part of a whole which is a
- work based on the Program, the distribution of the whole must be on
- the terms of this License, whose permissions for other licensees
- extend to the entire whole, and thus to each and every part
- regardless of who wrote it.
-
- Thus, it is not the intent of this section to claim rights or
- contest your rights to work written entirely by you; rather, the
- intent is to exercise the right to control the distribution of
- derivative or collective works based on the Program.
-
- In addition, mere aggregation of another work not based on the
- Program with the Program (or with a work based on the Program) on a
- volume of a storage or distribution medium does not bring the other
- work under the scope of this License.
-
-3. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms
- of Sections 1 and 2 above provided that you also do one of the
- following:
-
- * a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Sections 1 and 2 above on a medium customarily used for software
- interchange; or,
-
- * b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a
- medium customarily used for software interchange; or,
-
- * c) Accompany it with the information you received as to the
- offer to distribute corresponding source code. (This alternative
- is allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
- The source code for a work means the preferred form of the work for
- making modifications to it. For an executable work, complete source
- code means all the source code for all modules it contains, plus
- any associated interface definition files, plus the scripts used to
- control compilation and installation of the executable. However, as
- a special exception, the source code distributed need not include
- anything that is normally distributed (in either source or binary
- form) with the major components (compiler, kernel, and so on) of
- the operating system on which the executable runs, unless that
- component itself accompanies the executable.
-
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program is
- void, and will automatically terminate your rights under this
- License. However, parties who have received copies, or rights, from
- you under this License will not have their licenses terminated so
- long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to modify or
- distribute the Program or its derivative works. These actions are
- prohibited by law if you do not accept this License. Therefore, by
- modifying or distributing the Program (or any work based on the
- Program), you indicate your acceptance of this License to do so,
- and all its terms and conditions for copying, distributing or
- modifying the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program subject
- to these terms and conditions. You may not impose any further
- restrictions on the recipients' exercise of the rights granted
- herein. You are not responsible for enforcing compliance by third
- parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent
- issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this
- License, they do not excuse you from the conditions of this
- License. If you cannot distribute so as to satisfy simultaneously
- your obligations under this License and any other pertinent
- obligations, then as a consequence you may not distribute the
- Program at all. For example, if a patent license would not permit
- royalty-free redistribution of the Program by all those who receive
- copies directly or indirectly through you, then the only way you
- could satisfy both it and this License would be to refrain entirely
- from distribution of the Program.
-
- If any portion of this section is held invalid or unenforceable
- under any particular circumstance, the balance of the section is
- intended to apply and the section as a whole is intended to apply
- in other circumstances.
-
- It is not the purpose of this section to induce you to infringe any
- patents or other property right claims or to contest validity of
- any such claims; this section has the sole purpose of protecting
- the integrity of the free software distribution system, which is
- implemented by public license practices. Many people have made
- generous contributions to the wide range of software distributed
- through that system in reliance on consistent application of that
- system; it is up to the author/donor to decide if he or she is
- willing to distribute software through any other system and a
- licensee cannot impose that choice.
-
- This section is intended to make thoroughly clear what is believed
- to be a consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces,
- the original copyright holder who places the Program under this
- License may add an explicit geographical distribution limitation
- excluding those countries, so that distribution is permitted only
- in or among countries not thus excluded. In such case, this License
- incorporates the limitation as if written in the body of this
- License.
-
-9. The Free Software Foundation may publish revised and/or new
- versions of the General Public License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
- Program specifies a version number of this License which applies to
- it and "any later version", you have the option of following the
- terms and conditions either of that version or of any later version
- published by the Free Software Foundation. If the Program does not
- specify a version number of this License, you may choose any
- version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the
- author to ask for permission. For software which is copyrighted by
- the Free Software Foundation, write to the Free Software
- Foundation; we sometimes make exceptions for this. Our decision
- will be guided by the two goals of preserving the free status of
- all derivatives of our free software and of promoting the sharing
- and reuse of software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
- AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
- OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
- PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
- DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR
- OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
- MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
- LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
- OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
- OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-END OF TERMS AND CONDITIONS
diff --git a/branches/hugues/glagen/3d/Greatings.txt b/branches/hugues/glagen/3d/Greatings.txt
deleted file mode 100644
index 5f1c204..0000000
--- a/branches/hugues/glagen/3d/Greatings.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-
-For their help, we would especially thanks :
-
-
-Dr. Thierry Geraud : very good ideas for the general design
- of the library engine of the project.
-
-Jon Harrop : lot's of explainations about the detail
- increasing.
-
-EpiDemic's team : many tips about OpenGl.
-
-EpiMac : for there help to port Glagen on Mac OS X.
-
-EPITA : because this project was part of our
- degree.
-
-And many others...
diff --git a/branches/hugues/glagen/3d/glagen b/branches/hugues/glagen/3d/glagen
deleted file mode 100755
index c387ba1..0000000
--- a/branches/hugues/glagen/3d/glagen
+++ /dev/null
Binary files differ
diff --git a/branches/hugues/glagen/dll/.emacs.desktop b/branches/hugues/glagen/dll/.emacs.desktop
deleted file mode 100644
index 5c1f534..0000000
--- a/branches/hugues/glagen/dll/.emacs.desktop
+++ /dev/null
@@ -1,93 +0,0 @@
-;; -*- coding: emacs-mule; -*-
-;; --------------------------------------------------------------------------
-;; Desktop File for Emacs
-;; --------------------------------------------------------------------------
-;; Created Mon Sep 23 16:32:32 2002
-;; Emacs version 21.2.1
-
-;; Global section:
-(setq desktop-missing-file-warning nil)
-(setq tags-file-name nil)
-(setq tags-table-list nil)
-(setq search-ring '("glg_i" "GLG_i" "pallo" "exit" "return" "size" "###" "disp" "disp " "const" "getL" "GL_" "emacs"))
-(setq regexp-search-ring nil)
-(setq register-alist nil)
-
-;; Buffer section:
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/.mylogin"
- ".mylogin"
- 'fundamental-mode
- nil
- 457
- '(429 nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/classes/matrix.hh"
- "matrix.hh"
- 'c++-mode
- '(abbrev-mode)
- 513
- '(nil nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/3d/data_glagen.hh"
- "data_glagen.hh"
- 'c++-mode
- '(abbrev-mode)
- 1629
- '(1540 t)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/Makefile"
- "Makefile"
- 'makefile-mode
- nil
- 447
- '(nil nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/libraryloader.cc"
- "libraryloader.cc"
- 'c++-mode
- '(abbrev-mode)
- 8093
- '(3155 nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/rapport+hiegel_h+EN.txt"
- "rapport+hiegel_h+EN.txt"
- 'text-mode
- '(auto-fill-mode)
- 418
- '(nil nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/classes/libclass.cc"
- "libclass.cc"
- 'c++-mode
- '(abbrev-mode)
- 1095
- '(1 nil)
- nil
- nil
- nil)
-
diff --git a/branches/hugues/glagen/trucs b/branches/hugues/glagen/trucs
deleted file mode 100644
index 8589cba..0000000
--- a/branches/hugues/glagen/trucs
+++ /dev/null
@@ -1,10 +0,0 @@
-Fonction a passer lors de l'Init :
-
-int GLG_palloc(kind..)
-int GLG_read(...)
-int GLG_write()
-void GLG_perlin()
- double GLG_Perlin_noise_1D(double arg);
- float GLG_Perlin_noise_2D(float vec[2]);
- float GLG_Perlin_noise_3D(float vec[3]);
- float GLG_Perlin_noise_4D(float vec[4]);
diff --git a/branches/hugues/glagen/dll/MANUAL b/dll/MANUAL
index 5e7cfa0..5e7cfa0 100644
--- a/branches/hugues/glagen/dll/MANUAL
+++ b/dll/MANUAL
diff --git a/branches/hugues/glagen/dll/Makefile b/dll/Makefile
index b3db10d..b3db10d 100644
--- a/branches/hugues/glagen/dll/Makefile
+++ b/dll/Makefile
diff --git a/branches/hugues/glagen/dll/NOTES b/dll/NOTES
index 19b48fa..19b48fa 100644
--- a/branches/hugues/glagen/dll/NOTES
+++ b/dll/NOTES
diff --git a/branches/hugues/glagen/dll/README b/dll/README
index 36d270e..36d270e 100644
--- a/branches/hugues/glagen/dll/README
+++ b/dll/README
diff --git a/branches/hugues/glagen/dll/classes/Data_property.cc b/dll/classes/Data_property.cc
index 3be4b27..3be4b27 100644
--- a/branches/hugues/glagen/dll/classes/Data_property.cc
+++ b/dll/classes/Data_property.cc
diff --git a/branches/hugues/glagen/dll/classes/Data_property.hh b/dll/classes/Data_property.hh
index b4d0c4d..b4d0c4d 100644
--- a/branches/hugues/glagen/dll/classes/Data_property.hh
+++ b/dll/classes/Data_property.hh
diff --git a/branches/hugues/glagen/dll/classes/Data_string.cc b/dll/classes/Data_string.cc
index 49fe4ff..49fe4ff 100644
--- a/branches/hugues/glagen/dll/classes/Data_string.cc
+++ b/dll/classes/Data_string.cc
diff --git a/branches/hugues/glagen/dll/classes/Data_string.hh b/dll/classes/Data_string.hh
index a5f9131..a5f9131 100644
--- a/branches/hugues/glagen/dll/classes/Data_string.hh
+++ b/dll/classes/Data_string.hh
diff --git a/branches/hugues/glagen/dll/classes/GLG-libraries-devel.cc b/dll/classes/GLG-libraries-devel.cc
index 002d479..002d479 100644
--- a/branches/hugues/glagen/dll/classes/GLG-libraries-devel.cc
+++ b/dll/classes/GLG-libraries-devel.cc
diff --git a/branches/hugues/glagen/dll/classes/GLG-libraries-devel.hh b/dll/classes/GLG-libraries-devel.hh
index 8b13789..8b13789 100644
--- a/branches/hugues/glagen/dll/classes/GLG-libraries-devel.hh
+++ b/dll/classes/GLG-libraries-devel.hh
diff --git a/branches/hugues/glagen/dll/classes/dot.cc b/dll/classes/dot.cc
index 10e766a..10e766a 100644
--- a/branches/hugues/glagen/dll/classes/dot.cc
+++ b/dll/classes/dot.cc
diff --git a/branches/hugues/glagen/dll/classes/dot.hh b/dll/classes/dot.hh
index e13f23c..e13f23c 100644
--- a/branches/hugues/glagen/dll/classes/dot.hh
+++ b/dll/classes/dot.hh
diff --git a/branches/hugues/glagen/dll/classes/libclass.cc b/dll/classes/libclass.cc
index 730026f..730026f 100644
--- a/branches/hugues/glagen/dll/classes/libclass.cc
+++ b/dll/classes/libclass.cc
diff --git a/branches/hugues/glagen/dll/classes/libclass.hh b/dll/classes/libclass.hh
index 33a2fde..33a2fde 100644
--- a/branches/hugues/glagen/dll/classes/libclass.hh
+++ b/dll/classes/libclass.hh
diff --git a/branches/hugues/glagen/dll/classes/matrix.cc b/dll/classes/matrix.cc
index 7991769..7991769 100644
--- a/branches/hugues/glagen/dll/classes/matrix.cc
+++ b/dll/classes/matrix.cc
diff --git a/branches/hugues/glagen/dll/classes/matrix.hh b/dll/classes/matrix.hh
index f49ea17..f49ea17 100644
--- a/branches/hugues/glagen/dll/classes/matrix.hh
+++ b/dll/classes/matrix.hh
diff --git a/branches/hugues/glagen/dll/classes/node.cc b/dll/classes/node.cc
index a3ae387..a3ae387 100644
--- a/branches/hugues/glagen/dll/classes/node.cc
+++ b/dll/classes/node.cc
diff --git a/branches/hugues/glagen/dll/classes/node.hh b/dll/classes/node.hh
index 3d8c838..3d8c838 100644
--- a/branches/hugues/glagen/dll/classes/node.hh
+++ b/dll/classes/node.hh
diff --git a/branches/hugues/glagen/dll/create_dotproperty_init.cc b/dll/create_dotproperty_init.cc
index 56de80d..56de80d 100644
--- a/branches/hugues/glagen/dll/create_dotproperty_init.cc
+++ b/dll/create_dotproperty_init.cc
diff --git a/branches/hugues/glagen/dll/create_dotproperty_init.hh b/dll/create_dotproperty_init.hh
index e69de29..e69de29 100644
--- a/branches/hugues/glagen/dll/create_dotproperty_init.hh
+++ b/dll/create_dotproperty_init.hh
diff --git a/branches/hugues/glagen/dll/header.cc b/dll/header.cc
index 92e361a..92e361a 100644
--- a/branches/hugues/glagen/dll/header.cc
+++ b/dll/header.cc
diff --git a/branches/hugues/glagen/dll/includes/errors.hh b/dll/includes/errors.hh
index 00267fb..00267fb 100644
--- a/branches/hugues/glagen/dll/includes/errors.hh
+++ b/dll/includes/errors.hh
diff --git a/branches/hugues/glagen/dll/libraryloader.cc b/dll/libraryloader.cc
index 9e8b67a..9e8b67a 100644
--- a/branches/hugues/glagen/dll/libraryloader.cc
+++ b/dll/libraryloader.cc
diff --git a/branches/hugues/glagen/dll/libraryloader.hh b/dll/libraryloader.hh
index f23810b..f23810b 100644
--- a/branches/hugues/glagen/dll/libraryloader.hh
+++ b/dll/libraryloader.hh
diff --git a/branches/hugues/glagen/dll/main.cc b/dll/main.cc
index ac744f7..ac744f7 100644
--- a/branches/hugues/glagen/dll/main.cc
+++ b/dll/main.cc
diff --git a/branches/hugues/glagen/dll/main.hh b/dll/main.hh
index a812196..a812196 100644
--- a/branches/hugues/glagen/dll/main.hh
+++ b/dll/main.hh
diff --git a/branches/hugues/glagen/dll/samples2/gps/libtoto.gps b/dll/samples2/gps/libtoto.gps
index b70c38b..b70c38b 100644
--- a/branches/hugues/glagen/dll/samples2/gps/libtoto.gps
+++ b/dll/samples2/gps/libtoto.gps
diff --git a/tags/START/glagen/3d/Archs.txt b/tags/START/glagen/3d/Archs.txt
deleted file mode 100644
index a39618d..0000000
--- a/tags/START/glagen/3d/Archs.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-
-The Glagen's 3D engine ha been ported on:
-
- * GNU/Linux (Debian, Mandrake);
- * MacOS X;
- * FreeBSD, NetBSD and OpenBSD;
- * Microsoft Windows.
-
-To do :
-
- * Test on other GNU/Linux distributions (Redhat, Slackware at least);
- * Test on GNU/Hurd, if possible;
- * Maybe on Solaris.
diff --git a/tags/START/glagen/3d/Fixme.txt b/tags/START/glagen/3d/Fixme.txt
deleted file mode 100644
index 6a57b48..0000000
--- a/tags/START/glagen/3d/Fixme.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-To fix :
-
- * Find a fast distace approximation.
-
- * The light!
-
- * Add 2D graphics (Head Up Display, fonts...).
-
- * Bug when near the ground;
-
- * Try different noise;
-
- * Increase definatly the precision depth.
diff --git a/tags/START/glagen/3d/GPL.txt b/tags/START/glagen/3d/GPL.txt
deleted file mode 100644
index 0dd1a53..0000000
--- a/tags/START/glagen/3d/GPL.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-GNU GENERAL PUBLIC LICENSE
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom
-to share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on,
-we want its recipients to know that what they have is not the
-original, so that any problems introduced by others will not reflect
-on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at
-all.
-
-The precise terms and conditions for copying, distribution and
-modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION
-AND MODIFICATION
-
-0. This License applies to any program or other work which contains a
- notice placed by the copyright holder saying it may be distributed
- under the terms of this General Public License. The "Program",
- below, refers to any such program or work, and a "work based on the
- Program" means either the Program or any derivative work under
- copyright law: that is to say, a work containing the Program or a
- portion of it, either verbatim or with modifications and/or
- translated into another language. (Hereinafter, translation is
- included without limitation in the term "modification".) Each
- licensee is addressed as "you".
-
- Activities other than copying, distribution and modification are
- not covered by this License; they are outside its scope. The act of
- running the Program is not restricted, and the output from the
- Program is covered only if its contents constitute a work based on
- the Program (independent of having been made by running the
- Program). Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source
- code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an appropriate
- copyright notice and disclaimer of warranty; keep intact all the
- notices that refer to this License and to the absence of any
- warranty; and give any other recipients of the Program a copy of
- this License along with the Program.
-
- You may charge a fee for the physical act of transferring a copy,
- and you may at your option offer warranty protection in exchange
- for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of
- it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
-
- * a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- * b) You must cause any work that you distribute or publish, that
- in whole or in part contains or is derived from the Program or
- any part thereof, to be licensed as a whole at no charge to all
- third parties under the terms of this License.
-
- * c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you
- provide a warranty) and that users may redistribute the program
- under these conditions, and telling the user how to view a copy
- of this License. (Exception: if the Program itself is
- interactive but does not normally print such an announcement,
- your work based on the Program is not required to print an
- announcement.)
-
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the
- Program, and can be reasonably considered independent and separate
- works in themselves, then this License, and its terms, do not apply
- to those sections when you distribute them as separate works. But
- when you distribute the same sections as part of a whole which is a
- work based on the Program, the distribution of the whole must be on
- the terms of this License, whose permissions for other licensees
- extend to the entire whole, and thus to each and every part
- regardless of who wrote it.
-
- Thus, it is not the intent of this section to claim rights or
- contest your rights to work written entirely by you; rather, the
- intent is to exercise the right to control the distribution of
- derivative or collective works based on the Program.
-
- In addition, mere aggregation of another work not based on the
- Program with the Program (or with a work based on the Program) on a
- volume of a storage or distribution medium does not bring the other
- work under the scope of this License.
-
-3. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms
- of Sections 1 and 2 above provided that you also do one of the
- following:
-
- * a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Sections 1 and 2 above on a medium customarily used for software
- interchange; or,
-
- * b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a
- medium customarily used for software interchange; or,
-
- * c) Accompany it with the information you received as to the
- offer to distribute corresponding source code. (This alternative
- is allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
- The source code for a work means the preferred form of the work for
- making modifications to it. For an executable work, complete source
- code means all the source code for all modules it contains, plus
- any associated interface definition files, plus the scripts used to
- control compilation and installation of the executable. However, as
- a special exception, the source code distributed need not include
- anything that is normally distributed (in either source or binary
- form) with the major components (compiler, kernel, and so on) of
- the operating system on which the executable runs, unless that
- component itself accompanies the executable.
-
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program is
- void, and will automatically terminate your rights under this
- License. However, parties who have received copies, or rights, from
- you under this License will not have their licenses terminated so
- long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to modify or
- distribute the Program or its derivative works. These actions are
- prohibited by law if you do not accept this License. Therefore, by
- modifying or distributing the Program (or any work based on the
- Program), you indicate your acceptance of this License to do so,
- and all its terms and conditions for copying, distributing or
- modifying the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program subject
- to these terms and conditions. You may not impose any further
- restrictions on the recipients' exercise of the rights granted
- herein. You are not responsible for enforcing compliance by third
- parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent
- issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this
- License, they do not excuse you from the conditions of this
- License. If you cannot distribute so as to satisfy simultaneously
- your obligations under this License and any other pertinent
- obligations, then as a consequence you may not distribute the
- Program at all. For example, if a patent license would not permit
- royalty-free redistribution of the Program by all those who receive
- copies directly or indirectly through you, then the only way you
- could satisfy both it and this License would be to refrain entirely
- from distribution of the Program.
-
- If any portion of this section is held invalid or unenforceable
- under any particular circumstance, the balance of the section is
- intended to apply and the section as a whole is intended to apply
- in other circumstances.
-
- It is not the purpose of this section to induce you to infringe any
- patents or other property right claims or to contest validity of
- any such claims; this section has the sole purpose of protecting
- the integrity of the free software distribution system, which is
- implemented by public license practices. Many people have made
- generous contributions to the wide range of software distributed
- through that system in reliance on consistent application of that
- system; it is up to the author/donor to decide if he or she is
- willing to distribute software through any other system and a
- licensee cannot impose that choice.
-
- This section is intended to make thoroughly clear what is believed
- to be a consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces,
- the original copyright holder who places the Program under this
- License may add an explicit geographical distribution limitation
- excluding those countries, so that distribution is permitted only
- in or among countries not thus excluded. In such case, this License
- incorporates the limitation as if written in the body of this
- License.
-
-9. The Free Software Foundation may publish revised and/or new
- versions of the General Public License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
- Program specifies a version number of this License which applies to
- it and "any later version", you have the option of following the
- terms and conditions either of that version or of any later version
- published by the Free Software Foundation. If the Program does not
- specify a version number of this License, you may choose any
- version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the
- author to ask for permission. For software which is copyrighted by
- the Free Software Foundation, write to the Free Software
- Foundation; we sometimes make exceptions for this. Our decision
- will be guided by the two goals of preserving the free status of
- all derivatives of our free software and of promoting the sharing
- and reuse of software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
- AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
- OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
- PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
- DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR
- OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
- MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
- LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
- OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
- OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-END OF TERMS AND CONDITIONS
diff --git a/tags/START/glagen/3d/Glagen.dev b/tags/START/glagen/3d/Glagen.dev
deleted file mode 100644
index 6dc18da..0000000
--- a/tags/START/glagen/3d/Glagen.dev
+++ /dev/null
@@ -1,345 +0,0 @@
-[Project]
-FileName=Glagen.dev
-Name=Glagen
-UnitCount=20
-Type=0
-Ver=1
-ObjFiles=
-Includes=
-Libs=
-PrivateResource=Glagen_private.rc
-ResourceIncludes=
-MakeIncludes=
-Compiler=
-CppCompiler=_@@_
-Linker=-lopengl32 -lglu32 -lglut32_@@_
-IsCpp=1
-Icon=Glagen.ico
-ExeOutput=
-ObjectOutput=
-OverrideOutput=1
-OverrideOutputName=Glagen.exe
-HostApplication=
-Folders=Classes,Implementation
-CommandLine=
-IncludeVersionInfo=1
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=000000000100100000
-
-[Unit1]
-FileName=display.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=dot.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=dot_gl.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=end.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=frame.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=isosahedron.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=library.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=main.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=matrix3d.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=misc.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=perlin.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=simul.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=triangle.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=triangle_gl.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=vector.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit16]
-FileName=data_glagen.hh
-CompileCpp=1
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=1
-BuildCmd=
-
-[Unit17]
-FileName=display.hh
-CompileCpp=1
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit18]
-FileName=dot.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit19]
-FileName=end.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit20]
-FileName=frame.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit21]
-FileName=isosahedron.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit22]
-FileName=library.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit23]
-FileName=matrix3d.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit24]
-FileName=misc.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit25]
-FileName=perlin.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit26]
-FileName=simul.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit27]
-FileName=triangle.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit28]
-FileName=vector.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit29]
-FileName=time.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit30]
-FileName=time_windows.cc
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-CompileCpp=1
-
-[Unit31]
-FileName=time_windows.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=0
-Release=9
-Build=0
-LanguageID=1033
-CharsetID=1252
-CompanyName=www.glagen.org
-FileVersion=0.0.9.0
-FileDescription=GPL Landscape Generator
-InternalName=glagen.exe
-LegalCopyright=Copyright 2003, www.glagen.org
-LegalTrademarks=
-OriginalFilename=glagen.exe
-ProductName=Glagen
-ProductVersion=Alpha 0.0.9.0
-AutoIncBuildNr=0
-
diff --git a/tags/START/glagen/3d/Glagen.ico b/tags/START/glagen/3d/Glagen.ico
deleted file mode 100644
index acb0589..0000000
--- a/tags/START/glagen/3d/Glagen.ico
+++ /dev/null
Binary files differ
diff --git a/tags/START/glagen/3d/Greatings.txt b/tags/START/glagen/3d/Greatings.txt
deleted file mode 100644
index 5f1c204..0000000
--- a/tags/START/glagen/3d/Greatings.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-
-For their help, we would especially thanks :
-
-
-Dr. Thierry Geraud : very good ideas for the general design
- of the library engine of the project.
-
-Jon Harrop : lot's of explainations about the detail
- increasing.
-
-EpiDemic's team : many tips about OpenGl.
-
-EpiMac : for there help to port Glagen on Mac OS X.
-
-EPITA : because this project was part of our
- degree.
-
-And many others...
diff --git a/tags/START/glagen/3d/Makefile b/tags/START/glagen/3d/Makefile
deleted file mode 100644
index a7d46b5..0000000
--- a/tags/START/glagen/3d/Makefile
+++ /dev/null
@@ -1,139 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-NAME = glagen
-
-DIRECTORY = 3d
-
-ARCHIVE = tar -cvzf
-
-CC = g++
-
-ECHO = @echo
-
-RM = rm -f
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- misc.cc \
- perlin.cc \
- simul.cc \
- time_unix.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-DEBUG_FLAGS = -ggdb3
-
-OPTIM_FLAGS = -O3 \
- -ffast-math \
- -funroll-loops \
- -felide-constructors \
- -fexpensive-optimizations \
- -finline-functions
-
-WARNING_FLAGS = -Wall \
- -W \
- -Wstrict-prototypes
-
-CFLAGS = $(DEBUG_FLAGS) \
- $(WARNING_FLAGS)
-
-# CFLAGS = $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS)
-
-# CFLAGS = $(DEBUG_FLAGS) \
-# $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS)
-
-#GTK_IFLAGS = `gtk-config --cflags`
-
-OPENGL_IFLAGS = -I/usr/include \
- -I/usr/include/GL \
- -I/usr/X11R6/include \
- -I/usr/X11R6/include/GL
-
-IFLAGS = $(OPENGL_IFLAGS)
-
-#GTK_LFLAGS = `gtk-config --libs`
-
-OPENGL_LFLAGS = -L/usr/X11R6/lib \
- -lX11 \
- -lGL \
- -lGLU \
- -lglut
-
-LFLAGS = -L/usr/lib \
- -L/usr/pkg/lib \
- -lc \
- -lm \
- $(OPENGL_LFLAGS)
-
-OBJ = $(SRC:.cc=.o)
-
-all : $(NAME)
-
-$(NAME) : $(OBJ)
- $(CC) $(OBJ) $(LFLAGS) -o $(NAME)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-separator :
- $(ECHO) "------------------------------------------"
-
-re : clean all
-
-run : all
- ./$(NAME)
-
-tarball : distclean separator
- $(ECHO) "Archiving..."
- cd .. && $(ARCHIVE) $(NAME).tar.gz $(DIRECTORY)
- $(ECHO) "Done !"
-
-install :
- $(ECHO) "Not implemented yet."
-
-love :
- $(ECHO) "Sorry, I have a headache..."
diff --git a/tags/START/glagen/3d/Makefile.mac b/tags/START/glagen/3d/Makefile.mac
deleted file mode 100644
index 7e4d5d9..0000000
--- a/tags/START/glagen/3d/Makefile.mac
+++ /dev/null
@@ -1,138 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile.mac for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-NAME = glagen
-
-DIRECTORY = 3d
-
-ARCHIVE = tar -cvzf
-
-CC = g++
-
-ECHO = @echo
-
-RM = rm -f
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- misc.cc \
- perlin.cc \
- simul.cc \
- time_unix.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-OPTIM_FLAGS = -O3 \
- -ffast-math \
- -funroll-loops \
- -felide-constructors \
- -fexpensive-optimizations \
- -finline-functions
-
-WARNING_FLAGS = -Wall \
- -W \
- -Wstrict-prototypes
-
-CFLAGS = $(DEBUG_FLAGS) \
- $(WARNING_FLAGS) \
- -DDARWIN
-
-# CFLAGS = $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# CFLAGS = $(DEBUG_FLAGS) \
-# $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# Sorry for that...
-# I'll try to do something better soon.
-
-#GTK_IFLAGS = `gtk-config --cflags`
-
-OPENGL_IFLAGS = -I/usr/X11R6/include \
- -I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers \
- -I/System/Library/Frameworks/GLUT.framework/Versions/A/Headers
-
-IFLAGS = -I/usr/include \
- $(OPENGL_IFLAGS)
-
-#GTK_LFLAGS = `gtk-config --libs`
-
-OPENGL_LFLAGS = -L/usr/X11R6/lib \
- -L/sw/lib \
- -lX11 \
- -lGL \
- -lGLU \
- -lglut
-
-LFLAGS = -L/usr/lib \
- -L/usr/pkg/lib \
- -lc \
- -lm \
- $(OPENGL_LFLAGS)
-
-OBJ = $(SRC:.cc=.o)
-
-all : $(NAME)
-
-$(NAME) : $(OBJ)
- $(CC) $(OBJ) $(LFLAGS) -o $(NAME)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-separator :
- $(ECHO) "------------------------------------------"
-
-re : clean all
-
-tarball : distclean separator
- $(ECHO) "Archiving..."
- cd .. && $(ARCHIVE) $(NAME).tar.gz $(DIRECTORY)
- $(ECHO) "Done !"
-
-love :
- $(ECHO) "Sorry, I have a headache..."
diff --git a/tags/START/glagen/3d/Makefile.macosx b/tags/START/glagen/3d/Makefile.macosx
deleted file mode 100644
index 37b8e5b..0000000
--- a/tags/START/glagen/3d/Makefile.macosx
+++ /dev/null
@@ -1,133 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile.mac for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-NAME = glagen
-
-DIRECTORY = 3d
-
-ARCHIVE = tar -cvzf
-
-CC = g++
-
-ECHO = @echo
-
-RM = rm -f
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- perlin.cc \
- simul.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-OPTIM_FLAGS = -O3 \
- -ffast-math \
- -funroll-loops \
- -felide-constructors \
- -fexpensive-optimizations \
- -finline-functions
-
-WARNING_FLAGS = -Wall \
- -W \
- -Wstrict-prototypes
-
-CFLAGS = $(DEBUG_FLAGS) \
- $(WARNING_FLAGS) \
- -DDARWIN
-
-# CFLAGS = $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# CFLAGS = $(DEBUG_FLAGS) \
-# $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# Sorry for that...
-# I'll try to do something better soon.
-
-#GTK_IFLAGS = `gtk-config --cflags`
-
-OPENGL_IFLAGS = -I/usr/X11R6/include \
- -I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers \
- -I/System/Library/Frameworks/GLUT.framework/Versions/A/Headers
-
-IFLAGS = -I/usr/include \
- $(OPENGL_IFLAGS)
-
-#GTK_LFLAGS = `gtk-config --libs`
-
-OPENGL_LFLAGS = -L/usr/X11R6/lib \
- -L/sw/lib \
- -lX11 \
- -lGL \
- -lGLU \
- -lglut
-
-LFLAGS = -L/usr/lib \
- -L/usr/pkg/lib \
- -lc \
- -lm \
- $(OPENGL_LFLAGS)
-
-OBJ = $(SRC:.cc=.o)
-
-all : $(NAME)
-
-$(NAME) : $(OBJ)
- $(CC) $(OBJ) $(LFLAGS) -o $(NAME)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-re : clean all
-
-tarball : distclean
- $(ECHO) "Archiving..."
- cd .. && $(ARCHIVE) $(NAME).tar.gz $(DIRECTORY)
- $(ECHO) "Done !"
-
-love :
- $(ECHO) "Sorry, I have a headache..."
diff --git a/tags/START/glagen/3d/Makefile.windows b/tags/START/glagen/3d/Makefile.windows
deleted file mode 100644
index 1a9a741..0000000
--- a/tags/START/glagen/3d/Makefile.windows
+++ /dev/null
@@ -1,98 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile.win for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-# Note : Makefile.win is overwritten by Dev-C++ when compiling
-
-NAME = glagen.exe
-
-CC = g++.exe
-
-WINDRES = windres.exe
-
-DEVCPP = # Put here the directory of the compiler : "C:/Dev-Cpp"
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- misc.cc \
- perlin.cc \
- simul.cc \
- time_unix.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-RC = Glagen_private.rc
-
-RES = Glagen_private.res
-
-OPTIM_FLAGS = -fexpensive-optimizations -O3
-
-IFLAGS = -I"$(DEVCPP)/include" \
- -I"$(DEVCPP)/include/c++" \
- -I"$(DEVCPP)/include/c++/mingw32" \
- -I"$(DEVCPP)/include/c++/backward"
-
-CFLAGS = $(OPTIM_FLAGS) \
- -DWINDOWS
-
-LFLAGS = -L"$(DEVCPP)/lib" \
- -mwindows \
- -lopengl32 \
- -lglu32 \
- -lglut32
-
-OBJ = $(SRC:.cc=.o)
-
-
-all: all-before $(NAME) all-after
-
-$(NAME): $(OBJ)
- $(CPP) $(OBJ) -o $(NAME) $(LIBS)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-$(RES): $(RC)
- $(WINDRES) -i $(RC) -I rc -o $(RES) -O coff
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-re : clean all
diff --git a/tags/START/glagen/3d/data_glagen.hh b/tags/START/glagen/3d/data_glagen.hh
deleted file mode 100644
index e02332b..0000000
--- a/tags/START/glagen/3d/data_glagen.hh
+++ /dev/null
@@ -1,115 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// data_glagen.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DATA_GLAGEN_HH_
-# define DATA_GLAGEN_HH_
-
-#ifdef DARWIN
-# define float double
-# define sqrtf sqrt
-# define sinf sin
-# define cosf cos
-#endif
-
-#include <sys/time.h>
-#include <cstdlib>
-#include "frame.hh"
-
-typedef struct
-{
- class Frame frame;
- float speed;
- float altitude;
-} observer_t;
-
-typedef enum
- {
- none,
- surface,
- object,
- non_material,
- other
- } kind_lib_t;
-
-typedef struct
-{
- kind_lib_t kind;
- size_t size;
- void *data;
-} property_t;
-
-typedef struct
-{
- kind_lib_t kind;
- bool dynamic;
- void (*run)(class Dot *, unsigned int);
- char *name;
-} library_t;
-
-typedef struct
-{
- observer_t observer;
- struct timeval time;
- long start_time;
- float float_time;
- char step;
- float size;
- float square_size;
- class Triangle *ref;
- class Triangle *current;
- int property;
- library_t library[5];
- float split_dist_limit;
- float split_norm_limit;
- unsigned int triangles;
- unsigned int max_triangles;
- bool display_normal;
- bool display_planet;
- bool display_all;
- bool third_view;
- bool zoom;
- bool light;
- int mode;
- int depth_test;
- int x;
- int y;
-} glagen_t;
-
-extern glagen_t glagen;
-
-typedef struct
-{
- float height;
- float red;
- float green;
- float blue;
- float alpha;
-} surface_t;
-
-#endif // DATA_GLAGEN_HH_
diff --git a/tags/START/glagen/3d/display.cc b/tags/START/glagen/3d/display.cc
deleted file mode 100644
index a956274..0000000
--- a/tags/START/glagen/3d/display.cc
+++ /dev/null
@@ -1,411 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// display.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cstdlib>
-#include <cstdio>
-#include <cmath>
-
-#ifndef DARWIN
-# include <GL/gl.h>
-# include <GL/glu.h>
-# include <GL/glut.h>
-#else
-# include <gl.h>
-# include <glu.h>
-# include <glut.h>
-#endif
-
-#include "data_glagen.hh"
-#include "end.hh"
-#include "library.hh"
-#include "time.hh"
-#include "triangle.hh"
-
-bool pressed;
-int x;
-int y;
-int xold;
-int yold;
-
-static const GLfloat L0position[] = { 0.0, 1.0, -2.0, 0.0 };
-static const GLfloat L0ambient[] = { 0.0, 0.0, 0.0, 1.0 };
-static const GLfloat L0diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
-static const GLfloat L0specular[] = { 1.0, 1.0, 1.0, 1.0 };
-static const GLfloat Mshiny = 50;
-
-void display_frame ()
-{
- Frame *o = &glagen.observer.frame;
-
- update_time ();
-
- glagen.step = glagen.step + 1;
- if (glagen.display_planet == true)
- library_caller (glagen.ref);
- glagen.step = glagen.step + 1;
- glagen.ref->Update_normal_visitor ();
- glagen.step = glagen.step + 1;
-
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity ();
-
- // Third person view : the observer is represented by a frame
- if (glagen.third_view == true)
- {
- // View initialization in third person view mode
- gluPerspective(45,
- float(glagen.x) / float(glagen.y),
- 0.5,
- 8.0);
- gluLookAt (-4, 4, -4,
- 1, -1, 1,
- 0, 1, 0);
-
- // The frame representing the user's position
- if (glagen.light == true)
- glDisable(GL_LIGHTING);
- glBegin (GL_LINES);
- glColor3f(1.0, 1.0, 0.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
- glVertex3f(o->Origin_X () + o->Basis_X ().X () / 2,
- o->Origin_Y () + o->Basis_X ().Y () / 2,
- o->Origin_Z () + o->Basis_X ().Z () / 2);
- glColor3f(0.0, 1.0, 1.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
- glVertex3f(o->Origin_X () + o->Basis_Y ().X () / 2,
- o->Origin_Y () + o->Basis_Y ().Y () / 2,
- o->Origin_Z () + o->Basis_Y ().Z () / 2);
- glColor3f(1.0, 0.0, 1.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
- glVertex3f(o->Origin_X () + o->Basis_Z ().X () / 2,
- o->Origin_Y () + o->Basis_Z ().Y () / 2,
- o->Origin_Z () + o->Basis_Z ().Z () / 2);
-
- // Then the projection of the user's position on the planet's frame
- glColor3f(1.0, 1.0, 1.0);
- glVertex3f(0, 0, 0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
-
- glColor3f(1.0, 0.0, 0.0);
- glVertex3f(0, 0, 0);
- glVertex3f(o->Origin_X (), 0, 0);
-
- glColor3f(0.0, 1.0, 0.0);
- glVertex3f(o->Origin_X (), 0, 0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), 0);
-
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), 0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
-
- glEnd ();
- if (glagen.light == true)
- glEnable(GL_LIGHTING);
- }
- else
- {
- // View initialization in normal view
- if (glagen.x > glagen.y)
- gluPerspective(45 * float(glagen.y) / float(glagen.x),
- float(glagen.x) / float(glagen.y),
- glagen.observer.altitude / 2,
- glagen.observer.altitude + 1);
- else
- gluPerspective(45,
- float(glagen.x) / float(glagen.y),
- glagen.observer.altitude / 2,
- glagen.observer.altitude + 1);
- gluLookAt (o->Origin_X (), o->Origin_Y (), o->Origin_Z (),
- o->Origin_X () + o->Basis_Z ().X (),
- o->Origin_Y () + o->Basis_Z ().Y (),
- o->Origin_Z () + o->Basis_Z ().Z (),
- o->Basis_Y ().X (), o->Basis_Y ().Y (), o->Basis_Y (). Z ());
- }
-
-
- // The light
- if (glagen.light == true)
- {
- glLightfv(GL_LIGHT0, GL_POSITION, L0position);
- glEnable(GL_LIGHTING);
- }
-
- // The line calling the planet's display is just here
- glagen.ref->Display (0);
- glagen.step = glagen.step + 1;
-
- if (glagen.light == true)
- glDisable (GL_LIGHTING);
-
-// // Uncomment those lines for an atmosphere ===
- glEnable (GL_BLEND);
- glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-// for (int current = 1; current < 100; current ++)
-// {
-// glagen.ref->Display (current);
-// glagen.step = glagen.step + 1;
-// }
-// glDisable (GL_BLEND);
-// //
-
- glFlush ();
-
- // On echange les buffers
- glutSwapBuffers ();
- glutPostRedisplay();
-}
-
-//
-// Simple keyboard events catching
-//
-void Keyboard (unsigned char key_stroke, int, int)
-{
- switch (key_stroke)
- {
- // Quit
- case 'q':
- case 'Q':
- case 27:
- end_all();
- }
-}
-
-//
-// Other keyboard events catching
-//
-void Keyboard_Special (int key_stroke, int, int)
-{
- Frame *o = &glagen.observer.frame;
- float ox = o->Origin_X ();
- float oy = o->Origin_Y ();
- float oz = o->Origin_Z ();
-
- switch (key_stroke)
- {
- case GLUT_KEY_UP:
- o->Translate (o->Basis_Z () * glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_DOWN:
- o->Translate (o->Basis_Z () * -glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_LEFT:
- o->Translate (o->Basis_X () * glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_RIGHT:
- o->Translate (o->Basis_X () * -glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_PAGE_UP:
- o->Translate (o->Basis_Y () * glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_PAGE_DOWN:
- o->Translate (o->Basis_Y () * -glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_F1:
- if (glagen.mode == 1)
- glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
- else
- {
- if (glagen.mode == 2)
- glPolygonMode (GL_FRONT_AND_BACK, GL_POINT);
- else
- glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
- }
- glagen.mode++;
- if (glagen.mode > 3)
- glagen.mode = 1;
- glutPostRedisplay ();
- break;
- case GLUT_KEY_F2:
- glagen.depth_test = !glagen.depth_test;
- if (glagen.depth_test == true)
- glEnable (GL_DEPTH_TEST);
- else
- glDisable (GL_DEPTH_TEST);
- glutPostRedisplay ();
- break;
- case GLUT_KEY_F3:
- glagen.display_normal = !glagen.display_normal;
- break;
- case GLUT_KEY_F4:
- glagen.display_planet = !glagen.display_planet;
- break;
- case GLUT_KEY_F5:
- glagen.display_all = !glagen.display_all;
- break;
- case GLUT_KEY_F6:
- glagen.third_view = !glagen.third_view;
- break;
- case GLUT_KEY_F7:
- glagen.light = !glagen.light;
- break;
- }
-// {
-// float alt = glagen.observer.altitude * 12000000;
-// if (alt > 1000)
-// printf ("%.3f km\n", alt / 1000);
-// else
-// printf ("%.3f m\n", alt);
-// }
-}
-
-void reshape (int x, int y)
-{
- glagen.x = x;
- glagen.y = y;
- glViewport (0, 0, x, y);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
-}
-
-void mouse(int button, int state, int x, int y)
-{
- // sleft button pressed
- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
- pressed = true;
- // left button released
- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP)
- {
- pressed = false;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- }
- xold = x; // saving position
- yold = y;
-}
-
-void mousemotion(int x, int y)
-{
- float angle[3];
-
- if (pressed) // left button
- {
- angle[0] = (y - yold) / 100.0;
- angle[1] = (xold - x) / 100.0;
- angle[2] = 0;
- }
- else
- {
- angle[0] = 0;
- angle[1] = 0;
- angle[2] = (xold - x) / 50.0;
- }
-
- glagen.observer.frame.Rotate (angle[0], glagen.observer.frame.Basis_X ());
- glagen.observer.frame.Rotate (angle[1], glagen.observer.frame.Basis_Y ());
- glagen.observer.frame.Rotate (angle[2], glagen.observer.frame.Basis_Z ());
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- glutPostRedisplay ();
- xold = x;
- yold = y;
-}
-
-void display(int *narg, char ***args)
-{
- // Glut
- glutInit (narg, *args);
- glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutInitWindowSize (600, 600);
- glutCreateWindow ("Test Glagen");
-
- // OpenGL
- glClearColor (0.0, 0.0, 0.0, 0.0);
- glColor3f (1.0, 1.0, 1.0);
- glEnable (GL_DEPTH_TEST);
- glagen.mode = 1;
- glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
-
- // Light
- glLightModeli (GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
- glEnable (GL_LIGHTING);
- glEnable (GL_LIGHT0);
- glLightfv (GL_LIGHT0, GL_DIFFUSE, L0diffuse);
- glLightfv (GL_LIGHT0, GL_SPECULAR, L0specular);
- glLightfv (GL_LIGHT0, GL_AMBIENT, L0ambient);
- glEnable (GL_COLOR_MATERIAL);
- glDisable (GL_LIGHTING);
-
- // Events functions
- glutDisplayFunc (display_frame);
- glutKeyboardFunc (Keyboard);
- glutSpecialFunc (Keyboard_Special);
- glutReshapeFunc (reshape);
- glutMouseFunc (mouse);
- glutMotionFunc (mousemotion);
-
- // Glut main loop ;-)
- glutMainLoop ();
- return;
-}
diff --git a/tags/START/glagen/3d/display.hh b/tags/START/glagen/3d/display.hh
deleted file mode 100644
index da18a8f..0000000
--- a/tags/START/glagen/3d/display.hh
+++ /dev/null
@@ -1,44 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// display.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DISPLAY_HH_
-# define DISPLAY_HH_
-
-#include "dot.hh"
-#include "triangle.hh"
-
-void display_frame ();
-void Keyboard (unsigned char, int, int);
-void Keyboard_Special (int, int, int);
-void reshape (int, int);
-void mouse (int, int, int, int);
-void mousemotion (int, int);
-void display (int *, char ***);
-
-#endif // DISPLAY_HH_
diff --git a/tags/START/glagen/3d/dot.cc b/tags/START/glagen/3d/dot.cc
deleted file mode 100644
index 86df62b..0000000
--- a/tags/START/glagen/3d/dot.cc
+++ /dev/null
@@ -1,184 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// dot.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cstdlib>
-#include <cmath>
-#include "data_glagen.hh"
-#include "dot.hh"
-
-// Constructor and destructor
-Dot :: Dot (const float x, const float y, const float z):
- _x(x), _y(y), _z(z), _use(0), _computed(false)
-{
- _normal = Vector (0, 0, 0);
- _property = new property_t *[glagen.property]; // delete : dot.cc l61
- for (int current = 0; current < glagen.property; current++)
- _property[current] = NULL;
- for (int current = 0; current < 6; current++)
- _owner[current] = NULL;
- step = glagen.step;
-}
-
-Dot :: ~Dot ()
-{
- if (_property != NULL)
- {
- for (int current = 0; current < glagen.property; current++)
- if (_property[current] != NULL)
- {
- if (_property[current]->data != NULL)
- delete _property[current]->data; // FIXME : warning here.
- delete _property[current];
- }
- delete _property;
- }
-}
-
-
-// ======================================================================= Read
-
-float Dot :: x () const { return _x; }
-float Dot :: y () const { return _y; }
-float Dot :: z () const { return _z; }
-
-Triangle *Dot :: Owner (int triangle) const
-{
- if (triangle >= 0 && triangle < 6)
- return _owner[triangle];
- return NULL;
-}
-
-Vector &Dot :: Normal () { return _normal; }
-
-property_t *Dot :: Property (const int i) const
-{
- return _property[i];
-}
-
-bool Dot :: Is_computed () const
-{
- return _computed;
-}
-
-bool Dot :: Is_checked () const
-{
- return (step == glagen.step);
-}
-
-
-// ====================================================================== Write
-
-void Dot :: Set (const float x, const float y, const float z)
-{
- _x = x;
- _y = y;
- _z = z;
-}
-
-void Dot :: Use (Triangle *old_one, Triangle *new_one)
-{
- Change_owner (old_one, new_one);
- _use = _use + 1;
-}
-
-bool Dot :: Drop (Triangle *old_one, Triangle *new_one)
-{
- Change_owner (old_one, new_one);
- _use = _use - 1;
- return (_use <= 0);
-}
-
-void Dot :: Update_normal ()
-{
- int count = 0;
-
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- _normal.Set (0, 0, 0);
- for (int current = 0; current < 6; current++)
- if (_owner[current] != NULL)
- {
- _normal = _normal + _owner[current]->Normal_real ();
- count++;
- }
- if (count != 0)
- _normal = _normal / count;
-}
-
-void Dot :: Del_property (const int i)
-{
- if (_property[i] != NULL)
- {
- delete _property[i];
- _property[i] = NULL;
- }
-}
-
-void Dot :: Set_property (const int i, property_t *property)
-{
- _property[i] = property;
-}
-
-void Dot :: Computed () { _computed = true; }
-
-void Dot :: Checked () { step = glagen.step; }
-
-// ====================================================================== Other
-
-Dot *Dot :: Middle (const Dot *b)
-{
- float xc = (x () + b->x ()) / 2;
- float yc = (y () + b->y ()) / 2;
- float zc = (z () + b->z ()) / 2;
- float adjust = sqrtf (glagen.square_size / (xc * xc + yc * yc + zc * zc));
- xc = xc * adjust;
- yc = yc * adjust;
- zc = zc * adjust;
- return new Dot (xc, yc, zc); // delete : triangle.cc l99, 101, 103
-}
-
-// ================================================================== Protected
-
-void Dot :: Change_owner (Triangle *old_one, Triangle *new_one)
-{
- for (int current = 0; current < 6; current++)
- if (_owner[current] == old_one)
- {
- _owner[current] = new_one;
- return;
- }
- for (int current = 0; current < 6; current++)
- if (_owner[current] == NULL)
- {
- _owner[current] = new_one;
- return;
- }
-}
diff --git a/tags/START/glagen/3d/dot.hh b/tags/START/glagen/3d/dot.hh
deleted file mode 100644
index 8e17049..0000000
--- a/tags/START/glagen/3d/dot.hh
+++ /dev/null
@@ -1,84 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// dot.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DOT_HH_
-# define DOT_HH_
-
-#include "data_glagen.hh"
-#include "triangle.hh"
-
-class Dot
-{
-public:
-
- // Constructor and destructor
- Dot (const float, const float, const float);
- ~Dot ();
-
- // Read
- float x () const;
- float y () const;
- float z () const;
-
- class Triangle *Owner (const int) const;
- class Vector &Normal ();
-
- property_t *Property (const int) const;
- bool Is_computed () const;
- bool Is_checked () const;
-
- // Write
- void Set (const float, const float, const float);
- void Use (class Triangle *, class Triangle *);
- bool Drop (class Triangle *, class Triangle *);
- void Update_normal ();
- void Del_property (const int);
- void Set_property (const int, property_t *);
- void Computed ();
- void Checked ();
-
- // Other
- Dot *Middle (const Dot *);
- void Display (const unsigned int);
-
-protected:
- void Change_owner (class Triangle *, class Triangle *);
-
- float _x;
- float _y;
- float _z;
- unsigned char _use;
- class Triangle *_owner[6];
- class Vector _normal;
- property_t **_property;
- bool _computed;
- char step;
-};
-
-#endif // DOT_HH_
diff --git a/tags/START/glagen/3d/dot_gl.cc b/tags/START/glagen/3d/dot_gl.cc
deleted file mode 100644
index 463df20..0000000
--- a/tags/START/glagen/3d/dot_gl.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// dot_gl.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DARWIN
-# include <GL/gl.h>
-# include <GL/glu.h>
-#else
-# include <gl.h>
-# include <glu.h>
-#endif
-
-#include "data_glagen.hh"
-#include "dot.hh"
-
-//
-// Call the appropriate OpenGl functions for the dot
-//
-void Dot :: Display (const unsigned int id)
-{
- surface_t *surface;
- float adjust;
-
- if (glagen.display_planet)
- {
- if (NULL == _property[id])
- {
- adjust = 0;
- glColor3f ((1 + _x) / 2, (1 + _y) / 2, (1 + _z) / 2);
- }
- else
- {
- surface = static_cast <surface_t *> (_property[id]->data);
- if (NULL == surface)
- {
- adjust = 0;
- glColor3f ((1 + _x) / 2, (1 + _y) / 2, (1 + _z) / 2);
- }
- else
- {
- adjust = surface->height;
- glColor4f (surface->red,
- surface->green,
- surface->blue,
- surface->alpha);
- }
- }
- }
- else
- {
- adjust = 0;
- glColor3f ((1 + _x) / 2, (1 + _y) / 2, (1 + _z) / 2);
- }
- glNormal3f(_normal.X (), _normal.Y (), _normal.Z ());
- glVertex3f ((glagen.size + adjust) * _x,
- (glagen.size + adjust) * _y,
- (glagen.size + adjust) * _z);
-}
diff --git a/tags/START/glagen/3d/end.cc b/tags/START/glagen/3d/end.cc
deleted file mode 100644
index a16a634..0000000
--- a/tags/START/glagen/3d/end.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// main.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "data_glagen.hh"
-#include "triangle.hh"
-
-void destroy_tree (Triangle *triangle)
-{
- Triangle *next;
- bool continue_deleting = true;
-
- while (continue_deleting)
- {
- if (0 == (next = triangle->Neighbor_ab ()))
- if (0 == (next = triangle->Neighbor_bc ()))
- if (0 == (next = triangle->Neighbor_ca ()))
- continue_deleting = false;
- delete triangle;
- triangle = next;
- }
- exit (0);
-}
-
-void end_all ()
-{
- destroy_tree(glagen.ref);
-}
diff --git a/tags/START/glagen/3d/end.hh b/tags/START/glagen/3d/end.hh
deleted file mode 100644
index 402c4b2..0000000
--- a/tags/START/glagen/3d/end.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// main.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef END_HH_
-# define END_HH_
-
-#include "data_glagen.hh"
-#include "triangle.hh"
-
-void destroy_tree (Triangle *);
-void end_all ();
-
-#endif // END_HH_
diff --git a/tags/START/glagen/3d/frame.cc b/tags/START/glagen/3d/frame.cc
deleted file mode 100644
index 6f3aabd..0000000
--- a/tags/START/glagen/3d/frame.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// frame.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "data_glagen.hh"
-#include "frame.hh"
-#include "matrix3d.hh"
-#include "vector.hh"
-
-// ================================================ Constructors and destructor
-
-Frame :: Frame ()
-{
- _origin[0] = 0;
- _origin[1] = 0;
- _origin[2] = 0;
- _basis[0] = Vector(1, 0, 0);
- _basis[1] = Vector(0, 1, 0);
- _basis[2] = Vector(0, 0, 1);
-}
-
-Frame :: Frame (float origin[3])
-{
- _origin[0] = origin[0];
- _origin[1] = origin[1];
- _origin[2] = origin[2];
- _basis[0] = Vector(1, 0, 0);
- _basis[1] = Vector(0, 1, 0);
- _basis[2] = Vector(0, 0, 1);
-}
-
-Frame :: Frame (float origin[3], Vector basis[3])
-{
- _origin[0] = origin[0];
- _origin[1] = origin[1];
- _origin[2] = origin[2];
- _basis[0] = Vector(basis[0]);
- _basis[1] = Vector(basis[1]);
- _basis[2] = Vector(basis[2]);
-}
-
-Frame :: ~Frame () {}
-
-// ==================================================================== Reading
-
-float Frame :: Origin_X () const { return _origin[0]; }
-float Frame :: Origin_Y () const { return _origin[1]; }
-float Frame :: Origin_Z () const { return _origin[2]; }
-Vector Frame :: Basis_X () const { return _basis[0]; }
-Vector Frame :: Basis_Y () const { return _basis[1]; }
-Vector Frame :: Basis_Z () const { return _basis[2]; }
-
-Vector Frame :: View () { return Vector (_basis[2]); }
-
-Matrix44 Frame :: GetMatrix ()
-{
- int x;
- float basis_matrix[3][3];
-
- for (x = 0; x < 3; x++)
- {
- basis_matrix[x][0] = _basis[x].X ();
- basis_matrix[x][1] = _basis[x].Y ();
- basis_matrix[x][2] = _basis[x].Z ();
- }
- Matrix44 rot_matrix(basis_matrix);
- Matrix44 trans_matrix(_origin);
- return Matrix44 (trans_matrix * rot_matrix);
-}
-
-Matrix44 Frame :: GetCamMatrix ()
-{
- int x;
- float basis_matrix[3][3];
-
- for (x = 0; x < 3; x++)
- {
- basis_matrix[x][0] = _basis[x].X ();
- basis_matrix[x][1] = _basis[x].Y ();
- basis_matrix[x][2] = _basis[x].Z ();
- }
- Matrix44 rot_matrix(basis_matrix);
- Matrix44 trans_matrix(_origin);
- return Matrix44 (rot_matrix * trans_matrix);
-}
-
-// ==================================================================== Writing
-
-void Frame :: Reset_origin ()
-{
- _origin[0] = 0;
- _origin[1] = 0;
- _origin[2] = 0;
-}
-
-void Frame :: Reset_basis ()
-{
- _basis[0].Set (1, 0, 0) ;
- _basis[1].Set (0, 1, 0) ;
- _basis[2].Set (0, 0, 1) ;
-}
-
-void Frame :: Set_origin (const float origin[3])
-{
- _origin[0] = origin[0];
- _origin[1] = origin[1];
- _origin[2] = origin[2];
-}
-
-void Frame :: Translate (const Vector v)
-{
- _origin[0] = _origin[0] + v.X ();
- _origin[1] = _origin[1] + v.Y ();
- _origin[2] = _origin[2] + v.Z ();
-}
-
-void Frame :: Rotate (const float angle, const Vector v)
-{
- Matrix33 rot (angle, v);
-
- _basis[0] = rot * _basis[0];
- _basis[1] = rot * _basis[1];
- _basis[2] = rot * _basis[2];
- _basis[0].Normalize ();
- _basis[1].Normalize ();
- _basis[2].Normalize ();
-}
diff --git a/tags/START/glagen/3d/frame.hh b/tags/START/glagen/3d/frame.hh
deleted file mode 100644
index 2fd125f..0000000
--- a/tags/START/glagen/3d/frame.hh
+++ /dev/null
@@ -1,69 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// frame.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef FRAME_HH_
-# define FRAME_HH_
-
-#include "matrix3d.hh"
-#include "vector.hh"
-
-class Frame
-{
-public:
- // Constructors and destructor
- Frame ();
- Frame (float origin[3]);
- Frame (float origin[3], class Vector basis[3]);
- ~Frame();
-
- // Reading
- float Origin_X () const;
- float Origin_Y () const;
- float Origin_Z () const;
- class Vector Basis_X () const;
- class Vector Basis_Y () const;
- class Vector Basis_Z () const;
-
- class Vector View ();
- Matrix44 GetMatrix ();
- Matrix44 GetCamMatrix ();
-
- // Writing
- void Reset_origin ();
- void Reset_basis ();
- void Set_origin (const float origin[3]);
- void Translate (const class Vector);
- void Rotate (const float, const class Vector);
-
-protected:
- float _origin[3];
- class Vector _basis[3];
-};
-
-#endif // FRAME_HH_
diff --git a/tags/START/glagen/3d/glagen b/tags/START/glagen/3d/glagen
deleted file mode 100755
index c387ba1..0000000
--- a/tags/START/glagen/3d/glagen
+++ /dev/null
Binary files differ
diff --git a/tags/START/glagen/3d/header.cc b/tags/START/glagen/3d/header.cc
deleted file mode 100644
index cdcdf6d..0000000
--- a/tags/START/glagen/3d/header.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// *******.** for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
diff --git a/tags/START/glagen/3d/isosahedron.cc b/tags/START/glagen/3d/isosahedron.cc
deleted file mode 100644
index 1f3fc71..0000000
--- a/tags/START/glagen/3d/isosahedron.cc
+++ /dev/null
@@ -1,220 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// isosahedron.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "triangle.hh"
-
-// The regular polyhedron we use to create the planet is an isosahedron :
-// 20 triangular faces, 12 vertex and 30 edges
-//
-// Vertex coordinates :
-//
-// { 0, 1, 0 } = P0
-// { sqrtf((5 - sqrtf(5)) / 10), (sqrtf(5)) / 5, -(5 + sqrtf(5)) / 10 } = P1
-// { -sqrtf((5 - sqrtf(5)) / 10), (sqrtf(5)) / 5, -(5 + sqrtf(5)) / 10 } = P2
-// { -sqrtf((5 + sqrtf(5)) / 10), (sqrtf(5)) / 5, (5 - sqrtf(5)) / 10 } = P3
-// { 0, (sqrtf(5)) / 5, 2 x ((sqrtf(5)) / 5) } = P4
-// { sqrtf((5 + sqrtf(5)) / 10), (sqrtf(5)) / 5, (5 - sqrtf(5)) / 10 } = P5
-// { sqrtf((5 - sqrtf(5)) / 10), -(sqrtf(5)) / 5, (5 + sqrtf(5)) / 10 } = P6
-// { -sqrtf((5 - sqrtf(5)) / 10), -(sqrtf(5)) / 5, (5 + sqrtf(5)) / 10 } = P7
-// { -sqrtf((5 + sqrtf(5)) / 10), -(sqrtf(5)) / 5, -(5 - sqrtf(5)) / 10 } = P8
-// { 0, -(sqrtf(5)) / 5, -2 x ((sqrtf(5)) / 5) } = P9
-// { sqrtf((5 + sqrtf(5)) / 10), -(sqrtf(5)) / 5, -(5 + sqrtf(5)) / 10 } = P10
-// { 0, -1, 0 } = P11
-//
-// Faces :
-//
-// F0 = P0, P1, P2
-// F1 = P0, P2, P3
-// F2 = P0, P3, P4
-// F3 = P0, P4, P5
-// F4 = P0, P5, P1
-// F5 = P2, P1, P9
-// F6 = P8, P2, P9
-// F7 = P3, P2, P8
-// F8 = P7, P3, P8
-// F9 = P4, P3, P7
-// F10 = P6, P4, P7
-// F11 = P5, P4, P6
-// F12 = P10, P5, P6
-// F13 = P10, P1, P5
-// F14 = P9, P1, P10
-// F15 = P11, P8, P9
-// F16 = P11, P7, P8
-// F17 = P11, P6, P7
-// F18 = P11, P10, P6
-// F19 = P11, P9, P10
-
-Triangle *isosahedron (float size)
-{
- Dot *vertex[12];
- Triangle *face[20];
- float expr_1 = size * sqrtf((5 + sqrtf(5)) / 10);
- float expr_2 = size * sqrtf((5 - sqrtf(5)) / 10);
- float expr_3 = size * (5 + sqrtf(5)) / 10;
- float expr_4 = size * (5 - sqrtf(5)) / 10;
- float expr_5 = size * (sqrtf(5)) / 5;
-
- // Creation of the vertex
- vertex[0] = new Dot ( 0, 1, 0);
- vertex[1] = new Dot ( expr_2, expr_5, -expr_3);
- vertex[2] = new Dot (-expr_2, expr_5, -expr_3);
- vertex[3] = new Dot (-expr_1, expr_5, expr_4);
- vertex[4] = new Dot ( 0, expr_5, 2 * expr_5);
- vertex[5] = new Dot ( expr_1, expr_5, expr_4);
- vertex[6] = new Dot ( expr_2, -expr_5, expr_3);
- vertex[7] = new Dot (-expr_2, -expr_5, expr_3);
- vertex[8] = new Dot (-expr_1, -expr_5, -expr_4);
- vertex[9] = new Dot ( 0, -expr_5, -2 * expr_5);
- vertex[10] = new Dot ( expr_1, -expr_5, -expr_4);
- vertex[11] = new Dot ( 0, -1, 0);
-
- // Creation of the triangles
- face[0] = new Triangle (vertex[0], vertex[1], vertex[2], NULL);
- face[1] = new Triangle (vertex[0], vertex[2], vertex[3], NULL);
- face[2] = new Triangle (vertex[0], vertex[3], vertex[4], NULL);
- face[3] = new Triangle (vertex[0], vertex[4], vertex[5], NULL);
- face[4] = new Triangle (vertex[0], vertex[5], vertex[1], NULL);
- face[5] = new Triangle (vertex[2], vertex[1], vertex[9], NULL);
- face[6] = new Triangle (vertex[8], vertex[2], vertex[9], NULL);
- face[7] = new Triangle (vertex[3], vertex[2], vertex[8], NULL);
- face[8] = new Triangle (vertex[7], vertex[3], vertex[8], NULL);
- face[9] = new Triangle (vertex[4], vertex[3], vertex[7], NULL);
- face[10] = new Triangle (vertex[6], vertex[4], vertex[7], NULL);
- face[11] = new Triangle (vertex[5], vertex[4], vertex[6], NULL);
- face[12] = new Triangle (vertex[10], vertex[5], vertex[6], NULL);
- face[13] = new Triangle (vertex[10], vertex[1], vertex[5], NULL);
- face[14] = new Triangle (vertex[9], vertex[1], vertex[10], NULL);
- face[15] = new Triangle (vertex[11], vertex[8], vertex[9], NULL);
- face[16] = new Triangle (vertex[11], vertex[7], vertex[8], NULL);
- face[17] = new Triangle (vertex[11], vertex[6], vertex[7], NULL);
- face[18] = new Triangle (vertex[11], vertex[10], vertex[6], NULL);
- face[19] = new Triangle (vertex[11], vertex[9], vertex[10], NULL);
-
- // Setting up of the connexity
- face[0]->Make_connexity (face[1]);
- face[0]->Make_connexity (face[4]);
- face[0]->Make_connexity (face[5]);
-
- face[1]->Make_connexity (face[0]);
- face[1]->Make_connexity (face[2]);
- face[1]->Make_connexity (face[7]);
-
- face[2]->Make_connexity (face[1]);
- face[2]->Make_connexity (face[3]);
- face[2]->Make_connexity (face[9]);
-
- face[3]->Make_connexity (face[2]);
- face[3]->Make_connexity (face[4]);
- face[3]->Make_connexity (face[11]);
-
- face[4]->Make_connexity (face[0]);
- face[4]->Make_connexity (face[3]);
- face[4]->Make_connexity (face[13]);
-
- face[5]->Make_connexity (face[0]);
- face[5]->Make_connexity (face[6]);
- face[5]->Make_connexity (face[14]);
-
- face[6]->Make_connexity (face[5]);
- face[6]->Make_connexity (face[7]);
- face[6]->Make_connexity (face[15]);
-
- face[7]->Make_connexity (face[1]);
- face[7]->Make_connexity (face[6]);
- face[7]->Make_connexity (face[8]);
-
- face[8]->Make_connexity (face[7]);
- face[8]->Make_connexity (face[9]);
- face[8]->Make_connexity (face[16]);
-
- face[9]->Make_connexity (face[2]);
- face[9]->Make_connexity (face[8]);
- face[9]->Make_connexity (face[10]);
-
- face[10]->Make_connexity (face[9]);
- face[10]->Make_connexity (face[11]);
- face[10]->Make_connexity (face[17]);
-
- face[11]->Make_connexity (face[3]);
- face[11]->Make_connexity (face[10]);
- face[11]->Make_connexity (face[12]);
-
- face[12]->Make_connexity (face[11]);
- face[12]->Make_connexity (face[13]);
- face[12]->Make_connexity (face[18]);
-
- face[13]->Make_connexity (face[4]);
- face[13]->Make_connexity (face[12]);
- face[13]->Make_connexity (face[14]);
-
- face[14]->Make_connexity (face[5]);
- face[14]->Make_connexity (face[13]);
- face[14]->Make_connexity (face[19]);
-
- face[15]->Make_connexity (face[6]);
- face[15]->Make_connexity (face[16]);
- face[15]->Make_connexity (face[19]);
-
- face[16]->Make_connexity (face[8]);
- face[16]->Make_connexity (face[15]);
- face[16]->Make_connexity (face[17]);
-
- face[17]->Make_connexity (face[10]);
- face[17]->Make_connexity (face[16]);
- face[17]->Make_connexity (face[18]);
-
- face[18]->Make_connexity (face[12]);
- face[18]->Make_connexity (face[17]);
- face[18]->Make_connexity (face[19]);
-
- face[19]->Make_connexity (face[14]);
- face[19]->Make_connexity (face[15]);
- face[19]->Make_connexity (face[18]);
-
- return face[0];
-}
-
-void split_all (Triangle *triangle)
-{
- if (triangle->Is_checked ())
- return;
- triangle->Checked ();
-
- triangle->Split ();
-
- if (triangle->Neighbor_ab () != 0)
- split_all (triangle->Neighbor_ab ());
- if (triangle->Neighbor_bc () != 0)
- split_all (triangle->Neighbor_bc ());
- if (triangle->Neighbor_ca () != 0)
- split_all (triangle->Neighbor_ca ());
-}
diff --git a/tags/START/glagen/3d/isosahedron.hh b/tags/START/glagen/3d/isosahedron.hh
deleted file mode 100644
index f339154..0000000
--- a/tags/START/glagen/3d/isosahedron.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// isosahedron.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef ISOSAHEDRON_HH_
-# define ISOSAHEDRON_HH_
-
-#include "triangle.hh"
-
-Triangle *isosahedron (float);
-void split_all (Triangle *);
-
-#endif // ISOCAHEDRON_HH_
diff --git a/tags/START/glagen/3d/library.cc b/tags/START/glagen/3d/library.cc
deleted file mode 100644
index 19d706f..0000000
--- a/tags/START/glagen/3d/library.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// library.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "dot.hh"
-#include "triangle.hh"
-#include "data_glagen.hh"
-#include "simul.hh"
-
-// This visitor applies the given library to each dot
-void library_visitor (void (library)(Dot*, unsigned int),
- bool dynamic,
- Triangle *triangle)
-{
- if (triangle->Is_checked ())
- return;
-
- if (triangle->A ()->Is_checked () == false &&
- (dynamic == true ||
- triangle->A ()->Is_computed () == false))
- {
- library (triangle->A (), triangle->Level ());
- triangle->A ()->Computed ();
- triangle->A ()->Checked ();
- }
- if (triangle->B ()->Is_checked () == false &&
- (dynamic == true ||
- triangle->B ()->Is_computed () == false))
- {
- library (triangle->B (), triangle->Level ());
- triangle->B ()->Computed ();
- triangle->B ()->Checked ();
- }
- if (triangle->C ()->Is_checked () == false &&
- (dynamic == true ||
- triangle->C ()->Is_computed () == false))
- {
- library (triangle->C (), triangle->Level ());
- triangle->C ()->Computed ();
- triangle->C ()->Checked ();
- }
-
- if (triangle->Is_split ())
- {
- library_visitor (library, dynamic, triangle->Child_center ());
- library_visitor (library, dynamic, triangle->Child_a ());
- library_visitor (library, dynamic, triangle->Child_b ());
- library_visitor (library, dynamic, triangle->Child_c ());
- }
-
- triangle->Checked ();
- if (triangle->Father() == NULL)
- {
- if (triangle->Neighbor_ab () != NULL)
- library_visitor (library, dynamic, triangle->Neighbor_ab ());
- if (triangle->Neighbor_bc () != NULL)
- library_visitor (library, dynamic, triangle->Neighbor_bc ());
- if (triangle->Neighbor_ca () != NULL)
- library_visitor (library, dynamic, triangle->Neighbor_ca ());
- }
-}
-
-// Here we call the visitor for each library
-void library_caller (Triangle *triangle)
-{
- void *(lib)(Dot *, unsigned int);
-
- for (int current = 0; glagen.library[current].kind != none; current++)
- {
- library_visitor (glagen.library[current].run,
- glagen.library[current].dynamic,
- triangle);
- glagen.step = glagen.step + 1;
- }
-}
diff --git a/tags/START/glagen/3d/library.hh b/tags/START/glagen/3d/library.hh
deleted file mode 100644
index acb262f..0000000
--- a/tags/START/glagen/3d/library.hh
+++ /dev/null
@@ -1,40 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// library.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef LIBRARY_VISITOR_HH_
-# define LIBRARY_VISITOR_HH_
-
-#include "triangle.hh"
-
-void library_visitor (void *(library)(Dot*, unsigned int),
- bool,
- Triangle *);
-void library_caller (Triangle *);
-
-#endif // LIBRARY_VISITOR_HH_
diff --git a/tags/START/glagen/3d/main.cc b/tags/START/glagen/3d/main.cc
deleted file mode 100644
index d2d3561..0000000
--- a/tags/START/glagen/3d/main.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// main.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <sys/time.h>
-#include <cerrno>
-#include <cmath>
-#include <cstdlib>
-#include "dot.hh"
-#include "data_glagen.hh"
-#include "display.hh"
-#include "frame.hh"
-#include "isosahedron.hh"
-#include "library.hh"
-#include "matrix3d.hh"
-#include "perlin.hh"
-#include "time.hh"
-#include "triangle.hh"
-#include "simul.hh"
-
-glagen_t glagen;
-
-void init_all ()
-{
- float origin[3];
-
- Perlin_init ();
- origin[0] = 0;
- origin[1] = 0;
- origin[2] = -3;
- glagen.observer.frame.Set_origin (origin);
- glagen.observer.altitude = sqrtf (glagen.observer.frame.Origin_X () *
- glagen.observer.frame.Origin_X () +
- glagen.observer.frame.Origin_Y () *
- glagen.observer.frame.Origin_Y () +
- glagen.observer.frame.Origin_Z () *
- glagen.observer.frame.Origin_Z ()) - 1;
- glagen.observer.speed = 0.1 + glagen.observer.altitude / 50;
- glagen.triangles = 0;
-
- init_time ();
-
- //Limite : entre 50000 et 200000...
- glagen.max_triangles = 100000;
- glagen.step = 0;
- glagen.size = 1;
- glagen.square_size = glagen.size * glagen.size;
- //
- // Simulation
- //
- glagen.property = 200;
- // 0.05 et 0.4 is quite good
- glagen.split_dist_limit = 0.05;
- glagen.split_norm_limit = 0.4;
- //
- glagen.ref = isosahedron (glagen.size);
- glagen.step++;
-
- // Debug options
- glagen.display_normal = false;
- glagen.display_planet = true;
- glagen.display_all = false;
- glagen.third_view = false;
- glagen.zoom = true;
- glagen.depth_test = true;
- glagen.light = false;
-}
-
-int main (int narg, char **args)
-{
-// printf("int : %d\n", sizeof (int));
- init_all();
- simule_lib_load();
-
- if (glagen.zoom)
- {
- glagen.current = glagen.ref;
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- }
- else
- {
- split_all (glagen.ref);
- glagen.step++;
- split_all (glagen.ref->Child_center ());
- glagen.step++;
- split_all (glagen.ref->Child_center ()->Child_center ());
- glagen.step++;
- split_all (glagen.ref->Child_center ()->Child_center ()->
- Child_center ());
- glagen.step++;
- split_all (glagen.ref->Child_center ()->Child_center ()->
- Child_center ()->Child_center ());
- glagen.step++;
- glagen.current = glagen.ref->
- Child_center ()->
- Child_center ()->
- Child_center ()->
- Child_center ()->
- Child_center ();
- }
- library_caller (glagen.ref);
- glagen.step++;
- display (&narg, &args);
- return 0;
-}
diff --git a/tags/START/glagen/3d/matrix3d.cc b/tags/START/glagen/3d/matrix3d.cc
deleted file mode 100644
index c02ac39..0000000
--- a/tags/START/glagen/3d/matrix3d.cc
+++ /dev/null
@@ -1,216 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// matrix.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-#include "matrix3d.hh"
-#include "vector.hh"
-
-// =============================================== Constructors and destructors
-
-Matrix33 :: Matrix33 ()
-{
- for (int y = 0; y < 3; y++)
- for (int x = 0; x < 3; x++)
- mat[x][y] = (x == y ? 1 : 0);
-}
-
-Matrix33 :: Matrix33 (const class Matrix33 &source)
-{
- for (int y = 0; y < 3; y++)
- for (int x = 0; x < 3; x++)
- mat[x][y] = source.A(x, y);
-}
-
-Matrix33 :: Matrix33 (const float m[3][3])
-{
- for (int y = 0; y < 3; y++)
- {
- for (int x = 0; x < 3; x++)
- mat[x][y] = m[x][y];
- mat[3][y] = 0;
- }
- mat[0][3] = 0;
- mat[1][3] = 0;
- mat[2][3] = 0;
- mat[3][3] = 1;
-}
-
-Matrix33 :: Matrix33 (const float angle, const Vector &v)
-{
- float c = cosf (angle);
- float s = sinf (angle);
- float t = 1 - c;
- float val[] = {t * v.X () * v.X () + c,
- t * v.X () * v.Y () - s * v.Z (),
- t * v.X () * v.Z () + s * v.Y (),
-
- t * v.X () * v.Y () + s * v.Z (),
- t * v.Y () * v.Y () + c,
- t * v.Y () * v.Z () - s * v.X (),
-
- t * v.X () * v.Z () - s * v.Y (),
- t * v.Y () * v.Z () + s * v.X (),
- t * v.Z () * v.Z () + c};
- for (int j = 0; j < 3; j++)
- for (int i = 0; i < 3; i++)
- mat[i][j] = val[3 * j + i];
-}
-
-Matrix33 :: ~Matrix33 () {}
-
-Matrix44 :: Matrix44 ()
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- mat[x][y] = (x == y ? 1 : 0);
-}
-
-Matrix44 :: Matrix44 (const class Matrix44 &source)
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- mat[x][y] = source.A(x, y);
-}
-
-Matrix44 :: Matrix44 (const class Matrix33 &source)
-{
- for (int y = 0; y < 3; y++)
- for (int x = 0; x < 3; x++)
- mat[x][y] = source.A(x, y);
- mat[3][3] = 1;
-}
-
-Matrix44 :: Matrix44 (const float m[4][4])
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- mat[x][y] = m[x][y];
-}
-
-Matrix44 :: Matrix44 (const float m[3][3])
-{
- for (int y = 0; y < 3; y++)
- {
- for (int x = 0; x < 3; x++)
- mat[x][y] = m[x][y];
- mat[3][y] = 0;
- }
- mat[0][3] = 0;
- mat[1][3] = 0;
- mat[2][3] = 0;
- mat[3][3] = 1;
-}
-
-// Create a translation matrix from a vector
-Matrix44 :: Matrix44(const float colon[3])
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- if (x == y)
- mat[x][y] = 1;
- else
- mat[x][y] = 0;
- mat[3][0] = colon[0];
- mat[3][1] = colon[1];
- mat[3][2] = colon[2];
-}
-
-Matrix44 :: ~Matrix44() {}
-
-
-// ====================================================== The matrix's elements
-
-float Matrix33 :: A(const int x, const int y) const
-{
- if (x >= 0 && x < 3 &&
- y >= 0 && y < 3)
- return mat[x][y];
- else
- return 0;
-}
-
-float Matrix44 :: A(const int x, const int y) const
-{
- if (x >= 0 && x < 4 &&
- y >= 0 && y < 4)
- return mat[x][y];
- else
- return 0;
-}
-
-// Orthonormalize
-void Matrix33 :: OrthonormalizeOrientation ()
-{
- Vector X (mat[0][0], mat[1][0], mat[2][0]);
- Vector Y (mat[0][1], mat[1][1], mat[2][1]);
- Vector Z;
-
- X.Normalize();
- Z = (X ^ Y);
- Z.Normalize();
- Y = (Z ^ X);
- Y.Normalize();
-
- mat[0][0] = X.X (); mat[0][1] = Y.X (); mat[0][2] = Z.X ();
- mat[1][0] = X.Y (); mat[1][1] = Y.Y (); mat[1][2] = Z.Y ();
- mat[2][0] = X.Z (); mat[2][1] = Y.Z (); mat[2][2] = Z.Z ();
-}
-
-
-// ================================================================== Operators
-
-Vector Matrix33 :: operator * (const Vector &v) const
-{
- float out[3];
-
- out[0] = (A (0, 0) * v.X () +
- A (1, 0) * v.Y () +
- A (2, 0) * v.Z ());
- out[1] = (A (0, 1) * v.X () +
- A (1, 1) * v.Y () +
- A (2, 1) * v.Z ());
- out[2] = (A (0, 2) * v.X () +
- A (1, 2) * v.Y () +
- A (2, 2) * v.Z ());
- return Vector (out[0], out[1], out[2]);
-}
-
-Matrix44 Matrix44 :: operator * (const Matrix44 &source) const
-{
- float out[4][4];
-
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- out[x][y] = (A(0, y) * source.A(x, 0) +
- A(1, y) * source.A(x, 1) +
- A(2, y) * source.A(x, 2) +
- A(3, y) * source.A(x, 3));
- return Matrix44(out);
-}
diff --git a/tags/START/glagen/3d/matrix3d.hh b/tags/START/glagen/3d/matrix3d.hh
deleted file mode 100644
index 859f480..0000000
--- a/tags/START/glagen/3d/matrix3d.hh
+++ /dev/null
@@ -1,80 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// matrix.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef MATRIX3D_HH_
-# define MATRIX3D_HH_
-
-class Matrix33
-{
-public :
-
- //Constructors and destructor
- Matrix33 ();
- Matrix33 (const class Matrix33 &);
- Matrix33 (const float m[3][3]);
- Matrix33 (const float, const class Vector &);
- ~Matrix33 ();
-
- // Matrix itself
- float A (const int, const int) const;
-
- // Orthonormalize
- void OrthonormalizeOrientation ();
-
- // Operator
- class Vector operator * (const class Vector &) const;
-
-protected :
- float mat[3][3];
-};
-
-class Matrix44
-{
-public :
-
- //Constructors and destructor
- Matrix44 ();
- Matrix44 (const class Matrix44 &);
- Matrix44 (const class Matrix33 &);
- Matrix44 (const float m[3][3]);
- Matrix44 (const float m[4][4]);
- Matrix44 (const float colon[3]);
- ~Matrix44 ();
-
- //Matrix itself
- float A (const int, const int) const;
-
- //Operator
- Matrix44 operator * (const Matrix44 &) const;
-
-protected :
- float mat[4][4];
-};
-
-#endif // MATRIX3D
diff --git a/tags/START/glagen/3d/misc.cc b/tags/START/glagen/3d/misc.cc
deleted file mode 100644
index caf7264..0000000
--- a/tags/START/glagen/3d/misc.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// misc.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-
-//
-// This function is supposed to compute very fast a good approximation
-// of the distance.
-// The quality of this function is very important for the frame-rate
-//
-float Approx_dist (float x, float y, float z)
-{
- // Well, I still have to fond an approximation ^_^
- // I suppose I will use Taylor Lagrange, or something like that.
- return (sqrt (x * x + y * y + z * z));
-}
diff --git a/tags/START/glagen/3d/misc.hh b/tags/START/glagen/3d/misc.hh
deleted file mode 100644
index 696d5a4..0000000
--- a/tags/START/glagen/3d/misc.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// misc.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-
-#ifndef MISC_HH_
-# define MISC_HH_
-
-#include "data_glagen.hh"
-
-float Approx_dist (float, float, float);
-
-#endif // MISC_HH_
diff --git a/tags/START/glagen/3d/perlin.cc b/tags/START/glagen/3d/perlin.cc
deleted file mode 100644
index 5cb4aee..0000000
--- a/tags/START/glagen/3d/perlin.cc
+++ /dev/null
@@ -1,347 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// perlin.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-// Original implementation fo Perlin noice.
-// It can be found on :
-// http://mrl.nyu.edu/~perlin/doc/oscar.html#noise
-//
-// The 4th dimension noise has been added for our needs
-
-// coherent noise function over 1, 2 or 3 dimensions
-// (copyright Ken Perlin)
-
-#include <stdlib.h>
-#include <math.h>
-#include "data_glagen.hh"
-
-#define B 0x100
-#define BM 0xff
-
-#define N 0x1000
-#define NP 12 /* 2^N */
-#define NM 0xfff
-
-static int p[B + B + 2];
-static float g4[B + B + 2][4];
-static float g3[B + B + 2][3];
-static float g2[B + B + 2][2];
-static float g1[B + B + 2];
-
-#define s_curve(t) ( t * t * (3. - 2. * t) )
-
-#define lerp(t, a, b) ( a + t * (b - a) )
-
-#define setup(i,b0,b1,r0,r1)\
- t = vec[i] + N;\
- b0 = ((int)t) & BM;\
- b1 = (b0+1) & BM;\
- r0 = t - (int)t;\
- r1 = r0 - 1.;
-
-float GLG_Perlin_noise_1D (float arg)
-{
- int bx0, bx1;
- float rx0, rx1;
- float sx;
- float t, u, v;
- float vec[1];
-
- vec[0] = arg;
-
- setup(0, bx0,bx1, rx0,rx1);
-
- sx = s_curve(rx0);
-
- u = rx0 * g1[ p[ bx0 ] ];
- v = rx1 * g1[ p[ bx1 ] ];
-
- return lerp(sx, u, v);
-}
-
-float GLG_Perlin_noise_2D (float vec[2])
-{
- int bx0, bx1;
- int by0, by1;
- int b00, b10, b01, b11;
- float rx0, rx1;
- float ry0, ry1;
- float *q, sx, sy;
- float a, b;
- float t, u, v;
- register int i, j;
-
- setup(0, bx0,bx1, rx0,rx1);
- setup(1, by0,by1, ry0,ry1);
-
- i = p[ bx0 ];
- j = p[ bx1 ];
-
- b00 = p[ i + by0 ];
- b10 = p[ j + by0 ];
- b01 = p[ i + by1 ];
- b11 = p[ j + by1 ];
-
- sx = s_curve(rx0);
- sy = s_curve(ry0);
-
-#define at2(rx,ry) ( rx * q[0] + ry * q[1] )
-
- q = g2[ b00 ] ; u = at2(rx0,ry0);
- q = g2[ b10 ] ; v = at2(rx1,ry0);
- a = lerp(sx, u, v);
-
- q = g2[ b01 ] ; u = at2(rx0,ry1);
- q = g2[ b11 ] ; v = at2(rx1,ry1);
- b = lerp(sx, u, v);
-
- return lerp(sy, a, b);
-}
-
-float GLG_Perlin_noise_3D (float vec[3])
-{
- int bx0, bx1;
- int by0, by1;
- int bz0, bz1;
- int b00, b10, b01, b11;
- float rx0, rx1;
- float ry0, ry1;
- float rz0, rz1;
- float *q, sy, sz;
- float a, b, c, d;
- float t, u, v;
- register int i, j;
-
- setup(0, bx0,bx1, rx0,rx1);
- setup(1, by0,by1, ry0,ry1);
- setup(2, bz0,bz1, rz0,rz1);
-
- i = p[ bx0 ];
- j = p[ bx1 ];
-
- b00 = p[ i + by0 ];
- b10 = p[ j + by0 ];
- b01 = p[ i + by1 ];
- b11 = p[ j + by1 ];
-
- t = s_curve(rx0);
- sy = s_curve(ry0);
- sz = s_curve(rz0);
-
-#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
-
- q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
- q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
- a = lerp(t, u, v);
-
- q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
- q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
- b = lerp(t, u, v);
-
- c = lerp(sy, a, b);
-
- q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
- q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
- a = lerp(t, u, v);
-
- q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
- q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
- b = lerp(t, u, v);
-
- d = lerp(sy, a, b);
-
- return lerp(sz, c, d);
-}
-
-float GLG_Perlin_noise_4D (float vec[4])
-{
- int bx0, bx1;
- int by0, by1;
- int bz0, bz1;
- int bt0, bt1;
- register int a0, a1;
- int b00, b10, b01, b11;
- int c000, c001, c010, c011, c100, c101, c110, c111;
- float rx0, rx1;
- float ry0, ry1;
- float rz0, rz1;
- float rt0, rt1;
- float *q, sx, sy, sz, st;
- float a, b, c, d, e, f;
- float t, u, v;
-
- setup(0, bx0,bx1, rx0,rx1);
- setup(1, by0,by1, ry0,ry1);
- setup(2, bz0,bz1, rz0,rz1);
- setup(3, bt0,bt1, rt0,rt1);
-
- a0 = p[ bx0 ];
- a1 = p[ bx1 ];
-
- b00 = p[ a0 + by0 ];
- b10 = p[ a1 + by0 ];
- b01 = p[ a0 + by1 ];
- b11 = p[ a1 + by1 ];
-
- c000 = p[ b00 + bz0 ];
- c100 = p[ b10 + bz0 ];
- c010 = p[ b01 + bz0 ];
- c110 = p[ b11 + bz0 ];
- c001 = p[ b00 + bz1 ];
- c101 = p[ b10 + bz1 ];
- c011 = p[ b01 + bz1 ];
- c111 = p[ b11 + bz1 ];
-
- sx = s_curve(rx0);
- sy = s_curve(ry0);
- sz = s_curve(rz0);
- st = s_curve(rt0);
-
-#define at4(rx, ry, rz, rt) ( rx * q[0] + ry * q[1] + rz * q[2] + rt * q[3])
-
- q = g4[c000 + bt0]; u = at4(rx0, ry0, rz0, rt0);
- q = g4[c100 + bt0]; v = at4(rx1, ry0, rz0, rt0);
- a = lerp(sx, u, v);
-
- q = g4[c010 + bt0]; u = at4(rx0, ry1, rz0, rt0);
- q = g4[c110 + bt0]; v = at4(rx1, ry1, rz0, rt0);
- b = lerp(sx, u, v);
-
- c = lerp (sy, a, b);
-
- q = g4[c001 + bt0]; u = at4(rx0, ry0, rz1, rt0);
- q = g4[c101 + bt0]; v = at4(rx1, ry0, rz1, rt0);
- a = lerp(sx, u, v);
-
- q = g4[c011 + bt0]; u = at4(rx0, ry1, rz1, rt0);
- q = g4[c111 + bt0]; v = at4(rx1, ry1, rz1, rt0);
- b = lerp(sx, u, v);
-
- d = lerp (sy, a, b);
-
-
- e = lerp (sz, c, d);
-
-
- q = g4[c000 + bt1]; u = at4(rx0, ry0, rz0, rt1);
- q = g4[c100 + bt1]; v = at4(rx1, ry0, rz0, rt1);
- a = lerp(sx, u, v);
-
- q = g4[c010 + bt1]; u = at4(rx0, ry1, rz0, rt1);
- q = g4[c110 + bt1]; v = at4(rx1, ry1, rz0, rt1);
- b = lerp(sx, u, v);
-
- c = lerp (sy, a, b);
-
- q = g4[c001 + bt1]; u = at4(rx0, ry0, rz1, rt1);
- q = g4[c101 + bt1]; v = at4(rx1, ry0, rz1, rt1);
- a = lerp(sx, u, v);
-
- q = g4[c011 + bt1]; u = at4(rx0, ry1, rz1, rt1);
- q = g4[c111 + bt1]; v = at4(rx1, ry1, rz1, rt1);
- b = lerp(sx, u, v);
-
- d = lerp (sy, a, b);
-
-
- f = lerp (sz, c, d);
-
-
- return lerp (st, e, f);
-}
-
-static void normalize2 (float v[2])
-{
- float s;
-
- s = sqrtf(v[0] * v[0] + v[1] * v[1]);
- v[0] = v[0] / s;
- v[1] = v[1] / s;
-}
-
-static void normalize3 (float v[3])
-{
- float s;
-
- s = sqrtf(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
- v[0] = v[0] / s;
- v[1] = v[1] / s;
- v[2] = v[2] / s;
-}
-
-static void normalize4 (float v[4])
-{
- float s;
-
- s = sqrtf(v[0] * v[0] + v[1] * v[1] + v[2] * v[2] + v[3] * v[3]);
- v[0] = v[0] / s;
- v[1] = v[1] / s;
- v[2] = v[2] / s;
- v[3] = v[3] / s;
-}
-
-void Perlin_init ()
-{
- int i, j, k;
-
- for (i = 0 ; i < B ; i++)
- {
- p[i] = i;
-
- g1[i] = (float)((rand() % (B + B)) - B) / B;
-
- for (j = 0 ; j < 2 ; j++)
- g2[i][j] = (float)((rand() % (B + B)) - B) / B;
- normalize2(g2[i]);
-
- for (j = 0 ; j < 3 ; j++)
- g3[i][j] = (float)((rand() % (B + B)) - B) / B;
- normalize3(g3[i]);
-
- for (j = 0 ; j < 4 ; j++)
- g4[i][j] = (float)((rand() % (B + B)) - B) / B;
- normalize4(g4[i]);
- }
-
- while (--i)
- {
- k = p[i];
- p[i] = p[j = rand() % B];
- p[j] = k;
- }
-
- for (i = 0 ; i < B + 2 ; i++)
- {
- p[B + i] = p[i];
- g1[B + i] = g1[i];
- for (j = 0 ; j < 2 ; j++)
- g2[B + i][j] = g2[i][j];
- for (j = 0 ; j < 3 ; j++)
- g3[B + i][j] = g3[i][j];
- }
-}
diff --git a/tags/START/glagen/3d/perlin.hh b/tags/START/glagen/3d/perlin.hh
deleted file mode 100644
index 3deb1c9..0000000
--- a/tags/START/glagen/3d/perlin.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// perlin.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef PERLIN_HH_
-# define PERLIN_HH_
-
-float GLG_Perlin_noise_1D (float);
-float GLG_Perlin_noise_2D (float vec[2]);
-float GLG_Perlin_noise_3D (float vec[3]);
-float GLG_Perlin_noise_4D (float vec[4]);
-void Perlin_init ();
-
-#endif // PERLIN_HH_
diff --git a/tags/START/glagen/3d/simul.cc b/tags/START/glagen/3d/simul.cc
deleted file mode 100644
index d68daa5..0000000
--- a/tags/START/glagen/3d/simul.cc
+++ /dev/null
@@ -1,409 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// simul.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "dot.hh"
-#include "data_glagen.hh"
-#include "perlin.hh"
-
-//
-// A garder : une librairie de simulation du Soleil
-//
-void surface_solaire (Dot *m, unsigned int)
-{
- property_t *property;
- surface_t *data;
- float param[4];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = m->Property (0);
- data = static_cast <surface_t *> (property->data);
- }
-
- param[0] = 10 * m->x () * 2;
- param[1] = 10 * m->y () * 2;
- param[2] = 10 * m->z () * 2;
- param[3] = glagen.float_time;
- sum = GLG_Perlin_noise_4D (param) / 40.0;
- param[0] = 20 * m->x () * 2;
- param[1] = 20 * m->y () * 2;
- param[2] = 20 * m->z () * 2;
- param[3] = glagen.float_time;
- sum = sum + GLG_Perlin_noise_4D (param) / 80.0;
- param[0] = 40 * m->x () * 2;
- param[1] = 40 * m->y () * 2;
- param[2] = 40 * m->z () * 2;
- param[3] = glagen.float_time;
- sum = sum + GLG_Perlin_noise_4D (param) / 160.0;
- data->height = 1.5 * sum;
-
- data->red = 1;
- data->green = (1 + 40 * data->height) / 2;
- data->blue = (data->height * data->height * 1600);
- data->alpha = (1 + 40 * data->height) / 2;
-}
-
-void atmosphere_solaire (Dot *m, unsigned int)
-{
- property_t *property;
- surface_t *data;
- float param[4];
- float sum;
-
- for (int layer = 0; layer < 100; layer++)
- {
- if (m->Property (layer + 1) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (layer + 1, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (layer + 1));
- data = static_cast <surface_t *> (property->data);
- }
- param[0] = 3 * m->x () * 2;
- param[1] = 3 * m->y () * 2;
- param[2] = 3 * m->z () * 2;
- param[3] = (-(layer)/3.0 + glagen.float_time + 20) / 20.0;
- sum = GLG_Perlin_noise_4D (param);
- sum = sum * sum;
- sum = sum * sum;
- data->height = 0.01 + 0.006 * layer;
- data->red = 1;
- data->green = 0.8 - 7 * sum;
- data->blue = 0;
- data->alpha = 0.005 + (120 * sum) / (sqrtf((layer + 1.0) / 71) * 71);
- }
-}
-
-//
-// Un essai de simulation de sol
-//
-void essai_terrain (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[3];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
-
- if (sum < 0)
- data->height = 0;
- else
- data->height = sum; // 10;
-
- if (data->height <= 0)
- {
- data->red = 0.0;
- data->green = 0.015 * (1 - sum);
- data->blue = 0.40 * (1 - sum);
- }
- else
- {
- if (data->height < 0.005)
- {
- data->red = 0.52;
- data->green = 0.46;
- data->blue = 0.28;
- }
- else
- if (data->height > 0.04)
- {
- if (data->height > 0.0055)
- {
- data->red = 0.9 + 4 * data->height;
- data->green = 0.9 + 4 * data->height;
- data->blue = 0.9 + 4 * data->height;
- }
- else
- {
- data->red = 0.55;
- data->green = 0.41;
- data->blue = 0.28;
- }
- }
- else
- {
- data->red = 0.35;
- data->green = 0.5;
- data->blue = 0.21;
- }
- }
- data->alpha = 1;
-}
-
-//
-// Un autre essai de simulation de sol
-//
-void essai_terrain_mono (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[3];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
-
-// if (sum < 0)
-// data->height = 0;
-// else
- data->height = sum * 2;
-
- data->red = 1;
- data->green = 1;
- data->blue = 1;
- data->alpha = 1;
-}
-
-//
-// La planete rouge
-//
-void essai_mars (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[3];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = m->x () * 3;
- param[1] = m->y () * 3;
- param[2] = m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / 10.0;
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = m->x () * 3 * alpha;
- param[1] = m->y () * 3 * alpha;
- param[2] = m->z () * 3 * alpha;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
-
- //
- // - 0.2 < sum < 0.2
- //
-
- data->height = sum;
-
- if (data->height <= 0)
- {
-// data->red = 0.0;
-// data->green = 1.0;
-// data->blue = 1.0;
- data->red = 0.07 + 0.70 / (-sum);
- data->green = 0.07 + 0.20 / (-sum);
- data->blue = 0.05;
- }
- else
- {
- data->red = 0.77 + (1.05 * sum);
- data->green = 0.27 + (1.25 * sum);
- data->blue = 0.05 + (0.17 * sum);
- }
- data->alpha = 1;
-}
-
-//
-// Un effet colore sympatique
-//
-void essai_sympa (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[4];
- float sum;
- int sum_int;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- param[3] = glagen.float_time;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- param[3] = alpha * glagen.float_time;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
- data->height = 0;
- sum_int = (int)(1200 * ((10 * sum) + 0.5));
-// data->red = ((sum_int % 200) * 6) / 1200.0;
-// data->green = ((sum_int % 120) * 10) / 1200.0;
-// data->blue = ((sum_int % 100) * 12) / 1200.0;
- data->red = ((sum_int % 1200) * 1) / 1200.0;
- data->green = ((sum_int % 1200) * 1) / 1200.0;
- data->blue = ((sum_int % 600) * 2) / 1200.0;
- data->alpha = 1;
-}
-
-void simule_lib_load ()
-{
-// glagen.library[0].kind = none;
-
-// glagen.library[0].kind = surface;
-// glagen.library[0].dynamic = false;
-// glagen.library[0].run = essai_terrain;
-// glagen.library[0].name = "Terrain";
-
-// glagen.library[0].kind = surface;
-// glagen.library[0].dynamic = false;
-// glagen.library[0].run = essai_terrain_mono;
-// glagen.library[0].name = "Relief";
-
-// glagen.library[0].kind = surface;
-// glagen.library[0].dynamic = false;
-// glagen.library[0].run = essai_sympa;
-// glagen.library[0].name = "Couleurs";
-
- glagen.library[0].kind = surface;
- glagen.library[0].dynamic = true;
- glagen.library[0].run = surface_solaire;
- glagen.library[0].name = "surface_solaire";
-
-// glagen.library[1].kind = surface;
-// glagen.library[1].dynamic = true;
-// glagen.library[1].run = atmosphere_solaire;
-// glagen.library[1].name = "atmosphere_solaire";
-
- // Don't forget the end marker :
- glagen.library[1].kind = none;
-}
diff --git a/tags/START/glagen/3d/simul.hh b/tags/START/glagen/3d/simul.hh
deleted file mode 100644
index cf2bd68..0000000
--- a/tags/START/glagen/3d/simul.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// simul.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef SIMUL_HH_
-# define SIMUL_HH_
-
-#include "dot.hh"
-
-void surface_solaire (Dot *, unsigned int);
-void atmosphere_solaire (Dot *, unsigned int);
-void essai_terrain (Dot *, unsigned int);
-void simule_lib_load ();
-
-
-#endif // SIMUL_HH_
diff --git a/tags/START/glagen/3d/time.hh b/tags/START/glagen/3d/time.hh
deleted file mode 100644
index 8afe7ed..0000000
--- a/tags/START/glagen/3d/time.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// time.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef TIME_HH_
-# define TIME_HH_
-
-void init_time ();
-void update_time ();
-
-#endif // TIME_HH_
diff --git a/tags/START/glagen/3d/time_unix.cc b/tags/START/glagen/3d/time_unix.cc
deleted file mode 100644
index 013e2a6..0000000
--- a/tags/START/glagen/3d/time_unix.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// time_unix.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <sys/time.h>
-#include <cerrno>
-#include "data_glagen.hh"
-
-
-void init_time ()
-{
- if (gettimeofday (&(glagen.time), NULL) != 0)
- exit (errno);
- glagen.start_time = glagen.time.tv_sec;
- glagen.time.tv_sec = 0;
- glagen.float_time = (glagen.time.tv_usec / 1000) / 1000.0;
-}
-
-void update_time ()
-{
- if (gettimeofday (&(glagen.time), NULL) != 0)
- exit (errno);
- glagen.time.tv_sec = glagen.time.tv_sec - glagen.start_time;
- glagen.float_time = (glagen.time.tv_sec +
- (glagen.time.tv_usec / 1000) / 1000.0);
-}
diff --git a/tags/START/glagen/3d/time_windows.cc b/tags/START/glagen/3d/time_windows.cc
deleted file mode 100644
index 32a5d3d..0000000
--- a/tags/START/glagen/3d/time_windows.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// time_windows.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <windows.h>
-#include "data_glagen.hh"
-
-void init_time ()
-{
- int s = GetTickCount() / 1000;
- int ms = GetTickCount() % 1000;
-
- glagen.start_time = s;
- glagen.time.tv_sec = 0;
- glagen.time.tv_usec = ms * 1000;
- glagen.float_time = (glagen.time.tv_usec / 1000) / 1000.0;
-}
-
-void update_time ()
-{
- int s = GetTickCount() / 1000;
- int ms = GetTickCount() % 1000;
-
- glagen.time.tv_sec = s - glagen.start_time;
- glagen.time.tv_usec = ms * 1000;
- glagen.float_time = (glagen.time.tv_sec +
- (glagen.time.tv_usec / 1000) / 1000.0);
-}
diff --git a/tags/START/glagen/3d/triangle.cc b/tags/START/glagen/3d/triangle.cc
deleted file mode 100644
index ee80216..0000000
--- a/tags/START/glagen/3d/triangle.cc
+++ /dev/null
@@ -1,729 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// triangle.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include <cstdlib>
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "misc.hh"
-#include "triangle.hh"
-#include "vector.hh"
-
-// ================================================= Constructor and destructor
-
-Triangle :: Triangle (Dot *a,
- Dot *b,
- Dot *c,
- Triangle *father):
- _a(a), _b(b), _c(c),
- _neighbor_ab(NULL), _neighbor_bc(NULL), _neighbor_ca(NULL),
- _father(father),
- _child_a(NULL), _child_b(NULL), _child_c(NULL), _child_center(NULL),
- _visible(true)
-{
- Vector v1;
- Vector v2;
-
- glagen.triangles = glagen.triangles + 1;
- if (glagen.triangles > glagen.max_triangles)
- exit (1);
- if (father == NULL)
- _level = 0;
- else
- _level = father->Level () + 1;
-
- a->Use (father, this);
- b->Use (father, this);
- c->Use (father, this);
-
- _center = Vector ((a->x () + b->x () + c-> x()) / 3,
- (a->y () + b->y () + c-> y()) / 3,
- (a->z () + b->z () + c-> z()) / 3);
-
- v1 = Vector (a->x () - b->x (), a->y () - b->y (), a->z () - b->z ());
- v2 = Vector (a->x () - c->x (), a->y () - c->y (), a->z () - c->z ());
- _normal = Vector (v1 ^ v2);
- _size = _normal.Norm ();
- _normal = _normal / _size;
- _normal_real = _normal;
- _size = sqrtf (_size / 2);
-
- step = glagen.step - 1;
-}
-
-Triangle :: ~Triangle ()
-{
- if (_child_center != NULL)
- {
- delete _child_center;
- delete _child_a;
- delete _child_b;
- delete _child_c;
- }
-
- // Del the old connexity
- if (_neighbor_ab != NULL)
- _neighbor_ab->Del_connexity (this);
- if (_neighbor_bc != NULL)
- _neighbor_bc->Del_connexity (this);
- if (_neighbor_ca != NULL)
- _neighbor_ca->Del_connexity (this);
-
- // Tell the vertices they aren't used by this triangle anymore
- if (_a->Drop (this, _father))
- delete _a;
- if (_b->Drop (this, _father))
- delete _b;
- if (_c->Drop (this, _father))
- delete _c;
-
- if (_father != NULL)
- _father->Child_dead (this);
-
- glagen.triangles = glagen.triangles - 1;
-}
-
-
-// ======================================================================= Read
-
-// The level
-unsigned int Triangle :: Level () const { return _level; }
-
-// The vertices
-Dot *Triangle :: A () const { return _a; }
-Dot *Triangle :: B () const { return _b; }
-Dot *Triangle :: C () const { return _c; }
-
-// The neighborhood
-Triangle *Triangle :: Neighbor_ab () const { return _neighbor_ab; }
-Triangle *Triangle :: Neighbor_bc () const { return _neighbor_bc; }
-Triangle *Triangle :: Neighbor_ca () const { return _neighbor_ca; }
-
-// The father
-Triangle *Triangle :: Father () const { return _father; }
-
-// The childs
-Triangle *Triangle :: Child_a() const { return _child_a; }
-Triangle *Triangle :: Child_b() const { return _child_b; }
-Triangle *Triangle :: Child_c() const { return _child_c; }
-Triangle *Triangle :: Child_center() const { return _child_center; }
-Triangle *Triangle :: Child (Dot *match) const
-{
- if (match == _a)
- return _child_a;
- if (match == _b)
- return _child_b;
- if (match == _c)
- return _child_c;
- return NULL;
-}
-
-Vector &Triangle :: Normal () { return _normal; }
-Vector &Triangle :: Normal_real () { return _normal_real; }
-
-float Triangle :: Size () const { return _size; }
-
-// Is this triangle split ?
-bool Triangle :: Is_split () const
-{
- return (_child_center != NULL);
-}
-
-// In the current turn, has this triangle been checked ?
-bool Triangle :: Is_checked () const
-{
- return (step == glagen.step);
-}
-
-// According to the position of the observer, does this triangle
-// need to be split ?
-float Triangle :: To_split () const
-{
- float x = _center.X () - glagen.observer.frame.Origin_X ();
- float y = _center.Y () - glagen.observer.frame.Origin_Y ();
- float z = _center.Z () - glagen.observer.frame.Origin_Z ();
-// float dist = x * x + y * y + z * z;
- float dist = Approx_dist(x, y, z);
-// float alpha = dist / (_size * _size);
- float alpha = (dist * dist) / (_size * _size);
-
- // Special case :
- // if over the horizon, the result is increased
-// if (dist > 100 * glagen.observer.altitude * glagen.observer.altitude)
- if (dist > 10 * glagen.observer.altitude)
- alpha = alpha * alpha / 2;
-// if (dist > 1000 * glagen.observer.altitude * glagen.observer.altitude)
- if (dist > 32 * glagen.observer.altitude)
- alpha = alpha * alpha / 2;
- if (!_visible)
- alpha = (alpha * alpha) / 2;
- return (alpha);
-}
-
-// According to the position of the observer, does this triangle
-// need to be merged ?
-bool Triangle :: Is_visible () const { return _visible; }
-
-// ====================================================================== Write
-
-// This triangle must set a reference to the given other one
-void Triangle :: Make_connexity (Triangle *neighborhood)
-{
- // Find on which side is the other triangle and then set the connexity
- if ((neighborhood->A () == _a)
- || (neighborhood->B () == _a)
- || (neighborhood->C () == _a))
- {
- if ((neighborhood->A () == _b)
- || (neighborhood->B () == _b)
- || (neighborhood->C () == _b))
- _neighbor_ab = neighborhood;
- else
- _neighbor_ca = neighborhood;
- }
- else
- _neighbor_bc = neighborhood;
-}
-
-// This triangle must forget its reference to the given other one
-void Triangle :: Del_connexity (Triangle *related)
-{
- // Find the connexity and delete it
- if (_neighbor_ab == related)
- _neighbor_ab = NULL;
- if (_neighbor_bc == related)
- _neighbor_bc = NULL;
- if (_neighbor_ca == related)
- _neighbor_ca = NULL;
-}
-
-// The split function
-void Triangle :: Split ()
-{
- Dot *d;
- Dot *e;
- Dot *f;
- Triangle *neighbor_af;
- Triangle *neighbor_ae;
- Triangle *neighbor_bd;
- Triangle *neighbor_bf;
- Triangle *neighbor_ce;
- Triangle *neighbor_cd;
-
- // Test if the triangle is already split
- if (Is_split ())
- return;
-
- // Check the differences of iterations
- if (_neighbor_ab == NULL || _neighbor_bc == NULL || _neighbor_ca == NULL)
- _father->Split_neighbor();
-
- // Find / create vertex
- if (_neighbor_bc->Is_split ())
- {
- // Identify and save the future connexity
- neighbor_bd = _neighbor_bc->Child (_b);
- neighbor_cd = _neighbor_bc->Child (_c);
-
- // Pop the vertex to use
- if (neighbor_bd->B () == neighbor_cd->C ())
- d = neighbor_bd->B ();
- else
- d = neighbor_bd->C ();
- }
- else
- {
- // Create the vertex and set the connexity to NULL
- d = _b->Middle (_c); // new ; delete : triangle.cc l99, 101, 103
- neighbor_bd = NULL;
- neighbor_cd = NULL;
- }
-
- // The same for each side
- if (_neighbor_ca->Is_split ())
- {
- neighbor_ce = _neighbor_ca->Child (_c);
- neighbor_ae = _neighbor_ca->Child (_a);
- if (neighbor_ce->B () == neighbor_ae->C ())
- e = neighbor_ce->B ();
- else
- e = neighbor_ce->C ();
- }
- else
- {
- e = _c->Middle (_a); // new ; delete : triangle.cc l99, 101, 103
- neighbor_ce = NULL;
- neighbor_ae = NULL;
- }
-
- if (_neighbor_ab->Is_split ())
- {
- neighbor_af = _neighbor_ab->Child (_a);
- neighbor_bf = _neighbor_ab->Child (_b);
- if (neighbor_af->B () == neighbor_bf->C ())
- f = neighbor_af->B ();
- else
- f = neighbor_af->C ();
- }
- else
- {
- f = _a->Middle (_b); // new ; delete : triangle.cc l99, 101, 103
- neighbor_af = NULL;
- neighbor_bf = NULL;
- }
-
- // Create triangles
- _child_center = new Triangle (d, e, f, this); // delete : triangle.cc l90
- _child_a = new Triangle (_a, f, e, this); // delete : triangle.cc l91
- _child_b = new Triangle (_b, d, f, this); // delete : triangle.cc l92
- _child_c = new Triangle (_c, e, d, this); // delete : triangle.cc l93
-
- // Set the final connexity
- if (neighbor_af != NULL)
- {
- _child_a->Make_connexity (neighbor_af);
- neighbor_af->Make_connexity (_child_a);
- }
- if (neighbor_ae != NULL)
- {
- _child_a->Make_connexity (neighbor_ae);
- neighbor_ae->Make_connexity (_child_a);
- }
- if (neighbor_bd != NULL)
- {
- _child_b->Make_connexity (neighbor_bd);
- neighbor_bd->Make_connexity (_child_b);
- }
- if (neighbor_bf != NULL)
- {
- _child_b->Make_connexity (neighbor_bf);
- neighbor_bf->Make_connexity (_child_b);
- }
- if (neighbor_ce != NULL)
- {
- _child_c->Make_connexity (neighbor_ce);
- neighbor_ce->Make_connexity (_child_c);
- }
- if (neighbor_cd != NULL)
- {
- _child_c->Make_connexity (neighbor_cd);
- neighbor_cd->Make_connexity (_child_c);
- }
-
- _child_a->Make_connexity (_child_center);
- _child_b->Make_connexity (_child_center);
- _child_c->Make_connexity (_child_center);
- _child_center->Make_connexity (_child_a);
- _child_center->Make_connexity (_child_b);
- _child_center->Make_connexity (_child_c);
-
- // Check for chained reactions
- if (_neighbor_ab != NULL)
- _neighbor_ab->Check_T ();
- if (_neighbor_bc != NULL)
- _neighbor_bc->Check_T ();
- if (_neighbor_ca != NULL)
- _neighbor_ca->Check_T ();
-}
-
-// Check if a triangle needs to be split just because too many
-// triangles in the neighborhood are split.
-void Triangle :: Check_T ()
-{
- int warning;
-
- // The T problem only occurs if the triangle isn't Split
- if (_child_center != NULL)
- return;
- warning = 0;
- if (_neighbor_ab != NULL)
- if (_neighbor_ab->Is_split ())
- warning = warning + 1;
- if (_neighbor_bc != NULL)
- if (_neighbor_bc->Is_split ())
- warning = warning + 1;
- if (_neighbor_ca != NULL)
- if (_neighbor_ca->Is_split ())
- warning = warning + 1;
- if (warning > 1)
- Split ();
-}
-
-// The big merging function : we are not sure it will really merge
-// the triangle, but at least, it will merge the children.
-void Triangle :: Merge ()
-{
- unsigned char i;
-
- if (Is_split())
- {
- // First we merge the children
- _child_center->Merge_simple ();
- _child_a->Merge_simple ();
- _child_b->Merge_simple ();
- _child_c->Merge_simple ();
-
- // Then we check the neighborhood
- i = 0;
- if (_neighbor_ab != NULL)
- if (_neighbor_ab->Is_split ())
- {
- _neighbor_ab->Front_attack (_a, _b);
- i = i + 1;
- }
- if (_neighbor_bc != NULL)
- if (_neighbor_bc->Is_split ())
- {
- _neighbor_bc->Front_attack (_b, _c);
- i = i + 1;
- }
- if (_neighbor_ca != NULL)
- if (_neighbor_ca->Is_split ())
- {
- _neighbor_ca->Front_attack (_c, _a);
- i = i + 1;
- }
-
- // If there's only one split neighbor triangle, then we can
- // also destroy the children. Else we can't because it would
- // have too much unexpected effects
- if (i < 2)
- {
- // Destroy the child
- delete _child_center;
- delete _child_a;
- delete _child_b;
- delete _child_c;
-
- // Don't forget to change the pointers !
- _child_center = NULL;
- _child_a = NULL;
- _child_b = NULL;
- _child_c = NULL;
- }
- }
-}
-
-// Just a merge function without T case management
-void Triangle :: Merge_simple ()
-{
- if (_child_center != NULL)
- {
- // Recursive merge
- _child_center->Merge_simple ();
- _child_a->Merge_simple ();
- _child_b->Merge_simple ();
- _child_c->Merge_simple ();
-
- // Destroy the child
- delete _child_center;
- delete _child_a;
- delete _child_b;
- delete _child_c;
-
- // Don't forget to change the pointers !
- _child_center = NULL;
- _child_a = NULL;
- _child_b = NULL;
- _child_c = NULL;
- }
-}
-
-// Check the triangle for T cases when the neigbor triangle is merged
-void Triangle :: Front_attack (Dot *quad_a, Dot *quad_d)
-{
- Dot *quad_b;
- Dot *quad_c;
- Triangle *triangle_ab;
- Triangle *triangle_cd;
- Triangle *last_child;
-
- triangle_ab = Child (quad_a);
- triangle_cd = Child (quad_d);
- if (quad_a == _a)
- {
- if (quad_d == _b)
- last_child = _child_c;
- else
- last_child = _child_b;
- }
- else
- if (quad_a == _b)
- {
- if (quad_d == _c)
- last_child = _child_a;
- else
- last_child = _child_c;
- }
- else
- if (quad_d == _a)
- last_child = _child_b;
- else
- last_child = _child_a;
-
- triangle_ab->Merge_simple ();
- _child_center->Merge_simple ();
- triangle_cd->Merge_simple ();
-
- if (triangle_ab->B () == triangle_cd->C ())
- {
- quad_b = triangle_ab->C ();
- quad_c = triangle_cd->B ();
- if (triangle_ab->Neighbor_ca () != NULL)
- if (triangle_ab->Neighbor_ca ()->Is_split ())
- triangle_ab->Neighbor_ca ()->Front_attack (quad_a, quad_b);
- if (triangle_cd->Neighbor_ab () != NULL)
- if (triangle_cd->Neighbor_ab ()->Is_split ())
- triangle_cd->Neighbor_ab ()->Front_attack (quad_c, quad_d);
- }
- else
- {
- quad_b = triangle_ab->B ();
- quad_c = triangle_cd->C ();
- if (triangle_ab->Neighbor_ab () != NULL)
- if (triangle_ab->Neighbor_ab ()->Is_split ())
- triangle_ab->Neighbor_ab ()->Front_attack (quad_a, quad_b);
- if (triangle_cd->Neighbor_ca () != NULL)
- if (triangle_cd->Neighbor_ca ()->Is_split ())
- triangle_cd->Neighbor_ca ()->Front_attack (quad_c, quad_d);
- }
- if (last_child->Is_split ())
- last_child->Front_attack (quad_b, quad_c);
-}
-
-// Check all the triangles to apply split or merge
-void Triangle :: Split_visitor ()
-{
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- float to_split = To_split ();
-
- if (to_split != 0)
- {
- if (to_split > 350)
- Merge ();
- else
- {
- if (glagen.triangles <= glagen.max_triangles)
- if (to_split < 300)
- if (false == Is_split ())
- Split ();
-
- if (Is_split ())
- {
- // We check the childs
- _child_center->Split_visitor ();
- _child_a->Split_visitor ();
- _child_b->Split_visitor ();
- _child_c->Split_visitor ();
- }
- }
- }
-
- // If there's no father, it means it's one of the root
- // triangles and we can go to check the neighborhood
- if (NULL == _father)
- {
- _neighbor_ab->Split_visitor ();
- _neighbor_bc->Split_visitor ();
- _neighbor_ca->Split_visitor ();
- }
-}
-
-// The visitor that computes if a triangle is visible or not.
-bool Triangle :: Hide_visitor ()
-{
- if (step != glagen.step)
- {
- step = glagen.step;
- if (Is_split ())
- {
- _visible = _child_a->Hide_visitor ();
- _visible = _child_b->Hide_visitor () || _visible;
- _visible = _child_c->Hide_visitor () || _visible;
- _visible = _child_center->Hide_visitor () || _visible;
- }
- else
- {
- // Let compute if it is visible...
-
- // We construct the vector from the center of to planet to
- // the observer
- Vector v = Vector (glagen.observer.frame.Origin_X () - _center.X (),
- glagen.observer.frame.Origin_Y () - _center.Y (),
- glagen.observer.frame.Origin_Z () -
- _center.Z ());
- // We compute the scalar product to know how far it is
- _visible = ((_normal * v) > 0);
-
- // Now, let compute if it is in the vision field
- if (_visible == true)
- {
- v.Approx_normalize ();
- _visible = (v * glagen.observer.frame.Basis_Z () < -0.70);
- }
- }
-
- // If there's no father, it means it's one of the root
- // triangles and we can go to check the neighborhood
- if (NULL == _father)
- {
- _neighbor_ab->Hide_visitor ();
- _neighbor_bc->Hide_visitor ();
- _neighbor_ca->Hide_visitor ();
- }
- }
- return _visible;
-}
-
-// Called by a child when deleted
-void Triangle :: Child_dead (Triangle *child)
-{
- if (_child_center == child)
- _child_center = NULL;
- if (_child_a == child)
- _child_a = NULL;
- if (_child_b == child)
- _child_b = NULL;
- if (_child_c == child)
- _child_c = NULL;
-}
-
-// This triangle is checked
-void Triangle :: Checked () { step = glagen.step; }
-
-
-// ====================================================================== Other
-
-// Split the neighborhood triangles
-void Triangle :: Split_neighbor ()
-{
- if (_neighbor_ab != NULL)
- _neighbor_ab->Split ();
- if (_neighbor_bc != NULL)
- _neighbor_bc->Split ();
- if (_neighbor_ca != NULL)
- _neighbor_ca->Split ();
-}
-
-// Update the normal vector, if the triangle is moving.
-void Triangle :: Update_normal ()
-{
- surface_t *surface;
- float adjust = 0;
-
- // Get the position of the dot A
- if (glagen.display_planet == true)
- {
- if (NULL == _a->Property (0))
- adjust = 0;
- else
- {
- surface = static_cast <surface_t *> (_a->Property (0)->data);
- if (NULL == surface)
- adjust = 0;
- else
- adjust = surface->height;
- }
- }
- float ax = _a->x () * (glagen.size + adjust);
- float ay = _a->y () * (glagen.size + adjust);
- float az = _a->z () * (glagen.size + adjust);
-
- // Get the position of the dot B
- if (glagen.display_planet)
- {
- if (NULL == _b->Property (0))
- adjust = 0;
- else
- {
- surface = static_cast <surface_t *> (_b->Property (0)->data);
- if (NULL == surface)
- adjust = 0;
- else
- adjust = surface->height;
- }
- }
- float bx = _b->x () * (glagen.size + adjust);
- float by = _b->y () * (glagen.size + adjust);
- float bz = _b->z () * (glagen.size + adjust);
-
- // Get the position of the dot C
- if (glagen.display_planet)
- {
- if (NULL == _c->Property (0))
- adjust = 0;
- else
- {
- surface = static_cast <surface_t *> (_c->Property (0)->data);
- if (NULL == surface)
- adjust = 0;
- else
- adjust = surface->height;
- }
- }
- float cx = _c->x () * (glagen.size + adjust);
- float cy = _c->y () * (glagen.size + adjust);
- float cz = _c->z () * (glagen.size + adjust);
-
- Vector v1 = Vector (ax - bx, ay - by, az - bz);
- Vector v2 = Vector (ax - cx, ay - cy, az - cz);
- _normal_real = Vector (v1 ^ v2);
- _normal_real.Normalize ();
-}
-
-void Triangle :: Update_normal_visitor ()
-{
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- Update_normal ();
-
- if (_child_center != NULL)
- {
- _child_center->Update_normal_visitor ();
- _child_a->Update_normal_visitor ();
- _child_b->Update_normal_visitor ();
- _child_c->Update_normal_visitor ();
- }
-
- if (NULL == _father)
- {
- _neighbor_ab->Update_normal_visitor ();
- _neighbor_bc->Update_normal_visitor ();
- _neighbor_ca->Update_normal_visitor ();
- }
-
- _a->Update_normal ();
- _b->Update_normal ();
- _c->Update_normal ();
-}
diff --git a/tags/START/glagen/3d/triangle.hh b/tags/START/glagen/3d/triangle.hh
deleted file mode 100644
index 3a3903f..0000000
--- a/tags/START/glagen/3d/triangle.hh
+++ /dev/null
@@ -1,122 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// triangle.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef TRIANGLE_HH_
-# define TRIANGLE_HH_
-
-#include <cstdlib>
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "vector.hh"
-
-class Triangle
-{
-public:
-
- //Constructor and destructor
- Triangle (class Dot *, class Dot *, class Dot *, Triangle *);
- ~Triangle ();
-
- // Read
- unsigned int Level () const;
-
- Dot *A () const;
- Dot *B () const;
- Dot *C () const;
-
- Triangle *Neighbor_ab () const;
- Triangle *Neighbor_bc () const;
- Triangle *Neighbor_ca () const;
-
- Triangle *Father () const;
-
- Triangle *Child_a() const;
- Triangle *Child_b() const;
- Triangle *Child_c() const;
- Triangle *Child_center() const;
- Triangle *Child (Dot *match) const;
-
- Vector &Normal ();
- Vector &Normal_real ();
-
- float Size () const;
- bool Is_split () const;
- bool Is_checked () const;
- float To_split () const;
- bool Is_visible () const;
-
- // Write
- void Make_connexity (Triangle *);
- void Del_connexity (Triangle *);
- void Split ();
- void Check_T ();
- void Merge ();
- void Merge_simple ();
- void Front_attack (Dot *, Dot *);
- void Split_visitor ();
- bool Hide_visitor ();
- void Child_dead (Triangle *);
- void Checked ();
-
- // Other
- void Split_neighbor ();
- void Update_normal ();
- void Update_normal_visitor ();
- bool T_case (const unsigned int);
- void Display (const unsigned int);
-
-protected:
- unsigned int _level;
-
- Dot *_a;
- Dot *_b;
- Dot *_c;
-
- Triangle *_neighbor_ab;
- Triangle *_neighbor_bc;
- Triangle *_neighbor_ca;
-
- Triangle *_father;
-
- Triangle *_child_a;
- Triangle *_child_b;
- Triangle *_child_c;
- Triangle *_child_center;
-
- bool _visible;
-
- Vector _center;
- Vector _normal;
- Vector _normal_real;
- float _size;
-
- char step;
-};
-
-#endif // TRIANGLE_HH_
diff --git a/tags/START/glagen/3d/triangle_gl.cc b/tags/START/glagen/3d/triangle_gl.cc
deleted file mode 100644
index 173db4f..0000000
--- a/tags/START/glagen/3d/triangle_gl.cc
+++ /dev/null
@@ -1,180 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// triangle.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DARWIN
-# include <GL/gl.h>
-# include <GL/glu.h>
-#else
-# include <gl.h>
-# include <glu.h>
-#endif
-
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "triangle.hh"
-
-//
-// Manage the T-case (when the has a 4th point)
-//
-bool Triangle :: T_case (const unsigned int id)
-{
- Dot *middle;
- Triangle *child1;
- Triangle *child2;
-
- // Is there a triangle on this side ?
- if (_neighbor_ab != NULL)
-
- // Then is it split ?
- if (_neighbor_ab->Is_split ())
- {
- // Find the dangling vertex
- child1 = _neighbor_ab->Child (_a);
- child2 = _neighbor_ab->Child (_b);
- if (child1->B () == child2->C ())
- middle = child1->B ();
- else
- middle = child1->C ();
-
- // Display two triangles instead of just one
- glBegin (GL_TRIANGLES);
- _b->Display (id);
- _c->Display (id);
- middle->Display (id);
- _c->Display (id);
- _a->Display (id);
- middle->Display (id);
- glEnd ();
-
- // The T case is fixed
- return true;
- }
- if (_neighbor_bc != NULL)
- if (_neighbor_bc->Is_split ())
- {
- child1 = _neighbor_bc->Child (_b);
- child2 = _neighbor_bc->Child (_c);
- if (child1->B () == child2->C ())
- middle = child1->B ();
- else
- middle = child1->C ();
- glBegin (GL_TRIANGLES);
- _a->Display (id);
- _b->Display (id);
- middle->Display (id);
- _c->Display (id);
- _a->Display (id);
- middle->Display (id);
- glEnd ();
- return true;
- }
- if (_neighbor_ca != NULL)
- if (_neighbor_ca->Is_split ())
- {
- child1 = _neighbor_ca->Child (_c);
- child2 = _neighbor_ca->Child (_a);
- if (child1->B () == child2->C ())
- middle = child1->B ();
- else
- middle = child1->C ();
- glBegin (GL_TRIANGLES);
- _b->Display (id);
- _c->Display (id);
- middle->Display (id);
- _a->Display (id);
- _b->Display (id);
- middle->Display (id);
- glEnd ();
- return true;
- }
- // In fact there's no T-case for this triangle
- return false;
-}
-
-//
-// Display the faces included in the triangle (general case)
-//
-void Triangle :: Display (const unsigned int id)
-{
- // Test if this triangle has been visited yet
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- if (glagen.display_all == true || _visible == true)
- {
- // If the triangle has childs, we visit them instead
- if (_child_center != NULL)
- {
- _child_a->Display (id);
- _child_b->Display (id);
- _child_c->Display (id);
- _child_center->Display (id);
- }
- else
- {
- // T-case managment
- if (false == T_case (id))
- {
- if (glagen.display_normal == true)
- {
- float x = (_a->x () + _b->x () + _c->x ()) / 3;
- float y = (_a->y () + _b->y () + _c->y ()) / 3;
- float z = (_a->z () + _b->z () + _c->z ()) / 3;
-
- // Display the normal vector
- if (glagen.light)
- glDisable(GL_LIGHTING);
- glBegin (GL_LINES);
- glColor3f(1.0, 0.2, 0.0);
- glVertex3f(x, y, z);
- glVertex3f(x + _normal_real.X () / 100,
- y + _normal_real.Y () / 100,
- z + _normal_real.Z () / 100);
- glEnd ();
- if (glagen.light)
- glEnable(GL_LIGHTING);
- }
- // Could it be more simple ?
- glBegin (GL_TRIANGLES);
- _a->Display (id);
- _b->Display (id);
- _c->Display (id);
- glEnd ();
- }
- }
- }
- // Recursive call at the top of the three
- if (NULL == Father ())
- {
- _neighbor_ab->Display (id);
- _neighbor_bc->Display (id);
- _neighbor_ca->Display (id);
- }
-}
diff --git a/tags/START/glagen/3d/vector.cc b/tags/START/glagen/3d/vector.cc
deleted file mode 100644
index 06e3085..0000000
--- a/tags/START/glagen/3d/vector.cc
+++ /dev/null
@@ -1,252 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// vector.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-#include "misc.hh"
-#include "vector.hh"
-
-// ================================================ Constructors and destructor
-
-Vector :: Vector ()
-{
- vect[0] = 0;
- vect[1] = 0;
- vect[2] = 0;
-}
-
-Vector :: Vector (const Vector &source)
-{
- vect[0] = source.X ();
- vect[1] = source.Y ();
- vect[2] = source.Z ();
-}
-
-Vector :: Vector (const float x, const float y, const float z)
-{
- vect[0] = x;
- vect[1] = y;
- vect[2] = z;
-}
-
-Vector :: ~Vector () {}
-
-
-// ======================================================================= Read
-
-float Vector :: X () const { return vect[0]; }
-float Vector :: Y () const { return vect[1]; }
-float Vector :: Z () const { return vect[2]; }
-
-float Vector :: Norm () const
-{
- return (sqrtf(vect[0] * vect[0] +
- vect[1] * vect[1] +
- vect[2] * vect[2]));
-}
-
-// Fast norm approximation computing
-float Vector :: Approx_norm () const
-{
- return (Approx_dist(vect[0], vect[1], vect[2]));
-}
-
-
-// ====================================================================== Write
-
-void Vector :: Set (const float x, const float y, const float z)
-{
- vect[0] = x;
- vect[1] = y;
- vect[2] = z;
-}
-
-void Vector :: Set_X (const float x){ vect[0] = x;}
-void Vector :: Set_Y (const float y){ vect[1] = y;}
-void Vector :: Set_Z (const float z){ vect[2] = z;}
-
-void Vector :: Normalize ()
-{
- float norm = Norm ();
- vect[0] = vect[0] / norm;
- vect[1] = vect[1] / norm;
- vect[2] = vect[2] / norm;
-}
-
-void Vector :: Approx_normalize ()
-{
- float norm = Approx_norm ();
- vect[0] = vect[0] / norm;
- vect[1] = vect[1] / norm;
- vect[2] = vect[2] / norm;
-}
-
-void Vector :: Rotate (const Vector &axis, const float angle)
-{
- float cosinus = cosf (angle);
- float sinus = sinf (angle);
- float cos_bis = (1 - cosinus) * axis.X ();
- float cos_third = (1 - cosinus) * axis.Y ();
-
- float x = (cosinus + cos_bis * axis.X ()) * vect[0];
- x = x + (cos_bis * axis.Y () - axis.Z () * sinus) * vect[1];
- x = x + (cos_bis * axis.Z () + axis.Y () * sinus) * vect[2];
-
- float y = (cos_bis * axis.Y () + axis.Z () * sinus) * vect[0];
- y = y + (cosinus + cos_third * axis.Y ()) * vect[1];
- y = y + (cos_third * axis.Z () - axis.X () * sinus) * vect[2];
-
- float z = (cos_bis * axis.Z () - axis.Y () * sinus) * vect[0];
- z = z + (cos_third * axis.Z () + axis.X () * sinus) * vect[1];
- z = z + (cosinus + (1 - cosinus) * axis.Z () * axis.Z ()) * vect[2];
-
- vect[0] = x;
- vect[1] = y;
- vect[2] = z;
-}
-
-
-// ================================================================== Operators
-
-// @
-// @
-// @@@@@
-// @
-// @
-Vector Vector :: operator + (const class Vector &v) const
-{
- return Vector(vect[0] + v.X (),
- vect[1] + v.Y (),
- vect[2] + v.Z ());
-}
-
-//
-//
-// @@@@@
-//
-//
-Vector Vector :: operator - (const class Vector &v) const
-{
- return Vector(vect[0] - v.X (),
- vect[1] - v.Y (),
- vect[2] - v.Z ());
-}
-
-//
-// @
-// @@@
-// @
-//
-float Vector :: operator * (const class Vector &v) const
-{
- return (vect[0] * v.X () +
- vect[1] * v.Y () +
- vect[2] * v.Z ());
-}
-
-// @
-// @ @
-// @ @
-//
-//
-Vector Vector :: operator ^ (const class Vector &v) const
-{
- return Vector((vect[1] * v.Z ()) - (vect[2] * v.Y ()),
- (vect[2] * v.X ()) - (vect[0] * v.Z ()),
- (vect[0] * v.Y ()) - (vect[1] * v.X ()));
-}
-
-// @
-// @ @@@@@
-// @@@@@
-// @ @@@@@
-// @
-Vector Vector :: operator += (const class Vector &v)
-{
- *this = *this + v;
- return *this;
-}
-
-//
-// @@@@@
-// @@@@@
-// @@@@@
-//
-Vector Vector :: operator -= (const class Vector &v)
-{
- *this = *this - v;
- return *this;
-}
-
-
-// @@@
-// @ @
-// @@@ @@@@
-// @ @ @
-// @@@ @
-Vector Vector :: operator * (const float &a) const
-{
- return Vector(X () * a,
- Y () * a,
- Z () * a);
-}
-
-// @ @@@
-// @ @
-// @ @@@@
-// @ @ @
-// @ @@@ @
-Vector Vector :: operator / (const float &a) const
-{
- return Vector(X () / a,
- Y () / a,
- Z () / a);
-}
-
-// @@@
-// @ @@@@@ @
-// @@@ @@@@
-// @ @@@@@ @ @
-// @@@ @
-Vector Vector :: operator *= (const float &a)
-{
- *this = *this * a;
- return *this;
-}
-
-// @ @@@
-// @ @@@@@ @
-// @ @@@@
-// @ @@@@@ @ @
-// @ @@@ @
-Vector Vector :: operator /= (const float &a)
-{
- *this = *this / a;
- return *this;
-}
diff --git a/tags/START/glagen/3d/vector.hh b/tags/START/glagen/3d/vector.hh
deleted file mode 100644
index 2a7a47f..0000000
--- a/tags/START/glagen/3d/vector.hh
+++ /dev/null
@@ -1,77 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// vector.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef VECTOR_HH_
-# define VECTOR_HH_
-
-class Vector
-{
-public :
-
- // Constructors and destructor
- Vector ();
- Vector (const Vector &);
- Vector (const float, const float, const float);
- ~Vector ();
-
- // Read
- float X () const;
- float Y () const;
- float Z () const;
-
- float Norm () const;
- float Approx_norm () const;
-
- // Write
- void Set (const float, const float, const float);
- void Set_X (const float);
- void Set_Y (const float);
- void Set_Z (const float);
- void Normalize ();
- void Approx_normalize ();
- void Rotate (const Vector &, const float);
-
- // Operators
- Vector operator + (const class Vector &) const;
- Vector operator - (const class Vector &) const;
- float operator * (const class Vector &) const;
- Vector operator ^ (const class Vector &) const;
- Vector operator += (const class Vector &);
- Vector operator -= (const class Vector &);
-
- Vector operator * (const float &) const;
- Vector operator / (const float &) const;
- Vector operator *= (const float &);
- Vector operator /= (const float &);
-
-protected :
- float vect[3];
-};
-
-#endif
diff --git a/tags/START/glagen/algo_distribue/Distribue.cc b/tags/START/glagen/algo_distribue/Distribue.cc
deleted file mode 100644
index 09efc50..0000000
--- a/tags/START/glagen/algo_distribue/Distribue.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Distribue.hh"
diff --git a/tags/START/glagen/algo_distribue/Distribue.hh b/tags/START/glagen/algo_distribue/Distribue.hh
deleted file mode 100644
index ff3b76d..0000000
--- a/tags/START/glagen/algo_distribue/Distribue.hh
+++ /dev/null
@@ -1,97 +0,0 @@
-// Classe Distribue
-
-
-
-#ifndef DISTRIBUE_HH_
-# define DISTRIBUE_HH_
-
-#include "tree/tree.hh"
-#include "tree/node.hh"
-#include "network/data/Data.hh"
-#include "network/Server.hh"
-#include "tools/matrix.hh"
-
-template<class TYPENODE> class Distribue
-{
-public:
- Distribue(const Tree<TYPENODE>& tree)
- : _tree(tree),
- _size(tree.get_node_root().get_number_node()),
- _mat(new Matrix<int> (_size, _size))
- {
- unsigned int ptr1 = 0, ptr2 = 0;
- std::list< Node<TYPENODE> > ptr_node = *new std::list< Node<TYPENODE> >;
- ptr_node.push_back(tree.get_node_root());
- while (ptr_node.size())
- {
- std::list< Node<TYPENODE> >::iterator childs = ptr_node.begin();
- std::list< Node<TYPENODE> >::iterator child =
- childs->get_childs()->begin();
- for (; child != childs->get_childs()->end(); ++child)
- {
- ptr_node.push_back(*child);
- (*_mat)(++ptr2, ptr1) = 1;
- }
- ptr_node.pop_front();
- ptr1++;
- }
- }
-
- void depend(std::list<TYPENODE>& data, const unsigned int& ptr)
- {
- data.push_back(_tree.get_node_root().get_node_course_width(ptr).get_data());
- for (unsigned int i = 0; i < _size; ++i)
- if ((*_mat)(i, ptr))
- depend(data, i);
- }
-
- void transfer(Server& server)
- {
- // Calcul du nombre de client necessaire
- unsigned int j = 0;
- std::list< list<TYPENODE> > list_data =
- *new std::list< list<TYPENODE> >;
- std::list<TYPENODE> data = *new std::list<TYPENODE>;
- for (unsigned int i = 1; i < _size; ++i)
- {
- if ((*_mat)(i, 0)) // Ne prend que les noeuds fils du noeud root
- {
- ++j;
- this->depend(data, i);
- list_data.push_back(data);
- data = *new std::list<TYPENODE>;
- }
- }
- if (server.get_nb_client() < j)
- {
- std::cout << "Need more client" << std::endl;
- exit(-1);
- }
-
- std::list<int>::const_iterator fd_client =
- server.get_list_fd()->begin();
- data = *new std::list<TYPENODE>;
- for (unsigned int i = 1; i < _size; ++i)
- {
- if ((*_mat)(i, 0)) // Ne prend que les noeuds fils du noeud root
- {
- ++j;
- this->depend(data, i);
- server.send_data(*fd_client++, Data<TYPENODE>(&data));
- data = *new std::list<TYPENODE>;
- }
- }
- }
-
- Matrix<int>& get_matrix()
- {
- return (*_mat);
- }
-
-private:
- Tree<TYPENODE> _tree;
- unsigned int _size;
- Matrix<int> *_mat;
-};
-
-#endif // DISTRIBUTE_HH_
diff --git a/tags/START/glagen/algo_distribue/Makefile b/tags/START/glagen/algo_distribue/Makefile
deleted file mode 100644
index fb30eba..0000000
--- a/tags/START/glagen/algo_distribue/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-##
-## Makefile for in
-##
-## Made by meng-tih lam
-## Login <lam_m@epita.fr>
-##
-## Started on Thu Feb 7 19:08:57 2002 meng-tih lam
-
-##
-
-NAME = glagen_divide
-SRC_TOOLS = tools/matrix.cc
-SRC_DATA = network/data/Data.cc network/data/Data_exemple.cc
-SRC_TREE = tree/node.cc tree/tree.cc
-SRC_NETWORK = network/Server.cc network/Client.cc
-SRC_MAIN = Distribue.cc main.cc
-SRCS = ${SRC_TOOLS} ${SRC_TREE} ${SRC_NETWORK}\
- ${SRC_DATA} ${SRC_MAIN}
-
-OBJS = $(SRCS:.cc=.o)
-
-ARCHI_i586 = -g2 -Wall -W -Werror -O3
-ARCHI_NetBSD = -g2 -Wall -W -Werror -O3 -I/usr/X11R6/include
-ARCHI_sun4 = -g2 -Wall -W -Werror -O3
-ARCHI_alpha = -g2 -Wall -W -Werror -O3
-
-LIB_i586 =
-LIB_NetBSD = -L/usr/pkg/lib -L/usr/X11R6/lib -lGL -lGLU -lglut
-LIB_alpha =
-LIB_sun4 =
-
-CPPFLAGS = -I.
-CC = g++
-RM = rm -f
-
-.PHONY: all clean deps
-
-all: $(OBJS)
- $(CC) -o $(NAME) $(CFLAGS) $(OBJS)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-.cc.o:
- $(CC) $(ARCHI_${HOSTTYPE}) $(CPPFLAGS) -c $< -o $(<:.cc=.o)
-
-clean:
- $(RM) $(OBJS) $(NAME) *~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/tags/START/glagen/algo_distribue/main.cc b/tags/START/glagen/algo_distribue/main.cc
deleted file mode 100644
index e78d461..0000000
--- a/tags/START/glagen/algo_distribue/main.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-// Algo distribue
-
-// glagen_divide [n]
-// n indique le nombre d'ordinateur en reseau exclut le serveur
-
-#include <iostream>
-#include <list>
-#include <string>
-
-// Load Tree
-#include "tree/node.hh"
-#include "tree/tree.hh"
-
-// Load Network
-#include "network/Server.hh"
-#include "network/Client.hh"
-
-// Load Data
-#include "network/data/Data_string.hh"
-
-// Load Tool
-#include "tools/matrix.hh"
-
-#include "Distribue.hh"
-
-#include <stdlib.h>
-#include <assert.h>
-
-// Prototype : test d'essais avec 2 clients
-// On changera suivant les donnees passes par GTK
-// Il faut que le nombre de client soit superieur ou egale
-// au nombre de noeud fils par rapport au noeud principal
-#define NB_CLIENT 2
-
-char gl_handle;
-
-Tree<Data_string> *create_tree();
-
-void help(char *prog_name)
-{
- std::cout << prog_name << " [port]" << std::endl;
- exit(0);
-}
-
-void signal_alarm(int)
-{
- gl_handle = gl_handle | 1;
-}
-
-void check_args(int argc, char *argv1, char *argv2)
-{
- int current;
-
- if (argc != 2)
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
- for (current = 0; argv2[current] != '\0'; current++)
- if (argv2[current] < '0' || argv2[current] > '9')
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
-}
-
-int main(int argc, char *argv[])
-{
- // Exemple de creation d'un arbre (donnees string)
- // On peut appele une classe abstraite dont ses fils sont
- // les types de donnees des librairies (ex: Tree<Abstraite*>)
- Tree<Data_string>* tree;
- tree = create_tree();
-
- // Calcul de l'algo distribue : calcul l'attribution des taches
- // pour chaque client
- Distribue<Data_string> network(*tree);
- std::cout << "Matrice calcule" << std::endl
- << network.get_matrix() << std::endl;
-
- // Execution du serveur
- check_args(argc, argv[0], argv[1]);
- Server server(atoi(argv[1]), NB_CLIENT);
-
- // Transfert des donnees
- network.transfer(server);
-
- return (0);
-}
-
-
-
-Tree<Data_string> *create_tree()
-{
- string root = "Connection...";
- string a = "Est-ce que ca fonctionne ?";
- string b = "1212123";
- string c = "OK recu 5/5";
- Tree<Data_string> tree(root);
- tree.add_node(a);
- tree.add_node(b);
- tree.add_node(c);
-
- Tree<Data_string>* main_tree = new Tree<Data_string>(string("Execution..."));
- main_tree->add_tree(tree);
-
- Tree<Data_string> tree2(string("Une tentative de suicide"));
- tree2.add_node(string("Ou ca?"));
- tree2.add_node(string("A Epita"));
- tree2.add_node(string("Ping pong ping"));
- main_tree->add_tree(tree2);
- return (main_tree);
-}
diff --git a/tags/START/glagen/algo_distribue/network/Client.cc b/tags/START/glagen/algo_distribue/network/Client.cc
deleted file mode 100644
index 23ccb2c..0000000
--- a/tags/START/glagen/algo_distribue/network/Client.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Client.hh"
diff --git a/tags/START/glagen/algo_distribue/network/Client.hh b/tags/START/glagen/algo_distribue/network/Client.hh
deleted file mode 100644
index 923b83e..0000000
--- a/tags/START/glagen/algo_distribue/network/Client.hh
+++ /dev/null
@@ -1,113 +0,0 @@
-// Classe Client
-
-#ifndef CLIENT_HH_
-# define CLIENT_HH_
-
-#include <list>
-#include <iostream>
-#include <string>
-#include <stdio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <signal.h>
-#include <netdb.h>
-#include <assert.h>
-#include <unistd.h>
-
-#include "data/Data.hh"
-
-class Client
-{
-public:
- Client(char* host, const int& port)
- {
- char *c;
- int sock;
- struct sockaddr_in sa;
- long addr;
- struct hostent *host_info;
-
- if ((host_info = gethostbyname(host)) == 0)
- this->error();
- c = host_info->h_addr;
- addr = c[0] << 24 | c[1] << 16 | c[2] << 8 | c[3];
- if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
- this->error();
- sa.sin_family = AF_INET;
- sa.sin_port = htons(port);
- sa.sin_addr.s_addr = htonl(addr);
- if (connect(sock, (struct sockaddr *)&sa, sizeof (sa)) == -1)
- this->error();
- _fd_server = sock;
- }
-
- void error()
- {
- std::cerr << "Error client : ";
- perror("");
- exit(errno);
- }
-
- template <class TYPEDATA>
- void send_data(const Data<TYPEDATA>& data) const
- {
- data.send(_fd_server);
- }
-
- template <class TYPEDATA>
- void received_data(Data<TYPEDATA>& data)
- {
- data.receive(_fd_server);
- }
-
- void wait_signal()
- {
- unsigned char sig = 0;
- read(_fd_server, &sig, sizeof(unsigned char));
- if (sig != 42)
- {
- std::cout << "Erreur de transmission" << std::endl;
- exit(1);
- }
- std::cout << "En communication avec le serveur..." << std::endl;
- }
-
- void send_signal()
- {
- unsigned char sig = 42;
- write(_fd_server, &sig, sizeof(unsigned char));
- }
-
- int do_select()
- {
- fd_set rd;
- char buf[256];
- int n;
-
- FD_ZERO(&rd);
- FD_SET(0, &rd);
- FD_SET(_fd_server, &rd);
- if (select(_fd_server + 1, &rd, 0, 0, 0) == -1)
- this->error();
- if (FD_ISSET(_fd_server, &rd))
- {
- n = read(_fd_server, buf, 150);
- if (n <= 0)
- return (1);
- write(1, buf, n);
- fflush(0);
- }
- if (FD_ISSET(0, &rd))
- {
- n = read(0, buf, 100);
- write(_fd_server, buf, n);
- }
- return (0);
- }
-
-
-private:
- int _fd_server;
-};
-
-#endif // CLIENT_HH_
diff --git a/tags/START/glagen/algo_distribue/network/Makefile b/tags/START/glagen/algo_distribue/network/Makefile
deleted file mode 100644
index 18878df..0000000
--- a/tags/START/glagen/algo_distribue/network/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-##
-## Makefile for in
-##
-## Made by meng-tih lam
-## Login <lam_m@epita.fr>
-##
-## Started on Thu Feb 7 19:08:57 2002 meng-tih lam
-
-##
-
-NAME_SERVER = glagen_server
-NAME_CLIENT = glagen_client
-SRC_DATA = data/Data.cc\
- data/Data_exemple.cc\
- data/Data_string.cc
-SRC_SERVER = Server.cc main_server.cc
-SRC_CLIENT = Client.cc main_client.cc
-
-OBJ_SERVER = $(SRC:.cc=.o) $(SRC_SERVER:.cc=.o)
-OBJ_CLIENT = $(SRC:.cc=.o) $(SRC_CLIENT:.cc=.o)
-
-ARCHI_i586 = -g2 -Wall -W -Werror -O3
-ARCHI_NetBSD = -g2 -Wall -W -Werror -O3 -I/usr/X11R6/include
-ARCHI_sun4 = -g2 -Wall -W -Werror -O3
-ARCHI_alpha = -g2 -Wall -W -Werror -O3
-
-LIB_i586 = -lc
-LIB_NetBSD = -L/usr/pkg/lib -L/usr/X11R6/lib -lGL -lGLU -lglut -lc
-LIB_alpha =
-LIB_sun4 = -lsocket -lnsl
-
-CPPFLAGS = -I.
-CC = g++
-RM = rm -f
-
-.PHONY: all clean deps
-
-all: server client
-
-server: $(NAME_SERVER)
-
-client: $(NAME_CLIENT)
-
-$(NAME_SERVER): $(OBJ_SERVER)
- $(CC) -o $(NAME_SERVER) $(CFLAGS) $(OBJ_SERVER)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-$(NAME_CLIENT): $(OBJ_CLIENT)
- $(CC) -o $(NAME_CLIENT) $(CFLAGS) $(OBJ_CLIENT)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-.cc.o:
- $(CC) $(ARCHI_${HOSTTYPE}) $(CPPFLAGS) -c $<
-
-clean:
- $(RM) $(OBJ_SERVER) $(OBJ_CLIENT) $(NAME_SERVER) $(NAME_CLIENT)\
- *~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/tags/START/glagen/algo_distribue/network/Server.cc b/tags/START/glagen/algo_distribue/network/Server.cc
deleted file mode 100644
index 63f45ff..0000000
--- a/tags/START/glagen/algo_distribue/network/Server.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Server.hh"
diff --git a/tags/START/glagen/algo_distribue/network/Server.hh b/tags/START/glagen/algo_distribue/network/Server.hh
deleted file mode 100644
index fdfecb4..0000000
--- a/tags/START/glagen/algo_distribue/network/Server.hh
+++ /dev/null
@@ -1,218 +0,0 @@
-// Classe Server
-
-#ifndef SERVER_HH_
-# define SERVER_HH_
-
-#include <list>
-#include <iostream>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <signal.h>
-#include <poll.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include <assert.h>
-#include "data/Data.hh"
-
-extern char gl_handle;
-
-extern void signal_alarm(int);
-
-template<class TYPEDATA> class Data;
-
-class Server
-{
-public:
- Server(const int& port, const unsigned int& nb_client_max)
- {
- _port = port;
- _client_max = nb_client_max;
- _fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
- _sock_in = new struct sockaddr_in;
- _sock_in->sin_family = PF_INET;
- _sock_in->sin_port = htons(port);
- _sock_in->sin_addr.s_addr = INADDR_ANY;
- if ((bind(_fd, (struct sockaddr *)_sock_in, sizeof (*_sock_in)) == -1)
- || (listen(_fd, 5) == -1))
- this->error();
- std::cout << "Server started. Listening on port " << _port << std::endl;
- _fd_client = new std::list<int>;
- this->start_signal();
- this->start();
- }
-
- void start()
- {
- int fd_client;
- socklen_t len;
- struct sockaddr_in sock_client;
-
- len = sizeof (struct sockaddr_in);
- while (gl_handle != -1 && this->_fd_client->size() < _client_max)
- {
- fd_client = 0;
- if ((fd_client = accept(this->_fd,
- (struct sockaddr *)&(sock_client), &len)) > 0)
- gl_handle = gl_handle | 2;
- std::list<int> list_fd;
- if (2 == (gl_handle & 2))
- {
- this->accept_client(fd_client);
- this->send_signal(fd_client);
- std::cout << "Number of connected clients :"
- << this->_fd_client->size() << std::endl;
- }
- gl_handle = 0;
- this->test_client();
- }
- }
-
- void test_client()
- {
- if (_fd_client->size())
- {
- std::list<int>::const_iterator fd_client_tmp;
- std::list<int>::const_iterator fd_client = _fd_client->begin();
- int i = 0;
- while (fd_client != _fd_client->end())
- {
- i++;
- char c = 0;
- errno = 0;
- fd_client_tmp = fd_client;
- read(*fd_client, &c, sizeof(char));
- ++fd_client;
- if (errno == 0)
- this->remove_client(*fd_client_tmp);
- }
- }
- }
-
- void error()
- {
- std::cerr << "Error server : ";
- perror("");
- exit(errno);
- }
-
- void remove_client(const int& fd)
- {
- _fd_client->remove(fd);
- std::cout << "Client in the file descriptor : " << fd
- << " are disconnected" << std::endl;
- std::cout << "Number of connected clients :"
- << this->_fd_client->size() << std::endl;
- }
-
- void wait_signal(std::list<int>& list_fd) // retourne la liste des files descriptors a lire
- {
- struct pollfd poll_fd[_fd_client->size()];
- std::list<int>::const_iterator fd = _fd_client->begin();
- for (int i = 0; fd != _fd_client->end(); ++fd, ++i)
- {
- poll_fd[i].fd = *fd;
- poll_fd[i].events = POLLIN;
- }
- if (poll(poll_fd, _fd_client->size(), 0) < 0)
- assert(0);
- for (unsigned int i = 0; i < _fd_client->size(); ++i)
- if (poll_fd[i].revents != 0)
- {
- unsigned char sig = 0;
- unsigned int length = 0;
- do
- {
- errno = 0;
- length = read(poll_fd[i].fd, &sig, sizeof(unsigned char));
- }
- while (errno == 4);
- if (errno)
- {
- perror("");
- exit(errno);
- }
- if (length == 0)
- remove_client(poll_fd[i].fd);
- else
- if (sig == 42)
- {
- list_fd.push_back(poll_fd[i].fd);
- std::cout << "Reception signal sur le file descriptor :"
- << poll_fd[i].fd << std::endl;
- }
- else
- {
- std::cout << "Erreur de reception sur le file descriptor :"
- << poll_fd[i].fd << std::endl;
- exit(2);
- }
- poll_fd[i].revents = 0;
- }
- }
-
- void send_signal(const int& fd)
- {
- unsigned char sig = 42;
- write(fd, &sig, sizeof(unsigned char));
- }
-
- void start_signal()
- {
- struct sigaction alarm;
-
- alarm.sa_handler = signal_alarm;
- alarm.sa_flags = 0;
- sigemptyset(&(alarm.sa_mask));
- sigaddset(&(alarm.sa_mask), SIGALRM);
- sigaction(SIGALRM, &alarm, 0);
- ualarm(1, 100000);
- }
-
- template<class TYPEDATA>
- void send_data(const int& fd, const Data<TYPEDATA>& data)
- {
- data.send(fd);
- }
-
- template<class TYPEDATA>
- void send_data(const Data<TYPEDATA>& data,
- const std::list<int>& fd_client)
- {
- std::list<int>::const_iterator fd = fd_client.begin();
- for (; fd != fd_client.end(); ++fd)
- data.send(*fd);
- }
-
- template<class TYPEDATA>
- void received_data(Data<TYPEDATA>& data, const std::list<int>& fd_client)
- {
- std::list<int>::const_iterator fd = fd_client.begin();
- for (; fd != fd_client.end(); ++fd)
- data.receive(*fd);
- }
-
- void accept_client(const int& fd)
- {
- std::cout << "Client connected on file descriptor: " << fd << std::endl;
- _fd_client->push_back(fd);
- }
-
- int get_fd() const { return (_fd); }
-
- int get_port() const { return (_port); }
-
- std::list<int>* get_list_fd() const { return (_fd_client); }
-
- unsigned int get_nb_client() const { return (_fd_client->size()); }
-
-private:
- std::list<int> *_fd_client;
- struct sockaddr_in *_sock_in;
- int _port;
- unsigned int _client_max;
- int _fd;
-};
-
-#endif // SERVER_HH_
diff --git a/tags/START/glagen/algo_distribue/network/data/Data.cc b/tags/START/glagen/algo_distribue/network/data/Data.cc
deleted file mode 100644
index d3bbe6a..0000000
--- a/tags/START/glagen/algo_distribue/network/data/Data.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data.hh"
diff --git a/tags/START/glagen/algo_distribue/network/data/Data.hh b/tags/START/glagen/algo_distribue/network/data/Data.hh
deleted file mode 100644
index 3b630ff..0000000
--- a/tags/START/glagen/algo_distribue/network/data/Data.hh
+++ /dev/null
@@ -1,78 +0,0 @@
-// Classe Data
-
-// Dans le TYPEDATA, il faut l'implementation de toString (retourne un string)
-// et de type (retourne unsigned short int)
-
-// Type 0: char
-// Type 1: unsigned char
-// Type 2: int
-// Type 3: unsigned int
-// Type 4: short int
-// Type 5: unsigned short int
-// Type 6: long int
-// Type 7: unsigned long int
-// Type 8: float
-// Type 9: double
-// Type 10: long double
-
-#ifndef DATA_HH_
-# define DATA_HH_
-
-#include <list>
-#include <iostream>
-#include <stdio.h>
-
-#include <errno.h>
-
-template<class TYPEDATA> class Data
-{
-public:
- Data() : _data(new std::list<TYPEDATA>) {};
-
- Data(std::list<TYPEDATA>* data) : _data(data) {};
-
- void error()
- {
- perror("");
- exit(errno);
- }
-
- void add_data(const TYPEDATA& data) { _data->push_back(data); };
-
- void send(const int& fd) const
- {
- std::list<TYPEDATA>::iterator data = _data->begin();
- unsigned int size = _data->size();
- std::cout << "Taille a ecrire:" << size << std::endl;
- write(fd, &size, sizeof(unsigned int));
- for (; data != _data->end(); ++data)
- data->write_data(fd);
- }
-
- void receive(const int& fd)
- {
- unsigned int size = 0;
- do
- {
- errno = 0;
- read(fd, &size, sizeof(unsigned int));
- }
- while(errno == 4);
- if (errno)
- this->error();
- std::cout << "Taille lu: " << size << std::endl;
- TYPEDATA data;
- for (unsigned int i = 0; i < size; ++i)
- {
- data.read_data(fd);
- _data->push_back(data);
- }
- }
-
- std::list<TYPEDATA>* get_data() { return (_data); }
-
-private:
- std::list<TYPEDATA>* _data;
-};
-
-#endif // DATA_HH_
diff --git a/tags/START/glagen/algo_distribue/network/data/Data_exemple.cc b/tags/START/glagen/algo_distribue/network/data/Data_exemple.cc
deleted file mode 100644
index 9578493..0000000
--- a/tags/START/glagen/algo_distribue/network/data/Data_exemple.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data_exemple.hh"
diff --git a/tags/START/glagen/algo_distribue/network/data/Data_exemple.hh b/tags/START/glagen/algo_distribue/network/data/Data_exemple.hh
deleted file mode 100644
index ca1291b..0000000
--- a/tags/START/glagen/algo_distribue/network/data/Data_exemple.hh
+++ /dev/null
@@ -1,66 +0,0 @@
-// Classe Data_exemple
-
-// Un exemple sur un point de coordonnees 3D
-
-#ifndef DATA_EXEMPLE_HH_
-# define DATA_EXEMPLE_HH_
-
-#include <iostream>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-class Data_exemple
-{
-public:
- Data_exemple() : _x(0), _y(0), _z(0) {};
- Data_exemple(int x, int y, int z) : _x(x), _y(y), _z(z) {};
-
- void write_data(const int& fd) const
- {
- std::cout << "Donnees envoyes au serveur" << std::endl;
- std::cout << _x << std::endl;
- std::cout << _y << std::endl;
- std::cout << _z << std::endl;
- write(fd, &_x, sizeof(int));
- write(fd, &_y, sizeof(int));
- write(fd, &_z, sizeof(int));
- }
-
- void read_data(const int& fd)
- {
- do
- {
- errno = 0;
- read(fd, &_x, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, &_y, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, &_z, sizeof(int));
- }
- while (errno == 4);
-
- std::cout << "Reception message sur le file descriptor :" << fd
- << std::endl;
- std::cout << _x << std::endl;
- std::cout << _y << std::endl;
- std::cout << _z << std::endl;
- }
-
-private:
- int _x;
- int _y;
- int _z;
-};
-
-#endif // DATA_EXEMPLE
diff --git a/tags/START/glagen/algo_distribue/network/data/Data_string.cc b/tags/START/glagen/algo_distribue/network/data/Data_string.cc
deleted file mode 100644
index 9578493..0000000
--- a/tags/START/glagen/algo_distribue/network/data/Data_string.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data_exemple.hh"
diff --git a/tags/START/glagen/algo_distribue/network/data/Data_string.hh b/tags/START/glagen/algo_distribue/network/data/Data_string.hh
deleted file mode 100644
index a395725..0000000
--- a/tags/START/glagen/algo_distribue/network/data/Data_string.hh
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef DATA_STRING_HH_
-# define DATA_STRING_HH_
-
-#include <iostream>
-#include <string>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-class Data_string
-{
-public:
- Data_string() : _str("") {};
- Data_string(const string& str) : _str(str) {};
-
- void write_data(const int& fd) const
- {
-
- std::cout << "Donnees envoyes" << std::endl << _str << std::endl;
- unsigned int size = _str.size();
- write(fd, &size, sizeof(unsigned int));
- for (unsigned int i = 0; i < size; ++i)
- {
- char car = _str[i];
- write(fd, &car, sizeof(char));
- }
- }
-
- void read_data(const int& fd)
- {
- unsigned int size = 0;
- do
- {
- errno = 0;
- read(fd, &size, sizeof(size));
- }
- while (errno == 4);
-
- _str = "";
- for (unsigned int i = 0; i < size; ++i)
- {
- char car;
- do
- {
- errno = 0;
- read(fd, &car, sizeof(char));
- }
- while (errno == 4);
- _str += car;
- }
-
- std::cout << "Reception message sur le file descriptor :" << fd
- << std::endl << _str << std::endl;
- }
-
-private:
- string _str;
-};
-
-#endif // DATA_STRING
diff --git a/tags/START/glagen/algo_distribue/network/main_client.cc b/tags/START/glagen/algo_distribue/network/main_client.cc
deleted file mode 100644
index 66cb083..0000000
--- a/tags/START/glagen/algo_distribue/network/main_client.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Main du client
-
-#include <unistd.h>
-#include <assert.h>
-#include "Client.hh"
-#include "data/Data_exemple.hh"
-#include "data/Data_string.hh"
-
-void help(char *prog_name)
-{
- std::cout << prog_name << " [hostname] [port]" << std::endl;
- exit(0);
-}
-
-void check_args(int argc, char **argv)
-{
- int current;
-
- if (argc != 3)
- {
- std::cerr << "Error client : Error parameters" << std::endl;
- help(argv[0]);
- }
- for (current = 0; argv[2][current] != '\0'; current++)
- if (argv[2][current] < '0' || argv[2][current] > '9')
- {
- std::cerr << "Error client : Error parameters" << std::endl;
- help(argv[0]);
- }
-}
-
-int main(int argc, char **argv)
-{
- check_args(argc, argv);
- Client client(argv[1], atoi(argv[2]));
-// Data<Data_exemple> data;
-// data.add_data(Data_exemple(10, 11, 13));
-// data.add_data(Data_exemple(1, 4, 81));
- client.wait_signal();
-// client.send_signal();
-// client.send_data(data);
-
-// Data<Data_string> data_string;
-// client.received_data(data_string);
-
- // On devrait implementer un numero a chaque classe associe
- // Je fais ca pour l'instant comme si on connait deja le type de classe
- // c'est juste pour tester
- Data<Data_string> data_string;
- client.received_data(data_string);
-
- while (0 == client.do_select());
- return (0);
-}
diff --git a/tags/START/glagen/algo_distribue/network/main_server.cc b/tags/START/glagen/algo_distribue/network/main_server.cc
deleted file mode 100644
index 4fafd09..0000000
--- a/tags/START/glagen/algo_distribue/network/main_server.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// Main du reseau server
-
-#include <assert.h>
-#include "Server.hh"
-#include "data/Data_exemple.hh"
-#include "data/Data_string.hh"
-
-char gl_handle;
-
-void help(char *prog_name)
-{
- std::cout << prog_name << " [port]" << std::endl;
- exit(0);
-}
-
-void signal_alarm(int)
-{
- gl_handle = gl_handle | 1;
-}
-
-void check_args(int argc, char *argv1, char *argv2)
-{
- int current;
-
- if (argc != 2)
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
- for (current = 0; argv2[current] != '\0'; current++)
- if (argv2[current] < '0' || argv2[current] > '9')
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
-}
-
-int main(int argc, char* argv[])
-{
-// int fd_client;
-// socklen_t len;
-// struct sockaddr_in sock_client;
-
-// len = sizeof (struct sockaddr_in);
- check_args(argc, argv[0], argv[1]);
- Server server(atoi(argv[1]), 3);
- server.get_list_fd();
-// server.start_signal();
-// while (gl_handle != -1)
-// {
-// fd_client = 0;
-// if ((fd_client = accept(server.get_fd(),
-// (struct sockaddr *)&(sock_client), &len)) > 0)
-// gl_handle = gl_handle | 2;
-// std::list<int> list_fd;
-// if (2 == (gl_handle & 2))
-// {
-// server.accept_client(fd_client);
-// server.send_signal(fd_client);
-// }
-// Data<Data_exemple> data;
-// server.wait_signal(list_fd);
-// server.received_data(data, list_fd);
-
-// Data<Data_string> data_string;
-// Data_string ack("Aknowledge");
-// data_string.add_data(ack);
-// server.send_data(data_string, list_fd);
-
-// gl_handle = 0;
-// }
-// return (0);
-}
diff --git a/tags/START/glagen/algo_distribue/tools/matrix.cc b/tags/START/glagen/algo_distribue/tools/matrix.cc
deleted file mode 100644
index 7991769..0000000
--- a/tags/START/glagen/algo_distribue/tools/matrix.cc
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-#include "matrix.hh"
diff --git a/tags/START/glagen/algo_distribue/tools/matrix.hh b/tags/START/glagen/algo_distribue/tools/matrix.hh
deleted file mode 100644
index 4894360..0000000
--- a/tags/START/glagen/algo_distribue/tools/matrix.hh
+++ /dev/null
@@ -1,324 +0,0 @@
-// matrix.hh
-
-#include <iostream>
-
-#ifndef MATRIX_HH_
-# define MATRIX_HH_
-
-// la class TYPE ne peut etre que de type nombre (ex: double, int, long,...)
-
-template <class TYPE> class Matrix
-{
-public:
- // Constructor
- Matrix(const unsigned int i, const unsigned int j)
- {
- this->_i = i;
- this->_j = j;
- this->_lines = new _line[i]; // Create lines...
- for (unsigned int k = 0; k < i; ++k)
- this->_lines[k] = new TYPE[j]; // ...and create column
- for (unsigned int k = 0; k < i; ++k)
- for (unsigned int l = 0; l < j; ++l)
- this->_lines[k][l] = 0;
- }
-
- // Constructor by copy
- Matrix(const Matrix& mat)
- {
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i];
- for (unsigned int k = 0; k < this->_i; ++k)
- {
- this->_lines[k] = new TYPE[this->_j];
- for (unsigned int l = 0; l < this->_j; ++l)
- this->_lines[k][l] = mat._lines[k][l];
- }
- }
-
- // Destructor
- ~Matrix()
- {
- if (this->_i != 0 || this->_j != 0)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- delete [] this->_lines[i];
- delete [] this->_lines;
- }
- }
-
- // Affected operator
- Matrix& operator=(const Matrix& mat)
- {
- if (&mat != this)
- {
- if (mat._i != this->_i || mat._j != this->_j) // Test dim
- {
- this->~Matrix(); // Destroy...
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i]; // ...and realloc
- for (unsigned int i = 0; i < this->_i; ++i)
- this->_lines[i] = new TYPE[this->_j];
- }
- for (unsigned int i = 0; i < this->_i; ++i) // Copy
- for (unsigned int j = 0; j < this->_j; ++j)
- this->_lines[i][j] = mat._lines[i][j];
- }
- return (*this);
- }
-
- // Add elements to matrix
- Matrix& add_elems(const int& nb)
- {
- Matrix mat(this->_i + nb, this->_j + nb);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat(i, j) = this->_lines[i][j];
- *this = mat;
- return (*this);
- }
-
- // Add matrix to matrix
- Matrix& add_mat(const Matrix& mat)
- {
- unsigned int i = this->_i;
- unsigned int j = this->_j;
- this->add_elems(mat._i);
- for (unsigned int k = i; k < this->_i; k++)
- for (unsigned int l = j; l < this->_j; l++)
- this->_lines[k][l] = mat(k - i, l - j);
- return (*this);
- }
-
- // Add of matrix
- Matrix operator+(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator+(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Sub matrix
- Matrix operator-(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator-(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != this->_j || this->_i != mat._i || mat._i != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Multiplication of matrix
- Matrix operator*(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_j != mat._i) // Check dimension
- {
- std::cerr << "Error of produce of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < mat._j; ++j)
- {
- TYPE res = 0;
- // Produce lines and column of matrix
- for (unsigned int k = 0; k < this->_j; ++k)
- res += this->_lines[i][k] * mat._lines[k][j];
- mat_tmp._lines[i][j] = res;
- }
- }
- return (mat_tmp);
- }
-
- // Multiplication with real
- Matrix& operator*(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] *= nbr;
- }
- return (*this);
- }
-
- // Divide with real
- Matrix& operator/(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] /= nbr;
- }
- return (*this);
- }
-
- //Get dimension of matrix
- const int get_dim() const
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give dimension" << std::endl;
- return (0);
- }
- return (this->_i);
- }
-
- // Operator to change mat(i, j)
- // to can write mat(i, j) = ...
- TYPE& operator()(unsigned int i, unsigned int j)
- {
- return (this->_lines[i][j]);
- }
-
- // Operator to access mat(i, j)
- // to can write int x = mat(i, j)
- TYPE operator()(unsigned int i, unsigned int j) const
- {
- return (this->_lines[i][j]);
- }
-
- // Test matrix nul
- const bool test_nul() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- if (this->_lines[i][j] != 0)
- return (0);
- return (1);
- }
-
- // Test diagonal matrix nul
- const int test_diag() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0)
- return (i);
- return (-1);
- }
-
- // Test diagonal matrix nul with element
- const int test_diag(const unsigned int& j) const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0 && i == j)
- return (i);
- return (-1);
- }
-
- // Calculate trace
- const TYPE trace() const
- {
- TYPE res = 0;
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give trace" << std::endl;
- return (0);
- }
- for (unsigned int i = 0; i < this->_i; i++)
- res += this->_lines[i][i];
- return (res);
- }
-
- // Transpose
- Matrix& transpose()
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot transpose" << std::endl;
- return (*this);
- }
- TYPE tmp = 0;
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < i; j++)
- {
- tmp = this->_lines[i][j];
- this->_lines[i][j] = this->_lines[j][i];
- this->_lines[j][i] = tmp;
- }
- return (*this);
- }
-
- Matrix transpose() const
- {
- Matrix mat(this->_j, this->_i);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat._lines[i][j] = this->_lines[j][i];
- return (mat);
- }
-
- // Display matrix
- void print(std::ostream &os) const
- {
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < this->_j; ++j)
- os << this->_lines[i][j] << " ";
- os << std::endl;
- }
- }
-
-protected:
- typedef TYPE* _line;
- _line* _lines;
- unsigned int _i; // Number of lines
- unsigned int _j; // Number of column
-};
-
-template <class TYPE>
-inline std::ostream& operator<<(std::ostream& ostr, const Matrix<TYPE>& stream)
-{
- stream.print(ostr);
- return (ostr);
-}
-
-
-#endif // MATRIX_HH
diff --git a/tags/START/glagen/algo_distribue/tree/Makefile b/tags/START/glagen/algo_distribue/tree/Makefile
deleted file mode 100644
index 895117b..0000000
--- a/tags/START/glagen/algo_distribue/tree/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-##
-## Makefile for in
-##
-## Made by meng-tih lam
-## Login <lam_m@epita.fr>
-##
-## Started on Thu Feb 7 19:08:57 2002 meng-tih lam
-
-##
-
-NAME = glagen_tree
-SRCS = node.cc tree.cc main.cc
-
-OBJS = $(SRCS:.cc=.o)
-
-ARCHI_i586 = -g2 -Wall -W -Werror -O3
-ARCHI_NetBSD = -g2 -Wall -W -Werror -O3 -I/usr/X11R6/include
-ARCHI_sun4 = -g2 -Wall -W -Werror -O3
-ARCHI_alpha = -g2 -Wall -W -Werror -O3
-
-LIB_i586 =
-LIB_NetBSD = -L/usr/pkg/lib -L/usr/X11R6/lib -lGL -lGLU -lglut
-LIB_alpha =
-LIB_sun4 =
-
-CPPFLAGS = -I.
-CC = g++
-RM = rm -f
-
-.PHONY: all clean deps
-
-all: $(OBJS)
- $(CC) -o $(NAME) $(CFLAGS) $(OBJS)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-.cc.o:
- $(CC) $(ARCHI_${HOSTTYPE}) $(CPPFLAGS) -c $<
-
-clean:
- $(RM) $(OBJS) $(NAME) *~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/tags/START/glagen/algo_distribue/tree/main.cc b/tags/START/glagen/algo_distribue/tree/main.cc
deleted file mode 100644
index 3b6f02d..0000000
--- a/tags/START/glagen/algo_distribue/tree/main.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// main.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:41:45 2002 meng-tih lam
-//
-
-#include <iostream>
-#include <list>
-#include <string>
-
-#include "node.hh"
-#include "tree.hh"
-
-// Pour construire un arbre, il faut d'abord faire les fils
-// et les raccoller avec le pere avec la methode add_tree
-
-int test_tree()
-{
- // ** Exemple avec la classe <string> **
- // ** On peut mettre n'importe classe **
-
- // * Support du sous-arbre *
- string root = "Connection...";
- string a = "Est-ce que ca fonctionne ?";
- string b = "1212123";
- string c = "OK recu 5/5";
- Tree<string> tree(root);
- tree.add_node(a);
- tree.add_node(b);
- tree.add_node(c);
-
- // Affichage root de l'arbre
- std::cout << "root: " << tree.get_node_root().get_data() << std::endl;
-
- // Affichage de ses fils
- unsigned int nb_childs = tree.get_nb_childs();
- for (unsigned int i = 0; i < nb_childs; ++i)
- std::cout << tree.get_child(i).get_data() << std::endl;
- std::cout << std::endl << std::endl;
-
-
-
- // * Support Arbre principale *
- Tree<string> main_tree("Execution...");
-
- // Voici la methode pour lier un arbre et un sous-arbre
- main_tree.add_tree(tree);
-
- std::cout << "root main: " << main_tree.get_node_root().get_data()
- << std::endl;
- unsigned int nb_childs2 = main_tree.get_nb_childs();
-
- // Ici arbre sur 2 niveaux (Bien sur qu'on peut faire en recursivite ^_^)
- for (unsigned int i = 0; i < nb_childs2; ++i)
- {
- nb_childs = main_tree.get_child(i).get_nb_childs();
- std::cout << main_tree.get_child(i).get_data() << std::endl;
- for (unsigned int j = 0; j < nb_childs; ++j)
- std::cout << main_tree.get_child(i).get_child(j).get_data()
- << std::endl;
- }
- std::cout << std::endl << std::endl;
-
-
-
-
- // * Allez on rajoute pour compliquer les choses *
- Tree<string> tree2("Une tentative de suicide");
- tree2.add_node("Ou ca?");
- tree2.add_node("A Epita");
- tree2.add_node("Ping pong ping");
- main_tree.add_tree(tree2);
-
- std::cout << "root main: " << main_tree.get_node_root().get_data()
- << std::endl;
- nb_childs2 = main_tree.get_nb_childs();
-
- // Ici arbre sur 2 niveaux (Bien sur qu'on peut faire en recursivite ^_^)
- for (unsigned int i = 0; i < nb_childs2; ++i)
- {
- nb_childs = main_tree.get_child(i).get_nb_childs();
- std::cout << main_tree.get_child(i).get_data() << std::endl;
- for (unsigned int j = 0; j < nb_childs; ++j)
- std::cout << main_tree.get_child(i).get_child(j).get_data()
- << std::endl;
- }
-
- return (0);
-}
-
-
-int main()
-{
- test_tree();
- return (0);
-}
diff --git a/tags/START/glagen/algo_distribue/tree/node.cc b/tags/START/glagen/algo_distribue/tree/node.cc
deleted file mode 100644
index a3ae387..0000000
--- a/tags/START/glagen/algo_distribue/tree/node.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// node.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:40:40 2002 meng-tih lam
-// Last update Fri Aug 16 02:41:05 2002 meng-tih lam
-//
-
-#include "node.hh"
diff --git a/tags/START/glagen/algo_distribue/tree/node.hh b/tags/START/glagen/algo_distribue/tree/node.hh
deleted file mode 100644
index b80a699..0000000
--- a/tags/START/glagen/algo_distribue/tree/node.hh
+++ /dev/null
@@ -1,78 +0,0 @@
-
-#ifndef NODE_HH_
-# define NODE_HH_
-
-#include <list>
-// Rajouter l'include correspondant a la template de TYPENODE
-// + implemente le std::cout abtrait pour les tests
-
-template<class TYPENODE> class Tree; // Declaration prealable
-
-template<class TYPENODE> class Node
-{
- friend class Tree<TYPENODE>;
-
-public:
- Node(const TYPENODE &d) : _link(new std::list<Node>), _data(d) {}
-
- void add_child(const TYPENODE& value) { _link->push_back(Node(value)); }
-
- void add_tree_node(const Node& value) { _link->push_back(value); }
-
- TYPENODE get_data() const { return (_data); }
-
- const unsigned int get_nb_childs() const { return (_link->size()); }
-
- std::list<Node>* get_childs() const { return (_link); }
-
- unsigned int get_number_node() const
- {
- unsigned int number_childs = _link->size();
- std::list<Node>::const_iterator child = _link->begin();
- unsigned int number_node = 1;
- for (unsigned int tmp = 0; tmp != number_childs; ++tmp)
- {
- number_node += child->get_number_node();
- ++child;
- }
- return (number_node);
- }
-
- // Renvoie le noeud fils suivant le numero a partir de 0
- Node get_child(const unsigned int& i) const
- {
- assert(i < _link->size());
- std::list<Node>::const_iterator child = _link->begin();
- for (unsigned int tmp = 0; tmp != i; ++tmp)
- ++child;
- return (*child);
- }
-
- // Numerotation de l'arbre suivant un parcours en largeur de 0 a n
- Node get_node_course_width(const int& ptr) const
- {
- int rptr = ptr;
- std::list<Node> ptr_node = *new std::list<Node>;
- ptr_node.push_back(*this);
- while (ptr_node.size())
- {
- std::list<Node>::iterator childs = ptr_node.begin();
- std::list<Node>::iterator child = childs->get_childs()->begin();
- for (; child != childs->get_childs()->end(); ++child)
- {
- ptr_node.push_back(*child);
- if (--rptr == 0)
- return (*child);
- }
- ptr_node.pop_front();
- }
- return (*this);
- }
-
-private:
-
- std::list<Node> *_link; // Pointeur vers le sous-arbre
- TYPENODE _data;
-};
-
-#endif // NODE_HH_
diff --git a/tags/START/glagen/algo_distribue/tree/tree.cc b/tags/START/glagen/algo_distribue/tree/tree.cc
deleted file mode 100644
index 047ca89..0000000
--- a/tags/START/glagen/algo_distribue/tree/tree.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// tree.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:45:56 2002 meng-tih lam
-// Last update Fri Aug 16 17:11:24 2002 meng-tih lam
-//
-
-#include "tree.hh"
diff --git a/tags/START/glagen/algo_distribue/tree/tree.hh b/tags/START/glagen/algo_distribue/tree/tree.hh
deleted file mode 100644
index 86ce136..0000000
--- a/tags/START/glagen/algo_distribue/tree/tree.hh
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-#ifndef TREE_HH_
-# define TREE_HH_
-
-#include <list>
-#include <assert.h>
-#include "node.hh"
-// Rajouter l'include correspondant a la template de TYPENODE
-// + implemente le std::cout abstrait pour les tests
-
-template<class TYPENODE> class Tree
-{
-public:
- // Construit la racine de l'arbre avec l'info dans son contenu
- Tree(const TYPENODE& value) : _root(new Node<TYPENODE>(value)) {}
-
- Tree(const Tree<TYPENODE>& value) : _root(value._root) {}
-
- // Ajoute un noeud fils (avec info) a l'arbre
- void add_node(const TYPENODE& value) { _root->add_child(value); }
-
- // Renvoie la racine de l'arbre de type Node
- Node<TYPENODE>& get_node_root() const { return (*_root); }
-
- // Ajoute un autre arbre a la racine de l'arbre courant
- void add_tree(const Tree &value)
- {
- _root->add_tree_node(value.get_node_root());
- }
-
- // Renvoie la liste de Node de ses fils
- std::list< Node<TYPENODE> >& get_childs() { return _root->get_childs(); }
-
- // Information du nombre de fils
- const unsigned int get_nb_childs() const
- {
- return (_root->get_nb_childs());
- }
-
- // Renvoie le noeud fils suivant le numero a partir de 0
- Node<TYPENODE> get_child(const unsigned int& i) const
- {
- return (_root->get_child(i));
- }
-
-private:
- Node<TYPENODE> *_root;
-};
-
-#endif // TREE_HH_
diff --git a/tags/START/glagen/dll/.emacs.desktop b/tags/START/glagen/dll/.emacs.desktop
deleted file mode 100644
index 5c1f534..0000000
--- a/tags/START/glagen/dll/.emacs.desktop
+++ /dev/null
@@ -1,93 +0,0 @@
-;; -*- coding: emacs-mule; -*-
-;; --------------------------------------------------------------------------
-;; Desktop File for Emacs
-;; --------------------------------------------------------------------------
-;; Created Mon Sep 23 16:32:32 2002
-;; Emacs version 21.2.1
-
-;; Global section:
-(setq desktop-missing-file-warning nil)
-(setq tags-file-name nil)
-(setq tags-table-list nil)
-(setq search-ring '("glg_i" "GLG_i" "pallo" "exit" "return" "size" "###" "disp" "disp " "const" "getL" "GL_" "emacs"))
-(setq regexp-search-ring nil)
-(setq register-alist nil)
-
-;; Buffer section:
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/.mylogin"
- ".mylogin"
- 'fundamental-mode
- nil
- 457
- '(429 nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/classes/matrix.hh"
- "matrix.hh"
- 'c++-mode
- '(abbrev-mode)
- 513
- '(nil nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/3d/data_glagen.hh"
- "data_glagen.hh"
- 'c++-mode
- '(abbrev-mode)
- 1629
- '(1540 t)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/Makefile"
- "Makefile"
- 'makefile-mode
- nil
- 447
- '(nil nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/libraryloader.cc"
- "libraryloader.cc"
- 'c++-mode
- '(abbrev-mode)
- 8093
- '(3155 nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/rapport+hiegel_h+EN.txt"
- "rapport+hiegel_h+EN.txt"
- 'text-mode
- '(auto-fill-mode)
- 418
- '(nil nil)
- nil
- nil
- nil)
-
-(desktop-create-buffer 205
- "/u/a2/hiegel_h/projects/glagen/dll/classes/libclass.cc"
- "libclass.cc"
- 'c++-mode
- '(abbrev-mode)
- 1095
- '(1 nil)
- nil
- nil
- nil)
-
diff --git a/tags/START/glagen/dll/MANUAL b/tags/START/glagen/dll/MANUAL
deleted file mode 100644
index 5e7cfa0..0000000
--- a/tags/START/glagen/dll/MANUAL
+++ /dev/null
@@ -1,138 +0,0 @@
-
- =============================
- Dynamic Library Loader Module
- =============================
- GLAGEN - 2002 - Hugues HIEGEL
-
-
-
-
- I. What is it ?
-
-
-The Dynamic Library Loader Module (DLL Module) is part of the GLAGEN
-Engine. It goals is to provide to the end-user a flexible usage of
-external C/C++ libraries (*.so) .
-
-At this time, only C++ libraries are supported, because the main DLL
-Module is already written in C++. It should be easy to allow C-written
-libraries, but du to a lack of time, it should appear.. later.
-
-
-
- II. How does it work ?
-
-
-The DLL Engine reads all libraries, especially their Names and
-Dependancies, and then builds a dependancies tree. This last would be
-used by the Network module (written by lam_m), and should determine in
-which order each library would be executed in the main loop.
-For example:
-
- library A needs nobody, alike library B. Libraries AC and AD needs
- A, BE and BF need B, ACG needs AC and BFH needs BF.
- We would obtain such a tree:
-
- (root)
- \__________________
- | |
- A B
- \_______ \_____
- | | | |
- AC AD BE BF
- \_ \_
- | |
- ACG BFH
-
-
- Then the execution order would be done in such an order, reading
- the tree top-bottom and left-right:
- A-AC-ACG-AD-B-BE-BF-BFH
-
- Like that, we are certain that any library would be able to read
- the results of one of its dependancies.
-
-I did a Library class that contains a lot of infos about each
-library.so. For each library file, I effectively create a new Library
-instance, and initialize it by opening the library, ang trying to get
-infos using dlsym and some canonical symbols (See section above for
-more info about libraries' symbols). If the library do answer to the
-required ones, then it is stored, else it is immediately closed and
-forgotten.
-
-Along the program, we will mainly work with list of Libraries, for
-this class is our swiss tool.
-
-
-
- III. The Library class
-
-
-You should find prototypes & declarations in the
-./dll/classes/libclass.hh file and definitions & implementations in
-the ./dll/classes/libclass.cc file in the root of the glagen devel
-directory.
-
-The Library class mainly consists of:
-
- a Filename string,
- a handler void pointer,
- and some important methods.
-
-I'll explain each method.
-
-III.1 Methods
-
- III.1a Library(), Library(string Filename)
-These are the creators. They only create a new class.
-The one with the string also initializes the Filename property to the
-given value.
-
- III.1b ~Library()
-The destructor.
-It cleans the Library class, although it is not really necessary in
-the measure we work on variables (not pointers),
-
- III.1c LoadLib(), LoadLib(string Filename)
-This is one of the most important methods. It opens the file, tries to
-obtain an handler and if succeed, stores this handler in the correct
-property.
-Then we call, if found, the GLG_Hello() symbol, in which the
-devel-user should output some text in cout.. As he feels it.
-It would be called once during the whole glagen process' life.
-(Maybe two if using the network).
-This method is used to obtain infos such as Library name and
-dependancies, in order to sort it and check that no dependancy is
-missing. Elsewhere, it would tell you the name of missing libraries
-and ignore this one. And continue with next library.
-
- III.1d Initialize()
-The great one. This method would be called once in the loading process
-to calculate data size on the server, and then another time once
-loaded in a client, to preserve an area in the data memory.
-In this method, we would ask the user library to make as many palloc()
-as it wants, each palloc, in the order, being allocating some data
-memory.
-For example:
-
- Library Foo needs to use and/or share three sorts of data in the
- whole glagen process, for example a surface information, a color
- one and the age of the captain.
- Foo should have a GLG_Init() function like this :
-
- GLG_Init(...)
- {
- ...
- palloc(surface, ...);
- palloc(color, ...);
- palloc(captainage, ...);
- ...
- }
-
- The library class linked with this library would then ask the
- server for some memory rooms, and then stores three (because of
- the three palloc()) keys in some deep owned property.
- During the main loop, the library should only ask to read or
- write its third room to obtain or modify the captainage.
-
- III.1e
diff --git a/tags/START/glagen/dll/Makefile b/tags/START/glagen/dll/Makefile
deleted file mode 100644
index b3db10d..0000000
--- a/tags/START/glagen/dll/Makefile
+++ /dev/null
@@ -1,72 +0,0 @@
-################################################################
-# GLAGEN Project (http://www.planetmarvin.zyns.com/) #
-# Makefile done by Titi <Meng-Tih LAM> #
-# i686 specifications added by Onidwa <Hugues HIEGEL> #
-################################################################
-
-CC = g++
-RM = rm -fr
-
-NAME = glagen-$(MODULE)-$(VERSION).$(SUBVERSION)
-MODULE = libloader
-VERSION = 2
-SUBVERSION = 01b
-
-KERNEL = `uname -s`
-
-DEBUG =
-
-OBJS = $(SRCS:.cc=.o)
-HDRS = $(SRCS:.cc=.hh)
-SRCS = classes/libclass.cc\
- classes/matrix.cc\
- classes/node.cc\
- classes/Data_string.cc\
- classes/Data_property.cc\
- create_dotproperty_init.cc\
- libraryloader.cc\
- main.cc
-
-ARCHI_NetBSD = $(DEBUG) -g2 -Wall -W -O3
-CPP_NetBSD = -I/usr/include\
- -I/usr/include/GL\
- -I/usr/X11R6/include
-LIB_NetBSD = -L/usr/X11R6/lib\
- -L/usr/lib\
- -L/usr/pkg/lib\
- -lc\
- -lm\
- -lX11\
- -lGL\
- -lGLU\
- -lglut
-
-ARCHI_Linux = $(DEBUG) -g2 -O3 -I/usr/X11R6/include
-LIB_Linux = -L/usr/X11R6/lib\
- -L/usr/include\
- -L/usr/lib\
- -L/usr/pkg/lib\
- -lc\
- -lm\
- -lX11\
- -lGL\
- -lGLU\
- -lglut
-CPP_Linux = -I.\
- -I/usr/include
-
-.PHONY: all clean deps
-
-all: $(OBJS)
- $(CC) -o $(NAME) $(CPP_Linux) $(OBJS) $(LIB_Linux) $(ARCHI_Linux)
-
-.cc.o:
- $(CC) $(ARCHI_Linux) $(CPP_Linux) -c $< -o $(<:.cc=.o)
-
-clean:
- $(RM) $(OBJS) $(NAME) *~ */*~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/tags/START/glagen/dll/NOTES b/tags/START/glagen/dll/NOTES
deleted file mode 100644
index 19b48fa..0000000
--- a/tags/START/glagen/dll/NOTES
+++ /dev/null
@@ -1,13 +0,0 @@
-
-Parcours de la matrice d'adjacence,
-a chaque fois que je tombe sur un noeud
-de dependance, j'ajoute un fils et je
-mets cette dependance a zero.
-
-Je continue jusqu'a ce que tout le monde ait
-0 dependances (matriciellement parlant)
-
-Probleme...
-
-Des dependances croisees, en dehors de la matrice..
-On va dire que pour le moment, on s'en fout.
diff --git a/tags/START/glagen/dll/README b/tags/START/glagen/dll/README
deleted file mode 100644
index 36d270e..0000000
--- a/tags/START/glagen/dll/README
+++ /dev/null
@@ -1,237 +0,0 @@
-
- =============================
- Dynamic Library Loader Module
- =============================
- GLAGEN - 2002 - Hugues HIEGEL
-
-
-
-
- I. What is it ?
-
-
-The Dynamic Library Loader Module (DLL Module) is part of the GLAGEN
-Engine. It goals is to provide to the end-user a flexible usage of
-external C/C++ libraries (*.so) .
-
-At this time, only C++ libraries are supported, because the main DLL
-Module is already written in C++. It should be easy to allow C-written
-libraries, but du to a lack of time, it should appear.. later.
-
-
- II. How does it work ?
-
-
-The DLL Engine reads all libraries, especially their Names and
-Dependancies, and then builds a dependancies tree. This last would be
-used by the Network module (written by lam_m), and should determine in
-which order each library would be executed in the main loop.
-For example:
-
- library A needs nobody, alike library B. Libraries AC and AD needs
- A, BE and BF need B, ACG needs AC and BFH needs BF.
- We would obtain such a tree:
-
- (root)
- \__________________
- | |
- A B
- \_______ \_____
- | | | |
- AC AD BE BF
- \_ \_
- | |
- ACG BFH
-
-
- Then the execution order would be done in such an order, reading
- the tree top-to-bottom, then left-to-right:
- A-AC-ACG-AD-B-BE-BF-BFH
-
- Like that, we are certain that any library would be able to read
- the results of one of its dependancies.
-
-I did a Library class that contains a lot of infos about each
-library.so. For each library file, I effectively create a new Library
-instance, and initialize it by opening the library, ang trying to get
-infos using dlsym and some canonical symbols (See section above for
-more info about libraries' symbols). If the library do answer to the
-required ones, then it is stored, else it is immediately closed and
-forgotten.
-
-Along the program, we will mainly work with list of Libraries, for
-this class is our swiss tool.
-
-
-
- III. The Library class
-
-In this section, I will explain the main characteristics of this class
-and the method used.
-
- III.0 Hello, Bye
-
-First of all, we allow the user to make two functions in its library :
-GLG_Hello and GLG_Bye, in which he could put an hello and bye message
-to the standard out. For example. He also could wathever he wants in
-them, but no initialisation. These would be desribed in the next
-chapter. Hello and Bye are there just to give flexibility and a bit of
-fun.
-
- III.1 Initialisation
-
-Creating a new Library class and Loading it consists in giving a
-library filename, trying to open it, then trying to obtain a DL
-handler.
-If a handler is obtained, we load some Symbols to check if it is
-a real GLAGEN library : the .so must return a name as a string in
-respond to the call at GLG_Name(). Then we try to get its dependancies.
-These infos are finally used to generate the dependances tree ahead.
-The dependancies are given under a list of string, that make the
-treatment easier.
-
-Each library is allowed to use as many properties it wants for every
-3d engine's dot. Each dot has a list of properties, and this list is
-created by a recursive call of every library's GLG_Init symbol. Each
-library class associated with each library file retains for each
-property requested its position in the global list of properties.
-For example:
-
- Library Foo needs to use and/or share three sorts of data in the
- whole glagen process, for example a surface information, a color
- one and the age of the captain.
- Foo should have a GLG_Init() function like this :
-
- GLG_Init(...)
- {
- ...
- palloc(surface, ...);
- palloc(color, ...);
- palloc(captainage, ...);
- ...
- }
-
- The library class linked with this library would then ask the
- server for some memory rooms, and then stores three (because of
- the three palloc()) keys in some deep owned property.
- During the main loop, the library should only ask to read or
- write its third room to obtain or modify the captainage.
- It doesn't even know the captainage is really stored in some
- 42nd room in the whole 'memory'.
-
-palloc() is a function that calls itself a method of the current
-calling library, so this library can stores the global acces method on
-the local machine.
-For that, the initialize() method gives a pointer to (this) to the
-GLG_Init of the dll. Then this dll has nothing to do qith this
-pointer, just give it as a parameter to palloc(). This palloc(),
-defined out of the library class, calls then the REF->_palloc() method.
-I didn't found a simpliest method to do that, because I didn't want
-the dll developper hav to know anything about the Library class.
-If I forced him to call REF->_palloc() instead of palloc(REF), he
-would have to know the REF* prototype for its GLG_Init definition,
-then he would have to use the libraryclass header.
-My goal is to provide him a 'totally' independant code. So, I choose
-to make him take a void* REF in its GLG_Init(), and then give this
-void* REF to palloc, which takes it as a Libary*.
-See code for more details : ./dll/classes/libclass.hh and a sample
-library code.
-
-
- III.2 Global properties accesses
-
-Two functions allow libraries to access dots properties, in read or
-write mode.
-For example:
-
- Library17 has 3 dots properties, declared in order (the 1st in
- first place, the 2nd in second place and the 3rd in last).
- The library's user know what is the first property, what is the
- second, and what is the third. For example, he decides the first
- property is the color, the second the height, and
- god-know-whatever is the third. When he wants to access the color
- property, he would only call a GLG_read(2, ...) function.
- This function will then call a method of the current class to get
- the REAL position of this 2nd element in the whole list of
- properties, shared by many other libraries..
- And then, the access of the '2nd' element would be transparent to
- the user.
-
-There is also a GLG_write function based on same principle. They both
-looks like read and write standard C functions, which is absolutely
-natural.
-
-The main difficulty of these functions were that I didn't know in
-which level the efficient read and write should be done. In the
-library engine ? In which level ? Client-side ? Server-side ? If
-ti is in Client-side, how would the server know ? If it is in
-Server-side, how would the Client know ??
-
-So, we decided to keep one dot property tab in each computer (clients
-and server), make all inits, reads and writes in the local computer.
-A first initialisation is made in the server, to know the global size
-of a dot property tab. Then a second is done in each client, which
-returns to the server the total size found. Then the server knows what
-it will allocate for each client.
-Example:
-
- The server loads libraries A, AC and B. A needs 4 bytes, AC needs
- 3, and B needs 5. The server knows that A and AC will be sent to
- the client1. Then he allocates 4+3 then 7 bytes to client1, and
- the 5 last bytes to client2. Client1 receives A and AC, reads them
- and finds 7 bytes to allocate locally. Client2 will find 5 bytes
- to allocate locally. After each main loop, client1 will send its 7
- bytes to the server, who will put them in right place. Client2
- sends its 5 bytes, and the server puts them in back of the 7 first
- bytes.
-
-That is trivial. Although this is the network part, I did the routine
-to make that. The source code can be found in
-create_dotproperty_init.cc file. It has to be included in right place
-in the clients and server main functions.
-
-
- III.3 Main loop
-
-Not yet fully implemented.
-The main loop call is called GLG_Main, and would take as argument a
-Dot* pointer. Then the user has to include the dot.hh header, found in
-the 3d engine directory or in the ./classes folder.
-In this main loop, the user just has to read and write properties in
-the given Dot. The time and other dot-independant informations should
-be given in a method that has not really been specified at this time.
-The read function calls should be done specifiying a library name, and
-the result will be given only if the current library has read access
-to the given one. There, the dependancies takes all its meaning.
-But why would we do more processing by checking the permissions ? This
-permitts Glagen to be a clean processus.
-However, a library could read its dependancies properties and
-recursively the dependancies of its dependancies. That would look more
-natural in this way.
-Note that there are two 'system' properties, such as primary color and
-primary height of the dot. 'Primary', because one 'dot' should
-represent superposed surfaces' dots.
-Finally, some Perlin noise functions should have been given in this
-level, allowing the user to make realistic world renderings.
-Just see the sun example in our website to be convinced ;)
-
-
- IV. Conclusion
-
-This part is not yet finished, due to some difficulties to understand
-how would my module work in the global project. The mainloop call
-is not realy finished, but some minor changes have to be done.
-The main squeletton is already the module itself, so I am globally
-satisfied about my work, although I would be more satisfied if it were
-really included in the final project.
-Since it is under GPL, I would not abandon it. I spent too much time
-on it to give forfeit. Without the pressure of the school, I would
-certainly end my module and best it in great state of spirit.
-
-The main reason, I think, that I didn't finish my part in time, is
-that I spent to much time on making a clean code. A program that
-doesn't bug without reason. This is the most important to me.
-If I made a code in the only goal to make a finished product, I would
-certainly hav missed lots of bugs, and the final result code would
-have been so awful I would never continue it.
-did
diff --git a/tags/START/glagen/dll/classes/Data_property.cc b/tags/START/glagen/dll/classes/Data_property.cc
deleted file mode 100644
index 3be4b27..0000000
--- a/tags/START/glagen/dll/classes/Data_property.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// Data_property.cc for Glagen : made by Titi (Meng-tih LAM)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "Data_property.hh"
diff --git a/tags/START/glagen/dll/classes/Data_property.hh b/tags/START/glagen/dll/classes/Data_property.hh
deleted file mode 100644
index b4d0c4d..0000000
--- a/tags/START/glagen/dll/classes/Data_property.hh
+++ /dev/null
@@ -1,88 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// Data_property.hh for Glagen : made by Titi (Meng-tih LAM)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DATA_PROPERTY_HH_
-# define DATA_PROPERTY_HH_
-
-#include <iostream>
-#include <string>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-#include "../../3d/data_glagen.hh"
-
-class Data_property
-{
-public:
- Data_property() : _data(0), _size(0), _type(kind_lib_t(none)) {}
- Data_property(void* data, size_t size, kind_lib_t type)
- : _data(data),
- _size(size),
- _type(type)
- {}
-
- void write_data(const int& fd) const
- {
- write(fd, &_type, sizeof(int));
- write(fd, &_size, sizeof(int));
- write(fd, _data, _size * sizeof(void *));
- }
-
- void read_data(const int& fd)
- {
- do
- {
- errno = 0;
- read(fd, &_type, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, &_size, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, _data, _size * sizeof(void *));
- }
- while (errno == 4);
- }
-
-protected:
- void *_data;
- size_t _size;
- kind_lib_t _type;
-};
-
-#endif // DATA_PROPERTY_HH_
diff --git a/tags/START/glagen/dll/classes/Data_string.cc b/tags/START/glagen/dll/classes/Data_string.cc
deleted file mode 100644
index 49fe4ff..0000000
--- a/tags/START/glagen/dll/classes/Data_string.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data_string.hh"
diff --git a/tags/START/glagen/dll/classes/Data_string.hh b/tags/START/glagen/dll/classes/Data_string.hh
deleted file mode 100644
index a5f9131..0000000
--- a/tags/START/glagen/dll/classes/Data_string.hh
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef DATA_STRING_HH_
-# define DATA_STRING_HH_
-
-#include <iostream>
-#include <string>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-using namespace std;
-
-class Data_string
-{
-public:
- Data_string() : _str("") {};
- Data_string(const string& str) : _str(str) {};
-
- void write_data(const int& fd) const
- {
-
- std::cout << "Donnees envoyes" << std::endl << _str << std::endl;
- unsigned int size = _str.size();
- write(fd, &size, sizeof(unsigned int));
- for (unsigned int i = 0; i < size; ++i)
- {
- char car = _str[i];
- write(fd, &car, sizeof(char));
- }
- }
-
- void read_data(const int& fd)
- {
- unsigned int size = 0;
- do
- {
- errno = 0;
- read(fd, &size, sizeof(size));
- }
- while (errno == 4);
-
- _str = "";
- for (unsigned int i = 0; i < size; ++i)
- {
- char car;
- do
- {
- errno = 0;
- read(fd, &car, sizeof(char));
- }
- while (errno == 4);
- _str += car;
- }
-
- std::cout << "Reception message sur le file descriptor :" << fd
- << std::endl << _str << std::endl;
- }
-
-private:
- string _str;
-};
-
-#endif // DATA_STRING
diff --git a/tags/START/glagen/dll/classes/GLG-libraries-devel.cc b/tags/START/glagen/dll/classes/GLG-libraries-devel.cc
deleted file mode 100644
index 002d479..0000000
--- a/tags/START/glagen/dll/classes/GLG-libraries-devel.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// GLG-libraries-devel.cc for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "GLG-libraries-devel.hh"
-#include "libclass.hh"
-
diff --git a/tags/START/glagen/dll/classes/GLG-libraries-devel.hh b/tags/START/glagen/dll/classes/GLG-libraries-devel.hh
deleted file mode 100644
index 8b13789..0000000
--- a/tags/START/glagen/dll/classes/GLG-libraries-devel.hh
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tags/START/glagen/dll/classes/dot.cc b/tags/START/glagen/dll/classes/dot.cc
deleted file mode 100644
index 10e766a..0000000
--- a/tags/START/glagen/dll/classes/dot.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// dot.cc for Glagen in ~/Galgen/3d
-//
-// Made by Zavie
-// Login <guerta_j@epita.fr>
-//
-// Started on Fri Aug 16 17:08:16 2002 Zavie
-//
-
-#include <cstdio>
-#include <cstdlib>
-#include <cmath>
-#include "data_glagen.hh"
-#include "dot.hh"
-
-// Constructor and destructor
-Dot :: Dot (double x, double y, double z)
-{
- int current;
-
- _x = x;
- _y = y;
- _z = z;
- _use = 0;
- _property = new void *[GL_property];
- for (current = 0; current < GL_property; current++)
- _property[current] = NULL;
- step = GL_step;
-}
-
-Dot :: ~Dot ()
-{
- int current;
-
- for (current = 0; current < GL_property; current++)
- if (_property[current] != NULL)
- delete _property[current];
-}
-
-// Reading
-double Dot :: x () { return _x; }
-double Dot :: y () { return _y; }
-double Dot :: z () { return _z; }
-
-void *Dot :: Property (int i)
-{
- return _property[i];
-}
-bool Dot :: Is_checked () { return (step == GL_step); }
-
-// Writing
-void Dot :: set (double x, double y, double z)
-{
- _x = x;
- _y = y;
- _z = z;
-}
-
-void Dot :: Use () { _use = _use + 1; }
-
-void Dot :: Drop ()
-{
- _use = _use - 1;
- if (0 == _use)
- {
- delete this;
- printf("destroy !\n");
- }
-}
-
-void Dot :: Del_property (int i)
-{
- delete _property[i];
- _property[i] = NULL;
-}
-
-void Dot :: Set_property (int i, void *property)
-{
- _property[i] = property;
-}
-
-void Dot :: Checked () { step = GL_step; }
-
-// Other tools
-Dot *Dot :: Middle (Dot *b)
-{
- double xc;
- double yc;
- double zc;
- double adjust;
-
- xc = (this->x () + b->x ()) / 2;
- yc = (this->y () + b->y ()) / 2;
- zc = (this->z () + b->z ()) / 2;
- adjust = sqrt (GL_square_size / (xc * xc + yc * yc + zc * zc));
- xc = xc * adjust;
- yc = yc * adjust;
- zc = zc * adjust;
- return new Dot (xc, yc, zc);
-}
diff --git a/tags/START/glagen/dll/classes/dot.hh b/tags/START/glagen/dll/classes/dot.hh
deleted file mode 100644
index e13f23c..0000000
--- a/tags/START/glagen/dll/classes/dot.hh
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// dot.hh for Glagen in ~/Galgen/3d
-//
-// Made by Zavie
-// Login <guerta_j@epita.fr>
-//
-// Started on Fri Aug 16 17:08:16 2002 Zavie
-//
-
-#ifndef DOT_HH_
-# define DOT_HH_
-
-class Dot
-{
-public:
-
- // Constructor and destructor
- Dot (double x, double y, double z);
- ~Dot ();
-
- // Reading
- double x ();
- double y ();
- double z ();
-
- void *Property (int i);
- bool Is_checked ();
-
- // Writing
- void set (double x, double y, double z);
- void Use ();
- void Drop ();
- void Del_property (int i);
- void Set_property (int i, void *property);
- void Checked ();
-
- // Other tools
- Dot *Middle (Dot *b);
-
-protected:
- double _x;
- double _y;
- double _z;
- unsigned char _use;
- void **_property;
- char step;
-};
-
-#endif // DOT_HH_
diff --git a/tags/START/glagen/dll/classes/libclass.cc b/tags/START/glagen/dll/classes/libclass.cc
deleted file mode 100644
index 730026f..0000000
--- a/tags/START/glagen/dll/classes/libclass.cc
+++ /dev/null
@@ -1,391 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// libclass.cc for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-//--LIBRARY CLASS IMPLEMENTATION--//
-
-#include <iostream>
-#include <dlfcn.h>
-#include <cstdio>
-#include <string>
-#include <list>
-
-#include "../includes/errors.hh"
-#include "libclass.hh"
-
-using std::cout;
-using std::cerr;
-using std::endl;
-
-/******************************************
-* Constructors *
-* && Destructors *
-******************************************/
-Library::Library()
-{
-}
-
-Library::Library(string Filename)
-{
- this->Filename = Filename;
- this->properties.clear();
-}
-
-Library::~Library()
-{
- if (this->handler)
- this->UnloadLib();
- this->Filename = "";
- this->properties.clear();
-}
-
-/******************************************
-* Loaders *
-* -just loads libs files- *
-******************************************/
-int Library::LoadLib(string Filename)
-{
- this->Filename = Filename;
- return this->LoadLib();
-}
-
-int Library::LoadLib()
-{
-
- this->properties.clear();
-
- /*
- ** Tries to open the library itself
- */
- this->handler = dlopen(Filename.c_str(), RTLD_LAZY);
-
- if (!(this->handler)) /* This is not a library */
- {
- cerr << "#Err " << ERR_OPENLIB
- << ": " << dlerror() << "" << endl;
- return ERR_OPENLIB;
- }
-
- typedef string (*name_t)();
- name_t Name = (name_t) dlsym(this->handler, "GLG_Name");
- if (!Name)
- {
- cerr << "#Err " << ERR_LIBSYMBOL
- << ": Missing symbol 'string GLG_Name()' in "
- << this->Filename << "" << endl;
- return ERR_LIBSYMBOL;
- }
-
- cout << "Loading library: ";
- cout << Name();
-
- // This shows the dependancies in loading time.
- list<string> deps;
- std::list<string>::iterator deps_i;
- deps = this->getDependancies();
- if (! deps.empty())
- {
- cout << " {";
- for (deps_i = deps.begin();
- deps_i != deps.end();
- deps_i++)
- cout << *deps_i << ", ";
- cout << "}";
- }
- cout << endl;
-
- typedef void* (*hello_t)();
- hello_t Hello = (hello_t) dlsym(this->handler, "GLG_Hello");
- if (Hello)
- Hello();
-
- return 0;
-}
-
-int Library::Initialize()
-{
- cout << "Moteur\tlibrary::initialize " << endl ;
-
- // typedef int (*init_t)(void*, Library*);
- // init_t Init = (init_t) dlsym(this->handler, "GLG_Init");
- // if (Init)
- // Init(palloc, this);
-
- /***********************************************
- ** typedef struct dot_property_t { **
- ** int pos; **
- ** size_t size; **
- ** }; **
- ** **
- ** std::list<dot_property_t> this->properties **
- ***********************************************/
- return 0;
-
-}
-
-int Library::MainLoop(Dot* dot)
-{
- cout << "Moteur\tlibrary::mainloop " << endl ;
-
- typedef int (*main_t)(Dot*, void*);
- main_t _Main = (main_t) dlsym(this->handler, "GLG_Main");
- if (_Main)
- _Main(dot, NULL);
-
- return 0;
-
-}
-
-/******************************************
-* Miscellaneous stuffs *
-* Useful functions *
-******************************************/
-list<string> Library::getDependancies() const
-{
-
- /*
- ** Gets all library's dependancies
- */
-
- typedef list<string> (*deps_t)();
- deps_t Deps = (deps_t) dlsym(this->handler, "GLG_Dependancies");
-
- list<string> deps;
- deps.clear();
-
- if (!Deps)
- return deps;
-
- deps = Deps();
- return deps;
-}
-
-string Library::getName() const
-{
-
- /*
- ** Gets the library's basename
- */
-
- typedef string (*name_t)();
- name_t Name = (name_t) dlsym(this->handler, "GLG_Name");
-
- if (!Name)
- return this->Filename;
-
- return Name();
-}
-
-
-string Library::getFilename() const
-{
- return this->Filename;
-}
-
-list<dot_property_t> Library::getDotProperties() const
-{
- return this->properties;
-}
-
-
-int Library::getRealPos(int pos) const
-{
- std::list<dot_property_t>::const_iterator prop_i;
- int i = 0;
-
- for (prop_i = this->properties.begin();
- (i < pos) && (prop_i != this->properties.end());
- prop_i++)
- i++;
-
- if (i != pos)
- return (-1);
- return (prop_i->pos);
-}
-
-
-int Library::AccesAllowed(string& ToLib) const
-{
- if (ToLib == this->getName())
- return 1;
-
- int allowed = 0;
-
- std::list<string> deps = this->getDependancies();
- std::list<string>::const_iterator dep_i;
-
- for (dep_i = deps.begin();
- !allowed && (dep_i != deps.end());
- dep_i++)
- allowed = (*dep_i == ToLib);
-
- return allowed;
-
-}
-
-/******************************************
-* Unloader *
-* -closes the library handler if exists- *
-******************************************/
-void Library::UnloadLib()
-{
- using std::cout;
- using std::cerr;
- using std::endl;
-
- /*
- ** Asks the library to say 'Bye'
- */
- cout << "Closing library: ";
-
- typedef string (*name_t)();
- name_t Name = (name_t) dlsym(this->handler, "GLG_Name");
- cout << Name() << endl;
-
- typedef string (*bye_t)();
- bye_t Bye = (bye_t) dlsym(this->handler, "GLG_Bye");
- if (Bye)
- Bye();
-
- dlclose(this->handler);
-}
-
-/******************************************
-* _palloc *
-* stores infos on dot properties needed *
-******************************************/
-void Library::_palloc(kind_lib_t type, size_t size)
-{
- // in (*this) handler, we will store all this shit.
- GLG_property_pos++;
-
- cout << "\tThis is this->_palloc" << endl;
-
- dot_property_t property;
- property.pos = GLG_property_pos;
- property.size = size;
- property.type = type;
-
- this->properties.push_back(property);
-
- return ;
-}
-
-
-/******************************************
-* Utilities *
-* external functions needed for developers*
-******************************************/
-
-/* I am sure I know that ?? */
-extern list<property_t> Client_DotPropertyTab;
-extern const list<Library> list_libs;
-
-Library* getLibraryByName(const string Name, const list<Library> list_libs)
-{
- std::list<Library>::const_iterator lib_i;
- for (lib_i = list_libs.begin();
- (lib_i->getName() != Name) && (lib_i != list_libs.end());
- lib_i++)
- ;
- /* Yeah, we got the library. */
-
- Library* toto = NULL;
- (*toto) = *lib_i;
- return (toto);
-}
-
-void GLG_write(int pos, size_t size, void* data, Library* REF)
-{
- int real_pos = REF->getRealPos(pos);
- if (real_pos > -1)
- {
- std::list<property_t>::const_iterator prop_i;
- int i = 0;
- for (prop_i = Client_DotPropertyTab.begin();
- (i < real_pos) && (prop_i != Client_DotPropertyTab.end());
- prop_i++)
- ;
- if (i == real_pos)
- memcpy(prop_i->data, data, size); /* ou alors j'ai rien compris */
- }
-
-}
-
-void GLG_read(string& LibName, int pos, size_t size, void* data, Library* REF)
-{
- cout << REF->getName() << " hvufidoshvuiovhfudsviofdhvudiso" << endl;
-
- if (/*REF->AccessAllowed(LibName)*/ 1)
- {
-
- Library* Lib = getLibraryByName(LibName, list_libs);
-
- int real_pos = Lib->getRealPos(pos);
- if (real_pos > -1)
- {
- std::list<property_t>::const_iterator prop_i;
- int i = 0;
- for (prop_i = Client_DotPropertyTab.begin();
- (i < real_pos) && (prop_i != Client_DotPropertyTab.end());
- prop_i++)
- ;
- if (i == real_pos)
- memcpy(data, prop_i->data, size); /* ou alors j'ai rien compris */
- }
- }
-
- return ;
-}
-
-void GLG_read(int pos, size_t size, void* data, Library* REF)
-{
- string toto = REF->getName();
- GLG_read(toto, pos, size, data, REF);
-}
-
-void palloc(kind_lib_t type, size_t size, Library* REF)
-{
- cout << "\tThis is palloc itself" << endl;
-
- /*************************************************
- ** **
- ** From a .so, we cannot call a class method. **
- ** But we need to do that !! **
- ** **
- ** So, I made this little shortcut : **
- ** a function that takes a class pointer, **
- ** and that calls the real method. **
- ** **
- ** So easy. **
- ** **
- *************************************************/
-
- REF->_palloc(type, size);
- return ;
-}
-
diff --git a/tags/START/glagen/dll/classes/libclass.hh b/tags/START/glagen/dll/classes/libclass.hh
deleted file mode 100644
index 33a2fde..0000000
--- a/tags/START/glagen/dll/classes/libclass.hh
+++ /dev/null
@@ -1,91 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// libclass.hh for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-//--LIBRARY CLASS DEFINITION--//
-
-#include <iostream>
-#include <string>
-#include <list>
-
-#include "../../3d/data_glagen.hh"
-#include "Data_property.hh"
-
-#ifndef LIBCLASS_HH_
-# define LIBCLASS_HH_
-
-using namespace std;
-extern int GLG_property_pos;
-
-typedef struct dot_property_t {
- int pos;
- size_t size;
- kind_lib_t type;
-};
-
-class Library
-{
-public:
-
- Library();
- Library(string Filename);
- virtual ~Library();
-
- // int FirstLoad(); // ???
- int LoadLib();
- int LoadLib(string Filename);
- int Initialize();
- int MainLoop(Dot* dot);
- void _palloc(kind_lib_t type, size_t size);
-
- // int MainLoop(Dot* dot, ...);
-
- int Uninitialize();
- void UnloadLib();
-
- list<string> getDependancies() const;
- string getName() const;
- string getFilename() const;
- list<dot_property_t> getDotProperties() const;
- int getRealPos(const int pos) const;
- int AccesAllowed(string& ToLib) const;
-
-private:
- string Filename;
- void *handler;
- std::list<string> dependancies;
- std::list<dot_property_t> properties;
-
-};
-
-void palloc(kind_lib_t type, size_t size, Library* REF);
-
-void GLG_write(int pos, size_t size, void* data, Library* REF);
-void GLG_read(string& LibName, int pos, size_t size, void* data, Library* REF);
-void GLG_read(int pos, size_t size, void* data, Library* REF);
-
-#endif //LIBCLASS_HH_
diff --git a/tags/START/glagen/dll/classes/matrix.cc b/tags/START/glagen/dll/classes/matrix.cc
deleted file mode 100644
index 7991769..0000000
--- a/tags/START/glagen/dll/classes/matrix.cc
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-#include "matrix.hh"
diff --git a/tags/START/glagen/dll/classes/matrix.hh b/tags/START/glagen/dll/classes/matrix.hh
deleted file mode 100644
index f49ea17..0000000
--- a/tags/START/glagen/dll/classes/matrix.hh
+++ /dev/null
@@ -1,324 +0,0 @@
-// matrix.hh
-
-#include <iostream>
-
-#ifndef REALMATRIX_HH_
-# define REALMATRIX_HH_
-
-// la class TYPE ne peut etre que de type nombre (ex: double, int, long,...)
-
-template <class TYPE> class Matrix
-{
-public:
- // Constructor
- Matrix(const unsigned int i, const unsigned int j)
- {
- this->_i = i;
- this->_j = j;
- this->_lines = new _line[i]; // Create lines...
- for (unsigned int k = 0; k < i; ++k)
- this->_lines[k] = new TYPE[j]; // ...and create column
- for (unsigned int k = 0; k < i; ++k)
- for (unsigned int l = 0; l < j; ++l)
- this->_lines[k][l] = 0;
- }
-
- // Constructor by copy
- Matrix(const Matrix& mat)
- {
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i];
- for (unsigned int k = 0; k < this->_i; ++k)
- {
- this->_lines[k] = new TYPE[this->_j];
- for (unsigned int l = 0; l < this->_j; ++l)
- this->_lines[k][l] = mat._lines[k][l];
- }
- }
-
- // Destructor
- ~Matrix()
- {
- if (this->_i != 0 || this->_j != 0)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- delete [] this->_lines[i];
- delete [] this->_lines;
- }
- }
-
- // Affected operator
- Matrix& operator=(const Matrix& mat)
- {
- if (&mat != this)
- {
- if (mat._i != this->_i || mat._j != this->_j) // Test dim
- {
- this->~Matrix(); // Destroy...
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i]; // ...and realloc
- for (unsigned int i = 0; i < this->_i; ++i)
- this->_lines[i] = new TYPE[this->_j];
- }
- for (unsigned int i = 0; i < this->_i; ++i) // Copy
- for (unsigned int j = 0; j < this->_j; ++j)
- this->_lines[i][j] = mat._lines[i][j];
- }
- return (*this);
- }
-
- // Add elements to matrix
- Matrix& add_elems(const int& nb)
- {
- Matrix mat(this->_i + nb, this->_j + nb);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat(i, j) = this->_lines[i][j];
- *this = mat;
- return (*this);
- }
-
- // Add matrix to matrix
- Matrix& add_mat(const Matrix& mat)
- {
- unsigned int i = this->_i;
- unsigned int j = this->_j;
- this->add_elems(mat._i);
- for (unsigned int k = i; k < this->_i; k++)
- for (unsigned int l = j; l < this->_j; l++)
- this->_lines[k][l] = mat(k - i, l - j);
- return (*this);
- }
-
- // Add of matrix
- Matrix operator+(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator+(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Sub matrix
- Matrix operator-(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator-(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != this->_j || this->_i != mat._i || mat._i != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Multiplication of matrix
- Matrix operator*(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_j != mat._i) // Check dimension
- {
- std::cerr << "Error of produce of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < mat._j; ++j)
- {
- TYPE res = 0;
- // Produce lines and column of matrix
- for (unsigned int k = 0; k < this->_j; ++k)
- res += this->_lines[i][k] * mat._lines[k][j];
- mat_tmp._lines[i][j] = res;
- }
- }
- return (mat_tmp);
- }
-
- // Multiplication with real
- Matrix& operator*(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] *= nbr;
- }
- return (*this);
- }
-
- // Divide with real
- Matrix& operator/(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] /= nbr;
- }
- return (*this);
- }
-
- //Get dimension of matrix
- const int get_dim() const
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give dimension" << std::endl;
- return (0);
- }
- return (this->_i);
- }
-
- // Operator to change mat(i, j)
- // to can write mat(i, j) = ...
- TYPE& operator()(unsigned int i, unsigned int j)
- {
- return (this->_lines[i][j]);
- }
-
- // Operator to access mat(i, j)
- // to can write int x = mat(i, j)
- TYPE operator()(unsigned int i, unsigned int j) const
- {
- return (this->_lines[i][j]);
- }
-
- // Test matrix nul
- const bool test_nul() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- if (this->_lines[i][j] != 0)
- return (0);
- return (1);
- }
-
- // Test diagonal matrix nul
- const int test_diag() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0)
- return (i);
- return (-1);
- }
-
- // Test diagonal matrix nul with element
- const int test_diag(const unsigned int& j) const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0 && i == j)
- return (i);
- return (-1);
- }
-
- // Calculate trace
- const TYPE trace() const
- {
- TYPE res = 0;
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give trace" << std::endl;
- return (0);
- }
- for (unsigned int i = 0; i < this->_i; i++)
- res += this->_lines[i][i];
- return (res);
- }
-
- // Transpose
- Matrix& transpose()
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot transpose" << std::endl;
- return (*this);
- }
- TYPE tmp = 0;
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < i; j++)
- {
- tmp = this->_lines[i][j];
- this->_lines[i][j] = this->_lines[j][i];
- this->_lines[j][i] = tmp;
- }
- return (*this);
- }
-
- Matrix transpose() const
- {
- Matrix mat(this->_j, this->_i);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat._lines[i][j] = this->_lines[j][i];
- return (mat);
- }
-
- // Display matrix
- void print(std::ostream &os) const
- {
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < this->_j; ++j)
- os << this->_lines[i][j] << " ";
- os << std::endl;
- }
- }
-
-protected:
- typedef TYPE* _line;
- _line* _lines;
- unsigned int _i; // Number of lines
- unsigned int _j; // Number of column
-};
-
-template <class TYPE>
-inline std::ostream& operator<<(std::ostream& ostr, const Matrix<TYPE>& stream)
-{
- stream.print(ostr);
- return (ostr);
-}
-
-
-#endif // MATRIX_HH
diff --git a/tags/START/glagen/dll/classes/node.cc b/tags/START/glagen/dll/classes/node.cc
deleted file mode 100644
index a3ae387..0000000
--- a/tags/START/glagen/dll/classes/node.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// node.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:40:40 2002 meng-tih lam
-// Last update Fri Aug 16 02:41:05 2002 meng-tih lam
-//
-
-#include "node.hh"
diff --git a/tags/START/glagen/dll/classes/node.hh b/tags/START/glagen/dll/classes/node.hh
deleted file mode 100644
index 3d8c838..0000000
--- a/tags/START/glagen/dll/classes/node.hh
+++ /dev/null
@@ -1,82 +0,0 @@
-
-#ifndef NODE_HH_
-# define NODE_HH_
-
-using namespace std;
-
-#include <list>
-#include <cassert>
-
-// Rajouter l'include correspondant a la template de TYPENODE
-// + implemente le std::cout abtrait pour les tests
-
-template<class TYPENODE> class Tree; // Declaration prealable
-
-template<class TYPENODE> class Node
-{
- friend class Tree<TYPENODE>;
-
-public:
- Node(const TYPENODE &d) : _link(new std::list<Node>), _data(d) {}
-
- void add_child(const TYPENODE& value) { _link->push_back(Node(value)); }
-
- void add_tree_node(const Node& value) { _link->push_back(value); }
-
- TYPENODE get_data() const { return (_data); }
-
- const unsigned int get_nb_childs() const { return (_link->size()); }
-
- std::list<Node>* get_childs() const { return (_link); }
-
- unsigned int get_number_node() const
- {
- unsigned int number_childs = _link->size();
- std::list<Node>::const_iterator child = _link->begin();
- unsigned int number_node = 1;
- for (unsigned int tmp = 0; tmp != number_childs; ++tmp)
- {
- number_node += child->get_number_node();
- ++child;
- }
- return (number_node);
- }
-
- // Renvoie le noeud fils suivant le numero a partir de 0
- Node get_child(const unsigned int& i) const
- {
- assert(i < _link->size());
- std::list<Node>::const_iterator child = _link->begin();
- for (unsigned int tmp = 0; tmp != i; ++tmp)
- ++child;
- return (*child);
- }
-
- // Numerotation de l'arbre suivant un parcours en largeur de 0 a n
- Node get_node_course_width(const int& ptr) const
- {
- int rptr = ptr;
- std::list<Node> ptr_node = *new std::list<Node>;
- ptr_node.push_back(*this);
- while (ptr_node.size())
- {
- std::list<Node>::iterator childs = ptr_node.begin();
- std::list<Node>::iterator child = childs->get_childs()->begin();
- for (; child != childs->get_childs()->end(); ++child)
- {
- ptr_node.push_back(*child);
- if (--rptr == 0)
- return (*child);
- }
- ptr_node.pop_front();
- }
- return (*this);
- }
-
-private:
-
- std::list<Node> *_link; // Pointeur vers le sous-arbre
- TYPENODE _data;
-};
-
-#endif // NODE_HH_
diff --git a/tags/START/glagen/dll/create_dotproperty_init.cc b/tags/START/glagen/dll/create_dotproperty_init.cc
deleted file mode 100644
index 56de80d..0000000
--- a/tags/START/glagen/dll/create_dotproperty_init.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// create_dotproperty_init.cc for Glagen : speedy made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <list>
-#include "classes/libclass.hh"
-#include "../3d/data_glagen.hh"
-
-/*****************************************************************
-** Surement la plus crade de mes creations. **
-** La faute a ma comprehension qui a l'acuite de la **
-** bave d'escargot sur le sable Saharien. **
-*****************************************************************/
-
-list<property_t> Client_DotPropertyTab;
-int GLG_property_pos = 0;
-
-list<property_t> Create_DotProperty_Init(list<Library> ClientLibraries)
-{
- std::list<Library>::iterator lib_i;
- std::list<property_t> PropertyList;
- std::list<dot_property_t> PropLibList;
- std::list<dot_property_t>::const_iterator libprop_i;
- property_t prop;
-
-
- /*************************************
- ** We open libraries one by one **
- ** according the list order **
- *************************************/
-
- for (lib_i = ClientLibraries.begin();
- lib_i != ClientLibraries.end();
- lib_i++)
- {
- lib_i->Initialize();
-
- /**************************************
- ** Then we read the properties one **
- ** by one according the library.. **
- **************************************/
-
- PropLibList = lib_i->getDotProperties();
- for (libprop_i = PropLibList.begin();
- libprop_i != PropLibList.end();
- libprop_i++)
- {
-
- prop.kind = libprop_i->type;
- prop.size = libprop_i->size;
- prop.data = malloc(libprop_i->size);
-
- PropertyList.push_back(prop);
-
- }
-
- }
-
- return PropertyList;
-
-}
diff --git a/tags/START/glagen/dll/create_dotproperty_init.hh b/tags/START/glagen/dll/create_dotproperty_init.hh
deleted file mode 100644
index e69de29..0000000
--- a/tags/START/glagen/dll/create_dotproperty_init.hh
+++ /dev/null
diff --git a/tags/START/glagen/dll/header.cc b/tags/START/glagen/dll/header.cc
deleted file mode 100644
index 92e361a..0000000
--- a/tags/START/glagen/dll/header.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
diff --git a/tags/START/glagen/dll/includes/errors.hh b/tags/START/glagen/dll/includes/errors.hh
deleted file mode 100644
index 00267fb..0000000
--- a/tags/START/glagen/dll/includes/errors.hh
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-**
-** GLAGEN Project Errors values
-** 2002 aug 25
-**
-** (made by hiegel_h)
-*/
-
-#define ERR_ARGNUM 1
-#define ERR_OPENFILE 2
-
-#define ERR_NOLIBARG 3
-#define ERR_LIBMISSING 4
-#define ERR_OPENLIB 2
-#define ERR_LIBSYMBOL 10
-#define ERR_LIBNAME 11
-
-#define ERR_NOROOTLIB 21
-
diff --git a/tags/START/glagen/dll/libraryloader.cc b/tags/START/glagen/dll/libraryloader.cc
deleted file mode 100644
index 9e8b67a..0000000
--- a/tags/START/glagen/dll/libraryloader.cc
+++ /dev/null
@@ -1,322 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// libraryloader.cc for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <iostream>
-#include <string>
-#include <list>
-
-#include "includes/errors.hh"
-#include "classes/libclass.hh"
-#include "libraryloader.hh"
-
-#include "classes/node.hh"
-#include "classes/matrix.hh"
-#include "classes/Data_string.hh"
-
-
-using std::cout;
-using std::cerr;
-using std::endl;
-
-int
-getLibID(const std::list<Library>* libids,
- const string& name)
-{
- // Searchs for an ID of the given library name
-
- if (libids->empty())
- return (-1);
-
- int libid = 0;
- std::list<Library>::const_iterator libids_i = NULL;
-
- for (libids_i = libids->begin();
- (libids_i != libids->end()) && ((libids_i->getName()) != name);
- libids_i++)
- libid++;
-
- if (libid == (signed)libids->size())
- return (-1);
-
- return libid;
-
-}
-
-
-void
-RecursiveAddNode(const Node<int>* Root,
- Matrix<int>* Adj,
- const int size)
-{
- int curr_node = 0;
- const int nb_childs = Root->get_nb_childs();
-
- if (nb_childs)
- {
- for (curr_node = 0; curr_node < nb_childs; curr_node++)
- {
- Node<int> node = Root->get_child(curr_node);
-
- // Which library is a potentially dependancy ?
- int curr_lib = node.get_data();
-
- // Which libraries need it ?
- for (int i_ = 0; i_ < size; i_++)
- if ((*Adj)(i_, curr_lib) == 1)
- {
- node.add_child(i_);
- (*Adj)(i_, curr_lib) = 2;
- }
- RecursiveAddNode(&node, Adj, size);
- }
- }
-
- return;
-
-}
-
-void
-Int2Datanode(Node<int>* Root,
- Node<Data_string>* Final,
- list<Library>* list_libs)
-{
- int curr_node = 0;
- const int nb_childs = Root->get_nb_childs();
- std::list<Library>::const_iterator libid_i;
- int i;
- int I;
-
- if (nb_childs)
- {
- for (curr_node = 0; curr_node < nb_childs; curr_node++)
- {
- Node<int> node = Root->get_child(curr_node);
- I = node.get_data();
-
- libid_i = list_libs->begin();
- for (i = 0; i < I; i++)
- libid_i++;
-
- Final->add_child(Data_string(libid_i->getFilename()));
- Node<Data_string> TotoMesCouilles =
- Final->get_child(Final->get_nb_childs() - 1);
- Int2Datanode(&node, &TotoMesCouilles, list_libs);
- }
- }
-
- return;
-
-}
-
-//
-// #
-// # #### ## ##### ###### #####
-// # # # # # # # # # #
-// # # # # # # # ##### # #
-// # # # ###### # # # ##### ### ###
-// # # # # # # # # # # ### ###
-// ####### #### # # ##### ###### # # ### ###
-//
-
-
-Node<Data_string>
-LibraryLoader(const list<string>& LibFiles)
-{
-
- /**************************************************************/
- /* Opens all selected libraries and sort them by dependancies */
- /**************************************************************/
-
- /*\****************\* Declarations *\***************\*/
-
- /* Pointer needed to manipulate libraries */
- Library* current_loading (NULL);
- string libname;
-
- /* List of loaded libraries needed to construct the deps tree */
- std::list<Library> libids;
- libids.clear();
- int libid;
-
- /***********************************/
- /* Loads libraries and stores them */
- /***********************************/
- for (std::list<string>::const_iterator libfile_i = LibFiles.begin();
- libfile_i != LibFiles.end();
- libfile_i++)
- {
- current_loading = new Library (*libfile_i); // Creates new class
-
- if (! current_loading->LoadLib())
- {
-
- /**********************************************
- ** just for test purposes **
- ** it has nothing to do there **
- ** if it isn't commented.. comment it ! **
- **********************************************/
- //current_loading->Initialize();
-apao
- if (getLibID(&libids, current_loading->getName()) == -1)
- libids.push_back(*current_loading); // Stores the lib
- else
- {
- cerr << "Library "
- << current_loading->getName()
- << " is already loaded !" << endl;
- delete current_loading;
- }
- }
- else
- delete current_loading;
-
- }
-
-
-
- /*\****************\* Declarations *\***************\*/
-
- int size = libids.size();
-
- /* Matrix of dependancies */
- Matrix<int> adjacence (size, size);
- int i_ = 0, j_ = 0;
-
- /* List needed to manipulate dependancies of current lib */
- std::list<string> deps;
- deps.clear();
-
- /* Lists iterators to iterate lists ;o) */
- std::list<Library>::const_iterator libid_i;
- std::list<string>::const_iterator dep_i;
-
- /**************************************/
- /* Second parsing to get dependancies */
- /**************************************/
-
- for (libid_i = libids.begin(); libid_i != libids.end(); libid_i++)
- {
- deps = libid_i->getDependancies();
-
- if (! deps.empty())
- for (dep_i = deps.begin();
- dep_i != deps.end();
- dep_i++)
- {
- libid = getLibID(&libids, *dep_i);
- if (!(libid < 0))
- adjacence(i_, libid) = 1;
- else
- {
- cerr
- << "#ERR " << ERR_LIBMISSING
- << ": Missing library: "
- << *dep_i << "" << endl;
- exit(ERR_LIBMISSING);
- }
- }
-
- i_++;
-
- }
-
- cout << "-- " << endl << adjacence << "-- " << endl;
-
-
- /*\****************\* Declarations *\***************\*/
- /* The root node of sorted libraries tree */
- Node<int> root (-1);
-
- int n_deps;
-
- /***************************************/
- /* Search for potential root libraries */
- /***************************************/
-
- for (i_ = 0;
- i_ < size;
- i_++)
- {
- n_deps = 0;
- for (j_ = 0; j_ < size; j_++)
- if (adjacence(i_, j_))
- n_deps += 1;
-
- cout << i_ << " : " << n_deps;
-
- if (n_deps == 0) /* This is a root library */
- {
- root.add_child(i_);
- cout << " Added in Root tree !";
- }
- cout << "" << endl;
- }
-
- cout << endl << "Root has " << root.get_nb_childs() << " childs.."
- << endl << endl;
-
- if (!root.get_nb_childs()) /* No independant library found.. */
- {
- cerr << "#ERR " << ERR_NOROOTLIB
- << ": No independant library found.." << endl;
- exit(ERR_NOROOTLIB);
- }
-
- /***********************************/
- /* Recursive addition of each node */
- /***********************************/
-
- RecursiveAddNode(&root, &adjacence, size);
-
- cout << "-- " << endl << adjacence << "-- " << endl;
-
- /******************************************************/
- /* Checks if every Library has been added in the tree */
- /******************************************************/
-
- for (i_ = 0;
- i_ < size;
- i_++)
- for (j_ = 0;
- j_ < size;
- j_++)
- if (adjacence(i_, j_) == 1)
- {
- cerr << "#Err " << ERR_NOROOTLIB
- << ": Infinite loop in library dependancies;" << endl;
- exit(ERR_NOROOTLIB);
- }
-
- Node<Data_string> FinalResult (Data_string(""));
- Int2Datanode(&root, &FinalResult, &libids);
-
- // WHEEEE !! IT'S THE END !!! I CAN'T BELIEVE IT !!
- return FinalResult;
-}
-
diff --git a/tags/START/glagen/dll/libraryloader.hh b/tags/START/glagen/dll/libraryloader.hh
deleted file mode 100644
index f23810b..0000000
--- a/tags/START/glagen/dll/libraryloader.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// maintest.hh for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef LIBRARYLOADER_CC_
-# define LIBRARYLOADER_CC_
-
-#include "classes/libclass.hh"
-#include "classes/node.hh"
-#include "classes/Data_string.hh"
-
-extern int GLG_property_pos;
-
-Node<Data_string> LibraryLoader(const list<string>& LibFiles);
-
-#endif //LIBRARYLOADER_CC_
diff --git a/tags/START/glagen/dll/main.cc b/tags/START/glagen/dll/main.cc
deleted file mode 100644
index ac744f7..0000000
--- a/tags/START/glagen/dll/main.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <list>
-#include <string>
-#include "libraryloader.hh"
-
-
-extern int GLG_property_pos;
-list<string> Libs;
-
-int
-main(int argc,
- char **argv)
-{
-
- for (int i = 1; i < argc; i++)
- Libs.push_back(argv[i]);
-
- GLG_property_pos = 0;
-
- LibraryLoader(Libs);
- return 0;
-}
diff --git a/tags/START/glagen/dll/main.hh b/tags/START/glagen/dll/main.hh
deleted file mode 100644
index a812196..0000000
--- a/tags/START/glagen/dll/main.hh
+++ /dev/null
@@ -1 +0,0 @@
-##Trippant ! on se touche la bite dans ce main.hh !!##
diff --git a/tags/START/glagen/dll/samples2/gps/libtoto.gps b/tags/START/glagen/dll/samples2/gps/libtoto.gps
deleted file mode 100644
index b70c38b..0000000
--- a/tags/START/glagen/dll/samples2/gps/libtoto.gps
+++ /dev/null
@@ -1,4 +0,0 @@
-NAME: libtoto
-VERSION: 0.0
-DEPS: libtata==0.0
-AUTHOR: gus
diff --git a/tags/START/glagen/trucs b/tags/START/glagen/trucs
deleted file mode 100644
index 8589cba..0000000
--- a/tags/START/glagen/trucs
+++ /dev/null
@@ -1,10 +0,0 @@
-Fonction a passer lors de l'Init :
-
-int GLG_palloc(kind..)
-int GLG_read(...)
-int GLG_write()
-void GLG_perlin()
- double GLG_Perlin_noise_1D(double arg);
- float GLG_Perlin_noise_2D(float vec[2]);
- float GLG_Perlin_noise_3D(float vec[3]);
- float GLG_Perlin_noise_4D(float vec[4]);
diff --git a/trunk/CVSROOT/checkoutlist b/trunk/CVSROOT/checkoutlist
deleted file mode 100644
index 2921bff..0000000
--- a/trunk/CVSROOT/checkoutlist
+++ /dev/null
@@ -1,13 +0,0 @@
-# The "checkoutlist" file is used to support additional version controlled
-# administrative files in $CVSROOT/CVSROOT, such as template files.
-#
-# The first entry on a line is a filename which will be checked out from
-# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
-# The remainder of the line is an error message to use if the file cannot
-# be checked out.
-#
-# File format:
-#
-# [<whitespace>]<filename>[<whitespace><error message>]<end-of-line>
-#
-# comment lines begin with '#'
diff --git a/trunk/CVSROOT/commitinfo b/trunk/CVSROOT/commitinfo
deleted file mode 100644
index d4ade55..0000000
--- a/trunk/CVSROOT/commitinfo
+++ /dev/null
@@ -1,24 +0,0 @@
-# The "commitinfo" file is used to control pre-commit checks.
-# The filter on the right is invoked with the repository and a list
-# of files to check. A non-zero exit of the filter program will
-# cause the commit to be aborted.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being committed to, relative
-# to the $CVSROOT. For the first match that is found, then the remainder
-# of the line is the name of the filter to run.
-#
-# Format strings present in the filter will be replaced as follows:
-# %p = path relative to repository
-# %r = repository (path portion of $CVSROOT)
-# %{s} = file name, file name, ...
-#
-# If no format strings are present in the filter string, a default of
-# " %r %s" will be appended to the filter string, but this usage is
-# deprecated.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
diff --git a/trunk/CVSROOT/config b/trunk/CVSROOT/config
deleted file mode 100644
index 6accc36..0000000
--- a/trunk/CVSROOT/config
+++ /dev/null
@@ -1,37 +0,0 @@
-# Set this to "no" if pserver shouldn't check system users/passwords
-#SystemAuth=no
-
-# Put CVS lock files in this directory rather than directly in the repository.
-#LockDir=/var/lock/cvs
-
-# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
-# level of the new working directory when using the `cvs checkout'
-# command.
-#TopLevelAdmin=no
-
-# Set `LogHistory' to `all' or `TOEFWUPCGMAR' to log all transactions to the
-# history file, or a subset as needed (ie `TMAR' logs all write operations)
-#LogHistory=TOEFWUPCGMAR
-
-# Set `RereadLogAfterVerify' to `always' (the default) to allow the verifymsg
-# script to change the log message. Set it to `stat' to force CVS to verify
-# that the file has changed before reading it (this can take up to an extra
-# second per directory being committed, so it is not recommended for large
-# repositories. Set it to `never' (the previous CVS behavior) to prevent
-# verifymsg scripts from changing the log message.
-#RereadLogAfterVerify=always
-
-# Set `UserAdminOptions' to the list of `cvs admin' commands (options)
-# that users not in the `cvsadmin' group are allowed to run. This
-# defaults to `k', or only allowing the changing of the default
-# keyword expansion mode for files for users not in the `cvsadmin' group.
-# This value is ignored if the `cvsadmin' group does not exist.
-#
-# The following string would enable all `cvs admin' commands for all
-# users:
-#UserAdminOptions=aAbceIklLmnNostuU
-
-# Set `UseNewInfoFmtStrings' to `no' if you must support a legacy system by
-# enabling the deprecated old style info file command line format strings.
-# Be warned that these strings could be disabled in any new version of CVS.
-UseNewInfoFmtStrings=yes
diff --git a/trunk/CVSROOT/cvswrappers b/trunk/CVSROOT/cvswrappers
deleted file mode 100644
index e989b75..0000000
--- a/trunk/CVSROOT/cvswrappers
+++ /dev/null
@@ -1,19 +0,0 @@
-# This file affects handling of files based on their names.
-#
-# The -m option specifies whether CVS attempts to merge files.
-#
-# The -k option specifies keyword expansion (e.g. -kb for binary).
-#
-# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
-#
-# wildcard [option value][option value]...
-#
-# where option is one of
-# -f from cvs filter value: path to filter
-# -t to cvs filter value: path to filter
-# -m update methodology value: MERGE or COPY
-# -k expansion mode value: b, o, kkv, &c
-#
-# and value is a single-quote delimited value.
-# For example:
-#*.gif -k 'b'
diff --git a/trunk/CVSROOT/loginfo b/trunk/CVSROOT/loginfo
deleted file mode 100644
index 4dd6562..0000000
--- a/trunk/CVSROOT/loginfo
+++ /dev/null
@@ -1,31 +0,0 @@
-# The "loginfo" file controls where "cvs commit" log information
-# is sent. The first entry on a line is a regular expression which must match
-# the directory that the change is being made to, relative to the
-# $CVSROOT. If a match is found, then the remainder of the line is a filter
-# program that should expect log information on its standard input.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name ALL appears as a regular expression it is always used
-# in addition to the first matching regex or DEFAULT.
-#
-# If any format strings are present in the filter, they will be replaced as follows:
-# %p = path relative to repository
-# %r = repository (path portion of $CVSROOT)
-# %{sVv} = attribute list = file name, old version number (pre-checkin),
-# new version number (post-checkin). When either old or new revision is
-# unknown, doesn't exist, or isn't applicable, the string "NONE" will be
-# placed on the command line instead.
-#
-# Note that %{sVv} is a list operator and not all elements are necessary. Thus %{sv} is
-# a legal format string, but will only be replaced with file name and new revision.
-# it also generates multiple arguments for each file being operated upon. i.e. if two
-# files, file1 & file2, are being commited from 1.1 to version 1.1.2.1 and from 1.1.2.2
-# to 1.1.2.3, respectively, %{sVv} will generate the following six arguments in this
-# order: file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3.
-#
-# For example:
-#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog
-# or
-#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog
diff --git a/trunk/CVSROOT/modules b/trunk/CVSROOT/modules
deleted file mode 100644
index cb9e9ef..0000000
--- a/trunk/CVSROOT/modules
+++ /dev/null
@@ -1,26 +0,0 @@
-# Three different line formats are valid:
-# key -a aliases...
-# key [options] directory
-# key [options] directory files...
-#
-# Where "options" are composed of:
-# -i prog Run "prog" on "cvs commit" from top-level of module.
-# -o prog Run "prog" on "cvs checkout" of module.
-# -e prog Run "prog" on "cvs export" of module.
-# -t prog Run "prog" on "cvs rtag" of module.
-# -u prog Run "prog" on "cvs update" of module.
-# -d dir Place module in directory "dir" instead of module name.
-# -l Top-level directory only -- do not recurse.
-#
-# NOTE: If you change any of the "Run" options above, you'll have to
-# release and re-checkout any working directories of these modules.
-#
-# And "directory" is a path to a directory relative to $CVSROOT.
-#
-# The "-a" option specifies an alias. An alias is interpreted as if
-# everything on the right of the "-a" had been typed on the command line.
-#
-# You can encode a module within a module by using the special '&'
-# character to interpose another module into the current module. This
-# can be useful for creating a module that consists of many directories
-# spread out over the entire source repository.
diff --git a/trunk/CVSROOT/notify b/trunk/CVSROOT/notify
deleted file mode 100644
index 196c3ea..0000000
--- a/trunk/CVSROOT/notify
+++ /dev/null
@@ -1,17 +0,0 @@
-# The "notify" file controls where notifications from watches set by
-# "cvs watch add" or "cvs edit" are sent. The first entry on a line is
-# a regular expression which is tested against the directory that the
-# change is being made to, relative to the $CVSROOT. If it matches,
-# then the remainder of the line is a filter program that should contain
-# one occurrence of %s for the user to notify, and information on its
-# standard input.
-#
-# "ALL" or "DEFAULT" can be used in place of the regular expression.
-#
-# format strings are replaceed as follows:
-# %p = path relative to repository
-# %r = repository (path portion of $CVSROOT)
-# %s = user to notify
-#
-# For example:
-#ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification"
diff --git a/trunk/CVSROOT/rcsinfo b/trunk/CVSROOT/rcsinfo
deleted file mode 100644
index 49e59f4..0000000
--- a/trunk/CVSROOT/rcsinfo
+++ /dev/null
@@ -1,13 +0,0 @@
-# The "rcsinfo" file is used to control templates with which the editor
-# is invoked on commit and import.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being made to, relative to the
-# $CVSROOT. For the first match that is found, then the remainder of the
-# line is the name of the file that contains the template.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
diff --git a/trunk/CVSROOT/taginfo b/trunk/CVSROOT/taginfo
deleted file mode 100644
index 025657c..0000000
--- a/trunk/CVSROOT/taginfo
+++ /dev/null
@@ -1,40 +0,0 @@
-# The "taginfo" file is used to control pre-tag checks.
-# The filter on the right is invoked with the following arguments if no format strings are present:
-#
-# $1 -- tagname
-# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d
-# $3 -- tagtype "?" on delete, "T" for branch, "N" for static
-# $4 -- repository
-# $5-> file revision [file revision ...]
-#
-# If any format strings are present in the filter, they will be replaced as follows:
-# %b = branch mode = "?" (delete ops - unknown) | "T" (branch) | "N" (not branch)
-# %o = operation = "add" | "mov" | "del"
-# %p = path relative to repository
-# %r = repository (path portion of $CVSROOT)
-# %t = tagname
-# %{sVv} = attribute list = file name, old version tag will be deleted from,
-# new version tag will be added to (or deleted from, but this feature is
-# deprecated. When either old or new revision is unknown, doesn't exist,
-# or isn't applicable, the string "NONE" will be placed on the command
-# line.
-#
-# Note that %{sVv} is a list operator and not all elements are necessary. Thus %{sV} is
-# a legal format string, but will only be replaced with file name and old revision.
-# it also generates multiple arguments for each file being operated upon. i.e. if two
-# files, file1 & file2, are having a tag moved from version 1.1 to versoin 1.1.2.9, %{sVv}
-# will generate the following six arguments in this order: file1, 1.1, 1.1.2.9, file2, 1.1,
-# 1.1.2.9.
-#
-# A non-zero exit of the filter program will cause the tag to be aborted.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being committed to, relative
-# to the $CVSROOT. For the first match that is found, then the remainder
-# of the line is the name of the filter to run.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
diff --git a/trunk/CVSROOT/verifymsg b/trunk/CVSROOT/verifymsg
deleted file mode 100644
index 165d1cd..0000000
--- a/trunk/CVSROOT/verifymsg
+++ /dev/null
@@ -1,29 +0,0 @@
-# The "verifymsg" file is used to allow verification of logging
-# information. It works best when a template (as specified in the
-# rcsinfo file) is provided for the logging procedure. Given a
-# template with locations for, a bug-id number, a list of people who
-# reviewed the code before it can be checked in, and an external
-# process to catalog the differences that were code reviewed, the
-# following test can be applied to the code:
-#
-# Making sure that the entered bug-id number is correct.
-# Validating that the code that was reviewed is indeed the code being
-# checked in (using the bug-id number or a seperate review
-# number to identify this particular code set.).
-#
-# If any of the above test failed, then the commit would be aborted.
-#
-# Format strings present in the filter will be replaced as follows:
-# %p = path relative to repository
-# %r = repository (path portion of $CVSROOT)
-# %l = name of log file to be verified.
-#
-# If no format strings are present in the filter, a default " %l" will
-# be appended to the filter, but this usage is deprecated.
-#
-# Actions such as mailing a copy of the report to each reviewer are
-# better handled by an entry in the loginfo file.
-#
-# One thing that should be noted is the the ALL keyword is not
-# supported. There can be only one entry that matches a given
-# repository.
diff --git a/trunk/glagen/3d/Archs.txt b/trunk/glagen/3d/Archs.txt
deleted file mode 100644
index a39618d..0000000
--- a/trunk/glagen/3d/Archs.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-
-The Glagen's 3D engine ha been ported on:
-
- * GNU/Linux (Debian, Mandrake);
- * MacOS X;
- * FreeBSD, NetBSD and OpenBSD;
- * Microsoft Windows.
-
-To do :
-
- * Test on other GNU/Linux distributions (Redhat, Slackware at least);
- * Test on GNU/Hurd, if possible;
- * Maybe on Solaris.
diff --git a/trunk/glagen/3d/Glagen.dev b/trunk/glagen/3d/Glagen.dev
deleted file mode 100644
index 6dc18da..0000000
--- a/trunk/glagen/3d/Glagen.dev
+++ /dev/null
@@ -1,345 +0,0 @@
-[Project]
-FileName=Glagen.dev
-Name=Glagen
-UnitCount=20
-Type=0
-Ver=1
-ObjFiles=
-Includes=
-Libs=
-PrivateResource=Glagen_private.rc
-ResourceIncludes=
-MakeIncludes=
-Compiler=
-CppCompiler=_@@_
-Linker=-lopengl32 -lglu32 -lglut32_@@_
-IsCpp=1
-Icon=Glagen.ico
-ExeOutput=
-ObjectOutput=
-OverrideOutput=1
-OverrideOutputName=Glagen.exe
-HostApplication=
-Folders=Classes,Implementation
-CommandLine=
-IncludeVersionInfo=1
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=000000000100100000
-
-[Unit1]
-FileName=display.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=dot.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=dot_gl.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=end.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=frame.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=isosahedron.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=library.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=main.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=matrix3d.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=misc.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=perlin.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=simul.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=triangle.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=triangle_gl.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=vector.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit16]
-FileName=data_glagen.hh
-CompileCpp=1
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=1
-BuildCmd=
-
-[Unit17]
-FileName=display.hh
-CompileCpp=1
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit18]
-FileName=dot.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit19]
-FileName=end.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit20]
-FileName=frame.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit21]
-FileName=isosahedron.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit22]
-FileName=library.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit23]
-FileName=matrix3d.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit24]
-FileName=misc.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit25]
-FileName=perlin.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit26]
-FileName=simul.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit27]
-FileName=triangle.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit28]
-FileName=vector.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit29]
-FileName=time.hh
-Folder=Classes
-Compile=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit30]
-FileName=time_windows.cc
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-CompileCpp=1
-
-[Unit31]
-FileName=time_windows.cc
-CompileCpp=1
-Folder=Implementation
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=0
-Release=9
-Build=0
-LanguageID=1033
-CharsetID=1252
-CompanyName=www.glagen.org
-FileVersion=0.0.9.0
-FileDescription=GPL Landscape Generator
-InternalName=glagen.exe
-LegalCopyright=Copyright 2003, www.glagen.org
-LegalTrademarks=
-OriginalFilename=glagen.exe
-ProductName=Glagen
-ProductVersion=Alpha 0.0.9.0
-AutoIncBuildNr=0
-
diff --git a/trunk/glagen/3d/Glagen.ico b/trunk/glagen/3d/Glagen.ico
deleted file mode 100644
index acb0589..0000000
--- a/trunk/glagen/3d/Glagen.ico
+++ /dev/null
Binary files differ
diff --git a/trunk/glagen/3d/Makefile b/trunk/glagen/3d/Makefile
deleted file mode 100644
index a7d46b5..0000000
--- a/trunk/glagen/3d/Makefile
+++ /dev/null
@@ -1,139 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-NAME = glagen
-
-DIRECTORY = 3d
-
-ARCHIVE = tar -cvzf
-
-CC = g++
-
-ECHO = @echo
-
-RM = rm -f
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- misc.cc \
- perlin.cc \
- simul.cc \
- time_unix.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-DEBUG_FLAGS = -ggdb3
-
-OPTIM_FLAGS = -O3 \
- -ffast-math \
- -funroll-loops \
- -felide-constructors \
- -fexpensive-optimizations \
- -finline-functions
-
-WARNING_FLAGS = -Wall \
- -W \
- -Wstrict-prototypes
-
-CFLAGS = $(DEBUG_FLAGS) \
- $(WARNING_FLAGS)
-
-# CFLAGS = $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS)
-
-# CFLAGS = $(DEBUG_FLAGS) \
-# $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS)
-
-#GTK_IFLAGS = `gtk-config --cflags`
-
-OPENGL_IFLAGS = -I/usr/include \
- -I/usr/include/GL \
- -I/usr/X11R6/include \
- -I/usr/X11R6/include/GL
-
-IFLAGS = $(OPENGL_IFLAGS)
-
-#GTK_LFLAGS = `gtk-config --libs`
-
-OPENGL_LFLAGS = -L/usr/X11R6/lib \
- -lX11 \
- -lGL \
- -lGLU \
- -lglut
-
-LFLAGS = -L/usr/lib \
- -L/usr/pkg/lib \
- -lc \
- -lm \
- $(OPENGL_LFLAGS)
-
-OBJ = $(SRC:.cc=.o)
-
-all : $(NAME)
-
-$(NAME) : $(OBJ)
- $(CC) $(OBJ) $(LFLAGS) -o $(NAME)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-separator :
- $(ECHO) "------------------------------------------"
-
-re : clean all
-
-run : all
- ./$(NAME)
-
-tarball : distclean separator
- $(ECHO) "Archiving..."
- cd .. && $(ARCHIVE) $(NAME).tar.gz $(DIRECTORY)
- $(ECHO) "Done !"
-
-install :
- $(ECHO) "Not implemented yet."
-
-love :
- $(ECHO) "Sorry, I have a headache..."
diff --git a/trunk/glagen/3d/Makefile.mac b/trunk/glagen/3d/Makefile.mac
deleted file mode 100644
index 7e4d5d9..0000000
--- a/trunk/glagen/3d/Makefile.mac
+++ /dev/null
@@ -1,138 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile.mac for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-NAME = glagen
-
-DIRECTORY = 3d
-
-ARCHIVE = tar -cvzf
-
-CC = g++
-
-ECHO = @echo
-
-RM = rm -f
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- misc.cc \
- perlin.cc \
- simul.cc \
- time_unix.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-OPTIM_FLAGS = -O3 \
- -ffast-math \
- -funroll-loops \
- -felide-constructors \
- -fexpensive-optimizations \
- -finline-functions
-
-WARNING_FLAGS = -Wall \
- -W \
- -Wstrict-prototypes
-
-CFLAGS = $(DEBUG_FLAGS) \
- $(WARNING_FLAGS) \
- -DDARWIN
-
-# CFLAGS = $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# CFLAGS = $(DEBUG_FLAGS) \
-# $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# Sorry for that...
-# I'll try to do something better soon.
-
-#GTK_IFLAGS = `gtk-config --cflags`
-
-OPENGL_IFLAGS = -I/usr/X11R6/include \
- -I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers \
- -I/System/Library/Frameworks/GLUT.framework/Versions/A/Headers
-
-IFLAGS = -I/usr/include \
- $(OPENGL_IFLAGS)
-
-#GTK_LFLAGS = `gtk-config --libs`
-
-OPENGL_LFLAGS = -L/usr/X11R6/lib \
- -L/sw/lib \
- -lX11 \
- -lGL \
- -lGLU \
- -lglut
-
-LFLAGS = -L/usr/lib \
- -L/usr/pkg/lib \
- -lc \
- -lm \
- $(OPENGL_LFLAGS)
-
-OBJ = $(SRC:.cc=.o)
-
-all : $(NAME)
-
-$(NAME) : $(OBJ)
- $(CC) $(OBJ) $(LFLAGS) -o $(NAME)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-separator :
- $(ECHO) "------------------------------------------"
-
-re : clean all
-
-tarball : distclean separator
- $(ECHO) "Archiving..."
- cd .. && $(ARCHIVE) $(NAME).tar.gz $(DIRECTORY)
- $(ECHO) "Done !"
-
-love :
- $(ECHO) "Sorry, I have a headache..."
diff --git a/trunk/glagen/3d/Makefile.macosx b/trunk/glagen/3d/Makefile.macosx
deleted file mode 100644
index 37b8e5b..0000000
--- a/trunk/glagen/3d/Makefile.macosx
+++ /dev/null
@@ -1,133 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile.mac for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-NAME = glagen
-
-DIRECTORY = 3d
-
-ARCHIVE = tar -cvzf
-
-CC = g++
-
-ECHO = @echo
-
-RM = rm -f
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- perlin.cc \
- simul.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-OPTIM_FLAGS = -O3 \
- -ffast-math \
- -funroll-loops \
- -felide-constructors \
- -fexpensive-optimizations \
- -finline-functions
-
-WARNING_FLAGS = -Wall \
- -W \
- -Wstrict-prototypes
-
-CFLAGS = $(DEBUG_FLAGS) \
- $(WARNING_FLAGS) \
- -DDARWIN
-
-# CFLAGS = $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# CFLAGS = $(DEBUG_FLAGS) \
-# $(OPTIM_FLAGS) \
-# $(WARNING_FLAGS) \
-# -DDARWIN
-
-# Sorry for that...
-# I'll try to do something better soon.
-
-#GTK_IFLAGS = `gtk-config --cflags`
-
-OPENGL_IFLAGS = -I/usr/X11R6/include \
- -I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers \
- -I/System/Library/Frameworks/GLUT.framework/Versions/A/Headers
-
-IFLAGS = -I/usr/include \
- $(OPENGL_IFLAGS)
-
-#GTK_LFLAGS = `gtk-config --libs`
-
-OPENGL_LFLAGS = -L/usr/X11R6/lib \
- -L/sw/lib \
- -lX11 \
- -lGL \
- -lGLU \
- -lglut
-
-LFLAGS = -L/usr/lib \
- -L/usr/pkg/lib \
- -lc \
- -lm \
- $(OPENGL_LFLAGS)
-
-OBJ = $(SRC:.cc=.o)
-
-all : $(NAME)
-
-$(NAME) : $(OBJ)
- $(CC) $(OBJ) $(LFLAGS) -o $(NAME)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-re : clean all
-
-tarball : distclean
- $(ECHO) "Archiving..."
- cd .. && $(ARCHIVE) $(NAME).tar.gz $(DIRECTORY)
- $(ECHO) "Done !"
-
-love :
- $(ECHO) "Sorry, I have a headache..."
diff --git a/trunk/glagen/3d/Makefile.windows b/trunk/glagen/3d/Makefile.windows
deleted file mode 100644
index 1a9a741..0000000
--- a/trunk/glagen/3d/Makefile.windows
+++ /dev/null
@@ -1,98 +0,0 @@
-##=============================================================================
-##
-## Glagen : a planet sized landscape generator
-## Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-##=============================================================================
-##
-## Glagen : GPL LAndscape GENerator
-##
-## Makefile.win for Glagen : made by Zavie (Julien Guertault)
-##
-## www.glagen.org
-##
-##=============================================================================
-
-# Note : Makefile.win is overwritten by Dev-C++ when compiling
-
-NAME = glagen.exe
-
-CC = g++.exe
-
-WINDRES = windres.exe
-
-DEVCPP = # Put here the directory of the compiler : "C:/Dev-Cpp"
-
-SRC = main.cc \
- display.cc \
- dot.cc \
- dot_gl.cc \
- end.cc \
- frame.cc \
- isosahedron.cc \
- library.cc \
- matrix3d.cc \
- misc.cc \
- perlin.cc \
- simul.cc \
- time_unix.cc \
- triangle.cc \
- triangle_gl.cc \
- vector.cc
-
-RC = Glagen_private.rc
-
-RES = Glagen_private.res
-
-OPTIM_FLAGS = -fexpensive-optimizations -O3
-
-IFLAGS = -I"$(DEVCPP)/include" \
- -I"$(DEVCPP)/include/c++" \
- -I"$(DEVCPP)/include/c++/mingw32" \
- -I"$(DEVCPP)/include/c++/backward"
-
-CFLAGS = $(OPTIM_FLAGS) \
- -DWINDOWS
-
-LFLAGS = -L"$(DEVCPP)/lib" \
- -mwindows \
- -lopengl32 \
- -lglu32 \
- -lglut32
-
-OBJ = $(SRC:.cc=.o)
-
-
-all: all-before $(NAME) all-after
-
-$(NAME): $(OBJ)
- $(CPP) $(OBJ) -o $(NAME) $(LIBS)
-
-.cc.o :
- $(CC) $(CFLAGS) $(IFLAGS) $< -c -o $@
-
-$(RES): $(RC)
- $(WINDRES) -i $(RC) -I rc -o $(RES) -O coff
-
-clean :
- $(RM) $(OBJ)
- $(RM) *~ \#*\#
-
-distclean : clean
- $(RM) $(NAME)
-
-re : clean all
diff --git a/trunk/glagen/3d/data_glagen.hh b/trunk/glagen/3d/data_glagen.hh
deleted file mode 100644
index e02332b..0000000
--- a/trunk/glagen/3d/data_glagen.hh
+++ /dev/null
@@ -1,115 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// data_glagen.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DATA_GLAGEN_HH_
-# define DATA_GLAGEN_HH_
-
-#ifdef DARWIN
-# define float double
-# define sqrtf sqrt
-# define sinf sin
-# define cosf cos
-#endif
-
-#include <sys/time.h>
-#include <cstdlib>
-#include "frame.hh"
-
-typedef struct
-{
- class Frame frame;
- float speed;
- float altitude;
-} observer_t;
-
-typedef enum
- {
- none,
- surface,
- object,
- non_material,
- other
- } kind_lib_t;
-
-typedef struct
-{
- kind_lib_t kind;
- size_t size;
- void *data;
-} property_t;
-
-typedef struct
-{
- kind_lib_t kind;
- bool dynamic;
- void (*run)(class Dot *, unsigned int);
- char *name;
-} library_t;
-
-typedef struct
-{
- observer_t observer;
- struct timeval time;
- long start_time;
- float float_time;
- char step;
- float size;
- float square_size;
- class Triangle *ref;
- class Triangle *current;
- int property;
- library_t library[5];
- float split_dist_limit;
- float split_norm_limit;
- unsigned int triangles;
- unsigned int max_triangles;
- bool display_normal;
- bool display_planet;
- bool display_all;
- bool third_view;
- bool zoom;
- bool light;
- int mode;
- int depth_test;
- int x;
- int y;
-} glagen_t;
-
-extern glagen_t glagen;
-
-typedef struct
-{
- float height;
- float red;
- float green;
- float blue;
- float alpha;
-} surface_t;
-
-#endif // DATA_GLAGEN_HH_
diff --git a/trunk/glagen/3d/display.cc b/trunk/glagen/3d/display.cc
deleted file mode 100644
index a956274..0000000
--- a/trunk/glagen/3d/display.cc
+++ /dev/null
@@ -1,411 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// display.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cstdlib>
-#include <cstdio>
-#include <cmath>
-
-#ifndef DARWIN
-# include <GL/gl.h>
-# include <GL/glu.h>
-# include <GL/glut.h>
-#else
-# include <gl.h>
-# include <glu.h>
-# include <glut.h>
-#endif
-
-#include "data_glagen.hh"
-#include "end.hh"
-#include "library.hh"
-#include "time.hh"
-#include "triangle.hh"
-
-bool pressed;
-int x;
-int y;
-int xold;
-int yold;
-
-static const GLfloat L0position[] = { 0.0, 1.0, -2.0, 0.0 };
-static const GLfloat L0ambient[] = { 0.0, 0.0, 0.0, 1.0 };
-static const GLfloat L0diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
-static const GLfloat L0specular[] = { 1.0, 1.0, 1.0, 1.0 };
-static const GLfloat Mshiny = 50;
-
-void display_frame ()
-{
- Frame *o = &glagen.observer.frame;
-
- update_time ();
-
- glagen.step = glagen.step + 1;
- if (glagen.display_planet == true)
- library_caller (glagen.ref);
- glagen.step = glagen.step + 1;
- glagen.ref->Update_normal_visitor ();
- glagen.step = glagen.step + 1;
-
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity ();
-
- // Third person view : the observer is represented by a frame
- if (glagen.third_view == true)
- {
- // View initialization in third person view mode
- gluPerspective(45,
- float(glagen.x) / float(glagen.y),
- 0.5,
- 8.0);
- gluLookAt (-4, 4, -4,
- 1, -1, 1,
- 0, 1, 0);
-
- // The frame representing the user's position
- if (glagen.light == true)
- glDisable(GL_LIGHTING);
- glBegin (GL_LINES);
- glColor3f(1.0, 1.0, 0.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
- glVertex3f(o->Origin_X () + o->Basis_X ().X () / 2,
- o->Origin_Y () + o->Basis_X ().Y () / 2,
- o->Origin_Z () + o->Basis_X ().Z () / 2);
- glColor3f(0.0, 1.0, 1.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
- glVertex3f(o->Origin_X () + o->Basis_Y ().X () / 2,
- o->Origin_Y () + o->Basis_Y ().Y () / 2,
- o->Origin_Z () + o->Basis_Y ().Z () / 2);
- glColor3f(1.0, 0.0, 1.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
- glVertex3f(o->Origin_X () + o->Basis_Z ().X () / 2,
- o->Origin_Y () + o->Basis_Z ().Y () / 2,
- o->Origin_Z () + o->Basis_Z ().Z () / 2);
-
- // Then the projection of the user's position on the planet's frame
- glColor3f(1.0, 1.0, 1.0);
- glVertex3f(0, 0, 0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
-
- glColor3f(1.0, 0.0, 0.0);
- glVertex3f(0, 0, 0);
- glVertex3f(o->Origin_X (), 0, 0);
-
- glColor3f(0.0, 1.0, 0.0);
- glVertex3f(o->Origin_X (), 0, 0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), 0);
-
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), 0);
- glVertex3f(o->Origin_X (), o->Origin_Y (), o->Origin_Z ());
-
- glEnd ();
- if (glagen.light == true)
- glEnable(GL_LIGHTING);
- }
- else
- {
- // View initialization in normal view
- if (glagen.x > glagen.y)
- gluPerspective(45 * float(glagen.y) / float(glagen.x),
- float(glagen.x) / float(glagen.y),
- glagen.observer.altitude / 2,
- glagen.observer.altitude + 1);
- else
- gluPerspective(45,
- float(glagen.x) / float(glagen.y),
- glagen.observer.altitude / 2,
- glagen.observer.altitude + 1);
- gluLookAt (o->Origin_X (), o->Origin_Y (), o->Origin_Z (),
- o->Origin_X () + o->Basis_Z ().X (),
- o->Origin_Y () + o->Basis_Z ().Y (),
- o->Origin_Z () + o->Basis_Z ().Z (),
- o->Basis_Y ().X (), o->Basis_Y ().Y (), o->Basis_Y (). Z ());
- }
-
-
- // The light
- if (glagen.light == true)
- {
- glLightfv(GL_LIGHT0, GL_POSITION, L0position);
- glEnable(GL_LIGHTING);
- }
-
- // The line calling the planet's display is just here
- glagen.ref->Display (0);
- glagen.step = glagen.step + 1;
-
- if (glagen.light == true)
- glDisable (GL_LIGHTING);
-
-// // Uncomment those lines for an atmosphere ===
- glEnable (GL_BLEND);
- glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-// for (int current = 1; current < 100; current ++)
-// {
-// glagen.ref->Display (current);
-// glagen.step = glagen.step + 1;
-// }
-// glDisable (GL_BLEND);
-// //
-
- glFlush ();
-
- // On echange les buffers
- glutSwapBuffers ();
- glutPostRedisplay();
-}
-
-//
-// Simple keyboard events catching
-//
-void Keyboard (unsigned char key_stroke, int, int)
-{
- switch (key_stroke)
- {
- // Quit
- case 'q':
- case 'Q':
- case 27:
- end_all();
- }
-}
-
-//
-// Other keyboard events catching
-//
-void Keyboard_Special (int key_stroke, int, int)
-{
- Frame *o = &glagen.observer.frame;
- float ox = o->Origin_X ();
- float oy = o->Origin_Y ();
- float oz = o->Origin_Z ();
-
- switch (key_stroke)
- {
- case GLUT_KEY_UP:
- o->Translate (o->Basis_Z () * glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_DOWN:
- o->Translate (o->Basis_Z () * -glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_LEFT:
- o->Translate (o->Basis_X () * glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_RIGHT:
- o->Translate (o->Basis_X () * -glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_PAGE_UP:
- o->Translate (o->Basis_Y () * glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_PAGE_DOWN:
- o->Translate (o->Basis_Y () * -glagen.observer.speed);
- glagen.observer.speed = glagen.observer.altitude / 50;
- glagen.observer.altitude = sqrtf (ox * ox + oy * oy + oz * oz) - 1;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- break;
- case GLUT_KEY_F1:
- if (glagen.mode == 1)
- glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
- else
- {
- if (glagen.mode == 2)
- glPolygonMode (GL_FRONT_AND_BACK, GL_POINT);
- else
- glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
- }
- glagen.mode++;
- if (glagen.mode > 3)
- glagen.mode = 1;
- glutPostRedisplay ();
- break;
- case GLUT_KEY_F2:
- glagen.depth_test = !glagen.depth_test;
- if (glagen.depth_test == true)
- glEnable (GL_DEPTH_TEST);
- else
- glDisable (GL_DEPTH_TEST);
- glutPostRedisplay ();
- break;
- case GLUT_KEY_F3:
- glagen.display_normal = !glagen.display_normal;
- break;
- case GLUT_KEY_F4:
- glagen.display_planet = !glagen.display_planet;
- break;
- case GLUT_KEY_F5:
- glagen.display_all = !glagen.display_all;
- break;
- case GLUT_KEY_F6:
- glagen.third_view = !glagen.third_view;
- break;
- case GLUT_KEY_F7:
- glagen.light = !glagen.light;
- break;
- }
-// {
-// float alt = glagen.observer.altitude * 12000000;
-// if (alt > 1000)
-// printf ("%.3f km\n", alt / 1000);
-// else
-// printf ("%.3f m\n", alt);
-// }
-}
-
-void reshape (int x, int y)
-{
- glagen.x = x;
- glagen.y = y;
- glViewport (0, 0, x, y);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
-}
-
-void mouse(int button, int state, int x, int y)
-{
- // sleft button pressed
- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
- pressed = true;
- // left button released
- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP)
- {
- pressed = false;
- if (glagen.zoom)
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- }
- xold = x; // saving position
- yold = y;
-}
-
-void mousemotion(int x, int y)
-{
- float angle[3];
-
- if (pressed) // left button
- {
- angle[0] = (y - yold) / 100.0;
- angle[1] = (xold - x) / 100.0;
- angle[2] = 0;
- }
- else
- {
- angle[0] = 0;
- angle[1] = 0;
- angle[2] = (xold - x) / 50.0;
- }
-
- glagen.observer.frame.Rotate (angle[0], glagen.observer.frame.Basis_X ());
- glagen.observer.frame.Rotate (angle[1], glagen.observer.frame.Basis_Y ());
- glagen.observer.frame.Rotate (angle[2], glagen.observer.frame.Basis_Z ());
- glagen.ref->Hide_visitor ();
- glagen.step = glagen.step + 1;
- glutPostRedisplay ();
- xold = x;
- yold = y;
-}
-
-void display(int *narg, char ***args)
-{
- // Glut
- glutInit (narg, *args);
- glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutInitWindowSize (600, 600);
- glutCreateWindow ("Test Glagen");
-
- // OpenGL
- glClearColor (0.0, 0.0, 0.0, 0.0);
- glColor3f (1.0, 1.0, 1.0);
- glEnable (GL_DEPTH_TEST);
- glagen.mode = 1;
- glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
-
- // Light
- glLightModeli (GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
- glEnable (GL_LIGHTING);
- glEnable (GL_LIGHT0);
- glLightfv (GL_LIGHT0, GL_DIFFUSE, L0diffuse);
- glLightfv (GL_LIGHT0, GL_SPECULAR, L0specular);
- glLightfv (GL_LIGHT0, GL_AMBIENT, L0ambient);
- glEnable (GL_COLOR_MATERIAL);
- glDisable (GL_LIGHTING);
-
- // Events functions
- glutDisplayFunc (display_frame);
- glutKeyboardFunc (Keyboard);
- glutSpecialFunc (Keyboard_Special);
- glutReshapeFunc (reshape);
- glutMouseFunc (mouse);
- glutMotionFunc (mousemotion);
-
- // Glut main loop ;-)
- glutMainLoop ();
- return;
-}
diff --git a/trunk/glagen/3d/display.hh b/trunk/glagen/3d/display.hh
deleted file mode 100644
index da18a8f..0000000
--- a/trunk/glagen/3d/display.hh
+++ /dev/null
@@ -1,44 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// display.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DISPLAY_HH_
-# define DISPLAY_HH_
-
-#include "dot.hh"
-#include "triangle.hh"
-
-void display_frame ();
-void Keyboard (unsigned char, int, int);
-void Keyboard_Special (int, int, int);
-void reshape (int, int);
-void mouse (int, int, int, int);
-void mousemotion (int, int);
-void display (int *, char ***);
-
-#endif // DISPLAY_HH_
diff --git a/trunk/glagen/3d/dot.cc b/trunk/glagen/3d/dot.cc
deleted file mode 100644
index 86df62b..0000000
--- a/trunk/glagen/3d/dot.cc
+++ /dev/null
@@ -1,184 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// dot.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cstdlib>
-#include <cmath>
-#include "data_glagen.hh"
-#include "dot.hh"
-
-// Constructor and destructor
-Dot :: Dot (const float x, const float y, const float z):
- _x(x), _y(y), _z(z), _use(0), _computed(false)
-{
- _normal = Vector (0, 0, 0);
- _property = new property_t *[glagen.property]; // delete : dot.cc l61
- for (int current = 0; current < glagen.property; current++)
- _property[current] = NULL;
- for (int current = 0; current < 6; current++)
- _owner[current] = NULL;
- step = glagen.step;
-}
-
-Dot :: ~Dot ()
-{
- if (_property != NULL)
- {
- for (int current = 0; current < glagen.property; current++)
- if (_property[current] != NULL)
- {
- if (_property[current]->data != NULL)
- delete _property[current]->data; // FIXME : warning here.
- delete _property[current];
- }
- delete _property;
- }
-}
-
-
-// ======================================================================= Read
-
-float Dot :: x () const { return _x; }
-float Dot :: y () const { return _y; }
-float Dot :: z () const { return _z; }
-
-Triangle *Dot :: Owner (int triangle) const
-{
- if (triangle >= 0 && triangle < 6)
- return _owner[triangle];
- return NULL;
-}
-
-Vector &Dot :: Normal () { return _normal; }
-
-property_t *Dot :: Property (const int i) const
-{
- return _property[i];
-}
-
-bool Dot :: Is_computed () const
-{
- return _computed;
-}
-
-bool Dot :: Is_checked () const
-{
- return (step == glagen.step);
-}
-
-
-// ====================================================================== Write
-
-void Dot :: Set (const float x, const float y, const float z)
-{
- _x = x;
- _y = y;
- _z = z;
-}
-
-void Dot :: Use (Triangle *old_one, Triangle *new_one)
-{
- Change_owner (old_one, new_one);
- _use = _use + 1;
-}
-
-bool Dot :: Drop (Triangle *old_one, Triangle *new_one)
-{
- Change_owner (old_one, new_one);
- _use = _use - 1;
- return (_use <= 0);
-}
-
-void Dot :: Update_normal ()
-{
- int count = 0;
-
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- _normal.Set (0, 0, 0);
- for (int current = 0; current < 6; current++)
- if (_owner[current] != NULL)
- {
- _normal = _normal + _owner[current]->Normal_real ();
- count++;
- }
- if (count != 0)
- _normal = _normal / count;
-}
-
-void Dot :: Del_property (const int i)
-{
- if (_property[i] != NULL)
- {
- delete _property[i];
- _property[i] = NULL;
- }
-}
-
-void Dot :: Set_property (const int i, property_t *property)
-{
- _property[i] = property;
-}
-
-void Dot :: Computed () { _computed = true; }
-
-void Dot :: Checked () { step = glagen.step; }
-
-// ====================================================================== Other
-
-Dot *Dot :: Middle (const Dot *b)
-{
- float xc = (x () + b->x ()) / 2;
- float yc = (y () + b->y ()) / 2;
- float zc = (z () + b->z ()) / 2;
- float adjust = sqrtf (glagen.square_size / (xc * xc + yc * yc + zc * zc));
- xc = xc * adjust;
- yc = yc * adjust;
- zc = zc * adjust;
- return new Dot (xc, yc, zc); // delete : triangle.cc l99, 101, 103
-}
-
-// ================================================================== Protected
-
-void Dot :: Change_owner (Triangle *old_one, Triangle *new_one)
-{
- for (int current = 0; current < 6; current++)
- if (_owner[current] == old_one)
- {
- _owner[current] = new_one;
- return;
- }
- for (int current = 0; current < 6; current++)
- if (_owner[current] == NULL)
- {
- _owner[current] = new_one;
- return;
- }
-}
diff --git a/trunk/glagen/3d/dot.hh b/trunk/glagen/3d/dot.hh
deleted file mode 100644
index 8e17049..0000000
--- a/trunk/glagen/3d/dot.hh
+++ /dev/null
@@ -1,84 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// dot.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DOT_HH_
-# define DOT_HH_
-
-#include "data_glagen.hh"
-#include "triangle.hh"
-
-class Dot
-{
-public:
-
- // Constructor and destructor
- Dot (const float, const float, const float);
- ~Dot ();
-
- // Read
- float x () const;
- float y () const;
- float z () const;
-
- class Triangle *Owner (const int) const;
- class Vector &Normal ();
-
- property_t *Property (const int) const;
- bool Is_computed () const;
- bool Is_checked () const;
-
- // Write
- void Set (const float, const float, const float);
- void Use (class Triangle *, class Triangle *);
- bool Drop (class Triangle *, class Triangle *);
- void Update_normal ();
- void Del_property (const int);
- void Set_property (const int, property_t *);
- void Computed ();
- void Checked ();
-
- // Other
- Dot *Middle (const Dot *);
- void Display (const unsigned int);
-
-protected:
- void Change_owner (class Triangle *, class Triangle *);
-
- float _x;
- float _y;
- float _z;
- unsigned char _use;
- class Triangle *_owner[6];
- class Vector _normal;
- property_t **_property;
- bool _computed;
- char step;
-};
-
-#endif // DOT_HH_
diff --git a/trunk/glagen/3d/dot_gl.cc b/trunk/glagen/3d/dot_gl.cc
deleted file mode 100644
index 463df20..0000000
--- a/trunk/glagen/3d/dot_gl.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// dot_gl.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DARWIN
-# include <GL/gl.h>
-# include <GL/glu.h>
-#else
-# include <gl.h>
-# include <glu.h>
-#endif
-
-#include "data_glagen.hh"
-#include "dot.hh"
-
-//
-// Call the appropriate OpenGl functions for the dot
-//
-void Dot :: Display (const unsigned int id)
-{
- surface_t *surface;
- float adjust;
-
- if (glagen.display_planet)
- {
- if (NULL == _property[id])
- {
- adjust = 0;
- glColor3f ((1 + _x) / 2, (1 + _y) / 2, (1 + _z) / 2);
- }
- else
- {
- surface = static_cast <surface_t *> (_property[id]->data);
- if (NULL == surface)
- {
- adjust = 0;
- glColor3f ((1 + _x) / 2, (1 + _y) / 2, (1 + _z) / 2);
- }
- else
- {
- adjust = surface->height;
- glColor4f (surface->red,
- surface->green,
- surface->blue,
- surface->alpha);
- }
- }
- }
- else
- {
- adjust = 0;
- glColor3f ((1 + _x) / 2, (1 + _y) / 2, (1 + _z) / 2);
- }
- glNormal3f(_normal.X (), _normal.Y (), _normal.Z ());
- glVertex3f ((glagen.size + adjust) * _x,
- (glagen.size + adjust) * _y,
- (glagen.size + adjust) * _z);
-}
diff --git a/trunk/glagen/3d/end.cc b/trunk/glagen/3d/end.cc
deleted file mode 100644
index a16a634..0000000
--- a/trunk/glagen/3d/end.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// main.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "data_glagen.hh"
-#include "triangle.hh"
-
-void destroy_tree (Triangle *triangle)
-{
- Triangle *next;
- bool continue_deleting = true;
-
- while (continue_deleting)
- {
- if (0 == (next = triangle->Neighbor_ab ()))
- if (0 == (next = triangle->Neighbor_bc ()))
- if (0 == (next = triangle->Neighbor_ca ()))
- continue_deleting = false;
- delete triangle;
- triangle = next;
- }
- exit (0);
-}
-
-void end_all ()
-{
- destroy_tree(glagen.ref);
-}
diff --git a/trunk/glagen/3d/end.hh b/trunk/glagen/3d/end.hh
deleted file mode 100644
index 402c4b2..0000000
--- a/trunk/glagen/3d/end.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// main.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef END_HH_
-# define END_HH_
-
-#include "data_glagen.hh"
-#include "triangle.hh"
-
-void destroy_tree (Triangle *);
-void end_all ();
-
-#endif // END_HH_
diff --git a/trunk/glagen/3d/frame.cc b/trunk/glagen/3d/frame.cc
deleted file mode 100644
index 6f3aabd..0000000
--- a/trunk/glagen/3d/frame.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// frame.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "data_glagen.hh"
-#include "frame.hh"
-#include "matrix3d.hh"
-#include "vector.hh"
-
-// ================================================ Constructors and destructor
-
-Frame :: Frame ()
-{
- _origin[0] = 0;
- _origin[1] = 0;
- _origin[2] = 0;
- _basis[0] = Vector(1, 0, 0);
- _basis[1] = Vector(0, 1, 0);
- _basis[2] = Vector(0, 0, 1);
-}
-
-Frame :: Frame (float origin[3])
-{
- _origin[0] = origin[0];
- _origin[1] = origin[1];
- _origin[2] = origin[2];
- _basis[0] = Vector(1, 0, 0);
- _basis[1] = Vector(0, 1, 0);
- _basis[2] = Vector(0, 0, 1);
-}
-
-Frame :: Frame (float origin[3], Vector basis[3])
-{
- _origin[0] = origin[0];
- _origin[1] = origin[1];
- _origin[2] = origin[2];
- _basis[0] = Vector(basis[0]);
- _basis[1] = Vector(basis[1]);
- _basis[2] = Vector(basis[2]);
-}
-
-Frame :: ~Frame () {}
-
-// ==================================================================== Reading
-
-float Frame :: Origin_X () const { return _origin[0]; }
-float Frame :: Origin_Y () const { return _origin[1]; }
-float Frame :: Origin_Z () const { return _origin[2]; }
-Vector Frame :: Basis_X () const { return _basis[0]; }
-Vector Frame :: Basis_Y () const { return _basis[1]; }
-Vector Frame :: Basis_Z () const { return _basis[2]; }
-
-Vector Frame :: View () { return Vector (_basis[2]); }
-
-Matrix44 Frame :: GetMatrix ()
-{
- int x;
- float basis_matrix[3][3];
-
- for (x = 0; x < 3; x++)
- {
- basis_matrix[x][0] = _basis[x].X ();
- basis_matrix[x][1] = _basis[x].Y ();
- basis_matrix[x][2] = _basis[x].Z ();
- }
- Matrix44 rot_matrix(basis_matrix);
- Matrix44 trans_matrix(_origin);
- return Matrix44 (trans_matrix * rot_matrix);
-}
-
-Matrix44 Frame :: GetCamMatrix ()
-{
- int x;
- float basis_matrix[3][3];
-
- for (x = 0; x < 3; x++)
- {
- basis_matrix[x][0] = _basis[x].X ();
- basis_matrix[x][1] = _basis[x].Y ();
- basis_matrix[x][2] = _basis[x].Z ();
- }
- Matrix44 rot_matrix(basis_matrix);
- Matrix44 trans_matrix(_origin);
- return Matrix44 (rot_matrix * trans_matrix);
-}
-
-// ==================================================================== Writing
-
-void Frame :: Reset_origin ()
-{
- _origin[0] = 0;
- _origin[1] = 0;
- _origin[2] = 0;
-}
-
-void Frame :: Reset_basis ()
-{
- _basis[0].Set (1, 0, 0) ;
- _basis[1].Set (0, 1, 0) ;
- _basis[2].Set (0, 0, 1) ;
-}
-
-void Frame :: Set_origin (const float origin[3])
-{
- _origin[0] = origin[0];
- _origin[1] = origin[1];
- _origin[2] = origin[2];
-}
-
-void Frame :: Translate (const Vector v)
-{
- _origin[0] = _origin[0] + v.X ();
- _origin[1] = _origin[1] + v.Y ();
- _origin[2] = _origin[2] + v.Z ();
-}
-
-void Frame :: Rotate (const float angle, const Vector v)
-{
- Matrix33 rot (angle, v);
-
- _basis[0] = rot * _basis[0];
- _basis[1] = rot * _basis[1];
- _basis[2] = rot * _basis[2];
- _basis[0].Normalize ();
- _basis[1].Normalize ();
- _basis[2].Normalize ();
-}
diff --git a/trunk/glagen/3d/frame.hh b/trunk/glagen/3d/frame.hh
deleted file mode 100644
index 2fd125f..0000000
--- a/trunk/glagen/3d/frame.hh
+++ /dev/null
@@ -1,69 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// frame.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef FRAME_HH_
-# define FRAME_HH_
-
-#include "matrix3d.hh"
-#include "vector.hh"
-
-class Frame
-{
-public:
- // Constructors and destructor
- Frame ();
- Frame (float origin[3]);
- Frame (float origin[3], class Vector basis[3]);
- ~Frame();
-
- // Reading
- float Origin_X () const;
- float Origin_Y () const;
- float Origin_Z () const;
- class Vector Basis_X () const;
- class Vector Basis_Y () const;
- class Vector Basis_Z () const;
-
- class Vector View ();
- Matrix44 GetMatrix ();
- Matrix44 GetCamMatrix ();
-
- // Writing
- void Reset_origin ();
- void Reset_basis ();
- void Set_origin (const float origin[3]);
- void Translate (const class Vector);
- void Rotate (const float, const class Vector);
-
-protected:
- float _origin[3];
- class Vector _basis[3];
-};
-
-#endif // FRAME_HH_
diff --git a/trunk/glagen/3d/header.cc b/trunk/glagen/3d/header.cc
deleted file mode 100644
index cdcdf6d..0000000
--- a/trunk/glagen/3d/header.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// *******.** for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
diff --git a/trunk/glagen/3d/isosahedron.cc b/trunk/glagen/3d/isosahedron.cc
deleted file mode 100644
index 1f3fc71..0000000
--- a/trunk/glagen/3d/isosahedron.cc
+++ /dev/null
@@ -1,220 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// isosahedron.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "triangle.hh"
-
-// The regular polyhedron we use to create the planet is an isosahedron :
-// 20 triangular faces, 12 vertex and 30 edges
-//
-// Vertex coordinates :
-//
-// { 0, 1, 0 } = P0
-// { sqrtf((5 - sqrtf(5)) / 10), (sqrtf(5)) / 5, -(5 + sqrtf(5)) / 10 } = P1
-// { -sqrtf((5 - sqrtf(5)) / 10), (sqrtf(5)) / 5, -(5 + sqrtf(5)) / 10 } = P2
-// { -sqrtf((5 + sqrtf(5)) / 10), (sqrtf(5)) / 5, (5 - sqrtf(5)) / 10 } = P3
-// { 0, (sqrtf(5)) / 5, 2 x ((sqrtf(5)) / 5) } = P4
-// { sqrtf((5 + sqrtf(5)) / 10), (sqrtf(5)) / 5, (5 - sqrtf(5)) / 10 } = P5
-// { sqrtf((5 - sqrtf(5)) / 10), -(sqrtf(5)) / 5, (5 + sqrtf(5)) / 10 } = P6
-// { -sqrtf((5 - sqrtf(5)) / 10), -(sqrtf(5)) / 5, (5 + sqrtf(5)) / 10 } = P7
-// { -sqrtf((5 + sqrtf(5)) / 10), -(sqrtf(5)) / 5, -(5 - sqrtf(5)) / 10 } = P8
-// { 0, -(sqrtf(5)) / 5, -2 x ((sqrtf(5)) / 5) } = P9
-// { sqrtf((5 + sqrtf(5)) / 10), -(sqrtf(5)) / 5, -(5 + sqrtf(5)) / 10 } = P10
-// { 0, -1, 0 } = P11
-//
-// Faces :
-//
-// F0 = P0, P1, P2
-// F1 = P0, P2, P3
-// F2 = P0, P3, P4
-// F3 = P0, P4, P5
-// F4 = P0, P5, P1
-// F5 = P2, P1, P9
-// F6 = P8, P2, P9
-// F7 = P3, P2, P8
-// F8 = P7, P3, P8
-// F9 = P4, P3, P7
-// F10 = P6, P4, P7
-// F11 = P5, P4, P6
-// F12 = P10, P5, P6
-// F13 = P10, P1, P5
-// F14 = P9, P1, P10
-// F15 = P11, P8, P9
-// F16 = P11, P7, P8
-// F17 = P11, P6, P7
-// F18 = P11, P10, P6
-// F19 = P11, P9, P10
-
-Triangle *isosahedron (float size)
-{
- Dot *vertex[12];
- Triangle *face[20];
- float expr_1 = size * sqrtf((5 + sqrtf(5)) / 10);
- float expr_2 = size * sqrtf((5 - sqrtf(5)) / 10);
- float expr_3 = size * (5 + sqrtf(5)) / 10;
- float expr_4 = size * (5 - sqrtf(5)) / 10;
- float expr_5 = size * (sqrtf(5)) / 5;
-
- // Creation of the vertex
- vertex[0] = new Dot ( 0, 1, 0);
- vertex[1] = new Dot ( expr_2, expr_5, -expr_3);
- vertex[2] = new Dot (-expr_2, expr_5, -expr_3);
- vertex[3] = new Dot (-expr_1, expr_5, expr_4);
- vertex[4] = new Dot ( 0, expr_5, 2 * expr_5);
- vertex[5] = new Dot ( expr_1, expr_5, expr_4);
- vertex[6] = new Dot ( expr_2, -expr_5, expr_3);
- vertex[7] = new Dot (-expr_2, -expr_5, expr_3);
- vertex[8] = new Dot (-expr_1, -expr_5, -expr_4);
- vertex[9] = new Dot ( 0, -expr_5, -2 * expr_5);
- vertex[10] = new Dot ( expr_1, -expr_5, -expr_4);
- vertex[11] = new Dot ( 0, -1, 0);
-
- // Creation of the triangles
- face[0] = new Triangle (vertex[0], vertex[1], vertex[2], NULL);
- face[1] = new Triangle (vertex[0], vertex[2], vertex[3], NULL);
- face[2] = new Triangle (vertex[0], vertex[3], vertex[4], NULL);
- face[3] = new Triangle (vertex[0], vertex[4], vertex[5], NULL);
- face[4] = new Triangle (vertex[0], vertex[5], vertex[1], NULL);
- face[5] = new Triangle (vertex[2], vertex[1], vertex[9], NULL);
- face[6] = new Triangle (vertex[8], vertex[2], vertex[9], NULL);
- face[7] = new Triangle (vertex[3], vertex[2], vertex[8], NULL);
- face[8] = new Triangle (vertex[7], vertex[3], vertex[8], NULL);
- face[9] = new Triangle (vertex[4], vertex[3], vertex[7], NULL);
- face[10] = new Triangle (vertex[6], vertex[4], vertex[7], NULL);
- face[11] = new Triangle (vertex[5], vertex[4], vertex[6], NULL);
- face[12] = new Triangle (vertex[10], vertex[5], vertex[6], NULL);
- face[13] = new Triangle (vertex[10], vertex[1], vertex[5], NULL);
- face[14] = new Triangle (vertex[9], vertex[1], vertex[10], NULL);
- face[15] = new Triangle (vertex[11], vertex[8], vertex[9], NULL);
- face[16] = new Triangle (vertex[11], vertex[7], vertex[8], NULL);
- face[17] = new Triangle (vertex[11], vertex[6], vertex[7], NULL);
- face[18] = new Triangle (vertex[11], vertex[10], vertex[6], NULL);
- face[19] = new Triangle (vertex[11], vertex[9], vertex[10], NULL);
-
- // Setting up of the connexity
- face[0]->Make_connexity (face[1]);
- face[0]->Make_connexity (face[4]);
- face[0]->Make_connexity (face[5]);
-
- face[1]->Make_connexity (face[0]);
- face[1]->Make_connexity (face[2]);
- face[1]->Make_connexity (face[7]);
-
- face[2]->Make_connexity (face[1]);
- face[2]->Make_connexity (face[3]);
- face[2]->Make_connexity (face[9]);
-
- face[3]->Make_connexity (face[2]);
- face[3]->Make_connexity (face[4]);
- face[3]->Make_connexity (face[11]);
-
- face[4]->Make_connexity (face[0]);
- face[4]->Make_connexity (face[3]);
- face[4]->Make_connexity (face[13]);
-
- face[5]->Make_connexity (face[0]);
- face[5]->Make_connexity (face[6]);
- face[5]->Make_connexity (face[14]);
-
- face[6]->Make_connexity (face[5]);
- face[6]->Make_connexity (face[7]);
- face[6]->Make_connexity (face[15]);
-
- face[7]->Make_connexity (face[1]);
- face[7]->Make_connexity (face[6]);
- face[7]->Make_connexity (face[8]);
-
- face[8]->Make_connexity (face[7]);
- face[8]->Make_connexity (face[9]);
- face[8]->Make_connexity (face[16]);
-
- face[9]->Make_connexity (face[2]);
- face[9]->Make_connexity (face[8]);
- face[9]->Make_connexity (face[10]);
-
- face[10]->Make_connexity (face[9]);
- face[10]->Make_connexity (face[11]);
- face[10]->Make_connexity (face[17]);
-
- face[11]->Make_connexity (face[3]);
- face[11]->Make_connexity (face[10]);
- face[11]->Make_connexity (face[12]);
-
- face[12]->Make_connexity (face[11]);
- face[12]->Make_connexity (face[13]);
- face[12]->Make_connexity (face[18]);
-
- face[13]->Make_connexity (face[4]);
- face[13]->Make_connexity (face[12]);
- face[13]->Make_connexity (face[14]);
-
- face[14]->Make_connexity (face[5]);
- face[14]->Make_connexity (face[13]);
- face[14]->Make_connexity (face[19]);
-
- face[15]->Make_connexity (face[6]);
- face[15]->Make_connexity (face[16]);
- face[15]->Make_connexity (face[19]);
-
- face[16]->Make_connexity (face[8]);
- face[16]->Make_connexity (face[15]);
- face[16]->Make_connexity (face[17]);
-
- face[17]->Make_connexity (face[10]);
- face[17]->Make_connexity (face[16]);
- face[17]->Make_connexity (face[18]);
-
- face[18]->Make_connexity (face[12]);
- face[18]->Make_connexity (face[17]);
- face[18]->Make_connexity (face[19]);
-
- face[19]->Make_connexity (face[14]);
- face[19]->Make_connexity (face[15]);
- face[19]->Make_connexity (face[18]);
-
- return face[0];
-}
-
-void split_all (Triangle *triangle)
-{
- if (triangle->Is_checked ())
- return;
- triangle->Checked ();
-
- triangle->Split ();
-
- if (triangle->Neighbor_ab () != 0)
- split_all (triangle->Neighbor_ab ());
- if (triangle->Neighbor_bc () != 0)
- split_all (triangle->Neighbor_bc ());
- if (triangle->Neighbor_ca () != 0)
- split_all (triangle->Neighbor_ca ());
-}
diff --git a/trunk/glagen/3d/isosahedron.hh b/trunk/glagen/3d/isosahedron.hh
deleted file mode 100644
index f339154..0000000
--- a/trunk/glagen/3d/isosahedron.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// isosahedron.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef ISOSAHEDRON_HH_
-# define ISOSAHEDRON_HH_
-
-#include "triangle.hh"
-
-Triangle *isosahedron (float);
-void split_all (Triangle *);
-
-#endif // ISOCAHEDRON_HH_
diff --git a/trunk/glagen/3d/library.cc b/trunk/glagen/3d/library.cc
deleted file mode 100644
index 19d706f..0000000
--- a/trunk/glagen/3d/library.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// library.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "dot.hh"
-#include "triangle.hh"
-#include "data_glagen.hh"
-#include "simul.hh"
-
-// This visitor applies the given library to each dot
-void library_visitor (void (library)(Dot*, unsigned int),
- bool dynamic,
- Triangle *triangle)
-{
- if (triangle->Is_checked ())
- return;
-
- if (triangle->A ()->Is_checked () == false &&
- (dynamic == true ||
- triangle->A ()->Is_computed () == false))
- {
- library (triangle->A (), triangle->Level ());
- triangle->A ()->Computed ();
- triangle->A ()->Checked ();
- }
- if (triangle->B ()->Is_checked () == false &&
- (dynamic == true ||
- triangle->B ()->Is_computed () == false))
- {
- library (triangle->B (), triangle->Level ());
- triangle->B ()->Computed ();
- triangle->B ()->Checked ();
- }
- if (triangle->C ()->Is_checked () == false &&
- (dynamic == true ||
- triangle->C ()->Is_computed () == false))
- {
- library (triangle->C (), triangle->Level ());
- triangle->C ()->Computed ();
- triangle->C ()->Checked ();
- }
-
- if (triangle->Is_split ())
- {
- library_visitor (library, dynamic, triangle->Child_center ());
- library_visitor (library, dynamic, triangle->Child_a ());
- library_visitor (library, dynamic, triangle->Child_b ());
- library_visitor (library, dynamic, triangle->Child_c ());
- }
-
- triangle->Checked ();
- if (triangle->Father() == NULL)
- {
- if (triangle->Neighbor_ab () != NULL)
- library_visitor (library, dynamic, triangle->Neighbor_ab ());
- if (triangle->Neighbor_bc () != NULL)
- library_visitor (library, dynamic, triangle->Neighbor_bc ());
- if (triangle->Neighbor_ca () != NULL)
- library_visitor (library, dynamic, triangle->Neighbor_ca ());
- }
-}
-
-// Here we call the visitor for each library
-void library_caller (Triangle *triangle)
-{
- void *(lib)(Dot *, unsigned int);
-
- for (int current = 0; glagen.library[current].kind != none; current++)
- {
- library_visitor (glagen.library[current].run,
- glagen.library[current].dynamic,
- triangle);
- glagen.step = glagen.step + 1;
- }
-}
diff --git a/trunk/glagen/3d/library.hh b/trunk/glagen/3d/library.hh
deleted file mode 100644
index acb262f..0000000
--- a/trunk/glagen/3d/library.hh
+++ /dev/null
@@ -1,40 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// library.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef LIBRARY_VISITOR_HH_
-# define LIBRARY_VISITOR_HH_
-
-#include "triangle.hh"
-
-void library_visitor (void *(library)(Dot*, unsigned int),
- bool,
- Triangle *);
-void library_caller (Triangle *);
-
-#endif // LIBRARY_VISITOR_HH_
diff --git a/trunk/glagen/3d/main.cc b/trunk/glagen/3d/main.cc
deleted file mode 100644
index d2d3561..0000000
--- a/trunk/glagen/3d/main.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// main.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <sys/time.h>
-#include <cerrno>
-#include <cmath>
-#include <cstdlib>
-#include "dot.hh"
-#include "data_glagen.hh"
-#include "display.hh"
-#include "frame.hh"
-#include "isosahedron.hh"
-#include "library.hh"
-#include "matrix3d.hh"
-#include "perlin.hh"
-#include "time.hh"
-#include "triangle.hh"
-#include "simul.hh"
-
-glagen_t glagen;
-
-void init_all ()
-{
- float origin[3];
-
- Perlin_init ();
- origin[0] = 0;
- origin[1] = 0;
- origin[2] = -3;
- glagen.observer.frame.Set_origin (origin);
- glagen.observer.altitude = sqrtf (glagen.observer.frame.Origin_X () *
- glagen.observer.frame.Origin_X () +
- glagen.observer.frame.Origin_Y () *
- glagen.observer.frame.Origin_Y () +
- glagen.observer.frame.Origin_Z () *
- glagen.observer.frame.Origin_Z ()) - 1;
- glagen.observer.speed = 0.1 + glagen.observer.altitude / 50;
- glagen.triangles = 0;
-
- init_time ();
-
- //Limite : entre 50000 et 200000...
- glagen.max_triangles = 100000;
- glagen.step = 0;
- glagen.size = 1;
- glagen.square_size = glagen.size * glagen.size;
- //
- // Simulation
- //
- glagen.property = 200;
- // 0.05 et 0.4 is quite good
- glagen.split_dist_limit = 0.05;
- glagen.split_norm_limit = 0.4;
- //
- glagen.ref = isosahedron (glagen.size);
- glagen.step++;
-
- // Debug options
- glagen.display_normal = false;
- glagen.display_planet = true;
- glagen.display_all = false;
- glagen.third_view = false;
- glagen.zoom = true;
- glagen.depth_test = true;
- glagen.light = false;
-}
-
-int main (int narg, char **args)
-{
-// printf("int : %d\n", sizeof (int));
- init_all();
- simule_lib_load();
-
- if (glagen.zoom)
- {
- glagen.current = glagen.ref;
- glagen.ref->Split_visitor ();
- glagen.step = glagen.step + 1;
- glagen.ref->Hide_visitor ();
- }
- else
- {
- split_all (glagen.ref);
- glagen.step++;
- split_all (glagen.ref->Child_center ());
- glagen.step++;
- split_all (glagen.ref->Child_center ()->Child_center ());
- glagen.step++;
- split_all (glagen.ref->Child_center ()->Child_center ()->
- Child_center ());
- glagen.step++;
- split_all (glagen.ref->Child_center ()->Child_center ()->
- Child_center ()->Child_center ());
- glagen.step++;
- glagen.current = glagen.ref->
- Child_center ()->
- Child_center ()->
- Child_center ()->
- Child_center ()->
- Child_center ();
- }
- library_caller (glagen.ref);
- glagen.step++;
- display (&narg, &args);
- return 0;
-}
diff --git a/trunk/glagen/3d/matrix3d.cc b/trunk/glagen/3d/matrix3d.cc
deleted file mode 100644
index c02ac39..0000000
--- a/trunk/glagen/3d/matrix3d.cc
+++ /dev/null
@@ -1,216 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// matrix.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-#include "matrix3d.hh"
-#include "vector.hh"
-
-// =============================================== Constructors and destructors
-
-Matrix33 :: Matrix33 ()
-{
- for (int y = 0; y < 3; y++)
- for (int x = 0; x < 3; x++)
- mat[x][y] = (x == y ? 1 : 0);
-}
-
-Matrix33 :: Matrix33 (const class Matrix33 &source)
-{
- for (int y = 0; y < 3; y++)
- for (int x = 0; x < 3; x++)
- mat[x][y] = source.A(x, y);
-}
-
-Matrix33 :: Matrix33 (const float m[3][3])
-{
- for (int y = 0; y < 3; y++)
- {
- for (int x = 0; x < 3; x++)
- mat[x][y] = m[x][y];
- mat[3][y] = 0;
- }
- mat[0][3] = 0;
- mat[1][3] = 0;
- mat[2][3] = 0;
- mat[3][3] = 1;
-}
-
-Matrix33 :: Matrix33 (const float angle, const Vector &v)
-{
- float c = cosf (angle);
- float s = sinf (angle);
- float t = 1 - c;
- float val[] = {t * v.X () * v.X () + c,
- t * v.X () * v.Y () - s * v.Z (),
- t * v.X () * v.Z () + s * v.Y (),
-
- t * v.X () * v.Y () + s * v.Z (),
- t * v.Y () * v.Y () + c,
- t * v.Y () * v.Z () - s * v.X (),
-
- t * v.X () * v.Z () - s * v.Y (),
- t * v.Y () * v.Z () + s * v.X (),
- t * v.Z () * v.Z () + c};
- for (int j = 0; j < 3; j++)
- for (int i = 0; i < 3; i++)
- mat[i][j] = val[3 * j + i];
-}
-
-Matrix33 :: ~Matrix33 () {}
-
-Matrix44 :: Matrix44 ()
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- mat[x][y] = (x == y ? 1 : 0);
-}
-
-Matrix44 :: Matrix44 (const class Matrix44 &source)
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- mat[x][y] = source.A(x, y);
-}
-
-Matrix44 :: Matrix44 (const class Matrix33 &source)
-{
- for (int y = 0; y < 3; y++)
- for (int x = 0; x < 3; x++)
- mat[x][y] = source.A(x, y);
- mat[3][3] = 1;
-}
-
-Matrix44 :: Matrix44 (const float m[4][4])
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- mat[x][y] = m[x][y];
-}
-
-Matrix44 :: Matrix44 (const float m[3][3])
-{
- for (int y = 0; y < 3; y++)
- {
- for (int x = 0; x < 3; x++)
- mat[x][y] = m[x][y];
- mat[3][y] = 0;
- }
- mat[0][3] = 0;
- mat[1][3] = 0;
- mat[2][3] = 0;
- mat[3][3] = 1;
-}
-
-// Create a translation matrix from a vector
-Matrix44 :: Matrix44(const float colon[3])
-{
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- if (x == y)
- mat[x][y] = 1;
- else
- mat[x][y] = 0;
- mat[3][0] = colon[0];
- mat[3][1] = colon[1];
- mat[3][2] = colon[2];
-}
-
-Matrix44 :: ~Matrix44() {}
-
-
-// ====================================================== The matrix's elements
-
-float Matrix33 :: A(const int x, const int y) const
-{
- if (x >= 0 && x < 3 &&
- y >= 0 && y < 3)
- return mat[x][y];
- else
- return 0;
-}
-
-float Matrix44 :: A(const int x, const int y) const
-{
- if (x >= 0 && x < 4 &&
- y >= 0 && y < 4)
- return mat[x][y];
- else
- return 0;
-}
-
-// Orthonormalize
-void Matrix33 :: OrthonormalizeOrientation ()
-{
- Vector X (mat[0][0], mat[1][0], mat[2][0]);
- Vector Y (mat[0][1], mat[1][1], mat[2][1]);
- Vector Z;
-
- X.Normalize();
- Z = (X ^ Y);
- Z.Normalize();
- Y = (Z ^ X);
- Y.Normalize();
-
- mat[0][0] = X.X (); mat[0][1] = Y.X (); mat[0][2] = Z.X ();
- mat[1][0] = X.Y (); mat[1][1] = Y.Y (); mat[1][2] = Z.Y ();
- mat[2][0] = X.Z (); mat[2][1] = Y.Z (); mat[2][2] = Z.Z ();
-}
-
-
-// ================================================================== Operators
-
-Vector Matrix33 :: operator * (const Vector &v) const
-{
- float out[3];
-
- out[0] = (A (0, 0) * v.X () +
- A (1, 0) * v.Y () +
- A (2, 0) * v.Z ());
- out[1] = (A (0, 1) * v.X () +
- A (1, 1) * v.Y () +
- A (2, 1) * v.Z ());
- out[2] = (A (0, 2) * v.X () +
- A (1, 2) * v.Y () +
- A (2, 2) * v.Z ());
- return Vector (out[0], out[1], out[2]);
-}
-
-Matrix44 Matrix44 :: operator * (const Matrix44 &source) const
-{
- float out[4][4];
-
- for (int y = 0; y < 4; y++)
- for (int x = 0; x < 4; x++)
- out[x][y] = (A(0, y) * source.A(x, 0) +
- A(1, y) * source.A(x, 1) +
- A(2, y) * source.A(x, 2) +
- A(3, y) * source.A(x, 3));
- return Matrix44(out);
-}
diff --git a/trunk/glagen/3d/matrix3d.hh b/trunk/glagen/3d/matrix3d.hh
deleted file mode 100644
index 859f480..0000000
--- a/trunk/glagen/3d/matrix3d.hh
+++ /dev/null
@@ -1,80 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// matrix.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef MATRIX3D_HH_
-# define MATRIX3D_HH_
-
-class Matrix33
-{
-public :
-
- //Constructors and destructor
- Matrix33 ();
- Matrix33 (const class Matrix33 &);
- Matrix33 (const float m[3][3]);
- Matrix33 (const float, const class Vector &);
- ~Matrix33 ();
-
- // Matrix itself
- float A (const int, const int) const;
-
- // Orthonormalize
- void OrthonormalizeOrientation ();
-
- // Operator
- class Vector operator * (const class Vector &) const;
-
-protected :
- float mat[3][3];
-};
-
-class Matrix44
-{
-public :
-
- //Constructors and destructor
- Matrix44 ();
- Matrix44 (const class Matrix44 &);
- Matrix44 (const class Matrix33 &);
- Matrix44 (const float m[3][3]);
- Matrix44 (const float m[4][4]);
- Matrix44 (const float colon[3]);
- ~Matrix44 ();
-
- //Matrix itself
- float A (const int, const int) const;
-
- //Operator
- Matrix44 operator * (const Matrix44 &) const;
-
-protected :
- float mat[4][4];
-};
-
-#endif // MATRIX3D
diff --git a/trunk/glagen/3d/misc.cc b/trunk/glagen/3d/misc.cc
deleted file mode 100644
index caf7264..0000000
--- a/trunk/glagen/3d/misc.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// misc.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-
-//
-// This function is supposed to compute very fast a good approximation
-// of the distance.
-// The quality of this function is very important for the frame-rate
-//
-float Approx_dist (float x, float y, float z)
-{
- // Well, I still have to fond an approximation ^_^
- // I suppose I will use Taylor Lagrange, or something like that.
- return (sqrt (x * x + y * y + z * z));
-}
diff --git a/trunk/glagen/3d/misc.hh b/trunk/glagen/3d/misc.hh
deleted file mode 100644
index 696d5a4..0000000
--- a/trunk/glagen/3d/misc.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// misc.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-
-#ifndef MISC_HH_
-# define MISC_HH_
-
-#include "data_glagen.hh"
-
-float Approx_dist (float, float, float);
-
-#endif // MISC_HH_
diff --git a/trunk/glagen/3d/perlin.cc b/trunk/glagen/3d/perlin.cc
deleted file mode 100644
index 5cb4aee..0000000
--- a/trunk/glagen/3d/perlin.cc
+++ /dev/null
@@ -1,347 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// perlin.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-// Original implementation fo Perlin noice.
-// It can be found on :
-// http://mrl.nyu.edu/~perlin/doc/oscar.html#noise
-//
-// The 4th dimension noise has been added for our needs
-
-// coherent noise function over 1, 2 or 3 dimensions
-// (copyright Ken Perlin)
-
-#include <stdlib.h>
-#include <math.h>
-#include "data_glagen.hh"
-
-#define B 0x100
-#define BM 0xff
-
-#define N 0x1000
-#define NP 12 /* 2^N */
-#define NM 0xfff
-
-static int p[B + B + 2];
-static float g4[B + B + 2][4];
-static float g3[B + B + 2][3];
-static float g2[B + B + 2][2];
-static float g1[B + B + 2];
-
-#define s_curve(t) ( t * t * (3. - 2. * t) )
-
-#define lerp(t, a, b) ( a + t * (b - a) )
-
-#define setup(i,b0,b1,r0,r1)\
- t = vec[i] + N;\
- b0 = ((int)t) & BM;\
- b1 = (b0+1) & BM;\
- r0 = t - (int)t;\
- r1 = r0 - 1.;
-
-float GLG_Perlin_noise_1D (float arg)
-{
- int bx0, bx1;
- float rx0, rx1;
- float sx;
- float t, u, v;
- float vec[1];
-
- vec[0] = arg;
-
- setup(0, bx0,bx1, rx0,rx1);
-
- sx = s_curve(rx0);
-
- u = rx0 * g1[ p[ bx0 ] ];
- v = rx1 * g1[ p[ bx1 ] ];
-
- return lerp(sx, u, v);
-}
-
-float GLG_Perlin_noise_2D (float vec[2])
-{
- int bx0, bx1;
- int by0, by1;
- int b00, b10, b01, b11;
- float rx0, rx1;
- float ry0, ry1;
- float *q, sx, sy;
- float a, b;
- float t, u, v;
- register int i, j;
-
- setup(0, bx0,bx1, rx0,rx1);
- setup(1, by0,by1, ry0,ry1);
-
- i = p[ bx0 ];
- j = p[ bx1 ];
-
- b00 = p[ i + by0 ];
- b10 = p[ j + by0 ];
- b01 = p[ i + by1 ];
- b11 = p[ j + by1 ];
-
- sx = s_curve(rx0);
- sy = s_curve(ry0);
-
-#define at2(rx,ry) ( rx * q[0] + ry * q[1] )
-
- q = g2[ b00 ] ; u = at2(rx0,ry0);
- q = g2[ b10 ] ; v = at2(rx1,ry0);
- a = lerp(sx, u, v);
-
- q = g2[ b01 ] ; u = at2(rx0,ry1);
- q = g2[ b11 ] ; v = at2(rx1,ry1);
- b = lerp(sx, u, v);
-
- return lerp(sy, a, b);
-}
-
-float GLG_Perlin_noise_3D (float vec[3])
-{
- int bx0, bx1;
- int by0, by1;
- int bz0, bz1;
- int b00, b10, b01, b11;
- float rx0, rx1;
- float ry0, ry1;
- float rz0, rz1;
- float *q, sy, sz;
- float a, b, c, d;
- float t, u, v;
- register int i, j;
-
- setup(0, bx0,bx1, rx0,rx1);
- setup(1, by0,by1, ry0,ry1);
- setup(2, bz0,bz1, rz0,rz1);
-
- i = p[ bx0 ];
- j = p[ bx1 ];
-
- b00 = p[ i + by0 ];
- b10 = p[ j + by0 ];
- b01 = p[ i + by1 ];
- b11 = p[ j + by1 ];
-
- t = s_curve(rx0);
- sy = s_curve(ry0);
- sz = s_curve(rz0);
-
-#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
-
- q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
- q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
- a = lerp(t, u, v);
-
- q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
- q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
- b = lerp(t, u, v);
-
- c = lerp(sy, a, b);
-
- q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
- q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
- a = lerp(t, u, v);
-
- q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
- q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
- b = lerp(t, u, v);
-
- d = lerp(sy, a, b);
-
- return lerp(sz, c, d);
-}
-
-float GLG_Perlin_noise_4D (float vec[4])
-{
- int bx0, bx1;
- int by0, by1;
- int bz0, bz1;
- int bt0, bt1;
- register int a0, a1;
- int b00, b10, b01, b11;
- int c000, c001, c010, c011, c100, c101, c110, c111;
- float rx0, rx1;
- float ry0, ry1;
- float rz0, rz1;
- float rt0, rt1;
- float *q, sx, sy, sz, st;
- float a, b, c, d, e, f;
- float t, u, v;
-
- setup(0, bx0,bx1, rx0,rx1);
- setup(1, by0,by1, ry0,ry1);
- setup(2, bz0,bz1, rz0,rz1);
- setup(3, bt0,bt1, rt0,rt1);
-
- a0 = p[ bx0 ];
- a1 = p[ bx1 ];
-
- b00 = p[ a0 + by0 ];
- b10 = p[ a1 + by0 ];
- b01 = p[ a0 + by1 ];
- b11 = p[ a1 + by1 ];
-
- c000 = p[ b00 + bz0 ];
- c100 = p[ b10 + bz0 ];
- c010 = p[ b01 + bz0 ];
- c110 = p[ b11 + bz0 ];
- c001 = p[ b00 + bz1 ];
- c101 = p[ b10 + bz1 ];
- c011 = p[ b01 + bz1 ];
- c111 = p[ b11 + bz1 ];
-
- sx = s_curve(rx0);
- sy = s_curve(ry0);
- sz = s_curve(rz0);
- st = s_curve(rt0);
-
-#define at4(rx, ry, rz, rt) ( rx * q[0] + ry * q[1] + rz * q[2] + rt * q[3])
-
- q = g4[c000 + bt0]; u = at4(rx0, ry0, rz0, rt0);
- q = g4[c100 + bt0]; v = at4(rx1, ry0, rz0, rt0);
- a = lerp(sx, u, v);
-
- q = g4[c010 + bt0]; u = at4(rx0, ry1, rz0, rt0);
- q = g4[c110 + bt0]; v = at4(rx1, ry1, rz0, rt0);
- b = lerp(sx, u, v);
-
- c = lerp (sy, a, b);
-
- q = g4[c001 + bt0]; u = at4(rx0, ry0, rz1, rt0);
- q = g4[c101 + bt0]; v = at4(rx1, ry0, rz1, rt0);
- a = lerp(sx, u, v);
-
- q = g4[c011 + bt0]; u = at4(rx0, ry1, rz1, rt0);
- q = g4[c111 + bt0]; v = at4(rx1, ry1, rz1, rt0);
- b = lerp(sx, u, v);
-
- d = lerp (sy, a, b);
-
-
- e = lerp (sz, c, d);
-
-
- q = g4[c000 + bt1]; u = at4(rx0, ry0, rz0, rt1);
- q = g4[c100 + bt1]; v = at4(rx1, ry0, rz0, rt1);
- a = lerp(sx, u, v);
-
- q = g4[c010 + bt1]; u = at4(rx0, ry1, rz0, rt1);
- q = g4[c110 + bt1]; v = at4(rx1, ry1, rz0, rt1);
- b = lerp(sx, u, v);
-
- c = lerp (sy, a, b);
-
- q = g4[c001 + bt1]; u = at4(rx0, ry0, rz1, rt1);
- q = g4[c101 + bt1]; v = at4(rx1, ry0, rz1, rt1);
- a = lerp(sx, u, v);
-
- q = g4[c011 + bt1]; u = at4(rx0, ry1, rz1, rt1);
- q = g4[c111 + bt1]; v = at4(rx1, ry1, rz1, rt1);
- b = lerp(sx, u, v);
-
- d = lerp (sy, a, b);
-
-
- f = lerp (sz, c, d);
-
-
- return lerp (st, e, f);
-}
-
-static void normalize2 (float v[2])
-{
- float s;
-
- s = sqrtf(v[0] * v[0] + v[1] * v[1]);
- v[0] = v[0] / s;
- v[1] = v[1] / s;
-}
-
-static void normalize3 (float v[3])
-{
- float s;
-
- s = sqrtf(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
- v[0] = v[0] / s;
- v[1] = v[1] / s;
- v[2] = v[2] / s;
-}
-
-static void normalize4 (float v[4])
-{
- float s;
-
- s = sqrtf(v[0] * v[0] + v[1] * v[1] + v[2] * v[2] + v[3] * v[3]);
- v[0] = v[0] / s;
- v[1] = v[1] / s;
- v[2] = v[2] / s;
- v[3] = v[3] / s;
-}
-
-void Perlin_init ()
-{
- int i, j, k;
-
- for (i = 0 ; i < B ; i++)
- {
- p[i] = i;
-
- g1[i] = (float)((rand() % (B + B)) - B) / B;
-
- for (j = 0 ; j < 2 ; j++)
- g2[i][j] = (float)((rand() % (B + B)) - B) / B;
- normalize2(g2[i]);
-
- for (j = 0 ; j < 3 ; j++)
- g3[i][j] = (float)((rand() % (B + B)) - B) / B;
- normalize3(g3[i]);
-
- for (j = 0 ; j < 4 ; j++)
- g4[i][j] = (float)((rand() % (B + B)) - B) / B;
- normalize4(g4[i]);
- }
-
- while (--i)
- {
- k = p[i];
- p[i] = p[j = rand() % B];
- p[j] = k;
- }
-
- for (i = 0 ; i < B + 2 ; i++)
- {
- p[B + i] = p[i];
- g1[B + i] = g1[i];
- for (j = 0 ; j < 2 ; j++)
- g2[B + i][j] = g2[i][j];
- for (j = 0 ; j < 3 ; j++)
- g3[B + i][j] = g3[i][j];
- }
-}
diff --git a/trunk/glagen/3d/perlin.hh b/trunk/glagen/3d/perlin.hh
deleted file mode 100644
index 3deb1c9..0000000
--- a/trunk/glagen/3d/perlin.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// perlin.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef PERLIN_HH_
-# define PERLIN_HH_
-
-float GLG_Perlin_noise_1D (float);
-float GLG_Perlin_noise_2D (float vec[2]);
-float GLG_Perlin_noise_3D (float vec[3]);
-float GLG_Perlin_noise_4D (float vec[4]);
-void Perlin_init ();
-
-#endif // PERLIN_HH_
diff --git a/trunk/glagen/3d/simul.cc b/trunk/glagen/3d/simul.cc
deleted file mode 100644
index d68daa5..0000000
--- a/trunk/glagen/3d/simul.cc
+++ /dev/null
@@ -1,409 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// simul.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "dot.hh"
-#include "data_glagen.hh"
-#include "perlin.hh"
-
-//
-// A garder : une librairie de simulation du Soleil
-//
-void surface_solaire (Dot *m, unsigned int)
-{
- property_t *property;
- surface_t *data;
- float param[4];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = m->Property (0);
- data = static_cast <surface_t *> (property->data);
- }
-
- param[0] = 10 * m->x () * 2;
- param[1] = 10 * m->y () * 2;
- param[2] = 10 * m->z () * 2;
- param[3] = glagen.float_time;
- sum = GLG_Perlin_noise_4D (param) / 40.0;
- param[0] = 20 * m->x () * 2;
- param[1] = 20 * m->y () * 2;
- param[2] = 20 * m->z () * 2;
- param[3] = glagen.float_time;
- sum = sum + GLG_Perlin_noise_4D (param) / 80.0;
- param[0] = 40 * m->x () * 2;
- param[1] = 40 * m->y () * 2;
- param[2] = 40 * m->z () * 2;
- param[3] = glagen.float_time;
- sum = sum + GLG_Perlin_noise_4D (param) / 160.0;
- data->height = 1.5 * sum;
-
- data->red = 1;
- data->green = (1 + 40 * data->height) / 2;
- data->blue = (data->height * data->height * 1600);
- data->alpha = (1 + 40 * data->height) / 2;
-}
-
-void atmosphere_solaire (Dot *m, unsigned int)
-{
- property_t *property;
- surface_t *data;
- float param[4];
- float sum;
-
- for (int layer = 0; layer < 100; layer++)
- {
- if (m->Property (layer + 1) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (layer + 1, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (layer + 1));
- data = static_cast <surface_t *> (property->data);
- }
- param[0] = 3 * m->x () * 2;
- param[1] = 3 * m->y () * 2;
- param[2] = 3 * m->z () * 2;
- param[3] = (-(layer)/3.0 + glagen.float_time + 20) / 20.0;
- sum = GLG_Perlin_noise_4D (param);
- sum = sum * sum;
- sum = sum * sum;
- data->height = 0.01 + 0.006 * layer;
- data->red = 1;
- data->green = 0.8 - 7 * sum;
- data->blue = 0;
- data->alpha = 0.005 + (120 * sum) / (sqrtf((layer + 1.0) / 71) * 71);
- }
-}
-
-//
-// Un essai de simulation de sol
-//
-void essai_terrain (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[3];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
-
- if (sum < 0)
- data->height = 0;
- else
- data->height = sum; // 10;
-
- if (data->height <= 0)
- {
- data->red = 0.0;
- data->green = 0.015 * (1 - sum);
- data->blue = 0.40 * (1 - sum);
- }
- else
- {
- if (data->height < 0.005)
- {
- data->red = 0.52;
- data->green = 0.46;
- data->blue = 0.28;
- }
- else
- if (data->height > 0.04)
- {
- if (data->height > 0.0055)
- {
- data->red = 0.9 + 4 * data->height;
- data->green = 0.9 + 4 * data->height;
- data->blue = 0.9 + 4 * data->height;
- }
- else
- {
- data->red = 0.55;
- data->green = 0.41;
- data->blue = 0.28;
- }
- }
- else
- {
- data->red = 0.35;
- data->green = 0.5;
- data->blue = 0.21;
- }
- }
- data->alpha = 1;
-}
-
-//
-// Un autre essai de simulation de sol
-//
-void essai_terrain_mono (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[3];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
-
-// if (sum < 0)
-// data->height = 0;
-// else
- data->height = sum * 2;
-
- data->red = 1;
- data->green = 1;
- data->blue = 1;
- data->alpha = 1;
-}
-
-//
-// La planete rouge
-//
-void essai_mars (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[3];
- float sum;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = m->x () * 3;
- param[1] = m->y () * 3;
- param[2] = m->z () * 3;
- sum = sum + GLG_Perlin_noise_3D (param) / 10.0;
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = m->x () * 3 * alpha;
- param[1] = m->y () * 3 * alpha;
- param[2] = m->z () * 3 * alpha;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
-
- //
- // - 0.2 < sum < 0.2
- //
-
- data->height = sum;
-
- if (data->height <= 0)
- {
-// data->red = 0.0;
-// data->green = 1.0;
-// data->blue = 1.0;
- data->red = 0.07 + 0.70 / (-sum);
- data->green = 0.07 + 0.20 / (-sum);
- data->blue = 0.05;
- }
- else
- {
- data->red = 0.77 + (1.05 * sum);
- data->green = 0.27 + (1.25 * sum);
- data->blue = 0.05 + (0.17 * sum);
- }
- data->alpha = 1;
-}
-
-//
-// Un effet colore sympatique
-//
-void essai_sympa (Dot *m, unsigned int level)
-{
- property_t *property;
- surface_t *data;
- unsigned int alpha;
- float param[4];
- float sum;
- int sum_int;
-
- if (m->Property (0) == NULL)
- {
- property = new property_t; // delete : dot.cc l59
- property->kind = surface;
- property->size = sizeof (surface_t);
- data = new surface_t; // delete : dot.cc l58
- property->data = data;
- m->Set_property (0, property);
- }
- else
- {
- property = static_cast <property_t *> (m->Property (0));
- data = static_cast <surface_t *> (property->data);
- }
-
- sum = 0;
- alpha = 1;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- param[3] = glagen.float_time;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- for (unsigned int current = 0; current < 2 * level; current++)
- {
- alpha = 2 * alpha;
- param[0] = alpha * m->x () * 3;
- param[1] = alpha * m->y () * 3;
- param[2] = alpha * m->z () * 3;
- param[3] = alpha * glagen.float_time;
- sum = sum + GLG_Perlin_noise_3D (param) / (10.0 * alpha);
- }
- data->height = 0;
- sum_int = (int)(1200 * ((10 * sum) + 0.5));
-// data->red = ((sum_int % 200) * 6) / 1200.0;
-// data->green = ((sum_int % 120) * 10) / 1200.0;
-// data->blue = ((sum_int % 100) * 12) / 1200.0;
- data->red = ((sum_int % 1200) * 1) / 1200.0;
- data->green = ((sum_int % 1200) * 1) / 1200.0;
- data->blue = ((sum_int % 600) * 2) / 1200.0;
- data->alpha = 1;
-}
-
-void simule_lib_load ()
-{
-// glagen.library[0].kind = none;
-
-// glagen.library[0].kind = surface;
-// glagen.library[0].dynamic = false;
-// glagen.library[0].run = essai_terrain;
-// glagen.library[0].name = "Terrain";
-
-// glagen.library[0].kind = surface;
-// glagen.library[0].dynamic = false;
-// glagen.library[0].run = essai_terrain_mono;
-// glagen.library[0].name = "Relief";
-
-// glagen.library[0].kind = surface;
-// glagen.library[0].dynamic = false;
-// glagen.library[0].run = essai_sympa;
-// glagen.library[0].name = "Couleurs";
-
- glagen.library[0].kind = surface;
- glagen.library[0].dynamic = true;
- glagen.library[0].run = surface_solaire;
- glagen.library[0].name = "surface_solaire";
-
-// glagen.library[1].kind = surface;
-// glagen.library[1].dynamic = true;
-// glagen.library[1].run = atmosphere_solaire;
-// glagen.library[1].name = "atmosphere_solaire";
-
- // Don't forget the end marker :
- glagen.library[1].kind = none;
-}
diff --git a/trunk/glagen/3d/simul.hh b/trunk/glagen/3d/simul.hh
deleted file mode 100644
index cf2bd68..0000000
--- a/trunk/glagen/3d/simul.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// simul.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef SIMUL_HH_
-# define SIMUL_HH_
-
-#include "dot.hh"
-
-void surface_solaire (Dot *, unsigned int);
-void atmosphere_solaire (Dot *, unsigned int);
-void essai_terrain (Dot *, unsigned int);
-void simule_lib_load ();
-
-
-#endif // SIMUL_HH_
diff --git a/trunk/glagen/3d/time.hh b/trunk/glagen/3d/time.hh
deleted file mode 100644
index 8afe7ed..0000000
--- a/trunk/glagen/3d/time.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// time.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef TIME_HH_
-# define TIME_HH_
-
-void init_time ();
-void update_time ();
-
-#endif // TIME_HH_
diff --git a/trunk/glagen/3d/time_unix.cc b/trunk/glagen/3d/time_unix.cc
deleted file mode 100644
index 013e2a6..0000000
--- a/trunk/glagen/3d/time_unix.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// time_unix.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <sys/time.h>
-#include <cerrno>
-#include "data_glagen.hh"
-
-
-void init_time ()
-{
- if (gettimeofday (&(glagen.time), NULL) != 0)
- exit (errno);
- glagen.start_time = glagen.time.tv_sec;
- glagen.time.tv_sec = 0;
- glagen.float_time = (glagen.time.tv_usec / 1000) / 1000.0;
-}
-
-void update_time ()
-{
- if (gettimeofday (&(glagen.time), NULL) != 0)
- exit (errno);
- glagen.time.tv_sec = glagen.time.tv_sec - glagen.start_time;
- glagen.float_time = (glagen.time.tv_sec +
- (glagen.time.tv_usec / 1000) / 1000.0);
-}
diff --git a/trunk/glagen/3d/time_windows.cc b/trunk/glagen/3d/time_windows.cc
deleted file mode 100644
index 32a5d3d..0000000
--- a/trunk/glagen/3d/time_windows.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// time_windows.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <windows.h>
-#include "data_glagen.hh"
-
-void init_time ()
-{
- int s = GetTickCount() / 1000;
- int ms = GetTickCount() % 1000;
-
- glagen.start_time = s;
- glagen.time.tv_sec = 0;
- glagen.time.tv_usec = ms * 1000;
- glagen.float_time = (glagen.time.tv_usec / 1000) / 1000.0;
-}
-
-void update_time ()
-{
- int s = GetTickCount() / 1000;
- int ms = GetTickCount() % 1000;
-
- glagen.time.tv_sec = s - glagen.start_time;
- glagen.time.tv_usec = ms * 1000;
- glagen.float_time = (glagen.time.tv_sec +
- (glagen.time.tv_usec / 1000) / 1000.0);
-}
diff --git a/trunk/glagen/3d/triangle.cc b/trunk/glagen/3d/triangle.cc
deleted file mode 100644
index ee80216..0000000
--- a/trunk/glagen/3d/triangle.cc
+++ /dev/null
@@ -1,729 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// triangle.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include <cstdlib>
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "misc.hh"
-#include "triangle.hh"
-#include "vector.hh"
-
-// ================================================= Constructor and destructor
-
-Triangle :: Triangle (Dot *a,
- Dot *b,
- Dot *c,
- Triangle *father):
- _a(a), _b(b), _c(c),
- _neighbor_ab(NULL), _neighbor_bc(NULL), _neighbor_ca(NULL),
- _father(father),
- _child_a(NULL), _child_b(NULL), _child_c(NULL), _child_center(NULL),
- _visible(true)
-{
- Vector v1;
- Vector v2;
-
- glagen.triangles = glagen.triangles + 1;
- if (glagen.triangles > glagen.max_triangles)
- exit (1);
- if (father == NULL)
- _level = 0;
- else
- _level = father->Level () + 1;
-
- a->Use (father, this);
- b->Use (father, this);
- c->Use (father, this);
-
- _center = Vector ((a->x () + b->x () + c-> x()) / 3,
- (a->y () + b->y () + c-> y()) / 3,
- (a->z () + b->z () + c-> z()) / 3);
-
- v1 = Vector (a->x () - b->x (), a->y () - b->y (), a->z () - b->z ());
- v2 = Vector (a->x () - c->x (), a->y () - c->y (), a->z () - c->z ());
- _normal = Vector (v1 ^ v2);
- _size = _normal.Norm ();
- _normal = _normal / _size;
- _normal_real = _normal;
- _size = sqrtf (_size / 2);
-
- step = glagen.step - 1;
-}
-
-Triangle :: ~Triangle ()
-{
- if (_child_center != NULL)
- {
- delete _child_center;
- delete _child_a;
- delete _child_b;
- delete _child_c;
- }
-
- // Del the old connexity
- if (_neighbor_ab != NULL)
- _neighbor_ab->Del_connexity (this);
- if (_neighbor_bc != NULL)
- _neighbor_bc->Del_connexity (this);
- if (_neighbor_ca != NULL)
- _neighbor_ca->Del_connexity (this);
-
- // Tell the vertices they aren't used by this triangle anymore
- if (_a->Drop (this, _father))
- delete _a;
- if (_b->Drop (this, _father))
- delete _b;
- if (_c->Drop (this, _father))
- delete _c;
-
- if (_father != NULL)
- _father->Child_dead (this);
-
- glagen.triangles = glagen.triangles - 1;
-}
-
-
-// ======================================================================= Read
-
-// The level
-unsigned int Triangle :: Level () const { return _level; }
-
-// The vertices
-Dot *Triangle :: A () const { return _a; }
-Dot *Triangle :: B () const { return _b; }
-Dot *Triangle :: C () const { return _c; }
-
-// The neighborhood
-Triangle *Triangle :: Neighbor_ab () const { return _neighbor_ab; }
-Triangle *Triangle :: Neighbor_bc () const { return _neighbor_bc; }
-Triangle *Triangle :: Neighbor_ca () const { return _neighbor_ca; }
-
-// The father
-Triangle *Triangle :: Father () const { return _father; }
-
-// The childs
-Triangle *Triangle :: Child_a() const { return _child_a; }
-Triangle *Triangle :: Child_b() const { return _child_b; }
-Triangle *Triangle :: Child_c() const { return _child_c; }
-Triangle *Triangle :: Child_center() const { return _child_center; }
-Triangle *Triangle :: Child (Dot *match) const
-{
- if (match == _a)
- return _child_a;
- if (match == _b)
- return _child_b;
- if (match == _c)
- return _child_c;
- return NULL;
-}
-
-Vector &Triangle :: Normal () { return _normal; }
-Vector &Triangle :: Normal_real () { return _normal_real; }
-
-float Triangle :: Size () const { return _size; }
-
-// Is this triangle split ?
-bool Triangle :: Is_split () const
-{
- return (_child_center != NULL);
-}
-
-// In the current turn, has this triangle been checked ?
-bool Triangle :: Is_checked () const
-{
- return (step == glagen.step);
-}
-
-// According to the position of the observer, does this triangle
-// need to be split ?
-float Triangle :: To_split () const
-{
- float x = _center.X () - glagen.observer.frame.Origin_X ();
- float y = _center.Y () - glagen.observer.frame.Origin_Y ();
- float z = _center.Z () - glagen.observer.frame.Origin_Z ();
-// float dist = x * x + y * y + z * z;
- float dist = Approx_dist(x, y, z);
-// float alpha = dist / (_size * _size);
- float alpha = (dist * dist) / (_size * _size);
-
- // Special case :
- // if over the horizon, the result is increased
-// if (dist > 100 * glagen.observer.altitude * glagen.observer.altitude)
- if (dist > 10 * glagen.observer.altitude)
- alpha = alpha * alpha / 2;
-// if (dist > 1000 * glagen.observer.altitude * glagen.observer.altitude)
- if (dist > 32 * glagen.observer.altitude)
- alpha = alpha * alpha / 2;
- if (!_visible)
- alpha = (alpha * alpha) / 2;
- return (alpha);
-}
-
-// According to the position of the observer, does this triangle
-// need to be merged ?
-bool Triangle :: Is_visible () const { return _visible; }
-
-// ====================================================================== Write
-
-// This triangle must set a reference to the given other one
-void Triangle :: Make_connexity (Triangle *neighborhood)
-{
- // Find on which side is the other triangle and then set the connexity
- if ((neighborhood->A () == _a)
- || (neighborhood->B () == _a)
- || (neighborhood->C () == _a))
- {
- if ((neighborhood->A () == _b)
- || (neighborhood->B () == _b)
- || (neighborhood->C () == _b))
- _neighbor_ab = neighborhood;
- else
- _neighbor_ca = neighborhood;
- }
- else
- _neighbor_bc = neighborhood;
-}
-
-// This triangle must forget its reference to the given other one
-void Triangle :: Del_connexity (Triangle *related)
-{
- // Find the connexity and delete it
- if (_neighbor_ab == related)
- _neighbor_ab = NULL;
- if (_neighbor_bc == related)
- _neighbor_bc = NULL;
- if (_neighbor_ca == related)
- _neighbor_ca = NULL;
-}
-
-// The split function
-void Triangle :: Split ()
-{
- Dot *d;
- Dot *e;
- Dot *f;
- Triangle *neighbor_af;
- Triangle *neighbor_ae;
- Triangle *neighbor_bd;
- Triangle *neighbor_bf;
- Triangle *neighbor_ce;
- Triangle *neighbor_cd;
-
- // Test if the triangle is already split
- if (Is_split ())
- return;
-
- // Check the differences of iterations
- if (_neighbor_ab == NULL || _neighbor_bc == NULL || _neighbor_ca == NULL)
- _father->Split_neighbor();
-
- // Find / create vertex
- if (_neighbor_bc->Is_split ())
- {
- // Identify and save the future connexity
- neighbor_bd = _neighbor_bc->Child (_b);
- neighbor_cd = _neighbor_bc->Child (_c);
-
- // Pop the vertex to use
- if (neighbor_bd->B () == neighbor_cd->C ())
- d = neighbor_bd->B ();
- else
- d = neighbor_bd->C ();
- }
- else
- {
- // Create the vertex and set the connexity to NULL
- d = _b->Middle (_c); // new ; delete : triangle.cc l99, 101, 103
- neighbor_bd = NULL;
- neighbor_cd = NULL;
- }
-
- // The same for each side
- if (_neighbor_ca->Is_split ())
- {
- neighbor_ce = _neighbor_ca->Child (_c);
- neighbor_ae = _neighbor_ca->Child (_a);
- if (neighbor_ce->B () == neighbor_ae->C ())
- e = neighbor_ce->B ();
- else
- e = neighbor_ce->C ();
- }
- else
- {
- e = _c->Middle (_a); // new ; delete : triangle.cc l99, 101, 103
- neighbor_ce = NULL;
- neighbor_ae = NULL;
- }
-
- if (_neighbor_ab->Is_split ())
- {
- neighbor_af = _neighbor_ab->Child (_a);
- neighbor_bf = _neighbor_ab->Child (_b);
- if (neighbor_af->B () == neighbor_bf->C ())
- f = neighbor_af->B ();
- else
- f = neighbor_af->C ();
- }
- else
- {
- f = _a->Middle (_b); // new ; delete : triangle.cc l99, 101, 103
- neighbor_af = NULL;
- neighbor_bf = NULL;
- }
-
- // Create triangles
- _child_center = new Triangle (d, e, f, this); // delete : triangle.cc l90
- _child_a = new Triangle (_a, f, e, this); // delete : triangle.cc l91
- _child_b = new Triangle (_b, d, f, this); // delete : triangle.cc l92
- _child_c = new Triangle (_c, e, d, this); // delete : triangle.cc l93
-
- // Set the final connexity
- if (neighbor_af != NULL)
- {
- _child_a->Make_connexity (neighbor_af);
- neighbor_af->Make_connexity (_child_a);
- }
- if (neighbor_ae != NULL)
- {
- _child_a->Make_connexity (neighbor_ae);
- neighbor_ae->Make_connexity (_child_a);
- }
- if (neighbor_bd != NULL)
- {
- _child_b->Make_connexity (neighbor_bd);
- neighbor_bd->Make_connexity (_child_b);
- }
- if (neighbor_bf != NULL)
- {
- _child_b->Make_connexity (neighbor_bf);
- neighbor_bf->Make_connexity (_child_b);
- }
- if (neighbor_ce != NULL)
- {
- _child_c->Make_connexity (neighbor_ce);
- neighbor_ce->Make_connexity (_child_c);
- }
- if (neighbor_cd != NULL)
- {
- _child_c->Make_connexity (neighbor_cd);
- neighbor_cd->Make_connexity (_child_c);
- }
-
- _child_a->Make_connexity (_child_center);
- _child_b->Make_connexity (_child_center);
- _child_c->Make_connexity (_child_center);
- _child_center->Make_connexity (_child_a);
- _child_center->Make_connexity (_child_b);
- _child_center->Make_connexity (_child_c);
-
- // Check for chained reactions
- if (_neighbor_ab != NULL)
- _neighbor_ab->Check_T ();
- if (_neighbor_bc != NULL)
- _neighbor_bc->Check_T ();
- if (_neighbor_ca != NULL)
- _neighbor_ca->Check_T ();
-}
-
-// Check if a triangle needs to be split just because too many
-// triangles in the neighborhood are split.
-void Triangle :: Check_T ()
-{
- int warning;
-
- // The T problem only occurs if the triangle isn't Split
- if (_child_center != NULL)
- return;
- warning = 0;
- if (_neighbor_ab != NULL)
- if (_neighbor_ab->Is_split ())
- warning = warning + 1;
- if (_neighbor_bc != NULL)
- if (_neighbor_bc->Is_split ())
- warning = warning + 1;
- if (_neighbor_ca != NULL)
- if (_neighbor_ca->Is_split ())
- warning = warning + 1;
- if (warning > 1)
- Split ();
-}
-
-// The big merging function : we are not sure it will really merge
-// the triangle, but at least, it will merge the children.
-void Triangle :: Merge ()
-{
- unsigned char i;
-
- if (Is_split())
- {
- // First we merge the children
- _child_center->Merge_simple ();
- _child_a->Merge_simple ();
- _child_b->Merge_simple ();
- _child_c->Merge_simple ();
-
- // Then we check the neighborhood
- i = 0;
- if (_neighbor_ab != NULL)
- if (_neighbor_ab->Is_split ())
- {
- _neighbor_ab->Front_attack (_a, _b);
- i = i + 1;
- }
- if (_neighbor_bc != NULL)
- if (_neighbor_bc->Is_split ())
- {
- _neighbor_bc->Front_attack (_b, _c);
- i = i + 1;
- }
- if (_neighbor_ca != NULL)
- if (_neighbor_ca->Is_split ())
- {
- _neighbor_ca->Front_attack (_c, _a);
- i = i + 1;
- }
-
- // If there's only one split neighbor triangle, then we can
- // also destroy the children. Else we can't because it would
- // have too much unexpected effects
- if (i < 2)
- {
- // Destroy the child
- delete _child_center;
- delete _child_a;
- delete _child_b;
- delete _child_c;
-
- // Don't forget to change the pointers !
- _child_center = NULL;
- _child_a = NULL;
- _child_b = NULL;
- _child_c = NULL;
- }
- }
-}
-
-// Just a merge function without T case management
-void Triangle :: Merge_simple ()
-{
- if (_child_center != NULL)
- {
- // Recursive merge
- _child_center->Merge_simple ();
- _child_a->Merge_simple ();
- _child_b->Merge_simple ();
- _child_c->Merge_simple ();
-
- // Destroy the child
- delete _child_center;
- delete _child_a;
- delete _child_b;
- delete _child_c;
-
- // Don't forget to change the pointers !
- _child_center = NULL;
- _child_a = NULL;
- _child_b = NULL;
- _child_c = NULL;
- }
-}
-
-// Check the triangle for T cases when the neigbor triangle is merged
-void Triangle :: Front_attack (Dot *quad_a, Dot *quad_d)
-{
- Dot *quad_b;
- Dot *quad_c;
- Triangle *triangle_ab;
- Triangle *triangle_cd;
- Triangle *last_child;
-
- triangle_ab = Child (quad_a);
- triangle_cd = Child (quad_d);
- if (quad_a == _a)
- {
- if (quad_d == _b)
- last_child = _child_c;
- else
- last_child = _child_b;
- }
- else
- if (quad_a == _b)
- {
- if (quad_d == _c)
- last_child = _child_a;
- else
- last_child = _child_c;
- }
- else
- if (quad_d == _a)
- last_child = _child_b;
- else
- last_child = _child_a;
-
- triangle_ab->Merge_simple ();
- _child_center->Merge_simple ();
- triangle_cd->Merge_simple ();
-
- if (triangle_ab->B () == triangle_cd->C ())
- {
- quad_b = triangle_ab->C ();
- quad_c = triangle_cd->B ();
- if (triangle_ab->Neighbor_ca () != NULL)
- if (triangle_ab->Neighbor_ca ()->Is_split ())
- triangle_ab->Neighbor_ca ()->Front_attack (quad_a, quad_b);
- if (triangle_cd->Neighbor_ab () != NULL)
- if (triangle_cd->Neighbor_ab ()->Is_split ())
- triangle_cd->Neighbor_ab ()->Front_attack (quad_c, quad_d);
- }
- else
- {
- quad_b = triangle_ab->B ();
- quad_c = triangle_cd->C ();
- if (triangle_ab->Neighbor_ab () != NULL)
- if (triangle_ab->Neighbor_ab ()->Is_split ())
- triangle_ab->Neighbor_ab ()->Front_attack (quad_a, quad_b);
- if (triangle_cd->Neighbor_ca () != NULL)
- if (triangle_cd->Neighbor_ca ()->Is_split ())
- triangle_cd->Neighbor_ca ()->Front_attack (quad_c, quad_d);
- }
- if (last_child->Is_split ())
- last_child->Front_attack (quad_b, quad_c);
-}
-
-// Check all the triangles to apply split or merge
-void Triangle :: Split_visitor ()
-{
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- float to_split = To_split ();
-
- if (to_split != 0)
- {
- if (to_split > 350)
- Merge ();
- else
- {
- if (glagen.triangles <= glagen.max_triangles)
- if (to_split < 300)
- if (false == Is_split ())
- Split ();
-
- if (Is_split ())
- {
- // We check the childs
- _child_center->Split_visitor ();
- _child_a->Split_visitor ();
- _child_b->Split_visitor ();
- _child_c->Split_visitor ();
- }
- }
- }
-
- // If there's no father, it means it's one of the root
- // triangles and we can go to check the neighborhood
- if (NULL == _father)
- {
- _neighbor_ab->Split_visitor ();
- _neighbor_bc->Split_visitor ();
- _neighbor_ca->Split_visitor ();
- }
-}
-
-// The visitor that computes if a triangle is visible or not.
-bool Triangle :: Hide_visitor ()
-{
- if (step != glagen.step)
- {
- step = glagen.step;
- if (Is_split ())
- {
- _visible = _child_a->Hide_visitor ();
- _visible = _child_b->Hide_visitor () || _visible;
- _visible = _child_c->Hide_visitor () || _visible;
- _visible = _child_center->Hide_visitor () || _visible;
- }
- else
- {
- // Let compute if it is visible...
-
- // We construct the vector from the center of to planet to
- // the observer
- Vector v = Vector (glagen.observer.frame.Origin_X () - _center.X (),
- glagen.observer.frame.Origin_Y () - _center.Y (),
- glagen.observer.frame.Origin_Z () -
- _center.Z ());
- // We compute the scalar product to know how far it is
- _visible = ((_normal * v) > 0);
-
- // Now, let compute if it is in the vision field
- if (_visible == true)
- {
- v.Approx_normalize ();
- _visible = (v * glagen.observer.frame.Basis_Z () < -0.70);
- }
- }
-
- // If there's no father, it means it's one of the root
- // triangles and we can go to check the neighborhood
- if (NULL == _father)
- {
- _neighbor_ab->Hide_visitor ();
- _neighbor_bc->Hide_visitor ();
- _neighbor_ca->Hide_visitor ();
- }
- }
- return _visible;
-}
-
-// Called by a child when deleted
-void Triangle :: Child_dead (Triangle *child)
-{
- if (_child_center == child)
- _child_center = NULL;
- if (_child_a == child)
- _child_a = NULL;
- if (_child_b == child)
- _child_b = NULL;
- if (_child_c == child)
- _child_c = NULL;
-}
-
-// This triangle is checked
-void Triangle :: Checked () { step = glagen.step; }
-
-
-// ====================================================================== Other
-
-// Split the neighborhood triangles
-void Triangle :: Split_neighbor ()
-{
- if (_neighbor_ab != NULL)
- _neighbor_ab->Split ();
- if (_neighbor_bc != NULL)
- _neighbor_bc->Split ();
- if (_neighbor_ca != NULL)
- _neighbor_ca->Split ();
-}
-
-// Update the normal vector, if the triangle is moving.
-void Triangle :: Update_normal ()
-{
- surface_t *surface;
- float adjust = 0;
-
- // Get the position of the dot A
- if (glagen.display_planet == true)
- {
- if (NULL == _a->Property (0))
- adjust = 0;
- else
- {
- surface = static_cast <surface_t *> (_a->Property (0)->data);
- if (NULL == surface)
- adjust = 0;
- else
- adjust = surface->height;
- }
- }
- float ax = _a->x () * (glagen.size + adjust);
- float ay = _a->y () * (glagen.size + adjust);
- float az = _a->z () * (glagen.size + adjust);
-
- // Get the position of the dot B
- if (glagen.display_planet)
- {
- if (NULL == _b->Property (0))
- adjust = 0;
- else
- {
- surface = static_cast <surface_t *> (_b->Property (0)->data);
- if (NULL == surface)
- adjust = 0;
- else
- adjust = surface->height;
- }
- }
- float bx = _b->x () * (glagen.size + adjust);
- float by = _b->y () * (glagen.size + adjust);
- float bz = _b->z () * (glagen.size + adjust);
-
- // Get the position of the dot C
- if (glagen.display_planet)
- {
- if (NULL == _c->Property (0))
- adjust = 0;
- else
- {
- surface = static_cast <surface_t *> (_c->Property (0)->data);
- if (NULL == surface)
- adjust = 0;
- else
- adjust = surface->height;
- }
- }
- float cx = _c->x () * (glagen.size + adjust);
- float cy = _c->y () * (glagen.size + adjust);
- float cz = _c->z () * (glagen.size + adjust);
-
- Vector v1 = Vector (ax - bx, ay - by, az - bz);
- Vector v2 = Vector (ax - cx, ay - cy, az - cz);
- _normal_real = Vector (v1 ^ v2);
- _normal_real.Normalize ();
-}
-
-void Triangle :: Update_normal_visitor ()
-{
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- Update_normal ();
-
- if (_child_center != NULL)
- {
- _child_center->Update_normal_visitor ();
- _child_a->Update_normal_visitor ();
- _child_b->Update_normal_visitor ();
- _child_c->Update_normal_visitor ();
- }
-
- if (NULL == _father)
- {
- _neighbor_ab->Update_normal_visitor ();
- _neighbor_bc->Update_normal_visitor ();
- _neighbor_ca->Update_normal_visitor ();
- }
-
- _a->Update_normal ();
- _b->Update_normal ();
- _c->Update_normal ();
-}
diff --git a/trunk/glagen/3d/triangle.hh b/trunk/glagen/3d/triangle.hh
deleted file mode 100644
index 3a3903f..0000000
--- a/trunk/glagen/3d/triangle.hh
+++ /dev/null
@@ -1,122 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// triangle.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef TRIANGLE_HH_
-# define TRIANGLE_HH_
-
-#include <cstdlib>
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "vector.hh"
-
-class Triangle
-{
-public:
-
- //Constructor and destructor
- Triangle (class Dot *, class Dot *, class Dot *, Triangle *);
- ~Triangle ();
-
- // Read
- unsigned int Level () const;
-
- Dot *A () const;
- Dot *B () const;
- Dot *C () const;
-
- Triangle *Neighbor_ab () const;
- Triangle *Neighbor_bc () const;
- Triangle *Neighbor_ca () const;
-
- Triangle *Father () const;
-
- Triangle *Child_a() const;
- Triangle *Child_b() const;
- Triangle *Child_c() const;
- Triangle *Child_center() const;
- Triangle *Child (Dot *match) const;
-
- Vector &Normal ();
- Vector &Normal_real ();
-
- float Size () const;
- bool Is_split () const;
- bool Is_checked () const;
- float To_split () const;
- bool Is_visible () const;
-
- // Write
- void Make_connexity (Triangle *);
- void Del_connexity (Triangle *);
- void Split ();
- void Check_T ();
- void Merge ();
- void Merge_simple ();
- void Front_attack (Dot *, Dot *);
- void Split_visitor ();
- bool Hide_visitor ();
- void Child_dead (Triangle *);
- void Checked ();
-
- // Other
- void Split_neighbor ();
- void Update_normal ();
- void Update_normal_visitor ();
- bool T_case (const unsigned int);
- void Display (const unsigned int);
-
-protected:
- unsigned int _level;
-
- Dot *_a;
- Dot *_b;
- Dot *_c;
-
- Triangle *_neighbor_ab;
- Triangle *_neighbor_bc;
- Triangle *_neighbor_ca;
-
- Triangle *_father;
-
- Triangle *_child_a;
- Triangle *_child_b;
- Triangle *_child_c;
- Triangle *_child_center;
-
- bool _visible;
-
- Vector _center;
- Vector _normal;
- Vector _normal_real;
- float _size;
-
- char step;
-};
-
-#endif // TRIANGLE_HH_
diff --git a/trunk/glagen/3d/triangle_gl.cc b/trunk/glagen/3d/triangle_gl.cc
deleted file mode 100644
index 173db4f..0000000
--- a/trunk/glagen/3d/triangle_gl.cc
+++ /dev/null
@@ -1,180 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// triangle.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DARWIN
-# include <GL/gl.h>
-# include <GL/glu.h>
-#else
-# include <gl.h>
-# include <glu.h>
-#endif
-
-#include "data_glagen.hh"
-#include "dot.hh"
-#include "triangle.hh"
-
-//
-// Manage the T-case (when the has a 4th point)
-//
-bool Triangle :: T_case (const unsigned int id)
-{
- Dot *middle;
- Triangle *child1;
- Triangle *child2;
-
- // Is there a triangle on this side ?
- if (_neighbor_ab != NULL)
-
- // Then is it split ?
- if (_neighbor_ab->Is_split ())
- {
- // Find the dangling vertex
- child1 = _neighbor_ab->Child (_a);
- child2 = _neighbor_ab->Child (_b);
- if (child1->B () == child2->C ())
- middle = child1->B ();
- else
- middle = child1->C ();
-
- // Display two triangles instead of just one
- glBegin (GL_TRIANGLES);
- _b->Display (id);
- _c->Display (id);
- middle->Display (id);
- _c->Display (id);
- _a->Display (id);
- middle->Display (id);
- glEnd ();
-
- // The T case is fixed
- return true;
- }
- if (_neighbor_bc != NULL)
- if (_neighbor_bc->Is_split ())
- {
- child1 = _neighbor_bc->Child (_b);
- child2 = _neighbor_bc->Child (_c);
- if (child1->B () == child2->C ())
- middle = child1->B ();
- else
- middle = child1->C ();
- glBegin (GL_TRIANGLES);
- _a->Display (id);
- _b->Display (id);
- middle->Display (id);
- _c->Display (id);
- _a->Display (id);
- middle->Display (id);
- glEnd ();
- return true;
- }
- if (_neighbor_ca != NULL)
- if (_neighbor_ca->Is_split ())
- {
- child1 = _neighbor_ca->Child (_c);
- child2 = _neighbor_ca->Child (_a);
- if (child1->B () == child2->C ())
- middle = child1->B ();
- else
- middle = child1->C ();
- glBegin (GL_TRIANGLES);
- _b->Display (id);
- _c->Display (id);
- middle->Display (id);
- _a->Display (id);
- _b->Display (id);
- middle->Display (id);
- glEnd ();
- return true;
- }
- // In fact there's no T-case for this triangle
- return false;
-}
-
-//
-// Display the faces included in the triangle (general case)
-//
-void Triangle :: Display (const unsigned int id)
-{
- // Test if this triangle has been visited yet
- if (step == glagen.step)
- return;
- step = glagen.step;
-
- if (glagen.display_all == true || _visible == true)
- {
- // If the triangle has childs, we visit them instead
- if (_child_center != NULL)
- {
- _child_a->Display (id);
- _child_b->Display (id);
- _child_c->Display (id);
- _child_center->Display (id);
- }
- else
- {
- // T-case managment
- if (false == T_case (id))
- {
- if (glagen.display_normal == true)
- {
- float x = (_a->x () + _b->x () + _c->x ()) / 3;
- float y = (_a->y () + _b->y () + _c->y ()) / 3;
- float z = (_a->z () + _b->z () + _c->z ()) / 3;
-
- // Display the normal vector
- if (glagen.light)
- glDisable(GL_LIGHTING);
- glBegin (GL_LINES);
- glColor3f(1.0, 0.2, 0.0);
- glVertex3f(x, y, z);
- glVertex3f(x + _normal_real.X () / 100,
- y + _normal_real.Y () / 100,
- z + _normal_real.Z () / 100);
- glEnd ();
- if (glagen.light)
- glEnable(GL_LIGHTING);
- }
- // Could it be more simple ?
- glBegin (GL_TRIANGLES);
- _a->Display (id);
- _b->Display (id);
- _c->Display (id);
- glEnd ();
- }
- }
- }
- // Recursive call at the top of the three
- if (NULL == Father ())
- {
- _neighbor_ab->Display (id);
- _neighbor_bc->Display (id);
- _neighbor_ca->Display (id);
- }
-}
diff --git a/trunk/glagen/3d/vector.cc b/trunk/glagen/3d/vector.cc
deleted file mode 100644
index 06e3085..0000000
--- a/trunk/glagen/3d/vector.cc
+++ /dev/null
@@ -1,252 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// vector.cc for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <cmath>
-#include "data_glagen.hh"
-#include "misc.hh"
-#include "vector.hh"
-
-// ================================================ Constructors and destructor
-
-Vector :: Vector ()
-{
- vect[0] = 0;
- vect[1] = 0;
- vect[2] = 0;
-}
-
-Vector :: Vector (const Vector &source)
-{
- vect[0] = source.X ();
- vect[1] = source.Y ();
- vect[2] = source.Z ();
-}
-
-Vector :: Vector (const float x, const float y, const float z)
-{
- vect[0] = x;
- vect[1] = y;
- vect[2] = z;
-}
-
-Vector :: ~Vector () {}
-
-
-// ======================================================================= Read
-
-float Vector :: X () const { return vect[0]; }
-float Vector :: Y () const { return vect[1]; }
-float Vector :: Z () const { return vect[2]; }
-
-float Vector :: Norm () const
-{
- return (sqrtf(vect[0] * vect[0] +
- vect[1] * vect[1] +
- vect[2] * vect[2]));
-}
-
-// Fast norm approximation computing
-float Vector :: Approx_norm () const
-{
- return (Approx_dist(vect[0], vect[1], vect[2]));
-}
-
-
-// ====================================================================== Write
-
-void Vector :: Set (const float x, const float y, const float z)
-{
- vect[0] = x;
- vect[1] = y;
- vect[2] = z;
-}
-
-void Vector :: Set_X (const float x){ vect[0] = x;}
-void Vector :: Set_Y (const float y){ vect[1] = y;}
-void Vector :: Set_Z (const float z){ vect[2] = z;}
-
-void Vector :: Normalize ()
-{
- float norm = Norm ();
- vect[0] = vect[0] / norm;
- vect[1] = vect[1] / norm;
- vect[2] = vect[2] / norm;
-}
-
-void Vector :: Approx_normalize ()
-{
- float norm = Approx_norm ();
- vect[0] = vect[0] / norm;
- vect[1] = vect[1] / norm;
- vect[2] = vect[2] / norm;
-}
-
-void Vector :: Rotate (const Vector &axis, const float angle)
-{
- float cosinus = cosf (angle);
- float sinus = sinf (angle);
- float cos_bis = (1 - cosinus) * axis.X ();
- float cos_third = (1 - cosinus) * axis.Y ();
-
- float x = (cosinus + cos_bis * axis.X ()) * vect[0];
- x = x + (cos_bis * axis.Y () - axis.Z () * sinus) * vect[1];
- x = x + (cos_bis * axis.Z () + axis.Y () * sinus) * vect[2];
-
- float y = (cos_bis * axis.Y () + axis.Z () * sinus) * vect[0];
- y = y + (cosinus + cos_third * axis.Y ()) * vect[1];
- y = y + (cos_third * axis.Z () - axis.X () * sinus) * vect[2];
-
- float z = (cos_bis * axis.Z () - axis.Y () * sinus) * vect[0];
- z = z + (cos_third * axis.Z () + axis.X () * sinus) * vect[1];
- z = z + (cosinus + (1 - cosinus) * axis.Z () * axis.Z ()) * vect[2];
-
- vect[0] = x;
- vect[1] = y;
- vect[2] = z;
-}
-
-
-// ================================================================== Operators
-
-// @
-// @
-// @@@@@
-// @
-// @
-Vector Vector :: operator + (const class Vector &v) const
-{
- return Vector(vect[0] + v.X (),
- vect[1] + v.Y (),
- vect[2] + v.Z ());
-}
-
-//
-//
-// @@@@@
-//
-//
-Vector Vector :: operator - (const class Vector &v) const
-{
- return Vector(vect[0] - v.X (),
- vect[1] - v.Y (),
- vect[2] - v.Z ());
-}
-
-//
-// @
-// @@@
-// @
-//
-float Vector :: operator * (const class Vector &v) const
-{
- return (vect[0] * v.X () +
- vect[1] * v.Y () +
- vect[2] * v.Z ());
-}
-
-// @
-// @ @
-// @ @
-//
-//
-Vector Vector :: operator ^ (const class Vector &v) const
-{
- return Vector((vect[1] * v.Z ()) - (vect[2] * v.Y ()),
- (vect[2] * v.X ()) - (vect[0] * v.Z ()),
- (vect[0] * v.Y ()) - (vect[1] * v.X ()));
-}
-
-// @
-// @ @@@@@
-// @@@@@
-// @ @@@@@
-// @
-Vector Vector :: operator += (const class Vector &v)
-{
- *this = *this + v;
- return *this;
-}
-
-//
-// @@@@@
-// @@@@@
-// @@@@@
-//
-Vector Vector :: operator -= (const class Vector &v)
-{
- *this = *this - v;
- return *this;
-}
-
-
-// @@@
-// @ @
-// @@@ @@@@
-// @ @ @
-// @@@ @
-Vector Vector :: operator * (const float &a) const
-{
- return Vector(X () * a,
- Y () * a,
- Z () * a);
-}
-
-// @ @@@
-// @ @
-// @ @@@@
-// @ @ @
-// @ @@@ @
-Vector Vector :: operator / (const float &a) const
-{
- return Vector(X () / a,
- Y () / a,
- Z () / a);
-}
-
-// @@@
-// @ @@@@@ @
-// @@@ @@@@
-// @ @@@@@ @ @
-// @@@ @
-Vector Vector :: operator *= (const float &a)
-{
- *this = *this * a;
- return *this;
-}
-
-// @ @@@
-// @ @@@@@ @
-// @ @@@@
-// @ @@@@@ @ @
-// @ @@@ @
-Vector Vector :: operator /= (const float &a)
-{
- *this = *this / a;
- return *this;
-}
diff --git a/trunk/glagen/3d/vector.hh b/trunk/glagen/3d/vector.hh
deleted file mode 100644
index 2a7a47f..0000000
--- a/trunk/glagen/3d/vector.hh
+++ /dev/null
@@ -1,77 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// vector.hh for Glagen : made by Zavie (Julien Guertault)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef VECTOR_HH_
-# define VECTOR_HH_
-
-class Vector
-{
-public :
-
- // Constructors and destructor
- Vector ();
- Vector (const Vector &);
- Vector (const float, const float, const float);
- ~Vector ();
-
- // Read
- float X () const;
- float Y () const;
- float Z () const;
-
- float Norm () const;
- float Approx_norm () const;
-
- // Write
- void Set (const float, const float, const float);
- void Set_X (const float);
- void Set_Y (const float);
- void Set_Z (const float);
- void Normalize ();
- void Approx_normalize ();
- void Rotate (const Vector &, const float);
-
- // Operators
- Vector operator + (const class Vector &) const;
- Vector operator - (const class Vector &) const;
- float operator * (const class Vector &) const;
- Vector operator ^ (const class Vector &) const;
- Vector operator += (const class Vector &);
- Vector operator -= (const class Vector &);
-
- Vector operator * (const float &) const;
- Vector operator / (const float &) const;
- Vector operator *= (const float &);
- Vector operator /= (const float &);
-
-protected :
- float vect[3];
-};
-
-#endif
diff --git a/trunk/glagen/algo_distribue/Distribue.cc b/trunk/glagen/algo_distribue/Distribue.cc
deleted file mode 100644
index 09efc50..0000000
--- a/trunk/glagen/algo_distribue/Distribue.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Distribue.hh"
diff --git a/trunk/glagen/algo_distribue/Distribue.hh b/trunk/glagen/algo_distribue/Distribue.hh
deleted file mode 100644
index ff3b76d..0000000
--- a/trunk/glagen/algo_distribue/Distribue.hh
+++ /dev/null
@@ -1,97 +0,0 @@
-// Classe Distribue
-
-
-
-#ifndef DISTRIBUE_HH_
-# define DISTRIBUE_HH_
-
-#include "tree/tree.hh"
-#include "tree/node.hh"
-#include "network/data/Data.hh"
-#include "network/Server.hh"
-#include "tools/matrix.hh"
-
-template<class TYPENODE> class Distribue
-{
-public:
- Distribue(const Tree<TYPENODE>& tree)
- : _tree(tree),
- _size(tree.get_node_root().get_number_node()),
- _mat(new Matrix<int> (_size, _size))
- {
- unsigned int ptr1 = 0, ptr2 = 0;
- std::list< Node<TYPENODE> > ptr_node = *new std::list< Node<TYPENODE> >;
- ptr_node.push_back(tree.get_node_root());
- while (ptr_node.size())
- {
- std::list< Node<TYPENODE> >::iterator childs = ptr_node.begin();
- std::list< Node<TYPENODE> >::iterator child =
- childs->get_childs()->begin();
- for (; child != childs->get_childs()->end(); ++child)
- {
- ptr_node.push_back(*child);
- (*_mat)(++ptr2, ptr1) = 1;
- }
- ptr_node.pop_front();
- ptr1++;
- }
- }
-
- void depend(std::list<TYPENODE>& data, const unsigned int& ptr)
- {
- data.push_back(_tree.get_node_root().get_node_course_width(ptr).get_data());
- for (unsigned int i = 0; i < _size; ++i)
- if ((*_mat)(i, ptr))
- depend(data, i);
- }
-
- void transfer(Server& server)
- {
- // Calcul du nombre de client necessaire
- unsigned int j = 0;
- std::list< list<TYPENODE> > list_data =
- *new std::list< list<TYPENODE> >;
- std::list<TYPENODE> data = *new std::list<TYPENODE>;
- for (unsigned int i = 1; i < _size; ++i)
- {
- if ((*_mat)(i, 0)) // Ne prend que les noeuds fils du noeud root
- {
- ++j;
- this->depend(data, i);
- list_data.push_back(data);
- data = *new std::list<TYPENODE>;
- }
- }
- if (server.get_nb_client() < j)
- {
- std::cout << "Need more client" << std::endl;
- exit(-1);
- }
-
- std::list<int>::const_iterator fd_client =
- server.get_list_fd()->begin();
- data = *new std::list<TYPENODE>;
- for (unsigned int i = 1; i < _size; ++i)
- {
- if ((*_mat)(i, 0)) // Ne prend que les noeuds fils du noeud root
- {
- ++j;
- this->depend(data, i);
- server.send_data(*fd_client++, Data<TYPENODE>(&data));
- data = *new std::list<TYPENODE>;
- }
- }
- }
-
- Matrix<int>& get_matrix()
- {
- return (*_mat);
- }
-
-private:
- Tree<TYPENODE> _tree;
- unsigned int _size;
- Matrix<int> *_mat;
-};
-
-#endif // DISTRIBUTE_HH_
diff --git a/trunk/glagen/algo_distribue/Makefile b/trunk/glagen/algo_distribue/Makefile
deleted file mode 100644
index fb30eba..0000000
--- a/trunk/glagen/algo_distribue/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-##
-## Makefile for in
-##
-## Made by meng-tih lam
-## Login <lam_m@epita.fr>
-##
-## Started on Thu Feb 7 19:08:57 2002 meng-tih lam
-
-##
-
-NAME = glagen_divide
-SRC_TOOLS = tools/matrix.cc
-SRC_DATA = network/data/Data.cc network/data/Data_exemple.cc
-SRC_TREE = tree/node.cc tree/tree.cc
-SRC_NETWORK = network/Server.cc network/Client.cc
-SRC_MAIN = Distribue.cc main.cc
-SRCS = ${SRC_TOOLS} ${SRC_TREE} ${SRC_NETWORK}\
- ${SRC_DATA} ${SRC_MAIN}
-
-OBJS = $(SRCS:.cc=.o)
-
-ARCHI_i586 = -g2 -Wall -W -Werror -O3
-ARCHI_NetBSD = -g2 -Wall -W -Werror -O3 -I/usr/X11R6/include
-ARCHI_sun4 = -g2 -Wall -W -Werror -O3
-ARCHI_alpha = -g2 -Wall -W -Werror -O3
-
-LIB_i586 =
-LIB_NetBSD = -L/usr/pkg/lib -L/usr/X11R6/lib -lGL -lGLU -lglut
-LIB_alpha =
-LIB_sun4 =
-
-CPPFLAGS = -I.
-CC = g++
-RM = rm -f
-
-.PHONY: all clean deps
-
-all: $(OBJS)
- $(CC) -o $(NAME) $(CFLAGS) $(OBJS)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-.cc.o:
- $(CC) $(ARCHI_${HOSTTYPE}) $(CPPFLAGS) -c $< -o $(<:.cc=.o)
-
-clean:
- $(RM) $(OBJS) $(NAME) *~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/trunk/glagen/algo_distribue/main.cc b/trunk/glagen/algo_distribue/main.cc
deleted file mode 100644
index e78d461..0000000
--- a/trunk/glagen/algo_distribue/main.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-// Algo distribue
-
-// glagen_divide [n]
-// n indique le nombre d'ordinateur en reseau exclut le serveur
-
-#include <iostream>
-#include <list>
-#include <string>
-
-// Load Tree
-#include "tree/node.hh"
-#include "tree/tree.hh"
-
-// Load Network
-#include "network/Server.hh"
-#include "network/Client.hh"
-
-// Load Data
-#include "network/data/Data_string.hh"
-
-// Load Tool
-#include "tools/matrix.hh"
-
-#include "Distribue.hh"
-
-#include <stdlib.h>
-#include <assert.h>
-
-// Prototype : test d'essais avec 2 clients
-// On changera suivant les donnees passes par GTK
-// Il faut que le nombre de client soit superieur ou egale
-// au nombre de noeud fils par rapport au noeud principal
-#define NB_CLIENT 2
-
-char gl_handle;
-
-Tree<Data_string> *create_tree();
-
-void help(char *prog_name)
-{
- std::cout << prog_name << " [port]" << std::endl;
- exit(0);
-}
-
-void signal_alarm(int)
-{
- gl_handle = gl_handle | 1;
-}
-
-void check_args(int argc, char *argv1, char *argv2)
-{
- int current;
-
- if (argc != 2)
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
- for (current = 0; argv2[current] != '\0'; current++)
- if (argv2[current] < '0' || argv2[current] > '9')
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
-}
-
-int main(int argc, char *argv[])
-{
- // Exemple de creation d'un arbre (donnees string)
- // On peut appele une classe abstraite dont ses fils sont
- // les types de donnees des librairies (ex: Tree<Abstraite*>)
- Tree<Data_string>* tree;
- tree = create_tree();
-
- // Calcul de l'algo distribue : calcul l'attribution des taches
- // pour chaque client
- Distribue<Data_string> network(*tree);
- std::cout << "Matrice calcule" << std::endl
- << network.get_matrix() << std::endl;
-
- // Execution du serveur
- check_args(argc, argv[0], argv[1]);
- Server server(atoi(argv[1]), NB_CLIENT);
-
- // Transfert des donnees
- network.transfer(server);
-
- return (0);
-}
-
-
-
-Tree<Data_string> *create_tree()
-{
- string root = "Connection...";
- string a = "Est-ce que ca fonctionne ?";
- string b = "1212123";
- string c = "OK recu 5/5";
- Tree<Data_string> tree(root);
- tree.add_node(a);
- tree.add_node(b);
- tree.add_node(c);
-
- Tree<Data_string>* main_tree = new Tree<Data_string>(string("Execution..."));
- main_tree->add_tree(tree);
-
- Tree<Data_string> tree2(string("Une tentative de suicide"));
- tree2.add_node(string("Ou ca?"));
- tree2.add_node(string("A Epita"));
- tree2.add_node(string("Ping pong ping"));
- main_tree->add_tree(tree2);
- return (main_tree);
-}
diff --git a/trunk/glagen/algo_distribue/network/Client.cc b/trunk/glagen/algo_distribue/network/Client.cc
deleted file mode 100644
index 23ccb2c..0000000
--- a/trunk/glagen/algo_distribue/network/Client.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Client.hh"
diff --git a/trunk/glagen/algo_distribue/network/Client.hh b/trunk/glagen/algo_distribue/network/Client.hh
deleted file mode 100644
index 923b83e..0000000
--- a/trunk/glagen/algo_distribue/network/Client.hh
+++ /dev/null
@@ -1,113 +0,0 @@
-// Classe Client
-
-#ifndef CLIENT_HH_
-# define CLIENT_HH_
-
-#include <list>
-#include <iostream>
-#include <string>
-#include <stdio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <signal.h>
-#include <netdb.h>
-#include <assert.h>
-#include <unistd.h>
-
-#include "data/Data.hh"
-
-class Client
-{
-public:
- Client(char* host, const int& port)
- {
- char *c;
- int sock;
- struct sockaddr_in sa;
- long addr;
- struct hostent *host_info;
-
- if ((host_info = gethostbyname(host)) == 0)
- this->error();
- c = host_info->h_addr;
- addr = c[0] << 24 | c[1] << 16 | c[2] << 8 | c[3];
- if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
- this->error();
- sa.sin_family = AF_INET;
- sa.sin_port = htons(port);
- sa.sin_addr.s_addr = htonl(addr);
- if (connect(sock, (struct sockaddr *)&sa, sizeof (sa)) == -1)
- this->error();
- _fd_server = sock;
- }
-
- void error()
- {
- std::cerr << "Error client : ";
- perror("");
- exit(errno);
- }
-
- template <class TYPEDATA>
- void send_data(const Data<TYPEDATA>& data) const
- {
- data.send(_fd_server);
- }
-
- template <class TYPEDATA>
- void received_data(Data<TYPEDATA>& data)
- {
- data.receive(_fd_server);
- }
-
- void wait_signal()
- {
- unsigned char sig = 0;
- read(_fd_server, &sig, sizeof(unsigned char));
- if (sig != 42)
- {
- std::cout << "Erreur de transmission" << std::endl;
- exit(1);
- }
- std::cout << "En communication avec le serveur..." << std::endl;
- }
-
- void send_signal()
- {
- unsigned char sig = 42;
- write(_fd_server, &sig, sizeof(unsigned char));
- }
-
- int do_select()
- {
- fd_set rd;
- char buf[256];
- int n;
-
- FD_ZERO(&rd);
- FD_SET(0, &rd);
- FD_SET(_fd_server, &rd);
- if (select(_fd_server + 1, &rd, 0, 0, 0) == -1)
- this->error();
- if (FD_ISSET(_fd_server, &rd))
- {
- n = read(_fd_server, buf, 150);
- if (n <= 0)
- return (1);
- write(1, buf, n);
- fflush(0);
- }
- if (FD_ISSET(0, &rd))
- {
- n = read(0, buf, 100);
- write(_fd_server, buf, n);
- }
- return (0);
- }
-
-
-private:
- int _fd_server;
-};
-
-#endif // CLIENT_HH_
diff --git a/trunk/glagen/algo_distribue/network/Makefile b/trunk/glagen/algo_distribue/network/Makefile
deleted file mode 100644
index 18878df..0000000
--- a/trunk/glagen/algo_distribue/network/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-##
-## Makefile for in
-##
-## Made by meng-tih lam
-## Login <lam_m@epita.fr>
-##
-## Started on Thu Feb 7 19:08:57 2002 meng-tih lam
-
-##
-
-NAME_SERVER = glagen_server
-NAME_CLIENT = glagen_client
-SRC_DATA = data/Data.cc\
- data/Data_exemple.cc\
- data/Data_string.cc
-SRC_SERVER = Server.cc main_server.cc
-SRC_CLIENT = Client.cc main_client.cc
-
-OBJ_SERVER = $(SRC:.cc=.o) $(SRC_SERVER:.cc=.o)
-OBJ_CLIENT = $(SRC:.cc=.o) $(SRC_CLIENT:.cc=.o)
-
-ARCHI_i586 = -g2 -Wall -W -Werror -O3
-ARCHI_NetBSD = -g2 -Wall -W -Werror -O3 -I/usr/X11R6/include
-ARCHI_sun4 = -g2 -Wall -W -Werror -O3
-ARCHI_alpha = -g2 -Wall -W -Werror -O3
-
-LIB_i586 = -lc
-LIB_NetBSD = -L/usr/pkg/lib -L/usr/X11R6/lib -lGL -lGLU -lglut -lc
-LIB_alpha =
-LIB_sun4 = -lsocket -lnsl
-
-CPPFLAGS = -I.
-CC = g++
-RM = rm -f
-
-.PHONY: all clean deps
-
-all: server client
-
-server: $(NAME_SERVER)
-
-client: $(NAME_CLIENT)
-
-$(NAME_SERVER): $(OBJ_SERVER)
- $(CC) -o $(NAME_SERVER) $(CFLAGS) $(OBJ_SERVER)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-$(NAME_CLIENT): $(OBJ_CLIENT)
- $(CC) -o $(NAME_CLIENT) $(CFLAGS) $(OBJ_CLIENT)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-.cc.o:
- $(CC) $(ARCHI_${HOSTTYPE}) $(CPPFLAGS) -c $<
-
-clean:
- $(RM) $(OBJ_SERVER) $(OBJ_CLIENT) $(NAME_SERVER) $(NAME_CLIENT)\
- *~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/trunk/glagen/algo_distribue/network/Server.cc b/trunk/glagen/algo_distribue/network/Server.cc
deleted file mode 100644
index 63f45ff..0000000
--- a/trunk/glagen/algo_distribue/network/Server.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Server.hh"
diff --git a/trunk/glagen/algo_distribue/network/Server.hh b/trunk/glagen/algo_distribue/network/Server.hh
deleted file mode 100644
index fdfecb4..0000000
--- a/trunk/glagen/algo_distribue/network/Server.hh
+++ /dev/null
@@ -1,218 +0,0 @@
-// Classe Server
-
-#ifndef SERVER_HH_
-# define SERVER_HH_
-
-#include <list>
-#include <iostream>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <signal.h>
-#include <poll.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include <assert.h>
-#include "data/Data.hh"
-
-extern char gl_handle;
-
-extern void signal_alarm(int);
-
-template<class TYPEDATA> class Data;
-
-class Server
-{
-public:
- Server(const int& port, const unsigned int& nb_client_max)
- {
- _port = port;
- _client_max = nb_client_max;
- _fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
- _sock_in = new struct sockaddr_in;
- _sock_in->sin_family = PF_INET;
- _sock_in->sin_port = htons(port);
- _sock_in->sin_addr.s_addr = INADDR_ANY;
- if ((bind(_fd, (struct sockaddr *)_sock_in, sizeof (*_sock_in)) == -1)
- || (listen(_fd, 5) == -1))
- this->error();
- std::cout << "Server started. Listening on port " << _port << std::endl;
- _fd_client = new std::list<int>;
- this->start_signal();
- this->start();
- }
-
- void start()
- {
- int fd_client;
- socklen_t len;
- struct sockaddr_in sock_client;
-
- len = sizeof (struct sockaddr_in);
- while (gl_handle != -1 && this->_fd_client->size() < _client_max)
- {
- fd_client = 0;
- if ((fd_client = accept(this->_fd,
- (struct sockaddr *)&(sock_client), &len)) > 0)
- gl_handle = gl_handle | 2;
- std::list<int> list_fd;
- if (2 == (gl_handle & 2))
- {
- this->accept_client(fd_client);
- this->send_signal(fd_client);
- std::cout << "Number of connected clients :"
- << this->_fd_client->size() << std::endl;
- }
- gl_handle = 0;
- this->test_client();
- }
- }
-
- void test_client()
- {
- if (_fd_client->size())
- {
- std::list<int>::const_iterator fd_client_tmp;
- std::list<int>::const_iterator fd_client = _fd_client->begin();
- int i = 0;
- while (fd_client != _fd_client->end())
- {
- i++;
- char c = 0;
- errno = 0;
- fd_client_tmp = fd_client;
- read(*fd_client, &c, sizeof(char));
- ++fd_client;
- if (errno == 0)
- this->remove_client(*fd_client_tmp);
- }
- }
- }
-
- void error()
- {
- std::cerr << "Error server : ";
- perror("");
- exit(errno);
- }
-
- void remove_client(const int& fd)
- {
- _fd_client->remove(fd);
- std::cout << "Client in the file descriptor : " << fd
- << " are disconnected" << std::endl;
- std::cout << "Number of connected clients :"
- << this->_fd_client->size() << std::endl;
- }
-
- void wait_signal(std::list<int>& list_fd) // retourne la liste des files descriptors a lire
- {
- struct pollfd poll_fd[_fd_client->size()];
- std::list<int>::const_iterator fd = _fd_client->begin();
- for (int i = 0; fd != _fd_client->end(); ++fd, ++i)
- {
- poll_fd[i].fd = *fd;
- poll_fd[i].events = POLLIN;
- }
- if (poll(poll_fd, _fd_client->size(), 0) < 0)
- assert(0);
- for (unsigned int i = 0; i < _fd_client->size(); ++i)
- if (poll_fd[i].revents != 0)
- {
- unsigned char sig = 0;
- unsigned int length = 0;
- do
- {
- errno = 0;
- length = read(poll_fd[i].fd, &sig, sizeof(unsigned char));
- }
- while (errno == 4);
- if (errno)
- {
- perror("");
- exit(errno);
- }
- if (length == 0)
- remove_client(poll_fd[i].fd);
- else
- if (sig == 42)
- {
- list_fd.push_back(poll_fd[i].fd);
- std::cout << "Reception signal sur le file descriptor :"
- << poll_fd[i].fd << std::endl;
- }
- else
- {
- std::cout << "Erreur de reception sur le file descriptor :"
- << poll_fd[i].fd << std::endl;
- exit(2);
- }
- poll_fd[i].revents = 0;
- }
- }
-
- void send_signal(const int& fd)
- {
- unsigned char sig = 42;
- write(fd, &sig, sizeof(unsigned char));
- }
-
- void start_signal()
- {
- struct sigaction alarm;
-
- alarm.sa_handler = signal_alarm;
- alarm.sa_flags = 0;
- sigemptyset(&(alarm.sa_mask));
- sigaddset(&(alarm.sa_mask), SIGALRM);
- sigaction(SIGALRM, &alarm, 0);
- ualarm(1, 100000);
- }
-
- template<class TYPEDATA>
- void send_data(const int& fd, const Data<TYPEDATA>& data)
- {
- data.send(fd);
- }
-
- template<class TYPEDATA>
- void send_data(const Data<TYPEDATA>& data,
- const std::list<int>& fd_client)
- {
- std::list<int>::const_iterator fd = fd_client.begin();
- for (; fd != fd_client.end(); ++fd)
- data.send(*fd);
- }
-
- template<class TYPEDATA>
- void received_data(Data<TYPEDATA>& data, const std::list<int>& fd_client)
- {
- std::list<int>::const_iterator fd = fd_client.begin();
- for (; fd != fd_client.end(); ++fd)
- data.receive(*fd);
- }
-
- void accept_client(const int& fd)
- {
- std::cout << "Client connected on file descriptor: " << fd << std::endl;
- _fd_client->push_back(fd);
- }
-
- int get_fd() const { return (_fd); }
-
- int get_port() const { return (_port); }
-
- std::list<int>* get_list_fd() const { return (_fd_client); }
-
- unsigned int get_nb_client() const { return (_fd_client->size()); }
-
-private:
- std::list<int> *_fd_client;
- struct sockaddr_in *_sock_in;
- int _port;
- unsigned int _client_max;
- int _fd;
-};
-
-#endif // SERVER_HH_
diff --git a/trunk/glagen/algo_distribue/network/data/Data.cc b/trunk/glagen/algo_distribue/network/data/Data.cc
deleted file mode 100644
index d3bbe6a..0000000
--- a/trunk/glagen/algo_distribue/network/data/Data.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data.hh"
diff --git a/trunk/glagen/algo_distribue/network/data/Data.hh b/trunk/glagen/algo_distribue/network/data/Data.hh
deleted file mode 100644
index 3b630ff..0000000
--- a/trunk/glagen/algo_distribue/network/data/Data.hh
+++ /dev/null
@@ -1,78 +0,0 @@
-// Classe Data
-
-// Dans le TYPEDATA, il faut l'implementation de toString (retourne un string)
-// et de type (retourne unsigned short int)
-
-// Type 0: char
-// Type 1: unsigned char
-// Type 2: int
-// Type 3: unsigned int
-// Type 4: short int
-// Type 5: unsigned short int
-// Type 6: long int
-// Type 7: unsigned long int
-// Type 8: float
-// Type 9: double
-// Type 10: long double
-
-#ifndef DATA_HH_
-# define DATA_HH_
-
-#include <list>
-#include <iostream>
-#include <stdio.h>
-
-#include <errno.h>
-
-template<class TYPEDATA> class Data
-{
-public:
- Data() : _data(new std::list<TYPEDATA>) {};
-
- Data(std::list<TYPEDATA>* data) : _data(data) {};
-
- void error()
- {
- perror("");
- exit(errno);
- }
-
- void add_data(const TYPEDATA& data) { _data->push_back(data); };
-
- void send(const int& fd) const
- {
- std::list<TYPEDATA>::iterator data = _data->begin();
- unsigned int size = _data->size();
- std::cout << "Taille a ecrire:" << size << std::endl;
- write(fd, &size, sizeof(unsigned int));
- for (; data != _data->end(); ++data)
- data->write_data(fd);
- }
-
- void receive(const int& fd)
- {
- unsigned int size = 0;
- do
- {
- errno = 0;
- read(fd, &size, sizeof(unsigned int));
- }
- while(errno == 4);
- if (errno)
- this->error();
- std::cout << "Taille lu: " << size << std::endl;
- TYPEDATA data;
- for (unsigned int i = 0; i < size; ++i)
- {
- data.read_data(fd);
- _data->push_back(data);
- }
- }
-
- std::list<TYPEDATA>* get_data() { return (_data); }
-
-private:
- std::list<TYPEDATA>* _data;
-};
-
-#endif // DATA_HH_
diff --git a/trunk/glagen/algo_distribue/network/data/Data_exemple.cc b/trunk/glagen/algo_distribue/network/data/Data_exemple.cc
deleted file mode 100644
index 9578493..0000000
--- a/trunk/glagen/algo_distribue/network/data/Data_exemple.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data_exemple.hh"
diff --git a/trunk/glagen/algo_distribue/network/data/Data_exemple.hh b/trunk/glagen/algo_distribue/network/data/Data_exemple.hh
deleted file mode 100644
index ca1291b..0000000
--- a/trunk/glagen/algo_distribue/network/data/Data_exemple.hh
+++ /dev/null
@@ -1,66 +0,0 @@
-// Classe Data_exemple
-
-// Un exemple sur un point de coordonnees 3D
-
-#ifndef DATA_EXEMPLE_HH_
-# define DATA_EXEMPLE_HH_
-
-#include <iostream>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-class Data_exemple
-{
-public:
- Data_exemple() : _x(0), _y(0), _z(0) {};
- Data_exemple(int x, int y, int z) : _x(x), _y(y), _z(z) {};
-
- void write_data(const int& fd) const
- {
- std::cout << "Donnees envoyes au serveur" << std::endl;
- std::cout << _x << std::endl;
- std::cout << _y << std::endl;
- std::cout << _z << std::endl;
- write(fd, &_x, sizeof(int));
- write(fd, &_y, sizeof(int));
- write(fd, &_z, sizeof(int));
- }
-
- void read_data(const int& fd)
- {
- do
- {
- errno = 0;
- read(fd, &_x, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, &_y, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, &_z, sizeof(int));
- }
- while (errno == 4);
-
- std::cout << "Reception message sur le file descriptor :" << fd
- << std::endl;
- std::cout << _x << std::endl;
- std::cout << _y << std::endl;
- std::cout << _z << std::endl;
- }
-
-private:
- int _x;
- int _y;
- int _z;
-};
-
-#endif // DATA_EXEMPLE
diff --git a/trunk/glagen/algo_distribue/network/data/Data_string.cc b/trunk/glagen/algo_distribue/network/data/Data_string.cc
deleted file mode 100644
index 9578493..0000000
--- a/trunk/glagen/algo_distribue/network/data/Data_string.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data_exemple.hh"
diff --git a/trunk/glagen/algo_distribue/network/data/Data_string.hh b/trunk/glagen/algo_distribue/network/data/Data_string.hh
deleted file mode 100644
index a395725..0000000
--- a/trunk/glagen/algo_distribue/network/data/Data_string.hh
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef DATA_STRING_HH_
-# define DATA_STRING_HH_
-
-#include <iostream>
-#include <string>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-class Data_string
-{
-public:
- Data_string() : _str("") {};
- Data_string(const string& str) : _str(str) {};
-
- void write_data(const int& fd) const
- {
-
- std::cout << "Donnees envoyes" << std::endl << _str << std::endl;
- unsigned int size = _str.size();
- write(fd, &size, sizeof(unsigned int));
- for (unsigned int i = 0; i < size; ++i)
- {
- char car = _str[i];
- write(fd, &car, sizeof(char));
- }
- }
-
- void read_data(const int& fd)
- {
- unsigned int size = 0;
- do
- {
- errno = 0;
- read(fd, &size, sizeof(size));
- }
- while (errno == 4);
-
- _str = "";
- for (unsigned int i = 0; i < size; ++i)
- {
- char car;
- do
- {
- errno = 0;
- read(fd, &car, sizeof(char));
- }
- while (errno == 4);
- _str += car;
- }
-
- std::cout << "Reception message sur le file descriptor :" << fd
- << std::endl << _str << std::endl;
- }
-
-private:
- string _str;
-};
-
-#endif // DATA_STRING
diff --git a/trunk/glagen/algo_distribue/network/main_client.cc b/trunk/glagen/algo_distribue/network/main_client.cc
deleted file mode 100644
index 66cb083..0000000
--- a/trunk/glagen/algo_distribue/network/main_client.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Main du client
-
-#include <unistd.h>
-#include <assert.h>
-#include "Client.hh"
-#include "data/Data_exemple.hh"
-#include "data/Data_string.hh"
-
-void help(char *prog_name)
-{
- std::cout << prog_name << " [hostname] [port]" << std::endl;
- exit(0);
-}
-
-void check_args(int argc, char **argv)
-{
- int current;
-
- if (argc != 3)
- {
- std::cerr << "Error client : Error parameters" << std::endl;
- help(argv[0]);
- }
- for (current = 0; argv[2][current] != '\0'; current++)
- if (argv[2][current] < '0' || argv[2][current] > '9')
- {
- std::cerr << "Error client : Error parameters" << std::endl;
- help(argv[0]);
- }
-}
-
-int main(int argc, char **argv)
-{
- check_args(argc, argv);
- Client client(argv[1], atoi(argv[2]));
-// Data<Data_exemple> data;
-// data.add_data(Data_exemple(10, 11, 13));
-// data.add_data(Data_exemple(1, 4, 81));
- client.wait_signal();
-// client.send_signal();
-// client.send_data(data);
-
-// Data<Data_string> data_string;
-// client.received_data(data_string);
-
- // On devrait implementer un numero a chaque classe associe
- // Je fais ca pour l'instant comme si on connait deja le type de classe
- // c'est juste pour tester
- Data<Data_string> data_string;
- client.received_data(data_string);
-
- while (0 == client.do_select());
- return (0);
-}
diff --git a/trunk/glagen/algo_distribue/network/main_server.cc b/trunk/glagen/algo_distribue/network/main_server.cc
deleted file mode 100644
index 4fafd09..0000000
--- a/trunk/glagen/algo_distribue/network/main_server.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// Main du reseau server
-
-#include <assert.h>
-#include "Server.hh"
-#include "data/Data_exemple.hh"
-#include "data/Data_string.hh"
-
-char gl_handle;
-
-void help(char *prog_name)
-{
- std::cout << prog_name << " [port]" << std::endl;
- exit(0);
-}
-
-void signal_alarm(int)
-{
- gl_handle = gl_handle | 1;
-}
-
-void check_args(int argc, char *argv1, char *argv2)
-{
- int current;
-
- if (argc != 2)
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
- for (current = 0; argv2[current] != '\0'; current++)
- if (argv2[current] < '0' || argv2[current] > '9')
- {
- std::cerr << "Error server : Error parameters" << std::endl;
- help(argv1);
- }
-}
-
-int main(int argc, char* argv[])
-{
-// int fd_client;
-// socklen_t len;
-// struct sockaddr_in sock_client;
-
-// len = sizeof (struct sockaddr_in);
- check_args(argc, argv[0], argv[1]);
- Server server(atoi(argv[1]), 3);
- server.get_list_fd();
-// server.start_signal();
-// while (gl_handle != -1)
-// {
-// fd_client = 0;
-// if ((fd_client = accept(server.get_fd(),
-// (struct sockaddr *)&(sock_client), &len)) > 0)
-// gl_handle = gl_handle | 2;
-// std::list<int> list_fd;
-// if (2 == (gl_handle & 2))
-// {
-// server.accept_client(fd_client);
-// server.send_signal(fd_client);
-// }
-// Data<Data_exemple> data;
-// server.wait_signal(list_fd);
-// server.received_data(data, list_fd);
-
-// Data<Data_string> data_string;
-// Data_string ack("Aknowledge");
-// data_string.add_data(ack);
-// server.send_data(data_string, list_fd);
-
-// gl_handle = 0;
-// }
-// return (0);
-}
diff --git a/trunk/glagen/algo_distribue/tools/matrix.cc b/trunk/glagen/algo_distribue/tools/matrix.cc
deleted file mode 100644
index 7991769..0000000
--- a/trunk/glagen/algo_distribue/tools/matrix.cc
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-#include "matrix.hh"
diff --git a/trunk/glagen/algo_distribue/tools/matrix.hh b/trunk/glagen/algo_distribue/tools/matrix.hh
deleted file mode 100644
index 4894360..0000000
--- a/trunk/glagen/algo_distribue/tools/matrix.hh
+++ /dev/null
@@ -1,324 +0,0 @@
-// matrix.hh
-
-#include <iostream>
-
-#ifndef MATRIX_HH_
-# define MATRIX_HH_
-
-// la class TYPE ne peut etre que de type nombre (ex: double, int, long,...)
-
-template <class TYPE> class Matrix
-{
-public:
- // Constructor
- Matrix(const unsigned int i, const unsigned int j)
- {
- this->_i = i;
- this->_j = j;
- this->_lines = new _line[i]; // Create lines...
- for (unsigned int k = 0; k < i; ++k)
- this->_lines[k] = new TYPE[j]; // ...and create column
- for (unsigned int k = 0; k < i; ++k)
- for (unsigned int l = 0; l < j; ++l)
- this->_lines[k][l] = 0;
- }
-
- // Constructor by copy
- Matrix(const Matrix& mat)
- {
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i];
- for (unsigned int k = 0; k < this->_i; ++k)
- {
- this->_lines[k] = new TYPE[this->_j];
- for (unsigned int l = 0; l < this->_j; ++l)
- this->_lines[k][l] = mat._lines[k][l];
- }
- }
-
- // Destructor
- ~Matrix()
- {
- if (this->_i != 0 || this->_j != 0)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- delete [] this->_lines[i];
- delete [] this->_lines;
- }
- }
-
- // Affected operator
- Matrix& operator=(const Matrix& mat)
- {
- if (&mat != this)
- {
- if (mat._i != this->_i || mat._j != this->_j) // Test dim
- {
- this->~Matrix(); // Destroy...
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i]; // ...and realloc
- for (unsigned int i = 0; i < this->_i; ++i)
- this->_lines[i] = new TYPE[this->_j];
- }
- for (unsigned int i = 0; i < this->_i; ++i) // Copy
- for (unsigned int j = 0; j < this->_j; ++j)
- this->_lines[i][j] = mat._lines[i][j];
- }
- return (*this);
- }
-
- // Add elements to matrix
- Matrix& add_elems(const int& nb)
- {
- Matrix mat(this->_i + nb, this->_j + nb);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat(i, j) = this->_lines[i][j];
- *this = mat;
- return (*this);
- }
-
- // Add matrix to matrix
- Matrix& add_mat(const Matrix& mat)
- {
- unsigned int i = this->_i;
- unsigned int j = this->_j;
- this->add_elems(mat._i);
- for (unsigned int k = i; k < this->_i; k++)
- for (unsigned int l = j; l < this->_j; l++)
- this->_lines[k][l] = mat(k - i, l - j);
- return (*this);
- }
-
- // Add of matrix
- Matrix operator+(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator+(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Sub matrix
- Matrix operator-(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator-(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != this->_j || this->_i != mat._i || mat._i != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Multiplication of matrix
- Matrix operator*(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_j != mat._i) // Check dimension
- {
- std::cerr << "Error of produce of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < mat._j; ++j)
- {
- TYPE res = 0;
- // Produce lines and column of matrix
- for (unsigned int k = 0; k < this->_j; ++k)
- res += this->_lines[i][k] * mat._lines[k][j];
- mat_tmp._lines[i][j] = res;
- }
- }
- return (mat_tmp);
- }
-
- // Multiplication with real
- Matrix& operator*(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] *= nbr;
- }
- return (*this);
- }
-
- // Divide with real
- Matrix& operator/(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] /= nbr;
- }
- return (*this);
- }
-
- //Get dimension of matrix
- const int get_dim() const
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give dimension" << std::endl;
- return (0);
- }
- return (this->_i);
- }
-
- // Operator to change mat(i, j)
- // to can write mat(i, j) = ...
- TYPE& operator()(unsigned int i, unsigned int j)
- {
- return (this->_lines[i][j]);
- }
-
- // Operator to access mat(i, j)
- // to can write int x = mat(i, j)
- TYPE operator()(unsigned int i, unsigned int j) const
- {
- return (this->_lines[i][j]);
- }
-
- // Test matrix nul
- const bool test_nul() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- if (this->_lines[i][j] != 0)
- return (0);
- return (1);
- }
-
- // Test diagonal matrix nul
- const int test_diag() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0)
- return (i);
- return (-1);
- }
-
- // Test diagonal matrix nul with element
- const int test_diag(const unsigned int& j) const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0 && i == j)
- return (i);
- return (-1);
- }
-
- // Calculate trace
- const TYPE trace() const
- {
- TYPE res = 0;
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give trace" << std::endl;
- return (0);
- }
- for (unsigned int i = 0; i < this->_i; i++)
- res += this->_lines[i][i];
- return (res);
- }
-
- // Transpose
- Matrix& transpose()
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot transpose" << std::endl;
- return (*this);
- }
- TYPE tmp = 0;
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < i; j++)
- {
- tmp = this->_lines[i][j];
- this->_lines[i][j] = this->_lines[j][i];
- this->_lines[j][i] = tmp;
- }
- return (*this);
- }
-
- Matrix transpose() const
- {
- Matrix mat(this->_j, this->_i);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat._lines[i][j] = this->_lines[j][i];
- return (mat);
- }
-
- // Display matrix
- void print(std::ostream &os) const
- {
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < this->_j; ++j)
- os << this->_lines[i][j] << " ";
- os << std::endl;
- }
- }
-
-protected:
- typedef TYPE* _line;
- _line* _lines;
- unsigned int _i; // Number of lines
- unsigned int _j; // Number of column
-};
-
-template <class TYPE>
-inline std::ostream& operator<<(std::ostream& ostr, const Matrix<TYPE>& stream)
-{
- stream.print(ostr);
- return (ostr);
-}
-
-
-#endif // MATRIX_HH
diff --git a/trunk/glagen/algo_distribue/tree/Makefile b/trunk/glagen/algo_distribue/tree/Makefile
deleted file mode 100644
index 895117b..0000000
--- a/trunk/glagen/algo_distribue/tree/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-##
-## Makefile for in
-##
-## Made by meng-tih lam
-## Login <lam_m@epita.fr>
-##
-## Started on Thu Feb 7 19:08:57 2002 meng-tih lam
-
-##
-
-NAME = glagen_tree
-SRCS = node.cc tree.cc main.cc
-
-OBJS = $(SRCS:.cc=.o)
-
-ARCHI_i586 = -g2 -Wall -W -Werror -O3
-ARCHI_NetBSD = -g2 -Wall -W -Werror -O3 -I/usr/X11R6/include
-ARCHI_sun4 = -g2 -Wall -W -Werror -O3
-ARCHI_alpha = -g2 -Wall -W -Werror -O3
-
-LIB_i586 =
-LIB_NetBSD = -L/usr/pkg/lib -L/usr/X11R6/lib -lGL -lGLU -lglut
-LIB_alpha =
-LIB_sun4 =
-
-CPPFLAGS = -I.
-CC = g++
-RM = rm -f
-
-.PHONY: all clean deps
-
-all: $(OBJS)
- $(CC) -o $(NAME) $(CFLAGS) $(OBJS)\
- $(LIB_${HOSTTYPE}) $(ARCHI_${HOSTTYPE})
-
-.cc.o:
- $(CC) $(ARCHI_${HOSTTYPE}) $(CPPFLAGS) -c $<
-
-clean:
- $(RM) $(OBJS) $(NAME) *~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/trunk/glagen/algo_distribue/tree/main.cc b/trunk/glagen/algo_distribue/tree/main.cc
deleted file mode 100644
index 3b6f02d..0000000
--- a/trunk/glagen/algo_distribue/tree/main.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// main.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:41:45 2002 meng-tih lam
-//
-
-#include <iostream>
-#include <list>
-#include <string>
-
-#include "node.hh"
-#include "tree.hh"
-
-// Pour construire un arbre, il faut d'abord faire les fils
-// et les raccoller avec le pere avec la methode add_tree
-
-int test_tree()
-{
- // ** Exemple avec la classe <string> **
- // ** On peut mettre n'importe classe **
-
- // * Support du sous-arbre *
- string root = "Connection...";
- string a = "Est-ce que ca fonctionne ?";
- string b = "1212123";
- string c = "OK recu 5/5";
- Tree<string> tree(root);
- tree.add_node(a);
- tree.add_node(b);
- tree.add_node(c);
-
- // Affichage root de l'arbre
- std::cout << "root: " << tree.get_node_root().get_data() << std::endl;
-
- // Affichage de ses fils
- unsigned int nb_childs = tree.get_nb_childs();
- for (unsigned int i = 0; i < nb_childs; ++i)
- std::cout << tree.get_child(i).get_data() << std::endl;
- std::cout << std::endl << std::endl;
-
-
-
- // * Support Arbre principale *
- Tree<string> main_tree("Execution...");
-
- // Voici la methode pour lier un arbre et un sous-arbre
- main_tree.add_tree(tree);
-
- std::cout << "root main: " << main_tree.get_node_root().get_data()
- << std::endl;
- unsigned int nb_childs2 = main_tree.get_nb_childs();
-
- // Ici arbre sur 2 niveaux (Bien sur qu'on peut faire en recursivite ^_^)
- for (unsigned int i = 0; i < nb_childs2; ++i)
- {
- nb_childs = main_tree.get_child(i).get_nb_childs();
- std::cout << main_tree.get_child(i).get_data() << std::endl;
- for (unsigned int j = 0; j < nb_childs; ++j)
- std::cout << main_tree.get_child(i).get_child(j).get_data()
- << std::endl;
- }
- std::cout << std::endl << std::endl;
-
-
-
-
- // * Allez on rajoute pour compliquer les choses *
- Tree<string> tree2("Une tentative de suicide");
- tree2.add_node("Ou ca?");
- tree2.add_node("A Epita");
- tree2.add_node("Ping pong ping");
- main_tree.add_tree(tree2);
-
- std::cout << "root main: " << main_tree.get_node_root().get_data()
- << std::endl;
- nb_childs2 = main_tree.get_nb_childs();
-
- // Ici arbre sur 2 niveaux (Bien sur qu'on peut faire en recursivite ^_^)
- for (unsigned int i = 0; i < nb_childs2; ++i)
- {
- nb_childs = main_tree.get_child(i).get_nb_childs();
- std::cout << main_tree.get_child(i).get_data() << std::endl;
- for (unsigned int j = 0; j < nb_childs; ++j)
- std::cout << main_tree.get_child(i).get_child(j).get_data()
- << std::endl;
- }
-
- return (0);
-}
-
-
-int main()
-{
- test_tree();
- return (0);
-}
diff --git a/trunk/glagen/algo_distribue/tree/node.cc b/trunk/glagen/algo_distribue/tree/node.cc
deleted file mode 100644
index a3ae387..0000000
--- a/trunk/glagen/algo_distribue/tree/node.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// node.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:40:40 2002 meng-tih lam
-// Last update Fri Aug 16 02:41:05 2002 meng-tih lam
-//
-
-#include "node.hh"
diff --git a/trunk/glagen/algo_distribue/tree/node.hh b/trunk/glagen/algo_distribue/tree/node.hh
deleted file mode 100644
index b80a699..0000000
--- a/trunk/glagen/algo_distribue/tree/node.hh
+++ /dev/null
@@ -1,78 +0,0 @@
-
-#ifndef NODE_HH_
-# define NODE_HH_
-
-#include <list>
-// Rajouter l'include correspondant a la template de TYPENODE
-// + implemente le std::cout abtrait pour les tests
-
-template<class TYPENODE> class Tree; // Declaration prealable
-
-template<class TYPENODE> class Node
-{
- friend class Tree<TYPENODE>;
-
-public:
- Node(const TYPENODE &d) : _link(new std::list<Node>), _data(d) {}
-
- void add_child(const TYPENODE& value) { _link->push_back(Node(value)); }
-
- void add_tree_node(const Node& value) { _link->push_back(value); }
-
- TYPENODE get_data() const { return (_data); }
-
- const unsigned int get_nb_childs() const { return (_link->size()); }
-
- std::list<Node>* get_childs() const { return (_link); }
-
- unsigned int get_number_node() const
- {
- unsigned int number_childs = _link->size();
- std::list<Node>::const_iterator child = _link->begin();
- unsigned int number_node = 1;
- for (unsigned int tmp = 0; tmp != number_childs; ++tmp)
- {
- number_node += child->get_number_node();
- ++child;
- }
- return (number_node);
- }
-
- // Renvoie le noeud fils suivant le numero a partir de 0
- Node get_child(const unsigned int& i) const
- {
- assert(i < _link->size());
- std::list<Node>::const_iterator child = _link->begin();
- for (unsigned int tmp = 0; tmp != i; ++tmp)
- ++child;
- return (*child);
- }
-
- // Numerotation de l'arbre suivant un parcours en largeur de 0 a n
- Node get_node_course_width(const int& ptr) const
- {
- int rptr = ptr;
- std::list<Node> ptr_node = *new std::list<Node>;
- ptr_node.push_back(*this);
- while (ptr_node.size())
- {
- std::list<Node>::iterator childs = ptr_node.begin();
- std::list<Node>::iterator child = childs->get_childs()->begin();
- for (; child != childs->get_childs()->end(); ++child)
- {
- ptr_node.push_back(*child);
- if (--rptr == 0)
- return (*child);
- }
- ptr_node.pop_front();
- }
- return (*this);
- }
-
-private:
-
- std::list<Node> *_link; // Pointeur vers le sous-arbre
- TYPENODE _data;
-};
-
-#endif // NODE_HH_
diff --git a/trunk/glagen/algo_distribue/tree/tree.cc b/trunk/glagen/algo_distribue/tree/tree.cc
deleted file mode 100644
index 047ca89..0000000
--- a/trunk/glagen/algo_distribue/tree/tree.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// tree.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:45:56 2002 meng-tih lam
-// Last update Fri Aug 16 17:11:24 2002 meng-tih lam
-//
-
-#include "tree.hh"
diff --git a/trunk/glagen/algo_distribue/tree/tree.hh b/trunk/glagen/algo_distribue/tree/tree.hh
deleted file mode 100644
index 86ce136..0000000
--- a/trunk/glagen/algo_distribue/tree/tree.hh
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-#ifndef TREE_HH_
-# define TREE_HH_
-
-#include <list>
-#include <assert.h>
-#include "node.hh"
-// Rajouter l'include correspondant a la template de TYPENODE
-// + implemente le std::cout abstrait pour les tests
-
-template<class TYPENODE> class Tree
-{
-public:
- // Construit la racine de l'arbre avec l'info dans son contenu
- Tree(const TYPENODE& value) : _root(new Node<TYPENODE>(value)) {}
-
- Tree(const Tree<TYPENODE>& value) : _root(value._root) {}
-
- // Ajoute un noeud fils (avec info) a l'arbre
- void add_node(const TYPENODE& value) { _root->add_child(value); }
-
- // Renvoie la racine de l'arbre de type Node
- Node<TYPENODE>& get_node_root() const { return (*_root); }
-
- // Ajoute un autre arbre a la racine de l'arbre courant
- void add_tree(const Tree &value)
- {
- _root->add_tree_node(value.get_node_root());
- }
-
- // Renvoie la liste de Node de ses fils
- std::list< Node<TYPENODE> >& get_childs() { return _root->get_childs(); }
-
- // Information du nombre de fils
- const unsigned int get_nb_childs() const
- {
- return (_root->get_nb_childs());
- }
-
- // Renvoie le noeud fils suivant le numero a partir de 0
- Node<TYPENODE> get_child(const unsigned int& i) const
- {
- return (_root->get_child(i));
- }
-
-private:
- Node<TYPENODE> *_root;
-};
-
-#endif // TREE_HH_
diff --git a/trunk/glagen/dll/MANUAL b/trunk/glagen/dll/MANUAL
deleted file mode 100644
index 5e7cfa0..0000000
--- a/trunk/glagen/dll/MANUAL
+++ /dev/null
@@ -1,138 +0,0 @@
-
- =============================
- Dynamic Library Loader Module
- =============================
- GLAGEN - 2002 - Hugues HIEGEL
-
-
-
-
- I. What is it ?
-
-
-The Dynamic Library Loader Module (DLL Module) is part of the GLAGEN
-Engine. It goals is to provide to the end-user a flexible usage of
-external C/C++ libraries (*.so) .
-
-At this time, only C++ libraries are supported, because the main DLL
-Module is already written in C++. It should be easy to allow C-written
-libraries, but du to a lack of time, it should appear.. later.
-
-
-
- II. How does it work ?
-
-
-The DLL Engine reads all libraries, especially their Names and
-Dependancies, and then builds a dependancies tree. This last would be
-used by the Network module (written by lam_m), and should determine in
-which order each library would be executed in the main loop.
-For example:
-
- library A needs nobody, alike library B. Libraries AC and AD needs
- A, BE and BF need B, ACG needs AC and BFH needs BF.
- We would obtain such a tree:
-
- (root)
- \__________________
- | |
- A B
- \_______ \_____
- | | | |
- AC AD BE BF
- \_ \_
- | |
- ACG BFH
-
-
- Then the execution order would be done in such an order, reading
- the tree top-bottom and left-right:
- A-AC-ACG-AD-B-BE-BF-BFH
-
- Like that, we are certain that any library would be able to read
- the results of one of its dependancies.
-
-I did a Library class that contains a lot of infos about each
-library.so. For each library file, I effectively create a new Library
-instance, and initialize it by opening the library, ang trying to get
-infos using dlsym and some canonical symbols (See section above for
-more info about libraries' symbols). If the library do answer to the
-required ones, then it is stored, else it is immediately closed and
-forgotten.
-
-Along the program, we will mainly work with list of Libraries, for
-this class is our swiss tool.
-
-
-
- III. The Library class
-
-
-You should find prototypes & declarations in the
-./dll/classes/libclass.hh file and definitions & implementations in
-the ./dll/classes/libclass.cc file in the root of the glagen devel
-directory.
-
-The Library class mainly consists of:
-
- a Filename string,
- a handler void pointer,
- and some important methods.
-
-I'll explain each method.
-
-III.1 Methods
-
- III.1a Library(), Library(string Filename)
-These are the creators. They only create a new class.
-The one with the string also initializes the Filename property to the
-given value.
-
- III.1b ~Library()
-The destructor.
-It cleans the Library class, although it is not really necessary in
-the measure we work on variables (not pointers),
-
- III.1c LoadLib(), LoadLib(string Filename)
-This is one of the most important methods. It opens the file, tries to
-obtain an handler and if succeed, stores this handler in the correct
-property.
-Then we call, if found, the GLG_Hello() symbol, in which the
-devel-user should output some text in cout.. As he feels it.
-It would be called once during the whole glagen process' life.
-(Maybe two if using the network).
-This method is used to obtain infos such as Library name and
-dependancies, in order to sort it and check that no dependancy is
-missing. Elsewhere, it would tell you the name of missing libraries
-and ignore this one. And continue with next library.
-
- III.1d Initialize()
-The great one. This method would be called once in the loading process
-to calculate data size on the server, and then another time once
-loaded in a client, to preserve an area in the data memory.
-In this method, we would ask the user library to make as many palloc()
-as it wants, each palloc, in the order, being allocating some data
-memory.
-For example:
-
- Library Foo needs to use and/or share three sorts of data in the
- whole glagen process, for example a surface information, a color
- one and the age of the captain.
- Foo should have a GLG_Init() function like this :
-
- GLG_Init(...)
- {
- ...
- palloc(surface, ...);
- palloc(color, ...);
- palloc(captainage, ...);
- ...
- }
-
- The library class linked with this library would then ask the
- server for some memory rooms, and then stores three (because of
- the three palloc()) keys in some deep owned property.
- During the main loop, the library should only ask to read or
- write its third room to obtain or modify the captainage.
-
- III.1e
diff --git a/trunk/glagen/dll/Makefile b/trunk/glagen/dll/Makefile
deleted file mode 100644
index b3db10d..0000000
--- a/trunk/glagen/dll/Makefile
+++ /dev/null
@@ -1,72 +0,0 @@
-################################################################
-# GLAGEN Project (http://www.planetmarvin.zyns.com/) #
-# Makefile done by Titi <Meng-Tih LAM> #
-# i686 specifications added by Onidwa <Hugues HIEGEL> #
-################################################################
-
-CC = g++
-RM = rm -fr
-
-NAME = glagen-$(MODULE)-$(VERSION).$(SUBVERSION)
-MODULE = libloader
-VERSION = 2
-SUBVERSION = 01b
-
-KERNEL = `uname -s`
-
-DEBUG =
-
-OBJS = $(SRCS:.cc=.o)
-HDRS = $(SRCS:.cc=.hh)
-SRCS = classes/libclass.cc\
- classes/matrix.cc\
- classes/node.cc\
- classes/Data_string.cc\
- classes/Data_property.cc\
- create_dotproperty_init.cc\
- libraryloader.cc\
- main.cc
-
-ARCHI_NetBSD = $(DEBUG) -g2 -Wall -W -O3
-CPP_NetBSD = -I/usr/include\
- -I/usr/include/GL\
- -I/usr/X11R6/include
-LIB_NetBSD = -L/usr/X11R6/lib\
- -L/usr/lib\
- -L/usr/pkg/lib\
- -lc\
- -lm\
- -lX11\
- -lGL\
- -lGLU\
- -lglut
-
-ARCHI_Linux = $(DEBUG) -g2 -O3 -I/usr/X11R6/include
-LIB_Linux = -L/usr/X11R6/lib\
- -L/usr/include\
- -L/usr/lib\
- -L/usr/pkg/lib\
- -lc\
- -lm\
- -lX11\
- -lGL\
- -lGLU\
- -lglut
-CPP_Linux = -I.\
- -I/usr/include
-
-.PHONY: all clean deps
-
-all: $(OBJS)
- $(CC) -o $(NAME) $(CPP_Linux) $(OBJS) $(LIB_Linux) $(ARCHI_Linux)
-
-.cc.o:
- $(CC) $(ARCHI_Linux) $(CPP_Linux) -c $< -o $(<:.cc=.o)
-
-clean:
- $(RM) $(OBJS) $(NAME) *~ */*~ \#*\#
-
-deps:
- makedepend $(SRC) 2>/dev/null
-
-re: clean all
diff --git a/trunk/glagen/dll/NOTES b/trunk/glagen/dll/NOTES
deleted file mode 100644
index 19b48fa..0000000
--- a/trunk/glagen/dll/NOTES
+++ /dev/null
@@ -1,13 +0,0 @@
-
-Parcours de la matrice d'adjacence,
-a chaque fois que je tombe sur un noeud
-de dependance, j'ajoute un fils et je
-mets cette dependance a zero.
-
-Je continue jusqu'a ce que tout le monde ait
-0 dependances (matriciellement parlant)
-
-Probleme...
-
-Des dependances croisees, en dehors de la matrice..
-On va dire que pour le moment, on s'en fout.
diff --git a/trunk/glagen/dll/README b/trunk/glagen/dll/README
deleted file mode 100644
index 36d270e..0000000
--- a/trunk/glagen/dll/README
+++ /dev/null
@@ -1,237 +0,0 @@
-
- =============================
- Dynamic Library Loader Module
- =============================
- GLAGEN - 2002 - Hugues HIEGEL
-
-
-
-
- I. What is it ?
-
-
-The Dynamic Library Loader Module (DLL Module) is part of the GLAGEN
-Engine. It goals is to provide to the end-user a flexible usage of
-external C/C++ libraries (*.so) .
-
-At this time, only C++ libraries are supported, because the main DLL
-Module is already written in C++. It should be easy to allow C-written
-libraries, but du to a lack of time, it should appear.. later.
-
-
- II. How does it work ?
-
-
-The DLL Engine reads all libraries, especially their Names and
-Dependancies, and then builds a dependancies tree. This last would be
-used by the Network module (written by lam_m), and should determine in
-which order each library would be executed in the main loop.
-For example:
-
- library A needs nobody, alike library B. Libraries AC and AD needs
- A, BE and BF need B, ACG needs AC and BFH needs BF.
- We would obtain such a tree:
-
- (root)
- \__________________
- | |
- A B
- \_______ \_____
- | | | |
- AC AD BE BF
- \_ \_
- | |
- ACG BFH
-
-
- Then the execution order would be done in such an order, reading
- the tree top-to-bottom, then left-to-right:
- A-AC-ACG-AD-B-BE-BF-BFH
-
- Like that, we are certain that any library would be able to read
- the results of one of its dependancies.
-
-I did a Library class that contains a lot of infos about each
-library.so. For each library file, I effectively create a new Library
-instance, and initialize it by opening the library, ang trying to get
-infos using dlsym and some canonical symbols (See section above for
-more info about libraries' symbols). If the library do answer to the
-required ones, then it is stored, else it is immediately closed and
-forgotten.
-
-Along the program, we will mainly work with list of Libraries, for
-this class is our swiss tool.
-
-
-
- III. The Library class
-
-In this section, I will explain the main characteristics of this class
-and the method used.
-
- III.0 Hello, Bye
-
-First of all, we allow the user to make two functions in its library :
-GLG_Hello and GLG_Bye, in which he could put an hello and bye message
-to the standard out. For example. He also could wathever he wants in
-them, but no initialisation. These would be desribed in the next
-chapter. Hello and Bye are there just to give flexibility and a bit of
-fun.
-
- III.1 Initialisation
-
-Creating a new Library class and Loading it consists in giving a
-library filename, trying to open it, then trying to obtain a DL
-handler.
-If a handler is obtained, we load some Symbols to check if it is
-a real GLAGEN library : the .so must return a name as a string in
-respond to the call at GLG_Name(). Then we try to get its dependancies.
-These infos are finally used to generate the dependances tree ahead.
-The dependancies are given under a list of string, that make the
-treatment easier.
-
-Each library is allowed to use as many properties it wants for every
-3d engine's dot. Each dot has a list of properties, and this list is
-created by a recursive call of every library's GLG_Init symbol. Each
-library class associated with each library file retains for each
-property requested its position in the global list of properties.
-For example:
-
- Library Foo needs to use and/or share three sorts of data in the
- whole glagen process, for example a surface information, a color
- one and the age of the captain.
- Foo should have a GLG_Init() function like this :
-
- GLG_Init(...)
- {
- ...
- palloc(surface, ...);
- palloc(color, ...);
- palloc(captainage, ...);
- ...
- }
-
- The library class linked with this library would then ask the
- server for some memory rooms, and then stores three (because of
- the three palloc()) keys in some deep owned property.
- During the main loop, the library should only ask to read or
- write its third room to obtain or modify the captainage.
- It doesn't even know the captainage is really stored in some
- 42nd room in the whole 'memory'.
-
-palloc() is a function that calls itself a method of the current
-calling library, so this library can stores the global acces method on
-the local machine.
-For that, the initialize() method gives a pointer to (this) to the
-GLG_Init of the dll. Then this dll has nothing to do qith this
-pointer, just give it as a parameter to palloc(). This palloc(),
-defined out of the library class, calls then the REF->_palloc() method.
-I didn't found a simpliest method to do that, because I didn't want
-the dll developper hav to know anything about the Library class.
-If I forced him to call REF->_palloc() instead of palloc(REF), he
-would have to know the REF* prototype for its GLG_Init definition,
-then he would have to use the libraryclass header.
-My goal is to provide him a 'totally' independant code. So, I choose
-to make him take a void* REF in its GLG_Init(), and then give this
-void* REF to palloc, which takes it as a Libary*.
-See code for more details : ./dll/classes/libclass.hh and a sample
-library code.
-
-
- III.2 Global properties accesses
-
-Two functions allow libraries to access dots properties, in read or
-write mode.
-For example:
-
- Library17 has 3 dots properties, declared in order (the 1st in
- first place, the 2nd in second place and the 3rd in last).
- The library's user know what is the first property, what is the
- second, and what is the third. For example, he decides the first
- property is the color, the second the height, and
- god-know-whatever is the third. When he wants to access the color
- property, he would only call a GLG_read(2, ...) function.
- This function will then call a method of the current class to get
- the REAL position of this 2nd element in the whole list of
- properties, shared by many other libraries..
- And then, the access of the '2nd' element would be transparent to
- the user.
-
-There is also a GLG_write function based on same principle. They both
-looks like read and write standard C functions, which is absolutely
-natural.
-
-The main difficulty of these functions were that I didn't know in
-which level the efficient read and write should be done. In the
-library engine ? In which level ? Client-side ? Server-side ? If
-ti is in Client-side, how would the server know ? If it is in
-Server-side, how would the Client know ??
-
-So, we decided to keep one dot property tab in each computer (clients
-and server), make all inits, reads and writes in the local computer.
-A first initialisation is made in the server, to know the global size
-of a dot property tab. Then a second is done in each client, which
-returns to the server the total size found. Then the server knows what
-it will allocate for each client.
-Example:
-
- The server loads libraries A, AC and B. A needs 4 bytes, AC needs
- 3, and B needs 5. The server knows that A and AC will be sent to
- the client1. Then he allocates 4+3 then 7 bytes to client1, and
- the 5 last bytes to client2. Client1 receives A and AC, reads them
- and finds 7 bytes to allocate locally. Client2 will find 5 bytes
- to allocate locally. After each main loop, client1 will send its 7
- bytes to the server, who will put them in right place. Client2
- sends its 5 bytes, and the server puts them in back of the 7 first
- bytes.
-
-That is trivial. Although this is the network part, I did the routine
-to make that. The source code can be found in
-create_dotproperty_init.cc file. It has to be included in right place
-in the clients and server main functions.
-
-
- III.3 Main loop
-
-Not yet fully implemented.
-The main loop call is called GLG_Main, and would take as argument a
-Dot* pointer. Then the user has to include the dot.hh header, found in
-the 3d engine directory or in the ./classes folder.
-In this main loop, the user just has to read and write properties in
-the given Dot. The time and other dot-independant informations should
-be given in a method that has not really been specified at this time.
-The read function calls should be done specifiying a library name, and
-the result will be given only if the current library has read access
-to the given one. There, the dependancies takes all its meaning.
-But why would we do more processing by checking the permissions ? This
-permitts Glagen to be a clean processus.
-However, a library could read its dependancies properties and
-recursively the dependancies of its dependancies. That would look more
-natural in this way.
-Note that there are two 'system' properties, such as primary color and
-primary height of the dot. 'Primary', because one 'dot' should
-represent superposed surfaces' dots.
-Finally, some Perlin noise functions should have been given in this
-level, allowing the user to make realistic world renderings.
-Just see the sun example in our website to be convinced ;)
-
-
- IV. Conclusion
-
-This part is not yet finished, due to some difficulties to understand
-how would my module work in the global project. The mainloop call
-is not realy finished, but some minor changes have to be done.
-The main squeletton is already the module itself, so I am globally
-satisfied about my work, although I would be more satisfied if it were
-really included in the final project.
-Since it is under GPL, I would not abandon it. I spent too much time
-on it to give forfeit. Without the pressure of the school, I would
-certainly end my module and best it in great state of spirit.
-
-The main reason, I think, that I didn't finish my part in time, is
-that I spent to much time on making a clean code. A program that
-doesn't bug without reason. This is the most important to me.
-If I made a code in the only goal to make a finished product, I would
-certainly hav missed lots of bugs, and the final result code would
-have been so awful I would never continue it.
-did
diff --git a/trunk/glagen/dll/classes/Data_property.cc b/trunk/glagen/dll/classes/Data_property.cc
deleted file mode 100644
index 3be4b27..0000000
--- a/trunk/glagen/dll/classes/Data_property.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// Data_property.cc for Glagen : made by Titi (Meng-tih LAM)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "Data_property.hh"
diff --git a/trunk/glagen/dll/classes/Data_property.hh b/trunk/glagen/dll/classes/Data_property.hh
deleted file mode 100644
index b4d0c4d..0000000
--- a/trunk/glagen/dll/classes/Data_property.hh
+++ /dev/null
@@ -1,88 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// Data_property.hh for Glagen : made by Titi (Meng-tih LAM)
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef DATA_PROPERTY_HH_
-# define DATA_PROPERTY_HH_
-
-#include <iostream>
-#include <string>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-#include "../../3d/data_glagen.hh"
-
-class Data_property
-{
-public:
- Data_property() : _data(0), _size(0), _type(kind_lib_t(none)) {}
- Data_property(void* data, size_t size, kind_lib_t type)
- : _data(data),
- _size(size),
- _type(type)
- {}
-
- void write_data(const int& fd) const
- {
- write(fd, &_type, sizeof(int));
- write(fd, &_size, sizeof(int));
- write(fd, _data, _size * sizeof(void *));
- }
-
- void read_data(const int& fd)
- {
- do
- {
- errno = 0;
- read(fd, &_type, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, &_size, sizeof(int));
- }
- while (errno == 4);
-
- do
- {
- errno = 0;
- read(fd, _data, _size * sizeof(void *));
- }
- while (errno == 4);
- }
-
-protected:
- void *_data;
- size_t _size;
- kind_lib_t _type;
-};
-
-#endif // DATA_PROPERTY_HH_
diff --git a/trunk/glagen/dll/classes/Data_string.cc b/trunk/glagen/dll/classes/Data_string.cc
deleted file mode 100644
index 49fe4ff..0000000
--- a/trunk/glagen/dll/classes/Data_string.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "Data_string.hh"
diff --git a/trunk/glagen/dll/classes/Data_string.hh b/trunk/glagen/dll/classes/Data_string.hh
deleted file mode 100644
index a5f9131..0000000
--- a/trunk/glagen/dll/classes/Data_string.hh
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef DATA_STRING_HH_
-# define DATA_STRING_HH_
-
-#include <iostream>
-#include <string>
-#include <unistd.h> // Pour write/read
-
-#include <errno.h>
-
-using namespace std;
-
-class Data_string
-{
-public:
- Data_string() : _str("") {};
- Data_string(const string& str) : _str(str) {};
-
- void write_data(const int& fd) const
- {
-
- std::cout << "Donnees envoyes" << std::endl << _str << std::endl;
- unsigned int size = _str.size();
- write(fd, &size, sizeof(unsigned int));
- for (unsigned int i = 0; i < size; ++i)
- {
- char car = _str[i];
- write(fd, &car, sizeof(char));
- }
- }
-
- void read_data(const int& fd)
- {
- unsigned int size = 0;
- do
- {
- errno = 0;
- read(fd, &size, sizeof(size));
- }
- while (errno == 4);
-
- _str = "";
- for (unsigned int i = 0; i < size; ++i)
- {
- char car;
- do
- {
- errno = 0;
- read(fd, &car, sizeof(char));
- }
- while (errno == 4);
- _str += car;
- }
-
- std::cout << "Reception message sur le file descriptor :" << fd
- << std::endl << _str << std::endl;
- }
-
-private:
- string _str;
-};
-
-#endif // DATA_STRING
diff --git a/trunk/glagen/dll/classes/GLG-libraries-devel.cc b/trunk/glagen/dll/classes/GLG-libraries-devel.cc
deleted file mode 100644
index 002d479..0000000
--- a/trunk/glagen/dll/classes/GLG-libraries-devel.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// GLG-libraries-devel.cc for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include "GLG-libraries-devel.hh"
-#include "libclass.hh"
-
diff --git a/trunk/glagen/dll/classes/GLG-libraries-devel.hh b/trunk/glagen/dll/classes/GLG-libraries-devel.hh
deleted file mode 100644
index 8b13789..0000000
--- a/trunk/glagen/dll/classes/GLG-libraries-devel.hh
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/trunk/glagen/dll/classes/dot.cc b/trunk/glagen/dll/classes/dot.cc
deleted file mode 100644
index 10e766a..0000000
--- a/trunk/glagen/dll/classes/dot.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// dot.cc for Glagen in ~/Galgen/3d
-//
-// Made by Zavie
-// Login <guerta_j@epita.fr>
-//
-// Started on Fri Aug 16 17:08:16 2002 Zavie
-//
-
-#include <cstdio>
-#include <cstdlib>
-#include <cmath>
-#include "data_glagen.hh"
-#include "dot.hh"
-
-// Constructor and destructor
-Dot :: Dot (double x, double y, double z)
-{
- int current;
-
- _x = x;
- _y = y;
- _z = z;
- _use = 0;
- _property = new void *[GL_property];
- for (current = 0; current < GL_property; current++)
- _property[current] = NULL;
- step = GL_step;
-}
-
-Dot :: ~Dot ()
-{
- int current;
-
- for (current = 0; current < GL_property; current++)
- if (_property[current] != NULL)
- delete _property[current];
-}
-
-// Reading
-double Dot :: x () { return _x; }
-double Dot :: y () { return _y; }
-double Dot :: z () { return _z; }
-
-void *Dot :: Property (int i)
-{
- return _property[i];
-}
-bool Dot :: Is_checked () { return (step == GL_step); }
-
-// Writing
-void Dot :: set (double x, double y, double z)
-{
- _x = x;
- _y = y;
- _z = z;
-}
-
-void Dot :: Use () { _use = _use + 1; }
-
-void Dot :: Drop ()
-{
- _use = _use - 1;
- if (0 == _use)
- {
- delete this;
- printf("destroy !\n");
- }
-}
-
-void Dot :: Del_property (int i)
-{
- delete _property[i];
- _property[i] = NULL;
-}
-
-void Dot :: Set_property (int i, void *property)
-{
- _property[i] = property;
-}
-
-void Dot :: Checked () { step = GL_step; }
-
-// Other tools
-Dot *Dot :: Middle (Dot *b)
-{
- double xc;
- double yc;
- double zc;
- double adjust;
-
- xc = (this->x () + b->x ()) / 2;
- yc = (this->y () + b->y ()) / 2;
- zc = (this->z () + b->z ()) / 2;
- adjust = sqrt (GL_square_size / (xc * xc + yc * yc + zc * zc));
- xc = xc * adjust;
- yc = yc * adjust;
- zc = zc * adjust;
- return new Dot (xc, yc, zc);
-}
diff --git a/trunk/glagen/dll/classes/dot.hh b/trunk/glagen/dll/classes/dot.hh
deleted file mode 100644
index e13f23c..0000000
--- a/trunk/glagen/dll/classes/dot.hh
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// dot.hh for Glagen in ~/Galgen/3d
-//
-// Made by Zavie
-// Login <guerta_j@epita.fr>
-//
-// Started on Fri Aug 16 17:08:16 2002 Zavie
-//
-
-#ifndef DOT_HH_
-# define DOT_HH_
-
-class Dot
-{
-public:
-
- // Constructor and destructor
- Dot (double x, double y, double z);
- ~Dot ();
-
- // Reading
- double x ();
- double y ();
- double z ();
-
- void *Property (int i);
- bool Is_checked ();
-
- // Writing
- void set (double x, double y, double z);
- void Use ();
- void Drop ();
- void Del_property (int i);
- void Set_property (int i, void *property);
- void Checked ();
-
- // Other tools
- Dot *Middle (Dot *b);
-
-protected:
- double _x;
- double _y;
- double _z;
- unsigned char _use;
- void **_property;
- char step;
-};
-
-#endif // DOT_HH_
diff --git a/trunk/glagen/dll/classes/libclass.cc b/trunk/glagen/dll/classes/libclass.cc
deleted file mode 100644
index 730026f..0000000
--- a/trunk/glagen/dll/classes/libclass.cc
+++ /dev/null
@@ -1,391 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// libclass.cc for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-//--LIBRARY CLASS IMPLEMENTATION--//
-
-#include <iostream>
-#include <dlfcn.h>
-#include <cstdio>
-#include <string>
-#include <list>
-
-#include "../includes/errors.hh"
-#include "libclass.hh"
-
-using std::cout;
-using std::cerr;
-using std::endl;
-
-/******************************************
-* Constructors *
-* && Destructors *
-******************************************/
-Library::Library()
-{
-}
-
-Library::Library(string Filename)
-{
- this->Filename = Filename;
- this->properties.clear();
-}
-
-Library::~Library()
-{
- if (this->handler)
- this->UnloadLib();
- this->Filename = "";
- this->properties.clear();
-}
-
-/******************************************
-* Loaders *
-* -just loads libs files- *
-******************************************/
-int Library::LoadLib(string Filename)
-{
- this->Filename = Filename;
- return this->LoadLib();
-}
-
-int Library::LoadLib()
-{
-
- this->properties.clear();
-
- /*
- ** Tries to open the library itself
- */
- this->handler = dlopen(Filename.c_str(), RTLD_LAZY);
-
- if (!(this->handler)) /* This is not a library */
- {
- cerr << "#Err " << ERR_OPENLIB
- << ": " << dlerror() << "" << endl;
- return ERR_OPENLIB;
- }
-
- typedef string (*name_t)();
- name_t Name = (name_t) dlsym(this->handler, "GLG_Name");
- if (!Name)
- {
- cerr << "#Err " << ERR_LIBSYMBOL
- << ": Missing symbol 'string GLG_Name()' in "
- << this->Filename << "" << endl;
- return ERR_LIBSYMBOL;
- }
-
- cout << "Loading library: ";
- cout << Name();
-
- // This shows the dependancies in loading time.
- list<string> deps;
- std::list<string>::iterator deps_i;
- deps = this->getDependancies();
- if (! deps.empty())
- {
- cout << " {";
- for (deps_i = deps.begin();
- deps_i != deps.end();
- deps_i++)
- cout << *deps_i << ", ";
- cout << "}";
- }
- cout << endl;
-
- typedef void* (*hello_t)();
- hello_t Hello = (hello_t) dlsym(this->handler, "GLG_Hello");
- if (Hello)
- Hello();
-
- return 0;
-}
-
-int Library::Initialize()
-{
- cout << "Moteur\tlibrary::initialize " << endl ;
-
- // typedef int (*init_t)(void*, Library*);
- // init_t Init = (init_t) dlsym(this->handler, "GLG_Init");
- // if (Init)
- // Init(palloc, this);
-
- /***********************************************
- ** typedef struct dot_property_t { **
- ** int pos; **
- ** size_t size; **
- ** }; **
- ** **
- ** std::list<dot_property_t> this->properties **
- ***********************************************/
- return 0;
-
-}
-
-int Library::MainLoop(Dot* dot)
-{
- cout << "Moteur\tlibrary::mainloop " << endl ;
-
- typedef int (*main_t)(Dot*, void*);
- main_t _Main = (main_t) dlsym(this->handler, "GLG_Main");
- if (_Main)
- _Main(dot, NULL);
-
- return 0;
-
-}
-
-/******************************************
-* Miscellaneous stuffs *
-* Useful functions *
-******************************************/
-list<string> Library::getDependancies() const
-{
-
- /*
- ** Gets all library's dependancies
- */
-
- typedef list<string> (*deps_t)();
- deps_t Deps = (deps_t) dlsym(this->handler, "GLG_Dependancies");
-
- list<string> deps;
- deps.clear();
-
- if (!Deps)
- return deps;
-
- deps = Deps();
- return deps;
-}
-
-string Library::getName() const
-{
-
- /*
- ** Gets the library's basename
- */
-
- typedef string (*name_t)();
- name_t Name = (name_t) dlsym(this->handler, "GLG_Name");
-
- if (!Name)
- return this->Filename;
-
- return Name();
-}
-
-
-string Library::getFilename() const
-{
- return this->Filename;
-}
-
-list<dot_property_t> Library::getDotProperties() const
-{
- return this->properties;
-}
-
-
-int Library::getRealPos(int pos) const
-{
- std::list<dot_property_t>::const_iterator prop_i;
- int i = 0;
-
- for (prop_i = this->properties.begin();
- (i < pos) && (prop_i != this->properties.end());
- prop_i++)
- i++;
-
- if (i != pos)
- return (-1);
- return (prop_i->pos);
-}
-
-
-int Library::AccesAllowed(string& ToLib) const
-{
- if (ToLib == this->getName())
- return 1;
-
- int allowed = 0;
-
- std::list<string> deps = this->getDependancies();
- std::list<string>::const_iterator dep_i;
-
- for (dep_i = deps.begin();
- !allowed && (dep_i != deps.end());
- dep_i++)
- allowed = (*dep_i == ToLib);
-
- return allowed;
-
-}
-
-/******************************************
-* Unloader *
-* -closes the library handler if exists- *
-******************************************/
-void Library::UnloadLib()
-{
- using std::cout;
- using std::cerr;
- using std::endl;
-
- /*
- ** Asks the library to say 'Bye'
- */
- cout << "Closing library: ";
-
- typedef string (*name_t)();
- name_t Name = (name_t) dlsym(this->handler, "GLG_Name");
- cout << Name() << endl;
-
- typedef string (*bye_t)();
- bye_t Bye = (bye_t) dlsym(this->handler, "GLG_Bye");
- if (Bye)
- Bye();
-
- dlclose(this->handler);
-}
-
-/******************************************
-* _palloc *
-* stores infos on dot properties needed *
-******************************************/
-void Library::_palloc(kind_lib_t type, size_t size)
-{
- // in (*this) handler, we will store all this shit.
- GLG_property_pos++;
-
- cout << "\tThis is this->_palloc" << endl;
-
- dot_property_t property;
- property.pos = GLG_property_pos;
- property.size = size;
- property.type = type;
-
- this->properties.push_back(property);
-
- return ;
-}
-
-
-/******************************************
-* Utilities *
-* external functions needed for developers*
-******************************************/
-
-/* I am sure I know that ?? */
-extern list<property_t> Client_DotPropertyTab;
-extern const list<Library> list_libs;
-
-Library* getLibraryByName(const string Name, const list<Library> list_libs)
-{
- std::list<Library>::const_iterator lib_i;
- for (lib_i = list_libs.begin();
- (lib_i->getName() != Name) && (lib_i != list_libs.end());
- lib_i++)
- ;
- /* Yeah, we got the library. */
-
- Library* toto = NULL;
- (*toto) = *lib_i;
- return (toto);
-}
-
-void GLG_write(int pos, size_t size, void* data, Library* REF)
-{
- int real_pos = REF->getRealPos(pos);
- if (real_pos > -1)
- {
- std::list<property_t>::const_iterator prop_i;
- int i = 0;
- for (prop_i = Client_DotPropertyTab.begin();
- (i < real_pos) && (prop_i != Client_DotPropertyTab.end());
- prop_i++)
- ;
- if (i == real_pos)
- memcpy(prop_i->data, data, size); /* ou alors j'ai rien compris */
- }
-
-}
-
-void GLG_read(string& LibName, int pos, size_t size, void* data, Library* REF)
-{
- cout << REF->getName() << " hvufidoshvuiovhfudsviofdhvudiso" << endl;
-
- if (/*REF->AccessAllowed(LibName)*/ 1)
- {
-
- Library* Lib = getLibraryByName(LibName, list_libs);
-
- int real_pos = Lib->getRealPos(pos);
- if (real_pos > -1)
- {
- std::list<property_t>::const_iterator prop_i;
- int i = 0;
- for (prop_i = Client_DotPropertyTab.begin();
- (i < real_pos) && (prop_i != Client_DotPropertyTab.end());
- prop_i++)
- ;
- if (i == real_pos)
- memcpy(data, prop_i->data, size); /* ou alors j'ai rien compris */
- }
- }
-
- return ;
-}
-
-void GLG_read(int pos, size_t size, void* data, Library* REF)
-{
- string toto = REF->getName();
- GLG_read(toto, pos, size, data, REF);
-}
-
-void palloc(kind_lib_t type, size_t size, Library* REF)
-{
- cout << "\tThis is palloc itself" << endl;
-
- /*************************************************
- ** **
- ** From a .so, we cannot call a class method. **
- ** But we need to do that !! **
- ** **
- ** So, I made this little shortcut : **
- ** a function that takes a class pointer, **
- ** and that calls the real method. **
- ** **
- ** So easy. **
- ** **
- *************************************************/
-
- REF->_palloc(type, size);
- return ;
-}
-
diff --git a/trunk/glagen/dll/classes/libclass.hh b/trunk/glagen/dll/classes/libclass.hh
deleted file mode 100644
index 33a2fde..0000000
--- a/trunk/glagen/dll/classes/libclass.hh
+++ /dev/null
@@ -1,91 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// libclass.hh for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-//--LIBRARY CLASS DEFINITION--//
-
-#include <iostream>
-#include <string>
-#include <list>
-
-#include "../../3d/data_glagen.hh"
-#include "Data_property.hh"
-
-#ifndef LIBCLASS_HH_
-# define LIBCLASS_HH_
-
-using namespace std;
-extern int GLG_property_pos;
-
-typedef struct dot_property_t {
- int pos;
- size_t size;
- kind_lib_t type;
-};
-
-class Library
-{
-public:
-
- Library();
- Library(string Filename);
- virtual ~Library();
-
- // int FirstLoad(); // ???
- int LoadLib();
- int LoadLib(string Filename);
- int Initialize();
- int MainLoop(Dot* dot);
- void _palloc(kind_lib_t type, size_t size);
-
- // int MainLoop(Dot* dot, ...);
-
- int Uninitialize();
- void UnloadLib();
-
- list<string> getDependancies() const;
- string getName() const;
- string getFilename() const;
- list<dot_property_t> getDotProperties() const;
- int getRealPos(const int pos) const;
- int AccesAllowed(string& ToLib) const;
-
-private:
- string Filename;
- void *handler;
- std::list<string> dependancies;
- std::list<dot_property_t> properties;
-
-};
-
-void palloc(kind_lib_t type, size_t size, Library* REF);
-
-void GLG_write(int pos, size_t size, void* data, Library* REF);
-void GLG_read(string& LibName, int pos, size_t size, void* data, Library* REF);
-void GLG_read(int pos, size_t size, void* data, Library* REF);
-
-#endif //LIBCLASS_HH_
diff --git a/trunk/glagen/dll/classes/matrix.cc b/trunk/glagen/dll/classes/matrix.cc
deleted file mode 100644
index 7991769..0000000
--- a/trunk/glagen/dll/classes/matrix.cc
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-#include "matrix.hh"
diff --git a/trunk/glagen/dll/classes/matrix.hh b/trunk/glagen/dll/classes/matrix.hh
deleted file mode 100644
index f49ea17..0000000
--- a/trunk/glagen/dll/classes/matrix.hh
+++ /dev/null
@@ -1,324 +0,0 @@
-// matrix.hh
-
-#include <iostream>
-
-#ifndef REALMATRIX_HH_
-# define REALMATRIX_HH_
-
-// la class TYPE ne peut etre que de type nombre (ex: double, int, long,...)
-
-template <class TYPE> class Matrix
-{
-public:
- // Constructor
- Matrix(const unsigned int i, const unsigned int j)
- {
- this->_i = i;
- this->_j = j;
- this->_lines = new _line[i]; // Create lines...
- for (unsigned int k = 0; k < i; ++k)
- this->_lines[k] = new TYPE[j]; // ...and create column
- for (unsigned int k = 0; k < i; ++k)
- for (unsigned int l = 0; l < j; ++l)
- this->_lines[k][l] = 0;
- }
-
- // Constructor by copy
- Matrix(const Matrix& mat)
- {
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i];
- for (unsigned int k = 0; k < this->_i; ++k)
- {
- this->_lines[k] = new TYPE[this->_j];
- for (unsigned int l = 0; l < this->_j; ++l)
- this->_lines[k][l] = mat._lines[k][l];
- }
- }
-
- // Destructor
- ~Matrix()
- {
- if (this->_i != 0 || this->_j != 0)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- delete [] this->_lines[i];
- delete [] this->_lines;
- }
- }
-
- // Affected operator
- Matrix& operator=(const Matrix& mat)
- {
- if (&mat != this)
- {
- if (mat._i != this->_i || mat._j != this->_j) // Test dim
- {
- this->~Matrix(); // Destroy...
- this->_i = mat._i;
- this->_j = mat._j;
- this->_lines = new _line[this->_i]; // ...and realloc
- for (unsigned int i = 0; i < this->_i; ++i)
- this->_lines[i] = new TYPE[this->_j];
- }
- for (unsigned int i = 0; i < this->_i; ++i) // Copy
- for (unsigned int j = 0; j < this->_j; ++j)
- this->_lines[i][j] = mat._lines[i][j];
- }
- return (*this);
- }
-
- // Add elements to matrix
- Matrix& add_elems(const int& nb)
- {
- Matrix mat(this->_i + nb, this->_j + nb);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat(i, j) = this->_lines[i][j];
- *this = mat;
- return (*this);
- }
-
- // Add matrix to matrix
- Matrix& add_mat(const Matrix& mat)
- {
- unsigned int i = this->_i;
- unsigned int j = this->_j;
- this->add_elems(mat._i);
- for (unsigned int k = i; k < this->_i; k++)
- for (unsigned int l = j; l < this->_j; l++)
- this->_lines[k][l] = mat(k - i, l - j);
- return (*this);
- }
-
- // Add of matrix
- Matrix operator+(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator+(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of addiction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] + mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Sub matrix
- Matrix operator-(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != mat._i || this->_j != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- Matrix operator-(const Matrix& mat) const
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_i != this->_j || this->_i != mat._i || mat._i != mat._j)
- {
- std::cerr << "Error of substraction of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- for (unsigned int j = 0; j < this->_j; ++j)
- mat_tmp._lines[i][j] = this->_lines[i][j] - mat._lines[i][j];
- return (mat_tmp);
- }
-
- // Multiplication of matrix
- Matrix operator*(const Matrix& mat)
- {
- Matrix mat_tmp(this->_i, mat._j);
- if (this->_j != mat._i) // Check dimension
- {
- std::cerr << "Error of produce of 2 matrix (dimensions)"\
- << std::endl;
- return (mat_tmp);
- }
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < mat._j; ++j)
- {
- TYPE res = 0;
- // Produce lines and column of matrix
- for (unsigned int k = 0; k < this->_j; ++k)
- res += this->_lines[i][k] * mat._lines[k][j];
- mat_tmp._lines[i][j] = res;
- }
- }
- return (mat_tmp);
- }
-
- // Multiplication with real
- Matrix& operator*(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] *= nbr;
- }
- return (*this);
- }
-
- // Divide with real
- Matrix& operator/(const TYPE& nbr)
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- {
- this->_lines[i][j] /= nbr;
- }
- return (*this);
- }
-
- //Get dimension of matrix
- const int get_dim() const
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give dimension" << std::endl;
- return (0);
- }
- return (this->_i);
- }
-
- // Operator to change mat(i, j)
- // to can write mat(i, j) = ...
- TYPE& operator()(unsigned int i, unsigned int j)
- {
- return (this->_lines[i][j]);
- }
-
- // Operator to access mat(i, j)
- // to can write int x = mat(i, j)
- TYPE operator()(unsigned int i, unsigned int j) const
- {
- return (this->_lines[i][j]);
- }
-
- // Test matrix nul
- const bool test_nul() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- if (this->_lines[i][j] != 0)
- return (0);
- return (1);
- }
-
- // Test diagonal matrix nul
- const int test_diag() const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0)
- return (i);
- return (-1);
- }
-
- // Test diagonal matrix nul with element
- const int test_diag(const unsigned int& j) const
- {
- for (unsigned int i = 0; i < this->_i; i++)
- if (this->_lines[i][i] != 0 && i == j)
- return (i);
- return (-1);
- }
-
- // Calculate trace
- const TYPE trace() const
- {
- TYPE res = 0;
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot give trace" << std::endl;
- return (0);
- }
- for (unsigned int i = 0; i < this->_i; i++)
- res += this->_lines[i][i];
- return (res);
- }
-
- // Transpose
- Matrix& transpose()
- {
- if (this->_i != this->_j)
- {
- std::cerr << "Matrix isn't nxn, cannot transpose" << std::endl;
- return (*this);
- }
- TYPE tmp = 0;
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < i; j++)
- {
- tmp = this->_lines[i][j];
- this->_lines[i][j] = this->_lines[j][i];
- this->_lines[j][i] = tmp;
- }
- return (*this);
- }
-
- Matrix transpose() const
- {
- Matrix mat(this->_j, this->_i);
- for (unsigned int i = 0; i < this->_i; i++)
- for (unsigned int j = 0; j < this->_j; j++)
- mat._lines[i][j] = this->_lines[j][i];
- return (mat);
- }
-
- // Display matrix
- void print(std::ostream &os) const
- {
- for (unsigned int i = 0; i < this->_i; ++i)
- {
- for (unsigned int j = 0; j < this->_j; ++j)
- os << this->_lines[i][j] << " ";
- os << std::endl;
- }
- }
-
-protected:
- typedef TYPE* _line;
- _line* _lines;
- unsigned int _i; // Number of lines
- unsigned int _j; // Number of column
-};
-
-template <class TYPE>
-inline std::ostream& operator<<(std::ostream& ostr, const Matrix<TYPE>& stream)
-{
- stream.print(ostr);
- return (ostr);
-}
-
-
-#endif // MATRIX_HH
diff --git a/trunk/glagen/dll/classes/node.cc b/trunk/glagen/dll/classes/node.cc
deleted file mode 100644
index a3ae387..0000000
--- a/trunk/glagen/dll/classes/node.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// node.cc for in
-//
-// Made by meng-tih lam
-// Login <lam_m@epita.fr>
-//
-// Started on Fri Aug 16 02:40:40 2002 meng-tih lam
-// Last update Fri Aug 16 02:41:05 2002 meng-tih lam
-//
-
-#include "node.hh"
diff --git a/trunk/glagen/dll/classes/node.hh b/trunk/glagen/dll/classes/node.hh
deleted file mode 100644
index 3d8c838..0000000
--- a/trunk/glagen/dll/classes/node.hh
+++ /dev/null
@@ -1,82 +0,0 @@
-
-#ifndef NODE_HH_
-# define NODE_HH_
-
-using namespace std;
-
-#include <list>
-#include <cassert>
-
-// Rajouter l'include correspondant a la template de TYPENODE
-// + implemente le std::cout abtrait pour les tests
-
-template<class TYPENODE> class Tree; // Declaration prealable
-
-template<class TYPENODE> class Node
-{
- friend class Tree<TYPENODE>;
-
-public:
- Node(const TYPENODE &d) : _link(new std::list<Node>), _data(d) {}
-
- void add_child(const TYPENODE& value) { _link->push_back(Node(value)); }
-
- void add_tree_node(const Node& value) { _link->push_back(value); }
-
- TYPENODE get_data() const { return (_data); }
-
- const unsigned int get_nb_childs() const { return (_link->size()); }
-
- std::list<Node>* get_childs() const { return (_link); }
-
- unsigned int get_number_node() const
- {
- unsigned int number_childs = _link->size();
- std::list<Node>::const_iterator child = _link->begin();
- unsigned int number_node = 1;
- for (unsigned int tmp = 0; tmp != number_childs; ++tmp)
- {
- number_node += child->get_number_node();
- ++child;
- }
- return (number_node);
- }
-
- // Renvoie le noeud fils suivant le numero a partir de 0
- Node get_child(const unsigned int& i) const
- {
- assert(i < _link->size());
- std::list<Node>::const_iterator child = _link->begin();
- for (unsigned int tmp = 0; tmp != i; ++tmp)
- ++child;
- return (*child);
- }
-
- // Numerotation de l'arbre suivant un parcours en largeur de 0 a n
- Node get_node_course_width(const int& ptr) const
- {
- int rptr = ptr;
- std::list<Node> ptr_node = *new std::list<Node>;
- ptr_node.push_back(*this);
- while (ptr_node.size())
- {
- std::list<Node>::iterator childs = ptr_node.begin();
- std::list<Node>::iterator child = childs->get_childs()->begin();
- for (; child != childs->get_childs()->end(); ++child)
- {
- ptr_node.push_back(*child);
- if (--rptr == 0)
- return (*child);
- }
- ptr_node.pop_front();
- }
- return (*this);
- }
-
-private:
-
- std::list<Node> *_link; // Pointeur vers le sous-arbre
- TYPENODE _data;
-};
-
-#endif // NODE_HH_
diff --git a/trunk/glagen/dll/create_dotproperty_init.cc b/trunk/glagen/dll/create_dotproperty_init.cc
deleted file mode 100644
index 56de80d..0000000
--- a/trunk/glagen/dll/create_dotproperty_init.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// create_dotproperty_init.cc for Glagen : speedy made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <list>
-#include "classes/libclass.hh"
-#include "../3d/data_glagen.hh"
-
-/*****************************************************************
-** Surement la plus crade de mes creations. **
-** La faute a ma comprehension qui a l'acuite de la **
-** bave d'escargot sur le sable Saharien. **
-*****************************************************************/
-
-list<property_t> Client_DotPropertyTab;
-int GLG_property_pos = 0;
-
-list<property_t> Create_DotProperty_Init(list<Library> ClientLibraries)
-{
- std::list<Library>::iterator lib_i;
- std::list<property_t> PropertyList;
- std::list<dot_property_t> PropLibList;
- std::list<dot_property_t>::const_iterator libprop_i;
- property_t prop;
-
-
- /*************************************
- ** We open libraries one by one **
- ** according the list order **
- *************************************/
-
- for (lib_i = ClientLibraries.begin();
- lib_i != ClientLibraries.end();
- lib_i++)
- {
- lib_i->Initialize();
-
- /**************************************
- ** Then we read the properties one **
- ** by one according the library.. **
- **************************************/
-
- PropLibList = lib_i->getDotProperties();
- for (libprop_i = PropLibList.begin();
- libprop_i != PropLibList.end();
- libprop_i++)
- {
-
- prop.kind = libprop_i->type;
- prop.size = libprop_i->size;
- prop.data = malloc(libprop_i->size);
-
- PropertyList.push_back(prop);
-
- }
-
- }
-
- return PropertyList;
-
-}
diff --git a/trunk/glagen/dll/create_dotproperty_init.hh b/trunk/glagen/dll/create_dotproperty_init.hh
deleted file mode 100644
index e69de29..0000000
--- a/trunk/glagen/dll/create_dotproperty_init.hh
+++ /dev/null
diff --git a/trunk/glagen/dll/header.cc b/trunk/glagen/dll/header.cc
deleted file mode 100644
index 92e361a..0000000
--- a/trunk/glagen/dll/header.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
diff --git a/trunk/glagen/dll/includes/errors.hh b/trunk/glagen/dll/includes/errors.hh
deleted file mode 100644
index 00267fb..0000000
--- a/trunk/glagen/dll/includes/errors.hh
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-**
-** GLAGEN Project Errors values
-** 2002 aug 25
-**
-** (made by hiegel_h)
-*/
-
-#define ERR_ARGNUM 1
-#define ERR_OPENFILE 2
-
-#define ERR_NOLIBARG 3
-#define ERR_LIBMISSING 4
-#define ERR_OPENLIB 2
-#define ERR_LIBSYMBOL 10
-#define ERR_LIBNAME 11
-
-#define ERR_NOROOTLIB 21
-
diff --git a/trunk/glagen/dll/libraryloader.cc b/trunk/glagen/dll/libraryloader.cc
deleted file mode 100644
index 9e8b67a..0000000
--- a/trunk/glagen/dll/libraryloader.cc
+++ /dev/null
@@ -1,322 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// libraryloader.cc for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#include <iostream>
-#include <string>
-#include <list>
-
-#include "includes/errors.hh"
-#include "classes/libclass.hh"
-#include "libraryloader.hh"
-
-#include "classes/node.hh"
-#include "classes/matrix.hh"
-#include "classes/Data_string.hh"
-
-
-using std::cout;
-using std::cerr;
-using std::endl;
-
-int
-getLibID(const std::list<Library>* libids,
- const string& name)
-{
- // Searchs for an ID of the given library name
-
- if (libids->empty())
- return (-1);
-
- int libid = 0;
- std::list<Library>::const_iterator libids_i = NULL;
-
- for (libids_i = libids->begin();
- (libids_i != libids->end()) && ((libids_i->getName()) != name);
- libids_i++)
- libid++;
-
- if (libid == (signed)libids->size())
- return (-1);
-
- return libid;
-
-}
-
-
-void
-RecursiveAddNode(const Node<int>* Root,
- Matrix<int>* Adj,
- const int size)
-{
- int curr_node = 0;
- const int nb_childs = Root->get_nb_childs();
-
- if (nb_childs)
- {
- for (curr_node = 0; curr_node < nb_childs; curr_node++)
- {
- Node<int> node = Root->get_child(curr_node);
-
- // Which library is a potentially dependancy ?
- int curr_lib = node.get_data();
-
- // Which libraries need it ?
- for (int i_ = 0; i_ < size; i_++)
- if ((*Adj)(i_, curr_lib) == 1)
- {
- node.add_child(i_);
- (*Adj)(i_, curr_lib) = 2;
- }
- RecursiveAddNode(&node, Adj, size);
- }
- }
-
- return;
-
-}
-
-void
-Int2Datanode(Node<int>* Root,
- Node<Data_string>* Final,
- list<Library>* list_libs)
-{
- int curr_node = 0;
- const int nb_childs = Root->get_nb_childs();
- std::list<Library>::const_iterator libid_i;
- int i;
- int I;
-
- if (nb_childs)
- {
- for (curr_node = 0; curr_node < nb_childs; curr_node++)
- {
- Node<int> node = Root->get_child(curr_node);
- I = node.get_data();
-
- libid_i = list_libs->begin();
- for (i = 0; i < I; i++)
- libid_i++;
-
- Final->add_child(Data_string(libid_i->getFilename()));
- Node<Data_string> TotoMesCouilles =
- Final->get_child(Final->get_nb_childs() - 1);
- Int2Datanode(&node, &TotoMesCouilles, list_libs);
- }
- }
-
- return;
-
-}
-
-//
-// #
-// # #### ## ##### ###### #####
-// # # # # # # # # # #
-// # # # # # # # ##### # #
-// # # # ###### # # # ##### ### ###
-// # # # # # # # # # # ### ###
-// ####### #### # # ##### ###### # # ### ###
-//
-
-
-Node<Data_string>
-LibraryLoader(const list<string>& LibFiles)
-{
-
- /**************************************************************/
- /* Opens all selected libraries and sort them by dependancies */
- /**************************************************************/
-
- /*\****************\* Declarations *\***************\*/
-
- /* Pointer needed to manipulate libraries */
- Library* current_loading (NULL);
- string libname;
-
- /* List of loaded libraries needed to construct the deps tree */
- std::list<Library> libids;
- libids.clear();
- int libid;
-
- /***********************************/
- /* Loads libraries and stores them */
- /***********************************/
- for (std::list<string>::const_iterator libfile_i = LibFiles.begin();
- libfile_i != LibFiles.end();
- libfile_i++)
- {
- current_loading = new Library (*libfile_i); // Creates new class
-
- if (! current_loading->LoadLib())
- {
-
- /**********************************************
- ** just for test purposes **
- ** it has nothing to do there **
- ** if it isn't commented.. comment it ! **
- **********************************************/
- //current_loading->Initialize();
-apao
- if (getLibID(&libids, current_loading->getName()) == -1)
- libids.push_back(*current_loading); // Stores the lib
- else
- {
- cerr << "Library "
- << current_loading->getName()
- << " is already loaded !" << endl;
- delete current_loading;
- }
- }
- else
- delete current_loading;
-
- }
-
-
-
- /*\****************\* Declarations *\***************\*/
-
- int size = libids.size();
-
- /* Matrix of dependancies */
- Matrix<int> adjacence (size, size);
- int i_ = 0, j_ = 0;
-
- /* List needed to manipulate dependancies of current lib */
- std::list<string> deps;
- deps.clear();
-
- /* Lists iterators to iterate lists ;o) */
- std::list<Library>::const_iterator libid_i;
- std::list<string>::const_iterator dep_i;
-
- /**************************************/
- /* Second parsing to get dependancies */
- /**************************************/
-
- for (libid_i = libids.begin(); libid_i != libids.end(); libid_i++)
- {
- deps = libid_i->getDependancies();
-
- if (! deps.empty())
- for (dep_i = deps.begin();
- dep_i != deps.end();
- dep_i++)
- {
- libid = getLibID(&libids, *dep_i);
- if (!(libid < 0))
- adjacence(i_, libid) = 1;
- else
- {
- cerr
- << "#ERR " << ERR_LIBMISSING
- << ": Missing library: "
- << *dep_i << "" << endl;
- exit(ERR_LIBMISSING);
- }
- }
-
- i_++;
-
- }
-
- cout << "-- " << endl << adjacence << "-- " << endl;
-
-
- /*\****************\* Declarations *\***************\*/
- /* The root node of sorted libraries tree */
- Node<int> root (-1);
-
- int n_deps;
-
- /***************************************/
- /* Search for potential root libraries */
- /***************************************/
-
- for (i_ = 0;
- i_ < size;
- i_++)
- {
- n_deps = 0;
- for (j_ = 0; j_ < size; j_++)
- if (adjacence(i_, j_))
- n_deps += 1;
-
- cout << i_ << " : " << n_deps;
-
- if (n_deps == 0) /* This is a root library */
- {
- root.add_child(i_);
- cout << " Added in Root tree !";
- }
- cout << "" << endl;
- }
-
- cout << endl << "Root has " << root.get_nb_childs() << " childs.."
- << endl << endl;
-
- if (!root.get_nb_childs()) /* No independant library found.. */
- {
- cerr << "#ERR " << ERR_NOROOTLIB
- << ": No independant library found.." << endl;
- exit(ERR_NOROOTLIB);
- }
-
- /***********************************/
- /* Recursive addition of each node */
- /***********************************/
-
- RecursiveAddNode(&root, &adjacence, size);
-
- cout << "-- " << endl << adjacence << "-- " << endl;
-
- /******************************************************/
- /* Checks if every Library has been added in the tree */
- /******************************************************/
-
- for (i_ = 0;
- i_ < size;
- i_++)
- for (j_ = 0;
- j_ < size;
- j_++)
- if (adjacence(i_, j_) == 1)
- {
- cerr << "#Err " << ERR_NOROOTLIB
- << ": Infinite loop in library dependancies;" << endl;
- exit(ERR_NOROOTLIB);
- }
-
- Node<Data_string> FinalResult (Data_string(""));
- Int2Datanode(&root, &FinalResult, &libids);
-
- // WHEEEE !! IT'S THE END !!! I CAN'T BELIEVE IT !!
- return FinalResult;
-}
-
diff --git a/trunk/glagen/dll/libraryloader.hh b/trunk/glagen/dll/libraryloader.hh
deleted file mode 100644
index f23810b..0000000
--- a/trunk/glagen/dll/libraryloader.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-//=============================================================================
-//
-// Glagen : a planet sized landscape generator
-// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-//
-// Glagen : GPL LAndscape GENerator
-//
-// maintest.hh for Glagen : made by Hugues HIEGEL
-//
-// www.glagen.org
-//
-//=============================================================================
-
-#ifndef LIBRARYLOADER_CC_
-# define LIBRARYLOADER_CC_
-
-#include "classes/libclass.hh"
-#include "classes/node.hh"
-#include "classes/Data_string.hh"
-
-extern int GLG_property_pos;
-
-Node<Data_string> LibraryLoader(const list<string>& LibFiles);
-
-#endif //LIBRARYLOADER_CC_
diff --git a/trunk/glagen/dll/main.cc b/trunk/glagen/dll/main.cc
deleted file mode 100644
index ac744f7..0000000
--- a/trunk/glagen/dll/main.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <list>
-#include <string>
-#include "libraryloader.hh"
-
-
-extern int GLG_property_pos;
-list<string> Libs;
-
-int
-main(int argc,
- char **argv)
-{
-
- for (int i = 1; i < argc; i++)
- Libs.push_back(argv[i]);
-
- GLG_property_pos = 0;
-
- LibraryLoader(Libs);
- return 0;
-}
diff --git a/trunk/glagen/dll/main.hh b/trunk/glagen/dll/main.hh
deleted file mode 100644
index a812196..0000000
--- a/trunk/glagen/dll/main.hh
+++ /dev/null
@@ -1 +0,0 @@
-##Trippant ! on se touche la bite dans ce main.hh !!##
diff --git a/trunk/glagen/dll/samples2/gps/libtoto.gps b/trunk/glagen/dll/samples2/gps/libtoto.gps
deleted file mode 100644
index b70c38b..0000000
--- a/trunk/glagen/dll/samples2/gps/libtoto.gps
+++ /dev/null
@@ -1,4 +0,0 @@
-NAME: libtoto
-VERSION: 0.0
-DEPS: libtata==0.0
-AUTHOR: gus