Tue Jul 6 19:58:48 MEST 1999 Sven Neumann <sven@gimp.org>
* app/fuzzy_select.c: give user feedback on the threshold
* app/paintbrush.c: use an optionmenu for the gradient type
instead of using 4 radiobuttons
* app/blend.c: indentation paranoia
Hopefully I have merged in Michaels changes correctly ...
--Sven
1999-07-06 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/airbrush.c
* app/blend.c
* app/bucket_fill.c
* app/clone.c
* app/convolve.c
* app/dodgeburn.c
* app/eraser.c
* app/ink.c
* app/paintbrush.c
* app/pencil.c
* app/smudge.c: get opacity/paint mode from the current context
(currently always the user context).
* app/gimage_mask.c: the "stroke" command uses the paintbrush's
settings if the current context is the user context and we are in
per-tool paint options mode.
* app/context_manager.[ch]
* app/paint_options.h
* app/preferences_dialog.c
* app/tool_options.c
* app/tools.c: moved the global/per-tool paint options switching
to the context manager. The tool options themselves only contain
the widgets for them now. This should fix the segfaults happening
in per-tool mode.
Removed the disclaimer from the prefs. dlg. as it seems to work
now. The impl. in the context manager however is still a hack.
* app/brush_select.c
* app/brushes_cmds.c
* tools/pdbgen/pdb/brushes.pdb: same as above.
* app/lc_dialog.c: minimal code reduction. No functionality changed.
Mon Jul 5 20:39:42 BST 1999 Austin Donnelly <austin@gimp.org>
* app/levels.c: change from greyscale bars to colour ones similar
to curves.c. Is this any use to people? If not, we can
always revert it.
1999-07-02 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/[all tools]: the Tool structure is now allocated by a common
constructor which sets default values and provides default tool
action functions. To get rid of much code duplication there should
be a object hierarchy of tools.
* app/context_manager.c
* app/tools.[ch]: create and destroy private contexts for the
paint tools on startup and exit. They are not used yet.
* app/interface.c
* app/menus.c
* app/tools.h: num_tools is now exported in tools.h
* app/commands.c
* app/gdisplay.c
* app/menus.c: made "Toggle Selection" a toggleable menu item.
1999-06-30 Sven Neumann <sven@gimp.org>
* app/crop.c (crop_automatic_callback): Crop now does
AutoShrink -- the algorithm starts with the interactively
selected crop area and tries to shrink that instead of
always starting from the corners.
* plug-ins/helpbrowser/helpbrowser.c: cosmetic changes
--Sven (using Mitschels account)
1999-06-26 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/[all tool related files]
* app/commands.c
* app/disp_callbacks.c
* app/gdisplay.c
* app/gimage.c
* app/interface.c: hopefully fixed the bugs that appeared with my
last fix. And some more changes...
- Slightly changed the conditions which cause the tools to be
re-initialized on button_press events and the global
initialisation functions.
- The dialog tools now explicitly set tool->gdisp_ptr so they can
be properly hidden on display deletion.
- Create the crop info dialog only once and avoid ugly redraw bugs
by blocking the sizeentries' signal when initializing them.
- Standardized the tools_new_<tool>() functions. They are
scheduled to be moved to a common constructor in tools.c
- Various stuff...
1999-06-23 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/brightness_contrast.c
* app/by_color_select.c
* app/curves.c
* app/disp_callbacks.c
* app/histogram_tool.c
* app/hue_saturation.c
* app/levels.c
* app/posterize.c
* app/threshold.c:
Factored out the cleaning up code to the tool dialog's "cancel"
callbacks because they are called from every function which is
aborting the tool. This should fix the remaining segfaults.
I probably killed a feature of "Levels". The tool wanted to
preserve it's drawable all the time, so it was possible to select
colors from other displays. If this was the intended behaviour,
please flame me and I will try to set the "preserve" flag
correctly.
* plug-ins/common/Makefile.am: "struc" was in the Makefile but not
in the directory.
1999-06-21 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/context_manager.c: namespace cleanups.
* app/commands.[ch]
* app/menus.c: moved the "Toggle Selection" menu entry to "View",
sprinkled some separators and made the layers/channels/paths popup
menus consistent with Tigert's last ops buttons change.
* app/fileops.c
* app/plug_in.c: check for gdisplay_active() returning NULL in
some more places.
* app/[all tool related files]:
- Turned the ToolAction and ToolState #define's into typedef'ed
enums, so the compiler can do some more sanity checking.
- Removed one more unused global variable "active_tool_layer".
- Removed some #include's from tools.c.
- Standardized the individual tools' structure names.
- Moved showing/hiding the tool options to separate functions.
- Stuff...
* app/commands.c
* app/disp_callbacks.c
* app/gdisplay.c
* app/tools.c: fixed the segfaults which happened when the image
of one of the tools which have dialogs (levels/posterize/...) was
deleted. My approach was to do stricter sanity checking and to set
some gdisplay pointers correctly where appropriate, so I can't
tell exactly where the bug was.
The curves tool now(??) updates on every _second_ display change
only, which is really obscure.
Finding/changing the display to operate on should definitely be
done by connecting to the user context's "display_changed"
signal.
* app/gimpset.c: emit the "remove" signal _after_ removing the
pointer from the set. If this was not a bug but a feature, please
let me know, we'll need two signals then.
1999-06-19 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/gimpcontext.[ch]: added some functions. Still does nothing.
* app/bezier_select.c
* app/devices.c
* app/tools.[ch]: removed global variable active_tool_type
because it was always equal to active_tool->type.
* README.win32: Mention using GNU gettext.
* config.h.win32: Enable NLS stuff. Remove the X11 & Unix vs. Win32
feature test macros, we use those from glibconfig.h and gdkconfig.h.
* app/makefile.msc: Use gettext. New object files.
* app/batch.c: No need to include <io.h> on Win32.
* app/errorconsole.c
* app/plug_in.c
* app/tile_swap.c: Include <glib.h> early to get Win32 feature
test macros from <glibconfig.h>.
* app/gimpset.c: Remove unnecessary (?) warning.
* app/main.c
* libgimp/stdplugins-intl.h: If no LOCALEDIR defined
(as on Win32), use the "locale" subdir in gimp_data_directory().
* app/palette.c: Open palette file in text mode.
* app/session.c
* app/text_tool.c: Use GDK's GDK_WINDOWING feature test macro
if available, not WINDOWS_DISPLAY.
* libgimp/gimpfeatures.h.win32: Correct GIMP_VERSION.
* libgimp/makefile.msc: Use gettext.
* plug-ins/makefile.msc: Use gettext. Add some missing
plug-ins. Advice how to build "unofficial" plug-ins.
* plug-ins/FractalExplorer/FractalExplorer.c
* plug-ins/faxg3/faxg3.c
* plug-ins/gbr/gbr.c
* plug-ins/gz/gz.c: Include <glib.h> early.
* plug-ins/tga/tga.c: Include config.h, use HAVE_UNISTD_H.
worked here due to a bug in icewm. Should work much better now, also it still
isn't perfect (yet).
Had to change the standard toggle key for all toggleable tools to
<Ctrl> since <Shift> collides with line drawing in the Convolver tool.
--Sven
1999-06-06 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/Makefile.am
* app/lc_dialog.[ch]
* app/lc_dialogP.h
* app/paths_dialogP.h: new files
* app/channels_dialog.[ch]
* app/layers_dialog.[ch]
* app/layers_dialogP.h
* app/paths_dialog.[ch]
* app/menus.[ch]
* app/file_new_dialog.c: modified
- Moved the toplevel L&C dialog code to lc_dialog.[ch]. Only
these files need knowledge about how to create/update/...
the sub-dialogs, so the corresp. functions are defined in
lc_dialogP.h.
- The popup menus are now created by menus.c. The command
callbacks are defined in [layers|channels|paths]_dialog.h.
- Private functions to be used by "friend files" are defined in
[layers|paths]_dialogP.h.
- Changed the order of the ops_buttons in the paths dialog to
match the order in the layers and channels dialogs.
- The paint mode menu and preview stuff still needs to go out of
layers_dialog.[ch].
- I'm not sure about the keybindings in the layer dialog's "Stack"
submenu because the list widget has it's own idea of PageUp/Down.
- Hopefully fixed the update problem with new images by calling
lc_dialog_flush() after creating a new image.
* app/app_procs.c
* app/bezier_select.c
* app/commands.c
* app/floating_sel.c
* app/gdisplay.c
* app/gimage.c
* app/gimage_mask.c
* app/paint_core.c
* app/preferences_dialog.c
* app/transform_core.c
* app/undo.c: changed #include's according to the new L&C file
structure.
Sun Jun 6 14:19:08 BST 1999 Andy Thomas <alt@gimp.org>
* app/bezier_select.c
* app/paths_dialog.c
Applied bezier/paths patches supplied by David LE CORFEC.
These fix a couple of segv. problems.
1999-05-31 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/info_dialog.c
* app/rotate_tool.c
* app/scale_tool.c: fixed some very strange grid redraw bugs which
were caused by unblocked sizeentry signals. It's generally a bad
idea to connect to a sizeentry's signal before initialization.
Removed the workaround for the gdk assert failures about
"gc != NULL" because the signals were the real reason.
* app/transform_core.c: originally wanted to fix the bug here but
ended up with just some function headers made ansii compliant.
1999-05-31 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/commands.c
* app/crop.c
* app/file_new_dialog.c
* app/info_dialog.[ch]
* app/interface.c
* app/layers_dialog.c
* app/resize.[ch]
* app/rotate_tool.c
* app/scale_tool.c
* app/shear_tool.c: finished the float->double migration for
resolution values. Standardized the order of function calls which
initialize sizeentries. Fixed some off-by-one errors by using
correct double->int casting. Use the g* counterparts of int and
double in some places. Various code cleanups.
* app/preferences_dialog.c: same changes as above plus a cleaner
implementation of the mem_size_unit stuff. The whole dialog should
behave like before.
* configure.in: Check for mmap.
* app/makefile.msc: Depend on gimpi.lib.
* app/app_procs.c (app_init): Fix gccism: Allocate filenames (an
array with non-constant size) dynamically.
* app/{datafiles,fileops,general,install,module_db,temp_buf}.c:
Include glib.h before standard headers, because of certain obscure
details related to compiling with gcc on Win32.
(If you really want to know: glib.h defines he names of POSIXish
(but non-ANSI) functions as prefixed with underscore, because
that's how they are named in the msvcrt runtime C library we want
to use. However, defining stat as _stat causes some problems if
done after including the mingw32 <sys/stat.h>. So, it's easiest to
include <glib.h> early.)
* app/main.c: Use _stdcall and __argc, __argv with MSC, but
__attribute__((stdcall)) and _argc, _argv with gcc. Don't print
the "Passed serialization test" message on Win32. (It would open
up an otherwise unnecessary console window.)
* app/paint_funcs.c (gaussian_blur_region): Don't use variable sum
until initialized.
* app/{bezier_select,paths_dialog}.c: Include config.h and define
rint() if necessary.
* app/plug_in.c: Use _spawnv, not spawnv, on Win32 and OS/2.
Thu May 27 22:00:58 BST 1999 Andy Thomas <alt@gimp.org>
* app/transform_core.c
Bezier curve display during transformation works
with corrective type of transform.
* cursors/{mouse1_u,mouse1_umsk}: new mouse cursor for intersection
operations.
* app/cursorutil.[ch], app/rect_select.c: use the new cursor.
* app/gimpimage.c: Applied layer removal bug fix from
David Le Corfec, <lecorfec@etudiant.univ-mlv.fr>
* plug-ins/gdyntext/{font_selection.c, gdyntext.c, gdyntext_ui.c}:
replaced snprintf with g_snprintf.
* plug-ins/jpeg/jpeg.c: updated to work with the double precision
resolutions.
Wed May 26 21:14:15 BST 1999 Andy Thomas <alt@gimp.org>
* app/bezier_select.c
* app/bezier_selectP.h
* app/paths_dialog.c
* app/rotate_tool.c
* app/scale_tool.c
* app/transform_core.c
* app/transform_core.h
* app/transform_tool.c
* app/transform_tool.h
Add option to show currently selected path to be displayed
during the transform tool operations. (Note if > 1 path locked
only the last selected path will be shown).
Reduced flashing of control points during update drawing of paths.
Fixed problem in transform tool rotate/scale when changing
layer (used to get many gdk assert failures about "gc != NULL")
1999-05-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/[all files with resolution info]
* libgimp/gimp.h
* libgimp/gimpimage.c
* libgimp/gimpsizeentry.[ch]
* libgimp/gimpunit.[ch]
* plug-ins/newsprint/newsprint.c
* plug-ins/pgn/png.c
* plug-ins/tiff/tiff.c: double instead of float for all resolution
and unit-factor variables.
* app/commands.c
* app/crop.c
* app/interface.c
* app/layers_dialog.c
* app/move_tool.c
* app/resize.c
* app/rotate_tool.c
* app/scale_tool.c: pass the image's unit *and* gdisp->dot_for_dot
to all functions which create sizeentries. Never create a
sizeentry with UNIT_PIXEL but with the image's unit and set it's
unit to UNIT_PIXEL after creation if dot_for_dot is on.
This way the image's unit can always be picked from the menu
without selecting "More...".
* app/interface.c: made the query_*_box() functions use the
ActionArea.
* plug-ins/gimpunitmenu.c: GTK_WIN_POS_MOUSE for the unit
selection dialog.
* app/curves.c: colour in the previously greyscale bars to the
left and below the curve itself. Might want to take alpha and
value into account, but currently we don't. Incidentally
fixes a few redraw problems I found along the way. Done in
about an hour and a half, to show Wavey Dave what's possible :)
1999-05-18 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/app_procs.c (and many of the files below): store resolution
values as doubles, not floats.
* app/brush_select.c
* app/pattern_select.c: hide the "refresh" button in client
dialogs. Don't know if this is desired but it fixes a SEGV.
* app/file_new_dialog.c: New ui using code/ideas from Austin,
Marco and Nick. The "size" frame is still a bit bloated but I
didn't want to reduce it's functionality right now. It's closer to
the result of the last discussion but not perfect yet...
Added a dialog to confirm image sizes larger than the new
max_new_image_size value.
The new "reset" button uses the values from gimprc.
Removed some #include's, added the copyright header.
* app/gimprc.[ch]: new rc variable max_new_image_size.
* app/preferences_dialog.c: added the "max image size"
option. Generalized the mem size unit code.
* app/resize.c: an additional box lets the offset widget always
shrink correctly.
* app/text_tool.c: fixed a minor memory leak.
* libgimp/Makefile.am: add all widgets to libgimpui.*
* libgimp/gimpfileselection.c: cosmetic changes.
* libgimp/gimplimits.h: a maximum image size which should satisfy
everybody ;)
* libgimp/gimpsizeentry.c: allow the creation of sizeentries
without fields. This (finally) enables arbitrary layout of the
spinbuttons.
* plug-ins/script-fu/script-fu-scripts.c: use the fileselection
widget for script parameter SF_FILENAME.
* app/crop.c (crop_image): Fixed a potential linked list race
condition (i.e. accessing freed memory) when cropping deletes a
layer. May fix a bug reported by Sven.
-sg
Thu May 13 22:41:26 BST 1999 Andy Thomas <alt@gimp.org>
Changed:-
* app/bezier_select.c
* app/bezier_selectP.h
* app/cursorutil.c
* app/cursorutil.h
* app/curves.c
* app/paths_dialog.c
New:-
* cursor/mouse1_ap
* cursor/mouse1_apmsk
* cursor/mouse1_cp
* cursor/mouse1_cpmsk
* cursor/mouse1_mm
* cursor/mouse1_mmmsk
* cursor/mouse1_sel
* cursor/mouse1_selm
* cursor/mouse1_selmmsk
* cursor/mouse1_selmsk
* cursor/mouse1_selp
* cursor/mouse1_selpmsk
Paths changes:-
Implemented multi-part paths.
(Import the path (RMB in paths dialog brings menu up)
http://www.picnic.demon.co.uk/tmp/gimp.path
into a 600x256 (WxH) for an example).
Can copy/paste paths.
Fully custom cursors when using the Bezier tool. A number of bug
fixes re boundary problems also fixed.
Note that heavy use is made of the modifier keys in the bezier tool.
MB1 inside a closed curve converts it to a selection. The modifiers
change how the selection interacts with any current selection (in
much the same way as the selection tool does).
MB1 + ALT on control point will move a curve, if shift modifier active
then single curve is moved.
Curves:-
In curves dialog you can now press MB1 + shift will add point to
curves dialog corresponding to the current position in
the currently selected channel. MB1 + CNTRL will add the point
to all channels. (Thanks to Carey Bunks for the initial idea).
* app/paint_core.[ch]: set the fg or bg color if ctrl or alt is
held. use the new dropper cursor.
* app/cursorutil.[ch], app/gdisplay.[ch], app/rect_select.c: Use
GimpCursorType enum values > GDK_CURSOR_LAST instead of seperate
functions to choose between cursor types.
* app/color_picker.c: use the new dropper cursor.
* app/paintbrush.c, app/airbrush.c, app/paintbrush.c: use the new
color picking feature of paint_core.
* cursors/dropper, cursors/droppermsk: new cursor for the color
picker tool. (this cursor is REALLY ugly, someone should fix it)
1999-05-09 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/text_tool.c: made the font selection dialog static again, so
the selected font is remembered across text tool invocations.
1999-05-09 Michael Natterer <mitschel@cs.tu-berlin.de>
* libgimp/Makefile.am
* libgimp/gimplimits.h: new file. Currently contains constants for
image size and resolution.
* app/file_new_dialog.c
* app/resize.c: use the new constants.
* app/layers_dialog.c: use a sizeentry in the "New Layer" query
box. Folded the "Layer Fill Type" callbacks into one function.
* app/text_tool.c
* app/text_tool_cmds.c
* tools/pdbgen/pdb/text_tool.pdb: did the calculations for
resolutions < 1.0 right this time.
* app/gimage_cmds.c
* tool/pdbgen/pdb/gimage.pdb: fixed a typo.
1999-05-07 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel.[ch]
* app/commands.c
* app/gimage_mask.[ch]
* app/gimage_mask_cmds.c
* tools/pdbgen/pdb/gimage_mask.pdb
* app/interface.c: propagated the indepentent x/y values for
shrink/grow/border to the interface but not yet to the PDB.
* app/*_select.c
* app/paint_funcs.[ch]: implemented indep. x/y feather. It seems
that cut-and-paste was sufficient, but I didn't really understand
the code. Jay, could you have a look at this please?
If the feather/shrink/... amount is specified in pixels,
everything behaves like before.
I'm not sure how the built-in feather option of the selection
tools should behave, so it still defaults to 'pixel' mode.
Moved the static feather/shrink/... values from gimage_mask.c to
commands.c because they belong to the interface.
* app/text_tool_cmds.c
* tools/pdbgen/pdb/text_tool.pdb: prepared for resolution
support, but didn't enable it yet.
* app/unit_cmds.c
* tool/pdbgen/pdb/unit.pdb: fixed a help text.
* pixmaps/mouse1*: new bitmap files containing the new mouse cursors.
* app/parasitelist.c: use g_str_equal instead of parasite_compare_func.
* app/paint_core.c: interpret perfectmouse right way round.
* app/rect_select{P,}.[ch]: set custom cursors when the operation type
changes. Centralize the calculation of op based on the modifier
keys being held.
* app/fuzzy_select.c, app/free_select.c: allow the rect_select
functions calculate the operation type.
* app/ellipse_select.c: use the SelectionOps typedefs.
* app/edit_selection.c: convert MaskToLayerTranslate into
FloatingSelTranslate if there is already a floating selection in
init_edit_selection.
* app/disp_callbacks.c: fixed the calculation of state.
* app/gdisplay.[ch], app/cursorutil.[ch]: new functions to allow
the loading of customized cursors.
* app/paint_funcs.[ch], app/channel.c: border_region now accepts
seperate xradius and yradius arguments.
* config.h.win32, README.win32: Small changes.
* tools/pdbgen/pdb/*.pdb: Include <string.h>.
* app/*_cmds.c: Autogenerated files reflect above changes.
* libgimp/makefile.msc app/makefile.msc: Various updates,
including new object files. Gtk+ directory now should be called
gtk+ (not gtk-plus). Use win32-specific gdk subdir. Glib directory
now should be called just glib.
* libgimp/gimp.def: Updates.
* libgimp/gimpfeatures.h.win32: Made current with
gimpfeatures.h.in.
* libgimp/gimpfileselection.c: Define S_ISDIR and S_ISREG if
necessary.
* tools/pdbgen/pdb/fileops.pdb: Must have a
statement (even an empty one) after a label.
* app/fileops_cmds.c: Autogenerated file reflects above changes.
* app/crop.c: Include <string.h>.
* app/{app_procs,batch,fileops,datafiles,errorconsole,general,
plug_in,temp_buf,tile_swap}.c: Test NATIVE_WIN32, not
_MSC_VER. (NATIVE_WIN32 means we are using the Microsoft C
runtime, even if we might be compiling with gcc.)
* app/fileops.c: Don't include <process.h> here.
* app/fileops.h: Do include <process.h> here.
* app/gimpparasite.c: Include config.h, guard inclusion of
<unistd.h>. (Is the inclusion of unistd.h in source files all over
the place really necessary?)
* app/ink.c: MSC doesn't handle conversion from unsigned __int64
to double, so cast to signed.
* app/lut_funcs.c: Include config.h, and define rint() if necessary.
* app/pixel_processor.c: Include config.h without "..", like in
all the other places. Include <string.h>
* app/text_tool.c: Guard the "POINTS" identifier that clashes with
<windows.h>, sigh.
1999-05-02 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/commands.c: call gdisplays_resize_cursor_label(gimage)
after changing the image's unit.
* app/gdisplay.c: update the cursor label after resizing it's
frame, so the old (wrong) value gets overwritten.
* app/resize.c: it makes more sense to take the image's unit from
the "print size" frame rather than from "pixel dimensions".
Set reasonable boundaries to avoid over/underflows with crazy
resolutions. Code and gui cleanup.
The constants for min/max image size/resolution should probably go
to a central place.
* app/text_tool.c: set the resolution in the X font spec only if
the size is specified in points (reported by Austin).
* libgimp/gimpsizeentry.c: fixed a bad bug in the boundary and
resolution setting code (was not noticable before the new
resize/scale ui).
* plug-ins/gdyntext/*: version 1.4.3
* plug-ins/png/png.c: gcc suggested parentheses.
Sat May 1 22:18:55 BST 1999 Austin Donnelly <austin@gimp.org>
* app/brush_select.c
* app/brush_select.h
* app/pattern_select.c
* app/pattern_select.h: delay the popup of pattern and brush
preview window by 150 millisecs. Allows flicker-free
selection of brushes/patterns, and still have fast pattern
preview like we used to. Ideally, should really factor out
the common code in these two files into one generic picker
widget.
* app/free_select.c: cosmetic whitespace change.
* app/draw_core.c: use GDK_CAP_NOT_LAST, not GDK_CAP_BUTT,
otherwise sequential line segments in XOR mode have
single-pixel gaps between them. Worse, if the segments are
only one pixel long, you don't get _any_ lines. XFree86 seems
to ignore GDK_CAP_BUTT, which is why this bug hasn't been seen
before. NCD X servers comply with the spec a little more
pedantically, so need GDK_CAP_NOT_LAST. OS/2 and Win32 people
should check that (eg) the lasso tool still provides proper
visual feedback.