2008-03-19 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplay.[ch]: add gimp_display_empty()/fill()
which turns it into an empty display and back.
* app/display/gimpdisplayshell.[ch]: add same api here.
* app/display/gimpdisplayshell-close.c
* app/gui/gui-vtable.c: use the new functions instead of having
the code here.
* app/display/gimpdisplayshell-selection.c
(gimp_display_shell_selection_control): stop the timeout and free
the segments when this function is called on an empty display.
svn path=/trunk/; revision=25124
2008-03-19 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-title.c: changed to only append
GIMP_ACRONYM in the window title and not affect the status-bar.
svn path=/trunk/; revision=25120
2008-03-19 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell.[ch]
* app/display/gimpdisplayshell-scale.[ch]: moved
gimp_display_shell_set_initial_scale() to gimpdisplayshell-scale.c.
* app/display/gimpdisplayoptions.c: reverted last change, we want
to keep the status-bar around.
svn path=/trunk/; revision=25119
2008-03-19 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell.[ch]
(gimp_display_shell_set_initial_scale): factored out this function
which calculates the zoom factor for new images. Also returns the
size of the canvas for that zoom factor.
* app/gui/gui-vtable.c (gui_display_create): use it to set the
initial scale of images loaded into the empty display, but don't
set the display's size yet.
svn path=/trunk/; revision=25118
2008-03-19 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayoptions.c
(gimp_display_options_no_image_class_init): hide the status-bar,
at least for now.
svn path=/trunk/; revision=25117
2008-03-19 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdockable.c
* app/widgets/gimpwidgets-utils.[ch]: moved utility function for
setting attributes on a PangoLayout out of gimpdockable.c.
* app/display/gimpcanvas.c (gimp_canvas_draw_drop_zone): use a
bold font and paint the layout with transparency.
svn path=/trunk/; revision=25116
2008-03-19 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell.c (gimp_display_shell_update_icon):
deal with NULL image and unset the icon.
* app/display/gimpdisplay.c (gimp_display_set_image): unset the
icon when no image is set.
* app/display/gimpdisplayshell-title.c
(gimp_display_shell_format_title): use GIMP_NAME as the window
title when no image is set. Append GIMP_ACRONYM otherwise.
svn path=/trunk/; revision=25115
2008-03-18 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayoptions.[ch]: add new options object
for the "no image" display appearance.
* app/display/gimpdisplayshell.[ch]: keep one of them around.
* app/display/gimpdisplayshell-appearance.[ch]: use the options
object when the display is empty. Add guards against no image
to some functions. Add gimp_display_shell_appearance_update()
which sets all options according to the current display state
(normal, fullscreen, no image).
* app/actions/view-actions.c: don't allow to configure the GUI
of the empty display.
* app/display/gimpdisplayshell-callbacks.c: use the new appearance
update function instead of doing it all here.
* app/display/gimpdisplayshell-close.c
* app/gui/gui-vtable.c: update the appearance when clearing or
filling the display.
* app/display/gimpdisplayshell-selection.c: forgot some guards
against empty displays.
svn path=/trunk/; revision=25114
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 Michael Natterer <mitch@gimp.org>
* app/display/gimpcanvas.[ch]: add gimp_canvas_draw_drop_zone()
which simply renders a big "Drop Here" on the canvas. Replaced
Gimp member and construct property by GimpDisplayConfig.
* app/display/gimpdisplayshell.c (gimp_display_shell_new): changed
accordingly.
svn path=/trunk/; revision=25112
2008-03-06 Sven Neumann <sven@gimp.org>
* app/tools/gimptransformtool.c
* app/tools/gimptransformoptions.[ch]
* app/display/gimpdisplayshell-preview.c: take the preview opacity
from the transform tool options. Based on a patch from Tom Lechner.
Closes bug #520690.
svn path=/trunk/; revision=25049
2008-03-06 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-preview.c: don't do the blending
here, just apply the opacity on the pixbuf's alpha channel.
svn path=/trunk/; revision=25048
2008-03-05 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-preview.c: applied a modified and
further optimized version of the patch from Tom Lechner as
attached to bug #167926. This makes the transform preview take
the layer opacity into account. Needs some more work...
svn path=/trunk/; revision=25038
2008-03-05 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell.h: changed PROJ_ROUND() macros to
use RINT() so they work correctly with negative numbers.
* app/tools/gimpdrawtool.c
(gimp_draw_tool_draw_line)
(gimp_draw_tool_draw_dashed_line)
(gimp_draw_tool_draw_rectangle)
(gimp_draw_tool_draw_arc)
(gimp_draw_tool_draw_boundary): use floating-point coordinate
transform functions again. These functions were changed to use
integer transform functions in 2004 (!!) which broke sub-pixel
precision drawing for stuff like straight-line and blend tool
and also sub-pixel drawing of the brush outline.
Should be backported to 2.4 after it has shown no ill effects in
trunk.
svn path=/trunk/; revision=25036
2008-03-02 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-coords.c
(gimp_display_shell_eval_event): applied slightly modified patch
from Alexia Death as attached to bug #508639.
svn path=/trunk/; revision=25006
2008-02-26 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell-transform.[ch]
(gimp_display_shell_transform_points)
* app/tools/gimpdrawtool.[ch] (gimp_draw_tool_draw_lines): take
arrays of GimpVector2 instead of arrays of gdouble to represent
the input points.
* app/display/gimpdisplayshell-draw.c
* app/tools/gimppolygonselecttool.c
* app/tools/gimpfreeselecttool.c: don't cast the GimpVector2 arrays
to double arrays when passing them to above functions.
* app/tools/gimpiscissorstool.c: create a temporary GimpVector2
array instead of a temporary gdouble array.
svn path=/trunk/; revision=24979
2008-02-04 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-preview.c
(gimp_display_shell_trace_tri_edge): use a gint for direction,
not
a gchar which might be unsigned. Patch from Giuliano Pochini;
fixes bug #340965.
svn path=/trunk/; revision=24795
2008-01-28 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell.[ch] (gimp_display_shell_snap_coords):
removed redundant GimpCoords parameter that use to cause valgrind
warnings about overlapping memory regions in memcpy().
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-autoscroll.c: changed accordingly.
svn path=/trunk/; revision=24730
2008-01-23 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-selection.c: show the selection,
even if the window is flagged as invisible, but don't start the
animation. Addresses bug #505758.
svn path=/trunk/; revision=24694
2008-01-23 Michael Natterer <mitch@gimp.org>
* app/tools/gimpimagemaptool.h: don't #include <gegl.h>
* app/actions/tools-commands.c
* app/display/gimpdisplayshell-callbacks.c
* app/tools/gimp-tools.c: include it here. Whenever the build
breaks because of some GEGL change in GIMP, please inlcude
<gegl.h> instead of <glib-object.h> or before <gtk/gtk.h> in the
affected .c files.
svn path=/trunk/; revision=24685
2008-01-22 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-coords.[ch]: applied patch from
Alexia Death with further event filter improvements (bug #508639).
svn path=/trunk/; revision=24672
2008-01-16 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-coords.c: applied parts of a change
from Alexia Death. This improves the event smoothing (bug #508639).
svn path=/trunk/; revision=24624
2008-01-14 Sven Neumann <sven@gimp.org>
* app/core/core-types.h
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-coords.[ch]
* app/display/gimpdisplayshell.h
* app/paint/gimpink.[ch]
* app/paint/gimpinkundo.[ch]: applied patch from Alexia Death
that
adds an event evaluation function that decides if an event is
needed or can be discarded. As a side-product some useful
dynamics
parameters like velocity are added to the GimpCoords struct. The
Ink tool is changed to use this information. See bug #508639.
svn path=/trunk/; revision=24607
2008-01-04 Hans Breuer <hans@breuer.org>
**/makefile.msc app/gimpcore.def : updated so it compiles and links
(almost, see bug #507298)
svn path=/trunk/; revision=24533
committing patch by Simon Budig to give an indication
when working on a layer mask, updated to fix staleness
and respond to "edit-changed". Might fix bug #132204.
* app/core/core-enums.[ch]: add GIMP_SELECTION_LAYER_ON.
* app/core/gimplayermask.c: add handler for "edit-changed".
* app/core/gimpcanvas.[ch]: add new style
GIMP_CANVAS_STYLE_LAYER_MASK_ACTIVE.
* app/display/gimpdisplayshell-selection.c: use new style
when layer mask is active.
svn path=/trunk/; revision=24520
2007-12-30 Sven Neumann <sven@gimp.org>
* app/display/gimpstatusbar.[ch]
* app/widgets/gimpprogressbox.[ch]: only update the
GtkProgressBar
if that would cause a visible change.
svn path=/trunk/; revision=24487
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 Sven Neumann <sven@gimp.org>
* libgimpwidgets/gimpcairo-utils.[ch]: addec const qualifiers to
GimpRGB parameters.
* app/widgets/gimprender.[ch]: removed global variables for
checkerboard colors and introduced functions to get the
checkerboard colors as pointers to GimpRGB structs.
* app/actions/view-actions.c
* app/display/gimpdisplayshell-appearance.c
* app/widgets/gimpviewrenderer.c
* app/widgets/gimpcolormapeditor.c: changed accordingly.
svn path=/trunk/; revision=24451
2007-12-18 Sven Neumann <sven@gimp.org>
* app/display/gimpnavigationeditor.c: minor cleanup.
* app/widgets/gimpnavigationview.c
(gimp_navigation_view_motion_notify): fixed handling of motion
events that broke when I introduced the call to
gdk_event_request_motions().
svn path=/trunk/; revision=24394
* app/widgets/gimphelp-ids.h
* app/display/gimpdisplayshell-scale.[ch]
* app/display/gimpnavigationeditor.[ch]
* app/actions/view-commands.[ch]
* app/actions/view-commands.c:
Changed "Fit Image to Window" to "Fill Window", and changed
"fit-to" to "fill" in all the related things. Fixes
bug #490364.
svn path=/trunk/; revision=24370
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 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 Sven Neumann <sven@gimp.org>
* app/widgets/gimprender.[ch]: export the light and dark check
color so that places that just need this information don't have to
access the gimp_render_blend_{dark,light}_check arrays.
* app/actions/view-actions.c
* app/display/gimpdisplayshell-appearance.c
* app/widgets/gimpcolormapeditor.c: changed accordingly.
svn path=/trunk/; revision=24351
* app/display/gimpdisplayshell-draw.c: draw grid correctly when
non-integer spacing is combined with a large offset. Fixes
bug #502374.
* app/core/gimpimage-snap.c: make snapping to grid work when
coord is less than the grid offset.
svn path=/trunk/; revision=24294