Completed the conversion from chemical to crystallographic
point groups of symmetry, thus ending the 0.10 series.
Major achievements in this series: implemented the 230 space groups
of symmetry, 3D extruded Truetype fonts, reciprocal lattice,
stereographic projection, radical Voronoi tesselation, conversion
from chemical to crystallographic point symmetry.
What is new:
- Cleaned the m,C2 sort functions in gamgi_chem_symmetry.c.
- When the point group is Undefined, in Periodic (restricted) mode,
the elements with impossible rotation orders (not 6, 4, 3, 2) are
now discarded. All other elements are shown (even if they are
notoriously incompatible with periodicity, as for example too many
mirror planes).
- Updated Molecule->Measure and Molecule->Measure->Symmetry
Help documentation, regarding chemical and crystallographic point
groups.
- Converted chemical Ih,I to crystallographic Th,T point groups:
there are 5 sets of axes/planes to choose from when converting
icosahedral to cubic groups.
- Cleaned the code to convert chemical to
crystallographic point groups, except I,Ih groups.
- Removed an error when converting Dnd chemical to
crystallographic point groups: C2h exists when n is
odd and D2 exists when n is even.
- Converted Dnd chemical groups to Crystallographic
Dnd, C6v, C4v, C3v, D6, D4, D3, S6, S4, Ci, Cs and Ci.
- Redesigned the chemical to crystallographic conversion
code. It is much simpler, solid and easier to maintain, now.
- Added Reduced International notation to identify point
groups when applying crystallographic restrictions.
- Added code to sort m, C2 elements oriented along the main
direction.
- Added T, Th, Oh building routines (to convert I, Ih, Kh
chemical groups).
- Chemical or Crystallographic point symmetry can now be selected
in the Molecule->Measure dialog.
- More cleaning in the code converting chemical to crystallographic
point groups.
- Converted chemical Dnh and Cnh to crystallographic (Dnh, C2v) and
(Cnh, Cs) point groups, respectively. Tested against structures with
higher rotation orders, written automatically, such as D30h and C30h.
Added the XML files and the building utility to dat/.
- We need to guarantee that, when they exist, the first plane is the
horizontal plane and the first C2 axis is the vertical C2 axis,
so the conversion between chemical and crystallographic point
symmetry produces proper geometry for all symmetry elements.
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.10.12
22th May 2005
Implemented the so-called Radical Voronoi Tesselation,
where different polyhedra have different weights (given
by the atomic radius) and added anisotropy tensor results.
Improved the way area/node is handled in non-Miller planes.
Improved the point group symmetry code, and started converting
unrestricted (chemical) to restricted (crystallographic)
point group information in non-periodic structures.
What is new:
- Wrote utilities to automatically create molecule files
with arbitrarily high orders, for Cn, Dn, Cnv, Sn groups.
- Tested for chemical and crystalographic groups,
for S10, S12, S14, S16, S18, S20, S22, S24, S30.
- Conversion from chemical Cnv and Sn to crystallographic
Cnv, Sn, Cn and Ci point groups is done.
- Tested symmetry operations for C12, C24 and D12, D24
groups. Added C12.xml, C24.xml and D12.xml, D24.xml examples
to dat/molecule/symmetry.
- When 6 and 4 axes are both present in the chemical group,
the crystallographic group can have as main order 4 or 6.
Done for Cn and Dn groups.
- Conversion from chemical Cnv and Dn to
crystallographic Cnv, Dn, Cs and C2 point groups is done.
- Conversion from chemical to crystallographic Cn
point group is done.
- Conversion from chemical Coov, Dooh and Kh to
crystallographic C4v/C6v and D4h/D6h point groups is
done: elegant and solid.
- Improved the point symmetry code, in order to implement
restricted (crystallographic) point group symmetry.
- Simplified primitive reciprocal lattice colors: (0.5, 0.5, 0.5).
It's simple, reliable, and almost always a good choice.
- When creating (Cell->Measure) the reciprocal of a centered
lattice, with a conventional volume, users can now choose to
represent also the reciprocal of the corresponding primitive
lattice.
- Added screenshots to www.gamgi.org, showing stereographic
projections and reciprocal lattices.
- Updated cell_create.html, cell_modify.html and plane_measure.html
documentation.
- Cleaned the tutorial code: the names of the tutorial functions
are now independent of their order, so this can be changed, and
new tutorials added in any ranking position, without conflicts.
- Added a new tutorial showing how to build a crystalline cell of
Orthorhombic Polyethylene, using space group and Wyckoff positions
data.
- Updated the tutorial on Directional,Positional,Spot Lights.
- Voronoi tesselation: added a variancy parameter in the
Cluster->Measure dialog to control the partition weight scaling.
- Voronoi tesselation: the radical tesselation, with different
weigths for different polyhedra (defined by the atomic radius)
seems to be working fine.
- Cleaned Voronoi code and added atomic radius,
in preparation for Radical Tesselation.
- For planes with indices higher than Miller, the
area/node now gives an error message. For planes with Miller
indices or below, the area/node for Miller planes is shown.
- Cleaned Voronoi code: lists of face vertices can be
made cyclic now. Simplified static_face_orientate. Removed
redundant static_angle.
- Voronoi tesselation: the system tensor anisotropy and the
polyhedron scalar anisotropy are now calculated. Cleaned 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.
- 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.10.11
6th April 2005
Improved the Voronoi Tesselation code, the Reciprocal Lattice code,
the Stereographic Projection code, simplified the
paths to get documentation, data and source files.
What is new:
- Redesigned the reciprocal lattice code, to handle simultaneously
the primitive lattice in centered lattices, and completed the special
cases: hR and tI.
- Cleaned gamgi_mesa.h.
- Increased slightly the point size used to draw cell
nodes, so these are still visible when another cell is
present.
- Found and removed a bug in Cell->Measure: the Gtk error
dialog did not show up when an error was found. Some code
automatically removed the task AND the message dialog
without checking for errors.
- When transforming a direct into a reciprocal lattice,
when the direct lattice is centered, the corresponding
primitive lattice can now be also transformed.
- Updated documentation and data in http://www.gamgi.org/
and ftp://ftp.gamgi.org/gamgi/.
- Improved name handling for planes and directions in
gamgi_expat_export_object.c.
- Corrected a little bug in gamgi_expat_export_object.c:
plane->pole and plane->trace were compared to FALSE, not TRUE.
- Improved name and error handling for Planes and Directions
in gamgi_expat_import_object.c.
- Stereographic Projection: added new pole symbols (masks) for
planes and directions, so when they are in the same spot, planes
and directions can still be seen (and measured), even if they
use the same color.
- Voronoi tesselation: face angles are now measured.
- Removed a bug in Direction->Measure and Plane->Measure:
in some cases (Plane-Direction and Direction-Plane angles)
X flushing/synchronization was not done properly: now
an expose event is triggered immediately after scanning
for an object in the back buffer.
- Changed the Stereographic Projection, so now only the
planes and directions that are above can be seen.
- Improved website documentation about Gamgi installation.
- Improved error detection in Atom->Measure, Direction->Measure,
Plane->measure dialogs.
- Sections of the GAMGI website which are not related with
documentation (like screenshot images), are not included anymore
in the doc/ tree, resulting in much smaller documentation tarballs.
- The paths to documentation files are much shorter and simpler
now. This is valid for local files, that come with the distribution,
and files available from http://www.gamgi.org/ and ftp://ftp.gamgi.org/.
- Rotate,Move,Scale now also works when the selected object is Window,
updating all layers in the window, both in Axes and Objects mode.
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.10.10
8th March 2005
Created new dialogs Atom->Measure, Plane->Measure, Direction->Measure.
Several new properties involving angles, lengths, areas can now
be measured. Crystallographic planes,directions can now be
imported,exported to XML files.
What is new:
- Distances between an atom and a 2-atom direction,
and an atom and a 3-atom plane can now be measured.
- Distances between an atom and a crystallographic direction,
and an atom and a crystallographic plane can now be measured.
- Distances between nodes in crystallographic directions,
linear and planar node densities can now be measured.
- Angles between crystallographic planes, directions
and planes with directions can now be measured.
- Implemented the Atom->Measure dialog with the new GUI rules
and removed the Group->Measure dialog, replaced by Atom->Measure.
- Improved and cleaned gamgi_gtk_plane_measure.c and
gamgi_gtk_direction_measure.c, so now the dialogs Plane->Measure
and Direction->Measure are much more user-friendly.
- Implemented the new Plane->Measure dialog.
- Designed and implemented the Direction->Measure dialog.
- Improved the whole GUI strategy to handle measuring properties.
- Plane, Direction objects can now be imported from XML files.
- Updated documentation for Cell->Measure and Plane->Measure.
- Plane, Direction objects can now be exported to 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.
- 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.10.9
6th February 2005
Added Wigner-Seitz cells for hR rhombohedral lattices. Improved
stereographic projection for planes and directions. Improved
reciprocal lattice functionality.
What is new:
- Filtered inner faces for hR high and low Wigner-Seitz cells.
- The high c/a Wigner-Seitz cell for the hR lattice is working.
- Found and removed a bug in gamgi_expat_import_object.c:
Wigner-Seitz cells for monoclinic and triclinic lattices (not
implemented yet) were not flagged down as an error.
- The low c/a Wigner-Seitz cell for the hR lattice is working.
- Calculated the coordinates for both Wigner-Seitz hR cells,
with low and high c/a.
- Cleaned the plane,direction code, including gamgi_engine_start.c,
gamgi_engine_copy_out.c, gamgi_phys_projection.c and
gamgi_math_plane_measure.c.
- Improved the interface handling the reciprocal lattice constant.
- The reciprocal lattice constant can be chosen now.
The new default is the so-called Bravais polar lattice
constant, where the volume per node is equal for direct
and reciprocal lattices.
- Improved Stereographic Projection: i) when a pole
points to the half-sphere below, the inverted direction
is now used; ii) only the trace in the half-sphere above
is now represented;
- Corrected Layer->Create and Light->Select HTML Help pages.
- When calculating the area per node, multiple planes are taken
into account: distance between adjacent planes is 1/2 or 1/3.
- Added dialog Plane->Measure. Currently only measures
the distance between adjacent planes, and the area per
node.
What is next:
- Add XML input/output functionality for plane/direction
objects.
- 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.10.8
11th January 2005
Removed a couple of serious bugs, in Space groups, Reciprocal Lattice
and Voronoi Tesselation. Plane->Select, Plane->Remove, Direction->Select,
Direction->Remove dialogs are implemented and working. Plane->Create
and Direction->Create have more features, are more robust and
user-friendly.
What is new:
- Found and removed a fresh bug in Planes,Directions:
origin was not initialized, sometimes producing erratic values.
- Disabled Scale,Move,Rotate for Planes,Directions, when they
are the selected objects. Initialized Plane and Direction origin
to Cell origin. All this needs to be improved in the future.
- Implemented Plane->Remove and Direction->Remove dialogs,
so single Planes and Directions can now be easily removed.
- Improved Plane->Select and Direction->Select dialogs, which
now recognize and select planes and directions, respectively.
- Improved Plane->Create and Direction->Create dialogs, which
now support both conventional and primitive vectors. Moreover,
both dialogs are now initialized and reset.
- Cleaned gamgi_gtk_cell_measure.c. In particular, current layer
parameters are now copied to the new layer, when determining the
reciprocal lattice, instead of using the default layer parameters
as before.
- Found and removed a bug in the reciprocal lattice code:
parameters for R cells were still determined with the pre-GAMGI
0.10.5 convention of using primitive rather than conventional
hexagonal parameters to define R cells.
- In stereographic projection, added code to get directions
normal to planes, using reciprocal lattice vectors. Added code
to handle plane and direction indices based in conventional and
primitive vectors.
- Found and removed a bug in the reciprocal lattice code,
related with the cell center: center was calculated too late.
- Corrected edge faces and edge lengths, for topologies not
well formed, in the Voronoi code. Cleaned the statistics part.
- Found and removed a bug in the Voronoi code: when the
topology is not well formed (aka C60), an infinite loop
could appear.
- Updated documentation about Euler angles, Text objects,
the Freetype library and the GAMGI_TEXT environment variable.
- Found a removed a bug in the Cell Link code: the
inside_triangles routine was receiving always the first
coordinates.
What is next:
- 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.10.7
29th December 2004
Started working on crystallographic plane and direction objects:
stereographic projection is working, including Wulff (mostly used
in Materials Science) and Schmidt (mostly used in Geological Sciences)
projections. A bug was fixed in the Euler angles code.
What is new:
- Updated the pathnames in the gtk/*/* files.
- Wrote gamgi_gtk_plane_create.c: the Plane>Create
dialog is working, for both Wulff and Schmidt projections,
for all planes, colors, poles and traces.
- Found and removed a rather old bug in the function
gamgi_math_euler_from_axis: sometimes the Euler
angles were wrong: 90 instead of 270. Cleaned
the Euler angles code.
- Andre made new rpms for GAMGI 0.10.6 and Suse9.x.
Cleaned the HTTP and FTP download sections, at www.gamgi.org.
- Wulff and Schmidt stereographic projections
are now rotating fine, in interactive mode (with
the mouse or the ruler).
- Updated gamgi_mesa_draw and gamgi_mesa_scan,
to work with planes and directions.
- Updated gamgi_engine_create, gamgi_engine_start,
gamgi_engine_copy_out, gamgi_engine_remove, to work
with planes and directions.
- Adapted and cleaned gamgi_expat_import_object
and gamgi_expat_export_object, in preparation for
the stereographic projection cell representation.
- Adapted and cleaned gamgi_gtk_cell_create
and gamgi_gtk_cell_modify, in preparation for
the stereographic projection cell representation.
- We have now a simple and flexible model to handle
everything that is needed with stereographic projections:
we will add a new tupe of cell representation, a projection,
specifically to contain and handle planes and directions.
Multiple cells and relations between them will be handled
by Assembies (including epitaxial relations).
- Pole and trace representations seem to be working fine, for
both Wulff and Schmidt projections, for all types of lattices,
for all possible rotations.
- Started working on Plane and Direction objects.
- The mathematical constructions needed to handle
Stereographic (Wullf) and Schmith projections are worked out.
What is next:
- 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.10.6
7th December 2004
This is a cleaning release: reviewed the Voronoi code
and removed a serious bug, improved the way Light shininess
is handled, added an environment variable so solid fonts
can now be easily found, clarified that code exporting
to raster .ps files is fine and usable.
What is new:
- Found and removed a bug in the Voronoi code: the number
of faces per edge was not properly calculated. Edges are
now are linked for each polyhedron AND for each face.
- Added code to find equivalent vertices and edges, when
using periodic boundary conditions, in the Voronoi code.
- Cleaned the Voronoi code. Searching for redundant vertices
now requires looking only into 8 rather than 27 cells.
- Added a new environment variable, GAMGI_TEXT,
to indicate the path to Vera truetype fonts.
- Cleaned the postscript exporting code.
- Clarified why the postscript code was not working properly:
in Gimp we need to use a resolution of 72dpi (the default is
100). In practise this means that exporting to .ps files is
working fine. We tested this issue also on Windows, on 3
programs, and all of them worked fine with our .ps files.
- Cleaned again the text font code. Now when a text object
is modified, the font glyphs must be available (even if they
were previously compiled), otherwise an error is triggered.
- Special XML characters must be translated to predefined
entities when exporting, otherwise they cannot be reimported.
Fixed.
- Improved the way we handled Light shininess: Shininess is
disabled for 0.0, is minimum close to 0.0 and is maximum for 1.0.
- Only wired text objects need line width control. Fixed.
- Added a new screenshot about crystallographic space groups.
What is next:
- 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.10.5
10th November 2004
Updated/added documentation for Text and Light formats,
and Text and Cell dialogs. Improved solid fonts code.
Rhombohedral cells now are defined with conventional
(hexagonal) cell parameters.
What is new:
- Added a new screenshot, showing how the Cell->Link dialog
is used to create a crystal using space group information.
- Updated help documentation for Cell->Create, Cell->Modify
and Cell->Link.
- Found two bugs in the code handling solid fonts, resulting
in segmentation faults when font files are modified or removed
AFTER removing the font files. Removed one, by checking first if
glyphs must be compiled. Removed the other by checking if the
glyphs are available, when calculating the text center.
- When solid Truetype fonts are not found, the error message
produced now shows the name of the file that is missing,
both in Gtk Text->Create, Text->Modify dialogs and from
XML files.
- Rhombohedral cells are now defined using a,c hexagonal cell
parameters rather than a,bc rhombohedral parameters as before.
This affects only the lattices for the 7 R space groups. Essentially
crystallographers tend to define cells belonging to these groups
using hexagonal, not rhombohedral, parameters. Moreover, this case
was an exception, from now on parameters are always for the
conventional cell, which is simpler for users and coders alike.
- Added a screenshot to gamgi.org with stroked and extruded
fonts, illuminated with directional and spot lights.
- Updated format documentation for <light></light>
(Create) and <gamgi><light></light></gamgi>
(Config) blocks in XML files.
- Updated format documentation for <text></text>
(Create) and <gamgi><text></text></gamgi>
(Config) blocks in XML files.
- Updated documentation for Text->Create and Text->Modify
dialogs.
- Scaled up very slightly the wired fonts, so wired and
solid and fonts now look essentially the same size.
- Changed the expected names for the 10 Vera Truetype files,
back to the original names in Suse 9.0, hopefully this wil help
finding these files in other Linux distributions.
- Added documentation for Cell->Measure, for the reciprocal
lattice transformation.
- Added the relevant original Allen Barnett's comments to the
extruded fonts code, plus metrics information taken from the
Freetype documentation.
- Cleaned the code in gamgi_mesa_text.c; defined the scaling
procedure for solid fonts, so wired and scaled fonts look the
same size; calculated the center for solid text objects.
What is next:
- 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.10.4
11th November 2004
Text and Light properties can now be configured, both from GUI
dialogs and XML files. Solid (extruded) Truetype fonts can now
be created/modified from GUI dialogs and imported/exported to
XML files.
What is new:
- When objects and lights have null overlapping color components,
the light cannot iluminate the object and the object becomes
invisible. This more testing, and perhaps an option for Light
Materials functionality.
- Found and removed a bug in the code initialising
text objects: font was started, so a core dump would be
produced when a parsing error was found as the font engine
would try wrongly to decrease the glyph count.
- Cleaned all the text font engine code and improved the
text font API, to acommodate all the GUI and XML code needs.
The dialogs Text->Create and Tex->Modify and the XML
import/export files are now be handling wired and solid
fonts just fine (famous last words!).
- Solid fonts are now working fine. The code to center
the text objects, for both wired and solid fonts has
been redesigned and is working. Removed gamgi_mesa_center_out.
- Wired fonts are working again, in all cases, with
the new font engine. Cleaned the text code. Solid fonts
are working, but still need some work.
- Changed completely the text font engine. Before,
when a glyph was required, the whole font was compiled.
Now only the glyphs actually needed are compiled. This
is important mainly because the new solid fonts require
much more resources.
- Refined the GUI handling Systems,Lattices,Groups
in Cell->Create and Cell->Modify: the toggle buttons
handling the Systems,Lattices,Groups Lists can
now be used to create AND remove the dialogs. Previous
methods to close these dialogs (Cancel button and WM
decorations) remain available, of course.
- Removed a bug in the the Cluster Voronoi code: the
statictics for global edge lengths were calculated
using redundant edges, not just the real ones.
- Updated the website Links and Contributors pages, to
include all the contributions for the extruded fonts code.
- Cleaned and integrated further the text code:
Removed files gamgi_gtk_text and gamgi_mesa_extruded
and added the code to gamgi_gtk_text_config,
gamgi_gtk_text_modify and gamgi_mesa_text.
- Wired (tested) and Solid (not integrated yet) fonts
can now be imported and exported to GAMGI XML files.
- Found a bug in the XML export code: the XML space
offset is not correct for text configuration data: Fixed.
We were sending garbage, instead of the right argument,
to a function. Surprising that this was not found before...
-
Light and Text configuration parameters can now be exported to
XML files. Corrected a minor bug in the XML layer export code:
the decimal precision was wrong for some position components.
- Modified Text->Create and Text->Modify dialogs so they
are now ready to work with both Wired and Solid fonts.
- Default Text Style, Color, and Solid and Wired fonts,
can now be configured, selecting Text->Config or importing
config data from XML files.
- Materials Light Shininess and default Light components
can now be configured, selecting Light->Config or importing
config data from XML files.
What is next:
- 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.10.3
16th October 2004
Solid extruded fonts are now working on GAMGI, thanks to
Allen Barnett and Linas Vepstas, of OGLFT and GLE libraries,
respectively, which code we used, and the team developing
the FreeType library, which is now required. A screenshot
is available
here.
The interface with the user is not built yet, so this is
just a working release, not for final users.
What is new:
- Removed the global variables introduced earlier in the
extruded fonts code.
- After sorting out a few glitches, the extruded fonts are
now running great on GAMGI!. Wait for the screenshots...
- GAMGI compiles with the solid font code: the FreeType library
is now required to compile and run GAMGI.
- Cleaned the solid fonts code a bit more. There
is a bug with lights and Scalef probably due to
unormalized normal vectors, which was already in
the original code.
- The solid fonts code has now less than 800 lines
and the extrusion code is fully understood.
- Cleaned and merged the OGLFT and GLE C codes
into a single file, with just 844 lines.
- Introduced C-based dynamic arrays, a new type of data object
inspired in C++ <vector>, that should help to reduce the number
of reallocs directly hard-coded in GAMGI, making the code more
elegant and simpler to maintain.
- Removed the last C++ header in the OGLFT code,
<vector>, and converted the last C++ bits to C.
The whole code is now ansi C and works fine.
- Removed C++ standard libraries, <map> and <list>,
in the OGLFT code, and replaced by GAMGI lists.
- Simplified the GLE code to 122 lines only, and removed
all the macros.
- Reduced all the code to render solid fonts to 3 files
(.c and .cpp and .h), plus a bunch of macros.
- The GLE code to render solid fonts is now down to 420 lines
in .c files and 633 lines in .h files, and the GLE and OGLFT codes
are working fine together, producing exactly the same output
as the pristine GLE and OGLFT libraries combined. From now on,
it should be just a matter of time until we have solid fonts
in GAMGI, linking against the FreeType library! Of course this
is only possible due to the hard work of Linas Vepstas (GLE),
Allen Barnett (OGLFT), and all the people working on the FreeType
library, many, many thanks to all!
- The whole OGLFT code to render solid fonts is now down to less
than 800 lines, including header and demo code. Started working
on the GLE library.
- Stripped down solid.cpp to 766 and solid.h to 82 lines only.
Essentially we have now to replace the STL functionality by our own
to have pure C code. Moreover, the code doesn't look too difficult
to understand.
- We have a working example showing a message with a solid font,
stripped down from the OGLFT C++ library, with two files, solid.cpp
(1048 lines) and solid.h (320 lines) only.
- We have a working model for 3D solid (extruded) fonts,
which requires three libraries: Freetype, OGLFT and GLE.
Our goal is to adapt the OGLFT and GLE code to GAMGI, to
decrease the number of dependencies, keeping just Freetype,
which is a larger lib and is one of the dependencies of
Gtk2.0, so we will need it anyway if we move to Gtk2.0.
What is next:
- 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.10.2
16th September 2004
Reciprocal lattices can now be determined for all
14 Bravais lattices. A bug was removed in the code
converting primitive to conventional axes in Rombohedral
lattices.
What is new:
- Cleaned the reciprocal lattice code.
- Tested the OpenGL Light and Materials properties.
Apparently we are following the best solution on this.
- The orientation of reciprocal Triclinic and Monoclinic
lattices is not correct: a change in orientation occurs
in the transformation that we are not taking into account.
Solved: get the rotation matrix that takes the conventional
vectors in the standard orientation to the final orientation.
- Decreased the minimum and maximum number of slices
used to draw atomic spheres to 4 and 64, respectively.
- The reciprocal lattice stuff seems to be finished,
apparently is working correctly in all cases, even the
tricky ones involving multiple rotations around different
centers.
- Reciprocal lattice for Tetragonal I is tricky because
we do not work with the F reciprocal lattice but with the
equivalent I lattice, so we need to scale and rotate 45 degrees.
Reciprocal lattice for Hexagonal P is tricky because a rotation
of 30 degrees occurs during the transformation.
- Found and removed a bug in gamgi_phys_cell_create: the
hexagonal height in rombohedric cells was wrong. As a result
of this, the reciprocal lattice now works fine for this case.
- Reciprocal lattices seem to be working fine, except for
Hexagonal P, Hexagonal R and Tetragonal I.
- Using Freetype, OGLFT and GLE, we have demos with solid fonts
rotating fine. The problem now is how to adapt this to GAMGI.
- Thanks to Andre, we have new packages available, for Gamgi 0.10.1:
rpms for Suse 9.1, and for the first time, deb packages as well, for
Woody 3.0 r1.
- Renewed gamgi.org, which is now valid until 2010.
What is next:
- 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.10.1
3rd September 2004
The 230 crystallographic groups are now fully working. The
structures linked to Wigner-Seitz cells are greatly improved.
Distributed the gtk code by several sub-directories.
What is new:
- The methodology to convert direct to reciprocal Bravais
lattices seems to be clarified, hopefully this will be working
soon.
- The algorithm to link Wigner-Seitz cells to atoms
showing all the relevant atoms and the proper symmetry
is working fine.
- Cleaned the gamgi_phys_cell_link.c code that handles
the container cell, including static_cell and the if
statement to call it.
- Refined the cell link interface: users are not allowed
anymore to add nodes to conventional volumes or to remove nodes
from the other volumes.
- Removed a bug in gamgi_phys_space.c code that prevented
cell link to work correctly when only a motif was entered.
- The code to handle space group information is completed and seems
to be working well, though it is not properly tested yet. It should be
able to build crystals for all 230 space groups, for all Wyckoff sites,
for all types of cell volumes. Moreover, users can combine space group
information with node selection and occupancy rules.
- Merged and updated gamgi_phys_space.c, gamgi_phys_cell_link.c
and gamgi_gtk_cell_link.c (found and removed a typo bug in
gamgi_phys_cell_link.c affecting the size of the outside cell
when the volume is a sphere).
- Updated the HTTP and FTP website sections.
- Prepared the dialog and layer infra-structure to determine
and show reciprocal lattices for cell objects.
- Completed and added the 230 arrays describing Wyckoff site symmetry.
- Writing the Wyckoff site symmetry in arrays (one for each
group, as for positions and drivers): more than half is done.
- More cleaning on gamgi_gtk_cell_link.c, which is now ready
to handle all the space group information.
- The Cell->Link dialog is automatically creating and removing
menuitems for all Wyckoff positions, for all the 230 space groups.
- Redesigned the Cell->Link dialog: added Wyckoff positions
and removed Directions.
- When importing files from the command line, the code
printing the current layer and object in the statusbar was
not correct: removed the bug, removed the variables windows_top
and layer_top, and cleaned the code.
- Created sub-directories in src/gtk, for each object classe, to
avoid hundreds of files in a single directory. Changed the makefiles
accordingly (it is still possible to compile Gamgi from any of
the directories containing source code).
- The standalone code to generate Wyckoff positions for
all the sites of the 230 space groups seems to be working
fine. When repeated positions are found, it also tries to
find a Wyckoff site with lower multiplicity (and higher
symmetry) that generates the same positions.
What is next:
- 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.