Commit Graph

153 Commits

Author SHA1 Message Date
Sven Neumann 2ef259cd20 app: use GimpRGB as mask color
Instead of passing GimpChannelType as mask color to
gimp_display_shell_set_mask(), change that function to accept a
GimpRGB color.

Adapt GimpForegroundSelectTool, the only user of the display mask
feature, to this change.
2010-09-29 20:35:00 +02:00
Sven Neumann a7413bd784 app/display: implement drawing of selection mask
Use cairo_mask_surface() to render the selection mask (as used by
the foreground selection tool).
2010-09-29 20:35:00 +02:00
Sven Neumann 1eb77f6360 app/display: refactor RenderInfo code 2010-09-29 20:34:59 +02:00
Sven Neumann 375567df6f app/display: sprinkle render code with const qualifiers 2010-09-29 20:34:59 +02:00
Sven Neumann b3182be59c app/display: remove obsolete includes 2010-09-29 20:34:59 +02:00
Sven Neumann 260c8560e4 app: remove gimp_display_shell_render_{init,exit}
The functions had become mostly obsolete and we can just use a
static scratch buffer for rendering.
2010-09-29 20:34:59 +02:00
Sven Neumann d5d5f4fb3f app/display: adjust a comment to reflect the current state of the code 2010-09-29 20:34:59 +02:00
Sven Neumann eb5bb6363e app/display: draw the crop highlight using cairo
Instead of dimming the actual pixels, apply a translucent fill to
the area outside the highlight rectangle.
2010-09-29 20:34:59 +02:00
Sven Neumann ccee0ec41a app/display: let cairo render the checkerboard
Instead of blending the scaled image data onto the checkerboard and
then painting this image to the screen, render the image data into
an ARGB cairo image surface. Then paint a checkerboard on the canvas
and the image on top of it.
2010-09-29 20:34:59 +02:00
Michael Natterer f0c40d3717 app: port GimpDisplayShell image drawing to cairo 2010-08-27 23:15:25 +02:00
Michael Natterer ea5acef4a5 app: remove redundant call to gimp_display_shell_scroll_get_render_start_offset() 2010-08-23 22:18:03 +02:00
Michael Natterer 10bb9b090f Get rid of useless const in "const GimpDisplayShell*" 2009-11-01 20:47:18 +01:00
Michael Natterer c5b856f16f Use gimp_display_get_image() instead of display->image 2009-10-06 19:20:44 +02:00
Michael Natterer 1a7c67bc05 Remove duplicate #define GIMP_DISPLAY_RENDER_BUF_WIDTH 256 2009-10-03 00:11:34 +02:00
Michael Natterer d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
Sven Neumann 64416069e0 app/core/gimpprojection.c (gimp_projection_get_tiles_at_level) cosmetics.
2008-11-21  Sven Neumann  <sven@gimp.org>

	* app/core/gimpprojection.c (gimp_projection_get_tiles_at_level)
	cosmetics.

	* app/display/gimpdisplayshell-render.[ch]: added const 
qualifier.


svn path=/trunk/; revision=27697
2008-11-21 17:59:04 +00:00
Michael Natterer 87dc343b21 remove public functions get_tiles(), get_image(), get_image_type() and
2008-11-04  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpprojection.[ch]: remove public functions
	get_tiles(), get_image(), get_image_type() and get_bytes().

	* app/actions/debug-commands.c
	* app/actions/layers-commands.c
	* app/core/gimpprojection-construct.c
	* app/display/gimpdisplayshell-render.c
	* app/paint/gimppaintcore.c
	* tools/pdbgen/pdb/layer.pdb: use the GimpPickable API insatead.

	* app/pdb/layer-cmds.c: regenerated.


svn path=/trunk/; revision=27547
2008-11-04 12:07:17 +00:00
Michael Natterer 5503e6a055 Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h had a
2008-10-09  Michael Natterer  <mitch@gimp.org>

	Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h
	had a GEGL dependency (they will have in the next commit, but I
	wanted to keep the commit separate).

	* app/dialogs/Makefile.am
	* app/file/Makefile.am
	* app/gui/Makefile.am
	* app/menus/Makefile.am
	* app/paint/Makefile.am
	* app/plug-in/Makefile.am
	* app/text/Makefile.am
	* app/vectors/Makefile.am
	* app/widgets/Makefile.am
	* app/xcf/Makefile.am: add GEGL_CFLAGS.

	* app/actions/*.c
	* app/core/*.c
	* app/dialogs/*.c
	* app/display/*.c
	* app/file/*.c
	* app/gui/*.c
	* app/menus/*.c
	* app/paint/*.c
	* app/pdb/gimppdb-utils.c
	* app/pdb/gimpprocedure.c
	* app/plug-in/*.c
	* app/text/*.c
	* app/tools/*.c
	* app/vectors/*.c
	* app/widgets/*.c
	* app/xcf/*.c: add <gegl.h> or replace <glib-object.h> by <gegl.h>
	to all files which include a drawable subclass or gimpimage.h

	* tools/pdbgen/app.pl: include <gegl.h> instead of <glib-object.h>
	in all generated files.

	* app/pdb/*-cmds.c: regenerated.

	* data/images/gimp-splash.png: the goat is still sleeping.
	By Aurore Derriennic.


svn path=/trunk/; revision=27202
2008-10-09 20:24:04 +00:00
Sven Neumann 35980b2291 formatting.
2008-08-25  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c 
(render_image_tile_fault):
	formatting.


svn path=/trunk/; revision=26756
2008-08-25 12:40:46 +00:00
Martin Nordholts 7865481ddf app/display/gimpdisplayshell-draw.[ch]
2008-08-10  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-draw.[ch]
	* app/display/gimpdisplayshell-render.[ch]
	* app/display/gimpdisplayshell-transform.[ch]
	* app/display/gimpdisplayshell-appearance.[ch]: Sprinkle as many
	const qualifiers we can without any implementation changes.

svn path=/trunk/; revision=26477
2008-08-10 10:09:03 +00:00
Martin Nordholts b9f66d0489 gimp_display_shell_ -> gimp_display_shell_scroll_ for functions that are
2008-08-10  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scroll.[ch]: gimp_display_shell_ ->
	gimp_display_shell_scroll_ for functions that are scroll
	related. Also did some other minor renamings.

	* app/display/gimpnavigationeditor.c
	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-scale.c 
	* app/display/gimpdisplayshell-render.c
	* app/display/gimpdisplayshell-transform.c
	* app/display/gimpdisplayshell-callbacks.c: Adapt to the name
	changes.

svn path=/trunk/; revision=26476
2008-08-10 09:08:11 +00:00
Sven Neumann 3b067cba23 added gimp_image_get_projection().
2008-08-07  Sven Neumann  <sven@gimp.org>

	* app/core/gimpimage.[ch]: added gimp_image_get_projection().

	* app/display/gimpdisplay-handlers.c
	* app/display/gimpdisplayshell-render.c
	* app/display/gimpdisplayshell-scroll.c
	* app/paint/gimppaintcore.c
	* app/paint/gimpsourcecore.c
	* app/tools/gimpbycolorselecttool.c
	* app/tools/gimpeditselectiontool.c
	* app/tools/gimpimagemaptool.c
	* app/tools/gimpiscissorstool.c
	* app/tools/gimppainttool.c
	* app/widgets/gimpsamplepointeditor.c
	* tools/pdbgen/pdb/image.pdb: use the new accessor function.

	* app/pdb/image-cmds.c: regenerated.


svn path=/trunk/; revision=26413
2008-08-07 09:17:46 +00:00
Martin Nordholts a33d80107b Kill disp_[xy]offset! We now keep store that information by using negative
2008-07-12  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell.c: Kill disp_[xy]offset! We now
	keep store that information by using negative values in
	offset_[xy].

	* app/display/gimpdisplayshell-scroll.[ch]
	(gimp_display_shell_scroll_clamp_offsets)
	(gimp_display_shell_get_scaled_image_viewport_offset): Adjust
	accordingly to preserve current behaviour.

	(gimp_display_shell_get_disp_offset): New function to get the old
	disp_[xy]offset based on the new offset_[xy].

	(gimp_display_shell_get_render_start_offset): New function to get
	th old offset_[xy] based on the new offset_[xy].

	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-scale.c
	* app/display/gimpdisplayshell-render.c: Get rid of
	disp_[xy]offset and use
	gimp_display_shell_get_render_start_offset() and
	gimp_display_shell_get_disp_offset() instead.

svn path=/trunk/; revision=26146
2008-07-12 07:00:46 +00:00
Michael Natterer cee3baea0f First draft of the "no image open" window, which is implemented as a
2008-03-18  Michael Natterer  <mitch@gimp.org>

	First draft of the "no image open" window, which is implemented as
	a display without image (a view with NULL model). Didn't change
	the display's appearance yet so I can first make sure the display
	without image works properly in all details before hiding these
	details.

	* app/core/gimp-gui.[ch]: add "gimp" parameter to display_create()
	and allow "image" to be NULL.

	* app/core/gimpcontext.c (gimp_context_real_set_display): a
	display's image can be NULL now.

	* app/display/gimpdisplay.[ch]: add Gimp and GimpDisplayConfig
	members.  Add Gimp parameter to gimp_display_shell_new(). Changed
	gimp_display_reconnect() to gimp_display_set_image() and allow to
	set a NULL image.

	* app/gui/gui-vtable.c (gui_display_create): if there is a single
	display without an image, call gimp_display_set_image() on that
	display instead of creating a new one.

	* app/display/gimpdisplayshell-close.c: if the last display is
	closed, don't close it but make it empty. Factored out that code
	to gimp_display_shell_really_close().

	* app/display/gimpdisplayshell-dnd.c: when dropping uris on an
	empty display, open the first one into that display and the other
	ones as layers of the newly opened image. This is consistent with
	dropping on an existing image but maybe needs some discussion.

	* app/display/gimpdisplayshell-callbacks.c: bail out early in the
	tool event callback so tools never have to deal with empty
	displays. In expose(), draw the drop zone on the empty display.

	* app/display/gimpdisplayshell-title.c: set the empty display's
	title to "Gimp - Drop Files".

	* app/display/gimpdisplay-foreach.c
	* app/display/gimpdisplay-handlers.c
	* app/display/gimpdisplayshell-appearance.c
	* app/display/gimpdisplayshell-autoscroll.c
	* app/display/gimpdisplayshell-callbacks.c
	* app/display/gimpdisplayshell-cursor.c
	* app/display/gimpdisplayshell-dnd.c
	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-filter-dialog.c
	* app/display/gimpdisplayshell-handlers.c
	* app/display/gimpdisplayshell-layer-select.c
	* app/display/gimpdisplayshell-preview.c
	* app/display/gimpdisplayshell-render.c
	* app/display/gimpdisplayshell-scale.c
	* app/display/gimpdisplayshell-scroll.c
	* app/display/gimpdisplayshell-selection.c
	* app/display/gimpdisplayshell-title.c
	* app/display/gimpdisplayshell.c
	* app/display/gimpnavigationeditor.c
	* app/display/gimpstatusbar.c: use display->gimp and
	display->config instead of going via the image. Guard against
	empty displays in some few places (most places can't be
	called). Where needed, use the canvas' dimensions instead of the
	image's dimensions so scroll offsets and scrollbars still have
	sane values instead of the last image's ones.

	* app/actions/actions.c (action_data_get_gimp)
	(action_data_get_context): use display->gimp instead of
	display->image->gimp.

	* app/actions/edit-commands.c (edit_paste_cmd_callback): redirect
	to "paste as new" if there is an empty display.

	* app/actions/tools-commands.c (tools_select_cmd_callback): don't
	initialize the new tool on an empty display.

	* app/actions/view-actions.c (view_actions_update): changed lots
	of sensitivity settings to be insensitive when there is no image
	(instead of no display).

	* app/actions/view-commands.c: use the display's config object
	instead of gimp's.


svn path=/trunk/; revision=25113
2008-03-18 21:22:21 +00:00
Simon Budig 25aec86548 don't use ceil, use SCALEX. Round hopefully more properly.
2007-12-29  Simon Budig  <simon@gimp.org>

        * app/display/gimpdisplayshell.c: don't use ceil, use SCALEX.
	* app/display/gimpdisplayshell-transform.c: Round hopefully more
	properly.

	This probably exchanges one set of artefacts for another one...

	* app/display/gimpdisplayshell-render.c: minor fixes.
	* app/display/gimpdisplayshell-selection.c: whitespace fix


svn path=/trunk/; revision=24457
2007-12-28 23:13:46 +00:00
Sven Neumann 53f3123847 added code for 1 and 3 bytes per pixel. Fixes bug #504115.
2007-12-18  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c
	(render_image_tile_fault_nearest): added code for 1 and 3 bytes
	per pixel. Fixes bug #504115.


svn path=/trunk/; revision=24387
2007-12-18 08:46:40 +00:00
Sven Neumann 1b4f87189d app/base/tile-pyramid.c (tile_pyramid_write_quarter) corrected formula
2007-12-13  Sven Neumann  <sven@gimp.org>

	* app/base/tile-pyramid.c (tile_pyramid_write_quarter)
	* app/display/gimpdisplayshell-render.c
	(render_image_tile_fault_nearest): corrected formula used for
	pre-multiplying the alpha value.


svn path=/trunk/; revision=24353
2007-12-13 19:00:00 +00:00
Sven Neumann aaa16d3b87 Speed up our display rendering code paths by keeping data with
2007-12-13  Sven Neumann  <sven@gimp.org>

	Speed up our display rendering code paths by keeping data with
	pre-multiplied alpha where possible. The projection tile-manager
	at 100 % zoom is not affected. So we can still always get the
	non-pre-multiplied pixel data.

	* app/core/gimpprojection.[ch]: removed
	gimp_projection_get_opacity(), the projection is always opaque.

	* app/base/tile-pyramid.[ch]: use pre-multiplied alpha for the
	upper levels of the pyramid. This speeds up validation of the
	upper levels significantly.

	* app/base/temp-buf.[ch]: added temp_buf_demultiply().

	* app/core/gimpimage-preview.c: demultiply the preview temp-buf
	obtained from the projection's tile tyramid.

	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-render.c: added code to deal with
	pre-multiplied data. In fact all data returned by
	render_image_tile_fault() is now pre-multiplied so that
	render_image_rgb_a() and render_image_gray_a() don't need to use
	the large lookup tables from gimprender.[ch] any longer.

svn path=/trunk/; revision=24352
2007-12-13 17:27:07 +00:00
Sven Neumann c1ec276567 shift only by 4 bits instead of 8. Should still keep us from overflowing
2007-10-30  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c (box_filter): shift only
	by 4 bits instead of 8. Should still keep us from overflowing 32
	bit integers but reduces the rounding error and seems to really
	fix bug #491503.


svn path=/trunk/; revision=23996
2007-10-30 22:03:32 +00:00
Sven Neumann c6e030dca2 reduce rounding errors. Fixed bug #491503.
2007-10-30  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c (box_filter): reduce
	rounding errors. Fixed bug #491503.

	* app/base/tile-pyramid.c (tile_pyramid_write_quarter): reduce
	rounding errors.


svn path=/trunk/; revision=23986
2007-10-30 08:39:51 +00:00
Sven Neumann 4ba204a2a8 tiny cosmetic cleanups.
2007-10-19  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c: tiny cosmetic cleanups.


svn path=/trunk/; revision=23886
2007-10-19 07:03:33 +00:00
Sven Neumann 4bfde23c61 fixed calculation of the alpha value.
2007-10-18  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c (box_filter): fixed
	calculation of the alpha value.


svn path=/trunk/; revision=23864
2007-10-18 08:07:26 +00:00
Sven Neumann 9f2174fcdf sprinkled some const qualifiers.
2007-10-17  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-render.c (box_filter): sprinkled
	some const qualifiers.


svn path=/trunk/; revision=23862
2007-10-17 19:25:01 +00:00
Sven Neumann 38f72c00ac removed level from GimpDisplayShell struct.
2007-10-08  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell.[ch]: removed level from
	GimpDisplayShell struct.

	* app/display/gimpdisplayshell-render.c: fixed rendering of the 
mask.
	Closes bug #448417 again.


svn path=/trunk/; revision=23767
2007-10-08 19:53:43 +00:00
Sven Neumann 95c6df090f app/config/gimpdisplayconfig.[ch] app/config/gimprc-blurbs.h
2007-10-08  Sven Neumann  <sven@gimp.org>

	* app/config/gimpdisplayconfig.[ch]
	* app/config/gimprc-blurbs.h
	* app/display/display-enums.[ch]
	* app/display/gimpdisplayshell-handlers.c
	* app/display/gimpdisplayshell-render.c: allow to configure the
	display zoom quality.

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

svn path=/trunk/; revision=23760
2007-10-08 13:30:49 +00:00
Simon Budig 682695a80d app/display/gimpdisplayshell.[ch] 64bittified the code so that the new
2007-09-30  Simon Budig  <simon@gimp.org>

	* app/display/gimpdisplayshell.[ch]
	* app/display/gimpdisplayshell-render.c: 64bittified the code so
	  that the new renderer also works for big images. Slightly
	  reorganized.

	* app/display/gimpdisplayshell-transform.c: Another go at
	  bug #474509. This even might be fixed now...


svn path=/trunk/; revision=23698
2007-09-30 17:24:47 +00:00
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 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
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
Ø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
Ø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
Ø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