*/
#include "config.h"
+
#include <string.h>
-#include <gdk/gdk.h>
+#include "gdkgc.h"
+#include "gdkpixmap.h"
#include "gdkprivate.h"
+#include "gdkx.h"
GdkGC*
gdk_gc_new (GdkWindow *window)
GdkGCValues *values,
GdkGCValuesMask values_mask)
{
- GdkWindowPrivate *window_private;
GdkGC *gc;
GdkGCPrivate *private;
static GdkColor black;
g_return_val_if_fail (window != NULL, NULL);
- window_private = (GdkWindowPrivate*) window;
- if (window_private->destroyed)
+ if (GDK_DRAWABLE_DESTROYED (window))
return NULL;
private = g_new (GdkGCPrivate, 1);
else
private->background = white;
- if ((values_mask & GDK_GC_FONT) && (values->font->type == GDK_FONT_FONT))
+ if ((values_mask & GDK_GC_FONT) && (values->font->type == GDK_FONT_FONT
+ || values->font->type == GDK_FONT_FONTSET))
{
private->font = (HFONT) ((GdkFontPrivate*) values->font)->xfont;
GDK_NOTE (MISC, g_print (" font=%#x", private->font));
{
private->tile = values->tile;
gdk_pixmap_ref (private->tile);
- GDK_NOTE (MISC, g_print (" tile=%#x", ((GdkPixmapPrivate *)private->tile)->xwindow));
+ GDK_NOTE (MISC, g_print (" tile=%#x", GDK_DRAWABLE_XID (private->tile)));
}
else
private->tile = NULL;
if (values_mask & GDK_GC_STIPPLE)
{
- private->stipple = values->tile;
+ private->stipple = values->stipple;
gdk_pixmap_ref (private->stipple);
- GDK_NOTE (MISC, g_print (" stipple=%#x", ((GdkPixmapPrivate *)private->stipple)->xwindow));
+ GDK_NOTE (MISC, g_print (" stipple=%#x", GDK_DRAWABLE_XID (private->stipple)));
}
else
private->stipple = NULL;
if (values_mask & GDK_GC_CLIP_MASK)
{
private->clip_region =
- BitmapToRegion (((GdkPixmapPrivate *)values->clip_mask)->xwindow);
+ BitmapToRegion ((HBITMAP) GDK_DRAWABLE_XID (values->clip_mask));
GDK_NOTE (MISC, g_print (" clip=%#x", private->clip_region));
}
else
if ((hdc = CreateCompatibleDC (NULL)) == NULL)
g_warning ("gdk_gc_get_values: CreateCompatibleDC failed");
if ((oldbitmap =
- SelectObject (hdc, ((GdkPixmapPrivate *) pixmap)->xwindow)) == NULL)
+ SelectObject (hdc, GDK_DRAWABLE_XID (pixmap))) == NULL)
g_warning ("gdk_gc_get_values: SelectObject #1 failed");
hbr = GetStockObject (BLACK_BRUSH);
if (!FillRect (hdc, &rect, hbr))
g_return_if_fail (gc != NULL);
g_return_if_fail (font != NULL);
- if (font->type == GDK_FONT_FONT)
+ if (font->type == GDK_FONT_FONT
+ || font->type == GDK_FONT_FONTSET)
{
gc_private = (GdkGCPrivate*) gc;
font_private = (GdkFontPrivate*) font;
GdkPixmap *tile)
{
GdkGCPrivate *private;
- GdkPixmapPrivate *pixmap_private;
HBITMAP pixmap;
g_return_if_fail (gc != NULL);
pixmap = NULL;
if (tile)
- {
- pixmap_private = (GdkPixmapPrivate*) tile;
- pixmap = pixmap_private->xwindow;
- }
+ pixmap = GDK_DRAWABLE_XID (tile);
if (private->tile != NULL)
gdk_pixmap_unref (private->tile);
GdkPixmap *stipple)
{
GdkGCPrivate *private;
- GdkPixmapPrivate *pixmap_private;
HBITMAP pixmap;
g_return_if_fail (gc != NULL);
pixmap = NULL;
if (stipple)
- {
- pixmap_private = (GdkPixmapPrivate*) stipple;
- pixmap = pixmap_private->xwindow;
- }
+ pixmap = GDK_DRAWABLE_XID (stipple);
if (private->stipple != NULL)
gdk_pixmap_unref (private->stipple);
if (mask)
{
- GdkWindowPrivate *mask_private;
-
- mask_private = (GdkWindowPrivate*) mask;
- if (mask_private->destroyed)
+ if (GDK_DRAWABLE_DESTROYED (mask))
return;
- xmask = mask_private->xwindow;
+ xmask = GDK_DRAWABLE_XID (mask);
}
else
xmask = NULL;
}
HDC
-gdk_gc_predraw (GdkWindowPrivate *window_private,
- GdkGCPrivate *gc_private)
+gdk_gc_predraw (GdkDrawablePrivate *drawable_private,
+ GdkGCPrivate *gc_private)
{
GdkColormapPrivate *colormap_private =
- (GdkColormapPrivate *) window_private->colormap;
+ (GdkColormapPrivate *) drawable_private->colormap;
COLORREF bg;
COLORREF fg;
LOGBRUSH logbrush;
g_assert (gc_private->xgc == NULL);
- if (window_private->window_type == GDK_WINDOW_PIXMAP)
+ if (drawable_private->window_type == GDK_DRAWABLE_PIXMAP)
{
if ((gc_private->xgc = CreateCompatibleDC (NULL)) == NULL)
g_warning ("gdk_gc_predraw: CreateCompatibleDC failed");
if ((gc_private->saved_dc = SaveDC (gc_private->xgc)) == 0)
g_warning ("gdk_gc_predraw: SaveDC #1 failed");
- if (SelectObject (gc_private->xgc, window_private->xwindow) == NULL)
+ if (SelectObject (gc_private->xgc, drawable_private->xwindow) == NULL)
g_warning ("gdk_gc_predraw: SelectObject #1 failed");
}
else
{
- if ((gc_private->xgc = GetDC (window_private->xwindow)) == NULL)
+ if ((gc_private->xgc = GetDC (drawable_private->xwindow)) == NULL)
g_warning ("gdk_gc_predraw: GetDC failed");
if ((gc_private->saved_dc = SaveDC (gc_private->xgc)) == 0)
g_warning ("gdk_gc_predraw: SaveDC #2 failed");
}
- gc_private->hwnd = window_private->xwindow;
+ gc_private->hwnd = drawable_private->xwindow;
if (colormap_private == NULL)
{
if (SetTextColor (gc_private->xgc, fg) == CLR_INVALID)
g_warning ("gdk_gc_predraw: SetTextColor failed");
+#if 0
+ switch (gc_private->fill_style)
+ {
+ case GDK_STIPPLED:
+ {
+ GdkPixmap *stipple = gc_private->stipple;
+ GdkPixmapPrivate *stipple_private = (GdkPixmapPrivate *) stipple;
+ HBITMAP hbm = stipple_private->xwindow;
+ if (NULL == (hbr = CreatePatternBrush (hbm)))
+ g_warning ("gdk_gc_predraw: CreatePatternBrush failed");
+
+#ifdef NATIVE_WIN16
+ SetBrushOrg (gc_private->xgc, gc_private->ts_x_origin,
+ gc_private->ts_y_origin);
+#else
+ SetBrushOrgEx(gc_private->xgc, gc_private->ts_x_origin,
+ gc_private->ts_y_origin, NULL);
+#endif
+ }
+ break;
+ case GDK_SOLID:
+ default:
+ if ((hbr = CreateSolidBrush (fg)) == NULL)
+ g_warning ("gdk_gc_predraw: CreateSolidBrush failed");
+ break;
+ }
+#else
if ((hbr = CreateSolidBrush (fg)) == NULL)
g_warning ("gdk_gc_predraw: CreateSolidBrush failed");
-
+#endif
if (SelectObject (gc_private->xgc, hbr) == NULL)
g_warning ("gdk_gc_predraw: SelectObject #3 failed");
}
void
-gdk_gc_postdraw (GdkWindowPrivate *window_private,
- GdkGCPrivate *gc_private)
+gdk_gc_postdraw (GdkDrawablePrivate *drawable_private,
+ GdkGCPrivate *gc_private)
{
HGDIOBJ hpen;
HGDIOBJ hbr;
GdkColormapPrivate *colormap_private =
- (GdkColormapPrivate *) window_private->colormap;
+ (GdkColormapPrivate *) drawable_private->colormap;
if ((hpen = GetCurrentObject (gc_private->xgc, OBJ_PEN)) == NULL)
g_warning ("gdk_gc_postdraw: GetCurrentObject #1 failed");
g_warning ("gdk_gc_postraw: UnrealizeObject failed");
}
#endif
- if (window_private->window_type == GDK_WINDOW_PIXMAP)
+ if (drawable_private->window_type == GDK_DRAWABLE_PIXMAP)
{
if (!DeleteDC (gc_private->xgc))
g_warning ("gdk_gc_postdraw: DeleteDC failed");