Implement.

2006-07-21  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkgc-quartz.c: (gdk_quartz_gc_get_values),
	(gdk_quartz_gc_set_values), (_gdk_windowing_gc_copy),
	(gdk_gc_get_screen): Implement.

	* gdk/quartz/gdkwindow-quartz.c: (gdk_window_set_back_pixmap):
	Implement.
This commit is contained in:
Richard Hult 2006-07-21 15:17:59 +00:00 committed by Richard Hult
parent 465daa910f
commit a0cdff6cca
4 changed files with 94 additions and 12 deletions

View File

@ -1,3 +1,12 @@
2006-07-21 Richard Hult <richard@imendio.com>
* gdk/quartz/gdkgc-quartz.c: (gdk_quartz_gc_get_values),
(gdk_quartz_gc_set_values), (_gdk_windowing_gc_copy),
(gdk_gc_get_screen): Implement.
* gdk/quartz/gdkwindow-quartz.c: (gdk_window_set_back_pixmap):
Implement.
2006-07-21 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkstyle.c:

View File

@ -1,3 +1,12 @@
2006-07-21 Richard Hult <richard@imendio.com>
* gdk/quartz/gdkgc-quartz.c: (gdk_quartz_gc_get_values),
(gdk_quartz_gc_set_values), (_gdk_windowing_gc_copy),
(gdk_gc_get_screen): Implement.
* gdk/quartz/gdkwindow-quartz.c: (gdk_window_set_back_pixmap):
Implement.
2006-07-21 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkstyle.c:

View File

@ -29,7 +29,30 @@ static void
gdk_quartz_gc_get_values (GdkGC *gc,
GdkGCValues *values)
{
/* FIXME: Implement */
GdkGCQuartz *private;
private = GDK_GC_QUARTZ (gc);
memset (values, 0, sizeof (GdkGCValues));
/* FIXME: Fill in more value as/if they are added. */
values->foreground.pixel = _gdk_gc_get_fg_pixel (gc);
values->background.pixel = _gdk_gc_get_bg_pixel (gc);
values->function = GDK_COPY;
values->fill = _gdk_gc_get_fill (gc);
values->tile = _gdk_gc_get_tile (gc);
values->stipple = _gdk_gc_get_stipple (gc);
/* The X11 backend always returns a NULL clip_mask. */
values->clip_mask = NULL;
values->ts_x_origin = gc->ts_x_origin;
values->ts_y_origin = gc->ts_y_origin;
values->clip_x_origin = gc->clip_x_origin;
values->clip_y_origin = gc->clip_y_origin;
}
static void
@ -160,13 +183,29 @@ void
_gdk_windowing_gc_copy (GdkGC *dst_gc,
GdkGC *src_gc)
{
/* FIXME: Implement */
GdkGCQuartz *dst_quartz_gc = GDK_GC_QUARTZ (dst_gc);
GdkGCQuartz *src_quartz_gc = GDK_GC_QUARTZ (src_gc);
dst_quartz_gc->values_mask = src_quartz_gc->values_mask;
dst_quartz_gc->have_clip_region = src_quartz_gc->have_clip_region;
dst_quartz_gc->have_clip_mask = src_quartz_gc->have_clip_mask;
if (dst_quartz_gc->values_mask & GDK_GC_CLIP_MASK && dst_quartz_gc->clip_mask)
{
CGImageRelease (dst_quartz_gc->clip_mask);
dst_quartz_gc->clip_mask = NULL;
}
if (src_quartz_gc->values_mask & GDK_GC_CLIP_MASK && src_quartz_gc->clip_mask)
dst_quartz_gc->clip_mask =
CGImageCreateCopy (GDK_PIXMAP_IMPL_QUARTZ (GDK_PIXMAP_OBJECT (src_quartz_gc->clip_mask)->impl)->image);
}
GdkScreen *
gdk_gc_get_screen (GdkGC *gc)
{
return NULL;
return _gdk_screen;
}
void
@ -210,11 +249,11 @@ _gdk_quartz_update_context_from_gc (CGContextRef context, GdkGC *gc)
}
else if (private->have_clip_mask && private->clip_mask)
{
/* FIXME: This is 10.4 only. For lower versions, we need to transform the
/* Note: This is 10.4 only. For lower versions, we need to transform the
* mask into a region.
*/
CGContextClipToMask (context,
CGRectMake(gc->clip_x_origin, gc->clip_y_origin,
CGRectMake (gc->clip_x_origin, gc->clip_y_origin,
CGImageGetWidth (private->clip_mask),
CGImageGetHeight (private->clip_mask)),
private->clip_mask);

View File

@ -128,7 +128,6 @@ gdk_window_impl_quartz_class_init (GdkWindowImplQuartzClass *klass)
drawable_class->get_visible_region = gdk_window_impl_quartz_get_visible_region;
}
static void
gdk_window_impl_quartz_init (GdkWindowImplQuartz *impl)
{
@ -887,11 +886,37 @@ gdk_window_set_back_pixmap (GdkWindow *window,
GdkPixmap *pixmap,
gboolean parent_relative)
{
GdkWindowObject *private = (GdkWindowObject *)window;
g_return_if_fail (GDK_IS_WINDOW (window));
g_return_if_fail (pixmap == NULL || !parent_relative);
g_return_if_fail (pixmap == NULL || gdk_drawable_get_depth (window) == gdk_drawable_get_depth (pixmap));
/* FIXME: Implement */
if (GDK_WINDOW_DESTROYED (window))
return;
if (private->bg_pixmap &&
private->bg_pixmap != GDK_PARENT_RELATIVE_BG &&
private->bg_pixmap != GDK_NO_BG)
g_object_unref (private->bg_pixmap);
if (parent_relative)
{
private->bg_pixmap = GDK_PARENT_RELATIVE_BG;
GDK_NOTE (MISC, g_print (G_STRLOC ": setting background pixmap to parent_relative\n"));
}
else
{
if (pixmap)
{
g_object_ref (pixmap);
private->bg_pixmap = pixmap;
}
else
{
private->bg_pixmap = GDK_NO_BG;
}
}
}
void