1 /* Clutter.
2  * An OpenGL based 'interactive canvas' library.
3  * Authored By Matthew Allum  <mallum@openedhand.com>
4  * Copyright (C) 2006-2007 OpenedHand
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
18  *
19  *
20  */
21 
22 #ifndef __CLUTTER_BACKEND_WIN32_H__
23 #define __CLUTTER_BACKEND_WIN32_H__
24 
25 #include <glib-object.h>
26 #include <clutter/clutter-event.h>
27 #include <windows.h>
28 
29 #include "clutter-backend-private.h"
30 
31 #include "clutter-win32.h"
32 
33 G_BEGIN_DECLS
34 
35 #define CLUTTER_TYPE_BACKEND_WIN32                (clutter_backend_win32_get_type ())
36 #define CLUTTER_BACKEND_WIN32(obj)                (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_BACKEND_WIN32, ClutterBackendWin32))
37 #define CLUTTER_IS_BACKEND_WIN32(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_BACKEND_WIN32))
38 #define CLUTTER_BACKEND_WIN32_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_BACKEND_WIN32, ClutterBackendWin32Class))
39 #define CLUTTER_IS_BACKEND_WIN32_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BACKEND_WIN32))
40 #define CLUTTER_BACKEND_WIN32_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BACKEND_WIN32, ClutterBackendWin32Class))
41 
42 typedef struct _ClutterBackendWin32       ClutterBackendWin32;
43 typedef struct _ClutterBackendWin32Class  ClutterBackendWin32Class;
44 
45 struct _ClutterBackendWin32
46 {
47   ClutterBackend parent_instance;
48 
49   HCURSOR        invisible_cursor;
50 
51   GSource       *event_source;
52 
53   ClutterDeviceManager *device_manager;
54 };
55 
56 struct _ClutterBackendWin32Class
57 {
58   ClutterBackendClass parent_class;
59 };
60 
61 void   _clutter_backend_win32_events_init (ClutterBackend *backend);
62 void   _clutter_backend_win32_events_uninit (ClutterBackend *backend);
63 
64 GType clutter_backend_win32_get_type (void) G_GNUC_CONST;
65 
66 void
67 clutter_backend_win32_add_options (ClutterBackend *backend,
68 				   GOptionGroup   *group);
69 
70 ClutterFeatureFlags
71 clutter_backend_win32_get_features (ClutterBackend *backend);
72 
73 HCURSOR _clutter_backend_win32_get_invisible_cursor (ClutterBackend *backend);
74 
75 ClutterBackend *clutter_backend_win32_new (void);
76 
77 G_END_DECLS
78 
79 #endif /* __CLUTTER_BACKEND_WIN32_H__ */
80