This is the first numbered version.
Has (almost) all the functionality of the GL version, plus a bit.
| version 0.2.1||
GUI for setting colors.
- Selected mesh triangles drawn. Now
all functions of the GL version are working in the X
Avoid core dump when attempting to add groups when
no image has been loaded.
- Fixed inversion of image in goof
file. Bug was introduced in conversion to X.
- Top and bottom node groups also
had to be switched!
Support for 8 bit displays. Menus can be unreadable
if other apps are using too many colors, but images
are ok. Color reduction (from 24 to 8 bit images)
isn't as good as it could be.
7/17/97 -- 7/30/97
- Use X resources & fl_get_app_resources instead
of getopt for command line arguments.
- Fixed bugs in color reduction
that could cause crashes.
- Save "select method"
settings when loading new image, and don't crash when
setting is made when no image is loaded.
- Updated scrollcanvas and related
files with new versions from OOF.
- Nothing new, except a nice round
version number to put on the web.
- Hexagonal material.
- Changed -x option to -s. -x is
an undocumented XForms option, so it can't be used
when using XForms' option handling code.
- Orthorhombic material.
- Changed order of arguments in
material functions so that they correspond to OOF's
11/05/97 -- 11/07/97
- Prohibit spaces in group names.
- Do all PPM/PGM/PBM reading ourselves, no longer
link to libppm.a, etc. Raw PBM files aren't
- Fixed raw PBM problem. The pbm
man page and xv have slightly different ideas about
what the pbm format is. We're assuming for now that xv
- Fixed bug where despeckle was
reporting the wrong number of additional pixels
- New menu routines, fixing bug in
displaying commands executed from log files.
- Log file records scroll bars
(not quite working) and zoom button.
- Upgrade to XForms 0.88.
- Changed command line options!
- Adaptive mesh using newest
6/98 -- 7/98
- Catch and ignore BadWindow errors
which can arise from clicking on a window as it's
- New controls on image windows!
- "Home" key on keyboard brings up
"also_select" command in groups menu to select a
group without unselecting current selection.
- Mesh triangles can be put into
- Pixels and triangles
can be selected by dragging the mouse.
- Mesh triangles can inherit groups from
- Mesh groups are written in goof
- Command to save log file immediately,
not just while quitting.
- Completely revised adaptive_mesh menus.
- Put undo/redo/clear/none back
into pixel selection menu.
- Select the intersection of a
group with the set of selected pixels.
- Unselect pixel groups.
- Remove pixels from a group.
- Moved firewall submenu to root menu.
- Sub-pixel triangles in adaptive mesh now associated w/correct pixel.
- Order in which materials appear in
menus is same as in OOF.
- Included Zimmer
- Included Griffith & Griffith2
- Fixed bug that was flipping
simple_mesh output upside down.
- Fixed bug introduced while fixing
flipped mesh in 0.6.3!
- Just renamed version 0.6.4
- Fixed memory leak in
New Demograyfy and DemoRGB commands for pixel
selection from menu.
- Sped up Demograyfy and DemoRGB
and added "replace" argument.
- Fixed bug that dumped core when
saving adaptive meshes when there were empty pixel
- Image modification tools. Smooth,
non-linear smooth, convert to gray. Crude interface,
- New interface routines, colored
text in message window.
GUI to image modification tools. Undo/redo for image
Each graphics window can have separate
modifications. Image gallery.
- When adding pixels to groups, the
new group size is reported correctly even when a pixel
is added to a group to which it already belongs. The
"pixelgroup info" command reports the fraction of the
image occupied by the group.
- Avoided core dump when loading a
Fixed bug whereby misplaced hidden "Home" button
in function windows could sometimes be
- Select elliptical and circular
regions with pixel selection tool.
- Changed button for selecting
pixel drag shape into a pulldown menu.
- Expand selection to include
neighboring pixels. Shrink selection to remove pixels
- Avoided another core dump when
attempting to load a non-existent ppmfile.
- Fixed bug in which pixels on the
boundary of adaptive mesh triangles weren't assigned
to the correct triangles.
- Info dashboard can mark the
selected pixel and the pixels belonging to adaptive
- Added orientation to zimmer
element argument list. It had been in the goof file,
but there had been no way to set it.
- Installed kludge that lets
programs compiled under IRIX 6.5 run under IRIX 6.2.
- Fixed crash when unselecting an
|version 1.1 b0
- Cancelling a "save" in the image
- Better adaptive meshing:
- Better "STOP" button, controlled
by forked process.
|version 1.1 b3
The STOP button works properly.
|version 1.1 b4
Split Info dashboard into Pixel and Mesh dashboards.
Got rid of "adaptive_mesh refine homogeneity" in favor
of "adaptive_mesh refine E".
- Mesh dashboard can
query E for mesh triangles, move nodes, select
New commands in adaptive_mesh menus to select
triangles with a range of E, query E, etc.
|version 1.1 b5
Still better "STOP" button, using
XEventsQueued. No forked process, graphics windows are
updated, but cpu isn't sucked up.
Fixed bug in which elements could mysteriously
become selected during edge swaps.
|version 1.1 b6
- Laplacian mesh smoothing.
commands for mesh modifications.
|version 1.1 b7
- -quit command line option.
|version 1.1 b8
- Fixed bugs in transferring pixel
groups to mesh triangles.
- Can now define an active region. Selections, mesh
operations, etc take place only within the region.
|version 1.1 b9
- New commands "adaptive_mesh
refine interface" and "adaptive_mesh select interface"
for acting on triangles whose neighbors have different
materials assigned to them.
|version 1.1 b10
- Fixed mesh refinement bug wrt
tracking which triangles touch a node. The results of
the smooth and anneal commands were affected.
- Mesh triangles are faded when
not in the active region.
- Got rid of garbage at beginning
of lines in Message Window "save" output.
New refinement method "adaptive_mesh refine
|version 1.1 b11
- "min_area" variable to limit mesh
|version 1.1 b12
- Fixed a compilation flag for
Linux PC version, so that it correctly swaps bytes in
binary goof files.
|version 1.1 b13
- Added trigonal element.
- Added zimmer2 element.
|version 1.1 b14
Changed trigonal to trigonalA and trigonalB.
|version 1.1 b15
Fixed crash when setting adaptive_mesh/stack/stacksize
before creating the mesh.
stacksize=1 no longer has a memory leak.
- Changed order of libraries in
SGI version to avoid memory fragmentation problems
|version 1.1 b16
- Fixed a completely inconsequential memory leak.
|version 1.1 b17
- Fixed node group assignments in simple
- Fixed a core dump when using the "quit"
command from the menu when certain dashboards were open. The
problem did not affect the "Quit" button at the top of the
- Added "adaptive_mesh/refine/bumps",
which doesn't work quite as well as expected.
3/00 -- 4/00
New commands to save current
state: "configuration save" and "configuration
load". Loading a configuration file can be much
faster than loading a log file.
Prohibited pixelgroups with no name.
Added ability to read gzipped ppm files.
Displayed version number on
main window and in title bars.
Fixed a bug in which zooming the window would change
which pixel was marked in the Pixel dashboard.
Fixed a bug in which the highlighted triangle
sometimes wasn't updated correctly in the Mesh
The -start command line option can now read
configuration files. The quit dialog box saves
configuration files, not log files. Log files can
still be saved with the "log/save" command.
Fixed a bug in the application of stencils to gray
images in the Image_Modification dashboard.
New images are displayed immediately instead of just
being added to the gallery list. If the previous
image has been modified, the new image isn't
displayed unless the user says so, so as not to lose
- Added the "pause" command.
Changed the way the Demography pixel selection routine
works. Formerly it did not distinguish between pixels
with the same average gray value but different RGB
values. Now it does distinguish between them.
Greatly sped up the selection of rectangles,
circles, and ellipses with the Select dashboard.
Fixed a bug that could cause the burn algorithms to
dump core when selecting a very large region of a very
6/22/00 through 7/28/00
Brought menu code up-to-date with changes in OOF
Alied an "Info" button to the Selection dashboard for
printing statistics on the current selection.
Alied an "Equalize"
button to the Image Modification dashboard to remove
Fixed a bug in
reading raw pgm image files. (ppm and pbm weren't
Worked around an XForms/Intel bug that prevented the
"Info for..." menu in the Mesh dashboard from working
Alied checks to prevent infinite recursive subdivision
of triangles, by changing the way that
"adaptive_mesh/refine/min_area" is used, and by aliing
"adaptive_mesh/refine/max_divisions". See the ppm2oof hints page for
Use a translucent color for
marking the selected pixels.
Sped up internal image copying, somewhat.
Alied a "redraw" variable to the adaptive_mesh
menu to suppress redrawing during lengthy mesh
Alied an Automation dashboard to automatically sort
pixels into two groups, based on the geometry of
8/16/00 through 8/28/00
Fixed a bug in which the close button on the graphics
windows wasn't logged correctly.
Fixed a bug which could cause crashes when running
scripts without opening a valid image file.
Rewrote the adaptive mesh refinement code to avoid
some rare circumstances that could lead to infinite
loops. The new and old codes don't necessarily
generate identical meshes, because they divide
elements in a different order.
Added an "opacity" variable to the graphics menu,
controlling the opacity of the selected pixels.
opacity=1 is opaque, opacity=0 is translucent, and
values in between are in between.
Added area information to the
Added text mode for running ppm2oof without an X
connection. Starting ppm2oof with the "-text" command
line option prevents it from opening any windows.
Commands may be typed at the console, as described in
Notes chapter of the OOF manual. Commands
requiring mouse input are obviously not available, but
all graphics window functions that don't depend on the
mouse position are present. To find the text version
of those commands, examine the log file (with the
"/log/save" command) from an interactive graphical
session. The results of executing mouse click
commands in a text session are undefined.
Fixed a bug that led to infinitely large
configuration files when
The only_once flag for the damage element wasn't
stored properly in the .goof files.
Time to stop pretending that the adaptive mesh user
interface will change significantly before version 2.
Let's stop calling this a beta release.
Added thermal conductivity.
Merged thermal and regular versions. Using the
-DTHERMAL compiler flag produces the
Added Doug Twisselmann's Twissel Element
(isotropic with a T independent stress free
Sorted the materials/default menu correctly.
Non-thermal version no longer accidentally prints
THERMAL at startup.
Workaround for XForms bug which makes command line
argument parsing fail when the program name has more
than one dot in it (as in "ppm2oof1.1.1").
Added the gas element (thermal conductivity but no
elasticity) to the thermal version. The
elastic-only version is unchanged.
Added a seed variable to the main menu,
for seeding the random number generator.
Rewrote the pixel/triangle intersection code to be
more robust when nodes fall exactly on pixel
boundaries and vice versa.
Fixed a bug in
removing pixels from groups. The bug could lead to
problems in the automation dashboard.
Fixed a bug that could lead to crashes or
corrupt .goof files after deleting
Fixed a bug introduced in version 1.1.4 that was
making it impossible to read configuration files.
Fixed a bug that was causing the wrong material to
be assigned to adaptive mesh elements. Elements
that should have been empty at the edges of empty
regions were sometimes given the properties of the
Fixed another bug that was causing the wrong
material to be assigned to adaptive mesh elements.
Elements whose nodes had moved across material
boundaries sometimes didn't notice that they'd
Fixed a bug in which mouse clicks were being
misinterpreted. It only happened if the pixmap was
the same size as the last pixmap clicked on, but the
image was a different size.
Fixed a bug in emptyelement (again!) that was
preventing empty elements with one color from being
replaced with empty elements of another color.
Fixed a bug in "materials/reset_selected" that could
crash the program.
The "Save" button in the graphics windows will now
generate PostScript output if the output file name
ends in ".ps" or ".eps".
Fixed a bug that could make pixels and elements
think that they were in a group more than once,
thereby confusing the homogeneity calculations.
Added a new "adaptive_mesh/materials/set" menu,
which explicitly sets material type of the currently
selected mesh triangles. The triangles will keep
their types until "adaptive_mesh/materials/transfer"
is called, or until executing one of the edge swap
routines. This is meant as a way of correcting
misassigned materials just before saving a .goof
file, and may produce undesired results otherwise.
Fixed a bug in loading meshes from configuration
files. Meshes loaded from files would fail the
"sanity check" test, if they had been refined before
being saved. It's not clear if there were any other
Finally fixed the bug that was causing the Image
Gallery dashboard to warn about losing
modifications to images, even if the images had
been saved in the gallery.
4/01 -- 5/01
Fixed an infinite loop in /adaptive_mesh/groups/subtract.
I guess nobody ever used that function before.
Groups assigned by hand to triangles with
/adaptive/mesh/groups/subtract now persist.
Changed the format of configuration files. Old
versions sometimes lost the materials assigned to
triangles with /adaptive/mesh/groups/add. Materials
assigned via the normal inheritance from pixel
properties were unaffected.
Don't dump core, even for fatal errors, unless DEBUG
is defined at compilation time.
Added OOF2 style mesh output. This feature isn't
useful to anybody but the OOF2 developers yet.
Added tetragonal element, finally. Also added
gradyation element for Grady White.
Minor changes to make gcc 2.96 happy. No
Modifications to allow compilation with gcc 3.1. No
Changed the way ppm2oof converts from color values
represented as floats (in the range 0.0-1.0) and colors
represented as ints (in the range 0-255). This can have
minor consequences, but shouldn't be important unless
small variations in color are significant in your
micrograph. The new scheme is more resilient to round-off
error which could lead to different behavior on different
Back-port of OOF2's postscript image output routine. Image output
is much more compact now.
Fixed a bug in timestamp.C that could cause errors if the timestamp
overflowed at just the wrong point. Very unlikely.
Minor changes to accomodate gcc 3.3 and OS X 10.3.
New output routines for saving data in