GAMGI 0.12
24th September 2006
Completed the code to build arbitrary ranges of crystallographic directions belonging to the same family. Planes and directions can now be created passing through a given node or between planes with a given order. Improved the code to measure lengths between planes, directions and atoms. Planes and directions with any order or node can now be exported and imported to XML GAMGI format. Removed some numerical bugs, mainly in the code to build directions.

### What is new:

- Fixed some links and added images that were missing in the users documentation.
- Distances between atoms and atomic planes can now be calculated, for independent and independent planes.
- Found and removed a bug in gamgi_chem_symmetry.c: in static_try_m0, negative d[n] components could produce wrong results.
- Distances between atoms and planes (points) in reciprocal space are now calculated. Previously we calculated the distance to the plane passing through the origin.
- Distances between independent directions and atoms are now properly calculated. Updated this calculation for projected directions.
- Simplified the code to obtain a rotated and translated point, without using the object center.
- Distances between directions and atoms are now properly calculated, for directions not going through the cell origin (this was already done for planes).
- The direction node position is now imported, as o1,o2,o3,o4 parameters.
- Added random pictures to www.gamgi.org front page.
- Directions now maintain the node coordinates in primitive or conventional vectors, the vectors defined for the indices.
- The direction node position is now exported, as o1,o2,o3,o4 parameters.
- The object name in planes and directions was always exported, even when it was the default: fixed.
- A old, deprecated, visibility XML parameter (none) was still exported instead of the new one (no): fixed.
- Improved the way crystallographic planes and directions are tested throughout the code.
- Found and removed a bug, in the code to build directions in ranges: a variable was not properly initialized in static_segment, in gamgi_phys_direction.c, resulting in crashes when points were too close.
- When defining direction ranges, plane indices too small (multiple planes) are allowed, but plane indices too large (Lauer planes) are not (because the conversion makes no sense).
- Multiple indices are not allowed for directions, but they are allowed for planes (Laue reflections).
- Found and removed a bug, in the code to build directions in ranges: some directions were not created due to numerical errors, when the plane was tangent to the cell. The third point needed to define a plane is now chosen in such a way that the section of the plane inside the cell is maximized, eliminating the problem.
- Found and removed a bug in the procedure to create directions in cell volumes: the routine to create 3 orthogonal points was broken.
- The procedure to create ranges of crystallographic directions from two family planes in the direction zone is working fine.
- Crystallographic planes can now be created specifying either a range of orders or a specific node on the plane.

### 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.11.17
30th July 2006
Atomic planes and directions can now be created in any atomic container object, and the planes and directions can be taken away, as independent objects, with all the atoms and bonds inside. Wrote the second level and improved the first level dialogs to support all the functionality to create planes and directions passing through an arbitrary node or to create an arbitrary range of planes and directions.

### What is new:

- Completed the code controlling all the interactivity in the first and second level dialogs Plane->Create and Direction->Create.
- Wrote the Plane->Node and Direction->Range second level dialogs, for Plane->Create and Direction->Create. Both first and second level dialogs look fine now.
- Updated the Plane->Create and Direction->Create dialogs, to receive node and range information.
- Added gamgi_math_function.c and gamgi_math_plane.c files.
- Solved the diophantine equations needed to get the node intersection between two planes belonging to the same direction.
- Added code to generate a single direction passing through an arbitrary node o1,o2,o3, not necessarily 000.
- Determined relations between primitive and conventional Miller indices for planes of all Bravais lattices.
- Added code to generate a single plane passing through a given node, primitive or conventional.
- Improved direction code: rotation,translation is working fine for all all sorts of direction objects.
- Added code to create directions from 2 atoms and to link atoms closer than thickness to directions.
- Improved the interface Plane->Create, cleaned code in gamgi_gtk_plane_create.c and gamgi_phys_plane.c, fixed a recent dangling pointer.
- Atomic planes can now be created from any arbitrary parent object, with the parent atoms also copied.
- Prepared screenshots for the GAMGI 0.12 series.

### 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.11.16
29th June 2006
Reorganized the crystallographic plane and direction code. Crystallographic planes and directions can now be automatic or independent objects. Crystallographic families of planes can now be generated for a given range, including the whole cell volume. Independent crystallographic planes can now include automatically all the atoms within a given thickness. Redesigned the frontpage and improved the styling of www.gamgi.org.

### What is new:

- Plane polygons are now illuminated from both sides, using glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE).
- Independent crystallographic planes can now include automatically all the atoms within a given thickness. This is quite usefull for crystalline structure analysis.
- gamgi_gtk_direction_create.c is now importing the new direction data: 2 atom identifiers, automatic/independent, thickness, start and end order, scale. Thickness and direction order is not working yet though.
- Spam against the lists is increasing. All mail going from non members to GAMGI lists is now automatically discarded. Before it was kept for aproval.
- gamgi_gtk_plane_create.c is now importing the new plane data: 3 atom identifiers, automatic/independent, thickness, start and end order, scale. Apart from atomic planes and thickness everything else is now working.
- Cleaned the code to build directions, in gamgi_phys_direction.c and gamgi_math_polygon.c.
- Fixed a little bug in direction rendering code: the line width was different in gamgi_mesa_draw.c and gamgi_mesa_scan.c.
- Independent directions now can be rotated, translated and scaled on their own. Automatic directions rotate, translate and scale the immediate parent above.
- The plane-atom distance for polygonal planes of any order is now correctly measured.
- Independent planes now can be rotated, translated and scaled on their own. Automatic planes rotate, translate and scale the immediate parent above.
- Whole ranges of crystallographic planes belonging to the same family can now be created automatically.
- A order parameter can now be used in XML files to indicate which plane in the family should be considered.
- Planes in direct space, intersecting the cell axes in (n/h, n/k, n/l) can now be represented for any value of n. Before, only n = 1, the usual default, was possible.
- Code related with planes and directions is now in gamgi_phys_plane.c and gamgi_phys_direction.c, respectively. Moved code to get plane and directions vectors to these files. Cleaned code in gamgi_phys_plane.c and gamgi_phys_direction.c
- Redesigned the www.gamgi.org front page.
- Fixed the links in the tutorials in www.gamgi.org.

### 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.11.15
31th May 2006
The GAMGI Help system is working again, with files fetched locally, by HTTP or FTP, using GAMGI or a external browser, including the new notebook-style Help files that emulate the GAMGI task dialogs. Improved documentation. Two simple but crashing bugs were found and removed, afecting Molecule->Remove, Cell->Create and Cell->Modify.

### What is new:

- Updated documentation in bond/create_lengtht.html
- Updated the titles for all html files in gamgi.org and distributed with GAMGI.
- More improvements in the Help mechanism and data.
- Now Help automatically shows the documentation page covering the notebook open page.
- Updated the Help->Start information.
- Found and removed a simple but crashing bug in gamgi_gtk_cell_create.c: and gamgi_gtk_cell_modify.c: "button_origin" instead of "button_translation".
- Found and removed a simple but crashing bug in gamgi_gtk_molecule_remove.c: "toggle_button_global" instead of "button_global".
- Updated code reading Help documentation, in gamgi_expat.h, gamgi_expat_import.c and gamgi_expat_import_help.c. Gamgi can read now all board- and notebook-style documentation pages.
- Updated the INSTALL file distributed with Gamgi.
- Changed the GAMGI environment variable to GAMGI_HELP, which now points directly to the doc/ directory.
- Help Search is working fine, with a browser.
- Help Tutorial is working again, with a browser.
- Help Current is working again, with a browser.
- Help Topic is working again, with a browser.

### 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.11.14
11th May 2006
Wrote documentation for all the the working Config dialogs. Updated and wrote documentation for all the working Create dialogs (except Atom). Updated and wrote Tutorials. Improved the website.

### What is new:

- Wrote documentation for second level cell symmetry dialogs: Systems, Lattices and Groups.
- Wrote documentation for Stereographic and Equivalent projections, for planes and directions.
- Rewrote the frontpage, with the same layout but better CSS and markup code.
- Wrote the Interfaces documentation for the Direction->Create dialog.
- Wrote the Interfaces documentation for the Plane->Create dialog.
- Added two tutorials to build CsCl and NaCl cristalline structures.
- Updated the three tutorials on BCC, CFC and HCP interstices.
- Added a tutorial to build a structure cell of calcite (CaCO3).
- Updated the tutorial on orthorhombic polyethylene.
- Updated the Interfaces documentation for the Cell->Create dialog.
- Updated the Interfaces documentation for Text->Create and Bond->Create dialogs.
- Wrote the Interfaces documentation for the second level dialogs Cell Align Rotation and Cell Align Translation.
- Updated the Interfaces documentation for the Cell->Link dialog.
- Updated the Interfaces documentation for Layer->Create and Light->Create dialogs.
- Wrote the Help Interfaces documentation for all Object->Config dialogs (except Atom): Gamgi, Window, Layer, Light, Text, Bond, Help.
- Changed the <gamgi> XML attribute Beep to Sound, to be consistent with the graphic interface.
- Created the file infrastructure for Help Interfaces.

### 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.11.13
10th April 2006
Redesigned the dialogs Bond->Create, Bond->Modify and Bond->Config. Redesigned and improved functionality for dialogs Plane->Create and Direction->Create. Updated documentation for all Formats documentation (except for Atom).

### What is new:

- Found and removed a bug in gamgi_gtk_cell_modify.c: in static_press, static_volume must appear before static_faces.
- Replaced RHOMBUS, Rhombus, rhombus by PARALLELEPIPED, Parallelepiped, parallelepiped everywhere (the correct name for this Cell volume).
- Changed the <gamgi> XML attributes background_r, background_g, background_b, foreground_r, foreground_g, foreground_b to base_r, base_g, base_b, text_r, text_g, text_b, to be consistent with the Gamgi->Config dialog.
- Converted style and upgraded file formats documentation for Window, Help and Gamgi.
- Converted style and upgraded file formats documentation for Orbital, Group, Molecule, Cluster, Arrow, Shape, Graph and Assembly.
- Improved error checking for light colors in both interfaces and files.
- Converted style and upgraded file formats documentation for Text, Layer, Bond, Light objects.
- Redesigned the Bond->Config dialog according to the new style.
- Found and removed a bug: Laue planes were not properly recognized in the reciprocal lattice (the reciprocal lattice was used, not the direct lattice), producing bogus area/node in Plane->Measure for I,F lattices.
- Solved all the Gtk difficulties related with the implementation of notebook style Helps.
- Redesigned the dialog Direction->Create according to the new style and cleaned the code. This dialog now includes many other options, similar to Plane->Create.
- Redesigned the dialog Plane->Create according to the new style and cleaned the code. This dialog now includes many other options to implement futurely, for atom-based planes, independent planes (which own copies of the atoms in the plane), ranges of family planes, etc.
- More improvements in www.gamgi.org: some pages have now the new notebook style.
- The RCP code now includes a geometric and topological neighbour analysis.
- Simplified tables and fixed the frontpage in www.gamgi.org.
- Changed all files in www.gamgi.org to new CSS and XHTML.
- Redesigned the dialogs Bond->Create and Bond->Modify according to the new style and cleaned the code.

### 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.11.12
13th March 2006
Moved everything in gamgi.org, except Documentation->Interfaces and the frontpage, to new XHTML and CSS styles, with simpler markup and much heavier use of CSS. Notebook and Menu pure CSS pages are now used. Double and triple bonds are now properly represented in both Wired and Solid modes. With few modifications (C,Si,Na...), the default color scheme used by Gabedit for atomic elements has been adopted (resulting in a much more colorful Periodic Table).

### What is new:

- Moved Documentation Tutorials to the new tab-based style.
- Apart from the Reference Manual for Interfaces, everything in www.gamgi.org should have been upgraded by now to the new XHTML and CSS, including Documentation.
- Improved double and triple solid bond design, which is closer to chemical reality. These bonds are also rendered with pre-compiled lists now.
- Gabedit has a periodic table with default colors for all elements GAMGI is now using this color scheme, with a few modifications (C green, Si yellow, Na blue, N lighter blue, S lighetr yellow).
- Double and triple bonds are now represented as double and triple lines in solid mode.
- Double and triple bonds are now represented as double and triple lines in wired mode.
- Updated documentation in www.gamgi.org: Description, Installation, Code, Manuals, Bibliography, etc. Tested CSS and XHTML validity.
- Started moving www.gamgi.org to new code, with simpler XHTML markup, better CSS and more elegant and intuitive interfaces for users. As a result, remote help support might be temporarily unreliable.
- Successfuly compiled Gamgi on Intel-based 64 bits computers running Suse Linux 10.0 x86_64. Added the configuration to make_local.

### 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.11.11
23th February 2006
Removed a couple of showstopper bugs affecting Cell->Create and Cell->Modify. The Random Close Packing is now fully working in Cell->Link. Global object linking is completed, though it is only implemented so far in Cell->Link. Fixed size settings were removed from all GAMGI dialogs, so changing fonts should be fine now.

### What is new:

- Completed global object linking, in gamgi_gtk_object_link.c, seems to be working fine. Implemented only in Cell->Link so far. Apart from objects with special needs (Atoms, Planes, Directions) it will be trivial to extend this to all the other objects.
- Improved documentation: installation requirements.
- Upgraded for the latest Mesa 6.4.2 (solves a light bug), Freetype 2.1.10 and Expat 2.0.0 releases. Everything seems to be working fine.
- With Mesa 5.0.2, a GLU sphere sets normal to (0,0,0), and needs glNormal3d (0.0, 0.0, 1.0) at draw_layer to correct the effect. Mesa 6.4.2, the last version, works fine.
- Found and removed a bug that crashed GAMGI after the RCP report was produced: the press code didn't know about the dialog change.
- Thanks to Daniel Burka, from the Silver Orange Laboratories, who created the initial version, we have now a web tabs-based template to show our Help documentation, available here.
- A single function, in gamgi_gtk_dialog.c, is now used to create all reports in GAMGI, as in Voronoi tesselation, RCP construction and point symmetry analysis.
- The RCP building algorithm is now fully working, in the Cell->Link dialog. A report dialog shows the results. Input parameters were tested and are now safely controlled.
- Removed a simple but nasty bug (thanks Pedro) that crashed GAMGI when pressing the screen with open System/Lattice/Group dialogs in Cell->Create, Cell->Modify.
- Improved static_system, static_lattice, static_group, in gamgi_gtk_cell_symmetry.c, in particular removed all fixed size settings. All dialogs in GAMGI are now size independent, so they should look fine with any font.
- Removed font and slide bar settings from the xterm command launched by the Shell button.
- Text->Create does not reset contents anymore, after creating Text objects. This is more user-friendly and is consistent with other object create dialogs, for example Cell->Create and Atom->create.
- Removed size settings for: Vectors option menus in Direction->Create and Plane->Create, Align buttons in Cell->Create and Cell->Modify, List buttons in Cell->Create and Cell->Modify.
- Found and removed a bug in gamgi_mesa_axes.c: the length of the axes was wrongly calculated. Improved the code.
- Cleaned font menu handling in gamgi_gtk_text_create.c, gamgi_gtk_text_modify.c and gamgi_gtk_text_config.c.
- Changed the static_row function in gamgi_gtk_help_tutorial.c, to avoid the bug in clist code reported below, although the bug was never found in Help->Tutorial.
- Removed size settings for: Vectors option menus in Cell->Link, Align->Translation, Align->Rotation; Plane/Direction option menus in Align->Translation, Align->Rotation; Planes button in Cell->Measure. With larger fonts, these widgets were clipping the text labels. Widget sizes should always be calculated automatically, anyway. These problems still exist on Text->Create, Text->Modify and Window top menus.
- Found and removed a nasty, old bug in gamgi_gtk_cell_symmetry, that crashed GAMGI (at least) when compiled with -O3, after pressing a List button in Cell->Create or Cell->Modify dialogs.
- Found and removed a minor, harmless bug in gamgi_mesa_text.c: height was useless.

### 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.11.10
8th February 2006
Cleaned code and redesigned the dialogs Layer->Config, Light->Config, Text->Config, Gamgi->Config, Help->Config, Window->Config. Cleaned code and improved the design for dialogs Atom->Measure, Plane->Measure and Direction->Measure. All object parsing and identification, in all dialogs, is now centralized in a small number of functions in gamgi_gtk_object.c Wrote the interface to enter data to generate RCP structures. The Cell->Link dialog was redesigned to futurely handle link of Objects but also different kinds of algorithm construction, including the RCP.

### What is new:

- Improved CSS on www.gamgi.org.
- Redesigned and cleaned the dialogs Gamgi->Config and Window->Config.
- Redesigned and cleaned the dialog Text->Config, according to the new rules.
- Moved gamgi_gtk_gamgi_* code to gtk/gamgi/ directory.
- Added Rg (Roentgenium, Z = 111), to the list of accepted atom elements in GAMGI.
- Redesigned and cleaned the dialogs Help->Config, Layer->Config and Light->Config, according to the new rules.
- Cleaned the code and improved the design of the dialogs Atom->Measure, Direction->Measure, Plane->Measure.
- Improved the Cell->Link dialog: used/unused notebook pages are now automatically shown/hidden.
- Removed menu fixed sizing and cleaned in Cell, Layer, Light, Text GTK code, to avoid problems with fonts.
- Improved gamgi_gtk_cell_link.c, to accept the RCP code.
- Replaced previous object parsing code in *modify*, *link* and *measure* GTK code by gamgi_gtk_object_number and gamgi_gtk_object_name_number calls. All object parsing is now centralized in gamgi_gtk_object.c.
- Found and removed a bug (a typo) in gamgi_gtk_cell_measure.c, causing GAMGI to crash.
- Replaced previous object parsing code in *create* and *remove* GTK code by gamgi_gtk_object_name and gamgi_gtk_object_name_number calls.
- Improved gamgi_gtk_object.c, to centralize ALL object parsing.
- Improved gamgi_engine_link.c, gamgi_engine_find.c and created gamgi_gtk_object.c, in preparation for global linking.
- Improved gamgi_gtk_cell_create.c: clicking the mouse only results in Cell creation if Align Position is disabled.
- Added gamgi_gtk_object.c, to allow centralised object recognition.

### 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.11.9
13th January 2006
Epitaxial relations and all sort of complex Cell position and orientation relations with the current Layer and other Cells are now fully working, for all types of Cells. Redesigned the object selection system, so now there is a single entry point for ALL object selection in GAMGI. The global object selection mechanism is now implemented. Redesigned the Cell->Link dialog, and added functionality to allow global Cell linking with other objects. Removed a couple of bugs in gtk code and math code.

### What is new:

- Revised gamgi_math_measure.c, to correct origin and rotation issues.
- Corrected Cell translation with a reference Layer, in gamgi_gtk_cell_align.c.
- Complex rotation and translation relations between multiple Cells and the current Layer are now working fine and can be easily established, including all sorts of epitaxial relations. Polished gamgi_gtk_cell_align.c, together with gamgi_gtk_cell_create.c and gamgi_gtk_cell_modify.c.
- Found and removed a very simple but nasty bug (a typo), just introduced in the current version, resulting in wrong Cell->Link behaviour. Checked gamgi_gtk_cell_create.c and gamgi_gtk_cell_modify.c for equivalent typos.
- Improved gamgi_gtk_cell_position.c, so second level dialogs in Cell->Create and Cell->Modify are now ready to handle translation, rotation cell alignments.
- Improved gamgi_gtk_cell_link.c, so Cell->Link is now ready to handle object, static and dynamic linking modes.
- Simplified notation in gamgi_gtk_*.c files: item instead of menu_item, menu instead of option_menu in get_data/set_data functions, button instead of toggle_button.
- Found and removed a bug in the Cell translation code: the origin translation, after a change of origin, was wrong, when rotations were involved.
- The mechanism to perform global object linking is working fine (tested in Cell->Link) and is simple and robust.
- All functions are now working with the new selection functions. Improved the gamgi_mesa_select.c layout.
- Converted gamgi_gtk_modify* and gamgi_gtk_remove* functions to new selection architecture.
- Redesigned the whole object selection architecture: there is now a single function managing the whole procedure, with a callback mechanism, making object selection code much more elegant and easier to maintain and expand.
- Gamgi is running on my IBM ThinkPad T43, with Ubuntu Breezy 5.10 (with all library dependencies compiled by myself).
- Redesigned the dialog Layer->Link, according to the new style. Started preparing global object links with this dialog.
- Added two screenshots to www.gamgi.org.
- Found and removed a bug in Cell->Modify: in three get_data calls the old name Origin was still used, instead of Translation, causing Gamgi to crash.

### 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.11.8
21th December 2005
Redesigned completely the dialogs Light->Create and Light->Modify, Layer->Create and Layer->Modify, Text->Create and Texte->Modify. Implemented all the GUI funcionality for the second level dialogs Cell->Translation and Cell->Rotation. Found and removed a Light bug affecting the Layer background color. Found and removed a bug in Cell->Modify affecting the Cell position.

### What is new:

- Implemented all the Gtk-related functionality in the dialogs Align->Translation and Align->Rotation.
- Redesigned the dialogs Text->Create and Text->Modify, according to the new style used in Cell->Create and Cell->Modify.
- Implemented Align->Translation and Align->Rotation dialogs in Cell->Create and Cell->Modify, to allow complex Cell positioning.
- Found and removed two bugs in gamgi_gtk_cell_modify: in Absolute and Relative modes, the base was the physical instead of the logical origin, leading to wrong cell positions in two cases.
- Improved error checking in gamgi_gtk_cell_modify, regarding origin node.
- Found and removed a bug: when using a light background color, this changed AFTER the first draw, when lights were created. Disabling lighting before the layer blend code solves the problem, so now the background color remains always constant.
- Improved Cell->Create and Cell->Modify dialogs, to accept level 1 dialogs, to align cell origin and orientation.
- Redesigned the dialogs Layer->Create and Light->Modify, according to the new style used in Cell->Create and Cell->Modify.
- Redesigned the dialogs Light->Create and Light->Modify, according to the new style used in Cell->Create and Cell->Modify.
- To allow users to change the language immediately, without restarting GAMGI, we are planning to store dialog labels and messages in XML files.

### 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.11.7
2nd December 2005
A fast version of the Jodrey algorithm to generate Random Close Packed Structures (RCP) has been developed and tested. The XML formats documentation has been fully updated. The word GAMGI is now a European Union Trademark.

### What is new:

- Integrated the RCP code in GAMGI: gamgi_phys_rcp.[c,h].
- A new version of the RCP code, with double lists for ranges and going only until density = 0.65, shows no improvements.
- The new implementation of the RCP Jodrey algorithm is about 7 times faster for 50,000 atoms than before.
- The word GAMGI is now a registered trademark in all 25 countries of the European Union!
- In the RCP code, cell lists should be single but range lists should be double, as data concentrates in the same range list, at end of the calculation.
- The new implementation of the RCP Jodrey algorithm is about 20 times faster than the previous version, for a 500 atom system.
- Added <float.h> to the list of primary libs included in gamgi_engine.h.
- Updated the formats documentation for all config data.
- Updated the formats documentation for all object data.
- A new version of the RCP code, separating all atoms from their pairs, shows no improvements.
- A second version of the Jodrey algorithm is now running, based on cells, about 8.5 times faster for a 500 atom system.
- Implemented the Jodrey algorithm to build a Random Close Packing (RCP) atomic glass, with periodic boundary conditions.
- Updated XML DTDs for all object and config data.
- Found and removed a bug in gamgi_phys_cell_link for Sphere and Parallelepiped Volumes, with Objects cutoff: the first node is no longer the origin, so atom coordinates were wrong.

### 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.11.6
22th October 2005
The Cell->Create and Cell->Modify dialogs are completely new, providing a simpler interface and more functionality: Cells axes and the Cell node (000) can now be easily controled using these dialogs. Crystallographic Planes and Directions in direct space can now be imported/exported to GAMGI XML files.

### What is new:

- Simplified static_apply_object in gamgi_expat_import.c.
- Direct space visual representations of Planes and Directions can now be exported/imported to GAMGI XML files.
- All the new Origin functionality is now fully available from the Cell->Modify dialog.
- Cleaned gamgi_gtk_cell_create* and gamgi_gtk_cell_modify* files.
- Found and removed a subtle bug in gamgi_gtk_cell_modify.c: enable menus before changing their order, otherwise...
- Merged gamgi_phys_wyckoff* into gamgi_phys_symmetry* files, so all arrays with crystallographic data are now in the same file.
- Renamed gamgi_gtk_cell_crystal* and gamgi_phys_crystal* as gamgi_gtk_cell_symmetry* and gamgi_phys_symmetry*, respectively.
- Redesigned the Cell->Modify dialog, as Cell->Create before, to support more Cell functionality.
- All the origin functionality is now working in the new Cell->Create dialog. This includes nodes (primitive and centered) and axes, with both primitive and conventional vectors.
- Redesigned the Dialog->Create dialog, which is now based on a notebook widget, to support more Cell functionality.

### 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.11.5
8th October 2005
Completed the reorganization of the Cell Link code, which is now simpler and can handle any origin node (000) change, making the GAMGI patterns to link nodes even more useful. These origin changes are now properly handled in reciprocal lattice transformations and the plane (hkl) indexing in the reciprocal lattice is also ready to support them (the GUI code is still lacking). New screenshots.

### What is new:

- The plane indexing for all reciprocal lattices and cell volumes, when the cell origin, node (000), is moved to any other arbitrary node (inside the cell or not), is completed and tested. This should be the last major task to adapt all the GAMGI Cell code to work with arbitrary node (000) positioning. What remains to be done is Gtk code.
- Improved quaternion identification globally.
- Improved the code handling cell origin and cell axes in gamgi_expat_import_object.c and gamgi_expat_export_object.c.
- The Reciprocal Lattice transformation now handles gracefully any change in cell origin, node (000), for all Cell lattices and volumes.
- More gamgi_phys_cell_link.c cleaning.
- Made a full backup for /home/gamgi/ at www_gamgi_org.
- Added new screenshots, from Amelia Almeida PhD thesis, showing Al-based intermetallic compounds.
- Cleaned again gamgi_phys_cell_link.c, which is now more powerful, more elegant and much simpler to maintain.
- New Cell->Link is now working for Wigner-Seitz Cell volumes.
- Updated the gamgi_phys_cell.c API, so same functions can also be used in gamgi_phys_cell_link.c code.
- Added Debian Sid/Sarge default configuration to make_local, thanks to Carlos A. Neves, Instituto de Química da Universidade de São Paulo.
- New Cell->Link is now working for R nodes in Conventional Cell volumes.
- New Cell->Link is now working for C nodes in Conventional Cell volumes.
- New Cell->Link is now working for B nodes in Conventional Cell volumes.
- New Cell->Link is now working for A nodes in Conventional Cell volumes.
- New Cell->Link is now working for I nodes in Conventional Cell volumes.
- New Cell->Link is now working for P nodes in Conventional Cell volumes.

### 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.11.4
26th September 2005
Planes and Directions can now be represented outside the Cell Volume. Removed a bug when drawing bonds. The cell origin can now be changed to any node, even outside the Cell volume. Cell axes can now be represented, with primitive or conventional vectors. Cell->Link already works with arbitrary cell origins, for Primitive, Parallelepiped, Sphere, Conventional Hexagonal Cell Volumes, allowing many more patterns to fill Cells. Most indexing work to translate planes in the reciprocal lattice, when the cell origin changes, is done.

### What is new:

- Replaced static_parallelepiped_sphere_points and static_parallelepiped_sphere_index in gamgi_phys_cell_link by common functions static_primitive_points and static_primitive_index, valid also for conventional cases.
- Removed the special (000) node position in Sphere and Parallelepiped Cell volumes. Code to create node coordinates and indexes is now simpler, but the node (000) is not necessarily the first in the array.
- Cell->Link is now working fine (including replication) when the lattice is hP and the Volume is Conventional.
- Cell->Link is now working fine (including replication) when the cell origin is moved, for Primitive volumes.
- Cell->Link is now working fine when the cell origin is moved, for Sphere and Parallelepiped volumes.
- Introduced functions gamgi_math_cell_orientation_get and gamgi_math_cell_orientation_get, so now the interface with a cell position/orientation is exclusively done through these 4 get/set (mentioned below) functions.
- Separated gamgi_math_cell_position in gamgi_math_cell_orientation_set and gamgi_math_cell_position_set, so the interface with these functions is cleaner. These functions shift the cell to the new origin node.
- The cell (000) node origin can now be changed to any other lattice, using conventional or primitive vectors coordinates. The notation 000, 110, 101, 011, 111, 211, 122 is used to indicate inner nodes in conventional cells.
- Origin axes (conventional or primitive) can now be imported and exported to GAMGI XML files.
- Developed (and tested) functions to convert nodes from conventional to primitive coordinates and vice-versa.
- Cell axes can now be represented in Conventional and Primitive vectors. The new code is used also for Layer axes. Both Cell and Layer axes are also drawn in scan mode.
- Found and removed a serious old bug affecting vertical bonds and axes: the rotation axis could be (0,0,0).
- Rewrote the code to built axes for layers and for cells.
- When the reciprocal lattice is determined, the origin should be always at (000) (users can change the origin after that).
- Found and removed a bug in gamgi_phys_plane.c: in gamgi_math_polygon_scan (), use cell_new->points instead of cell->points, as the two arrays might be different.
- Found and removed a typo (but potentially harmful) in gamgi_math_vector_translation: n3 instead of n2.
- When the Cell origin changes, Planes and Directions are represented correctly now, in direct space.
- When the Cell origin changes, properties measured from Planes in the reciprocal space are correctly calculated now.
- Planes,Directions outside the Cell volume can now be created safely (the representation is built with the 3,2 points used to define the object.
- When the Cell origin changes, the Planes in the reciprocal space are correctly identified now.

### 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.11.3
10th August 2005
Crystallographic planes and directions can now be directly visualized. Sphere and Parallelepiped volumes now have the standard default orientation and the code is much simpler. Cleaned and reorganized important sections of the crystallographic code. Found and removed a nasty memory bug that went unnoticed for years.

### What is new:

- Direct visualizations of crystallographic Planes and Directions can now be easily created, without restrictions, for all types of Cell volumes.
- Replaced Cell Rhombus by Cell Parallelepiped (the correct name) in all gamgi_phys code. Extend futurely to the whole code and documentation.
- Lots of cleaning in gamgi_phys_cell_create.c, gamgi_phys_cell.c and gamgi_phys_plane.c: more than 2000 code lines were moved away or made redundant.
- Cell->Link is working again, with the new code for Cell Rhombus and Sphere volumes.
- Rewrote all the code covering Cell Parallelepiped and Sphere volumes. This is much simpler and easier to maintain than the tricky code we had before. Moreover, now both Cell Parallelogram and Sphere volumes obey the standard orientation for conventional cells.
- Found and removed a nasty bug, that went unnoticed for years: points = cell->points was missing in functions handling centered cells in gamgi_phys_cell_create.c. It worked because points was defined just before, to the same address, and by "chance" it was still valid!
- Started cleaning all the crystallographic code. Rhombus and Sphere in reciprocal lattice are now fully working with the new code.
- Polygon functions are now reunited in the file gamgi_math_polygon.c, which helps cleaning the Cell code.
- Cell rhombus volumes are now built with the same orientation as the other cell volumes, with the conventional vectors along the main axes.
- Uncoupled the code to find nodes inside a sphere and to get the node range to search, used somewhere else. Fixed this code.
- Crystallographic directions can now be seen as segments, for all volumes and types of cells.
- Found and removed a bug in gamgi_phys_plane.c: in spherical volumes, horizontal planes as (001) produced bogus rotation matrices.
- Replaced triangle_fans by a single loop, when describing a plane by a polygon.
- Implemented a 3D version of the Graham's algorithm to build convex polygons, much simpler than our previous algorithm.

### 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.11.2
16th July 2005
Crystallographic planes can now be represented by polygons, for all volumes, with minor restrictions. The Cell orientation in a Spherical volume is now the same as for Conventional, Primitive, Wigner-Seitz cell volumes.

### What is new:

- Polygonal planes now works for spherical Cell volumes.
- Found and removed a bug: sometimes GAMGI crashes in gamgi_engine_copy_out_cluster, after modifying a Layer after using Save several times after various Voronoi tesselations. Reason: n_paints was not copied.
- Polygonal planes now support cell rotations and translations, before and after plane creation.
- Polygonal planes are now working, still with shortcomings.
- The code to get a direct, polygonal, representation of a plane is partly written and seems to work fine.
- Replaced large and complex static_sphere code in gamgi_phys_cell_create.c, gamgi_phys_cell_link.c and gamgi_phys_plane.c by small, simple and slightly slower code (not critical, as these functions run only once when creating, linking or measuring cells). Moreover, the node orientation in Sphere volume is now the same as for Conventional, Primitive and Wigner-Seitz volumes.

### 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.
- Improve Move and Rotate interactive usability.
- 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.
- Review the entire GAMGI code, file by file.

GAMGI 0.11.1
4th July 2005
Crystallographic planes are now working fine in the reciprocal space, for all Bravais lattices and cell volumes. Corrected several errors in the Rhombus cell volume code.

### What is new:

- The planes in the reciprocal lattice are now rotating and translating fine.
- The atom-plane and atom-direction for crystallographic planes and directions are now measured from the atom to the cell origin.
- All the plane properties are now measured correctly when the plane is directly linked to its reciprocal space cell.
- The distance per node now measures the real distance, when the direction indices are multiple.
- Redesigned the code to get hkl (reciprocal space) and uvw (direct space) vectors in cells and cleaned code accordingly: gamgi_math_measure.c and gamgi_mesa_rotate_out.c.
- Found and removed a bug in the Cell Link code for Rhombus volumes: the y node coordinates can be negative, when cells have angles larger than 90 degrees.
- Found and removed a bug in the Cell Create code for Rhombus volumes: node positions were not correctly generated.
- Found and removed a bug in the Cell Link code for Rhombus volumes: the length increases for the outer cell were wrong.
- Determined the plane positions for all lattices and volumes in the reciprocal space.
- Determined the plane indices for all lattices and volumes in the reciprocal space.
- Planes can now be automatically added to reciprocal space lattices.
- Cleaned the toolbar,statusbar color code in gamgi_gtk_window.c and gamgi_gtk_statusbar.c.
- The statusbar now shows accumulated Rotate,Move,Scale actions done with the ruler.
- Rotate,Move,Scale ruler parameters can now be imported.
- Rotate,Move,Scale ruler parameters can now be exported.
- Cleaned gamgi_gtk_statusbar.c.
- Added file_import.html and file_export.html documentation files to Help->Current and Help->Topic.
- The ruler now supports accurate, step-by-step incremental values, for Rotate, Move and Scale.
- Added the Window->Config dialog, to set the max,step parameters needed to improve the rotate,move,scale ruler functionality.

### 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.
- Improve Move and Rotate interactive usability.
- 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.
- Review the entire GAMGI code, file by file.

GAMGI old
Changelogs for older releases can be found here.

- 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