Begin3 Title: xart Version: 19980417 Entered-date: 19980417 Description: mutAnt spawn of XPaint. unique mouse motion smoothing, X pixel functions, text context sensitive pro-active tips, plain vanilla dependancies (X, Xpm), general UI improvements, all XPaint features except "revert" Keywords: easy fun compact sourcecode unique freehand X paint diagrams fonts Author: humbubba@cqi.com (Rick Hohensee) Maintained-by: humbubba@cqi.com (http://cqi.com/~humbubba) Primary-site: sunsite.unc.edu/pub/Linux/apps/graphics/draw .4m xart-19980417.tgz Alternate-site: http://cqi.com/~humbubba/linux Original-site: http://cqi.com/~humbubba/linux Platforms: X11 ( devel. in Linux/gcc/libc5/X11R6 ) Copying-policy: free with authorship aknowledgement End 19980314-19980404 Rick Hohensee humbubba@cqi.com apr. 15 1998 Pixel functions! much renaming from quill to xart tool window menu for access to X Graphic Context pixel functions * operation.c "Fn" menu, callbacks to set gcFunction var. * Paint.h gcFunction global variable * main.c initialize gcFunction to 3, "copy" * cutCopyPaste.c XSetFunction calls for for pixel functions in "paste" function * (various)Op.c XSetFunction calls * Help.txt attempt to explain (and understand the graphical actions of) minterms more parent xvt info prompts * (various)Op.c text messages to xvt xart was called from with status and tips on current tool * operation.c text messages to xvt xart was called from giving pixel function status WHY file added TOUR file added CHANGES.quill renamed to CHANGES wrote xart.lsm fixed a bug in the makefiles for subdirs ( I hope). Thanks jcaldwel_ :o) changed the default permissions a bit. Thanks \amethyst, and thanks for calling xart a "cool hack". redundantly appended on-line help text to manpage, redundantly. mar 14 1998/mar 22 Rick Hohensee http://cqi.com/~humbubba/linux.html ["to-do"'s in brackets] * bitmaps most tool icons repainted, often using the icon's tool, some of which are now unintelligible in monochrome several additional brushes, including a few that are left in the plain .xpm format which causes them to color-alias in smudge or transparent mode if the Imakefile isn't told about them. A couple existing brushes were over-written with new ones. BRUSHNOTE comment file in re. brush file format and aliasing added quillOp.xpm easel background xbm for paintBox area, background.xbm paletteknife pix for "pick from screen", not used. xartIcon.xpm, in main source directory. * graphic.c major re-work of canvas window restructured menus from "file region" etc. to "storage clip move filters rgb size snap bg un ??" single palette area with 2-button palette "pots". What a pain. secondary buttons overlap primaries by 4 pixels to reduce spam factor moved command buttons to right of palette area, which involved changing the constraints for the palette eliminated palette area label string force vertical scrollbar on palette area changed MIN_PAT_WH to 12, palette pot size minimum [verbosify rangeSelect command label] "scrape palette" menu item removes all but black and white pots. bug warning printed to calling xvt. * XPaint.ad.in X resources. many menu labels verbosed, e.g. fill "change" to "all of color clicked", "fat bits" to "scope", "save" to "save(clobber orig.)", etc. default canvas size is 300x200 various window geom changes and other personal preferences lookup/"pick from screen" widget sized to not squish thinned scrollbars label for revert changed. Some of the palette save operations die in enableRevert, and I'd rather have palette editing than revert sorted and commented XPaint.ad.in * Local.config set fractal fill and tilt features to True [ they are "experimental", ffill doesn't use the colors in the palette, which it is supposed to, but I love it :o) ] added/set -Wall (Warn all) gcc option * quillOp.c new file implementing the quill tool which uses XDrawPoints for "nib" arrays and implements mouse motion smoothing. [ an XDrawLine version would support patterns, etc. and might be faster, but wouldn't do stuff like the "skippy" nib.] * operation.c added some fun fonts to tool window font pulldown, like X cursors and a 24 point font. necessary hooks for quill, menu, callbacks integerized info requested by transparent brush menu re-arranged tool icons into family groups * ops.h necessary hooks for quill * brushOp.c integer-ized smear and transparent code * iprocess.c rgb reductions base code printf()'s for filter text history feature in calling xvt added the Abuser filter * cutCopyPaste.c hooks for rgb, abuser so we're selected-region sensitive * image.h prototypes for rgb routines/callbacks * my ( Rick's) comments in the source usually have a ## in them * Help.txt.in general edit to reflect above tool families outline bugs/tips section ( near the end) [ configuration section] * DefaultRC several new colorbar patterns, added some nice neat tesselation patterns in b&w, like honeycomb and a deformed hounds-tooth check, and an eyeball snipped from a jpeg of an aspiring young actress in an audition situation. * main.c version text to calling xvt * moved .version to version, with all the related make hooks. * whatever else a diff turns up :o) [ make selections not a "tool" if possible, so freehand tools work independant of selections.] [ "invert selection" feature ] removed "revert" to original image feature, which broke some palette editing stuff. [ tool icon choice text window history] [ some form of translucent paste image] The "quickies" example images will be available seperately [ a BigPatterns palette file should be included ] ############################################################### from here down is xart's XPaint heritage. Wed Sep 3 19:31:07 1997 Torsten Martinsen * Help.txt, README, brushOp.c, chroma.c, color.c, colorEdit.c, dialog.c, fatBitsEdit.c, fileName.c, graphic.c, main.c, menu.c, misc.c, misc.h, pattern.c, text.c, xpaint.h, xpaint.man.in: Added Scott Nelson's patch to allow setting the visual from the command line. Fri Aug 22 08:14:22 1997 Scott D. Nelson * Version 2.5.1 includes the -visual flag. * Support for standard X visual syntax. Wed Aug 13 19:45:37 1997 Torsten Martinsen * ops.h, operation.c, XPaint.ad.in, Imakefile, Help.txt: Added DynPencil tool. Mon Aug 11 18:09:32 1997 Torsten Martinsen * README: Added SGI to list of platforms. Mon Jul 14 17:37:11 1997 Torsten Martinsen * selectOp.c: releasePolyBand(): Removed surplus 'mask' argument. Sat Jul 12 17:56:03 1997 Torsten Martinsen * PaintEvent.c, fatBitsEdit.c: Fixed bug where hot spot was offset to SE. * Local.config: Dont' mention DTRUNC_SNAP. Tue Jun 24 20:30:18 1997 Torsten Martinsen * README: Fixed .dk.dk typo (again!). Tue Jun 24 20:20:19 1997 Torsten Martinsen * XPaint.ad.in: Added new font/colour scheme from Bernd Johannes Wuebben . Sat May 31 08:29:23 1997 Torsten Martinsen 2.4.9 * Version 2.4.9 released. * Local.config: Don't hardcode CDEBUGFLAGS. * Imakefile: Don't distribute PGP* files. * brushOp.c: Don't crash on images where width or height is less than that of the brush. Wed May 7 05:53:50 1997 Torsten Martinsen * cutCopyPaste.c: Applied xword compatibility patch from Seth Alves . Fri May 2 05:54:04 1997 Torsten Martinsen * Help.txt: Updated range selection text as suggested by Rainer Dunker . Changed mail address. Wed Feb 5 19:08:45 1997 Torsten Martinsen * brushOp.c: Set numsymbols in XpmAttributes structure. Wed Jan 29 18:32:39 1997 Torsten Martinsen 2.4.8 * Version 2.4.8 released. * xpaint.man.in: New address. Mon Jan 27 06:45:46 1997 Torsten Martinsen * cutCopyPaste.c: If FILTERNEEDSSELECTION was defined, we got a SIGSEGV when running a filter. Reported by Sylvain Meunier . Sun Jan 26 20:45:07 1997 Torsten Martinsen * main.c: Patch from NIIBE Yutaka to handle workProc() correctly. Fri Nov 1 09:45:48 1996 Torsten Martinsen * Local.config: Added XPM_INCLUDE. * Imakefile: Added XPM_INCLUDE to DEFINES. * operation.c, main.c, brushOp.c: Removed 'X11' from "X11/xpm.h". Tue Oct 29 08:59:40 1996 Torsten Martinsen * Imakefile: Added dependencies on '.version'. Tue Oct 29 08:48:44 1996 Torsten Martinsen * fontSelect.c: Removed arbitrary limits on number of fonts. Reported by Sumit Bose . Fri Oct 25 13:20:32 1996 Torsten Martinsen * fatBitsEdit.c: Fixed FatBits cursor movement bug reported by Hideaki Nishimura . Fri Sep 27 06:17:31 1996 Torsten Martinsen * graphic.c: Fixed numbering screwup in definition of regionMenu[]. Thanks to nishimu@sdd.siznes.nec.co.jp (Hideaki Nishimura). Fri Sep 6 07:13:30 1996 Torsten Martinsen * operation.c: Fixed bug with XpmCreatePixmapFromData() call at line 1015. Thu Aug 29 05:24:30 1996 Torsten Martinsen * README.PNG: Added Greg Roelofs' patch of 28Aug1996. Mon Aug 26 05:40:41 1996 Torsten Martinsen * operation.c: OperationInit(): Set Xpm 'closeness' attribute when creating toolbox icons. Fri Aug 23 06:08:22 1996 Torsten Martinsen * operation.c: OperationInit(): Check that sufficient colors are available for toolbox icons. Wed Aug 7 07:10:07 1996 Torsten Martinsen * xpaint.man.in: Documented the 'patternsize' resource. Mon Aug 5 08:10:22 1996 Torsten Martinsen * Local.config: Added definition of DEPENDFLAGS. Added comment on AIX compilation flags. Thu Aug 1 12:59:32 1996 Torsten Martinsen * README: Re-included pointer to libgr. Encourage clear bug reports. Updated WWW page pointer. * main.c: SetIconImage(): Added fix from Matthias Braun: Check that XPM icon can be created. Wed Jun 19 19:02:29 1996 Torsten Martinsen * Paint.c: InitializeProc(): Always initialize 'undo' to avoid FatBits crashing. Tue Jun 18 10:04:47 1996 Torsten Martinsen * rw/readGIF.c: Cleaned up formatting. * rw/writeGIF.c: Added error checks for each call to fputc(). Mon Jun 17 11:35:24 1996 Torsten Martinsen * main.c: Removed call to XtSetLanguageProc(). * INSTALL: Included new patch from Webmaster Jim. Sun Jun 9 17:31:28 1996 Torsten Martinsen * rw/rwTable.c: Cleaned up formatting. Fri Jun 7 05:46:20 1996 Torsten Martinsen * README: Upped version #. Thu Jun 6 10:45:55 1996 Torsten Martinsen * misc.h: Line 22: Include _AIX in #if conditional. Mon Jun 3 07:08:12 1996 Torsten Martinsen * README: Added info on where to obtain libraries. * Local.config: PNG support is enabled by default. * .version: Initial revision Mon Jun 3 06:15:40 1996 Torsten Martinsen * Imakefile: Make sure XPaint.ad is made. * Imakefile: Make sure xpaint.man is made. * Imakefile: Include .version for setting version number. * Local.config: BSD: Added path to TIFF_LIB and JPEG_LIB. * readRC.c: Added prototype for mktemp() for AIX. Sun Jun 2 08:40:10 1996 Torsten Martinsen * Imakefile: Added README.PNG. * imageComp.c: Added missing #define for sortABC(). * Imakefile: Help.txt should be Help.txt.in. Fri May 31 06:38:41 1996 Torsten Martinsen * brushOp.c: Clear up a lot of Alpha cc warnings. * Imakefile: Fix include path for stupid Alpha compiler. * main.c: main(): argc is int, NOT Cardinal. * image.c: Clear up a lot of Alpha cc warnings. * fileName.c: Alphas use dirents too. * size.c: Fix: this should take care of the 'sigsegv-when-resizing' bug. * selectOp.c: Fix: prevents xpaint from terminating with an X-Error "invalid size in X_CreatePixmap" when the ellipse-shaped region is selected and one clicks the first mouse button on one point. Tue May 28 09:23:16 1996 Torsten Martinsen * xpaint.man: Now generated automatically. * main.c: Warning about data loss. Version number displayed in usage message. * imageComp.c, image.h: ImageCompress() takes an extra argument. * XPaint.ad: Now generated automatically. * Help.txt: Now automatically generated. * image.c, color.c: ImageCompress() takes an extra argument. * Local.config: PNG support added. * Imakefile: Automatic update of version # in xpaint.man and XPaint.ad. Tue May 28 07:45:08 1996 Torsten Martinsen * README: Improved text about needed libraries. * README: Version #. * xpaint.man.in, XPaint.ad.in: Initial revision * xpaint.man: Document -nowarn option. * README: Refer to README.PNG. * README.PNG: Initial revision * README: Added URL for XPaint. * Local.config: Added ARCH_DEFINES variable for architecture-specific defines. * Imakefile: Added ARCH_DEFINES to DEFINES. * Local.config: Removed space before argument to -L. Fri May 24 07:33:03 1996 Torsten Martinsen * protocol.c: Include stdio.h. * Local.config: Version #. * Imakefile: Added VERSION variable. * Local.config: Added Chuck Robey's BSD fix. * INSTALL: Added missing font fix from Webmaster Jim. Thu May 23 15:48:31 1996 Torsten Martinsen * main.c: Only call XtSetLanguageProc() if XtSpecificationRelease >= 6. * Imakefile: Removed XPAINT_TOP definition. * README: Refer to TODO list. * Imakefile: Added TODO. Wed May 15 09:26:56 1996 Torsten Martinsen 2.3? * XPaint.ad: Cleaned out 'nudge' resources. Inc'ed version #. * xpaint.man: Inc'ed version #. * graphic.c: Added support for setting of pattern size via resource. * protocol.c: AddDestroyCallback(): Added error check. Mon May 13 08:17:52 1996 Torsten Martinsen * Paint.c: Fixed warning. * README: Updated for 2.3. Mon May 13 08:02:07 1996 Torsten Martinsen * Imakefile, XPaint.ad: Updated version number. Sun May 12 08:17:01 1996 Torsten Martinsen * PaintRegion.c: doCallBacks(): Fix warning. Fri May 10 09:53:06 1996 Torsten Martinsen * Local.config: Cleaned up CDEBUGFLAGS. Removed -DNEED_STRCASECMP. * fatBitsEdit.c: FatCursorOff(): Now also works correctly for FatBits popup. * misc.h: Added Gary Love's patch for SGI and HPUX. Thu May 9 11:21:44 1996 Torsten Martinsen * brushOp.c: FatCursorOff() now takes an argument. * fatBitsEdit.c: Fixed FatCursor bug. * misc.h, iprocess.c, main.c, misc.c, sprayOp.c, texture.c, xpaint.h: Cleaned up use of RANDOM. Wed May 8 09:52:40 1996 Torsten Martinsen * Local.config: Added lots of portability fixes. * iprocess.c: ImageSpread(): Replaced random() with RANDOM. * misc.h: Added SunOS 4.1 portability fix. * Paint.c: Fixed the 'Image/Change Size' bug. * PaintUndo.c: Added ERRORBEEP feature. Tue May 7 11:18:21 1996 Torsten Martinsen * Local.config, misc.h, xpaint.h: Added BSD portability fixes by Chuck Robey . Fri May 3 16:15:58 1996 Torsten Martinsen * Local.config, xpaint.h, main.c: Added Solaris patch. Thu May 2 07:45:24 1996 Torsten Martinsen * Imakefile: Fixed tar target. * xpaint.man, XPaint.ad, Imakefile: Updated version number. * Paint.c: Bugfix: new undo stuff made FatBits crash. Tue Apr 30 15:38:06 1996 Torsten Martinsen * rw/rwTable.c: Removed obsolete #ifdef HAVE_XPM clause. Tue Apr 30 11:39:12 1996 Torsten Martinsen * graphic.c: undosizeOkCallback(): Changed 'Levels (1-20)' to 'Levels (0-20)'. Tue Apr 30 11:11:32 1996 Torsten Martinsen * Paint.c: SetValuesProc(): Initialize undo system when changing image size. * PaintUndo.c: Fixed the case where undosize is zero. Tue Apr 30 08:57:31 1996 Torsten Martinsen * Imakefile: Added xpaint.man to TEXT variable. Mon Apr 29 05:03:50 1996 Torsten Martinsen * Imakefile: Fixed path to Local.config. Sat Apr 20 13:02:23 1996 Torsten Martinsen 2.2 * Released 2.2 to the largely unsuspecting public. Fri Apr 19 09:56:38 1996 Torsten Martinsen * cutCopyPaste.c: Removed testing code. * README: cert takes no arguments. * cert: Don't use arguments. * Imakefile: Prevent multiple inclusion of rw/libpnmrw.h and rw/rwTable.h in filelist. * PaintUndo.c: Ready for release. * PaintP.h: 'valid' renamed to 'pushed'. * Imakefile, Help.txt: Updated for release. * Local.config: Cleaned up for release. * cert: Added blurb about public key. * Paint.c: Undo fixed. * help.c: Reformatted. * fillOp.c: buildFractalPixmap(): Added default clause to switch. * INSTALL: Refer to Local.config. Thu Apr 18 07:47:19 1996 Torsten Martinsen * XPaint.ad: Added 'Canvas*menu*edit*redo.label'. Wed Apr 17 19:58:26 1996 Torsten Martinsen * Paint.c: Make undo stacks circularly linked. Keep old canvas pixmap when changing # of undo levels. * PaintP.h: Removed obsolete members. * Paint.c: Fixes to code for changing # of undo levels. Cleaned up. * PaintRegion.c: Cleaned up. * PaintUndo.c: Fixed [Un,Re]doPush() bug. Changed 'base' to 'current'. * graphic.c: undosizeCallback(): 'Buffer' changed to 'level' throughout. * PaintP.h: Support new stack-based undo scheme. 'base' member renamed to 'current'. * Paint.c: Support new undo scheme. * PaintUndo.c: Changed to new stack-based undo algorithm. Tue Apr 16 15:11:53 1996 Torsten Martinsen * README: Reworked completely. * Local.config: Cleaned up. * Imakefile: Added certification support. * Help.txt: Updated for 2.2. * cert: Initial revision * README: Updated for 2.2 * xpaint.man: Initial revision * XPaint.ad: Added 'Canvas*menu*other*undosize.label'. * XPaint.ad: Updated version number. * cutCopyPaste.c: Reformatted. Added Redo to canvas popup menu. * XPaint.ad: Added Canvas*paintBox.popup-menu.redo.label. Wed Apr 3 14:29:15 1996 Torsten Martinsen * Changed formatting of all source to K&R. Tue Feb 27 12:27:45 1996 Torsten Martinsen * color.c: ColorPickerUpdateMap(): New function. New member 'bg' in LocalInfo so that we only have to look up the background pixel value the first time. * chroma.c: ChromaDialog now uses the palette of the canvas. * grab.c: Added comments. DoGrabImage() returns Image *. Mon Feb 26 22:34:47 1996 Torsten Martinsen * graphic.c: Added 'Select Color Range' button to the right of palette area. * fillOp.c: Fixed nasty 'XImage-data-is-signed-so-macro-is-screwed-up' bug. * color.c: Cleaned up. * chroma.c: ChromaDialog(): Accept a Palette parameter and use that for calling ColorPickerPalette() instead of ColorPicker(). * operation.c: Removed ChromaDialog stuff. * XPaint.ad: Changed 'XPaint*chroma' to 'Canvas*chroma'. * Imakefile: Added chroma.c * chroma.c: Initial revision * selectOp.c: Split out chroma stuff into chroma.c * iprocess.c: Cleaned up histogram stuff. Added ImageThicken() - #define'd out for now. * graphic.c: Cleaned up. * color.c: createBarText(): Fixed value for scrollbar resource 'XtNwidth'. * color.c: createBarText(): Changed incorrect scrollbar resource 'XtNlength' to 'XtNwidth'. * Local.config: Removed the #define HaveXPM stuff. * Help.txt: Added doc for Directional Smooth. Rearranged doc for Filter commands. * operation.c: OperationSelectCallAcross(): Also set the Lasso popup. * graphic.c: Added Directional Smooth filter. Reorganized Filter menu. * iprocess.c: ImageNormContrast(): Call ImageHistogram(). * cutCopyPaste.c: StdRegionDirFilt(): Added. * XPaint.ad: Canvas*menu*filter*dirfilt.label: Added. * iprocess.c: ImageSmooth(): Free convolution matrix. ImageDirectionalFilter(): Added. Sun Feb 25 12:53:13 1996 Torsten Martinsen * INSTALL: Removed USE_DRAND stuff. * hash.c: Removed unused code. * fatBitsEdit.c: FatbitsUpdate(): Accept -1 as zoom factor. * size.c: sureCallback(): Call FatbitsUpdate(). * fatBitsEdit.c: FatbitsUpdate(): Only reposition view if the zoomed canvas is larger than the viewport. Sat Feb 24 15:51:16 1996 Torsten Martinsen * fatBitsEdit.c: Changing the zoom on the canvas now resizes and repositions the fatbits cursor. Fri Feb 23 11:53:28 1996 Torsten Martinsen * graphic.c: zoomOkCallback(): Call zoomUpdate(). * fatBitsEdit.c: Added the zoomUpdate() function to correct FatBits cursor window size when changing canvas zoom factor. Fri Feb 23 11:12:42 1996 Torsten Martinsen * fatBitsEdit.c (zoomUpdate): Added. * graphic.c (GraphicOpenFile): Made GraphicOpenFile() call GraphicOpenFileZoom instead of duplicating code. Thu Feb 15 11:03:50 1996 Torsten Martinsen * fatBitsEdit.c (FatCursorSet): Free old fatcursor if present. (FatCursorSet): Don't insert event handlers here. * Paint.c (InitializeProc): Init menuwidgets member. Wed Feb 14 15:02:02 1996 Torsten Martinsen * Paint.c (resources): Added resource for XtNfilename. * graphic.c: Removed all traces of nudge box code. (doRevert): Use work procedure to call XtDestroyWidget(). Mon Feb 12 11:45:23 1996 Torsten Martinsen * brushOp.c (wbrush): Manual clipping implemented. (smear): Same. Thu Feb 8 10:33:23 1996 Torsten Martinsen * graphic.c: Junked EnableRevert() and EnableLast(). * brushOp.c (wbrush): Transparent brush now has soft edge. Wed Feb 7 13:06:34 1996 Torsten Martinsen * brushOp.c (setCursor): Values in brushbits array are proportional to distance from center of brush, normalized to a maximum of 100. (smear): Mix colours according to values in brushbits array. Removed FATCURSOR conditionals. * selectOp.c (keyPress): Detect cursor keys and move region accordingly. * PaintRegion.c (RegionMove): New function, called from selectOp.c to move region using cursor keys. * selectOp.c (motion): Return if event->state is zero, i.e. no buttons pressed. * cutCopyPaste.c (StdUndoCallback): If the region has not been moved or resized, call PwRegionOff() before doing the actual undo and restore the region selection afterwards. * PaintRegion.c (PwRegionOff): New function, like PwRegionFinish() but doesn't write region. * PaintRegion.c (writeCleanRegion): Added 'write' argument. Only call writeRegion() if this is True. Tue Feb 6 12:08:19 1996 Torsten Martinsen * fillOp.c (similar): Returns 1 if pixel matches start pixel within current colour delta. (deltafill): Like fill(), except we use similar() instead of ==. (press): Added switch to handle calling deltafill() when appropriate. Mon Feb 5 13:32:45 1996 Torsten Martinsen * operation.c (tfillPopup): Added option for selecting fill colour tolerance. * selectOp.c (finishPolyBand): Added call to PwUpdateDrawable() to avoid leaving stray lines behind. Sat Feb 3 11:03:16 1996 Torsten Martinsen * color.c (update): If default visual is statically allocated, don't use XStoreColor(). * Imakefile (MISC): Added XPaintIcon.xpm. * main.c (workProc): Added 'done' kludge to try to fix problem with workProc being called too many times. * size.c (sureCallback): Set dirty flag. * misc.c (AutoCrop): Added. Also corresponding menu changes in graphic.c. Fri Feb 2 10:21:37 1996 Torsten Martinsen * PaintRegion.c (PwRegionAddScale): Call PwRegionTear() so that flipped region stays on screen. (regionGrab): If Shift is pressed, constrain rotation to multiples of 15 degrees. (regionButtonPress): Store root window coords in lastX/Y. (regionGrab): If Shift is pressed, constrain movement to horizontal or vertical. * PaintP.h (PaintPart): Added lastX, lastY members. * fileName.c (stdSaveCommonCallback): Show busy cursor while saving. Thu Feb 1 11:18:30 1996 Torsten Martinsen * selectOp.c (finishPolyBand, pressPolyBand, motionPolyBand, releasePolyBand, SelectPolyAdd, SelectPolyRemove): Handles selecting irregular polygons. * Help.txt (Fill): Document change mode. * circleOp.c (draw): Don't draw circles just because 'center' is ticked. Also, simplified quite a bit. * boxOp.c (press): Don't draw squares just because 'center' is ticked. * operation.c: Only use Xpm icons. Wed Jan 31 21:18:38 1996 Torsten Martinsen * iprocess.c (ImageQuantize): Completed. Tue Jan 30 00:00:36 1996 Torsten Martinsen * graphic.c (doContrast): Displays histogram image in text dialog. * iprocess.c (ImageHistogram): Added ruler to histogram image. * PaintRegion.c (regionSetGripCursors): Removed second column of cursors array, as it was not used. * iprocess.c (ImageHistogram): Builds histogram for an image, both as an array of ints and as an image. (ImageNormContrast): Now assumes that ImageHistogram has already been called for the image. * image.c (ImageNewBW): Set image->isBW to True. Mon Jan 29 09:13:12 1996 Torsten Martinsen * text.c (textPrompt): (Previously TextPrompt) Extra parameter 'pix' allows displaying a pixmap in the dialog. (TextPrompt): Calls textPrompt. (TextPromptPixmap): Entry point for displaying pixmap in text dialog. * selectOp.c (SelectChromaDialog): Call ColorPickerSetFunction to set up for calling deltaSP() when grabbing colour. (deltaSP): Just sets 'pixel' member in DialogInfo structure. * color.c (ColorPicker): Set l->map so that it works on TrueColor visuals. * main.c (SetIconImage): Removed unused 'flag' parameter. * xpaint.man: Description of RC file improved a bit. * readRC.c (ReadDefaultRC): Don't use compiled-in defaults if a default file is specified with -rcFile. Fri Jan 26 11:40:26 1996 Torsten Martinsen * brushOp.c (setCursor): Call FatCursorSet (conditional on FATCURSOR). * fatBitsEdit.c (AddSegment, CreateFatCursor, FatCursorDraw, FatCursorAddZoom, FatCursorRemoveZoom, FatCursorSet): Routines for handling outline cursors for FatBits popup completed. Bitmapped cursors junked due to server limits on cursor size. Conditional on FATCURSOR. * brushOp.c (motion): Return if event->state is zero, i.e. no buttons pressed. Tue Jan 23 01:20:59 1996 Torsten Martinsen * graphic.c (solarizeOkCallback, doSolarize): Added to enable setting threshold parameter. * fatBitsEdit.c: Numerous changes, all conditional on FATCURSOR define. Mon Jan 22 10:24:42 1996 Torsten Martinsen * fatBitsEdit.c (FatbitsEdit): Set cursor for fatbits popup from parent PaintWidget's fatcursor resource. * PaintP.h (PaintPart): Added fatcursor member. * graphic.c (graphicCreate): Use ADDCALLBACK macro to simplify code a bit. * cutCopyPaste.c (ccpAddRegionFlipX through ccpAddRegionBlend): Junked, instead call XtAddCallback directly. * graphic.c (graphicCreate): Items in regionMenu are always sensitive whether there is a selection or not. * cutCopyPaste.c (stdImgProcess): If no selection, use entire canvas. (Old behaviour can be reinstated by defining FILTERNEEDSSELECTION). * iprocess.c (ImageSolarize): Added function. (ImageQuantize): Added dummy. * graphic.c (doRevert): Set pointer to busy shape while reverting. (doRevert): Set menu snap status correctly. (doRevert): Also save background colour. (graphicCreate): Get width and height of pixmap *before* using them. * brushOp.c (BrushAdd, BrushRemove, SmearAdd, SmearRemove): Store brushPalette and brushGC in LocalInfo structure. This automatically handles multiple calls correctly. (BrushInit): Create initial brushImage. (selectBrush): Free old and create new brushImage. Fri Jan 19 09:07:29 1996 Torsten Martinsen * graphic.c (rotate): Use rotateAngle instead of snapSpacing as default angle of rotation. (GraphicOpenFileZoom): Like GraphicOpenFile(), but with 'zoom' parameter - passed to graphicCreate(). Also returns the PaintWidget. (doRevert): Remember zoom factor of image. * brushOp.c (setCursor): Compute numpixels member. (BrushRemove): Fixed SIGSEGV bug. (SmearRemove): Fixed SIGSEGV bug. (BrushAdd, BrushRemove): If called more than once, behave appropriately. * PaintEvent.c (opHandleEvent): Made Snap round to closest grid line instead of truncating to next lower value. (Made conditional on TRUNC_SNAP define). Thu Jan 18 09:46:56 1996 Torsten Martinsen * cutCopyPaste.c (stdImgProcess): Store current background colour in ImgProcessInfo for use by image processing routines. * selectOp.c (chromaCut): Commented out weird statement that dereferences an uninitialized pointer. * cutCopyPaste.c (StdRegionTilt): Added. * graphic.c (regionMenu): Added Tilt item. (tiltRegionOkCallback): Added. (tiltRegion): Added. (graphicCreate): Add callbacks for Tilt ietm. Wed Jan 17 10:06:41 1996 Torsten Martinsen * brushOp.c (smear): Use XGetSubImage instead of XGetImage to avoid creating and destroying the XImage each time. The image is created by SmearAdd and BrushSelect. (wbrush): Use XGetSubImage instead of XGetImage to avoid creating and destroying the XImage each time. The image is created by BrushAdd and BrushSelect. (wbrush): Added limit check to avoid XGetSubImage crashing on us. * image.c (PixmapToImage): Junked 'htable' variable - never used. Mon Jan 15 09:01:40 1996 Torsten Martinsen * brushOp.c (BrushSetMode): Added. * operation.c (brushPopup): Added Opaque/Transparent item. * brushOp.c (wbrush etc.): Added WBrush code. Fri Jan 12 09:10:53 1996 Torsten Martinsen * graphic.c (EnableRevert): Added. (GraphicOpenFile): Set filename member and call EnableRevert(). (graphicCreate): Now returns the PaintWidget. Previously, the return value was always equal to the 'shell' argument. Note: GraphicOpenFile() checks the return value of graphicCreate() - this is still not useful. (doRevert): Return immediately if the image was not changed since last save. Revert actually works now! * fileName.c (stdSaveCommonCallback): Set filename when save is succesful. * PaintP.h: Added filename member to PaintWidget. * Paint.c (DestroyProc): Free filename storage. (InitializeProc): Initialize filename member to NULL. * Help.txt (filterMenu): Added help for Normalize Contrast filter. * graphic.c (RG_CONTRAST_ITEM): Added to menu. * iprocess.c (ImageNormContrast): Added. Histogram equalizes contrast of an image. * cutCopyPaste.c (StdRegionContrast): Added. * xpaint.man: Formatting of options made consistent with most other X man pages. Explanation of RC file syntax improved. Thu Jan 11 12:45:40 1996 Torsten Martinsen * xpaint.man: Added documentation on RC file format. Added doc on -rcFile -popped, and -help options. Also slight formatting changes. * readRC.c (readRC): Fixed bug where brushes in the RC file was treated as patterns. * Imakefile: Added dependencies for all object files. * iprocess.c (ImageAddNoise): Changed to use Gaussian noise. * sprayOp.c (draw): Use gauss() in misc.c. Static function gauss() removed. * misc.c (gauss): Function to produce a random normal variable. Wed Jan 10 11:43:14 1996 Torsten Martinsen * Major prototype overhaul and cleanup. * operation.c (struct IconListItem): Removed 'callback' member, as it is never used. * iprocess.c (ImageSmooth): Uses N x N matrix. * graphic.c (doSmooth): Added query for mask size. * iprocess.c: Use ImgProcessInfo structure for parameters. * graphic.c (oilPaintOkCallback, ..., doDespeckle): Use ImgProcessInfo structure for parameters. * iprocess.c (convolve): Changed to allow N x N matrices. Calls to convolve() changed accordingly. * fillOp.c (buildGradientPixmap): Bugfix for Linear fill. Tue Jan 9 10:41:16 1996 Torsten Martinsen * fillOp.c (buildTexturePixmap): Added Linear gradient fill. (buildTexturePixmap): Added Conical gradient fill. * Help.txt: Added help for gradient fill. Mon Jan 8 10:00:00 1996 Torsten Martinsen * operation.c (tfillMenuCallback): Allows setting H/V offset and Pad for Radial Fill. * fillOp.c (TfillSetParameters): Added. See preceding entry. * operation.c: Texture Fill operator added. * fillOp.c (press): Extra code to handle texture fill. (buildTexturePixmap): This function builds a Pixmap containing the desired texture. (TFillAdd, TFillRemove, TFillSetMode, TFillGetMode): Implements Texture Fill operator. * Local.config (UseLargeIcons): Added this define to control search path for icon files. * Moved old icons to ./bitmaps/old. Fri Jan 5 20:22:15 1996 Torsten Martinsen * iprocess.c (ImageSpread): Removed 'iterations' parameter. * graphic.c (doSpread): Removed 'iterations' parameter, now that we have Repeat Last. * cutCopyPaste.c (stdImgProcess): Unified this with inplaceImgProcess. (stdLastImgProcess): Added function. * Help.txt: Added doc for Repeat Last. * graphic.c (RG_LAST_ITEM): Added 'Filter/Repeat Last' menu item. (doLast): Added function. * iprocess.c (ImageDespeckle): Added function. * Help.txt: Added Filter menu (oops). Added doc for Despeckle filter. * graphic.c (RG_DESPECKLE_ITEM): Added 'Filter/Despeckle' menu item. * rw/writeJPEG.c (WriteJPEG): Writing of greyscale JPEG files works now. * rw/readJPEG.c (ReadJPEG): Loading of greyscale JPEG files works now. * brushOp.c (press): Got SIGSEGV when using Brush tool before Smear tool had been used. Fixed. Wed Jan 3 21:42:45 1996 Torsten Martinsen * rw/readJPEG.c (ReadJPEG): Prepare for handling of greyscale files. * rw/writeJPEG.c: Created file. * rw/rwTable.c (RWtable): Added entry for WriteJPEG(). Wed Dec 27 12:07:34 1995 Torsten Martinsen * brushOp.c (struct BrushItem): Added 'brushbits' member to store fast-access mask for Smear operation. (setCursor): Initialize 'brushbits' member. This fixes the 'uses-wrong-brush-mask' bug. Tue Dec 26 22:06:54 1995 Torsten Martinsen * hash.c (HashAll): Out-#ifdef'd unused functions. * palette.c (addColor): Now this works like I think it should. ## Are you sure? * brushOp.c (smear): Fixed palette allocation bug. This operation actually works now! * palette.c (allocN): Removed 'flags' parameter, as it is never used. (allocN): Removed 'ncolor' parameter, as it is always 1. (PaletteAlloc): Changed allocN() call. Mon Dec 18 09:30:40 1995 Torsten Martinsen * New 40 x 40 versions of all icons. [f]blobOp bitmap files renamed to [f]freehandOp for better consistency. * brushOp.c (SmearAdd, SmearRemove): Added functions. (draw): Added 'if' clause to handle Smear tool. Added 'isSmear' member to LocalInfo struct. * bitmaps/brushOp.xpm: New 40x40 icon. * Imakefile: Made operation.o depend on bitmaps. Sat Dec 16 17:38:49 1995 Torsten Martinsen * graphic.c (doSpread): Interface to Spread changed to allow selecting # of iterations. * iprocess.c (ImageSpread): Changed to perform several iterations. * XPaint.ad, graphic.c: Split Region menu up into Region and Filter menus. All image processing functions are now in the Filter menu, while the Region menu is reserved for Rotate, Crop, Nudge, and Reset. * Help.txt (smear): Added brief help text for Smear tool. * bitmaps/smearOp.xpm: Added corny icon for Smear tool. * selectOp.c (SelectChromaDialog): Don't SIGSEGV when selecting 'Select Range...' in Select tool popup. * graphic.c (doRevert): Set size of image to correct values. Still doesn't work, though. Fri Dec 15 13:05:35 1995 Torsten Martinsen * image.h (ImagePixel): Fixed nasty missing-parentheses-around-args bug in this macro. * graphic.c (doRevert): Added call to PwRegionFinish() to make sure the region is not active after reverting. * cutCopyPaste.c (inplaceImgProcess): Added this function to enable ImageSpread to be implemented more efficiently. * iprocess.c (ImagePixelize): Wrote function. (ImageSpread): Wrote function. Wed Dec 13 00:01:52 1995 Torsten Martinsen * graphic.c: Added skeleton functions for Blend, Spread, and Pixelize items. (oilPaintOkCallback): Added sanity check for mask size. (addNoiseOkCallback): Added sanity check for noise variance. * Help.txt: Added missing doc on Oil Paint effect. Added doc on Blend, Spread, and Pixelize items. * graphic.c (regionMenu): Added Blend, Spread, and Pixelize items. Tue Dec 12 13:01:05 1995 Torsten Martinsen * graphic.c (oilPaint): Added query for mask size. * iprocess.c (ImageOilPaint): Added variable mask size. * graphic.c (cropToRegion): Added function. * PaintRegion.c (RegionCropToRegion): Added function. Fri Dec 8 09:22:38 1995 Torsten Martinsen * Imakefile: Created RWSRC etc. variables. * rw/readJPEG.c: Support for reading JPEG with IJG release 6 works. Still needs improved error reporting. Wed Dec 6 14:03:09 1995 Torsten Martinsen * Cleaned up various prototypes and removed unused variables. * 'Add Noise' function is completed for now. Later add gaussian option. Sun Dec 3 01:34:44 1995 Torsten Martinsen * random.c: Added file with RNG code from Phoenix. * cutCopyPaste.c (ccpAddRegionAddNoise): Added function. (StdRegionAddNoise): Added function. * iprocess.c (ImageAddNoise): Added function. * graphic.c: Revert function completed. Does not work if the size of the image has been changed. Sat Dec 2 18:59:25 1995 Torsten Martinsen * Indented all files. * graphic.c (doRevert): Started adding 'Revert...' item in canvas menu. ## slackware 3.2 supplies xpaint with gcc snapshot string of 950518 ## and text strings stating ver. 2.1 ## this version does not seqfault on save as... in palette edit window