#include "gdkinternals.h"
#include "gdkprivate-win32.h"
-static void gdk_win32_gc_destroy (GdkGC *gc);
static void gdk_win32_gc_get_values (GdkGC *gc,
GdkGCValues *values);
static void gdk_win32_gc_set_values (GdkGC *gc,
{
win32_gc->foreground = values->foreground.pixel;
win32_gc->values_mask |= GDK_GC_FOREGROUND;
- GDK_NOTE (MISC, (g_print ("fg=%.06x", win32_gc->foreground),
+ GDK_NOTE (MISC, (g_print ("fg=%.06lx", win32_gc->foreground),
s = ","));
}
{
win32_gc->background = values->background.pixel;
win32_gc->values_mask |= GDK_GC_BACKGROUND;
- GDK_NOTE (MISC, (g_print ("%sbg=%.06x", s, win32_gc->background),
+ GDK_NOTE (MISC, (g_print ("%sbg=%.06lx", s, win32_gc->background),
s = ","));
}
else
{
win32_gc->values_mask &= ~GDK_GC_FONT;
- GDK_NOTE (MISC, (g_print ("%sfont=NULL"),
+ GDK_NOTE (MISC, (g_print ("%sfont=NULL", s),
s = ","));
}
}
{
gdk_drawable_ref (win32_gc->tile);
win32_gc->values_mask |= GDK_GC_TILE;
- GDK_NOTE (MISC, (g_print ("%stile=%#x", s,
- GDK_PIXMAP_HBITMAP (win32_gc->tile)),
- s = ","));
+ GDK_NOTE (MISC,
+ (g_print ("%stile=%#x", s,
+ (guint) GDK_PIXMAP_HBITMAP (win32_gc->tile)),
+ s = ","));
}
else
{
else
gdk_drawable_ref (win32_gc->stipple);
win32_gc->values_mask |= GDK_GC_STIPPLE;
- GDK_NOTE (MISC, (g_print ("%sstipple=%#x", s,
- GDK_PIXMAP_HBITMAP (win32_gc->stipple)),
- s = ","));
+ GDK_NOTE (MISC,
+ (g_print ("%sstipple=%#x", s,
+ (guint) GDK_PIXMAP_HBITMAP (win32_gc->stipple)),
+ s = ","));
}
else
{
gdk_region_destroy (win32_gc->clip_region);
win32_gc->clip_region = NULL;
}
+
if (win32_gc->hcliprgn != NULL)
- DeleteObject (win32_gc->hcliprgn);
+ {
+ DeleteObject (win32_gc->hcliprgn);
+ win32_gc->hcliprgn = NULL;
+ }
if (values->clip_mask != NULL)
{
win32_gc->hcliprgn = NULL;
win32_gc->values_mask &= ~GDK_GC_CLIP_MASK;
}
- GDK_NOTE (MISC, (g_print ("%sclip=%#x", s, win32_gc->hcliprgn),
+ GDK_NOTE (MISC, (g_print ("%sclip=%#x", s, (guint) win32_gc->hcliprgn),
s = ","));
}
win32_gc = GDK_GC_WIN32 (gc);
+ if (win32_gc->hcliprgn)
+ {
+ DeleteObject (win32_gc->hcliprgn);
+ win32_gc->hcliprgn = NULL;
+ }
+
if (win32_gc->clip_region)
gdk_region_destroy (win32_gc->clip_region);
if (rectangle)
{
GDK_NOTE (MISC,
- g_print ("gdk_gc_set_clip_rectangle: (%d) %dx%d@+%d+%d\n",
- win32_gc,
+ g_print ("gdk_gc_set_clip_rectangle: %dx%d@+%d+%d\n",
rectangle->width, rectangle->height,
rectangle->x, rectangle->y));
win32_gc->clip_region = gdk_region_rectangle (rectangle);
}
else
{
- GDK_NOTE (MISC, g_print ("gdk_gc_set_clip_rectangle: (%d) NULL\n",
- win32_gc));
+ GDK_NOTE (MISC, g_print ("gdk_gc_set_clip_rectangle: NULL\n"));
+
win32_gc->clip_region = NULL;
win32_gc->values_mask &= ~GDK_GC_CLIP_MASK;
}
if (region)
{
- GDK_NOTE (MISC, g_print ("gdk_gc_set_clip_region: %d %dx%d+%d+%d\n",
- win32_gc,
+ GDK_NOTE (MISC, g_print ("gdk_gc_set_clip_region: %dx%d+%d+%d\n",
region->extents.x2 - region->extents.x1,
region->extents.y2 - region->extents.y1,
region->extents.x1, region->extents.y1));
+
win32_gc->clip_region = gdk_region_copy (region);
win32_gc->values_mask |= GDK_GC_CLIP_MASK;
}
else
{
- GDK_NOTE (MISC, g_print ("gdk_gc_set_clip_region: %d NULL\n",
- win32_gc));
+ GDK_NOTE (MISC, g_print ("gdk_gc_set_clip_region: NULL\n"));
+
win32_gc->clip_region = NULL;
win32_gc->values_mask &= ~GDK_GC_CLIP_MASK;
}
{
GdkGCWin32 *dst_win32_gc;
GdkGCWin32 *src_win32_gc;
- DWORD nbytes;
- LPRGNDATA rgn;
g_return_if_fail (GDK_IS_GC_WIN32 (dst_gc));
g_return_if_fail (GDK_IS_GC_WIN32 (src_gc));
gdk_drawable_unref (dst_win32_gc->stipple);
if (dst_win32_gc->clip_region != NULL)
gdk_region_destroy (dst_win32_gc->clip_region);
+ if (dst_win32_gc->hcliprgn != NULL)
+ DeleteObject (dst_win32_gc->hcliprgn);
*dst_win32_gc = *src_win32_gc;
+ if (dst_win32_gc->hcliprgn)
+ {
+ /* create a new region, to copy to */
+ dst_win32_gc->hcliprgn = CreateRectRgn(0,0,1,1);
+ /* overwrite from source */
+ CombineRgn (dst_win32_gc->hcliprgn, src_win32_gc->hcliprgn,
+ NULL, RGN_COPY);
+ }
if (dst_win32_gc->clip_region != NULL)
dst_win32_gc->clip_region = gdk_region_copy (dst_win32_gc->clip_region);
if (dst_win32_gc->font != NULL)
colormap_private = GDK_COLORMAP_PRIVATE_DATA (colormap);
+ g_return_val_if_fail(colormap_private != NULL, RGB (0,0,0));
+
if (colormap_private->xcolormap->rc_palette)
return PALETTEINDEX (pixel);
else
{
colormap_private = GDK_COLORMAP_PRIVATE_DATA (colormap);
- if (colormap_private->xcolormap->rc_palette)
+ /* maybe this should bail out with g_return_if_fail
+ * (colormap_private != NULL) ?
+ */
+ if (colormap_private && colormap_private->xcolormap->rc_palette)
{
int k;
if (SelectPalette (win32_gc->hdc, colormap_private->xcolormap->palette,
GdkGCValuesMask usage)
{
GdkGCWin32 *win32_gc = (GdkGCWin32 *) gc;
- GdkColormapPrivateWin32 *colormap_private =
- (GdkColormapPrivateWin32 *) GDK_DRAWABLE_IMPL_WIN32 (drawable)->colormap;
gboolean ok = TRUE;
int flag;
rect->bottom = CLAMP (boxes[i].y2 + gc->clip_y_origin,
G_MINSHORT, G_MAXSHORT);
- GDK_NOTE (MISC, g_print ("clip rgn box %d: %dx%d@+%d+%d\n",
+ GDK_NOTE (MISC, g_print ("clip rgn box %d: %ldx%ld@+%ld+%ld\n",
i,
rect->right-rect->left,
rect->bottom-rect->top,
HRGN hrgn;
RECT rect;
- g_print ("gdk_win32_hdc_get: %d: %#x\n", win32_gc, win32_gc->hdc);
+ g_print ("gdk_win32_hdc_get: %#x\n", (guint) win32_gc->hdc);
obj = GetCurrentObject (win32_gc->hdc, OBJ_BRUSH);
GetObject (obj, sizeof (LOGBRUSH), &logbrush);
- g_print ("brush: style: %s color: %.06x hatch: %#x\n",
+ g_print ("brush: style: %s color: %.06lx hatch: %#lx\n",
(logbrush.lbStyle == BS_HOLLOW ? "HOLLOW" :
(logbrush.lbStyle == BS_PATTERN ? "PATTERN" :
(logbrush.lbStyle == BS_SOLID ? "SOLID" :
else if (flag == 1)
{
GetRgnBox (hrgn, &rect);
- g_print ("clip region bbox: %dx%d@+%d+%d\n",
+ g_print ("clip region bbox: %ldx%ld@+%ld+%ld\n",
rect.right - rect.left,
rect.bottom - rect.top,
rect.left, rect.top);