gimp r22727 - in trunk: . app/base app/core app/display



Author: martinn
Date: 2007-06-06 14:45:44 +0100 (Wed, 06 Jun 2007)
New Revision: 22727
ViewCVS link: http://svn.gnome.org/viewcvs/gimp?rev=22727&view=rev

Modified:
   trunk/ChangeLog
   trunk/app/base/tile-manager-private.h
   trunk/app/base/tile-manager.c
   trunk/app/base/tile-manager.h
   trunk/app/core/gimpprojection.c
   trunk/app/core/gimpprojection.h
   trunk/app/display/gimpdisplayshell-draw.c
   trunk/app/display/gimpdisplayshell-render.c
Log:
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.






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]