2007-12-12 Tor Lillqvist <tml@novell.com>
* app/base/tile-private.h
* app/base/tile-swap.c: Move the LARGE_SEEK and LARGE_TRUNCATE
macros from tile-private.h to tile-swap.c as they aren't used
anywhere else, and the helper function used on Windows was static
in tile-swap.c anyway. (#503124)
svn path=/trunk/; revision=24331
2007-12-09 Hans Breuer <hans@breuer.org>
* app/gimp-log.h : an ugly but working variant for no varargs macros
* app/base/base-utils.c(get_physical_memory_size) : fallback to
GetMemoryStatus() for older compiler/sdk
* app/core/gimplayer-floating-sel.c : second argument to g_set_error()
is an uint32, not a pointer
svn path=/trunk/; revision=24306
2007-11-30 Sven Neumann <sven@gimp.org>
* app/base/tile-manager.c (tile_manager_invalidate_area): if no
tiles have been allocated, there's no need to invalidate any.
Should fix bug #500178.
svn path=/trunk/; revision=24244
2007-11-17 Sven Neumann <sven@gimp.org>
* app/base/base-utils.c (get_physical_memory_size): added a cast
to avoid an integer overflow on 32bit machines.
svn path=/trunk/; revision=24182
2007-11-17 Sven Neumann <sven@gimp.org>
* app/base/base-utils.[ch]: changed to
get_physical_memory_size()
and added an implementation for POSIX.2 platforms.
svn path=/trunk/; revision=24180
2007-11-16 Tor Lillqvist <tml@novell.com>
* app/base/base-utils.c
* app/base/base-utils.h (get_physical_memory_size_megabytes): New
function that Sven asked for. Somebody please fill in Unix
implementation(s).
svn path=/trunk/; revision=24175
2007-11-16 Sven Neumann <sven@gimp.org>
* app/base/lut-funcs.c (equalize_lut_setup): make sure we don't
get stuck in a loop if all pixels are transparent (bug #497291).
svn path=/trunk/; revision=24172
2007-11-02 Michael Natterer <mitch@gimp.org>
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpcurve-save.[ch]
* app/core/gimpcurve-load.[ch]
* app/core/gimpcurve.[ch]: new GimpData subclass which keeps a
curve as known from the curves tool. Pretty much unfinished, but
can do everything that used to be done by base/curves.c and more.
* app/base/curves.[ch]: stripped down to plain arrays of
uchar (the actual curve) and the LUT setup function. All the rest
is done by GimpCurve now.
* app/tools/gimpcurvestool.[ch]: use an array of GimpCurves
instead of the old Curves cruft. Use Curves only for the last step
of creating the LUT. Pretty much unfinished migration here too.
* tools/pdbgen/pdb/color.pdb: use a GimpCurve here too.
* app/pdb/color_cmds.c: regenerated.
svn path=/trunk/; revision=24041
2007-11-01 Tor Lillqvist <tml@novell.com>
* app/base/base-utils.c
* app/base/base-utils.h: New files, with just one function so far,
get_number_of_processors(). Include implementation also for Win32.
* app/base/Makefile.am (libappbase_a_SOURCES): Add new files.
* app/config/gimpbaseconfig.c (gimp_base_config_class_init): Use
get_number_of_processors().
svn path=/trunk/; revision=24028
2007-10-23 Michael Natterer <mitch@gimp.org>
* app/base/pixel-region.c (pixel_region_resize): when resizing,
don't advance the "data" pointer of regions of contiguous data. I
should have made this change along with my pixel region cleanup of
2005-09-03 which sanitized pixel regions of contiguous data.
Fixes bug #489229.
* libgimp/gimppixelrgn.c (gimp_pixel_rgn_resize): remove the same
code here (the removed code was dead since this function refuses
to be called on pixel regions without a drawable).
svn path=/trunk/; revision=23922
2007-10-09 Sven Neumann <sven@gimp.org>
* app/base/tile.[ch]
* app/paint-funcs/paint-funcs.c: moved code to update tile row
hints to tile.[ch].
svn path=/trunk/; revision=23777
2007-09-07 Michael Natterer <mitch@gimp.org>
* app/base/tile-manager.c (read_pixel_data_1): use a temporary
variable to store the return value of tile_manager_get() instead
of assigning to tm->cached_tile directly to make sure
tm->cached_num and tm->cached_tile are always in a consistent
state (the requested tile might be invalid and needs to be
validated, which would call tile_manager_get() recursively, which
in turn would clear the cached tile). Fixes bug #472770.
svn path=/trunk/; revision=23472
2007-08-31 Michael Natterer <mitch@gimp.org>
* app/base/tile-manager.c (tile_manager_get): if
tile_manager->cached_tile is requested for writing, clear the
cache before giving out the tile. Fixes bug #472170.
svn path=/trunk/; revision=23425
2007-08-13 Sven Neumann <sven@gimp.org>
* app/base/gimphistogram.c (gimp_histogram_get_std_dev): corrected
caluclation for the histogram in RGB mode (bug #466189).
svn path=/trunk/; revision=23232
2007-07-17 Sven Neumann <sven@gimp.org>
* app/paint-funcs/Makefile.am
* app/paint-funcs/scale-funcs.[ch]
* app/paint-funcs/sample-funcs.[ch]: moved subsample_region() to
new file and also moved subsample_indexed_region() there.
* app/base/tile-manager-preview.c
* app/core/gimpdrawable-preview.c: changed accordingly.
svn path=/trunk/; revision=22953
2007-07-17 Sven Neumann <sven@gimp.org>
* app/base/tile-manager-preview.[ch]: added
tile_manager_get_sub_preview().
* app/core/gimpdrawable-preview.c: use the new function except
for
indexed drawables.
svn path=/trunk/; revision=22950
2007-07-17 Sven Neumann <sven@gimp.org>
* app/base/Makefile.am
* app/base/tile-manager-preview.[ch]: added new file that holds
code
to create a preview from a tile manager.
* app/core/gimpbuffer.c
* app/core/gimpimage-preview.c: use the new function instead of
duplicating this code.
svn path=/trunk/; revision=22948
2007-06-25 Sven Neumann <sven@gimp.org>
* configure.in: removed extra check for gthread and fold it into
the GLIB and GTK checks.
* */Makefile.am: changed accordingly.
* app/main.c (main): always call g_thread_init().
svn path=/trunk/; revision=22832
2007-06-21 Sven Neumann <sven@gimp.org>
* app/base/tile-manager.[ch]
* app/base/tile-manager-private.h: removed "level_below" from the
TileManager struct.
* app/base/tile-pyramid.c: use the TileManager's user_data to
store a pointer to the lower level.
svn path=/trunk/; revision=22819
2007-06-21 Sven Neumann <sven@gimp.org>
* app/base/tile-manager.[ch]: use gboolean for boolean parameters.
* app/base/tile-pyramid.c (tile_pyramid_get_memsize): pass TRUE
for sparse to tile_manager_get_memsize().
* app/base/tile.c
* app/base/tile-swap.c: minor cleanups.
* app/core/gimpprojection.c (gimp_projection_get_tiles_at_level):
inline the creation of the TilePyramid.
svn path=/trunk/; revision=22818
2007-06-20 Sven Neumann <sven@gimp.org>
* app/base/tile-pyramid.c (tile_pyramid_write_quarter): added missing
implementations for 1 and 3 bytes per pixel.
svn path=/trunk/; revision=22808
2007-06-20 Sven Neumann <sven@gimp.org>
* app/base/Makefile.am
* app/base/base-types.h
* app/base/tile-pyramid.[ch]: image pyramid code split out of
GimpProjection.
* app/core/gimpprojection.[ch]: use the new TilePyramid.
svn path=/trunk/; revision=22807
2007-06-20 Sven Neumann <sven@gimp.org>
* app/base/tile.[ch]: removed unused function tile_mark_valid().
* app/base/tile-manager.[ch]: removed unused public API and cleaned
up internals used for invalidating tiles.
svn path=/trunk/; revision=22806
2007-06-20 Sven Neumann <sven@gimp.org>
* app/base/tile-private.h (struct _Tile): removed unused field
swap_num.
* app/base/tile.c (tile_new): initialise most of the Tile struct
in the allocator.
svn path=/trunk/; revision=22805
2007-06-13 Sven Neumann <sven@gimp.org>
* app/base/base.c (base_exit): call tile_cache_exit() before
tile_swap_exit(). tile_cache_exit() may use the tile swap in
pathological cases.
* app/base/tile-cache.c (tile_cache_exit): warn if the tile cache
is not empty.
svn path=/trunk/; revision=22772
2007-06-11 Sven Neumann <sven@gimp.org>
Applied patch from Zbigniew Chyla that further improves the
boundary_sort() performance (bug #388538):
* base/boundary.c (cmp_xy): use "y" coordinate as more
significant
one, i.e. compare (ay, ax) to (by, bx), not (ax, ay) to (bx,
by).
* configure.in: bumped version to 2.3.19.
svn path=/trunk/; revision=22762
2007-06-11 Sven Neumann <sven@gimp.org>
Applied the second patch from Zbigniew Chyla. Improves
boundary_sort() performance by reducing its time complexity from
O(n*n) to ~O(n*log n) (bug #388538).
* app/base/boundary.c (boundary_sort): prepare two arrays of
pointers to segments, each sorted by different pair of
coordinates ((x1,y1) and (x2,y2)); use new find_segment(),
passing both arrays to it.
(find_segment): new implementation that employs binary search to
find matching segment, using sorted arrays prepared by
boundary_sort().
svn path=/trunk/; revision=22750
2007-06-07 Sven Neumann <sven@gimp.org>
* app/text/Makefile.am
* app/core/Makefile.am
* app/tools/Makefile.am
* app/display/Makefile.am
* app/widgets/Makefile.am
* app/base/Makefile.am
* app/paint/Makefile.am
* app/plug-in/Makefile.am
* libgimp/Makefile.am
* libgimpthumb/Makefile.am
* tools/pdbgen/Makefile.am
* libgimpwidgets/Makefile.am: applied the remaining parts of the
patch from Daniel Richard G. to fix out-of-source-tree builds
(bug #444960).
svn path=/trunk/; revision=22735
2007-06-06 Martin Nordholts <martinn@svn.gnome.org>
Implemented an image pyramid for the GimpProjection. An image pyramid
caches a projection at several sizes, causing the rendering code not to
have to swap in all tiles of a (potentially) large image; it can use
small versions of the projection if the user is zoomed out.
The image pyramid also imroves visual quality, especially at zoom levels
where there is a pyramid level that matches perfectly (i.e. at e.g. 50%,
25%, and 12.5% zoom). A step on the right track for bug #76096.
* app/core/gimpprojection.[ch]: Adjusted to make use of an image
pyramid. GimpProjection now keeps an array of TileManager:s, one per
pyramid level. Renamed _alloc_tiles to _alloc_levels.
* app/display/gimpdisplayshell-draw.c: (gimp_display_shell_draw_area):
Use the right GimpProjection level when drawing
* app/display/gimpdisplayshell-render.c: (render_image_init_info_full):
Setup RenderInfo with level in mind
* app/base/tile-manager.[ch]: Extended API a bit, nothing complicated.
* app/base/tile-manager-private.h (struct _TileManager): Keep a pointer
to the level below for use in an image pyramid.
svn path=/trunk/; revision=22727