Mon Sep 20 12:51:30 EDT 1999 Austin Donnelly <austin@gimp.org>
Honest, guv, it's not a feature - it's a tightly integrated
package of undo system cleanups and fixes.
NEW FILES:
* app/undo_history.c: window showing recent undo (and redo) steps
available.
* app/undo_types.h: broken out of undo.h to fix circular includes.
MODIFIED FILES:
* app/Makefile.am: compile undo_history.c
* app/channel.h: use enum for channel undo type, not just magic
numbers.
* app/layer.h: same for layer undos.
* app/commands.c: edit_show_undo_history_cmd_callback() function to
pull up undo history window.
* app/commands.h: prototype for above.
* app/gdisplay.c: make undo / redo menu items sensitive according
to whether they would do anything. Would be easy to change
the text to say what would be undone/redone, but I don't know
the GTK.
* app/gimpimage.c: new signal emitted by gimage:
UNDO_EVENT. gimp_image_undo_event() function to emit it.
* app/gimpimage.h: prototype for above.
* app/gimpimageP.h: pushing_undo_group member is now an undo_type,
not an int. Keep undo history widget here too (if created).
* app/menus.c: add "Edit/Undo history..." to image menu.
* app/undo.c: new types: enums undo_type and undo_state rather than
ints and magic numbers. All undo_pop_* and undo_free_*
functions made static. New static function
undo_type_to_name(). Issue undo event signals on various
important events (eg undo pushed, undo popped etc).
undo_push() now takes a "dirties_image" arg to say whether
image should be dirtied. Layer moves now dirty the image. A
couple of g_return_if_fails () on undo_pop and undo_redo to
assert we're not in the middle of an undo group.
undo_get_{undo,redo}_name() to peek at names of top items on
undo and redo stacks resp. undo_map_over_{undo,redo}_stack()
to run a function for each item or group on stack. Layer and
channel undos use symbolic names rather than 0 or 1. Array
mapping undo types to names.
* app/undo.h: split out undo types to undo_types.h. Prototypes
for functions described above. undo_event_t enum.
undo_history_new() prototype lives here too.
Random other fixes:
* app/gimpdrawable.c
* app/image_render.c: default labels in switches to keep egcs happy.
* app/nav_window.c: some fixes to (sort of) cope with image res !=
screen res. Still needs work to handle non-square pixels
properly.
* app/paths_dialog.c: bad idea to call gimp_image_dirty()
directly. Even though it's currently commented out.
* app/gtkvwrapbox.[ch]: new vwrapbox stuff
* app/Makefile.am: added new files
* app/interface.c: place the indicator areas in a vwrapbox. Still
kinda screwy tho.
-Yosh
* libgimp/Makefile.am: add gimpmath.h
* app/gtkwrapbox.[ch]
* app/gtkhwrapbox.[ch]: wrapbox widget from gle
* app/Makefile.am: added those files
* app/interface.c: use an hwrapbox for the toolbar. Still not perfect
yet, working on it.
* app/gimpdrawable.c
* app/about_dialog.c
* app/airbrush.c
* app/blend.c: some minor code cleanup
-Yosh
* app/apptypes.h
* app/pathsP.h: removed trailing enum commas
* app/gdisplay_color.[ch]: added a foreach function to iterate
over the display filter names
* app/gdisplay_color_ui.[ch]: display filter ui stuff (doesn't do
much yet ;)
* app/commands.[ch]
* app/menus.c: hooked the above into the menu system
* app/Makefile.am: added new files
* plug-ins/gimpressionist/preview.c: removed bogus // comment
-Yosh
Wed Aug 25 02:40:39 CDT 1999 Shawn T. Amundson <amundson@gimp.org>
* app/image_new.[ch]: Added new files, the UI independant part of
new image dialog.
* app/file_new_dialog.[ch]: uses image_new stuff now. Alot
changed. No UI changed. Different behavior is a bug, as
this is only for UI separation.
* app/gimpimage.[ch]: Added gimp_image_get_width () and
gimp_image_get_height ().
* app/global_edit.c: Call a function in image_new instead of
file_new_dialog for updating the status of the cut buffe.
brush tool any longer. The paintbrush, airbrush and pencil
tools, which already knew how to handle the single-pixmap
brushes now also handle the pipes as well.
* app/pixmapbrush.{h,c}
* app/gimpbrushpixmap.{h,c}: Removed these files.
* app/Makefile.am
* app/makefile.{cygwin,msc}: Remove from here, too.
* app/gimpbrushpipe.{h,c}: Total overhaul.
* app/paint_core.h
* app/apptypes.h: Some more types moved to apptypes.h
* app/context_manager.c
* app/tool_options.c
* app/tools.c
* app/toolsF.h: Remove PIXMAPBRUSH tool.
* app/gimpbrush.h: New method: select_brush. Used to change the
brush in paint_core, for pipe brushes.
* app/gimpbrush.c: Add gimp_brush_select_brush, which is dummy for
the normal brushes (returns the same brush).
* app/paint_core.c: Call the brush's select_brush method to get a
potential new brush before calling the paint_func.
* app/gimpbrushlist.c: Various changes related to the pixmap and
pipe overhaul.
* app/airbrush.c
* app/pencil.c: Reorder code a bit in the tool motion function to
avoid executing unnecessary code in the case of a pixmap brush.
Other changes in the same commit:
* app/install.c: Make quote_spaces extern.
* app/appenv.h: Declare it.
* libgimp/gimpui.def: Add missing entry points.
* libgimp/makefile.{cygwin,msc}: Add missing objects to gimpui.
Mon Aug 23 00:56:59 EDT 1999 Adrian Likins <alikins@redhat.com>
* app/gimpbrushhose.c
* app/gimpbrushhose.h:
removed.
* app/gimpbrushpipe.c
* app/gimpbrushpipe.h:
New files to replace the above
* app/gimpbrushlist.c
* app/paintbrush.c
* app/pixmapbrush.c
* app/Makefile.am:
s/hose/pipe. Seems someone else uses that name,
so change it to pipe.
* app/gimpbrush.c
* app/gimpbrush.h
* app/gimpbrushpixmap.c
* app/patterns.c
* app/patterns.h
* app/pixmapbrush.c:
Added functions to do the actual loading of
brush/pattern data. Use them where approriate instead
of cut&pasting the same code all over the place.
* app/pixmapbrush.c: Fix the bug where masks and brush
data werent aligned. I didnt quite notice that
paint_core_get_paint_area returns an area with a 1 pixel
border larger than the brush. Ooops.
* TODO: just update a few things while I'm at it
(pixmap/pipe stuff in particular)
* configure.in: version number bump
* autogen.sh
* configure.in
* app/Makefile.am: comment out gcg stuff, nobody seems to be using it
* app/colormap_dialog.*: added generated files
-Yosh
1999-08-20 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/Makefile.am
* app/gimpdnd.c: new file. Contains a function which creates dnd
preview icons for all kinds of drawables.
* app/gimpdnd.h: added the new dnd types.
* app/channels_dialog.c: same dnd functions as in the layers
dialog. Fixed channels_dialog_flush(). Code cleanup.
* app/layers_dialog.c: enabled dnd for layer masks.
* app/disp_callbacks.c
* app/interface.c: dnd code generalization. The toolbox and the
display accept drop of any kind of drawable now.
* app/gimage.h
* app/gimpimage.[ch]: new function gimp_image_position_channel().
* app/layer.[ch]: new function layer_mask_get_layer().
1999-08-19 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/Makefile.am
* app/gimpdnd.h: new file containing the dnd data definitions.
* app/disp_callbacks.[ch]
* app/interface.c: drop layers on the toolbox to create a new
image and on the display to copy it to the image's layer stack.
* app/layers_dialog.c: drop layer on the "New" button to create an
empty layer with the dropped layer's properties, to "Duplicate" to
duplicate it and on the trashcan to delete it.
Thanks to Andy for the ultra-cool dnd preview pixmap patch.
* app/layer.[ch]
* app/undo.c: renamed layer_mask() to layer_get_mask(). Prototyped
some function headers.
* app/disp_callbacks.c: Wheelmouse stuff: Shift+wheel scales the
display.
* app/airbrush.c
* app/eraser.c
* app/paint_options.h
* app/paintbrush.c
* app/pencil.c
* app/tool_options.c: moved the "Incremental" toggle to the
PaintOptions structure because it is used more often now.
Thu Aug 12 21:38:53 BST 1999 Andy Thomas <alt@gimp.org>
* app/commands.c
* app/commands.h
* app/disp_callbacks.c
* app/gdisplay.c
* app/gdisplay.h
* app/info_dialog.c
* app/info_dialog.h
* app/info_window.c
* app/info_window.h
* app/menus.c
* app/scale.c
* app/scroll.c
* app/scroll.h
* app/nav_window.c (new)
* app/nav_window.h (new)
* pixmap/dropper.xpm (new)
New "navigator" image (accessed via <Image>/Window Nav..). This gives
an outline of the location of the current view on an image. Eg if your
image window is only showing part of an image then the Window Navigation window will outline the area viewed. You can "drag" the outlined
square around the viewport and the main image will scroll. Additional
a single click outside the square will center the image at that
location.
Also started to add additional information to a new page inside the
Window information dialog (currently only pixel value is shown).
Both these features are currently work in progress and unfinished.
In particular the Navigator does not keep in step with changes
to the basic image (however it does keep in step with image size changes and if you modify the size of the image viewing window). It also
does not display the transparent areas of images very nicely.
Mon Aug 9 01:20:24 1999 Adrian Likins <alikins@redhat.com>
* app/pixmapbrush.c
* app/pixmapbrush.h
* app/gimpbrushpixmap.c
* app/gimpbrushpixmap.h: New files, implement the GimpBrushPixmap
object, and the pixmap brush tool.
* app/context_manager.c
* app/tool_options.c
* app/tools.c
* app/toolsF.h: add the pixmap brush tool in
* app/gimpbrushlist.c: allow for loading of pixmap brushes and
displaying them in the brush dialog. Currently it only shows the
grey scale mask.
*app/Makefile.am: add the pixmap tool stuff to the build process
These Changes implement a pixmap brush tool. Sort of a "image stamp".
Some examples can be seen at http://adrian.gimp.org/pixmap-brush/.
Some examples of pixmap brushes can be found there too (.gpb
extension), but these are easy enough to make (for now, make
a pattern and a brush the same size and `cat foo.gbr foo.pat >
foo.gpb` ;->
Theres still a few rough edges that need some tweaking, but
the framework is there. Figured I'd sneak it in before the
freeze.
* pixmaps/qmasknosel.xpm
* pixmaps/qmasksel.xpm: Ugly pixmaps that tigert promised to replace
* app/channel.[ch]
* app/channel_cmds.c : made some of the private structures accessible
through exported functions to keep things a bit clean
* app/interface.c
* app/gdisplay.[ch]
* app/gimpimageP.h
* app/gimpimage.[ch]
* app/undo.[ch]: added qmasks
* app/Makefile.am
* app/qmask.[ch]: added new files for qmask support
* tools/pdbgen/pdb/channel.pdb: changed some channel stuff to keep
things a bit more private
Wed Jun 23 23:52:54 BST 1999 Andy Thomas <alt@gimp.org>
* gimp/app/gimppreviewcache.c
* gimp/app/gimppreviewcache.h
* gimp/app/drawable_cmds.c
* gimp/app/gdisplay.c
* gimp/app/gimpdrawableP.h
* gimp/app/gimage_cmds.c
* gimp/app/Makefile.am
* gimp/app/layers_dialog.c
* gimp/app/channel.c
* gimp/app/lc_dialog.c
* gimp/app/lc_dialog.h
* gimp/app/lc_dialogP.h
* gimp/app/layer.c
* gimp/app/gimpdrawable.c
* gimp/app/internal_procs.c
* gimp/libgimp/gimp.h
* gimp/libgimp/gimpimage.c
* gimp/libgimp/gimpdrawable.c
* gimp/libgimp/gimpmenu.c
* gimp/tools/pdbgen/pdb/drawable.pdb
* gimp/tools/pdbgen/pdb/gimage.pdb
Added thumbnail image preview functions.
Previews are visible on the L&C&P dialogs as well as in the
drawables/channels/ menus generated for plugins
(see the bumpmap & Mapobject plugins).
PDB interface exists to simply extract a thumbnail preview
of a given size. This is much quicker & more efficient
than getting the image data tile-by-tile if you only need a small
image since a "preview cache" has been implemented. This cache also
reduces the number of times the tiles cached is scanned since smaller
previews are always generated from large ones if they exists and
are valid.
Some possible usages (I don't intend to implement these ideas. Just
suggestions). More plugins using the thumbnail preview (ie any that
use multiple images). Indication of "active image" somewhere.....
Actually almost anywhere a drawable/image name appears.
* app/Makefile.am: cosmetic change
* app/plug_in.c: reordered #includes to prevent MAX/MIN conflict
* app/menus.c: removed the weird translation code in favor of
the item factory translation function. This may have broken some
.po files.. we'll see. Also, added some more tearoffs and made
tearoffs appear automagically when plugins register menu entries.
* libgimp/gimpimage.c
* libgimp/gimpenums.h: redid the GOrientation enum to match the
app. Removed special casing in the handler.
* plug-ins/guillotine/guillotine.c: small clean up
-Yosh
1999-06-18 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/Makefile.am
* app/context_manager.[ch]: new files. Currently only init and
destroy the static contexts (user, standard and default).
* app/app_procs.c: call the context manager's init and free
functions. Still have to figure out the right time to do this.
* app/gimpcontext.[ch]: alpha version 0.0.1 :-)
Features:
- Each context has a name
- Attributes: opacity, paint mode, image, display
- Signal emission on attribute change
- Possibility to set a "parent" context
- Each attribute can be defined or undefined. In the latter case
the values are taken from the parent context.
- Possibility to pass a template and parent context to the
constructor
Bugs:
- Many attributes/functions still missing
- It's connected to nothing
1999-06-17 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/Makefile.am
* app/gimpcontext.[ch]: new files. Does nothing yet. Checked in
because I found some bugs while hacking it:
* libgimp/gimpchainbutton.[ch]
* libgimp/gimpfileselection.[ch]
* libgimp/gimppatheditor.[ch]
* libgimp/gimpsizeentry.[ch]
* libgimp/gimpunitmenu.[ch]: fixed some cut & paste bugs and some
gtk 1.0 artefacts in the object class initialisation code.
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.
* configure.in: fixed variable clobber for thread & MP options
* app/Makefile.am: added new GIMP_MP_{LIBS,FLAGS} to compile &
link flags
The old configure would set the thread libs and then immediately
clobber them unless you enabled MP support. This meant threads
but no MP would mean a no-compile if your pthread support is in a
separate library (not in libc).
-sg
* configure.in: use the sinclude bit again, since it works in
automake 1.4. Generate the Makefile in the embed dir too
* app/gimp.sym: new file, list the symbols we want export to
modules here
* app/Makefile.am: add -export-symbols to LDFLAGS
* plug-ins/Makefile.am: use make variable expansion instead of
direct substitution for optional plug-in dirs. E.g., now one can
do "make GIMP_PERL=" to skip the perl plug-in dir during build
without rerunning configure
* plug-ins/rcm/Makefile.am: add header files to SOURCES
-Yosh
* Makefile.am: listed tools first in SUBDIRS, so xgettext can grab
the autogenned files
* acconfig.h: removed unused HAVE_XSHM_H
* tools/pdbgen/app.pl: added proc invoke method, nicer header
formatting
* tools/pdbgen/pdb/layer.pdb: use layer_mask type for return value
for layer_create_mask
* tools/pdbgen/pdb/misc.pdb: added quit proc
* tools/pdbgen/pdb/tools.pdb: added ink proc, but not added to @procs
since it's incomplete
* tools/pdbgen/pdb/fileops.pdb: new file
* app/Makefile.am: added fileops_cmds.c
* app/app_procs.c
* app/fileops.c
* app/ink.c: removed PDB procs (the one in ink.c was incomplete)
* app/fileops.h: exported load_procs, save_procs, and file_proc_find()
* app/plug_in.h: exported enum, #include <sys/types.h>
* app/brushes_cmds.c
* app/fileops_cmds.c
* app/layer_cmds.c
* app/misc_cmds.c
* app/parasite_cmds.c
* app/patterns_cmds.c
* app/procedural_db_cmds.c
* app/text_tool_cmds.c
* app/internal_procs.c: pdbgen updates
* app/paint_funcs.c: the glibc 2.1 docs say using SVID threadsafe
random functions are preferable to rand_r, so use them instead of
a mutex
-Yosh
1999-04-22 Michael Natterer <mitschel@cs.tu-berlin.de>
First version of per-tool paint options. No PDB interface yet.
The tool options dialog got rather big when in per-tool mode, so
it will probably have to become a notebook.
It's not yet 100% consistent. If switched off, everything should
behave exactly like before.
* app/Makefile.am
* app/paint_options.h: new file
* app/tool_options.c: PaintOptions gui. Maintain a list of all
paint tools' ToolOptions to enable switching between global and
per-tool paint options.
* app/brush_select.[ch]: changed packing boxes, tables, ...
The paint options in the brush selection can be hidden now.
Moved create_paint_mode_menu() to paint_options.h and
tool_options.c and renamed it to paint_mode_menu_new().
* app/gimage_mask.c
* app/gimpbrush.[ch]
* app/gimpbrushlist.[ch]
* app/paint_core.c: moved gimp_brush_[set|get]_spacing() from
gimpbrushlist.[ch] to gimpbrush.[ch].
Moved gimp_brush_[get|set]_[opacity|paint_mode]() to
paint_options.h and tool_options.c and renamed them to
paint_options_*_*(). They are "global paint options" now.
* app/airbrush.c
* app/blend.c
* app/bucket_fill.c
* app/clone.c
* app/convolve.c
* app/eraser.c
* app/ink.c
* app/paintbrush.c
* app/pencil.c: all paint tools' options are derived from
"PaintOptions" now. Opacity and paint mode are obtained through
macros which take into account the current paint options mode.
* app/buildmenu.h: #include <gtk/gtk.h>
* app/color_picker.c
* app/text_tool.c: changed spacings.
* app/gimprc.[ch]: new gimprc option "global-paint-options"
* app/preferences_dialog.c: Added a "Tool Options" page. Code
cleanup. Some work on the convenience constructors test site.
* app/tools.c: fixed "unused variable" warning.
* libgimp/gimpfeatures.h.in: added GIMP_CHECK_VERSION macro and
a features #define for 1.1.5
* app/misc_cmds.c: added a gimp_version PDB function that
returns the current version (new file)
* app/internal_procs.c: register gimp_version PDB function
-Yosh
1999-04-12 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/airbrush.c
* app/bezier_select.c
* app/blend.c
* app/brightness_contrast.c
* app/bucket_fill.c
* app/by_color_select.c
* app/clone.c
* app/color_balance.c
* app/color_picker.c
* app/convolve.c
* app/crop.c
* app/curves.c
* app/ellipse_select.c
* app/eraser.c
* app/flip_tool.c
* app/free_select.c
* app/fuzzy_select.c
* app/histogram_tool.c
* app/hue_saturation.c
* app/ink.c
* app/iscissors.c
* app/levels.c
* app/magnify.c
* app/move.c
* app/paintbrush.c
* app/pencil.c
* app/posterize.c
* app/rect_select.[ch]
* app/text_tool.c
* app/threshold.c
* app/transform_tool.c
* app/tools.[ch]
* app/toolsF.h: again: all tools :(
* app/Makefile.am
* app/tool_options.[ch]
* app/selection_options.h
* app/tool_options_ui.h: new files.
Ok, this time it's general enough for future extensions:
- The tool options structures are organized like the gtk object
system to allow derived tool options.
- Renamed all create and reset functions to *_options_new() and
*_options_reset() to reflect this.
- Changed tools_register() again. Now it takes just a pointer to a
ToolOptions structure.
- Moved almost the entire tool options gui code to tool_options.c.
- Visually separated the common selection options from the
tool-specific ones. I'd like to do the same with opacity/paint
mode in all paint tool options but I think this needs some more
discussion.
* app/histogram_tool.c: changed packing boxes, label alignments.
* app/paintbrush.c: some more sensitive settings. The gradient
feature can now be toggled with a button. Hopefully didn't break
anything.
* app/text_tool_cmds.c: doh, XLFD stuff is in decipoints
* app/color_cmds.h: removed
* app/color_cmds.c: pdbgened file now
* app/lut_funcs.h: export ChannelLutType enum
* app/internal_procs.c: register pdbgened color procs
* app/menus.c: reverted keyboard underlines since they need more discussion
-Yosh
* app/Makefile.am: build color_cmds, lut_funcs, and pixel_processor
* app/app_procs.c: feedback in the splash screen when loading
parasites.
* app/boundary.c: Optimized find_empty_segs.
* app/brightness_contrast.[ch]
* app/levels.[ch]
* app/posterize.[ch]:
moved pdb and lut calculation code. These files now contain only
GUI functions.
* app/channel.c: Optimized channel_bounds (fewer compares, better
use of registers). Use color_region instead of channel_*_segment
in channel_combine_rect. Optimized channel_combine_ellipse by
skipping pixels inside of the ellipse. Use
pixel_region_process_parallel in channel_combine_mask. Use a
GimpLut in channel_invert, and channel_sharpen.
* app/invert.c
* app/equalize.c: moved the lut functions to lut_funcs.c
* app/gimpdrawable.c, app/gimpdrawableP.h
* app/gimpimage.c, app/gimpimageP.h: removed unused gimpmatrix
variables/includes.
* app/gimplut.[ch]: added new function gimp_lut_process_inline
that operates on a single PixelRegion.
* app/gimpparasite.[ch]: new functions to save/load parasiterc
* app/parasitelist.[ch]: new functions to save/load ParasiteLists
in/from files.
* libgimp/parasite.[ch]: new functions to load/save parasites.
* app/internal_procs.c: get some procs from new location in
color_cmds.h.
* app/pixel_region.[ch]: moved pixel_regions_process_parallel
related functions to a new file.
* app/color_cmds.[ch]: new files for PDB
definitions/implementations of color correction functions.
* app/lut_funcs.[ch]: new files to hold lut creation functions.
* app/pixel_processor.[ch]: new files that contain the
pixel_regions_process_parallel routines. Added some new
capabilities that are currently unused.