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) 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 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 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