Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
GIMP
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
2,769
Issues
2,769
List
Boards
Labels
Service Desk
Milestones
Merge Requests
39
Merge Requests
39
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
External Wiki
External Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
GNOME
GIMP
Commits
cbce3390
Commit
cbce3390
authored
Oct 31, 2001
by
Michael Natterer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fscking broken pipe...
parent
5f63e079
Changes
90
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
90 changed files
with
7834 additions
and
7170 deletions
+7834
-7170
app/actions/edit-commands.c
app/actions/edit-commands.c
+0
-2
app/actions/file-commands.c
app/actions/file-commands.c
+6
-5
app/actions/image-commands.c
app/actions/image-commands.c
+5
-14
app/actions/view-commands.c
app/actions/view-commands.c
+46
-34
app/core/gimp-transform-region.c
app/core/gimp-transform-region.c
+54
-38
app/core/gimparea.c
app/core/gimparea.c
+87
-0
app/core/gimparea.h
app/core/gimparea.h
+12
-13
app/core/gimpdrawable-blend.c
app/core/gimpdrawable-blend.c
+43
-27
app/core/gimpdrawable-transform.c
app/core/gimpdrawable-transform.c
+54
-38
app/core/gimpimage-pick-color.c
app/core/gimpimage-pick-color.c
+22
-13
app/core/gimpprojection.c
app/core/gimpprojection.c
+230
-1930
app/core/gimpprojection.h
app/core/gimpprojection.h
+51
-185
app/dialogs/file-open-dialog.c
app/dialogs/file-open-dialog.c
+3
-2
app/dialogs/info-window.c
app/dialogs/info-window.c
+10
-5
app/dialogs/preferences-dialog.c
app/dialogs/preferences-dialog.c
+6
-6
app/display/Makefile.am
app/display/Makefile.am
+4
-2
app/display/gimpdisplay-area.c
app/display/gimpdisplay-area.c
+87
-0
app/display/gimpdisplay-area.h
app/display/gimpdisplay-area.h
+36
-0
app/display/gimpdisplay-callbacks.c
app/display/gimpdisplay-callbacks.c
+114
-100
app/display/gimpdisplay-callbacks.h
app/display/gimpdisplay-callbacks.h
+30
-30
app/display/gimpdisplay-foreach.c
app/display/gimpdisplay-foreach.c
+29
-170
app/display/gimpdisplay-foreach.h
app/display/gimpdisplay-foreach.h
+9
-22
app/display/gimpdisplay-handlers.c
app/display/gimpdisplay-handlers.c
+258
-0
app/display/gimpdisplay-handlers.h
app/display/gimpdisplay-handlers.h
+28
-0
app/display/gimpdisplay-ops.c
app/display/gimpdisplay-ops.c
+0
-323
app/display/gimpdisplay-render.c
app/display/gimpdisplay-render.c
+1
-0
app/display/gimpdisplay-scale.c
app/display/gimpdisplay-scale.c
+165
-128
app/display/gimpdisplay-scale.h
app/display/gimpdisplay-scale.h
+13
-10
app/display/gimpdisplay-scroll.c
app/display/gimpdisplay-scroll.c
+55
-47
app/display/gimpdisplay-scroll.h
app/display/gimpdisplay-scroll.h
+7
-7
app/display/gimpdisplay-selection.c
app/display/gimpdisplay-selection.c
+29
-16
app/display/gimpdisplay.c
app/display/gimpdisplay.c
+230
-1930
app/display/gimpdisplay.h
app/display/gimpdisplay.h
+51
-185
app/display/gimpdisplayshell-callbacks.c
app/display/gimpdisplayshell-callbacks.c
+114
-100
app/display/gimpdisplayshell-callbacks.h
app/display/gimpdisplayshell-callbacks.h
+30
-30
app/display/gimpdisplayshell-draw.c
app/display/gimpdisplayshell-draw.c
+1994
-216
app/display/gimpdisplayshell-draw.h
app/display/gimpdisplayshell-draw.h
+139
-7
app/display/gimpdisplayshell-render.c
app/display/gimpdisplayshell-render.c
+1
-0
app/display/gimpdisplayshell-scale.c
app/display/gimpdisplayshell-scale.c
+165
-128
app/display/gimpdisplayshell-scale.h
app/display/gimpdisplayshell-scale.h
+13
-10
app/display/gimpdisplayshell-scroll.c
app/display/gimpdisplayshell-scroll.c
+55
-47
app/display/gimpdisplayshell-scroll.h
app/display/gimpdisplayshell-scroll.h
+7
-7
app/display/gimpdisplayshell-selection.c
app/display/gimpdisplayshell-selection.c
+29
-16
app/display/gimpdisplayshell.c
app/display/gimpdisplayshell.c
+1994
-216
app/display/gimpdisplayshell.h
app/display/gimpdisplayshell.h
+139
-7
app/gui/edit-commands.c
app/gui/edit-commands.c
+0
-2
app/gui/file-commands.c
app/gui/file-commands.c
+6
-5
app/gui/file-open-dialog.c
app/gui/file-open-dialog.c
+3
-2
app/gui/gui.c
app/gui/gui.c
+77
-180
app/gui/gui.h
app/gui/gui.h
+13
-10
app/gui/image-commands.c
app/gui/image-commands.c
+5
-14
app/gui/info-window.c
app/gui/info-window.c
+10
-5
app/gui/preferences-dialog.c
app/gui/preferences-dialog.c
+6
-6
app/gui/toolbox.c
app/gui/toolbox.c
+5
-4
app/gui/view-commands.c
app/gui/view-commands.c
+46
-34
app/paint/gimpclone.c
app/paint/gimpclone.c
+23
-14
app/paint/gimpink.c
app/paint/gimpink.c
+30
-18
app/paint/gimppaintcore.c
app/paint/gimppaintcore.c
+67
-50
app/paint/gimpsourcecore.c
app/paint/gimpsourcecore.c
+23
-14
app/pdb/display_cmds.c
app/pdb/display_cmds.c
+4
-2
app/tools/gimpbezierselecttool.c
app/tools/gimpbezierselecttool.c
+121
-104
app/tools/gimpblendtool.c
app/tools/gimpblendtool.c
+43
-27
app/tools/gimpbrushtool.c
app/tools/gimpbrushtool.c
+67
-50
app/tools/gimpbucketfilltool.c
app/tools/gimpbucketfilltool.c
+12
-5
app/tools/gimpbycolorselecttool.c
app/tools/gimpbycolorselecttool.c
+40
-33
app/tools/gimpclonetool.c
app/tools/gimpclonetool.c
+23
-14
app/tools/gimpcolorpickertool.c
app/tools/gimpcolorpickertool.c
+22
-13
app/tools/gimpcroptool.c
app/tools/gimpcroptool.c
+85
-52
app/tools/gimpdrawtool.c
app/tools/gimpdrawtool.c
+55
-37
app/tools/gimpeditselectiontool.c
app/tools/gimpeditselectiontool.c
+37
-24
app/tools/gimpfliptool.c
app/tools/gimpfliptool.c
+11
-8
app/tools/gimpfreeselecttool.c
app/tools/gimpfreeselecttool.c
+6
-3
app/tools/gimpfuzzyselecttool.c
app/tools/gimpfuzzyselecttool.c
+6
-3
app/tools/gimpinktool.c
app/tools/gimpinktool.c
+30
-18
app/tools/gimpiscissorstool.c
app/tools/gimpiscissorstool.c
+45
-39
app/tools/gimpmagnifytool.c
app/tools/gimpmagnifytool.c
+31
-20
app/tools/gimpmeasuretool.c
app/tools/gimpmeasuretool.c
+55
-41
app/tools/gimpmovetool.c
app/tools/gimpmovetool.c
+104
-61
app/tools/gimppainttool.c
app/tools/gimppainttool.c
+67
-50
app/tools/gimppathtool.c
app/tools/gimppathtool.c
+32
-28
app/tools/gimprectselecttool.c
app/tools/gimprectselecttool.c
+19
-10
app/tools/gimpregionselecttool.c
app/tools/gimpregionselecttool.c
+6
-3
app/tools/gimpselectiontool.c
app/tools/gimpselectiontool.c
+33
-29
app/tools/gimpsourcetool.c
app/tools/gimpsourcetool.c
+23
-14
app/tools/gimptexttool.c
app/tools/gimptexttool.c
+14
-8
app/tools/gimptool.c
app/tools/gimptool.c
+9
-4
app/tools/gimptransformtool.c
app/tools/gimptransformtool.c
+54
-38
app/tools/xinput_airbrush.c
app/tools/xinput_airbrush.c
+6
-3
app/widgets/gimpcomponentlistitem.c
app/widgets/gimpcomponentlistitem.c
+0
-1
app/widgets/gimptoolbox.c
app/widgets/gimptoolbox.c
+5
-4
No files found.
app/actions/edit-commands.c
View file @
cbce3390
...
...
@@ -135,7 +135,6 @@ edit_paste_cmd_callback (GtkWidget *widget,
gdisp
->
gimage
->
gimp
->
global_buffer
,
FALSE
))
{
gdisplays_update_title
(
gdisp
->
gimage
);
gdisplays_flush
();
}
}
...
...
@@ -158,7 +157,6 @@ edit_paste_into_cmd_callback (GtkWidget *widget,
gdisp
->
gimage
->
gimp
->
global_buffer
,
TRUE
))
{
gdisplays_update_title
(
gdisp
->
gimage
);
gdisplays_flush
();
}
}
...
...
app/actions/file-commands.c
View file @
cbce3390
...
...
@@ -35,7 +35,7 @@
#include "display/gimpdisplay.h"
#include "display/gimpdisplay-foreach.h"
#include "display/gimpdisplay
-ops
.h"
#include "display/gimpdisplay
shell
.h"
#include "file-commands.h"
#include "file-new-dialog.h"
...
...
@@ -272,7 +272,7 @@ file_close_cmd_callback (GtkWidget *widget,
GimpDisplay
*
gdisp
;
return_if_no_display
(
gdisp
,
data
);
g
display_close_window
(
gdisp
,
FALSE
);
g
imp_display_shell_close
(
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
)
,
FALSE
);
}
void
...
...
@@ -315,11 +315,12 @@ file_revert_confirm_callback (GtkWidget *widget,
if
(
new_gimage
!=
NULL
)
{
undo_free
(
new_gimage
);
gdisplays_reconnect
(
old_gimage
,
new_gimage
);
gdisplays_resize_cursor_label
(
new_gimage
);
gdisplays_update_full
(
new_gimage
);
gdisplays_shrink_wrap
(
new_gimage
);
gimp_image_clean_all
(
new_gimage
);
gdisplays_flush
();
}
else
if
(
status
!=
GIMP_PDB_CANCEL
)
{
...
...
app/actions/image-commands.c
View file @
cbce3390
...
...
@@ -268,7 +268,9 @@ image_duplicate_cmd_callback (GtkWidget *widget,
new_gimage
=
gimp_image_duplicate
(
gimage
);
gimp_create_display
(
new_gimage
->
gimp
,
new_gimage
);
gimp_create_display
(
new_gimage
->
gimp
,
new_gimage
,
0x0101
);
g_object_unref
(
G_OBJECT
(
new_gimage
));
}
...
...
@@ -375,7 +377,6 @@ static void
image_scale_implement
(
ImageResize
*
image_scale
)
{
GimpImage
*
gimage
=
NULL
;
gboolean
rulers_flush
=
FALSE
;
gboolean
display_flush
=
FALSE
;
/* this is a bit ugly:
we hijack the flush variable
to check if an undo_group was
...
...
@@ -395,20 +396,16 @@ image_scale_implement (ImageResize *image_scale)
image_scale
->
resize
->
resolution_x
,
image_scale
->
resize
->
resolution_y
);
rulers_flush
=
TRUE
;
display_flush
=
TRUE
;
}
if
(
image_scale
->
resize
->
unit
!=
gimage
->
unit
)
{
if
(
!
display_flush
)
if
(
!
display_flush
)
undo_push_group_start
(
gimage
,
IMAGE_SCALE_UNDO
);
gimp_image_set_unit
(
gimage
,
image_scale
->
resize
->
unit
);
gdisplays_setup_scale
(
gimage
);
gdisplays_resize_cursor_label
(
gimage
);
rulers_flush
=
TRUE
;
display_flush
=
TRUE
;
}
...
...
@@ -418,7 +415,7 @@ image_scale_implement (ImageResize *image_scale)
if
(
image_scale
->
resize
->
width
>
0
&&
image_scale
->
resize
->
height
>
0
)
{
if
(
!
display_flush
)
if
(
!
display_flush
)
undo_push_group_start
(
gimage
,
IMAGE_SCALE_UNDO
);
gimp_image_scale
(
gimage
,
...
...
@@ -435,12 +432,6 @@ image_scale_implement (ImageResize *image_scale)
}
}
if
(
rulers_flush
)
{
gdisplays_setup_scale
(
gimage
);
gdisplays_resize_cursor_label
(
gimage
);
}
if
(
display_flush
)
{
undo_push_group_end
(
gimage
);
...
...
app/actions/view-commands.c
View file @
cbce3390
...
...
@@ -30,9 +30,9 @@
#include "display/gimpdisplay.h"
#include "display/gimpdisplay-foreach.h"
#include "display/gimpdisplay-ops.h"
#include "display/gimpdisplay-scale.h"
#include "display/gimpdisplay-selection.h"
#include "display/gimpdisplayshell.h"
#include "info-dialog.h"
#include "info-window.h"
...
...
@@ -55,7 +55,7 @@ view_zoomin_cmd_callback (GtkWidget *widget,
GimpDisplay
*
gdisp
;
return_if_no_display
(
gdisp
,
data
);
gimp_display_s
cale
(
gdisp
,
GIMP_ZOOM_IN
);
gimp_display_s
hell_scale
(
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
)
,
GIMP_ZOOM_IN
);
}
void
...
...
@@ -65,7 +65,7 @@ view_zoomout_cmd_callback (GtkWidget *widget,
GimpDisplay
*
gdisp
;
return_if_no_display
(
gdisp
,
data
);
gimp_display_s
cale
(
gdisp
,
GIMP_ZOOM_OUT
);
gimp_display_s
hell_scale
(
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
)
,
GIMP_ZOOM_OUT
);
}
void
...
...
@@ -76,7 +76,7 @@ view_zoom_cmd_callback (GtkWidget *widget,
GimpDisplay
*
gdisp
;
return_if_no_display
(
gdisp
,
data
);
gimp_display_s
cale
(
gdisp
,
action
);
gimp_display_s
hell_scale
(
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
)
,
action
);
}
void
...
...
@@ -86,23 +86,26 @@ view_dot_for_dot_cmd_callback (GtkWidget *widget,
GimpDisplay
*
gdisp
;
return_if_no_display
(
gdisp
,
data
);
gdisplay_set_dot_for_dot
(
gdisp
,
GTK_CHECK_MENU_ITEM
(
widget
)
->
active
);
gimp_display_shell_scale_set_dot_for_dot
(
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
),
GTK_CHECK_MENU_ITEM
(
widget
)
->
active
);
}
void
view_info_window_cmd_callback
(
GtkWidget
*
widget
,
gpointer
data
)
{
GimpDisplay
*
gdisp
;
GimpDisplay
*
gdisp
;
GimpDisplayShell
*
shell
;
return_if_no_display
(
gdisp
,
data
);
shell
=
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
);
if
(
!
gimprc
.
info_window_follows_mouse
)
{
if
(
!
gdisp
->
window_
info_dialog
)
gdisp
->
window_
info_dialog
=
info_window_create
(
gdisp
);
if
(
!
shell
->
info_dialog
)
shell
->
info_dialog
=
info_window_create
(
gdisp
);
info_window_update
(
gdisp
);
info_dialog_popup
(
gdisp
->
window_info_dialog
);
info_dialog_popup
(
shell
->
info_dialog
);
}
else
{
...
...
@@ -114,15 +117,18 @@ void
view_nav_window_cmd_callback
(
GtkWidget
*
widget
,
gpointer
data
)
{
GimpDisplay
*
gdisp
;
GimpDisplay
*
gdisp
;
GimpDisplayShell
*
shell
;
return_if_no_display
(
gdisp
,
data
);
shell
=
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
);
if
(
gimprc
.
nav_window_per_display
)
{
if
(
!
gdisp
->
window_
nav_dialog
)
gdisp
->
window_
nav_dialog
=
nav_dialog_create
(
gdisp
);
if
(
!
shell
->
nav_dialog
)
shell
->
nav_dialog
=
nav_dialog_create
(
gdisp
);
nav_dialog_popup
(
gdisp
->
window_
nav_dialog
);
nav_dialog_popup
(
shell
->
nav_dialog
);
}
else
{
...
...
@@ -154,29 +160,32 @@ void
view_toggle_rulers_cmd_callback
(
GtkWidget
*
widget
,
gpointer
data
)
{
GimpDisplay
*
gdisp
;
GimpDisplay
*
gdisp
;
GimpDisplayShell
*
shell
;
return_if_no_display
(
gdisp
,
data
);
shell
=
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
);
if
(
!
GTK_CHECK_MENU_ITEM
(
widget
)
->
active
)
{
if
(
GTK_WIDGET_VISIBLE
(
gdisp
->
origin
))
if
(
GTK_WIDGET_VISIBLE
(
shell
->
origin
))
{
gtk_widget_hide
(
gdisp
->
origin
);
gtk_widget_hide
(
gdisp
->
hrule
);
gtk_widget_hide
(
gdisp
->
vrule
);
gtk_widget_hide
(
shell
->
origin
);
gtk_widget_hide
(
shell
->
hrule
);
gtk_widget_hide
(
shell
->
vrule
);
gtk_widget_queue_resize
(
GTK_WIDGET
(
gdisp
->
origin
->
parent
));
gtk_widget_queue_resize
(
GTK_WIDGET
(
shell
->
origin
->
parent
));
}
}
else
{
if
(
!
GTK_WIDGET_VISIBLE
(
gdisp
->
origin
))
if
(
!
GTK_WIDGET_VISIBLE
(
shell
->
origin
))
{
gtk_widget_show
(
gdisp
->
origin
);
gtk_widget_show
(
gdisp
->
hrule
);
gtk_widget_show
(
gdisp
->
vrule
);
gtk_widget_show
(
shell
->
origin
);
gtk_widget_show
(
shell
->
hrule
);
gtk_widget_show
(
shell
->
vrule
);
gtk_widget_queue_resize
(
GTK_WIDGET
(
gdisp
->
origin
->
parent
));
gtk_widget_queue_resize
(
GTK_WIDGET
(
shell
->
origin
->
parent
));
}
}
}
...
...
@@ -185,18 +194,21 @@ void
view_toggle_statusbar_cmd_callback
(
GtkWidget
*
widget
,
gpointer
data
)
{
GimpDisplay
*
gdisp
;
GimpDisplay
*
gdisp
;
GimpDisplayShell
*
shell
;
return_if_no_display
(
gdisp
,
data
);
shell
=
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
);
if
(
!
GTK_CHECK_MENU_ITEM
(
widget
)
->
active
)
{
if
(
GTK_WIDGET_VISIBLE
(
gdisp
->
statusarea
))
gtk_widget_hide
(
gdisp
->
statusarea
);
if
(
GTK_WIDGET_VISIBLE
(
shell
->
statusarea
))
gtk_widget_hide
(
shell
->
statusarea
);
}
else
{
if
(
!
GTK_WIDGET_VISIBLE
(
gdisp
->
statusarea
))
gtk_widget_show
(
gdisp
->
statusarea
);
if
(
!
GTK_WIDGET_VISIBLE
(
shell
->
statusarea
))
gtk_widget_show
(
shell
->
statusarea
);
}
}
...
...
@@ -213,8 +225,8 @@ view_toggle_guides_cmd_callback (GtkWidget *widget,
if
((
old_val
!=
gdisp
->
draw_guides
)
&&
gdisp
->
gimage
->
guides
)
{
g
display_expose_full
(
gdisp
);
gdisplay
s_flush
(
);
g
imp_display_shell_expose_full
(
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
)
);
gdisplay
_flush
(
gdisp
);
}
}
...
...
@@ -235,7 +247,7 @@ view_new_view_cmd_callback (GtkWidget *widget,
GimpDisplay
*
gdisp
;
return_if_no_display
(
gdisp
,
data
);
g
display_new_view
(
gdisp
);
g
imp_create_display
(
gdisp
->
gimage
->
gimp
,
gdisp
->
gimage
,
gdisp
->
scale
);
}
void
...
...
@@ -245,5 +257,5 @@ view_shrink_wrap_cmd_callback (GtkWidget *widget,
GimpDisplay
*
gdisp
;
return_if_no_display
(
gdisp
,
data
);
gimp_display_s
cale_shrink_wrap
(
gdisp
);
gimp_display_s
hell_scale_shrink_wrap
(
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
)
);
}
app/core/gimp-transform-region.c
View file @
cbce3390
...
...
@@ -50,6 +50,7 @@
#include "display/gimpdisplay.h"
#include "display/gimpdisplay-foreach.h"
#include "display/gimpdisplayshell.h"
#include "tool_manager.h"
#include "tool_options.h"
...
...
@@ -355,16 +356,19 @@ gimp_transform_tool_button_press (GimpTool *tool,
GdkEventButton
*
bevent
,
GimpDisplay
*
gdisp
)
{
GimpTransformTool
*
gt_tool
;
GimpDrawable
*
drawable
;
gint
dist
;
gint
closest_dist
;
gint
x
,
y
;
gint
i
;
gint
off_x
,
off_y
;
GimpTransformTool
*
gt_tool
;
GimpDisplayShell
*
shell
;
GimpDrawable
*
drawable
;
gint
dist
;
gint
closest_dist
;
gint
x
,
y
;
gint
i
;
gint
off_x
,
off_y
;
gt_tool
=
GIMP_TRANSFORM_TOOL
(
tool
);
shell
=
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
);
gt_tool
->
bpressed
=
TRUE
;
/* ALT */
drawable
=
gimp_image_active_drawable
(
gdisp
->
gimage
);
...
...
@@ -383,7 +387,7 @@ gimp_transform_tool_button_press (GimpTool *tool,
if
((
gdisp
==
tool
->
gdisp
)
&&
gt_tool
->
interactive
)
{
/* start drawing the bounding box and handles... */
gimp_draw_tool_start
(
GIMP_DRAW_TOOL
(
gt_tool
),
gdisp
->
canvas
->
window
);
gimp_draw_tool_start
(
GIMP_DRAW_TOOL
(
tool
),
shell
->
canvas
->
window
);
x
=
bevent
->
x
;
y
=
bevent
->
y
;
...
...
@@ -425,7 +429,7 @@ gimp_transform_tool_button_press (GimpTool *tool,
gt_tool
->
lastx
=
gt_tool
->
startx
;
gt_tool
->
lasty
=
gt_tool
->
starty
;
gdk_pointer_grab
(
gdisp
->
canvas
->
window
,
FALSE
,
gdk_pointer_grab
(
shell
->
canvas
->
window
,
FALSE
,
GDK_POINTER_MOTION_HINT_MASK
|
GDK_BUTTON1_MOTION_MASK
|
GDK_BUTTON_RELEASE_MASK
,
...
...
@@ -472,10 +476,10 @@ gimp_transform_tool_button_press (GimpTool *tool,
/* Grab the pointer if we're in non-interactive mode */
if
(
!
gt_tool
->
interactive
)
gdk_pointer_grab
(
gdisp
->
canvas
->
window
,
FALSE
,
(
GDK_POINTER_MOTION_HINT_MASK
|
GDK_BUTTON1_MOTION_MASK
|
GDK_BUTTON_RELEASE_MASK
)
,
gdk_pointer_grab
(
shell
->
canvas
->
window
,
FALSE
,
GDK_POINTER_MOTION_HINT_MASK
|
GDK_BUTTON1_MOTION_MASK
|
GDK_BUTTON_RELEASE_MASK
,
NULL
,
NULL
,
bevent
->
time
);
/* Find the transform bounds for some tools (like scale,
...
...
@@ -592,17 +596,20 @@ static void
gimp_transform_tool_doit
(
GimpTransformTool
*
gt_tool
,
GimpDisplay
*
gdisp
)
{
GimpTool
*
tool
;
TileManager
*
new_tiles
;
TransformUndo
*
tu
;
PathUndo
*
pundo
;
gboolean
new_layer
;
gint
i
,
x
,
y
;
GimpDisplayShell
*
shell
;
GimpTool
*
tool
;
TileManager
*
new_tiles
;
TransformUndo
*
tu
;
PathUndo
*
pundo
;
gboolean
new_layer
;
gint
i
,
x
,
y
;
gimp_set_busy
(
gdisp
->
gimage
->
gimp
);
tool
=
GIMP_TOOL
(
gt_tool
);
shell
=
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
);
/* undraw the tool before we muck around with the transform matrix */
gimp_draw_tool_pause
(
GIMP_DRAW_TOOL
(
gt_tool
));
...
...
@@ -679,22 +686,28 @@ gimp_transform_tool_doit (GimpTransformTool *gt_tool,
/* Flush the gdisplays */
if
(
gdisp
->
disp_xoffset
||
gdisp
->
disp_yoffset
)
{
x
=
gdisp
->
canvas
->
allocation
.
width
;
y
=
gdisp
->
canvas
->
allocation
.
height
;
x
=
shell
->
canvas
->
allocation
.
width
;
y
=
shell
->
canvas
->
allocation
.
height
;
if
(
gdisp
->
disp_yoffset
)
{
gdisplay_expose_area
(
gdisp
,
0
,
0
,
gdisp
->
disp_width
,
gdisp
->
disp_yoffset
);
gdisplay_expose_area
(
gdisp
,
0
,
gdisp
->
disp_yoffset
+
y
,
gdisp
->
disp_width
,
gdisp
->
disp_height
);
gimp_display_shell_add_expose_area
(
shell
,
0
,
0
,
gdisp
->
disp_width
,
gdisp
->
disp_yoffset
);
gimp_display_shell_add_expose_area
(
shell
,
0
,
gdisp
->
disp_yoffset
+
y
,
gdisp
->
disp_width
,
gdisp
->
disp_height
);
}
if
(
gdisp
->
disp_xoffset
)
{
gdisplay_expose_area
(
gdisp
,
0
,
0
,
gdisp
->
disp_xoffset
,
gdisp
->
disp_height
);
gdisplay_expose_area
(
gdisp
,
gdisp
->
disp_xoffset
+
x
,
0
,
gdisp
->
disp_width
,
gdisp
->
disp_height
);
gimp_display_shell_add_expose_area
(
shell
,
0
,
0
,
gdisp
->
disp_xoffset
,
gdisp
->
disp_height
);
gimp_display_shell_add_expose_area
(
shell
,
gdisp
->
disp_xoffset
+
x
,
0
,
gdisp
->
disp_width
,
gdisp
->
disp_height
);
}
}
...
...
@@ -752,12 +765,15 @@ gimp_transform_tool_cursor_update (GimpTool *tool,
GimpDisplay
*
gdisp
)
{
GimpTransformTool
*
tr_tool
;
GimpDisplayShell
*
shell
;
GimpDrawable
*
drawable
;
GdkCursorType
ctype
=
GDK_TOP_LEFT_ARROW
;
gint
x
,
y
;
tr_tool
=
GIMP_TRANSFORM_TOOL
(
tool
);
shell
=
GIMP_DISPLAY_SHELL
(
gdisp
->
shell
);
gdisplay_untransform_coords
(
gdisp
,
mevent
->
x
,
mevent
->
y
,
&
x
,
&
y
,
FALSE
,
FALSE
);
...
...
@@ -781,10 +797,10 @@ gimp_transform_tool_cursor_update (GimpTool *tool,
}
}
g
display_install_tool_cursor
(
gdisp
,
ctype
,
tool
->
tool_cursor
,
GIMP_CURSOR_MODIFIER_NONE
);
g
imp_display_shell_install_tool_cursor
(
shell
,
ctype
,
tool
->
tool_cursor
,
GIMP_CURSOR_MODIFIER_NONE
);
}
static
void
...
...
@@ -1647,11 +1663,11 @@ gimp_transform_tool_paste (GimpImage *gimage,
if
(
floating_layer
)
floating_sel_relax
(
floating_layer
,
TRUE
);
g
displays_update_area
(
gimage
,
drawable
->
offset_x
,
drawable
->
offset_y
,
drawable
->
width
,
drawable
->
height
);
g
imp_image_update
(
gimage
,
drawable
->
offset_x
,
drawable
->
offset_y
,
drawable
->
width
,
drawable
->
height
);
/* Push an undo */
if
(
layer
)
...
...
app/core/gimparea.c
0 → 100644
View file @
cbce3390
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "config.h"
#include <gtk/gtk.h>
#include "display-types.h"
#include "gimpdisplay-area.h"
#define OVERHEAD 25
/* in units of pixel area */
/*
* As far as I can tell, this function takes a GimpArea and unifies it with
* an existing list of GimpAreas, trying to avoid overdraw. [adam]
*/
GSList
*
gimp_display_area_list_process
(
GSList
*
list
,
GimpArea
*
area
)
{
GSList
*
new_list
;
GSList
*
l
;
gint
area1
,
area2
,
area3
;
GimpArea
*
ga2
;
/* start new list off */
new_list
=
g_slist_prepend
(
NULL
,
area
);
for
(
l
=
list
;
l
;
l
=
g_slist_next
(
l
))
{
ga2
=
(
GimpArea
*
)
l
->
data
;
area1
=
(
area
->
x2
-
area
->
x1
)
*
(
area
->
y2
-
area
->
y1
)
+
OVERHEAD
;
area2
=
(
ga2
->
x2
-
ga2
->
x1
)
*
(
ga2
->
y2
-
ga2
->
y1
)
+
OVERHEAD
;
area3
=
(
MAX
(
ga2
->
x2
,
area
->
x2
)
-
MIN
(
ga2
->
x1
,
area
->
x1
))
*
(
MAX
(
ga2
->
y2
,
area
->
y2
)
-
MIN
(
ga2
->
y1
,
area
->
y1
))
+
OVERHEAD
;
if
((
area1
+
area2
)
<
area3
)
{
new_list
=
g_slist_prepend
(
new_list
,
ga2
);
}
else
{
area
->
x1
=
MIN
(
area
->
x1
,
ga2
->
x1
);
area
->
y1
=
MIN
(
area
->
y1
,
ga2
->
y1
);
area
->
x2
=
MAX
(
area
->
x2
,
ga2
->
x2
);
area
->
y2
=
MAX
(
area
->
y2
,
ga2
->
y2
);
g_free
(
ga2
);
}
}
if
(
list
)
g_slist_free
(
list
);
return
new_list
;
}
GSList
*
gimp_display_area_list_free
(
GSList
*
list
)
{
if
(
list
)
{
g_slist_foreach
(
list
,
(
GFunc
)
g_free
,
NULL
);
g_slist_free
(
list
);
}
return
NULL
;
}
app/
display/gimpdisplay-ops
.h
→
app/
core/gimparea
.h
View file @
cbce3390
...
...
@@ -16,22 +16,21 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __GIMP
DISPLAY_OPS
_H__
#define __GIMP
DISPLAY_OPS
_H__
#ifndef __GIMP
_DISPLAY_AREA
_H__
#define __GIMP
_DISPLAY_AREA
_H__
gulong
gdisplay_black_pixel
(
GimpDisplay
*
gdisp
);
gulong
gdisplay_gray_pixel
(
GimpDisplay
*
gdisp
);
gulong
gdisplay_white_pixel
(
GimpDisplay
*
gdisp
);
gulong
gdisplay_color_pixel
(
GimpDisplay
*
gdisp
);
typedef
struct
_GimpArea
GimpArea
;
void
gdisplay_xserver_resolution
(
gdouble
*
xres
,
gdouble
*
yres
);
struct
_GimpArea
{
gint
x1
,
y1
,
x2
,
y2
;
/* area bounds */
};
void
gdisplay_new_view
(
GimpDisplay
*
gdisp
);
void
gdisplay_close_window
(
GimpDisplay
*
gdisp
,
gboolean
kill_it
);
void
gdisplay_shrink_wrap
(
GimpDisplay
*
gdisp
);
GSList
*
gimp_display_area_list_process
(
GSList
*
list
,