* 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 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-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-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
* 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
* 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
* 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
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
* 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
* 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
* 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
* 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
* 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
* 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-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-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-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-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-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 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-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 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 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-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 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-22 Sven Neumann <sven@gimp.org>
* app/core/gimparea.[ch]
* app/core/gimpprojection.c
* app/display/gimpdisplay.c: use GSlice to allocate GimpArea and
sanitize the API.
svn path=/trunk/; revision=22584
2007-05-04 Sven Neumann <sven@gimp.org>
* app/display/gimpstatusbar.c (gimp_statusbar_progress_message):
reverted last change, the behavior is different.
svn path=/trunk/; revision=22399
2007-05-04 Sven Neumann <sven@gimp.org>
* app/display/gimpstatusbar.c (gimp_statusbar_progress_message):
removed code that guards us from multiline messages. This
happens
later in gimp_statusbar_vprintf() anyway.
svn path=/trunk/; revision=22398
2007-04-11 Mukund Sivaraman <muks@mukund.org>
* app/display/gimpstatusbar.c: Fixes a bug (#428493) where
gimp_statusbar_push_temp() expects vaargs and
gimp_statusbar_progress_message() directly passes a message
to it as the format string.. in this case the message
contains % (in the filename) and no arguments.
svn path=/trunk/; revision=22231
2007-03-23 Sven Neumann <sven@gimp.org>
Make XOR color configurable (bug #421466):
* app/config/gimprc-blurbs.h
* app/config/gimpdisplayconfig.[ch]: added gimprc option for the
XOR color.
* app/display/gimpcanvas.[ch]: keep a reference to the Gimp object
and take the XOR color from GimpDisplayConfig.
* app/display/gimpdisplayshell.c: pass gimp to gimp_canvas_new().
svn path=/trunk/; revision=22164
2007-03-21 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-preview.c
(gimp_display_shell_trace_tri_edge): be more robust to avoid
crashes like bug #420595.
svn path=/trunk/; revision=22155
2007-03-20 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpcursorview.[ch] (gimp_color_frame_update_cursor):
disallow passing a NULL image.
(gimp_color_frame_clear_cursor): new function that clears the
cursor view.
* app/widgets/gimpcolorframe.c (gimp_color_frame_update): if
color_frame->sample_valid is FALSE, don't do any color
transformations and don't construct any string because none
of them is going to be used (all labels will show "n/a").
* app/display/gimpstatusbar.[ch]: renamed set_cursor() API
to update_cursor().
* app/display/gimpdisplayshell-cursor.c
(gimp_display_shell_update_cursor): move variables to local
scopes. Follow GimpStatusbar API change. Cleanup.
(gimp_display_shell_clear_cursor): ditto. Follow GimpColorFrame
API change.
svn path=/trunk/; revision=22153
2007-03-14 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-render.c: sprinkled some const
qualifiers and removed obscure shift code in favor of letting the
compiler do this optimization.
svn path=/trunk/; revision=22121