mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 19:00:08 +00:00
gdk: remove get_composite_drawable vfunc
The vfunc is not used anymore.
This commit is contained in:
parent
61d4a019f8
commit
4c16995868
@ -36,13 +36,6 @@
|
||||
#include "gdkpixbuf.h"
|
||||
|
||||
|
||||
static GdkDrawable* gdk_drawable_real_get_composite_drawable (GdkDrawable *drawable,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gint *composite_x_offset,
|
||||
gint *composite_y_offset);
|
||||
static cairo_region_t * gdk_drawable_real_get_visible_region (GdkDrawable *drawable);
|
||||
|
||||
|
||||
@ -51,7 +44,6 @@ G_DEFINE_ABSTRACT_TYPE (GdkDrawable, gdk_drawable, G_TYPE_OBJECT)
|
||||
static void
|
||||
gdk_drawable_class_init (GdkDrawableClass *klass)
|
||||
{
|
||||
klass->get_composite_drawable = gdk_drawable_real_get_composite_drawable;
|
||||
/* Default implementation for clip and visible region is the same */
|
||||
klass->get_clip_region = gdk_drawable_real_get_visible_region;
|
||||
klass->get_visible_region = gdk_drawable_real_get_visible_region;
|
||||
@ -201,23 +193,6 @@ gdk_drawable_get_colormap (GdkDrawable *drawable)
|
||||
return GDK_DRAWABLE_GET_CLASS (drawable)->get_colormap (drawable);
|
||||
}
|
||||
|
||||
static GdkDrawable *
|
||||
gdk_drawable_real_get_composite_drawable (GdkDrawable *drawable,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gint *composite_x_offset,
|
||||
gint *composite_y_offset)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DRAWABLE (drawable), NULL);
|
||||
|
||||
*composite_x_offset = 0;
|
||||
*composite_y_offset = 0;
|
||||
|
||||
return g_object_ref (drawable);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_drawable_get_clip_region:
|
||||
* @drawable: a #GdkDrawable
|
||||
|
@ -76,14 +76,6 @@ struct _GdkDrawableClass
|
||||
cairo_region_t* (*get_clip_region) (GdkDrawable *drawable);
|
||||
cairo_region_t* (*get_visible_region) (GdkDrawable *drawable);
|
||||
|
||||
GdkDrawable* (*get_composite_drawable) (GdkDrawable *drawable,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gint *composite_x_offset,
|
||||
gint *composite_y_offset);
|
||||
|
||||
cairo_surface_t *(*ref_cairo_surface) (GdkDrawable *drawable);
|
||||
|
||||
GdkDrawable *(*get_source_drawable) (GdkDrawable *drawable);
|
||||
|
@ -204,20 +204,6 @@ gdk_offscreen_window_get_source_drawable (GdkDrawable *drawable)
|
||||
return _gdk_drawable_get_source_drawable (offscreen->pixmap);
|
||||
}
|
||||
|
||||
static GdkDrawable *
|
||||
gdk_offscreen_window_get_composite_drawable (GdkDrawable *drawable,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gint *composite_x_offset,
|
||||
gint *composite_y_offset)
|
||||
{
|
||||
GdkOffscreenWindow *offscreen = GDK_OFFSCREEN_WINDOW (drawable);
|
||||
|
||||
return g_object_ref (offscreen->pixmap);
|
||||
}
|
||||
|
||||
static GdkScreen*
|
||||
gdk_offscreen_window_get_screen (GdkDrawable *drawable)
|
||||
{
|
||||
@ -921,7 +907,6 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
|
||||
drawable_class->get_screen = gdk_offscreen_window_get_screen;
|
||||
drawable_class->get_visual = gdk_offscreen_window_get_visual;
|
||||
drawable_class->get_source_drawable = gdk_offscreen_window_get_source_drawable;
|
||||
drawable_class->get_composite_drawable = gdk_offscreen_window_get_composite_drawable;
|
||||
}
|
||||
|
||||
static void
|
||||
|
136
gdk/gdkwindow.c
136
gdk/gdkwindow.c
@ -418,7 +418,6 @@ gdk_window_class_init (GdkWindowObjectClass *klass)
|
||||
drawable_class->set_cairo_clip = gdk_window_set_cairo_clip;
|
||||
drawable_class->get_clip_region = gdk_window_get_clip_region;
|
||||
drawable_class->get_visible_region = gdk_window_get_visible_region;
|
||||
drawable_class->get_composite_drawable = gdk_window_get_composite_drawable;
|
||||
drawable_class->get_source_drawable = gdk_window_get_source_drawable;
|
||||
|
||||
quark_pointer_window = g_quark_from_static_string ("gtk-pointer-window");
|
||||
@ -3850,141 +3849,6 @@ gdk_window_get_source_drawable (GdkDrawable *drawable)
|
||||
return drawable;
|
||||
}
|
||||
|
||||
static GdkDrawable *
|
||||
gdk_window_get_composite_drawable (GdkDrawable *drawable,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gint *composite_x_offset,
|
||||
gint *composite_y_offset)
|
||||
{
|
||||
GdkWindowObject *private = (GdkWindowObject *)drawable;
|
||||
GSList *list;
|
||||
GdkPixmap *tmp_pixmap;
|
||||
GdkRectangle rect;
|
||||
gboolean overlap_buffer;
|
||||
GdkDrawable *source;
|
||||
GdkWindowObject *impl_window;
|
||||
GdkWindowPaint *implicit_paint;
|
||||
cairo_t *cr;
|
||||
|
||||
*composite_x_offset = -private->abs_x;
|
||||
*composite_y_offset = -private->abs_y;
|
||||
|
||||
if ((GDK_IS_WINDOW (drawable) && GDK_WINDOW_DESTROYED (drawable)))
|
||||
return g_object_ref (_gdk_drawable_get_source_drawable (drawable));
|
||||
|
||||
/* See if any buffered part is overlapping the part we want
|
||||
* to get
|
||||
*/
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
|
||||
overlap_buffer = FALSE;
|
||||
|
||||
for (list = private->paint_stack; list != NULL; list = list->next)
|
||||
{
|
||||
GdkWindowPaint *paint = list->data;
|
||||
cairo_region_overlap_t overlap;
|
||||
|
||||
overlap = cairo_region_contains_rectangle (paint->region, &rect);
|
||||
|
||||
if (overlap == CAIRO_REGION_OVERLAP_IN)
|
||||
{
|
||||
*composite_x_offset = paint->x_offset;
|
||||
*composite_y_offset = paint->y_offset;
|
||||
|
||||
return g_object_ref (paint->pixmap);
|
||||
}
|
||||
else if (overlap == CAIRO_REGION_OVERLAP_PART)
|
||||
{
|
||||
overlap_buffer = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
impl_window = gdk_window_get_impl_window (private);
|
||||
implicit_paint = impl_window->implicit_paint;
|
||||
if (implicit_paint)
|
||||
{
|
||||
cairo_region_overlap_t overlap;
|
||||
|
||||
rect.x += private->abs_x;
|
||||
rect.y += private->abs_y;
|
||||
|
||||
overlap = cairo_region_contains_rectangle (implicit_paint->region, &rect);
|
||||
if (overlap == CAIRO_REGION_OVERLAP_IN)
|
||||
{
|
||||
*composite_x_offset = -private->abs_x + implicit_paint->x_offset;
|
||||
*composite_y_offset = -private->abs_y + implicit_paint->y_offset;
|
||||
|
||||
return g_object_ref (implicit_paint->pixmap);
|
||||
}
|
||||
else if (overlap == CAIRO_REGION_OVERLAP_PART)
|
||||
overlap_buffer = TRUE;
|
||||
}
|
||||
|
||||
if (!overlap_buffer)
|
||||
return g_object_ref (_gdk_drawable_get_source_drawable (drawable));
|
||||
|
||||
tmp_pixmap = gdk_pixmap_new (drawable, width, height, -1);
|
||||
cr = gdk_cairo_create (tmp_pixmap);
|
||||
|
||||
source = _gdk_drawable_get_source_drawable (drawable);
|
||||
|
||||
gdk_cairo_set_source_pixmap (cr, source,
|
||||
x - *composite_x_offset,
|
||||
y - *composite_y_offset);
|
||||
cairo_paint (cr);
|
||||
|
||||
/* paint the backing stores */
|
||||
if (implicit_paint)
|
||||
{
|
||||
GdkWindowPaint *paint = list->data;
|
||||
|
||||
cairo_save (cr);
|
||||
|
||||
gdk_cairo_set_source_pixmap (cr, paint->pixmap,
|
||||
x - paint->x_offset,
|
||||
y - paint->y_offset);
|
||||
cairo_translate (cr, -x - paint->x_offset, -y - paint->y_offset);
|
||||
gdk_cairo_region (cr, paint->region);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
for (list = private->paint_stack; list != NULL; list = list->next)
|
||||
{
|
||||
GdkWindowPaint *paint = list->data;
|
||||
|
||||
if (paint->uses_implicit)
|
||||
continue; /* We already copied this above */
|
||||
|
||||
cairo_save (cr);
|
||||
|
||||
gdk_cairo_set_source_pixmap (cr, paint->pixmap,
|
||||
x - paint->x_offset,
|
||||
y - paint->y_offset);
|
||||
cairo_translate (cr, -x, -y);
|
||||
gdk_cairo_region (cr, paint->region);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
||||
/* Set these to location of tmp_pixmap within the window */
|
||||
*composite_x_offset = x;
|
||||
*composite_y_offset = y;
|
||||
|
||||
return tmp_pixmap;
|
||||
}
|
||||
|
||||
static cairo_region_t*
|
||||
gdk_window_get_clip_region (GdkDrawable *drawable)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user