diff options
author | Tor Lillqvist <tml@iki.fi> | 2000-05-01 22:06:49 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@src.gnome.org> | 2000-05-01 22:06:49 +0000 |
commit | 1f149b3a8d4180024df25f700307406520159bec (patch) | |
tree | 937f197543fe407b6f4d80869f61db344df010c4 /gdk/win32/gdkprivate-win32.h | |
parent | 33dc3d6d4cf6ec76376c8ad30e165969db5324e9 (diff) | |
download | gtk+-1f149b3a8d4180024df25f700307406520159bec.tar.gz |
Large changes to the Win32 backend, partially made necessary by the
2000-05-02 Tor Lillqvist <tml@iki.fi>
Large changes to the Win32 backend, partially made necessary by
the changes to the backend-independent internal
structures. Attempts to implement similar backing store stuff as
on X11. The current (CVS) version of the Win32 backend is *not* as
stable as it was before the no-flicker branch was merged. A
zipfile with that version is available from
http://www.gimp.org/win32/. That should be use by "production"
code until this CVS version is usable. (But note, the Win32
backend has never been claimed to be "production quality".)
* README.win32: Add the above comment about versions.
* gdk/gdkwindow.c: Don't use backing store for now on Win32.
* gdk/gdk.def: Update.
* gdk/gdkfont.h: Declare temporary Win32-only functions. Will
presumably be replaced by some more better mechanism as 1.4 gets
closer to release shape.
* gdk/makefile.{cygwin,msc}: Update.
* gdk/win32/*.c: Correct inclusions of the backend-specific and
internal headers. Change code according to changes in these. Use
gdk_drawable_*, not gdk_window_* where necessary.
* gdk/win32/gdkdnd-win32.c: Use MISC selector for GDK_NOTE, not
our old DND.
* gdk/win32/gdkdrawable-win32.c (gdk_win32_draw_text): Don't try
to interpret single characters as UTF-8. Thanks to Hans Breuer.
Use correct function name in warning messages.
* gdk/win32/gdkevents-win32.c: Use correct parameter lists for the
GSourceFuncs gdk_event_prepare and gdk_event_check.
(gdk_event_get_graphics_expose): Do implement, use
PeekMessage. Thanks to Hans Breuer.
(event_mask_string): Debugging function to print an GdkEventMask.
(gdk_pointer_grab): Use it.
* gdk/win32/gdkfont-win32.c: The Unicode subrange that the
(old) book I used claimed was Hangul actually is CJK Unified
Ideographs Extension A. Also, Hangul Syllables were missing.
Improve logging.
* gdk/win32/gdkgc-win32.c: Largish changes.
* gdk/win32/gdkim-win32.c (gdk_set_locale): Use
g_win32_getlocale() from GLib, and not setlocale() to get current
locale name.
* gdk/win32/gdkprivate-win32.h
* gdk/win32/gdkwin32.h: Move stuff from gdkprivate-win32.h to
gdkwin32.h, similarily as in the X11 backend.
* gdk/win32/gdkwindow-win32.c (gdk_propagate_shapes): Bugfix,
assignment was used instead of equals in if test. Thanks to Hans
Breuer.
* gdk/win32/makefile.{cygwin,msc}
* gtk/makefile.{cygwin,msc}: Updates. Better kludge to get the
path to the Win32 headers that works also with the mingw compiler.
* gtk/gtkstyle.c: Include <string.h>.
Diffstat (limited to 'gdk/win32/gdkprivate-win32.h')
-rw-r--r-- | gdk/win32/gdkprivate-win32.h | 273 |
1 files changed, 12 insertions, 261 deletions
diff --git a/gdk/win32/gdkprivate-win32.h b/gdk/win32/gdkprivate-win32.h index 5c1be52b6d..92b6c12d98 100644 --- a/gdk/win32/gdkprivate-win32.h +++ b/gdk/win32/gdkprivate-win32.h @@ -27,252 +27,12 @@ #ifndef __GDK_PRIVATE_WIN32_H__ #define __GDK_PRIVATE_WIN32_H__ -#define STRICT /* We want strict type checks */ -#include <windows.h> -#include <commctrl.h> - -/* Make up for some minor mingw32 lossage */ - -/* PS_JOIN_MASK is missing from the mingw32 headers */ -#ifndef PS_JOIN_MASK -#define PS_JOIN_MASK (PS_JOIN_BEVEL|PS_JOIN_MITER|PS_JOIN_ROUND) -#endif - -/* CLR_INVALID is missing */ -#ifndef CLR_INVALID -#define CLR_INVALID CLR_NONE -#endif - -/* Some charsets are missing */ -#ifndef JOHAB_CHARSET -#define JOHAB_CHARSET 130 -#endif -#ifndef VIETNAMESE_CHARSET -#define VIETNAMESE_CHARSET 163 -#endif - -#ifndef FS_VIETNAMESE -#define FS_VIETNAMESE 0x100 -#endif - -#ifndef VM_OEM_PLUS -#define VK_OEM_PLUS 0xBB -#endif - -#include <time.h> - -#include <gdk/gdktypes.h> #include <gdk/gdkprivate.h> - -#include <gdk/gdkcursor.h> -#include <gdk/gdkevents.h> -#include <gdk/gdkfont.h> -#include <gdk/gdkgc.h> -#include <gdk/gdkim.h> -#include <gdk/gdkimage.h> -#include <gdk/gdkvisual.h> -#include <gdk/gdkwindow.h> - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Define corresponding Windows types for some X11 types, just for laziness. - */ - -typedef PALETTEENTRY XColor; -typedef guint VisualID; -typedef int Status; - -/* Define some of the X11 constants also here, again just for laziness */ - -/* Generic null resource */ -#define None 0 - -/* Error codes */ -#define Success 0 - -/* Grabbing status */ -#define GrabSuccess 0 -#define AlreadyGrabbed 2 - -/* Some structs are somewhat useful to emulate internally, just to - keep the code less #ifdefed. */ -typedef struct { - HPALETTE palette; /* Palette handle used when drawing. */ - guint size; /* Number of entries in the palette. */ - gboolean stale; /* 1 if palette needs to be realized, - * otherwise 0. */ - gboolean *in_use; - gboolean rc_palette; /* If RC_PALETTE is on in the RASTERCAPS */ - gulong sizepalette; /* SIZEPALETTE if rc_palette */ -} ColormapStruct, *Colormap; - -typedef struct { - gint map_entries; - guint visualid; - guint bitspixel; -} Visual; - -typedef struct { - Colormap colormap; - unsigned long red_max; - unsigned long red_mult; - unsigned long green_max; - unsigned long green_mult; - unsigned long blue_max; - unsigned long blue_mult; - unsigned long base_pixel; -} XStandardColormap; - -typedef struct _GdkGCWin32Data GdkGCWin32Data; -typedef struct _GdkDrawableWin32Data GdkDrawableWin32Data; -typedef struct _GdkWindowWin32Data GdkWindowWin32Data; -typedef struct _GdkColormapPrivateWin32 GdkColormapPrivateWin32; -typedef struct _GdkCursorPrivate GdkCursorPrivate; -typedef struct _GdkWin32SingleFont GdkWin32SingleFont; -typedef struct _GdkFontPrivateWin32 GdkFontPrivateWin32; -typedef struct _GdkImagePrivateWin32 GdkImagePrivateWin32; -typedef struct _GdkVisualPrivate GdkVisualPrivate; -typedef struct _GdkRegionPrivate GdkRegionPrivate; -typedef struct _GdkICPrivate GdkICPrivate; - -#define GDK_DRAWABLE_WIN32DATA(win) ((GdkDrawableWin32Data *)(((GdkDrawablePrivate*)(win))->klass_data)) -#define GDK_WINDOW_WIN32DATA(win) ((GdkWindowWin32Data *)(((GdkDrawablePrivate*)(win))->klass_data)) -#define GDK_GC_WIN32DATA(gc) ((GdkGCWin32Data *)(((GdkGCPrivate*)(gc))->klass_data)) - -struct _GdkGCWin32Data -{ - /* A Windows Device Context (DC) is not equivalent to an X11 - * GC. We can use a DC only in the window for which it was - * allocated, or (in the case of a memory DC) with the bitmap that - * has been selected into it. Thus, we have to release and - * reallocate a DC each time the GdkGC is used to paint into a new - * window or pixmap. We thus keep all the necessary values in the - * GdkGCWin32Data struct. - */ - HDC xgc; - GdkGCValuesMask values_mask; - gulong foreground; /* Pixel values from GdkColor, */ - gulong background; /* not Win32 COLORREFs */ - GdkFont *font; - gint rop2; - GdkFill fill_style; - GdkPixmap *tile; - GdkPixmap *stipple; - HRGN clip_region; - GdkSubwindowMode subwindow_mode; - gint ts_x_origin; - gint ts_y_origin; - gint clip_x_origin; - gint clip_y_origin; - gint graphics_exposures; - gint pen_width; - DWORD pen_style; - HANDLE hwnd; /* If a DC is allocated, for which window - * or what bitmap is selected into it - */ - int saved_dc; -}; - -struct _GdkDrawableWin32Data -{ - HANDLE xid; -}; - -struct _GdkWindowWin32Data -{ - GdkDrawableWin32Data drawable; - - /* We must keep the event mask here to filter them ourselves */ - gint event_mask; - - /* Values for bg_type */ -#define GDK_WIN32_BG_NORMAL 0 -#define GDK_WIN32_BG_PIXEL 1 -#define GDK_WIN32_BG_PIXMAP 2 -#define GDK_WIN32_BG_PARENT_RELATIVE 3 -#define GDK_WIN32_BG_TRANSPARENT 4 - - /* We draw the background ourselves at WM_ERASEBKGND */ - guchar bg_type; - gulong bg_pixel; /* GdkColor pixel, not COLORREF */ - GdkPixmap *bg_pixmap; - - HCURSOR xcursor; - - /* Window size hints */ - gint hint_flags; - gint hint_x, hint_y; - gint hint_min_width, hint_min_height; - gint hint_max_width, hint_max_height; - - gboolean extension_events_selected; - - HKL input_locale; - CHARSETINFO charset_info; -}; - -struct _GdkCursorPrivate -{ - GdkCursor cursor; - HCURSOR xcursor; -}; - -struct _GdkWin32SingleFont -{ - HFONT xfont; - UINT charset; - UINT codepage; - FONTSIGNATURE fs; -}; - -struct _GdkFontPrivateWin32 -{ - GdkFontPrivate base; - GSList *fonts; /* List of GdkWin32SingleFonts */ - GSList *names; -}; - -struct _GdkVisualPrivate -{ - GdkVisual visual; - Visual *xvisual; -}; - -struct _GdkColormapPrivateWin32 -{ - GdkColormapPrivate base; - Colormap xcolormap; - gint private_val; - - GHashTable *hash; - GdkColorInfo *info; - time_t last_sync_time; -}; - -struct _GdkImagePrivateWin32 -{ - GdkImagePrivate base; - HBITMAP ximage; -}; - -struct _GdkRegionPrivate -{ - GdkRegion region; - HRGN xregion; -}; - -void gdk_win32_selection_init (void); -void gdk_win32_dnd_exit (void); - -GdkColormap* gdk_colormap_lookup (Colormap xcolormap); -GdkVisual* gdk_visual_lookup (Visual *xvisual); +#include "gdkwin32.h" void gdk_xid_table_insert (HANDLE *hnd, gpointer data); void gdk_xid_table_remove (HANDLE xid); -gpointer gdk_xid_table_lookup (HANDLE xid); GdkGC * _gdk_win32_gc_new (GdkDrawable *drawable, GdkGCValues *values, @@ -287,22 +47,24 @@ void gdk_gc_postdraw (GdkDrawable *drawable, GdkGCValuesMask usage); HRGN BitmapToRegion (HBITMAP hBmp); +gchar *gdk_font_full_name_get (GdkFont *font); + void gdk_sel_prop_store (GdkWindow *owner, GdkAtom type, gint format, guchar *data, gint length); -gint gdk_nmbstowcs (GdkWChar *dest, +gint gdk_nmbstowcs (GdkWChar *dest, const gchar *src, gint src_len, gint dest_max); -gint gdk_nmbstowchar_ts (wchar_t *dest, +gint gdk_nmbstowchar_ts (wchar_t *dest, const gchar *src, gint src_len, gint dest_max); -void gdk_wchar_text_handle (GdkFont *font, +void gdk_wchar_text_handle (GdkFont *font, const wchar_t *wcstr, int wclen, void (*handler)(GdkWin32SingleFont *, @@ -311,16 +73,12 @@ void gdk_wchar_text_handle (GdkFont *font, void *), void *arg); -gchar *gdk_color_to_string (const GdkColor *); -void gdk_win32_api_failed (const gchar *where, - gint line, - const gchar *api); -void gdk_other_api_failed (const gchar *where, - gint line, - const gchar *api); -void gdk_win32_gdi_failed (const gchar *where, - gint line, - const gchar *api); +gchar *gdk_color_to_string (const GdkColor *); +gchar *gdk_win32_last_error_string (void); +void gdk_win32_api_failed (const gchar *where, + gint line, + const gchar *api); + #ifdef __GNUC__ #define WIN32_API_FAILED(api) gdk_win32_api_failed (__FILE__ ":" __PRETTY_FUNCTION__, __LINE__, api) #define WIN32_GDI_FAILED(api) gdk_win32_gdi_failed (__FILE__ ":" __PRETTY_FUNCTION__, __LINE__, api) @@ -335,8 +93,6 @@ extern LRESULT CALLBACK gdk_WindowProc (HWND, UINT, WPARAM, LPARAM); extern GdkDrawableClass _gdk_win32_drawable_class; extern HWND gdk_root_window; -GDKVAR ATOM gdk_selection_property; -GDKVAR gchar *gdk_progclass; extern gboolean gdk_event_func_from_window_proc; extern HDC gdk_DC; @@ -353,9 +109,4 @@ extern GdkAtom gdk_ole2_dnd_atom; extern DWORD windows_version; #define IS_WIN_NT(dwVersion) (dwVersion < 0x80000000) -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - #endif /* __GDK_PRIVATE_WIN32_H__ */ |