2000-07-23 01:18:34 +00:00
|
|
|
/* GDK - The GIMP Drawing Kit
|
|
|
|
* 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
|
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Modified by the GTK+ Team and others 1997-1999. 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_WINDOW_WIN32_H__
|
|
|
|
#define __GDK_WINDOW_WIN32_H__
|
|
|
|
|
|
|
|
#include <gdk/win32/gdkdrawable-win32.h>
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
typedef struct _GdkWin32PositionInfo GdkWin32PositionInfo;
|
|
|
|
|
|
|
|
struct _GdkWin32PositionInfo
|
|
|
|
{
|
|
|
|
gint x;
|
|
|
|
gint y;
|
|
|
|
gint width;
|
|
|
|
gint height;
|
|
|
|
gint x_offset; /* Offsets to add to Win32 coordinates */
|
|
|
|
gint y_offset; /* within window to get GDK coodinates */
|
2003-05-27 21:21:00 +00:00
|
|
|
guint big : 1;
|
|
|
|
guint mapped : 1;
|
|
|
|
guint no_bg : 1; /* Set when the window background
|
2000-07-23 01:18:34 +00:00
|
|
|
* is temporarily unset during resizing
|
Massive changes. Too many to list here, but I'll try a summary:
2002-02-17 Tor Lillqvist <tml@iki.fi>
* gdk/win32/*.c: Massive changes. Too many to list here, but I'll
try a summary:
1) Unify GdkPixmap and GdkImage implementation: For each
GdkPixmap, allocate a GdkImage, and vice versa.
GdkPixmapImplWin32Data has a pointer to the GdkImage.
GdkImage::windowing_data is a pointer to the GdkPixmap.
This simplifies many pixmap and image related functions a lot, and
reduces duplicated code snippets. For instance, there is only one
place in gdk/win32 where CreateDIBSection() is called, in the
function _gdk_win32_new_pixmap(). Converting a bitmap (GdkPixmap)
to a Windows region is almost trivial, with the bitmap bits being
readily accessible in the associated GdkImage.
All blitting between GdkPixmaps, GdkWindows and GdkImages goes
through handled the _gdk_win32_blit() function, which calls
different functions to handle the cases of blitting from pixmaps,
inside windows (scrolling), or from windows, which all require
somewhat different handling.
2) Support 256-color mode. This has long been very broken, now it
works more or less OK. Keep the logical palette for each colormap
as small as possible while allocating and freeing colors. Select
and realize the logical palette associated with a GdkColormap into
a DC before drawing or blitting.
When the display is in 256-color mode, make it possible for the
user to override the size of the palette(s) used with either the
GDK_WIN32_MAX_COLORS environment variable, or a -max-colors
command line option. It is possible to reduce the palette size all
the way down to using just the 16 static colors (which causes the
system visual to be of type GDK_VISUAL_STATIC_COLOR. This could
possibly be useful if one desperately wants to avoid color
flashing. (Note that in order for this to work properly, an as of
yet not commited fix to gdkrgb.c is needed.)
Handle the palette messages. On WM_PALETTECHANGED, call
UpdateColors() for the given window hierarchy. Do this only if a
window in some other top-level window hierarchy caused the palette
change (realized a palette). Do this max five times in a row (an
arbitrarily chosen limit), though, otherwise redraw by generating
expose events. On WM_QUERYNEWPALETTE, cause a redraw of the whole
window hierarchy by generating GDK_EXPOSE events.
3) Code cleanup in general. For instance, remove the "emulated"
X11 structs ColormapStruct, Visual and XStandardColormap. Use the
new GDK_DEBUG_* flags for debugging output in the relevant source
files. Remove the unused colormap hash table in gdkcolor-win32.c
4) Plug some resource leaks.
2002-02-14 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkdnd-win32.c (gdk_dropfiles_filter): Use
g_filename_to_uri() to actually create legal URIs in the
text/uri-list data.
2002-02-17 00:25:05 +00:00
|
|
|
* and scaling
|
|
|
|
*/
|
2000-07-23 01:18:34 +00:00
|
|
|
GdkRectangle clip_rect; /* visible rectangle of window */
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Window implementation for Win32
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct _GdkWindowImplWin32 GdkWindowImplWin32;
|
|
|
|
typedef struct _GdkWindowImplWin32Class GdkWindowImplWin32Class;
|
|
|
|
|
2001-10-28 21:28:51 +00:00
|
|
|
#define GDK_TYPE_WINDOW_IMPL_WIN32 (_gdk_window_impl_win32_get_type ())
|
2000-07-23 01:18:34 +00:00
|
|
|
#define GDK_WINDOW_IMPL_WIN32(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WINDOW_IMPL_WIN32, GdkWindowImplWin32))
|
|
|
|
#define GDK_WINDOW_IMPL_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WINDOW_IMPL_WIN32, GdkWindowImplWin32Class))
|
|
|
|
#define GDK_IS_WINDOW_IMPL_WIN32(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WINDOW_IMPL_WIN32))
|
|
|
|
#define GDK_IS_WINDOW_IMPL_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WINDOW_IMPL_WIN32))
|
|
|
|
#define GDK_WINDOW_IMPL_WIN32_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WINDOW_IMPL_WIN32, GdkWindowImplWin32Class))
|
|
|
|
|
|
|
|
struct _GdkWindowImplWin32
|
|
|
|
{
|
|
|
|
GdkDrawableImplWin32 parent_instance;
|
|
|
|
|
|
|
|
gint width;
|
|
|
|
gint height;
|
|
|
|
|
|
|
|
GdkWin32PositionInfo position_info;
|
|
|
|
|
|
|
|
HCURSOR hcursor;
|
2003-12-14 01:06:56 +00:00
|
|
|
HICON hicon_big;
|
|
|
|
HICON hicon_small;
|
2000-07-23 01:18:34 +00:00
|
|
|
|
|
|
|
/* Window size hints */
|
|
|
|
gint hint_flags;
|
2003-08-02 02:05:12 +00:00
|
|
|
GdkGeometry hints;
|
2000-07-23 01:18:34 +00:00
|
|
|
|
|
|
|
gboolean extension_events_selected;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GdkWindowImplWin32Class
|
|
|
|
{
|
|
|
|
GdkDrawableImplWin32Class parent_class;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
2001-10-28 21:28:51 +00:00
|
|
|
GType _gdk_window_impl_win32_get_type (void);
|
2000-07-23 01:18:34 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
#endif /* __GDK_WINDOW_WIN32_H__ */
|