GAMGI Changelogs: GAMGI 0.08

GAMGI 0.09
11th December 2002
Enough is enough, here it is, GAMGI 0.09! Improvements from previous version are mainly in the usability front. Time to start completely new code!

### What is new:

- Configuration data modified in <gamgi><gamgi/> blocks can now be reset further down in other <gamgi><gamgi/> blocks. This is quite usefull when users want to temporarily change default parameters, and then return to the previous values (without having to specifically set them).
- Clarified a long standing visual bug in the wired bond drawing code. Finding a solution is easy, finding the best solution is more difficult.
- Added minimum width and height parameters in window configuration (default width and height parameters were already there).
- Added a correction factor to make layer transitions from perspective to orthographic projections and vice-versa as smooth as possible, which means objects should have approximately the same size in both projections.
- Copied the most recent manual and format documentation, plus faqs and changelogs, to $GAMGI/doc. In particular, the full Users Manual is now linked directly to Help->Current and Help->Tutorial in GAMGI, though it is in HTML and GAMGI currently handles it as raw text only, so it takes a bit to find the actual info among the HTML garbage ;-).
- Cleaned gamgi_global_main.c and added gamgi_global_main.h for consistency and documentation purposes.
- Updated the screenshots formats, so they can now be handled by most browsers and operating systems.

### What is next:

- Write the Technical Description, in www.gamgi.org. with sections Libraries, Style and Architecture.
- Write the Cell Link section of the GAMGI users manual, in www.gamgi.org.
- Write the Attributes section of the GML users manual, in www.gamgi.org.

GAMGI 0.08.30
8th December 2002
Variable rendering attributes are implemented. A problem solved and a bug removed. More documentation available from http://www.gamgi.org/.

### What is new:

- Solved a problem with the positional code (involving the Euler angles) in gtk_cell_modify.
- Added Fasttrack web page to http://www.gamgi.org/
- Added FAQs web pages to http://www.gamgi.org/
- Added Coders Bibliography web page to http://www.gamgi.org/
- I decided to change the entire website to XHTML 1.0 in the next couple of months, to take profit of Cascading Style Sheets (CSS) and to make it easier to parse these HTML files using XML tools.
- Added Formats web pages to http://www.gamgi.org/. These pages are a first draft of the documentation that we aim to write, describing the XML native format used in GAMGI to handle both object and configuration data.
- Found and removed a bug in the bond_scan code, introduced in the previous version.
- Added variable width and slices to render atoms and bonds, this way allowing users to change on the fly the rendering quality (and speed) when handling atoms and bonds. Before, this could be done only at compile time.

### What is next:

- Improve Help availability.
- Write the Technical Description, in www.gamgi.org. with sections Libraries, Style and Architecture.
- Write the Cell Link section of the GAMGI users manual, in www.gamgi.org.
- Write the Attributes section of the GML users manual, in www.gamgi.org.
- Clean code, add more comments, in preparation for GAMGI 0.09.
- Improve layer usage consistency.
- Add defaults to <gamgi><gamgi/> blocks.

GAMGI 0.08.29
15th November 2002
Variable atom spheres and bond cylinders are implemented, so the only thing that needs to be done before stamping the oficial GAMGI 0.09 version is to improve documentation.

### What is new:

- A consistency problem related with rotation and translation in cell_create and cell_modify was removed.
- engine_remove_soft functions were removed and replaced by engine_link_list functions, allowing much more flexibility but with the same goal: allow users to link objects to the parent of the current parent (typically before this is removed).
- changed functions names: engine_copy -> engine_copy_out, engine_copy_hard -> engine_copy, engine_remove ->remove_out and engine_remove_hard -> engine_remove.
- added functions mesa_rotate_out and mesa_translate_out and solved the consistency problem mentioned above.
- Variable atom and bond size is now working and can be modified importing apropriate XML GAMGI files. This is fundamental to show compact cristalline structures.
- Moved About from the Help to the Gamgi menu.

### What is next:

- Improve Help availability.
- Write the Technical Description, in www.gamgi.org. with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Clean code, add more comments, in preparation for GAMGI 0.09.
- Improve layer usage consistency.

GAMGI 0.08.28
10th November 2002
Cell Link for Conventional Hexagonal Cells is now working fine, so Cell Link is basically done. GAMGI 0.09 is now very close.

### What is new:

- Cell Link for Conventional Hexagonal Cells is now working fine.
- The Extended Cutoff mode in Cell Link should be working fine now for all cells: in this mode, outside nodes and filtering are both turned off.
- We now work with negative object coordinates in primitive axes (except Wigner-Seitz cells, where coordinates must be positive), to avoid round-off error problems.
- Conventional volumes for Hexagonal lattices are working fine again for all FACES and BORDER options (this was broken in the previous release, in order to change the cell origin).
- A bug was found and corrected in gtk_atom_create.c and gtk_atom_modify.c. The element testing in gtk_atom_create.c, gtk_atom_modify.c, and gtk_bond_create.c is now much cleaner.
- An elegant, user-friendly, solution for the question of variable sphere radius in atoms was devised. We will take this as a general configuration option, so users can decide which method to use and can change it anytime they want, either through the control panel (not implemented yet) or importing XML GAMGI files (implemented). The only disadvantage of this solution is that users will not be allowed to choose this in a atom-by-atom or layer-by-layer basis, the change is global, for all atoms of the same style. Different styles (solid versus wired) have independent choices. Anyway, if one day we decide to do this on a atom-by-atom basis, it will be easy to change.
- Improvements in the Shell tool.

### What is next:

- Implement variable sphere radius.
- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Clean code, add more comments, in preparation for GAMGI 0.09.
- Add ftp support to download remote files.

GAMGI 0.08.27
28th October 2002
GAMGI is running fine on Mac OS X. Cell Link is now working fine for Rhombus, Sphere, and Conventional Centered Cells. Work in Cell Link for Conventional Hexagonal Cells is evolving well and should be solved for next version.

### What is new:

- Back to GAMGI! The problem in Cell Link regarding how to generate the contributions of the nodes that are outside the cell has been solved, by creating a second, auxiliary, cell, that surrounds the real one. This problem occurred in all Centered Lattices in Conventional Volumes, in Rhombus and Spheres volumes.
- An algorithm to handle Cell Link for Conventional Hexagonal Cells has been partly implemented.
- The origin of Conventional Hexagonal Cells was moved from the center to the lower corner, because that is the right choice: 1) the origin is the same as in other volumes; 2) the pattern rules algorithm works in a logical and simple way with this choice. As a result, the code to remove loops and lines is temporarly broken. It will be working again in the next version.
- large file names should be handled in a safe way now. Limits for names in XML documents were increased.
- GAMGI is now running on Mac OS X too, with the X Window System (XFree86), thanks to the Fink project!
- The socket programming code to fetch a http server is also running fine on the Mac OS X version.
- swaped the order of the app and lib headers, so the app headers appear first. This is because the app headers already contain the global lib headers, which might be needed to the other local lib headers (the socket code was not compiling in Mac OS X because of this).
- removed a minor ANSI incorrection in the help tutorial code.

### What is next:

- Work out link functionality for Hexagonal Conventional cell.
- Use variable sphere radius.
- Write the Technical Description, in www.gamgi.org. with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add ftp support to download remote files.
- Clean code, in preparation for GAMGI 0.09.

GAMGI 0.08.26
17th July 2002
Help Current, Help Topic, Help Search, Help Tutorial and Help Remote functionality is implemented and working fine.

### What is new:

- Help Current, Help Topic, Help Search, Help Tutorial and Help Remote functionality is implemented and working fine. This first version works with .txt files. Futurely we will change to .xml help files, to allow for more powerfull text formating and presentation. This shouldn't be much of a change, as GAMGI data and config files are already .xml files.
- Help About has been added.
- An Algorithm to add link functionality for Hexagonal lattices with Conventional cell volumes has been partly worked out.

### What is next:

- Build container cell to link nodes correctly in PACKED mode.
- Work out link functionality for Hexagonal Conventional cell.
- Use variable sphere radius.
- Write the Technical Description, in www.gamgi.org. with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add ftp support to download remote files.
- Clean code, in preparation for GAMGI 0.09.

GAMGI 0.08.25
9th July 2002
Laboratory, conventional and primitive axes can now be indicated for all the 5 cell volumes allowed in GAMGI.

### What is new:

- Cells are now centered using only the nodes. This is faster and should always work well, but the main reason is stability: this guarantees that the cell center doesn't change when atoms and other child objects are added to assymetrical positions.
- Laboratory (plus Conventional and Primitive) referentials are now supported in Cell Link, to set the position of the linked object.
- gamgi_phys_cell_link was much improved, and already supports all the 5 cell volumes. In particular, automatic conversion between coordinates in different referentials is working now, for all possible cases.
- The PACKED mode needs improvements, because nodes outside can also contribute to the cell contents, for all 5 volume representations. The problem is solved conceptually but this has not been implemented yet.
- Cleaned gamgi_gtk_dialog and added support for beep configuration.
- Added support for mouse configuration.
- Added support for undo/save number of levels configuration.

### What is next:

- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add ftp support to download remote files.
- Clean code, in preparation for GAMGI 0.09.

GAMGI 0.08.24
23th June 2002
This is the first version where structural cells can be easily made from atoms. From here to version 0.09 is mostly cleaning code and writing documentation.

### What is new:

- Parent objects in GML files, indicated with id references must now be in the scope determined by the child container. The algorithm seems to be consistent in all cases, and makes object hierarchy flexible enough, without allowing the type of file anarchy that was previously possible, where objects could point to parents anywhere, even in different files, a potentially hazardous and silly situation.
- Element names are now searched using a hash table. The table has 127 positions, thus some are empty, but in compensation it is guaranteed that each hash list has no more than 2 element names. This speeds up element name search for large amounts of data (large files).
- atoms can now be linked to cells in any position, by indicating its coordinates relatively to either the conventional or primitive vectors. This works for all cell volumes supported by GAMGI. This is a first step to general origin and orientation functionality, which will be done later, when container objects are better handled. Adding objects in the laboratory referential will be done later as well.
- Atoms whose coordinates fall outside of the chosen cell volume are filtered out, if users whish so. This is working for all cell volumes supported by GAMGI except Wigner-Seitz cells. ;-)
- A bug was found and corrected in engine_cell_copy: conventional and primitive vectors were not copied, thus the undo mechanism was compromised.
- A bug was found and corrected in phys_cell_link: The node start and end indexes were not correct for F lattices.
- A bug was found and corrected in math_matrix_inverse: The determinant was multiplying instead of dividing ;-)
- Implement algorithm to import bonds automatically, in GML files, using Element and Voronoi methods, providing all the functionality currently available from the GUI: postponed. We should find a better, integrated, solution for non-static, algorithmic information, as this, probably by using the log files, where commands, rather than data, are stored.

### What is next:

- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add ftp support to download remote files.
- Clean code, in preparation for GAMGI 0.09.

GAMGI 0.08.23
6th June 2002
GAMGI is now running on Mac hardware. The rules and (the code) to import bonds are now more solid and elegant.

### What is new:

- GAMGI is now running on Mac hardware: Linux Yellow Dog 2.2 on G4 Titanium 550.
- Very serious bugs corrected: 4 dangling pointers (causing GAMGI to crash on the Mac) found and corrected.
- A minor warning on the socket code was also corrected.
- A 1-line check was added to prevent GAMGI from crashing on KDE, where WINDOWID is not defined.
- The warning about WINDOWID absence was also removed.
- gdk_window_set_decorations was reintroduced to handle WM decorations in Escape and Page_Up/Page_Down actions (and then removed again, see below).
- gamgi_engine_find_parent is buggy, a better algorithm is in the way: corrected.
- minor sound details on selection corrected.
- Expat: the way objects point to parents has changed when the parent is not explicitly indicated, allowing a simpler, more solid hierarchy. Among other advantages, this makes possible to use a single find routine to check common parents under a given scope in both import and export XML operations. In particular this makes completly impossible, by design, to create bonds between atoms that are not in the same layer or even window, for example, which was not tested before and therefore made possible.
- Expat: The algorithm to import bonds is now simpler, more elegant, and definitely much more solid, because bonds between atoms out of scope are not tolerated anymore. Speed should be just slightly slower, nothing really dramatic. These changes in the inner core of our XML import code are not systematically tested yet, so a few corrections might be needed and added in the next few days, when more systematic checking will take place.
- Regarding window manager environments, the situation on Yellow Dog 2.2 (should be the same on Red Hat 7.2) is the following:
  - No environment implements a BROWSER variable anymore. This might be quite reasonable, but in practise it means that users must now set this variable to their prefered browser, if they wish to use Help->Remote in GAMGI.
  - Enlightenment: fullscreen mode works, even without set_decorations, WINDOWID is defined, and console button works.
  - Window Maker: fullscreen mode works only after hiding, set_decorations and show again. Without set_decorations everyting is hidden except the window bar. WINDOWID is defined and console button works.
  - twm: fullscreen mode does not work, even after hiding, set_decorations and show again (the window bar is not hidden). Without set_decorations everyting is hidden except the window bar. WINDOWID is defined and console button works.
  - Gnome (Sawfish): fullscreen mode does not work, even after hiding, set_decorations and show again (the window bar is not hidden). Without set_decorations everyting is hidden except the window bar. WINDOWID is defined but console button does not work.
  - KDE (kwm): fullscreen mode does not work, even after hiding, set_decorations and show again (the task bar is not hidden). Without set_decorations everyting is hidden except the window bar and the task bar. WINDOWID is not defined so console button does not work and is now hidden by GAMGI without warning.
  - Enlightement is currently the WM that best works with GAMGI, and the only tested so far where all the GAMGI functionality is available.

### What is next:

- Add automatic bonding in GML input files.
- Implement code to set the coordinates of objects in cells relatively to nodes, for various types of referentials, namely conventional and primitive vectors.
- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add ftp support to download remote files.

GAMGI 0.08.22
24th May 2002
This the first version that exports bonds (and then imports correctly the exported file).

### What is new:

- Bonds are now exported to native XML files in a solid and fast way. GAMGI is able to import the previously exported bonds, closing the cycle.
- Code cleaning: this is the first version that compiles with -Wall -ansi -pedantic options without warnings due to GAMGI code.

### What is next:

- Handle bond importing in a better way.
- Add automatic bonding in GML input files.
- Implement code to set the coordinates of objects in cells relatively to nodes, for various types of referentials, namely conventional and primitive vectors.
- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add ftp support to download remote files.

GAMGI 0.08.21
18th May 2002
GAMGI now works also with 16 color bits. The work to link objects to cell nodes using occupancy rules is completed.

### What is new:

- Object selection now works with 16 color bits per pixel (plus 24 and 32 as before), making it easier to use GAMGI on partly supported graphic cards and older hardware.
- Cleaned the code handling rotate, move and scale operations.
- Implemented Light modification with the mouse.
- Added A, B, C and I nodes to the Cell Linking functionality. This completes the work related with nodes occupancy rules.
- Improved the HTML online version of the users manual.

### What is next:

- Add automatic bonding in GML input files.
- Handle bond importing and exporting in a clever way.
- Implement code to set the coordinates of objects in cells relatively to nodes, for various types of referentials, namely conventional and primitive vectors.
- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add ftp support to download remote files.

GAMGI 0.08.20
1st May 2002
Picking local objects is completed and name search in XML files should be much faster now, for large data files, thanks to an optimized hash table.

### What is new:

- Name search in XML input files now uses a a hash table, where the size and the multiplier can be independently controled and optimized. This is much faster for large input files and marginally slower for small input files (where speed is not an issue anyway).
- Objects without visual representation (layers, lights, windows, the whole gamgi), and all the recursive objects (texts, groups, clusters and assemblies), can now be selected and changed in a consistent and simple way with the mouse, as done before for non-recursive objects with a visual representation (atoms, bonds, molecules, cells, etc.).
- Corrected a minor error when exporting layer modelview data.
- The name of http://files is properly checked when launched from the command line.
- Closes the default window when more windows are launched from files imported from the command line.

### What is next:

- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add automatic bonding in GML input files.
- Handle bond importing and exporting in a clever way.

GAMGI 0.08.19
24th April 2002
GAMGI can now read XML data and config files from any HTTP web server.

### What is new:

- GAMGI can now load XML files from any HTTP server in the world, which will be usefull to create online resource databases. For example, gamgi local_file.xml http://hostname/remote_file.xml, launches GAMGI, then loads local_file.xml and then loads remote_file.xml from hostname HHTP server.
- The sections Group Measure and Group Modify of the User Manual are written.
- The sections Cell Modify, Light Modify and Layer Modify of the User Manual are written, although information about inconsistent parameters when changing cells and lights is still missing.

### What is next:

- Add ftp support to download remote files.
- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Handle pattern rules for Conventional cell volumes.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add automatic bonding in GML input files.
- Handle bond importing and exporting in a clever way.
- Keep cleaning gamgi_chem and gamgi_mesa.

GAMGI 0.08.18
7th April 2002
No code changes, a draft of the Users Manual is available, covering more than 50% of current GAMGI functionality.

### What is new:

- The Users Manual draft covers the general interface, interactivity, and functionality, plus how to create, modify and remove bonds and atoms, how to create and remove cells, lights and layers, plus similar information for objects that are not fully operational as groups, molecules, clusters and assemblies (about 58 pg in the postscript version).
- The Scientific, Legal, Contributors sections in the Description part in www.gamgi.org are available.
- The Mailing Lists and Links sections in the Contacts part in www.gamgi.org are available.

### What is next:

- Write the sections Group Measure, Group Modify, Cell Modify, Light Modify, Layer Modify of the Users Manual draft.
- Write the Technical Description, in www.gamgi.org, with sections Mission and Libraries.
- Prepare FAQs, screenshots, etc.
- Handle pattern rules for Conventional cell volumes.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add automatic bonding in GML input files.
- Handle bond importing and exporting in a clever way.
- Keep cleaning gamgi_chem and gamgi_mesa.

GAMGI 0.08.17
11th February 2002
The pattern rules governing node occupancy seem to be working fine now for Primitive, Wigner-Seitz, Rhombus and Sphere cell volumes.

### What is new:

- Added code to link atoms to cells, basically to test the pattern rules and the visual scale.
- The pattern rules governing node occupancy were cleaned, simplified, some bugs were removed, and were reasonably tested. They seem to be working fine now for Primitive, Wigner-Seitz, Rhombus and Sphere cell volumes.
- The gamgi directory tree is now divided in src, data and docs.
- Started adding data in GAMGI XML format: fancy molecules, cells, lights, atom and bond config, etc.
- Minor corrections on gamgi_expat_* files.
- Started writing FAQs for Users Introduction and Troubleshooting.

### What is next:

- Handle pattern rules for Conventional cell volumes.
- Write code to read from files to GtkText widgets in Help dialogs.
- Write FAQs for: Users and Coders, Introduction and Troubleshooting.
- Add automatic bonding in GML input files.
- Handle bond importing and exporting in a clever way.
- Keep cleaning gamgi_chem and gamgi_mesa.

GAMGI 0.08.16
29th January 2002
The basic infra-structure to import and export data and config XML files is done.

### What is new:

- Completed the design and implementation of the XML import config algorithms, for all objects.
- Added import config parameters for atoms and bonds. Default masses, radius, colors, different ways of dealing with default bond limits, default drawing style, etc., can now be changed directly throughout GAMGI importing config XML files.
- Fine tuned syncronisation between import and export files.
- Added Help Search and Help Tutorial interfaces and basic working.

### What is next:

- Write code to read from files to GtkText widgets in Help dialogs.
- Keep developing gtk_cell_link.
- Add automatic bonding in GML input files.
- Handle bond importing and exporting in a clever way.
- Keep cleaning gamgi_chem and gamgi_mesa.

GAMGI 0.08.15
23th January 2002
Work to export and import XML files with data and config info continues. A free program that determines all point symmetry groups is working fine here. This is the first GAMGI release to pass the 80,000 LOC barrier.

### What is new:

- Layer, Light and Cell objects can now be properly exported (but not Bonds yet, though).
- A Import Cell parameter bug corrected.
- Infrastructure to export configuration added.
- Many small changes on gamgi_global* functions, to allow import config to work correctly, even in a multithreading environment.
- Configurable bond range data added.
- Minor work on gamgi.org site.
- Last but not the least, a free program called Symmetry, developed by Dr. Serguei Patchkovskii, is able to determine all point symmetry groups, using brute force, and is running fine here, passing the tests supplied for all groups (about 2,000 lines of C code)! Serguei specifically allowed us to integrate Symmetry on GAMGI (actually another GPL program is already using Symmetry). Definitely great news!

### What is next:

- Add code to import configuration info from XML files, as done already for data info. This will increase considerably GAMGI usability.
- Add code to export configuration info from XML files, as done already for data info.
- Write code to read from files to GtkText widgets in Help dialogs.
- Keep developing gtk_cell_link.
- Add automatic bonding in GML input files.
- Keep cleaning gamgi_chem and gamgi_mesa.

GAMGI 0.08.14
14th January 2002
Added code to export GAMGI data to XML files.

### What is new:

- GAMGI can now be called from the command line with unlimited XML input files as arguments.
- Help Search added. It will look for keywords, such as GAMGI labels.
- More work on Help Topic and Help Current.
- Makefile cleanups.
- gamgi_expat_export* and gamgi_expat_export_data* already contain the infra-structure required to export all sorts of data info (except bonds) to XML files.
- Started writing on gamgi_expat_export_config.

### What is next:

- Add code to import configuration info from XML files, as done already for data info.
- Add code to export configuration info from XML files, as done already for data info.
- Write code to read from files to GtkText widgets in Help dialogs.
- Keep developing gtk_cell_link.
- Add automatic bonding in GML input files.
- Keep cleaning gamgi_chem and gamgi_mesa.

GAMGI 0.08.13
3th January 2002
Added picking for recursive objects, lots of cleaning, slashed 3 bugs, including the top-dog. :-)

### What is new:

- picking recursive objects on the screen is now fully consistent and easy to use, picking always the child, then going up, and finally using a pop menu (as in layers and lights).
- Removing cluster, assembly and group objects is now working, even when recursion happens (local mode only).
- Lots of cleaning on gamgi_mesa* functions, particularly regarding *gtk-*_press functions.
- More engine_* and gtk_* cleaning.
- The long-time diffuse light bug was eventually tracked down to a Mesa bug. Workarounds are in place and soon this will be gone.
- A memory corruption bug was found and corrected: when removing recursive objects as text, group, cluster and assembly, some list addressing was done incorrectly.
- ModelView and Projection Matrixes, used to put atoms on the 3D space, were obtained in the wrong place, resulting in wrong positioning when the layer scale was different from the default value (1.0).

### What is next:

- Write code to read from files to GtkText widgets in Help dialogs.
- Add code to handle configuration information from XML files, as done already for data information.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add automatic bonding in GML input files.
- Keep cleaning gamgi_chem and gamgi_mesa.

GAMGI 0.08.12
13th Dezembro 2002
Added functionality for creating, linking and removing containers (assembly, cluster, molecule, group).

### What is new:

- Added gtk_assembly_create*, gtk_assembly_link*, gtk_assembly_remove*
- Added gtk_cluster_create*, gtk_cluster_link*, gtk_cluster_remove*
- Added gtk_molecule_create*, gtk_molecule_link*, gtk_molecule_remove*
- Added gtk_group_create*, gtk_group_link*, gtk_group_remove*
- Implemented a first version of Help Remote (currently just pointing out to www.gamgi.org).
- Fixed a mem leak and cleaned the code for the combo box in gtk_bond_create/modify*.
- GtkCTrees are now added directly using container_add, instead of using viewport as before, so it can handle 10,0000 objects correctly now.

### What is next:

- Write code to read from files to GtkText widgets in Help dialogs.
- Add automatic bonding in GML input files.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_chem and gamgi_mesa code.

GAMGI 0.08.11
The infrastructure to allocate configuration data has been created, so configuration data can now be changed at run time, instead of compile time, as before.

### What is new:

- gamgi_global_start*, and gamgi_global_end* functions added, to add and remove default configuration data.
- gamgi_chem_atom_start* functions added, to initialise configuration atomic data used by GAMGI, as masses, radius and colors.
- Configuration data is now taken from gamgi->object_class structures, instead of directly from #define statements as before.
- Demo1 and Demo2 removed.

### What is next:

- Write code to read from files to GtkText widgets in Help dialogs.
- Implement a first version of Help Remote.
- Add automatic bonding in GML input files.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_chem and gamgi_mesa code.

GAMGI 0.08.10
Replaced GtkTree by GtkCTree widgets everwhere in GAMGI. Common mechanism for Current Help and Topic Help in place.

### What is new:

- GtkTree widgets used in Select dialogs were all ported to GtkCTree.
- Atom colors are float again, before they were unsigned short.
- math_convert functions were removed, after general cleaning.
- gamgi_gtk_time_show function activated again in gamgi_gtk_window_create.
- Common Help handling for Help Current and Help Topic is now in place.
- gamgi_expat_data* and gamgi_mesa_start* cleaning (when possible, set defaults before reading gml files).

### What is next:

- Write code to read from files to GtkText widgets in Help dialogs.
- Implement a first version of Help Remote.
- Add automatic bonding in GML input files.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_chem and gamgi_mesa code.

GAMGI 0.08.9
It's Help season down here.

### What is new:

- The Help Topic dialog is implemented, first using GtkTree and later using GtkCTree (better).
- The Help Current dialog is just started.

### What is next:

- Develop Help Current, and the actual infra-structure to build Help dialogs, with GtkText.
- Implement a first version of Help Remote.
- Port GtkTrees to GtkCTrees in Object Select dialogs.
- Add automatic bonding in GML input files.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_chem and gamgi_mesa code.

GAMGI 0.08.8
All object parameters handled in GUI mode can now be handled in standalone (XML) mode. Trees in Select dialogs are correct again.

### What is new:

- I decided to improve/develop the mechanisms involving GtkTree and GtkText widgets in GTK 1.2, instead of waiting for GTK 2.0.
- All object parameters that could be defined so far in GUI mode, can now be defined also in standalone mode, importing XML files.
- New tests, empty and resources, were added to handle layers in windows and exceeded number of lights.
- New gamgi_mesa_start_* functions were added to allow clean definition of default parameters, particularly for new window and layer objects, defined from XML files and also from the GUI.
- window_create*, gamgi_bottom_* and gamgi_reset* functions slightly changed to accomodate the new way to enter windows, layers and the mesa_start functions above.
- The action enumeration was extended to include all select dialogs, plus import and export file dialogs.
- The object trees in the select dialogs are working again (the old way to calculate each top tree was incorrect since the history mechanism was added, 11 months ago).
- gamgi_engine_dlist_bond_* functions were changed to list objects in the right order (go from last object to first one, to compensate the stack effect).
- New gamgi_engine_dlist_bond_* functions were added to handle the top tree in bond select dialogs.
- The archive file to download, containing the GAMGI source code, is now better organised, including not just source code and related files.

### What is next:

- Add automatic bonding in GML input files.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_chem and gamgi_mesa code.

GAMGI 0.08.7
Code to read external files (even recursively) and globally address every kind of GAMGI object is now implemented in the code importing XML files.

### What is new:

- Recursive XML External General Entities are implemented and tested.
- Global linking using id/idref addressing was extended to all objects (not only bonds).
- Error messages were considerably improved, always reporting the line number and file name of the file where the offending object starts.
- The DTDs defining GML were divided in three files: gamgi.dtd, the main one, that essentially calls gamgi_data.dtd, that describes data information, and gamgi_config.dtd, that describes config information.

### What is next:

- Add automatic bonding in GML input files.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_chem and gamgi_mesa code.

GAMGI 0.08.6
Almost all the infra structure required to read GAMGI native XML files is now in place.

### What is new:

- A solid method to handle global tests involving incompatible and missing parameters is in place.
- Global bonds are implemented, using global id and idref identifiers.
- real and integer io_token functions were replaced by float/double and int/long functions. This makes GAMGI more robust and avoids subtle but potentially serious memory corruption.

### What is next:

- Implement XML external general entities.
- Update the DTD defining GML: gamgi.dtd.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_chem and gamgi_mesa code.

GAMGI 0.08.5
Lots of progress in the XML front.

### What is new:

- data and configuration information can now be freely mixed in input/output files with GML (GAMGI Markup Language) format.
- The overall architecture and lay-out for the gml parser is now (mostly) settled down.
- Code to import and check data is mostly in place, except bonds.
- XML internal general entities are working.
- Tests and Errors for most cases are in place, including file open and read errors, XML parsing errors, unknown elements and attributes, wrong attribute values, wrong root element, wrong DTD, wrong public identifier and wrong child object.
- The gamgi object is again created and removed dynamically, when GAMGI starts and ends (as in GAMGI 0.0.1), instead of statically, as before.
- The last references to system disappeared from GAMGI code, replaced by gamgi. This avoids confusion with the system standard function and reinforces the concept of the whole program as a singleton, global, object, called gamgi.
- Improvements on gamgi_io_token.c.
- Descontinued some type definitions, to simplify things.

### What is next:

- Complete code to import data and configuration XML files that follow the GML rules.
- Implement XML external general entities.
- Update the DTD defining GML: gamgi.dtd.
- Write code to export data and configuration XML files that follow the GML rules.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_mesa code.

GAMGI 0.08.4
XML configuration files are mostly implemented and tested.

### What is new:

- GAMGI data and config files specifications, gamgi_data.dtd and gamgi_config.dtd, were improved. A default gamgi_config.xml configuration file was written.
- GAMGI can now read almost all the information that should be required in the XML-based configuration files, thanks to the expat library.
- The global information, in the gamgi structure, is now in a separate header, gamgi_global.h, in the global directory, together with gamgi_global_main.c.
- New functions added to gamgi_io_token.c.
- makefiles were considerably simplified.

### What is next:

- Start working on gamgi_expat_import_data.
- Keep developing gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_mesa code.

GAMGI 0.08.3
The cell rules algorithm was extended to rhombus and sphere modes. XML DTDs for GAMGI data and configuration files were specified.

### What is new:

- The algorithm to fill cell nodes according to rules is now working for rhombus sphere modes. Thus all volume modes are now supported.
- XML document data type specifications (DTDs) for GAMGI data and config files have been developed: gamgi_data.dtd and gamgi_config.dtd.
- This is the first GAMGI version with gamgi_expat* functions integrated in the GAMGI code.
- makefiles were cleaned.

### What is next:

- Write code to read XML config files and apply to GAMGI defaults.
- Develop gtk_cell_link.
- Add more documentation: comments, headers, etc.
- Clean gamgi_mesa code.

GAMGI 0.08.2
The algorithm to fill cell nodes according to rules is done. Work on the XML stuff has started. A small leap...

### What is new:

- The EXPAT library was choosen to parse GAMGI XML files. Needless to say, this is a long term decision. EXPAT is a non-validating SAX-type parser, that powers Mozilla and Perl, among other high-profile projects. EXPAT was written in C, by James Clark, the main force pushing the XML technical comitee. EXPAT is widely considered as the fastest XML parser available so far and is distributed with a MIT license. It is simple, fast, free and written in pure C. Exactly what the doctor said.
- Started working on a DTD for GAMGI.
- The algorithm to add or remove objects to cell nodes according to flexible filling rules is now implemented and apparently working well. A working gtk_cell_link is now just a matter of time. It is not done for Rhombus and Sphere volumes though.
- More code cleaning.

### What is next:

- Add more documentation: comments, headers, etc.
- Clean gamgi_mesa code.
- Develop gtk_cell_link.
- Work on the XML stuff.

GAMGI 0.08.1
Data improvements. Bugs removed. Started gtk_cell_link.

### What is new:

- All enumerations and definitions now have a second prefix indicating the source directory where they are declared.
- Handling press_key_event signals was corrected, so now they work well with the command entry in the tools section.
- i) dialog box actions, ii) pick selections and iii) rotate, move, scale tool operations are now 3 totally independent operations and work well together.
- gtk_cell_link was started.

### What is next:

- Add documentation.
- Finish cleaning code.
- Continue writting gtk_cell_link.
- Start working on XML support.

GAMGI old
Changelogs for older releases can be found here.

- GAMGI 0.07.18 - GAMGI 0.08

Home