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.
Changelogs for older releases can be found here.