November 26th, 2002  ivtools-1.0.7

- fixes for compiling with gcc-3.2 using ACE (on RedHat 6.2)

- new comdraw funcs submitted by Secil Ugurel:

help(fontbyname colorsrgb pokeline)
"fontbyname(fontname) -- set current font by X font name",
"colorsrgb(fgcolorname bgcolorname) -- set current colors by RGB name. The colorname format is \"#RGB\" for 4 bits, \"#RRGGBB\" for 8 bits,\"#RRRGGGBBB\" for 12 bits,\"#RRRRGGGGBBBB\" for 16 bits",
"pokeline(compview x y vallist) -- poke pixel values of a line listed in vallist into raster."

- migrate glyphs/text-editor to stand-alone ivtext.

- add Quit option under File menu to ivtext..

- preliminary support for SVG export. For those interested in playing
along at home, ivtools now supports export of line graphics via SVG,
with support for variable widths, colors, and dash-patterns, as well
as rectangle export with fill colors that are blends of foreground and
background (plus none fill).

- refactor OverlayPS::idraw_format to be a pair of set/get methods
where the get method overrides the internal static member value
(_idraw_format) with the value of an idraw_format flag on an
associated Command if there is one, either OvExportCmd or OvPrintCmd.

- the export dialog box now defaults to everything if nothing is selected
in the drawing editor.

- fix drawserv attribute expression propogation used for Null
Convention Logic emulation (http://www.theseus.com).

- a new version number 13 for the idraw format adds support for
executable fonts (as opposed to static fonts).  Required by recent
versions of RedHat Linux.

- fix out-of-order destruction of member objects of the central
Unidraw object at program termination.

- disable use of X11 shared memory extension for MacOS X.  This may
only be a problem with 10.1, or only be a problem with XFree86 4.2, so
it may be reinstated in the future.

- customize iostream include files for MacOS X Jaguar (10.2), to mask
the difference between Apple's version of gcc-3.1 libstdc++ and
everyone elses.  This is untested, so let me know if it worked for you.

- apply diffs generated by Ben Hines in creating a fink package for
Jaguar (MacOS X 10.2)


August 2nd, 2002  ivtools-1.0.6

- more changes for compiling with gcc-2.96 on RedHat 7.*


August 1st, 2002  ivtools-1.0.5

- various compile time fixes for Solaris and Cygwin.

- a proper fix for handling non-idraw PostScript.  An improper fix was
introduced in ivtools-1.0.3 that made all idraw format files get
filtered through pstoedit (if you had it).  Pointed out by Todd Gruhn.

- changes required to compile ivtools with gcc-3.1.  Most all in the area
of migrating from use of an fstream constructor that accepted a FILE*
to use of a derivative class (__gnu_cxx::stdio_filebuf<char>) that does
the same.  Wrapped up the difference between 3.0.* and 3.1 by 
conditionally defining a fileptr_fstream in src/include/ivstd/fstream.h
to filebuf for 3.0.* and __gnu_cxx::stdio_filebuf<char> for 3.1.

** Constant evolution of the behavior and API of filebuf has been the
single most challenging aspect of keeping ivtools compiling with gcc
and working for the past decade.  I really hope things will be stable
for the next decade. **

- fixes for using ACE and ivtools with gcc-3.1

- fix up compiling with ACE using less than gcc-3.*

- disable incremental display while incrementally loading from a URL.
A placeholder raster still gets inserted before the connection is
established, and the rest of the download and display is asynchronous,
which avoids hanging on a net connection.

- compilation fixes based on feedback from Gregory Kriehn.  Mostly
adding #include <string.h> where missing.  Don't know why this wasn't
a problem in every environment.  Should improve support for RedHat 7.*.


June 21st, 2002  ivtools-1.0.4

- give special meaning to a set of parentheses that proceed the
tuple operator ",", by adding an extra level of nesting to the
resultant list.  Before the expression "(1,2),(3,4)" yielded
"{1,2,{3,4}}".  Now it yields "{{1,2},{3,4}}" as one might expect.
This anomaly stemmed from the fact the tuple operator "," works
by concatenating its right-hand argument to its left-hand argument
if the left-hand argument is already a list (that's how the
interpreter concatenates a compound tuple-expression, i.e. "1,2,3,4").

- fix unitialized variable used when reading from sockets that would
cause a hang.

- add comterp commands for the value of PI (pi), converting radians to
degrees (radtodeg), and converting degrees to radians (degtorad).

- add new matrix transpose command (xpose), which takes a 2d list of numbers
(i.e. a matrix), and transposes them.  Examples:

xpose(1,2,3)
{{1,2,3}}
xpose((1,2),(3,4))
{{1,3},{2,4}}
xpose((1,2,3),(11,12,13),(21,22,23))
{{1,11,21},{2,12,22},{3,13,23}}

- add a matrix addition capability to the comterp "+" operator.

- add matrix multiplication to comterp "*" operator.

If:
a=(1,4),(2,-3),(3,1),(-1,0)
b=(-1,2,1),(-9,2,-3)

Then:
a*b

Yields:
{{-37,10,-11},{25,-2,11},{-12,8,0},{1,-2,-1}}

- extend matrix multiply to support vector inputs.  Now:

a=list,list(1),list(2),list(3)
b=list,list(1,2,3)
a*b

Yields the same as:

a=1,2,3
b=list,list(1,2,3)
a*b

Conversely:

a=list,list(1,2,3)
b=list,list(1),list(2),list(3)
a*b

Yields the same as:

a=list,list(1,2,3)
b=1,2,3
a*b

And:

list(2)*list(3)

Yields:

{{6}}

- add support for panning with cursor keys (left/right/up/down) as well
as Page Up and Page Down (PgUp/PgDn) for larger vertical moves.

- greatly improve the efficiency of rendering alpha-transparent
rasters with a TrueColor visual.  Prior to this each input color was
being looked up in a table that could be as long as 2 to the 24th,
then the weighed average computed in floating point, then the result
rescaled into a TrueColor color.  Now everything is done with nothing
more than 32 bit integer multiplies, adds, and shifts.  Performance
has gone from a multi-second lag to adequately interactive.

- rename "Custom Tools" to "Extra Tools".

- migrate Attribute, Annotate, and GraphicLoc to "Extra Tools".

- add a :next flag to comdraw's import func.  It attempts to
auto-increment the numerics in the last URL and import again.

- sync with diffs from latest Debian release (ivtools-0.9.2-6).

- add gcc-2.96 warning to INSTALL and README files

- remove installation of extraneous scripts when non-local install.

- save/restore raster alpha-transparency value in drawing documents.

- create AlphaTransparentCmd and make available under Edit/"Image Processing"

- create raster peek command for comdraw (RasterPeekFunc).



March 11th, 2002  ivtools-1.0.3

- add missing src/include/ivstd/stdlib.h to MANIFEST.  This was
needed to get socklen_t defined for Dispatch/rpc*.c on Darwin.

- recognize files that start with plain "%!PS" as PostScript files.


March 1st, 2002  ivtools-1.0.2

- add -stdin_off argument to comdraw/flipbook/graphdraw/drawserv to
disable a comterp interpreter on stdin.

- changes required to get things compiling with Cygwin under Windows 2K

- try -gdwarf-2 as a compilation option for debugging with gdb-5.1 and
gcc-3.0.*.  Not sure if there was an improvement.  Maybe this is already
the default.

- fix bug in GraphicLoc tool, where the text wasn't refreshed on subsequent
uses after the dialog box had been unmapped.

- make the "Show Prev Frame" command of flipbook take effect
immediately (same for "Hide Prev Frame").  Needed to call
FrameEditor::UpdateFrame as well as Unidraw::Update.

- fix submitted by E.J. Neafsey (Loyola University) for drawing
multi-point graphics with shift key pressed to make all the lines
either completely horizontal or vertical.  The shift key always
worked, yet the origin used (for limiting motion to the horizontal or
vertical) was never updated to the last vertex as the new points were
added.

- added alpha-transparency to raster display.  It works, but there is
no save/restore of the alpha value, or user interface to set or view
the value.  However, you can use OverlayRasterRect::alphaval() to
set/get the constant (one per raster).  No PostScript output yet as
well.

- propogated "None" background color to all drawing editor's BgColor
menu.

- add an alpha command to comdraw, to set/get the alpha value of a raster
graphic:

	alpha(compview [alphaval]) -- set/get alpha transparency value

a command line like the following will spin a raster forward as it
appears (assume g is a variable pointing to a RasterComp, and the
current selection):

    for(x=0 x<10 x++ alpha(g float(x)/10);rotate(30);scale(1/.9 1/.9);update)

- partial changes for HPUX compilation.  There might be other problems
with the HP linker's desire to fully link a shared library when it is
built, and problems with parameters like ExtraCCFlags that might need
commenting out for reasons I don't understand (note -- it seems
this might be avoided by using "ld -r" instead of "gcc -shared").

- further work on comdraw whiteboard capability.  Setting up for a
distributed drawing environment by ensuring that all graphics can be
constructed via command line instead of directly.

- instituted (then disabled) a transparent pixel capability.  Needs an
API in comdraw or drawtool first.

- fix problem with hanging on stdin when comdraw/graphdraw/flipbook is
launched as a helper app from a web browser.

- all the changes necessary to bring up ivtools under Mac OS X (Darwin).

- fix rewind() vulnerability in early libstdc++-v3 iostreams.  Better
to close/reopen the file than rewind.


January 9th, 2002  ivtools-1.0.1

- add comdraw funcs to poke (grey-level) pixel values into a raster,
and return the horizontal and vertical extent of the raster:

	 poke(compview x y val) -- poke pixel value into raster
	 pcols(compview) -- number of columns in a raster
	 pcols(compview) -- number of rows in a raster

- sometimes you can accidentally create a polygon with zero points (or
a multi-line or spline).  Changes to safeguard against crashing
whenever this happens.

- fix bug in comterp stream traversal via NextFunc::execute_impl.  It
was leaving an extra null-value on the stack, which confused the
interpreter.

- add an undocumented debug comterp func, stackheight

- tweak of imake system to facilitate NetBSD packaging

- add "None" color to background color menu, exposing the hidden
fillbg flag (transparent background mechanism) for the first time in
the history of this software.

- fix drawing editor import's use of gunzip to decompress graphic
files.

- update config.guess and config.sub, support scripts for the
configure script from the autoconf package.  May fix some known
problems with HPUX, ALPHA, and ARM.

- add a comdraw command to create white rasters initialized with a 2
pixel wide black border:

	compview=raster(x0,y0,x1,y1) -- create an empty raster

- make equality and inequality operators work for list objects.  Note
that the "," list concatenation operator always appends the second
operand to the first operand if it is already a list, as illustrated
by this example ("> " inserted for clarity):

> l1=1,2,3
{1,2,3}
> l2=l1,4
{1,2,3,4}
> l1==l2
1

Alternately the "list" command can be used to create a distinct list:

> l1=1,2,3
{1,2,3}
> l2=list(l1),4
{1,2,3,4}
> l1==l2
0

- fix up some more handling of nil by arithmetic operators.  The rule
is nil in, nil out.

- minor fixup in comterp error message system

- pclip command for clipping of rasters via a polygonal point list:

 pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon

- dtog and gtod commands for translating to/from graphic coordinates
to drawing coordinates:

 gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates
 dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates

- migration of conditional #define's from Time.c to Time.h by Todd Gruhn.

- work on stdin handling for comdraw, flipbook, graphdraw, and drawserv



November 2nd, 2001  ivtools-1.0

See CHANGES-0.9 for recent major changes.

Minor changes since Oct. 16th 2001 (ivtools-0.9.7):

- revise MANIFEST.comterp to reflect current state of comterp.

- fix comterp memcpy problem on 64 bit Alpha

- fix gcc-3.0.* build without ACE

- fix compilation of Time/Time.c on NETBSD.

- add :posteval flag to comterp help command in order to see which
commands are control constructs (post-evaluated, i.e. there arguments
are passed to them in an unevaluated state.  The result is:

  cond,for,help,if,list,next,posteval,postfix,stream,while

There are some post-evaluated operators as well.

- restore symid and symadd to be normal, non post-evaluated commands.
Didn't seem to be necessary, and making this change makes them
available for streaming.

- make confirmbox command return nil if Cancel is pressed.

- comterp operator streaming fixes, mostly along the lines of working
out nil termination in different circumstances.

- $ unary-prefix operator as a short-cut for stream command.  Useful
when copying the same stream many times in one command.

- each operator traverses a stream, exercising it until the end, and
returns the length count.

- make the AttributeValueList constructor that takes an
AttributeValueList* a truly deep copy.

- doc changes