]> Pileus Git - ~andy/gtk/blobdiff - gdk/win32/gdkwin32.h
Change FSF Address
[~andy/gtk] / gdk / win32 / gdkwin32.h
index cb06d284b2909172c71473257547b75f05031171..cf3f89c2b5adece9923e04ca8e0b0e81be89868a 100644 (file)
@@ -2,23 +2,21 @@
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
  *
  * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
- * Modified by the GTK+ Team and others 1997-1999.  See the AUTHORS
+ * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GTK+ Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
 #ifndef __GDK_WIN32_H__
 #define __GDK_WIN32_H__
 
+#define __GDKWIN32_H_INSIDE__
+
+#include <gdk/win32/gdkwin32cursor.h>
+#include <gdk/win32/gdkwin32display.h>
+#include <gdk/win32/gdkwin32displaymanager.h>
+#include <gdk/win32/gdkwin32dnd.h>
+#include <gdk/win32/gdkwin32keys.h>
+#include <gdk/win32/gdkwin32screen.h>
+#include <gdk/win32/gdkwin32window.h>
+
+#undef __GDKWIN32_H_INSIDE__
+
 #include <gdk/gdkprivate.h>
-#include <gdk/gdkcursor.h>
 
 #ifndef STRICT
 #define STRICT                 /* We want strict type checks */
 #include <windows.h>
 #include <commctrl.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* Make up for some minor w32api header lossage */
+G_BEGIN_DECLS
 
-/* PS_JOIN_MASK is missing */
-#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
+#ifdef INSIDE_GDK_WIN32
 
-/* Some charsets are missing */
-#ifndef JOHAB_CHARSET
-#define JOHAB_CHARSET 130
-#endif
-#ifndef VIETNAMESE_CHARSET
-#define VIETNAMESE_CHARSET 163
-#endif
+#include "gdkprivate-win32.h"
 
-#ifndef FS_VIETNAMESE
-#define FS_VIETNAMESE 0x100
-#endif
+#define GDK_WINDOW_HWND(win)          (GDK_WINDOW_IMPL_WIN32(win->impl)->handle)
+#else
+/* definition for exported 'internals' go here */
+#define GDK_WINDOW_HWND(d) (gdk_win32_window_get_handle (d))
 
-#ifndef VM_OEM_PLUS
-#define VK_OEM_PLUS 0xBB
 #endif
 
-
-/* Missing messages */
-#ifndef WM_MOUSEWHEEL
-#define WM_MOUSEWHEEL 0X20A
-#endif
-#ifndef WM_GETOBJECT
-#define WM_GETOBJECT 0x3D
-#endif
-#ifndef WM_NCXBUTTONDOWN
-#define WM_NCXBUTTONDOWN 0xAB
-#endif
-#ifndef WM_NCXBUTTONUP
-#define WM_NCXBUTTONUP 0xAC
-#endif
-#ifndef WM_NCXBUTTONDBLCLK
-#define WM_NCXBUTTONDBLCLK 0xAD
-#endif
-#ifndef WM_MENURBUTTONUP
-#define WM_MENURBUTTONUP 0x122
-#endif
-#ifndef WM_MENUDRAG
-#define WM_MENUDRAG 0x123
-#endif
-#ifndef WM_MENUGETOBJECT
-#define WM_MENUGETOBJECT 0x124
-#endif
-#ifndef WM_UNINITMENUPOPUP
-#define WM_UNINITMENUPOPUP 0x125
-#endif
-#ifndef WM_MENUCOMMAND
-#define WM_MENUCOMMAND 0x126
-#endif
-#ifndef WM_CHANGEUISTATE
-#define WM_CHANGEUISTATE 0x127
-#endif
-#ifndef WM_UPDATEUISTATE
-#define WM_UPDATEUISTATE 0x128
-#endif
-#ifndef WM_QUERYUISTATE
-#define WM_QUERYUISTATE 0x129
-#endif
+/* These need to be here so gtkstatusicon.c can pick them up if needed. */
 #ifndef WM_XBUTTONDOWN
-#define WM_XBUTTONDOWN 0x20B
+#define WM_XBUTTONDOWN 0x020B
 #endif
 #ifndef WM_XBUTTONUP
-#define WM_XBUTTONUP 0x20C
-#endif
-#ifndef WM_XBUTTONDBLCLK
-#define WM_XBUTTONDBLCLK 0x20D
-#endif
-#ifndef WM_IME_REQUEST
-#define WM_IME_REQUEST 0x288
-#endif
-#ifndef WM_MOUSEHOVER
-#define WM_MOUSEHOVER 0x2A1
-#endif
-#ifndef WM_MOUSELEAVE
-#define WM_MOUSELEAVE 0x2A3
-#endif
-#ifndef WM_NCMOUSEHOVER
-#define WM_NCMOUSEHOVER 0x2A0
-#endif
-#ifndef WM_NCMOUSELEAVE
-#define WM_NCMOUSELEAVE 0x2A2
-#endif
-#ifndef WM_APPCOMMAND
-#define WM_APPCOMMAND 0x319
-#endif
-#ifndef WM_HANDHELDFIRST
-#define WM_HANDHELDFIRST 0x358
+#define WM_XBUTTONUP 0x020C
 #endif
-#ifndef WM_HANDHELDLAST
-#define WM_HANDHELDLAST 0x35F
+#ifndef GET_XBUTTON_WPARAM
+#define GET_XBUTTON_WPARAM(w) (HIWORD(w))
 #endif
-#ifndef WM_AFXFIRST
-#define WM_AFXFIRST 0x360
+#ifndef XBUTTON1
+#define XBUTTON1 1
 #endif
-#ifndef WM_AFXLAST
-#define WM_AFXLAST 0x37F
+#ifndef XBUTTON2
+#define XBUTTON2 2
 #endif
 
-#ifndef CopyCursor
-#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
-#endif
-
-#include <gdk/gdkprivate.h>
-
-/* Define corresponding Windows types for some X11 types, just for laziness. */
-typedef PALETTEENTRY XColor;
-
-/* 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 _GdkColormapPrivateWin32 GdkColormapPrivateWin32;
-typedef struct _GdkCursorPrivate        GdkCursorPrivate;
-typedef struct _GdkWin32SingleFont      GdkWin32SingleFont;
-typedef struct _GdkFontPrivateWin32     GdkFontPrivateWin32;
-typedef struct _GdkImagePrivateWin32    GdkImagePrivateWin32;
-typedef struct _GdkVisualPrivate        GdkVisualPrivate;
-
-struct _GdkCursorPrivate
-{
-  GdkCursor cursor;
-  HCURSOR hcursor;
-};
-
-struct _GdkWin32SingleFont
-{
-  HFONT hfont;
-  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
-{
-  Colormap xcolormap;
-  gint private_val;
-
-  GHashTable *hash;
-  GdkColorInfo *info;
-  DWORD last_sync_time;
-};
-
-struct _GdkImagePrivateWin32
-{
-  HBITMAP hbitmap;
-};
-
-typedef struct _GdkGCWin32      GdkGCWin32;
-typedef struct _GdkGCWin32Class GdkGCWin32Class;
 
-#define GDK_TYPE_GC_WIN32              (gdk_gc_win32_get_type ())
-#define GDK_GC_WIN32(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_GC_WIN32, GdkGCWin32))
-#define GDK_GC_WIN32_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_GC_WIN32, GdkGCWin32Class))
-#define GDK_IS_GC_WIN32(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_GC_WIN32))
-#define GDK_IS_GC_WIN32_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_GC_WIN32))
-#define GDK_GC_WIN32_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_GC_WIN32, GdkGCWin32Class))
-
-struct _GdkGCWin32
-{
-  GdkGC parent_instance;
-
-  /* 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
-   * GdkGCWin32 object.
-   */
-  HDC hdc;
-
-  GdkRegion *clip_region;
-  HRGN hcliprgn;
-
-  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;
-  GdkSubwindowMode subwindow_mode;
-  gint graphics_exposures;
-  gint pen_width;
-  DWORD pen_style;
-  HANDLE hwnd;                 /* If a HDC is allocated, for which window,
-                                * or what bitmap is selected into it
-                                */
-  int saved_dc;
-};
-
-struct _GdkGCWin32Class
-{
-  GdkGCClass parent_class;
-};
-
-GType gdk_gc_win32_get_type (void);
-
-#define GDK_ROOT_WINDOW()             ((guint32) HWND_DESKTOP)
-#define GDK_ROOT_PARENT()             ((GdkWindow *) gdk_parent_root)
-#define GDK_DISPLAY()                 NULL
-#define GDK_WINDOW_HWND(win)          (HWND) (GDK_DRAWABLE_IMPL_WIN32(((GdkWindowObject *)win)->impl)->handle)
-#define GDK_PIXMAP_HBITMAP(win)       (HBITMAP) (GDK_DRAWABLE_IMPL_WIN32(((GdkPixmapObject *)win)->impl)->handle)
-#define GDK_DRAWABLE_HANDLE(win)      (GDK_IS_WINDOW (win) ? ((HGDIOBJ) GDK_WINDOW_HWND (win)) : ((HGDIOBJ) GDK_PIXMAP_HBITMAP (win)))
-#define GDK_IMAGE_HBM(image)          (((GdkImagePrivateWin32 *) GDK_IMAGE (image)->windowing_data)->hbm)
-#define GDK_COLORMAP_WIN32COLORMAP(cmap) (((GdkColormapPrivateWin32 *)GDK_COLORMAP (cmap)->windowing_data)->xcolormap)
-#define GDK_VISUAL_XVISUAL(vis)       (((GdkVisualPrivate *) vis)->xvisual)
-
-GDKVAR gchar           *gdk_progclass;
-GDKVAR ATOM             gdk_selection_property;
-
-/* Functions to create GDK pixmaps and windows from their native equivalents */
-GdkPixmap    *gdk_pixmap_foreign_new (guint32     anid);
-GdkWindow    *gdk_window_foreign_new (guint32     anid);
+/* Return true if the GdkWindow is a win32 implemented window */
+gboolean      gdk_win32_window_is_win32 (GdkWindow *window);
+HWND          gdk_win32_window_get_impl_hwnd (GdkWindow *window);
 
 /* Return the Gdk* for a particular HANDLE */
-gpointer      gdk_xid_table_lookup   (HANDLE      handle);
-
-/* Return a device context to draw in a drawable, given a GDK GC,
- * and a mask indicating which GC values might be used (for efficiency,
- * no need to muck around with text-related stuff if we aren't going
- * to output text, for instance).
- */
-HDC           gdk_win32_hdc_get      (GdkDrawable    *drawable,
-                                     GdkGC          *gc,
-                                     GdkGCValuesMask usage);
-
-/* Each HDC returned from gdk_win32_hdc_get must be released with
- * this function
- */
-void          gdk_win32_hdc_release  (GdkDrawable    *drawable,
-                                     GdkGC          *gc,
-                                     GdkGCValuesMask usage);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+gpointer      gdk_win32_handle_table_lookup (HWND handle);
+/* Translate from window to Windows handle */
+HGDIOBJ       gdk_win32_window_get_handle (GdkWindow *window);
+
+void          gdk_win32_selection_add_targets (GdkWindow  *owner,
+                                              GdkAtom     selection,
+                                              gint        n_targets,
+                                              GdkAtom    *targets);
+
+/* For internal GTK use only */
+GdkPixbuf    *gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon);
+HICON         gdk_win32_pixbuf_to_hicon_libgtk_only (GdkPixbuf *pixbuf);
+void          gdk_win32_set_modal_dialog_libgtk_only (HWND window);
+
+GdkWindow *   gdk_win32_window_foreign_new_for_display (GdkDisplay *display,
+                                                        HWND        anid);
+GdkWindow *   gdk_win32_window_lookup_for_display (GdkDisplay *display,
+                                                   HWND        anid);
+
+G_END_DECLS
 
 #endif /* __GDK_WIN32_H__ */