Commit graph

1294 commits

Author SHA1 Message Date
Simon Budig
2f4e32a7d5 fix the numerical overflow for the new box-filtering stuff.
2007-09-26  Simon Budig  <simon@gimp.org>

	* app/display/gimpdisplayshell-render.c: fix the numerical overflow
	for the new box-filtering stuff.

	Fixes bug #479807.


svn path=/trunk/; revision=23659
2007-09-26 14:49:21 +00:00
Sven Neumann
816889b544 removed const qualifiers to fix compilation on Solaris 8 (bug #479817).
2007-09-24  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c: removed const qualifiers
	to fix compilation on Solaris 8 (bug #479817).

svn path=/trunk/; revision=23642
2007-09-24 15:43:01 +00:00
Simon Budig
2e1402c01b Accomodate for spill that happens by the box filtering.
2007-09-23  Simon Budig  <simon@gimp.org>

	* app/display/gimpdisplay.c: Accomodate for spill that
	happens by the box filtering.

	Fixes bug #474509. Again. Hopefully.


svn path=/trunk/; revision=23630
2007-09-23 18:21:08 +00:00
Simon Budig
a26c1d7df9 oops - managed to miss the mask rendering.
2007-09-23  Simon Budig  <simon@gimp.org>

	* app/display/gimpdisplayshell-render.c: oops - managed to miss the
	mask rendering.


svn path=/trunk/; revision=23619
2007-09-23 00:57:15 +00:00
Simon Budig
7d0a4ce1ec use Bresenham stepping for the y-direction as well.
2007-09-23  Simon Budig  <simon@gimp.org>

	* app/display/gimpdisplayshell-render.c: use Bresenham stepping
	for the y-direction as well.

	Fixes bug #474509.

	Retired old and unused functions.


svn path=/trunk/; revision=23618
2007-09-23 00:36:17 +00:00
Simon Budig
40f66e9c13 implement bresenham-like stepping for interpolating the view in
2007-09-23  Simon Budig  <simon@gimp.org>

	* app/display/gimpdisplayshell-render.c: implement
	bresenham-like stepping for interpolating the view in
	x-direction. Since I now know how it is supposed to work
	the y direction will follow shortly.

	Adresses bug #474509.


svn path=/trunk/; revision=23617
2007-09-22 22:28:51 +00:00
Simon Budig
98222b0359 avoid rendering issues by adding xdelta/2 to xstart.
2007-09-17  Simon Budig  <simon@gimp.org>

	* app/display/gimpdisplayshell-render.c: avoid rendering
	issues by adding xdelta/2 to xstart.

	Probably fixes bug #474509.


svn path=/trunk/; revision=23569
2007-09-16 23:38:37 +00:00
Sven Neumann
ff80ac1701 formatting.
2007-09-14  Sven Neumann  <sven@gimp.org>

	* app/base/tile-pyramid.c: formatting.

	* app/display/gimpdisplayshell-render.c: removed unused include.

svn path=/trunk/; revision=23545
2007-09-14 13:44:32 +00:00
Øyvind Kolås
eb8924c0cb clone the middle row/column when walking off the source drawable during
* app/display/gimpdisplayshell-render.c: (render_image_tile_fault),
(render_image_tile_fault_one_row): clone the middle row/column when
walking off the source drawable during downscaling. Probably fixes bug
#469567.

svn path=/trunk/; revision=23521
2007-09-12 20:26:58 +00:00
Sven Neumann
1954ee81fe use the offsets module TILE_WIDTH and TILE_HEIGHT instead of doing the
2007-09-12  Sven Neumann  <sven@gimp.org>

	* app/base/tile.c (tile_data_pointer): use the offsets module
	TILE_WIDTH and TILE_HEIGHT instead of doing the module operation
	in each and every caller.

	* app/base/boundary.c
	* app/base/pixel-region.c
	* app/base/tile-manager.c
	* app/core/gimpchannel.c
	* app/core/gimpdrawable-blend.c
	* app/core/gimpdrawable.c
	* app/core/gimpimage-contiguous-region.c
	* app/core/gimplayer.c
	* app/display/gimpdisplayshell-render.c
	* app/paint-funcs/paint-funcs.c
	* app/paint/gimppaintcore.c
	* app/tools/gimpiscissorstool.c: changed accordingly.


svn path=/trunk/; revision=23515
2007-09-12 18:29:11 +00:00
Michael Natterer
c3f89cc7f0 Bring back our menus when building on OS X but not against the quartz GDK
2007-09-12  Michael Natterer  <mitch@gimp.org>

	Bring back our menus when building on OS X but not against the
	quartz GDK backend:

	* configure.in: added conditional HAVE_GDK_QUARTZ.

	* menus/Makefile.am: use it when moving the help menu around.

	* app/dialogs/preferences-dialog.c
	* app/display/gimpdisplayshell.c
	* app/gui/gtk-macmenu.c
	* app/gui/gui.c
	* app/widgets/gimptoolbox.c: use #ifdef GDK_WINDOWING_QUARTZ
	instead of #ifdef HAVE_CARBON when enabling the global menubar.


svn path=/trunk/; revision=23512
2007-09-12 16:26:04 +00:00
Sven Neumann
4ec78466fd formatting.
2007-09-11  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c: formatting.

svn path=/trunk/; revision=23502
2007-09-11 14:45:06 +00:00
Martin Nordholts
1ff1f238a8 Remove the STRESS_TEST stuff, gimp_image_invalidate_without_render does
2007-09-02  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-draw.c
	(gimp_display_shell_draw_area): Remove the STRESS_TEST stuff,
	gimp_image_invalidate_without_render does not exist anymore
	anyway.

svn path=/trunk/; revision=23441
2007-09-02 06:12:55 +00:00
Øyvind Kolås
aec18403a9 use nearest neighbour resampling when rendering for a 1byte per pixel
* app/display/gimpdisplayshell-render.c: (render_image_tile_fault):
use nearest neighbour resampling when rendering for a 1byte per pixel
drawable (ony happens when interacting with the SIOX tool, and then
the buffer is a indexed; not a greyscale buffer), fixes bug #472027.

svn path=/trunk/; revision=23424
2007-08-31 10:04:37 +00:00
Raphael Quinet
b520112784 do not use anti-aliasing when the zoom is exactly 200%. Fixes bug #472150.
2007-08-31  Raphael Quinet  <raphael@gimp.org>

	* app/display/gimpdisplayshell-render.c (render_image_tile_fault):
	do not use anti-aliasing when the zoom is exactly 200%.  Fixes bug
	#472150.  Also miscellaneous cosmetic changes.

svn path=/trunk/; revision=23423
2007-08-31 09:36:16 +00:00
Michael Natterer
3736ea8284 First version of global menubar support for OSX. Work in progress.
2007-08-30  Michael Natterer  <mitch@gimp.org>

	First version of global menubar support for OSX. Work in progress.

	* app/gui/Makefile.am
	* app/gui/sync-menu.[ch]: new files containing code that takes
	a GtkMenuShell and proxies it in the OSX global menubar. Taken
	from http://developer.imendio.com/projects/gtk-macosx/menubar

	* app/gui/gui.c: put the global image popup menu to the menubar.

	* app/dialogs/preferences-dialog.c
	* app/display/gimpdisplayshell.c
	* app/widgets/gimptoolbox.c: #ifdef out all menubars in windows.

	* app/Makefile.am (AM_LDFLAGS): add $(CARBON_LDFLAGS)


svn path=/trunk/; revision=23408
2007-08-30 11:19:00 +00:00
Michael Natterer
c3d79369e2 don't use SCALEX()/SCALEY() on x/y *and* width/height of the highlight
2007-08-24  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-draw.c
	(gimp_display_shell_draw_area): don't use SCALEX()/SCALEY() on x/y
	*and* width/height of the highlight rectangle because that adds up
	the error introduced by the ceil() contained in these macros.
	Instead, scale manually and use ceil() on x/y and floor() on
	width/height. Fixes off-by-one rendering artifacts (bug #467972).


svn path=/trunk/; revision=23367
2007-08-24 16:56:13 +00:00
Michael Natterer
b0cd81cde7 don't use g_slice_dup(), that's in GLib 2.14 only.
2007-08-24  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell.c: don't use g_slice_dup(), that's
	in GLib 2.14 only.


svn path=/trunk/; revision=23366
2007-08-24 16:46:34 +00:00
Øyvind Kolås
8f8c98d1cc s/compute_sample/box_filter/.
* app/display/gimpdisplayshell-render.c: s/compute_sample/box_filter/.

svn path=/trunk/; revision=23365
2007-08-24 16:13:27 +00:00
Michael Natterer
29759cd892 allocate shell->highlight with GSlice.
2007-08-24  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell.c: allocate shell->highlight with
	GSlice.


svn path=/trunk/; revision=23364
2007-08-24 16:07:44 +00:00
Øyvind Kolås
8f5819a5f6 swapped center and middle terms around (now center means horizontal
* app/display/gimpdisplayshell-render.c: swapped center and middle
terms around (now center means horizontal (betwen left and right )and
middle means vertical (between top and bottom)).

svn path=/trunk/; revision=23363
2007-08-24 16:00:48 +00:00
Øyvind Kolås
a3a6253291 removed a temporary variable, simplified logic slightly.
* app/display/gimpdisplayshell-render.c: (compute_sample): removed
a temporary variable, simplified logic slightly.
(render_image_tile_fault, render_image_tile_fault_one_row): moved
sum computation out of loop.

svn path=/trunk/; revision=23362
2007-08-24 15:58:49 +00:00
Øyvind Kolås
d51e3c42f7 Replaced signed integres with unsigned ones for weights etc to gain some
* app/display/gimpdisplayshell-render.c: Replaced signed integres with
unsigned ones for weights etc to gain some additional bits of
precision. Enabled anti-aliasing for zoomlevels between 100% and 200%
to improve the smoothness of the display at the levels where the size
differences between pixels yields the most distracting artifacts.

svn path=/trunk/; revision=23361
2007-08-24 15:39:23 +00:00
Øyvind Kolås
42433749d6 Reshuffled shifting code in fixed point code of display to improve
quality.
* app/display/gimpdisplayshell-render.c:
(compute_sample): reshuffle a bit of the fixed point induced
shifting to allow higher precision.
(render_image_tile_fault): remove need to disable box-filter
for some non square zoom ratios that was needed before
compute_sample cleanup.
, (render_image_tile_fault_one_row): fetch source sample #1
from the correct tile.

svn path=/trunk/; revision=23360
2007-08-24 14:33:44 +00:00
Øyvind Kolås
306e21b354 fixed a division by zero issue.
* app/display/gimpdisplayshell-render.c: (compute_sample)
fixed a division by zero issue.

svn path=/trunk/; revision=23357
2007-08-24 02:34:06 +00:00
Øyvind Kolås
94f2404a43 added a static global variable with configuration. (compute_sample): moved
* app/display/gimpdisplayshell-render.c: added a static global
variable with configuration.
(compute_sample): moved common computation of alpha*weight factors 
for channel out of loop.

svn path=/trunk/; revision=23355
2007-08-23 20:12:49 +00:00
Øyvind Kolås
408f51ca59 refactored to use arrays of tiles/source pixels instead of individual
* app/display/gimpdisplayshell-render.c: (compute_sample),
(render_image_tile_fault), (render_image_tile_fault_one_row):
refactored to use arrays of tiles/source pixels instead of individual
variables, also modified the order of the 0..8 numbers to sorted
in increasing row-major order.

svn path=/trunk/; revision=23354
2007-08-23 13:37:13 +00:00
Øyvind Kolås
6a0935d235 refactored to use arrays of tiles/source pixels instead of individual
* app/display/gimpdisplayshell-render.c: (compute_sample),
(render_image_tile_fault), (render_image_tile_fault_one_row):
refactored to use arrays of tiles/source pixels instead of individual
variables, also modified the order of the 0..8 numbers to sorted
in increasing row-major order.

svn path=/trunk/; revision=23353
2007-08-23 13:25:30 +00:00
Øyvind Kolås
17ac225558 modified some constants and shifts to avoid checkerboard artifacts
svn path=/trunk/; revision=23350
2007-08-22 15:25:16 +00:00
Øyvind Kolås
91c63e4956 replaced bilinear interpolation from next larger pyramid level with a
* app/display/gimpdisplayshell-render.c: replaced bilinear
interpolation from next larger pyramid level with a boxfilter
of the next larger pyramid level.
This is probably the last update to the quality of the display
in GIMP 2.4.

svn path=/trunk/; revision=23349
2007-08-22 14:31:22 +00:00
Øyvind Kolås
cfd90e3851 added a bilinear filtering like weighting of neighbourhood pixels for
* app/display/gimpdisplayshell-render.c: added a bilinear filtering
like weighting of neighbourhood pixels for approximating the
downsampling from the next larger level in the projection mipmap.
Also some general code cleanup.

svn path=/trunk/; revision=23278
2007-08-15 21:29:43 +00:00
Øyvind Kolås
38dacc4571 Fixed regression at zoom levels > 100%, and moved some floating point code
* app/display/gimpdisplayshell-render.c: Fixed regression at zoom
levels > 100%, and moved some floating point code out of the worker
function.

svn path=/trunk/; revision=23251
2007-08-14 15:17:30 +00:00
Øyvind Kolås
2b11d50cfb replaced a computed lookup table acceleration with fixed point logic.
* app/display/gimpdisplayshell-render.c: replaced a computed lookup
table acceleration with fixed point logic.

svn path=/trunk/; revision=23249
2007-08-14 13:52:42 +00:00
Sven Neumann
0c64210b15 app/display/gimpdisplay.c formatting.
2007-08-13  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplay.c
	* app/display/gimpdisplay-render.c: formatting.


svn path=/trunk/; revision=23241
2007-08-13 19:36:18 +00:00
Sven Neumann
5bb8cc59cb fixed reference count of the display filter stack.
2007-08-08  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell.c (gimp_display_shell_new): fixed
	reference count of the display filter stack.

svn path=/trunk/; revision=23142
2007-08-08 07:48:11 +00:00
Sven Neumann
a737408eeb added GimpColorConfig and GimpColorManaged as construct-only properties.
2007-08-06  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpcolordisplay.[ch]: added GimpColorConfig 
and
	GimpColorManaged as construct-only properties.
	Deprecated gimp_color_display_new().

	* libgimpwidgets/gimpwidgets.def: updated for new symbols.

	* app/widgets/gimpcolordisplayeditor.c: use g_object_new() 
instead
	of gimp_color_display_new().

	* modules/cdisplay_lcms.c: use the image's embedded color 
profile
	for the display filter. Assume sRGB if no monitor profile is
	configured.

	* app/display/gimpdisplayshell.c: 
	* app/display/gimpdisplayshell-filter.[ch]: pass the display as
	color-managed object to the display filter.


svn path=/trunk/; revision=23127
2007-08-06 22:10:09 +00:00
Sven Neumann
2195c84297 added missing static qualifier.
2007-08-06  Sven Neumann  <sven@gimp.org>

	* app/core/gimpimage.c: added missing static qualifier.

	* app/display/gimpdisplayshell.c
	* app/display/gimpdisplayshell-handlers.c: implement the
	GimpColorManaged interface and delegate it to GimpImage.


svn path=/trunk/; revision=23126
2007-08-06 19:23:22 +00:00
Michael Natterer
17287617d9 factored out utility function gimp_display_shell_update_focus() which sets
2007-07-27  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-callbacks.c: factored out utility
	function gimp_display_shell_update_focus() which sets the active
	tool into the proper state after the canvas received focus.

	(gimp_display_shell_canvas_tool_events): use it here instead of
	duplicating the code 3 times.

	(gimp_display_shell_ruler_button_press): use it here too so the
	move and color tools don't do weird things in click-to-focus
	mode (when FOCUS_IN is delivered after BUTTON_PRESS).


svn path=/trunk/; revision=23020
2007-07-27 09:39:12 +00:00
Sven Neumann
bbdb6da18f moved common code into new utility function
2007-07-26  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-dnd.c: moved common code into new
	utility function gimp_display_shell_dnd_flush(). Also move focus
	to the image window from this function.

svn path=/trunk/; revision=23012
2007-07-26 10:52:39 +00:00
Sven Neumann
a5d10b2ff0 renamed gimp_image_active_drawable() to gimp_image_get_active_drawable().
2007-07-19  Sven Neumann  <sven@gimp.org>

	* app/core/gimpimage.[ch]: renamed gimp_image_active_drawable() to
	gimp_image_get_active_drawable().

	* app/[lots of files]
	* tools/pdbgen/pdb/paths.pdb
	* tools/pdbgen/pdb/image.pdb: changed accordingly.

svn path=/trunk/; revision=22958
2007-07-19 14:59:51 +00:00
Michael Natterer
d8c632cb93 Invalidate the image preview after the projection is completely
2007-06-26  Michael Natterer  <mitch@gimp.org>

	Invalidate the image preview after the projection is
	completely constructed. Fixes bug #449141.

	* app/core/gimpmarshal.list: add VOID:BOOLEAN

	* app/core/gimpimage.[ch]: add boolean parameter
	invalidate_preview to the "flush" signal.

	* app/core/gimpprojection.[ch]: add boolean member
	invalidate_preview to the GimpProjection struct. Set it to TRUE if
	it was TRUE in the image's "flush" signal. When the projection is
	completely constructed after a flush, invalidate the image's
	preview.

	* app/display/gimpdisplay-handlers.c
	* app/widgets/gimpitemtreeview.c
	* app/widgets/gimpimagedock.c
	* app/widgets/gimpimageeditor.c: changed callback signatures
	accordingly.


svn path=/trunk/; revision=22840
2007-06-26 21:39:51 +00:00
Sven Neumann
09578ea070 removed extra check for gthread and fold it into the GLIB and GTK checks.
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-25 12:41:59 +00:00
Martin Nordholts
17f91f0491 Refactored the two helper functions render_image_init_info(_full)? and
2007-06-21  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-render.c (gimp_display_shell_render):
	Refactored the two helper functions render_image_init_info(_full)?
	and always use the shell base scale for the shell->mask. Fixes
	bug #448417.

svn path=/trunk/; revision=22822
2007-06-21 20:27:19 +00:00
Sven Neumann
f322854007 app/text/Makefile.am app/core/Makefile.am app/tools/Makefile.am
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-07 13:19:44 +00:00
Sven Neumann
a4079a37db minor API cleanup. Use horizontal and vertical scale to determine the
2007-06-06  Sven Neumann  <sven@gimp.org>

	* app/core/gimpprojection.[ch]: minor API cleanup. Use 
horizontal
	and vertical scale to determine the pyramid level to use.

	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-render.c: follow the API change.


svn path=/trunk/; revision=22730
2007-06-06 21:40:31 +00:00
Martin Nordholts
7917611e53 Implemented an image pyramid for the GimpProjection. An image pyramid
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
2007-06-06 13:45:44 +00:00
Michael Natterer
3fef65025a app/display/gimpdisplayshell-dnd.c app/widgets/gimpitemtreeview.c set the
2007-06-02  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-dnd.c
	* app/widgets/gimpitemtreeview.c
	* app/widgets/gimpchanneltreeview.c: set the "linked" property of
	newly dropped items to FALSE.

	* app/widgets/gimptoolbox-dnd.c (gimp_toolbox_drop_drawable):
	stylistic cleanup.


svn path=/trunk/; revision=22693
2007-06-02 11:45:54 +00:00
Michael Natterer
11f6b6d005 app/display/gimpdisplayshell-dnd.c make drop-duplicated drawables visible
2007-05-29  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-dnd.c
	* app/widgets/gimptoolbox-dnd.c: make drop-duplicated drawables
	visible before adding them to the image. Spotted by Jimmac.


svn path=/trunk/; revision=22645
2007-05-28 23:44:38 +00:00
Michael Natterer
2fe95848c5 Don't leave the user without progress bar just because the display's
2007-05-28  Michael Natterer  <mitch@gimp.org>

	Don't leave the user without progress bar just because the
	display's statusbar is invisible:

	* app/display/gimpstatusbar.[ch]: if the statusbar is invisible
	when a progress wants to be shown, temporarily show it, recording
	the fact in the new boolean "progress_shown" member. Added new API
	gimp_statusbar_get/set_visible() which is aware of the new
	temporary visibility state.

	* app/display/gimpdisplayshell-appearance.c
	(gimp_display_shell_set_show_statusbar)
	* app/display/gimpdisplayshell-progress.c
	(gimp_display_shell_progress_message): use the new API instead of
	showing/hiding the widget directly.


svn path=/trunk/; revision=22642
2007-05-28 17:42:55 +00:00
Sven Neumann
a6d783152d app/core/gimp-user-install.c app/core/gimpgradient-load.c
2007-05-23  Sven Neumann  <sven@gimp.org>

	* app/core/gimp-user-install.c
	* app/core/gimpgradient-load.c
	* app/core/gimpsamplepoint.c
	* app/core/gimpscanconvert.c
	* app/core/gimpunit.c
	* app/display/gimpdisplayshell-filter-dialog.c
	* app/display/gimpdisplayshell-layer-select.c
	* app/display/gimpdisplayshell-scale.c
	* app/file/gimprecentitem.c
	* app/gui/splash.c: allocate structs using GSlice.

svn path=/trunk/; revision=22590
2007-05-23 10:22:09 +00:00