2001-07-13 Michael Natterer <mitch@gimp.org>
* app/appenv.h
* app/main.c: removed "use_mmx" and the MMX detection.
* app/base/Makefile.am: build the MMX detection unconditionally
as it's already #ifdef'ed in the source.
* app/base/detect-mmx.h: added a header for detect-mmx.S
* app/base/base-config.[ch]: added the "use_mmx" boolean.
* app/base/base.c: call intel_cpu_features() here.
* app/paint-funcs/paint-funcs.c: #include "base/base-config.h".
* app/floating_sel.c
* app/core/gimpimage.c: removed commented out cruft.
* app/core/gimplayer.c: gimp_layer_new_from_tiles(): pass the
gimage instead of NULL to gimp_layer_new() because layers have to
be created in an image context now
(checked gimp_layer_new_from_tile()'s callers if this is
semantically correct).
2001-05-15 Michael Natterer <mitch@gimp.org>
* configure.in: new directory app/base/
* app/Makefile.am
* app/boundary.[ch]
* app/brush_scale.[ch]
* app/gimpchecks.h
* app/gimplut.[ch]
* app/pixel_processor.[ch]
* app/pixel_region.[ch]
* app/pixel_surround.[ch]
* app/temp_buf.[ch]
* app/tile.[ch]
* app/tile_cache.[ch]
* app/tile_manager.[ch]
* app/tile_manager_pvt.h
* app/tile_pvt.h
* app/tile_swap.[ch]: moved to base/
* app/base/Makefile.am
* app/base/base-types.h
* app/base/*: new directory for the sub-object pixel maniplation
and storage stuff. Does not include Gtk+ or anything outside
base/. Did some cleanup in all files.
* app/appenums.h
* app/apptypes.h
* app/core/gimpimage.h: removed types which are now in
base/base-types.h.
* app/base/base-config.[ch]
* app/gimprc.[ch]: put the config variables for base/ to their own
file so base/ doesn not have to include gimprc.h (does not yet
work, i.e. the variables are un-configurable right now)
* app/main.c: set a log handler for "Gimp-Base".
* app/paint-funcs/Makefile.am
* app/paint-funcs/paint-funcs.[ch]: removed the color hash which
maps RGB to color indices because it's a totally standalone system
which has nothing to do with the paint-funcs and introduced a
GimpImage dependency.
paint-funcs/ should be considered on the same sub-object
(glib-only) level as base/, only in a different directory.
* app/core/Makefile.am
* app/core/gimpimage-colorhash.[ch]: put the color hash here.
* app/gimage.c: don't invalidate the color hash here...
* app/core/gimpimage.c: ... but in the colormap_changed() default
inplementation. Initialize the hash in class_init().
* tools/pdbgen/Makefile.am: scan app/base/base-types.h for enums.
* tools/pdbgen/enums.pl: regenerated.
* app/[lots]
* app/core/[of]
* app/gui/[files]
* app/pdb/[all]
* app/tools/[over]
* app/widgets/[the]
* tools/pdbgen/pdb/[place]: changed #includes accordingly. And use
base_config->value instead of the stuff from gimprc.h.
MMX paint_funcs
Should autodetect whether the assembler handles MMX and whether the C
compiler allows gcc-like __attribute function specifications.
Should detect MMX at run-time.
2001-01-24 Sven Neumann <sven@gimp.org>
* app/paint_funcs.c: brought the array used for optimization back in
sync with the LayerModeEffects enum. This was causing really strange
rendering errors. Started to clean up the file up and removed the
unused layer_mode names.
* app/tile.[ch]
* plug-ins/common/colortoalpha.c: small cleanups
* po/POTFILES.in: removed app/paint_funcs.c
2001-01-09 Sven Neumann <sven@gimp.org>
* app/apptypes.h
* app/brush_select_cmds.c
* app/brushes_cmds.c
* app/layer_cmds.c
* app/layers_dialog.c
* app/paint_funcs.c
* app/tool_options.c
* app/tools_cmds.c
* libgimp/gimpenums.h
* plug-ins/script-fu/script-fu-constants.c
* tools/pdbgen/enums.pl: applied patch from <oliver@zeroknowledge.com>
that adds new blending modes (Dodge/Burn/Hardlight). Please play with
these new modes and check if they are useful and well-implemented.
2000-12-31 Michael Natterer <mitch@gimp.org>
More preparation for LibGCK removal:
* libgimp/gimpcolorspace.[ch]: added a "_int" suffix to all functions
operating on 3 gint pointers, just like the gdouble functions have
a "_double" suffix.
* app/color_balance.c
* app/hue_saturation.c
* app/paint_funcs.c
* modules/colorsel_triangle.c
* plug-ins/common/CML_explorer.c
* plug-ins/common/scatter_hsv.c
* plug-ins/common/sparkle.c
* plug-ins/common/vinvert.c
* plug-ins/gflare/gflare.c: changed accordingly.
2000-12-29 Michael Natterer <mitch@gimp.org>
* app/Makefile.am
* app/channel_pvt.h
* app/drawable_pvt.h
* app/gdisplayF.h
* app/gimpdrawableP.h
* app/gimpimageP.h
* app/layer_pvt.h
* app/toolsF.h: removed these files.
* app/apptypes.h
* tools/pdbgen/enums.pl: added tons of opaque typedefs and enums.
* tools/pdbgen/pdb/brush_select.pdb
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/color.pdb
* tools/pdbgen/pdb/convert.pdb
* tools/pdbgen/pdb/display.pdb
* tools/pdbgen/pdb/drawable.pdb
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/gradient_select.pdb
* tools/pdbgen/pdb/gradients.pdb
* tools/pdbgen/pdb/help.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/layer.pdb
* tools/pdbgen/pdb/pattern_select.pdb
* tools/pdbgen/pdb/patterns.pdb
* tools/pdbgen/pdb/selection.pdb
* tools/pdbgen/pdb/tools.pdb
* app/*: chainsaw #include cleanup:
- Never (never!!) include stuff in header files except where we
need access to structures' contents (like derived objects).
- Added prototypes and proper formating in many files.
- The #include order in *all* *.c files is as follows:
#include "config.h"
#include <system stuff>
#include <gtk/gtk.h>
#include "apptypes.h"
#include "gimp stuff"
#include "libgimp stuff"
#include "libgimp/gimpintl.h"
By following this scheme we can easily see a file's dependencies
from it's #include's and can grep for the inclusion to find out
where a file is used.
* tools/pdbgen/app.pl: changed to follow the include scheme above.
* libgimp/Makefile.am
* libgimp/gimpuitypes.h: new file, included from libgimp/gimpui.h
and from app/apptypes.h.
* libgimp/gimpcolorbutton.[ch]
* libgimp/gimpdialog.[ch]
* libgimp/gimphelpui.[ch]
* libgimp/gimpparasite.[ch]
* libgimp/gimppatheditor.[ch]
* libgimp/gimpprotocol.c
* libgimp/gimpquerybox.[ch]
* libgimp/gimpsizeentry.[ch]
* libgimp/gimptypes.h
* libgimp/gimpui.h
* libgimp/gimpunit.h
* libgimp/gimpunitmenu.[ch]
* libgimp/gimpwidgets.[ch]: changed accordingly.
* plug-ins/FractalExplorer/Dialogs.c
* plug-ins/gdyntext/message_window.c
* plug-ins/imagemap/imap_default_dialog.c
* plug-ins/imagemap/imap_file.c: these files used to include
"libgimp/gimpui.h" without including "libgimp/gimp.h". This is
no longer possible because the libgimpui headers don't inlcude
"libgimp/gimpunit.h" any more.
2000-12-28 Michael Natterer <mitch@gimp.org>
* app/channel.[ch]
* app/drawable.h
* app/gimpdrawable.[ch]
* app/gimpdrawableP.h
* app/gimpimage.[ch]
* app/gimpimageP.h
* app/layer.[ch]
* app/layer_pvt.h: started a major cleanup of all image/drawable
files. Added tons of "const GimpImage *" declarations and properly
formated the headers.
* app/bezier_select.c
* app/channels_dialog.c
* app/crop.c
* app/fileops.[ch]
* app/fuzzy_select.c
* app/gdisplay.c
* app/layers_dialog.c
* app/move.c
* app/paint_funcs.[ch]
* app/qmask.c
* app/undo.c: changed accordingly plus the usual portion of coding
style paranoia. This is not finished but Sven promised to buy me
a beer if I commit now ;)
* app/paint_funcs.c: Add some comments. Delete some commented code.
* app/gimpbrushlist.c: Make sure that we are not using bad file names
for generated brushes.
* app/paint_funcs.c: Correctly initialize the max arrays in
thin_region. Fixes bug #8351
* app/scale.c: return from the channel_scale function if we
tried to zoom in/out too far. This prevents some
unnecessary display redraws.
* app/paint_funcs.c: Fixed the off by one error that was the cause
of bug #4980. Fixed a bug that caused images to have their
centers shifted slightly when resizing. Removed a couple of
unused variables.
2000-02-16 Garry R. Osgood <gosgood@idt.net>
*app/paint_funcs.c: replace_pixels() was
naively zeroing RGB components of RGBA pixels
when projecting and compositing paint_core
and currently active layer pixels. Closes
#5947. See bug report, and
http://idt.net/~gosgood/gimp-patch/patch06.html
for further detail.
* app/gimage.c
* app/paint_funcs.[ch]: Invalidate the color_hash_table used
for rgb->indexed conversions if the colormap of the indexed
image changes. Fixes bug #2683.
--Sven
2000-01-25 Michael Natterer <mitch@gimp.org>
* app/appenv.h: removed BOUNDS, MINIMUM and MAXIMUM. No need to
include both <glib.h> and <gtk/gtk.h>.
* app/*
* tools/pdbgen/pdb/text_tool.pdb: s/BOUNDS/CLAMP/,
same for MIN and MAX.
* app/preferences_dialog.c: the "Check Size" widget was connected
to the transparency_type variable.
* plug-ins/common/sobel.c: removed definitions of MIN and ROUND.
* libgimp/gimp.h: #include "gimplimits.h" and "gimpcolorspace.h".
* plug-ins/*: don't include the two files.
* libgimp/gimpcolorspace.c
* libgimp/gimpcolorspace.h: Prefixed all functions with gimp_
to avoid namespace collisions.
Changed the License in the header to LGPL. If you don't like this,
please remove those files! (But I would like them to stay since this
moving those functions into libgimp is something that should have
happened much earlier.) Nice work, Daniel!
* app/tile.c
* app/tile.h
* app/tile_manager.c
* app/tile_swap.c:
Allocate Tile's array of TileRowHints dynamically. Make type
of TileRowHint explicit since it's fairly space-critical.
Can save several hundred K of memory with this and struct
changes.
Added warnings for old basically-untested-or-insane
paths through the tile referencing code.
* app/tile_pvt.h: Shrink down and rearrange fields of Tile
struct to save some space with gcc's padding for most people.
* app/paint_funcs.c: Use tile_sanitize_rowhints() to ensure
that rowhints have been allocated before use.
* app/channel_ops.c
* app/gdisplay.c
* app/pixel_region.c: Cosmetic, sanity or unfinished debug
changes (the latter commented out) for fun and reference.
1999-09-01 Tor Lillqvist <tml@iki.fi>
* app/appenv.h
* libgimp/gimpmath.h: New file. Includes <math.h>. Move G_PI,
RINT(), ROUND() etc from app/appenv.h here, so plug-ins can
use them, too. Remove some commented-out old stuff in appenv.h.
* libgimp/gimp.h: Include gimpmath.h.
* libgimp/gimp.c (gimp_main): Win32: Don't install signal
handlers, we can't do anything useful in the handler ourselves
anyway (it would be nice to print out a backtrace, but that seems
pretty hard to do, even if not impossible). Let Windows inform the
user about the crash. If the plug-in was compiled with MSVC, and
the user also has it, she is offered a chance to start the
debugger automatically anyway.
* app/*several*.c: Include gimpmath.h for G_PI etc. Don't include
<math.h>, as gimpmath.h includes it.
* plug-ins/*/*many*.c: Include config.h. Don't include <math.h>.
Remove all the duplicated definitions of G_PI and rint(). Use
RINT() instead of rint().
* app/app_procs.[ch]: app_exit() takes a gboolean.
* app/batch.c
* app/commands.c
* app/interface.c: Call app_exit() with FALSE or TRUE.
* app/main.c (on_error): Call gimp_fatal_error. (main): Don't
install any signal handler on Win32 here, either.
* app/errors.c (gimp_fatal_error, gimp_terminate): Win32: Format
the message and call MessageBox with it. g_on_error_query doesn't
do anything useful on Win32, and printf'ing a message to stdout or
stderr doesn't do anything, either, in a windowing application.
* app/apptypes.h: added InterpolationType enum.
* app/gimprc.[ch], app/preferences_dialog.c: replaced
cubic_interpolation flag with interpolation_type variable.
* app/pixel_region.[ch]: added pixel_region_has_alpha function.
* app/paint_funcs.c: rewrote scale_region. It now behaves
correctly on images with alpha, no longer leaves an artifact on the
right edge of images when scailing up, and runs signifigantly
faster.
* app/*.[ch]: Actually use the enum types GimpImageType,
GimpImageBaseType, LayerModeEffects, PaintApplicationMode,
BrushApplicationMode, GimpFillType and ConvertPaletteType, instead
of just int or gint. Hopefully I catched most of the places
where these should be used.
Add an enum ConvolutionType, suffix the too general constants
NORMAL, ABSOLUTE and NEGATIVE with _CONVOL. Use NORMAL_MODE
instead of NORMAL in some places (this was what was intended). Fix
some minor gccisms.
* app/apptypes.h: New file. This file contains the above
enumeration types, and some opaque struct typedefs. It was
necessary to collect these in one header that doesn't include
other headers, because when we started using the above mentioned
types in the headers, all hell broke loose because of the
spaghetti-like cross-inclusion mess between headers.
(An example: Header A includes header B, which includes header C
which includes A. B uses a type defined in A. This is not defined,
because A hasn't defined it yet at the point where it includes B,
and A included from B of course is skipped as we already are
reading A.)
* app/appenv.h: Define ROUND(), RINT(), SQR(), G_PI and
G_PI_4. The latter two will presumably eventually be in
GLib. RINT() calls rint() if we have it, otherwise adds 0.5 and
calls floor().
* app/*.c: Remove the multiple identical definitions of M_PI. Use
G_PI instead of M_PI. Remove ROUND() and rint() definitions. Use
RINT() instead of rint().
* app/paint_funcs.c, app/transform_core.c: replace the cubic
functions with a better/faster version supplied by
David Hodson <hodsond@acm.org>
* app/brush_select.c: double clicking on a brush preview now opens up
the brush editor. Update the text displayed when the active brush
changes size.
* app/paint_funcs.c: slight modification to overlay_pixels.
* 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.
Sun May 23 13:37:53 BST 1999 Adam D. Moss <adam@gimp.org>
* app/paint_funcs.c: Removed bogosity of previous fix and
optimized a little. Cleaner, faster and hopefully more correct
now.
Sun May 23 02:35:57 BST 1999 Adam D. Moss <adam@gimp.org>
* app/paint_funcs.c: Fixed a preserve-transparency
bug w/blend tool and possibly elsewhere. Allowed
the opacity-quickskip rule to be applied more generously.
Be a bit lazier with row-hint re-evalution (tnx j).
Sun May 9 16:23:47 BST 1999 Adam D. Moss <adam@gimp.org>
* app/tile.c
* app/tile.h
* app/tile_manager.c
* app/tile_pvt.h
* app/paint_funcs.c:
Added Tile Row Hinting to the GIMP tile structure. Tiles
now have cheap per-row hints indicating whether each row is
all-transparent, all-opaque, a mixture, or other properties.
These hints are automatically invalidated when the tile is checked
in as dirty, and are re-evaluated on demand.
Currently only the layer compositing routines take advantage
of these hints, though there is opportunity to use them to
advantage in numerous other places.
The whole layer compositing process is typically 2x-4x faster
now, especially on subsequent renders of data which has already
had its hints calculated.
See tile.h for the explicit TileRowHint query/set interface.
The procedure to re-evaluate tile hints currently resides in
paint_funcs.c but may be exposed to other parts of the core
if necessary.
This is experimental. Please report mis-rendering problems.