File: ChangeLog

package info (click to toggle)
terraform 0.9.0-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 5,008 kB
  • ctags: 2,529
  • sloc: ansic: 28,422; sh: 3,336; pascal: 1,896; makefile: 710; yacc: 318
file content (976 lines) | stat: -rw-r--r-- 43,894 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
0.9.0: 25Apr2002
	+ added support for PPM files
	+ fixed broken PGM ASCII reader
	+ new POVRay rendering scheme
	+ lots of work on the new option dialogs
	+ added a new colormap: wasteland
	+ about window shows terraform version
	+ "terraform -g" now produces a terrain with the default size
	+ fixed multiple window creation bug for tiling
	+ added t_terrain_river_all
	+ objects and rivers now mirror with the rest of the terrain 
	+ reworked gui of camera settings
	+ objects and rivers now rotate with the rest of the terrain 
	+ added new (contributed) river code 
	+ added new povray things
	+ render option settings are now encapsulated in their own struct 
	+ any clone operation now copies all settings 
	+ added t_terrain_copy_settings
	+ hooked seed code back into application 
	+ added icon for seed to toolbar
	+ fixed incorrect POV render object placement for variable Y scalefactor
	+ fixed memory leak when loading native terrains
	+ added hyperlinks to homepages to about dialog + gui improvement
	+ added object pruning
	+ object placement now doesn't result in straight edges anymore
	+ *.terraform files now also save the render_scale_[xyz] settings
	+ generate POV-Ray .ini files instead of using command-line arguments
	+ reworked and modularized option dialogs 
	+ added an install_home makefile target
	+ object menus now have proper status (sensitive)
	+ GUI changes for object placement fade out
	+ object placement can now fade out properly on both ends  
	+ moved ~/.terraformrc to ~/.terraform/terraformrc
	+ terraform now loads Arc/Info ascii grid files (e00 files)
	+ added file_list_add_path_with_extension()
	+ added several povray include objects/files and themes

0.8.6: 28Jan2002
	+ updated help files
	+ added more keyboard navigation to menus
	+ more consistent export menus
	+ object placement distribution probability is now linear 
	+ added export to GIMP for terrain views
	+ added terrain scaling options to render options dialog
        + terraform files now also contain selection data 
	+ t_terrain_select_by_height now obeys terrain window selection mode 
	+ added t_terrain_rescale_placed_objects and dialog
	+ added t_terrain_fill_basins filter and dialog
	+ join direction now works in every direction
	+ erosion can now properly save and age flowmaps 
	+ added sorting to file list add 
	+ right click now removes object 
	+ changed pov coordinate system to be 0,0 based rather than 0,0 centered
	+ added parametrized camer height offset for 3D views
	+ fixed Gtk+ warnings caused by erode flowmap dialog
	+ fixed right click menu weirdness in warp dialog
	+ added filter_window_add_crosshairs() function
	+ support for objects in home dir complete
	+ added utility macro to convert from TF coordinate system to POV
	+ fixes to configure.in for OS/X and Solaris
	+ added accelerators to Tile and AutoRotate menus
	+ Tiling dialog can now tile a specified number of terrains 
	+ added t_terrain_tile_new() function
	+ added tiling support to all 3D views
	+ added View->Tile menu option to terrain window
	+ preliminary support to have themes and objects in your home dir
	+ filenames in main_window are no longer displayed with full pathname
	+ added preview_scale checkbox to rasterize dialog
	+ added check box handling to filter_window_new_extended
	+ faulting synthesis is not enabled by default anymore (takss too long)
	+ changed mosaic dialog from gnome dialog to plain GTK
	+ added fog parameters to Render Options dialog and povray files
	+ modularized and rearranged Render Options dialog
	+ fixed incorrect fog placement in povray earth_sky.inc
	+ fixed main window menus which stayed active when they shouldn't 
	+ fixed incorrect povray output file extension
	+ added mosaic filter + dialog
	+ added preliminary native 3d rendering framework
	+ added spherical map filter

0.8.5: 23Dec2001
	+ renamed Options menu to "Render Options" 
	+ render option dialog doesn't auto-render anymore for wireframe page
	+ ui improvements of "execution error window"
	+ now able to chose the name of the error log
	+ added ability to save povray error log 
	+ minor ui-improvement for close_terrain_dialog
	+ updated dutch and french translations
	+ added terrain twist function + dialog
	+ added frequency to radial scale 
	+ dimension calculator is now more general and twice as fast
	+ selections which are too small are now handled gracefully
	+ reworked seeding interface to return status values
	+ fixed bad seed label in faulting generation dialog
	+ added square option and use_constant_size flag to faulting dialog
	+ added square faulting generation 
	+ modularized erode code, added flowmap erode dialog
        + fixed bad default tightness factor in fill dialog
	+ replaced/reworked exit dialog
	+ added rasterize filter + dialog
	+ added average variance and skewness to terrain info dialog
	+ added average, variance & skewness calculators
	+ fixed incorrect camera positioning on non-uniform sized terrains
	+ fixed broken crater seed code + crater dialog defaults
	+ clicking on terrain in move mode now clears existing selection
	+ fixed greater-than-terrain selection size 
	+ extended transformation power range to < 1
	+ filenameops filetype comparison is now case insensitive
	+ added *.bt file support
	+ added *.bna file support
	+ added *.dfx file support
	+ added *.xyz file support
	+ added *.dted file read support
	+ fixed terrain draw area resize problem for non-square terrain

0.8.4: 28Oct2001
	+ filterwindow.c now accomodates spinbuttons from digital filter dialog
	+ added digital filter + dialog
	+ updated 'close terrain' dialog (from Koos Jan Niesink)
	+ added t_terrain_join function and join dialog
	+ added fractal dimension calculator
	+ fixed histogram scaling
	+ added *.grd file format reader & writer
        + fixed modified flag setting for 4 generation modes
	+ Added terrain info dialog
	+ Added terrain histogram code
	+ Fixed incorrect data byte handling in terragen writer
	+ Re-positioned result preview in Merge dialog
	+ Changed slider scale on Erode dialog
	+ Clone now also clones & rescales objects
	+ Portability changes for missing xxscanf functions (libtrio)
	+ Incorporated terragen file (*.ter) read/write (from bmp2ter code)
	+ Added crop/extract functionality to GUI
	+ Added zooming functionality to GUI
	+ Added terrain seeding code 
	+ Made gen_subdiv interface more flexible
	+ Made gen_random interface more flexible
	+ Added crop_new button/functionality
	+ Added t_terrain_crop_new
	+ Added terrain seeding code + selection
	+ Added faulting generation code + dialog
	+ Added dialog for type flag + made type flage persistent
	+ Added --undo flag
	+ Added --type flag
	+ Added --size flag
	+ Added --gamma flag
	+ Added --factor flag
	+ Added --chooser flag
	+ Added auto-render button to RenderOptions dialog
	+ Reordered geneneration menu
	+ Radial scale wasn't showing preview

0.8.3: 01Sep2001
	+ Display 3D modes at full window size
	+ Get a new seed by calling new_seed () instead of time (NULL)
	+ Added global default terrain size
	+ Removed smooth terrain option
	+ Fixed long-style commandline arguments
	+ Added new chooser generator
	+ Fixed obey child aspect frame bug
	+ Generated random seeds are now displayed in the generation dialogs
	+ MFD Flowmap is now much (+10x) faster
	+ Added --generate command line option
	+ Added proper argument handling
	+ Terrain window is now resized to fix terrain size
	+ Internal changes to allow variably sized random terrain generation
	+ Added dutch translation courtesy of Koos Jan Niesink
	+ Add finalize handler for TTerrain
	+ Added missing function prototypes
	+ Fixed src/Makefile.am for people using non-gcc compilers
	+ Fixed contour recalculating in TTerrainView
	+ Support writing greyscale bitmaps
	+ Reduced onscreen size of wireframe model
	+ GNOME Print cleanups
	+ Added Tree macro
	+ Add support for POV-Ray macros
	+ Fixed bug in xml_unpack_boolean that prevented it from working
	+ Fixed locale problem when reading/writing floats in/to text files
	+ Added export view functionality
	+ Antialias the 3D wireframe mode
	+ Fixed cosmetic bug in craters window when Use Preview is turned off
	+ Created TTerrainView object
	+ Replaced TRgb with TPixbuf and TCanvas
	+ Open files given as command line arguments
	+ Fixed bug in TGA reader
	+ Fixed Save As dialog box file type extensions

0.8.2: 25Jul2001
	+ Install desktop icon into Ximian menu tree
	+ Added file type option menus to open and save as windows
	+ Use gdk_input instead of gtk_timeout in smartexec.c
	+ Changed generator buttons from OK/Apply/Cancel to Generate/Cancel
	+ Added French translation of docs and app by Raymond Ostertag
	+ Converted integers to enums for views and colormaps
	+ Fixed several compile warnings
	+ Added VRML file output 
	+ Added Apply button to terrain generation windows
	+ Fixed #endif extra token in some header files
        + Update contour lines only when the terrain has been modified
        + Fixed HTML bugs in help/C/faq.html (Raymond Ostertag)
        + Updated hacking docs
        + Filled in some sections in help/C/index.html
        + Deleted old earth basic theme
        + Added import support for files readable by GdkPixbuf
        + Fixed selection bug when terrain isn't square

0.8.1: 29May2001
	+ added save/load error dialog boxes
	+ merged sky rendering improvements into the native render code
	+ added some keyboard accelerators
	+ fixed .glade file because last version wasn't committed to CVS
	+ added oct, mat, pgm, pg8 formats to reader and writer

0.8.0: 12May2001
	+ new architecture based on GNOME and Glade
	+ faster 3D rendering
	+ new tree undo feature
	+ fixed a lot of bugs
	+ moved many settings to terrain specific options
	+ added user configuration file .terraformrc
	+ added preliminary native rendering code
	+ added native *.terraform format
	+ documentation readable from help menu
	+ added quick start tutorial
	+ revamped documentation
	+ improved contour line generation
	+ set window icon
	+ added toolbar
	+ added move objects feature
	+ added feather selection operation
	+ improved transform operation
	+ renamed linear scale to radial scale
	+ render option gets terrain theme list from directory listing
	+ right-clicking on previews allows changing of view
	+ lacks a few of the import/export file formats of the 0.7.x series
	+ print settings missing

0.7.5: 01Jan2001
	+ flowmap fixes
	+ fixed broken perlin generation
	+ fixed menu sensitivity for Selection Extract and Selection Merge
	+ added smoothing to HF::insertExtract
	+ fixed broken Matrix2D::insertDataExtract
	+ fixed broken HF::getExtract
	+ fixed broken HFO::hfRescale method
	+ fixed broken HF::*DataExtract methods
	+ fixed various little things all over the place 
	+ added selection extract menu
	+ added selection merge menu
	+ added HF::getNewSelection
	+ added HFO::getSelectionMergeHFs
	+ added merge selection dialog
	+ more selection code; dragging and erasing now works
	+ added forceSelection to config file code 
	+ added adaptor method for MathTrig::pointInPolygon

0.7.4: 31Sep2000
	+ started writing Mod Key code
	+ added TFDialogMove dialog
	+ added TFDialogSelectElevation dialog
	+ added HeightField::releaseSelection ()
	+ added HeightField::setUpdateTime calls to HeightFieldGen*.cc
	+ added HeightField::setUpdateTime ()
	+ fixed sneaky bug in HFGS::setPreferredSize()

0.7.3: 14Aug2000
	+ fixed core dump when closing a Height Field (duplicate delete of selection)
	+ contributed (David Barthold): execprobe.cc to probe for provray executable
	+ contributed (David Barthold): fixed broken POVRay scene file + rendering improvements
	+ selection fixes in HeightFieldOps.cc
	+ control-Z now triggers Undo
	+ various little fixes/cleanups HeightFieldDraw.cc
	+ removed hf_sort from HeightFieldCore.cc and TFOptionTable.h
	+ made qsort function global/static in HeightFieldCore

0.7.2: 22Jul2000
	+ eliminated use of undo queue for preview height fields
	+ selection awareness in HeightFieldOps.cc
	+ selection shading in HeightFieldDraw.cc
	+ first rudimentary but working selection code

0.7.1: 01Jul2000
	+ added recursive plasma generation 
	+ fixed bad subdivision init in HFGS::generateRecursiveDiamond()
	+ added scale factor to Matrix2D::ClipPos()
	+ fixes to FileIO.cc::getExtension() + FileIO.cc::setExtension()
	+ added more selection code 
	+ added 2D area draw function to HeightFieldDraw
	+ replaced TGA file reading code with gimp code 
	+ fixed incorrect debug info in HFWriter.cc
	+ added sanitizeRectangle() to MathTrig
	+ added pointInPolygon() to MathTrig
	+ added Selection class

0.7.0: 18Jun2000
	+ fixed incorrect Z-axis when selecting render position with mouse
	+ added caching to 2D data access in HeightFieldCore.cc
	+ fixed a few more memory overwrites in various places
	+ tiling code now works reasonably well
	+ changed all uses of sprintf() to snprintf() 
	+ contributed: updated POVRay rendering files
	+ fixed memory overwrite in TFDialogRender.cc
	+ fixed a few (small) memory leaks
	+ rewrote HeightFieldCore to yield template based Matrix2D

0.6.9: 03Jun2000
	+ fixed have_opengl syntax error in configure.in
	+ fixed compiler warnings which appeared at high optimization levels
	+ fixed broken menu default (caused flashing) for view menu
	+ POV renderings are now viewed from the same angle as in terraform
	+ opening place object dialog now sets sets the 'Place Objects' checkbox
	+ placeing POV objects now works correctly
	+ fixed core dump when opening place object dialog

0.6.8: 22May2000
	+ rewrote POVRay rendering to use realistic scale (rather than 0..1)

0.6.7: 07May2000
	+ contributed: improved POV Rendering
	+ moved extra files to 'data' directory
	+ changed HeightField::merge() parameter order
	+ fixed incorrect parameters to HeightField::merge
	+ fixed crash upon opening merge dialog
	+ TFWindow::s_winList (FlexArray) now contains master window list
	+ HF list in main window is now updated after loading a HF from menu
	+ added 'Hacking Terraform' FAQ
	+ code changes to enable compilation with Gtkmm-1.2.0

0.6.6: 09Apr2000
	+ added libVoxel and libSDL checks to configure.in
	+ added TFWindowTileDraw
	+ added HFO::tile () && TFDialogTile
	+ added HF::getExtract() and HF::merge()
	+ added symetrical flag to placeObjects, PlaceObjectOptions and Dialog
	+ pov_object is now predefined to a reflective sphere 
	+ HF::getRenderOptions() now always returns a valid (new) RenderOptions 
	+ RenderOptions + PlaceObjectOptions now have timestamps
	+ PlaceObjectOptions is now held by RenderOptions 
	+ cosmetic changes to PPOV dialog
	+ improved RenderOptions dialog
	+ HFO::placeObject now doesn't write but fills PlaceObjectOptions class 
	+ renamed HFO::placePOVObject to HFO::placeObject
	+ removed extranous types from MathTrig.h
	+ code cleanup in header files, changed #defines to enums
	+ fixed bad/double window deletion in TFGui::cleanup ()
	+ added readFile method to FileIO

0.6.5: 13Mar2000
	+ contributed: better openGL rendering
	+ cleaned up TFWindowOpenGL
	+ added new_handler to detect failed memory allocation
	+ started changing HFO::placePOVObject to HFO::placeObject 
	+ changed TFDialogPPov to use PlaceObjectOptions
	+ HeightField now also contains a PlaceObjectOptions item
	+ added 3D color utility function to HeightFieldDraw
	+ cleaned up TFWindowOpenGL
	+ added PlaceObjectOptions class
	+ removed FlexArray subtypes, changed to specialized template
	+ changed FlexArray to be template-based
	+ fixed long standing HF window destroy bug which would crash the app
	+ colormaps are now global and allocated only once
	+ fixed bad inheritance hierarchy for TFWindow(Handler)
	+ source code is now (for the most part) const correct

0.6.4: 05Mar2000
	+ added doxygen tags to comments 
	+ menu sensitivity for AutoRotate now works correctly
	+ linearScale now correcly handles smoothing factor
	+ upgrade to Gtkmm 1.1.9, configure.in now requires 1.1.9
	+ --generate and --generate_size are now processed after other options
	+ added --undo_levels flag
	+ added multi-level undo

0.6.3: 27Feb2000
	+ renamed Leveler menu to Connect
	+ contributed: added 4-layered Perlin noise generator
	+ contributed: added recursive diamond subdivision code 
	+ added delete_event handler to TFWindowMain
	+ fixed broken linear scale function
	+ fixed incorrect HF read status flag after reading from file

0.6.2: 13Feb2000
	+ fixed remove() bug in flexarray.h
	+ started fixing closing of app when handling a HFWindow delete event
	+ fixed delete_event_impl for dialogs so the dialog is not de-allocated
	+ fixed incorrect use of Gtk::Style
	+ this also fixes the clobbered theme background in the main window
	+ fixed core dump with multiple POVRay traces
	+ added Leveler Dialog
	+ added Leveler Plug-in code
	+ view radio button menu now has correct default (3D Wireframe)

0.6.1: 07Feb2000
	+ menu sensitivity now works again
	+ fixed core dump in TFDialogMerge (bad pointer init)
	+ removed POVRay options from global options dialog
	+ FileIO is now more flexible/correct in it's name handling
	+ added export to GIMP
	+ POVRay render files now have a timestamp
	+ main menu is now complete
	+ fixed unfinished menu code core dump
	+ fixed the excessive flicker/redraw for the print settings dialog

0.6.0: 31Jan2000
	+ upgraded GUI code to Gtk--1.1.8
	+ the GUI code upgrade is not 100% done yet and it's quite possible 
	  that it's a bit buggy. If you prefer stability over bleeding edge, 
	  you're better off staying with 0.5.2. 

0.5.2: 17Jan2000
	+ added --large_limits for larger sliders
	+ changed RenderOptions OK button to be consistent with other dialogs
	+ added smooth checkbutton to TFDialogRenderOptions 
	+ added smooth boolean to RenderOptions
	+ fixed bad refresh for preview in RenderOptions notebook/dialog
	+ change type #defines to typedef in GlobalDefs.h
	+ fixed bad size init when reading a HF from through Imlib
	+ fixed floating point exception when moving fast wire in non-wire mode
	+ fixed out-of-bounds rectangle calulcations in GuiBufferedDrawingArea

0.5.1: 10Jan2000
	+ rewrote HeightFieldExport to go with new style POV template files
	+ added TFDialogRender class: still not quite finished
	+ added RenderOptions class 
	+ contributed: much better looking POV rendering
	+ fixed the hfDouble code I broke during the code cleanup
	+ fixed the superflous name generation for Height Fields
	+ fixed out of range colors in HFD when switching to a smaller colormap
	+ fixed the crater dialog elements which ran off the screen 
	+ fixed core dump when deleting TFWH (bad delete of unused pointer)

0.5.0: 20Dec1999
	+ code cleanup + added colorspace selector to TFDialogPrintOptions 
	+ switched to using config.h file for passing compile options 
	+ inserted i18n gettext wrapper around translatable strings
	+ added gettext code to configure.in and created po and intl dirs
	+ added dummy menu array where needed to fool xgettext extraction 
	+ fixed core dumps resulting from bad HF deletion in HF::init()
	+ HFC::setData() is now protected and wrapped by HF::init()
	+ further untangled initialization routines for HF and HFC
	+ rewrote the HFC::[set|get]El* methods to fall back on El()

0.4.8: 07Dec1999
	+ fixed the blanked out paper drawing area for the print settings dialog
	+ code cleanup: much of the core structures has been altered 
	  and rearranged. The interfaces to the core HF classes has been 
	  expanded and cleaned up, unnecessary dependencies have been 
	  decoupled and the design now forces you to write clean(er)/safe(er) 
	  code (and forced me to clean up some of the worst spaghetti code). 
	  Terraform source code is now simpler and more consistent. 

0.4.7: 30Nov1999
	+ removed some unused variables from TFDialogOptions.h
	+ contributed: improved postscript output for contour lines
	+ contributed: added export to ACAD file format
	+ stole a better print dialog from dia 
	+ fixed Failed Sanity Check when previewing a HF of size 100 or smaller

0.4.6: 22Nov1999
	+ changed interface for HFE::exportContourLines (added HFD arg)
	+ contributed: contour lines export to Postscript 
	+ contributed: improved contour line algorithm 
	+ added global print settings class and print dialog
	+ GuiDialogYN can now takes argument to give it OK/Cancel buttons
	+ TFOpenGLArea::buildMesh now observes TFOptions::s_yscale
	+ added global print settings and Dialog
	+ added TFOpenGLArea and TFOpenGLWindow classes/files
	+ Merge result now has proper filename
	+ added (Mesa)GL detection code to configure.in and src/Makefile.am
	+ fixed syntax error on RedHat 6.0 in configure.in
	+ fixed 2nd redraw event when adding a new HeightField

0.4.5: 31Oct1999
	+ added delete_event handler to TFDialogMerge (fixes core dump)
	+ fixed refresh problems for TFDialogMerge when showing hidden dialog
	+ TFDialogMerge is now seeded with the menu's HF on HF windows
	+ changed --disable-debug to --enable-debug; better default (w/o debug)
	+ Merge dialog is now assigned to <Ctrl>-M
	+ preview group frames now have as title the name of the source HF
	+ fixed broken merge modes in HFO
	+ plugged a bunch of memory leaks in HF and preview code in Merge dialog
	+ fixed core dump in Merge dialog for buttonpress without row select
	+ configure now uses the RPM_OPT_FLAGS setting

0.4.4: 28OCT1999
	+ fixed bad --disable-imlib processing in configure.in
	+ TFGui::buildAccel now required allocated array to prevent memory leak
	+ prevented unnecssary name generation for preview height fields
	+ fixed 2 typos for accelerator bindings in View menu
	+ HeightField::rescale now 'fixes' a constant height field
	+ Merge menu is now only accessible when 2 or more HFs are open
	+ added TFDialogMerge 
	+ added TFDialogTerrace 
	+ added HFO::terrace ()
	+ HeightField::backup/restore now save and restore the sealevel
	+ Transform Dialog preview now correctly observes the waterlevel button
	+ Transform Dialog now per default doesn't change the waterlevel
	+ put MainWindow CList in a Scrolled Window
	+ fixed broken accelerators for Colormap menu
	+ created RPMs and added them to download site
	+ configure.in now checks for gdk_imlib before checking imlib version

0.4.3: 18OCT1999
	+ added --dont_save switch
	+ added autosave settings code
	+ reworked HFG memory management, plugged a few memory leaks
	+ HeightFieldGenS* now deletes MathGauss when generation is done
	+ TFDialogGen*: HFG is now allocated and deleted in apply callback 
	+ added Clone menuitem to CList popup menu
	+ removed old/obolete code from TFDialogGenS*.cc
	+ TFCListWindowMain now only has appropriate entries sensitive
	+ TFGui::s_winList and TFCListWindowMain are now syncronized
	+ TFGui::cleanup now removes CList entries when a HF is closed
	+ removed unnecessary -limlib from link line 
	+ completed TFCListMainWin, added popup menu
	- added Calculator dialog
	+ added HFO::merge
	+ changed Exit Menu to Quit
	+ fixed broken POV export (bad init of static in terraform.cc)

0.4.2: 03OCT1999
	+ contour line maps now expire when terrain object changes
	+ 3DWire RadioMenuItem is now properly selected as default 
	+ added TFCListMainWin 
	+ added --pov_exec, HFE now observes this setting
	+ created HeightFieldCore, split up HeightField 

0.4.1: 08SEP1999
	+ more consistent titles in generation dialogs
	+ added TFGui::duplicateName() for more intelligent use of agename()
	+ added HF::getNewName() to standardize name creation 
	+ fixed core dump in HeightFieldIO (when reading file without extension)
	+ added support for BMP file format (read-only)
	+ removed obsolete else branches from dialog calls in TFWindow*.cc 
	+ Clone now properly copies the HF data it assigns
	+ added HF::getCopyOfData()
	+ added global HF counter for better name aging 
	+ added window CList to main window 
	+ declared Gtk 1.2.4 unsupported (contains bugs which break terraform)
	+ started fixing HeightFieldOps::PlacePOV() - basic stuff now works
	+ accelerators are now determined by underscores, removed accel defs 
	+ added TFWindow::buildAccel(), changed menu build code accordingly
	+ dialog titles now contain the name of the HF they're based on 
	+ re-enabled TFDialogOptions use from main menu
	+ TFDialogGen* now correctly uses TFGui functions to register the new HF
	+ TFDialogOptions now updates all HeightFieldWindows
	+ added function agename()

0.4.0: 01SEP1999
	+ dead windows are now deleted via a timeout from the delete queue
	+ added TFGui::s_deleteList, TFGui::scheduleDelete() and cleanup()
	+ disabled self-delete in TFWindowHandler::closeCallback()
	+ fixed core dump when closing HF
	+ wrote better window creation logic for TFDialogGen* dialogs
	+ PovRay output is now correctly shown/hidden
	+ TFDialogFlowmap now creates a new window for the flowmap
	+ added Clone function
	+ added --fixed_menus flag
	+ modified TFWindow to either generate a menubar or popup menus
	+ unified dialogs shared between main and HF windows in TFWindowBase
	+ terraform can now handle multiple edit windows simultaneously!
	+ extensive changes to GUI code and it's logical design
	  + added TFWindowMain.cc
	  + created TFWindowHandler.cc from TFGui
	  + rewrote TFGui so that all it does is init the proper gui sections 
	+ fixed incorrect clearList() in tf_flexarrCharPtr
	+ added --benchmark

0.3.8: 17AUG1999
	+ disabled some ./configure checks which break with GCC 2.95
	+ cleaned up (most) typecasts to conform to ANSI C++ cast operators
	+ added first, last, removeLast to FlexArray
	+ made FlexArray and GLib_Glist abstract, mem cleanup is now type safe 
	+ better abstraction & deletion memory management for glib wrappers
	+ if TRACE_DEBUG is set, pov rendering is echoed on screen
	+ yet lots more portability changes; now compiles with gcc 2.95
	+ fixed incorrect transformation for TL-BR (\) mirror
	+ wasted time playing CivCTP

0.3.7: 10AUG1999
	+ fixed core dump when deleteing old contour line map in HFD
	+ better memory management for delete of glib--glist and flexarray
	+ some portability changes (gcc 2.95) in struct definitions in MathTrig.h
	+ lots of portability changes (gcc 2.95) in connect_to_signal GUI code 
	+ added ./configure --disable-debug flag
	+ made stack trace debug code conditional
	+ added --pov30 flag for POVRay 3.0 compatability mode
	+ lots of cosmetic readability changes in *.h files
	+ POV rendering now observes environment variable TMPDIR for temp files
	+ updated POV calls to use correct command line options for POVRay 3.1
	+ fixed incorrect conditional for sgmltools in configure.in
	+ fixed core dump when initializing TFDialogGenSubdiv 
	+ verified that everything works with Gtk-- 1.0.2

0.3.6: 03AUG1999
	+ added -generate_size flag
	+ fixed constant generate size in HFGenerateRandom::generate()
	+ lots of code changes in large dialogs to avoid huge-objects warning
	+ created new web site layout
	+ new targets in doc/Makefile.am to process SGML docs
	+ converted documentation to SGML format
	+ spent some time figuring out how to internationalize terraform

0.3.5: 19JUL1999
	+ fixed defunct child processes (now calling waitpid in a timer) 
	+ POV render now correctly aborts when there's a problem opening files
	+ POV render can now observe waterlevel 
	+ HFD now deletes contour list when it is assigned a new one 
	+ RC file options are now reported in alphabetical order
	+ better defaults for FlexArray
	+ cleaned up option code, TFOptions now inherits TFOptionsTable
	+ made HFEExport::rederPov fork to execute Pov render
	+ added keepFiles parameter to renderPov, now works correctly
	+ added HFExport::renderPOV ()
	+ added POV params to RC file code and TFOptions code 
	+ added substitution of filename and other params before Pov redering 
	+ added strrep.cc (C type string replace)
	+ added model PovRay trace file (tf_land.pov)
	+ added Export->PovRay menu
	+ code cleanup in HF generate dialogs
	+ minor consistency changes in preview dialogs
	+ added user specifyable random number seed options to TFDialogCraters
	+ fixed bad assignment of d_scale in TFDialogOptions
	+ fixed extra redraw when changing display scale for an existing HF
	+ better HScale slider in TFDialogOptions.cc
	+ added proper (integer) display scaling code for contour lines
	+ added proper (integer) display scaling code for 2D draw mode
	+ optimized contour line drawing (added RBG image cache to HFD)

0.3.4: 05JUL1999
	+ made crater code more repeadable by separating random number streams
	+ fixed bad conversion of C++ string to C char* in input fields
	+ fixed bad division when calculating preview crosshair offset
	+ code cleanup in TFWindow.h (created MenuDefs.h)
	+ added TFDialogCraters
	+ stole crater code from hf-lab 
	+ better #ifdef code separation for with(out) Imlib in GuiDialogAbout
	+ file selection dialog now has title depending on mode (load/save)
	+ fixed potential core dump in HFD (bad init of d_contourList)
	+ added underscores (shortcut markers) and branch accelerators to menu
	+ code rearrangement in HFO and HFE
	+ removed unused class variables + methods from HFE
	+ HFD now correctly redraws when assigned a contourLineList in 2D mode
	- added WhirlPinch code
	+ fixed core dump in GuiDialogAbout() when compiling without imlib

0.3.3: 21JUN1999	
	+ better resource names for RC file 
	+ added promptOverwrite() to FileIO
	+ added --installrc flag
	+ added code to write user RC file 
	+ fixed lots of little incosistencies in trace level code 
	+ added (ugly) code to write settings to resource file 
	+ added rudimentary resource file code 
	+ added TFOptionTable class (glorified hash table)
	+ changes to help code, added --helprc
	+ more consistent handling of TFOptions class in TFDialogOptions
	+ added timestamping to HFE and selective drawing to HFD
	+ quite a few improvements/optimizations for HFE contour line code
	+ addex FlexArray class
	+ stole better error handling code from glib 
	+ portability enhancements in various header files 
	+ added optional drawing of contour lines for 2D Plane view 
	+ minor changes to menu structure
	- added TFDialogWhirlPinch
	+ added contour line (Isogram) code + TFDialogContourLines
	+ added 2D and 3D coordinate structs to MathTrig.h
	+ added Glib GList wrapper 
	+ added SIGSEGV signal handler 
	+ fixed Gtk---CRITICAL error in pixmap alloc (GuiDialogAboutDissolve.cc)
	+ fixed bad sanity check in TFDialogGaussianHill

0.3.2: 08JUN1999
	+ better HFO::linearScale()
	+ changed inproper use of (now) private Gtk-- method in TFWindow.cc
	+ many improvements to HFO::gaussianHill()
	+ HFM is now only constructed for main windows, not previews
	+ fixed preview crosshair refresh problem (when turning on preview)
	+ Makefile changes to enable proper lib dir assignment on Debian systems
	+ removed bad deletes (LinScale, PPov, RoughSmooth & Transform dialogs)
	+ added TFDialogGaussHill
	+ added HFO::gaussianHill()
	+ removed mysterious old code leftovers in HFO.h
	+ fixed bad fold() call in TFDialogFold::buttonCallbackApply ()
	+ code cleanup in HFO
	+ better Fold, can now actually be useful
	+ changed Erode, Flowmap, and Rescale to use TFBaseDialog
	+ added TFBaseDialog class

0.3.1: 23MAY1999
	+ added syncing of HF (when many dialogs are open and base HF changes)
	+ added timestamp to HF 
	+ reordered HF menu according to dialog type
	+ changed HFO::rotate90 data assignment from HF::setData to memcpy()
	+ TFGui now properly destroys all created widgets/dialogs
	+ fixed incorrect GUI check for PNG and TIFF file loads in readhf()
	+ fixed refresh problem in TFDialogTransform
	+ HF::setSealevel now forces valid range, used in HFO
	+ small interface changes in GuiColormap
	+ small trace output fixes in HFGenSubdiv, HFGenSSynth and HFD
	+ turning preview off now reverts preview image to original Height Field
	+ removed extra allocation of resized HF in HFO::hfResize()
	+ fixed incorrect d_sealevel init in HF::setData()
	+ fixed incorrect color band offset in trace output
	+ fixed/optimized HFO::rotate90:rotate270
	+ fixed core dump and optimized BL-TR mirror in HFO::mirror
	+ more leniant HeightField::destroyBackup ()
	+ fixed another bad init/potential core dump (backup in HeightField.cc)
	+ fixed bad init which dumped core when opening Fold dialog (TFGui.cc)
	+ fixed bad init which dumped core with gtk-themes engines (TFWindow.cc)
	+ regrouped connection code in dialogs inheriting TFPreviewDialog 
	+ better/saner Roughen&Smooth dialog
	+ added mouse button config to TFDialogLinearScale
	+ added crosshair utility function to TFPreviewDialog
	+ updated Fold, Mirror and Rotate to inherit TFPreviewDialog
	+ updated LinScale, RSmooth and Transform to inherit TFPreview Dialog
	+ changed 2D draw to use GdkRGB (which is much faster)
	+ added GdkRBG interface to GuiBufferedDrawingArea
	+ added gtkrc parsing, this adds support for Gtk themes

0.3.0: 09MAY1999
	+ smarter Pixmap recreation code in GuiBufferedDrawingArea.cc
	+ better HFD::setColormap interface
	+ fixed premature delete in HF::refresh ()
	+ changed TFDialogFill to inherit TFPreviewDialog
	+ added TFPreviewDialog
	+ fixed bad sanity checks in HFD::resetView()
	+ fixed incorrect array subscripts in HFO::hfResize()
	+ fixed infinite loop in HFO::hfResize()
	+ finally got GuiDialogPreview to work properly
	+ changed connections to virtual function impl in GuiBufferedDrawingArea
	+ centralized terraform options in new module 
	+ added separator to New submenu
	+ fixed core dump when generating random HF from GUI
	+ changed dialog behaviour so OK closes without action after Apply

0.2.11: 23APR1999
	+ added New->Random menu
	+ changed Exit shortcut to <cntrl>X
	+ modularized random generation code 
	+ converted preview dialog to use GuiBufferedDrawingArea
	+ added getColormap() to HFD
	+ more flexible HFD code (made terraform window optional)
	+ added --generate flag
	+ easier interface for HeightFieldGenSubdiv through 1 generate method
	+ fixed core dump in TFDialogPPov.cc (bad init triggered bogus delete)
	+ oops, didn't properly initialize a vbox in TFDialogOptions
	+ fixed sneaky window build bug (potential core dump on some platforms)
	+ changed order & default choice in GenSubdiv dialog for better default
	+ added configure support for imlib 1.9.x
	+ better preview dialog
	+ added fast backup/refresh code for HF
	+ made a better FAQ
	+ fixed excessive FastWireframe flicker (removed call to 	
	  GtkMain->events_pending when after syncing) 

0.2.10: 07APR1999
	+ Imlib forbids PNG and TIFF read before GUI is running
	+ added read support for PNG and TIFF files (using imlib) 
	+ files using imlib are now only compiled/linked when imlib is present
	+ made GuiDialogAbout setup code more generic
	+ added dissolving about dialog 
	+ modified GuiDialogAbout.* code to allow a build with and without imlib
	+ added drawPixmap to GuiBufferedDrawingArea
	+ started adding #ifdef code to make sure we can live without imlib
	+ added About dialog (uses imlib JPG read)
	+ created terraform specific defaults file (terraform.h)
	+ made imlib use default in configure.in 
	+ unused HFIO after writing erosion result is now properly deleted 
	+ disabled valid file type check for MAT read (still needs a real fix)
	+ fixed core dump in memory management of HFIO (when deleting char *)
	+ fixed core dumps in OCT and MAT file read
	+ fixed core dumps in PGM, PG8, MAT and OCT file write 

0.2.9: 30MAR1999
	+ partially fixed resize and refresh problems 
	+ added support of DEM and GTOPO30 file format (read only, experimental)
	+ roughness factor is now properly applied to iterative subdivisions 
	+ fixed core dump (+optimized code) for filling subdivision result
	+ generated HF now marked "not saved" -> triggers question upon Exit
	+ fixed occasional core dump in GuiDialogYN 
	+ HFD now calls TFWindow.setSize to make sure window is correctly sized
	+ TFWindow.setSize now resizes the window when it's really needed
	+ fixed core dump in extraction of requested subdivision result 
	  when requested size was odd 
	+ better Reload menu sensitivity (added d_loadedFromFile flag to HF)
	+ added menu accelerators
	+ fixed core dump in flowmap (removed too much code duing last cleanup)

0.2.8: 16MAR1999
	+ changed configure scripts for Gtk-- 1.0.x
	+ user can't resize anymore 
	+ general subdivision dialog (uses combo instead of OptionMenu)
	+ better recursive generation 
	+ 3 new subdivision routines (Diamond, Midpoint, Offset)
	+ middle mousebutton now resets view 
	+ modularized HFD init code
	+ better premature EOF recovery on other file reads 
	+ fixed core dump on recover from premature EOF on TGA file read

0.2.7: 02MAR1999
	+ changed configure scripts for Glib/Gtk+ 1.2.x and Gtk-- 0.99.x
	+ fixed core dump in HeightField.cc (d_size was not updated properly)
	+ added support for non 2^n sized HFs to subdivision code
	+ MathGauss now inherits from MathRandom
	+ better random number generator
	+ changed File/New into a Branch
	+ added dialog for subdivision
	+ added subdivision HF generation code (needs some more work)
	+ reorganized generate code
	+ added GuiDialogPreview class 
	+ better default size for TFDialogMirror
	+ better cache refresh for MFD flowmap
	+ deleted extra/leftover write at end of flowmap
	+ added optional name to HeightField constructor
	
0.2.6: 22FEB1999
	+ fixed TFDialogErode.cc to work with Gtk-- 0.11.2 
	  - released right this morning, talk about bad timing 

0.2.5: 21FEB1999
	+ fix in TFGui.cc to prevent failed sanity check after New->Cancel->New
	+ better Generate dialog: replaced magnitude with generate seed option
	+ upslopeMFD() flowmap now properly sizes cardinal vs diagonal inflow
	+ changed most C-type casts to static_cast<> or dynamic_cast<>
	+ added dynamic_cast<> check in configure.in
	+ configure now checks for Imlib, supports --disable-imlib 
	+ better closing code for TFDialog*, now closes before action starts
	+ added 'Trim Local Peaks' option to TFDialgErode 
	+ fixed erode so that local peaks won't (relativeley) rise like spikes
	+ now using Timer in flowmap()
	+ various consistency changes in TFDialog*.cc
	+ changed Box offsets to variables in TFDialog*.cc 
	+ cosmetic static variable rename in GlobalTrace
	+ added 'Keep Zero Elevation' option to TFDialogFill 
	+ fill can now preserve minimal (0) elevation points (prevents rescale)
	+ added --enable-hugeobjects to configure; some egcs versions need this
	+ cleanup of configure.in 
	+ removed GuiDialog3Frames.* from distribution 
	+ better GlobalTrace (added trace()), changed GlobalTrace references
	+ better Glib_Hash: overloaded '==' operator
	+ better Timer: better consistency checks, added getElapsedSeconds
	+ created setData() in HeightField to enable passback of flowmap()
	+ fixed dot trace HFO::erode() + code cleanup
	+ better NO_FLOW usage in HFO::flowmap(), fixed nasty 0 upslope bug
	+ oops, wrong boolean param for erode(observeSealevel) in TFDialogErode

0.2.4: 07Feb1999
	+ various other little fixes 
	+ code cleanup in TFDialog*
	+ added Fill dialog
	+ added GNU style options
	+ big endian support for MAT should now work properly
	+ cleaned up configure.in some more, added BIG_ENDIAN check
	+ added erosion dialog
	+ added erosion code (still needs some/a_lot_of work)
	+ AutoRotate is now only selectable when FastWireframe is selected
	+ AutoRotate now has a calibration routine and won't gobble CPU anymore
	+ added Timer code
	+ configure now tests for required C++ features 

0.2.3: 25Jan1999
	+ verified that Gtk-- 0.11.1 works without any changes
	+ fix to enable proper initial size for Gtk-- 0.11.x
	+ cleanup configure script 
	+ menus are now only selectable when they should be (finally)

0.2.2: 24JAN1999
	+ changes to go from Gtk-- 0.10.3 to 0.11.0
	+ added 'RedHot' colormap
	+ added 'Desert' colormap
	+ better color handling code for model/preview 
	+ proportional coloring of (slow) wireframe 
	+ better linear colormap

0.2.1: 07JAN1999	
	+ quick fix release before I go on vacation
	+ fixed core dump when generating HF after invoking terraform with -f
	+ better seed for generate dialog

0.2.0: 06JAN1999
	+ better default and sanity checks for linear scale, added scaleFactor
	+ added fill sea option to fast wireframe
	+ added options dialog frame for fast wireframe 
	+ added/integrated fastWireframe mode, real time rotate 
	+ added HeightField Model
	+ changed button default for Rescale dialog
	+ added alterScale method to HFD 
	+ added C++ wrapper for glib hash table 
	+ various other fixes + improvements
	+ various minor fixes to new IO code + calling code
	- menus are now only selectable when they should be (disabled)
	+ made first attempt at Linear Scale dialog
	+ stole code for half/double from hf-lab
	+ added ElclipSea inline funcion
	+ fixed incorrect call for Smooth menu selection
	+ fixed core dump when updating frame title (TFDialogRoughSmooth.cc)
	+ fixed core dump when using non-existing rescale dialog
	+ removed incorrect button delete in TFDialogFlowmap (caused core dump)

0.1.2: 27DEC1998
	+ 1 change to go from Gtk-- 0.10.2 to 0.10.3
	+ added 'observe sealevel' button to Flowmap dialog
	+ general facelift: most dialogs now have a frame, looks better
	+ added default/optional frame to GuiDialog* code
	+ invert now doesn't change the sea level anymore
	+ added dot trace to new IO code
	+ added dot trace to flowmap code
	+ added proper check for existance of -f file 
	+ stole code for extra file format I/O from hf-lab
	+ stole nicer rotate dialog from gimp rotate plugin 
	+ changed incorrect title in TFDialogTransform
	+ converted potentially dangerous strdup pointers delete to free
	+ resize dialogs to make it go better with the smaller font
	+ change from menu_factory to icon_factory 
	+ cleaned up memory leaks in TFDialog* code 
	+ this forced a re-think/cleanup of callbacks, now virtual functions
	+ changed to smaller font, looks nicer

0.1.1: 22DEC1998				a.k.a. the Christmas release
	+ generate seed is now refreshed every time dialog is called
	+ cleaned up callback code in TFGui.cc
	+ make menus safe from !HF
	+ added flowmap option dialog
	+ fixed roughen/smooth selection 
	+ added 'observe/ignore Waterlevel' option to flowmap
	  - must still add to dialog
	+ changed slider default in TFDialogRoughSmooth.cc to 1
	+ changed incorrect title in TFDialogFlowmap
	+ oops, no rescale() after flowmap
	+ flowmap now produces more reasonable output (uses log istead of LN)
	+ changes to adapt from Gtk-- 0.10.1 to 0.10.2
	+ updated configure scripts for new versions

0.1.0: 07DEC1998
	+ fixed core dump upon exit without height field
	+ add configure scripts
	+ fix optionmenu (removed it from TFDialogOptions)
	+ do colormap switching code
	+ implement RoughSmooth stuff
	+ implement some sort of caching to speed up [MS]FD caclulations
	+ implement MFD
	+ implement SFD
	+ make sure replacing a HF cleans out memory
	+ fix linear scale 
	+ implement TFDialogPPov
	+ fix root window option menu 
	+ figure out proper drawing sizing/placement
	+ remove constants in init code (400)
	+ make sure we sync after having drawn a height field
	+ fix fold
	+ implement smooth
	+ implement roughen
	+ change Generate fractal dim slider to values 2 .. 3 (remove H-h code)
	+ add 'real component', 'reverse cos/sin' options for TFDialogGenerate 
	+ ooops, forgot to set d_scale in setScale in HFD
	+ add scaling to 2-d view
	+ get resize to work
	+ do the proper math for colormap bands (+ land offset) in HFD
	+ modal YN dialog -> GuiReallyQuitDialog
	+ rename to terraformer
	+ write dialog example code
	+ write optionmenu example code
	+ HFDialogRoughen: make a real check/radio button
	+ open/save file dialog, connect buttons to methods
	+ connect remaining menus
	+ integrate old mode code
	+ remove the sorting and stats code from HF
	+ port to GTK--


0.0.2: Spring 98
	+ port to XForms, nice menus 

0.0.1: Fall 97
	+ first version, ran under plain X11, added color code