From 7fe60435bce6595a9c58a9bfd8244d74b5320e96 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Jan 2013 08:46:13 +0100 Subject: Import DirectFB141_2k11R3_beta5 --- Source/DirectFB/include/directfb_windows.h | 240 +++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100755 Source/DirectFB/include/directfb_windows.h (limited to 'Source/DirectFB/include/directfb_windows.h') diff --git a/Source/DirectFB/include/directfb_windows.h b/Source/DirectFB/include/directfb_windows.h new file mode 100755 index 0000000..b0135e0 --- /dev/null +++ b/Source/DirectFB/include/directfb_windows.h @@ -0,0 +1,240 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser 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. +*/ + +#ifndef __DIRECTFB_WINDOWS_H__ +#define __DIRECTFB_WINDOWS_H__ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* + * The DirectFB Windows interface version. + */ +#define DIRECTFB_WINDOWS_INTERFACE_VERSION 1 + + +/* + * Window stack extension. + */ +DECLARE_INTERFACE( IDirectFBWindows ) + + +typedef enum { + DWCONF_NONE = 0x00000000, + + DWCONF_POSITION = 0x00000001, + DWCONF_SIZE = 0x00000002, + DWCONF_OPACITY = 0x00000004, + DWCONF_STACKING = 0x00000008, + + DWCONF_OPTIONS = 0x00000010, + DWCONF_EVENTS = 0x00000020, + DWCONF_ASSOCIATION = 0x00000040, + + DWCONF_COLOR_KEY = 0x00000100, + DWCONF_OPAQUE = 0x00000200, + DWCONF_COLOR = 0x00000400, + + DWCONF_KEY_SELECTION = 0x00001000, + DWCONF_CURSOR_FLAGS = 0x00002000, + DWCONF_CURSOR_RESOLUTION = 0x00004000, + + DWCONF_SRC_GEOMETRY = 0x00010000, + DWCONF_DST_GEOMETRY = 0x00020000, + + DWCONF_ROTATION = 0x00040000, + + DWCONF_ALL = 0x0007777F +} DFBWindowConfigFlags; + +typedef struct { + DFBRectangle bounds; /* position and size */ + int opacity; /* global alpha factor */ + DFBWindowStackingClass stacking; /* level boundaries */ + + DFBWindowOptions options; /* flags for appearance/behaviour */ + DFBWindowEventType events; /* mask of enabled events */ + DFBWindowID association; /* ID of window which this is associated to */ + + u32 color_key; /* transparent pixel */ + DFBRegion opaque; /* region of the window forced to be opaque */ + DFBColor color; /* constant color (no surface needed) */ + +// DFBWindowKeySelection key_selection; /* how to filter keys in focus */ +// DFBInputDeviceKeySymbol *keys; /* list of keys for DWKS_LIST */ +// unsigned int num_keys; /* number of entries in key array */ + + DFBWindowCursorFlags cursor_flags; + DFBDimension cursor_resolution; + + DFBWindowGeometry src_geometry; /* advanced source geometry */ + DFBWindowGeometry dst_geometry; /* advanced destination geometry */ + + int rotation; +} DFBWindowConfig; + + +typedef enum { + DWSTATE_NONE = 0x00000000, + + DWSTATE_INSERTED = 0x00000001, + + DWSTATE_FOCUSED = 0x00000002, /* only used for GetWindowInfo */ + DWSTATE_ENTERED = 0x00000004, /* only used for GetWindowInfo */ + + DWSTATE_UPDATING = 0x00000010, + + DWSTATE_ALL = 0x00000017 +} DFBWindowStateFlags; + +typedef struct { + DFBWindowStateFlags flags; +} DFBWindowState; + + +typedef struct { + DFBWindowID window_id; + DFBWindowCapabilities caps; + + u64 resource_id; + + + DFBWindowConfig config; + + DFBWindowState state; +} DFBWindowInfo; + + +typedef enum { + DWREL_TOP, + DWREL_BOTTOM +} DFBWindowRelation; + + +/* + * Windows watcher interface + */ +typedef struct { + /* + * Add window, + * + * called for each window existing at watcher registration and each added afterwards. + */ + void (*WindowAdd) ( void *context, + const DFBWindowInfo *info ); + + /* + * Remove window, + * + * called for each window being removed. + */ + void (*WindowRemove) ( void *context, + DFBWindowID window_id ); + + /* + * Change window configuration, + * + * called for each window changing its configuration. + * + * The flags specify which of the items have changed actually. + */ + void (*WindowConfig) ( void *context, + DFBWindowID window_id, + const DFBWindowConfig *config, + DFBWindowConfigFlags flags ); + + /* + * Update window state, + * + * called for each window changing its state. + * + * In case of insertion of a window, prior to this, the watcher will receive the WindowRestack call, + * which contains the z-position at which the window has been inserted. + */ + void (*WindowState) ( void *context, + DFBWindowID window_id, + const DFBWindowState *state ); + + /* + * Update window z-position, + * + * called for each window changing its z-position. + * + * In case of insertion of a window, after this call, the watcher will receive the WindowState call, + * which indicates insertion of the window. + * + * Upon reinsertion, only this call will be received. + */ + void (*WindowRestack) ( void *context, + DFBWindowID window_id, + unsigned int index ); + + /* + * Switch window focus, + * + * called for each window getting the focus. + */ + void (*WindowFocus) ( void *context, + DFBWindowID window_id ); +} DFBWindowsWatcher; + + +/******************** + * IDirectFBWindows * + ********************/ + +/* + * No summary yet... + */ +DEFINE_INTERFACE( IDirectFBWindows, + + /** Watching **/ + + /* + * Registers a new windows watcher. + * + * For any window already existing, the WindowAdded callback will be called immediately. + */ + DFBResult (*RegisterWatcher) ( + IDirectFBWindows *thiz, + const DFBWindowsWatcher *watcher, + void *context + ); +) + + +#ifdef __cplusplus +} +#endif + +#endif + -- cgit