GAMGI Changelogs: GAMGI 0.12

GAMGI 0.13
2nd February 2008
Grabed data on the most important isotopes (masses, abundances, half-life times) and radius (natural element atom-atom distances, effective and calculated atomic radius, covalent, van der Walls). Grabed data on the widely used Shannon ionic radius (depending on valence, coordination and spin). Although already merged with GAMGI, all this data is not available yet for final users (except covalent radius). Prepared glib_gtk_gtkgl.tar.gz, containg all the old glib, gtk and gtkglarea .h and .so files needed to compile GAMGI on x86, x86_64 and ppc architectures, available from ftp://ftp.gamgi.org/gamgi/src/. Fixed a bug in Plane->Create.

### What is new:

- Updated the INSTALL file included with the GAMGI tarball.
- Merged the new data and drivers on mass, ionic radius and atomic radius with GAMGI.
- Wrote and tested the driver to handle the various atomic radius.
- Added data describing radius: natural atom-atom distances in elements, atomic (effective and calculated) and van der Waals radius (currently GAMGI comes only with covalent radius). Many thanks to Luis Veiros, who helped collecting this data. Source: Web_of_Elements.
GAMGI comes only with covalent radius.
- Wrote and tested the driver to handle the shannon ionic radius.
- Wrote and tested the driver to handle the isotopic data.
- Added data describing the well known Shannon ionic radius, published in Acta Crystallographica in 1976 for most elements, as a function of valence, coordination and spin, and widely used today, namely in ceramics books. Many thanks to Pedro Isidoro, who sent me copies of the 1969 and 1976 Shannon papers.
- Added data describing the main isotopes for all elements, including abundances and half-life times. Source: Wikipedia, Web_of_Elements, and others.
- Prepared a file, glib_gtk_gtkgl.tar.gz, containg all the glib, gtk and gtkglarea .h and .so files needed to compile GAMGI on x86, x86_64 and ppc architectures, available from ftp://ftp.gamgi.org/gamgi/src/.
- Found and removed a little bug in Plane->Create: when the initial and final order was the same, the order was always 1.

### What is next:

- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Port GAMGI to GTK 2.* or (3.*).
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.12
3rd December 2007
Wrote tutorials about Point Symmetry and Voronoi Tesselation and added older tutorials to the GAMGI Help mechanism. Redesigned Cell->Measure, which can be used now to analyse Geometry, Voronoi Tesselation and Reciprocal Lattice. Improved Plane->Create, Plane->Modify, Direction->Create, Direction->Modify, slashing several important positioning bugs. Plane->Modify, Direction->Modify and XML files fully work now with autonomy All. Removed two bugs gone unnoticed with some gcc versions, resulting in a warning and an error, when compiling. If no major problems are found, next release will be 0.13.

### What is new:

- Changed the default colors for GAMGI text documentation.
- Soved a positioning bug in Plane->Modify and Direction->Modify, when going to atomic planes, directions from objects with a different position.
- Solved a positioning bug in Plane->Create and Direction->Create, with atomic planes and positions, introduced with last release changes.
- Solved a positioning bug in Plane->Modify and Direction->Modify, when changing from All to Partial or None Autonomy, introduced with the Autonomy All new code.
- Fixed a bug when importing planes, directions with autonomy ALL from XML files.
- Atomic and crystallographic planes and directions can now be modified in all cases where old or new Autonomy is All.
- Updated the dialog dimensions for Help->Tutorial and Help->Topic.
- We are planning to port GAMGI to GTK 2* (or perhaps 3*), as this seems to be the most reasonable long-term solution for GAMGI. Even OLPC, a notoriously unbloated project, is using GTK2 these days. (with Python).
- Added a two-page tutorial on Voronoi tesselation.
- Added a two-page tutorial on Point Symmetry analysis.
- Added <ctype.h> in gamgi_gtk_help_dialog.c, to avoid a warning silently accepted by gcc 3.3.4.
- Removed a parsing error (void left) in gamgi_gtk_gamgi_exit, silently accepted by gcc 3.3.4.
- Tested and cleaned gamgi_phys_reciprocal.c, with shifted cell node origin: no bugs found.
- Fixed a XML glitch in formats/text/create_contents.html.
- Updated the documentation information on www.gamgi.org.
- Added the tutorials on occupancy rules, nanostructure and RCP, available from the documentation, to the interface Help subsystem.
- Removed gamgi_math_cell_transform, replaced by gamgi_math_position_rotation, gamgi_math_position_translation.
- Simplified the position code in gamgi_phys_plane, gamgi_phys_direction, gamgi_phys_cell_link and gamgi_phys_rcp (the cell center is no longer needed in these functions).
- Found a old bug in the bond code: when the selected object has only one of the atoms, bond->first changes when rotating, moving. We think we have a good solution for this structural problem, even for the future, when most objects will be allowed to have multiple, unlimited, parents: attribute ids to internal tasks.
- Cracked a problem regarding rotation and translation of planes and directions imported from XML files.
- Moved Cell->Measure to the new style and added Geometry and Voronoi methods, as in Group-, Molecule- and Cluster->Measure dialogs.
- Removed a simple bug just introduced in gamgi_gtk_direction_create.c, that crashed GAMGI when attempting to create an atomic direction.
- Solved partially a positioning problem when importing atomic planes, directions, with Partial Autonomy.

### What is next:

- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Port GAMGI to GTK 2.* or (3.*).
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.11
25th October 2007
Improved the usability of the dialogs Plane->Modify and Direction->Modify. Crystallographic and atomic planes and directions with Partial Autonomy, can now be arbitrarily positioned. Redesigned and reunited in a single file the code to position objects, which is now much more consistent, simpler, and easier to maintain. Replaced Layer, Plane, Direction enumerations by a common one, easier to understand. Replaced XML possible values yes,partial,no by all,partial,none, for visibility_in, visibility_out in layers and autonomy in planes, directions, to be consistent with the dialogs.

### What is new:

- Temporarily disabled Plane->Modify and Direction->Modify, when the old or new Autonomy is All, until we find the best approach to the problems involved.
- Harmonised the error messages when a feature is not supported yet.
- Changing arbitrary positions for atomic planes and directions is now working fine, when done from Plane->Modify or Direction->Modify.
- Simplified and improved the functions in gamgi_math_position.c
- Removed gamgi_math_plane.c and gamgi_math_function.c and reunited the code inside in a single file, gamgi_math_diophantine.c, covering all the functions related with Diophantine equations.
- Redesigned all the mathematic rotation, translation code for text, direction, plane, cell objects. This critical code is now much simpler and reunited in a single file: gamgi_math_position.c.
- Crystallographic planes and directions with autonomy partial or none are now working fine with arbitrary orientation and child objects.
- Simplified the code handling position and orientation for cells, planes, directions, making it much easier to understand and maintain.
- The position of planes and directions is now reset before modifying them, in Plane->Modify and Direction->Modify, so the positions of the child objects are correct afterwards.
- Updated formats documentation for layer and plane, direction.
- In XML files, replaced parameters yes, partial, no, in layers (visibility_in, visibility_out), planes (autonomy) and directions (autonomy) by all, partial, none.
- Replaced enumerations TRANSPARENT, TRANSLUCID, OPAQUE (layers) and INDEPENDENT, AUTONOMOUS, AUTOMATIC (planes,directions) by a single enumeration ALL, PARTIAL, NONE.
- Added gamgi_math_direction.c, currently to handle direction positioning code.
- The positioning code for crystallographic planes and directions is now well tested and is working fine, after fixing a few rotation, translation issues.
- Crystallographic planes with autonomy Partial or All can now be exported,imported with arbitrary position and orientation.
- Plane,Direction position and orientation is now exported, imported to XML files, when the autonomy is Partial or All.
- When the type of plane,direction changes in Plane->Modify, Direction->Modify, the same defaults as in Plane->Modify, Direction->Create are shown.
- Added GTK_WIDGET_VISIBLE macros to improve the interface behaviour in Plane->Modify and Direction->Modify.
- Added rotation and translation to molecule and group containers.
- Controling position and orientation in Plane->Modify is now working fine, for polygon crystallographic planes.
- Added a page Position to Plane->Modify and Direction->Modify.
- Fine tuned Plane->Modify and Direction->Modify behaviour. Fixed default values for projection and autonomy parameters of planes/directions.
- Corrected a bug in gamgi_engine_find_object() when Gamgi is the selected object, and improved the code in gamgi_engine_find_object(). As a result simplified static_bond_parent() in gamgi_expat_export.

### What is next:

- Write tutotials about Point symmetry analysis, Voronoi analysis and Plane,Direction usage, including atoms.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.10
19th September 2007
Added a Geometry method in Group->Measure, Molecule->Measure and Cluster->Measure, that reports all the bond lengths, angles and torsions, including the number of occurrences, the minimum and maximum values, the average and standard deviation. Updated the Help code and documentation for Geometry, Symmetry and Voronoi methods in Group->Measure, Molecule->Measure and Cluster->Measure and RCP documentation in Cell->Link.

### What is new:

- Added gamgi_io_x3d.c to receive the exporting x3d code.
- Removed a little bug in the xyz exporting code: when the selected object was a single atom, it was not exported.
- Removed gamgi_engine_dlist_atom_scope, replaced by gamgi_engine_dlist_atom_object, which is more general.
- Updated the Help code for the RCP method in Cell->Link. Wrote the documentation for the RCP report produced.
- Updated the Help code related with Measure dialogs for Group, Molecule and Cluster, related with, Geometry, Symmetry and Voronoi.
- Updated all the documentation for Geometry,Symmetry and Voronoi measure methods for Group, Molecule and Cluster.
- The Geometry method is now fully working for Groups, Molecules and Clusters.
- Bond length, angle and torsion sequences in the measure method Geometry are now ordered.
- Bond lengths are now calculated in the measure method Geometry. Bond angles and torsions need some redesign.
- Most of the Geometry method is now tested and working.
- Linked the method Geometry in Group->Measure, Molecule->Measure and Cluster->Measure.
- Wrote most of the code to implement the geometry method, to report bond lengths, angles and torsions in groups, molecules and clusters, including minimum and maximum values, average and standard deviation.

### What is next:

- Write tutotials about Point symmetry analysis, Voronoi analysis and Plane,Direction usage, including atoms.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.9
31th August 2007
Fixed a bug in the Wigner-Seitz cell code that crashed GAMGI when applying space group information, with more than one Wyckoff position (thanks Pedro, for spotting this one!). Point Symmetry and Voronoi tesselation analysis can now be done for Group, Molecule and Cluster objects. The dialogs for these methods are new, according to the notebook model. Solved a couple of glitches with ppm, png, tiff and jpeg exporting formats. Started playing with X3D.

### What is new:

- Solved a little problem in gamgi_gtk_measure_voronoi_init, affecting the default View page in the Voronoi method.
- Added new scientific links to the Links page (Thanks Pedro!).
- Created the dialog Group->Measure, that is now measuring the same methods as Molecule->Measure and Cluster->Measure.
- The dialogs Molecule->Measure and Cluster->Measure are now measuring Symmetry, Voronoi methods, and is ready for any other methods, such as geometry.
- Redesigned parts of the code in gamgi_gtk_molecule_measure.c, gamgi_gtk_cluster_measure.c and gamgi_gtk_cell_measure.c, in order to share this functionality among the various Object->Measure dialogs.
- Redesigned the Cluster->Measure dialog, according to the new style.
- Redesigned the Cell->Measure dialog, according to the new style.
- Redesigned the Molecule->Measure dialog, according to the new style.
- Updated the gamgi.org link pages. Reviewed all the links and added new scientific links.
- Wrote information for GAMGI-supported ppm, png, tiff and jpg file formats. Fixed a detail in the ppm format (comment in the second instead of fourth line).
- Fixed a old bug in the Wigner-Seitz Cell Link code, that crashed GAMGI when multiple positions were generated, from space group information (thanks Pedro!).
- Fixed a glitch in the code exporting .png files: a typo added to test code malfuctioning was left there (letter 'a' at line 723 at gamgi_io_file.c) actually preventing png from working.
- Fixed a glitch in the code exporting .ppm files: the last end of line was missing (sent to stdout actually!).
- Started writing code to export X3D files. The header and the root node are done. Xj3D hapilly loaded GAMGI first (empty!) X3d file.

### What is next:

- Write tutotials about Point symmetry analysis, Voronoi analysis and Plane,Direction usage, including atoms.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.8
2nd August 2007
GAMGI can now export .ppm files (natively) plus .png, jpeg and .tiff (thanks to pnmtopng, pnmtojpeg and pnmtotiff). Removed a trivial but crashing bug in Group->Modify (added last release). Wrote documentation for all the Object->Remove and Object->Modify dialogs. Wrote documentation for Plane and Direction interfaces and formats. Updated Help->Current, Help->Topic and Help->Start code to account for all the changes. Updated small changes in Bond and Cell labels, in interfaces, formats and documentation, including Tutorials. Updated gamgi.org to reflect all the documentation and label changes.

### What is new:

- Wrote XML Format documentation to create crystallographic and atomic planes and directions.
- Updated Help->Current and Help->Topic, to account for recent changes in Cell, Plane, Direction and Bond interfaces and formats.
- Updated Help Formats documentation for Cell and Bond.
- Wrote the Help documentation for Direction->Modify.
- Wrote the Help documentation for Plane->Modify.
- Updated all the Installation documentation.
- Fixed a trivial but nasty bug in Group->Modify (introduced last release): this old, soon to be replaced, dialog has no Global button, so GAMGI crashed when pressing the mouse on screen.
- Deleted *0.11.* old files from ftp.gamgi.org.
- Rewrote the Help documentation for Cell->Modify.
- Rewrote the Help documentation for Bond->Modify. Improved the labels in Bond->Create and Bond->Modify dialogs (Mode, Type instead of Type, Strength).
- Rewrote the Help documentation for Light->Modify.
- Rewrote the Help documentation for Layer->Modify.
- Rewrote the Help documentation for Text->Modify.
- Updated the Help documentation for Assembly->Link, Cluster->Link, Text->Link and Group->Link (recursive objects).
- Updated Plane->Create and Direction->Create Help documentation.
- Fixed a bug in the new Layer->Remove dialog: the All mode was always assumed when deciding if a new current layer was needed.
- Wrote the Help documentation for the new Object->Remove dialogs.
- GAMGI can now export any top window graphic area in png, jpeg or tiff formats, thanks to the standalone programs pnmtopng, pnmtojpeg and pnmtotiff.
- GAMGI can now export any top window graphic area in ppm format.

### What is next:

- Write tutotials about Point symmetry analysis, Voronoi analysis and Plane,Direction usage, including atoms.
- Improve documentation all around.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.7
14th July 2007
The Object->Remove dialogs were all rewritten, according to the notebook style, providing much more funcionality. Plane->Modify and Direction->Modify can now be used in most situations, but positioning is not done yet. Fixed a serious bug (added 4 releases ago) crashing GAMGI when multiple top windows were used simultaneously. Improved a few XML/GUI labels and rules for mouse handling in dialogs.

### What is new:

- From now on, the id of objects selected with the mouse in Object->Remove dialogs overwrite the previous id contents.
- Found and removed a nasty bug introduced: GAMGI was crashing when pressing in a different window, in Create,Remove,etc. dialogs ;-). Apparently introduced in release 0.12.3, when global selection was "improved", in Link,Copy,Select dialogs.
- Rewrote the Window->Close dialog, using the new notebook style, with several new removing options.
- Fixed a dangling pointer in the new code to handle remove dialogs.
- Rewrote the Direction->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Plane->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Layer->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Light->Remove dialog, using the new notebook style.
- Added an option to remove Bonds in all Object->Remove dialogs.
- Fixed a bug in Link and Remove dialogs: check properly if the current object is affected when removing or moving an object. Improved gamgi_engine_find_object.c to work also with bonds.
- Fixed the path for documentation in Help->Start.
- Rewrote the Assembly->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Cell->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Cluster->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Molecule->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Group->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Text->Remove dialog, using the new notebook style, with several new removing options.
- Rewrote the Atom->Remove dialog, using the new notebook style, with several new removing options.
- Crystallographic and atomic planes,directions can now be easily modified using Plane->Modify and Direction->Modify. Positioning is not done yet.
- Updated XML files in dat/ to new type,autonomy labels.
- Changed Model to Type in plane, direction objects.
- Changed Volume to Type in cell objects.
- Changed Dependence to Autonomy in plane, direction objects.

### What is next:

- Improve documentation all around.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.6
27th June 2007
Atomic planes and directions can now be imported and exported to XML files. Crystallographic planes and directions can now be modified using the improved Plane->Modify and Direction->Modify dialogs. Updated the model to handle planes and directions. Improved error checking and fixed bugs for planes and directions.

### What is new:

- Fixed some glitches in Plane->Modify and Direction->Modify.
- Crystallographic planes and directions can now be modified with Direction->Modify and Plane->Modify, as long as atoms are not involved.
- Found and fixed a bug: when linking an atom elsewhere, bonds were not correctly removed, because the list of bonds was corrupted in the process.
- When the atoms defining atomic planes,directions are removed or linked elsewhere, the planes,directions are removed, after saving the child objects to the immediate parent above.
- Crystallographic planes and directions can not be linked to different objects, even if they are Cells. Atomic planes and directions can be freely linked to other objects, even in different layers and windows.
- Recursive objects can now be linked above to objects of the same class that initially were below.
- Improved the Plane->Modify interface.
- All parameters to modify are now imported in Direction->Modify.
- All parameters to modify are now imported in Plane->Modify.
- Error checking for XML planes and directions is now comprehensive and simple to maintain. In particular this fixes the crashing bug for cell planes and directions without cell, with direct parents.
- Improved code handling plane order in gamgi_gtk_plane_create.c
- Atomic planes and directions are now properly checked for errors when imported from XML files.
- Another round of improvements on atomic planes,directions code.
- Atomic planes and directions can now be imported and exported, for all dependence modes: Yes, Partial and No. The corresponding safety tests are not implemented yet though.
- Fixed a problem when creating crystallographic direction ranges: the node now obtained is the one along the direction that is closer to the cell (translated) origin.
- Improved crystallographic Plane code: removed gamgi_phys_plane_node.
- Separated the atomic Plane, Direction code, so this can be used to import atomic XML Plane, Directions.
- Added documentation for xyz, postscript files.
- Plane,Direction parameters Reference,Dependence,Thickness are now imported,exported fine for crystallographic planes.

### What is next:

- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Add Contents and Container options in Object->Remove dialogs.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.5
19th April 2007
Created Plane->Modify and Direction->Modify dialogs, improved Plane->Create and Direction->Create dialogs, redesigned Plane, Direction functionality, and the way Plane, Direction are handled internally. Simplified code, removed bugs, fixed the standard xyz format.

### What is new:

- Improved center determination for a set of objects, using specific weights for each object class, so rotations with the mouse are slightly more intuitive and faster.
- Added center, origin, quaternion to group, molecule and assembly containers (these were already included in the other containers: cluster and cell).
- Fixed the rules to modify AUTOMATIC, AUTONOMOUS and INDEPENDENT plane,directions.
- Improved the gtk code, interface for Plane->Create, Direction->Create, Plane->Modify and Direction->Modify.
- Added a reference parameter for plane,direction objects, to properly identify the reference used to build these objects.
- Added checks for atom parents when creating atomic planes, directions.
- New direction modes Automatic, Autonomous, Independent are implemented and working fine.
- New plane modes Automatic, Autonomous, Independent are working fine. Key atoms cannot have planes, directions as parents. Key atoms are reordered in the beginning.
- Fixed a bug in gamgi_expat_import afecting Plane,Direction projection: default mode must be added here, when cell is known.
- Changed again Plane and Direction dependency rules: futurely these objects will have Automatic, Autonomous or Independent types of connection with the defining objects, Cell or Atoms.
- Fixed a bug in gamgi_gtk_object_independent: returned FALSE instead of TRUE, so objects could not link.
- Fixed a bug in gamgi_phys_plane_atoms, gamgi_phys_direction_atoms: atom positions must be projected when added to polygon, line.
- Updated phys, gtk, mesa code to handle the new link,thickness parameters for plane,direction.
- The 04 menu is now handled in a common way (and solved a little bug) in Cell, Plane and Direction dialogs.
- Fixed the behaviour for dialogs Plane->Modify and Direction->Modify.
- Fixed the layout for dialogs Plane->Modify and Direction->Modify.
- Improved the way Link and Thickness parameters are handled in dialogs Plane->Create and Direction->Create.
- Created the dialogs Plane->Modify and Direction->Modify.
- Fixed the xyz format, to conform with the usual specification of this format: element names instead of numbers and a comment second line.
- Corrected a bug in the Voronoi code: in some cases, the borders limit could be zero, triggering nans. In principle this affected speed only. Cleaned the Voronoi code.
- Updated the GAMGI XML files with planes,directions in stereographic projections, to work with the new model parameter.
- Poles and Traces for a given plane,direction in a stereographic projection are now created as independent objects.
- Changed the way used to control the representation of planes and directions. The XML parameters plane, trace, polygon have been replaced by a single parameter model, with values: pole, trace, polygon, line, reciprocal.

### What is next:

- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Add Contents and Container options in Object->Remove dialogs.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.4
15th December 2006
Implemented the dialogs Window->Copy, Layer->Copy, Light->Copy, Assembly->Copy, Cell->Copy, Cluster->Copy, Molecule->Copy, Group->Copy, Text->Copy. Wrote two tutorials showing how to use the occupancy rules implemented in GAMGI, to build non-crystalline structures with cells.

### What is new:

- The window and layer containing the copied objects now raise automatically to the top and are set as current layer and object.
- Implemented the dialog Window->Copy, in gamgi_gtk_window_copy.c. Data not copied (in gamgi_engine_copy_out_window) must be initialized.
- Implemented the dialog Layer->Copy, in gamgi_gtk_layer_copy.c.
- Implemented the dialog Light->Copy, in gamgi_gtk_light_copy.c.
- Implemented the dialog Cell->Copy, in gamgi_gtk_cell_copy.c.
- Implemented the dialog Assembly->Copy, in gamgi_gtk_assembly_copy.c.
- Found a bug in the code to copy objects: when exporting bonds, in some cases the bond parents identification was wrong. It seems the problem is gone, as we cannot reproduce it anymore. The code looks fine. Perhaps a recompilation fixed the problem.
- Implemented the dialog Cluster->Copy, in gamgi_gtk_cluster_copy.c.
- Implemented the dialog Molecule->Copy, in gamgi_gtk_molecule_copy.c.
- Implemented the dialog Text->Copy, in gamgi_gtk_text_copy.c.
- Added a tutorial showing how to create non crystalline structures, using GAMGI pattern occupancy rules, in Cell->Link.
- Added a tutorial and a screenshot showing how to create a multilayer nanostructure, using GAMGI pattern occupancy rules, in Cell->Link.

### What is next:

- Add Plane->Modify and Direction->Modify functionality.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Add Contents and Container options in Object->Remove dialogs.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.3
26th November 2006
Global selection between layers is implemented, making object linking operations much easier. Implemented the dialog Atom->Copy. Implemented the Link All method in the Window->Link dialog. Reorganized the Gtk window code. Wrote documentation for the Object->Link dialogs and Atom->Copy. Updated the documentation for Object->Measure dialogs, plus Plane->Create and Direction->Create dialogs.

### What is new:

- Updated the documentation for the dialogs Plane->Create and Direction->Create.
- Updated Help->Current and Help->Tutorial dialogs, to include all the help files about the new Link->Object dialogs, plus the Atom->Copy dialog.
- Removed a memory leak added in the previous release in the code to avoid half-bonds in linked objects (a list was not removed). Added a simple but general procedure to avoid half-bonds, when copying objects. So far only implemented in the Atom->Copy dialog.
- Reorganized the Gtk window code: created gamgi_gtk_window_remove.* files, renamed gamgi_gtk_window.* to gamgi_gtk_window_create.*, cleaned code in gamgi_gtk_reset.* and gamgi_gtk_exit.* files.
- The method link All, in the Window->Link dialog, is implemented.
- Updated the documentation for Plane->Measure and Direction->Measure dialogs.
- Updated the documentation for the Atom->Measure dialog.
- Added documentation for the new Atom->Copy dialog.
- Added documentation for all the new Object->Link dialogs.
- The first Copy dialog, dialog Atom->Copy, is now fully operational.
- Created the dialog Atom->Copy, in gamgi_gtk_atom_copy.c.
- Cleaned code in gamgi_mesa_select.c.
- A friend pointed us to a GPL code to calculate diffraction patterns. This promises to be very useful to GAMGI.
- Linking objects is now greatly simplified, as objects not in the current layer (in the same or in a different window) can be easily selected.
- In Object->Link dialogs, the second object address is now global for all linking methods (In Cell->Link, this address was global only for the Object linking method).

### What is next:

- Add Plane->Modify and Direction->Modify functionality.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Add Contents and Container options in Object->Remove dialogs.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.2
6th November 2006
This is essentially a bug-fix release, correcting several problems related mostly with the new Object->Link dialogs implemented in the previous release and with the graphic engine.

### What is new:

- Found and removed a bug in gamgi_mesa_select.c: when a window was selected, the raised and updated window was the current one.
- Removed a GlFlush() and a glClear (GL_COLOR_BUFFER_BIT) in gamgi_mesa_drawing and a gtk_widget_queue_draw (window->area) in gamgi_mesa_scan. They seem to be all redundant.
- Wrote and tested code to pick objects in other layers below the current layer, with the mouse. This is needed for eficient object linking.
- Cleaned the local,global object selection code, in gamgi_mesa_area.c and gamgi_mesa_select.c files.
- Found and removed a long standing bug: in Orthographic Layers, when creating new objects as Texts, Cells, Atoms, with the mouse, a very large z coordinate was given to them, when no other object was already there. Now the new objects receive the same depth as the Center of the current Layer (Orthographic or in Perspective).
- Fixed the way atom scaling was done in gamgi_mesa_draw_atom and gamgi_mesa_scan_atom: it worked fine for the atoms, but not for the child objects, as texts.
- Fixed a bug in gamgi_gtk_select_ctree_bond: the nodes describing texts linked to bonds were duplicated, because the corresponding function call was called twice.
- Fixed a bug in gamgi_mesa_draw.c: when child objects were linked to bonds, they would change the atom color.
- Fixed a bug in gamgi_mesa_rotate.c and gamgi_mesa_translate.c: rotation, translation data only propagated to bond child elements when the selected object was the bond.
- Added Bond to the list of objects that can be linked above in Text->Link dialogs. This was missing before.
- Removed a bug in static_clean in gamgi_gtk_bond_link.c, crashing GAMGI because the menu_above does not exist here.
- Fixed the link between layers and objects containing bonds to atoms outside: these bonds are now automatically removed before the link is applied.
- Fixed the link between windows and layers (before a crash would take place when the layer was the last one or the current one).
- When the last layer is removed or linked to a different window, a new layer is now automatically created (before, the action was refused and an error message was shown).
- Improved static_reset, static_clean, in gamgi_gtk_*_link.c functions, to handle better Object->Link dialogs.

### What is next:

- Add Plane->Modify and Direction->Modify functionality.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Add Object->Copy dialogs with basic copy functionality.
- Add Contents and Container options in Object->Remove dialogs.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Implement global selection, including global picking algorithms and selection dialogs that include all the selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.12.1
18th October 2006
Implemented the dialogs Window->Link, Layer->Link, Light->Link, Plane->Link, Direction->Link, Atom->Link, Bond->Link, Text->Link. Redesined and implemented the dialogs Assembly->Link, Cluster->Link, Molecule->Link, Group->Link. Removed a couple of bugs. Added a tutorial showing how to build a Random Close Packing (RCP) structure.

### What is new:

- Found and removed a bug in gamgi_mesa_draw_assembly and gamgi_mesa_scan_assembly: the final glPopMatrix was missing.
- Found and removed a bug in gamgi_engine_find_layer: it did not work for bonds, as the parent addressing is different.
- Implemented the Bond->Link dialog: bonds can now be linked to arbitrary objects, not necessarily in the same window.
- Implemented the Direction->Link dialog: directions can now be linked to arbitrary objects, not necessarily in the same window.
- Implemented the Plane->Link dialog: planes can now be linked to arbitrary objects, not necessarily in the same window.
- Implemented the Light->Link dialog: lights can now be linked to arbitrary layers, not necessarily in the same window.
- Implemented the Window->Link dialog: windows can now be linked to arbitrary layers, even in other windows, keeping the Undo,Save history lists of those layers.
- Implemented the Layer->Link dialog: layer objects can now be linked to all types of objects, below and above, in hierarchy.
- Implemented the Text->Link dialog: text objects can now be linked to all types of objects, below and above, in hierarchy.
- Updated the Assembly->Link dialog: assemblies can now be linked to all types of objects, below and above, in hierarchy.
- Updated the Group->Link dialog: groups can now be linked to all types of objects, below and above, in hierarchy.
- Updated the Cluster->Link dialog: clusters can now be linked to all types of objects, below and above, in hierarchy.
- Updated the Molecule->Link dialog: molecules can now be linked to all types of objects, below and above, in hierarchy.
- Laue and multiple planes are now rejected when creating planes passing through nodes incompatible with their indices.
- Redesigned the way current object and layer are updated in windows statusbar, fixing a bug occurring when the current object was Gamgi and multiple top windows were in use.
- Fixed screenshot links in www.gamgi.org.
- Found and removed a bug in Cluster->Measure: when trying to perform a Voronoi tesselation from a Voronoi output cluster, GAMGI was not properly checking for the absence of atoms, resulting in a segmentation fault.
- Added a tutorial on how to build RCP structures.
- Website improvements: dynamic images, new screenshots, repaired broken links.

### What is next:

- Add Plane->Modify and Direction->Modify functionality.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Add Object->Copy dialogs with basic copy functionality.
- Add Contents and Container options in Object->Remove dialogs.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Implement global selection, including global picking algorithms and selection dialogs that include all the selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI old
Changelogs for older releases can be found here.

- GAMGI 0.11.1 - GAMGI 0.12
- GAMGI 0.10.1 - GAMGI 0.11
- GAMGI 0.09.1 - GAMGI 0.10
- GAMGI 0.08.1 - GAMGI 0.09
- GAMGI 0.07.18 - GAMGI 0.08

Home