Release Clutter 1.11.4 (snapshot)
[profile/ivi/clutter.git] / clutter / clutter-stage-private.h
1 /*
2  * Clutter.
3  *
4  * An OpenGL based 'interactive canvas' library.
5  *
6  * Copyright (C) 2010  Intel Corporation.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
20  */
21
22 #ifndef __CLUTTER_STAGE_PRIVATE_H__
23 #define __CLUTTER_STAGE_PRIVATE_H__
24
25 #include <clutter/clutter-stage-window.h>
26 #include <clutter/clutter-stage.h>
27 #include <clutter/clutter-input-device.h>
28 #include <clutter/clutter-private.h>
29
30 #include <cogl/cogl.h>
31
32 G_BEGIN_DECLS
33
34 typedef struct _ClutterStageQueueRedrawEntry ClutterStageQueueRedrawEntry;
35
36 /* stage */
37 ClutterStageWindow *_clutter_stage_get_default_window    (void);
38
39 void                _clutter_stage_do_paint              (ClutterStage                *stage,
40                                                           const cairo_rectangle_int_t *clip);
41
42 void                _clutter_stage_set_window            (ClutterStage          *stage,
43                                                           ClutterStageWindow    *stage_window);
44 ClutterStageWindow *_clutter_stage_get_window            (ClutterStage          *stage);
45 void                _clutter_stage_get_projection_matrix (ClutterStage          *stage,
46                                                           CoglMatrix            *projection);
47 void                _clutter_stage_dirty_projection      (ClutterStage          *stage);
48 void                _clutter_stage_set_viewport          (ClutterStage          *stage,
49                                                           float                  x,
50                                                           float                  y,
51                                                           float                  width,
52                                                           float                  height);
53 void                _clutter_stage_get_viewport          (ClutterStage          *stage,
54                                                           float                 *x,
55                                                           float                 *y,
56                                                           float                 *width,
57                                                           float                 *height);
58 void                _clutter_stage_dirty_viewport        (ClutterStage          *stage);
59 void                _clutter_stage_maybe_setup_viewport  (ClutterStage          *stage);
60 void                _clutter_stage_maybe_relayout        (ClutterActor          *stage);
61 gboolean            _clutter_stage_needs_update          (ClutterStage          *stage);
62 gboolean            _clutter_stage_do_update             (ClutterStage          *stage);
63
64 void     _clutter_stage_queue_event                       (ClutterStage *stage,
65                                                            ClutterEvent *event);
66 gboolean _clutter_stage_has_queued_events                 (ClutterStage *stage);
67 void     _clutter_stage_process_queued_events             (ClutterStage *stage);
68 void     _clutter_stage_update_input_devices              (ClutterStage *stage);
69 int      _clutter_stage_get_pending_swaps                 (ClutterStage *stage);
70 gboolean _clutter_stage_has_full_redraw_queued            (ClutterStage *stage);
71
72 ClutterActor *_clutter_stage_do_pick (ClutterStage    *stage,
73                                       gint             x,
74                                       gint             y,
75                                       ClutterPickMode  mode);
76
77 ClutterPaintVolume *_clutter_stage_paint_volume_stack_allocate (ClutterStage *stage);
78 void                _clutter_stage_paint_volume_stack_free_all (ClutterStage *stage);
79
80 const ClutterPlane *_clutter_stage_get_clip (ClutterStage *stage);
81
82 ClutterStageQueueRedrawEntry *_clutter_stage_queue_actor_redraw            (ClutterStage                 *stage,
83                                                                             ClutterStageQueueRedrawEntry *entry,
84                                                                             ClutterActor                 *actor,
85                                                                             ClutterPaintVolume           *clip);
86 void                          _clutter_stage_queue_redraw_entry_invalidate (ClutterStageQueueRedrawEntry *entry);
87
88 void            _clutter_stage_add_device       (ClutterStage       *stage,
89                                                  ClutterInputDevice *device);
90 void            _clutter_stage_remove_device    (ClutterStage       *stage,
91                                                  ClutterInputDevice *device);
92 gboolean        _clutter_stage_has_device       (ClutterStage       *stage,
93                                                  ClutterInputDevice *device);
94
95 CoglFramebuffer *_clutter_stage_get_active_framebuffer (ClutterStage *stage);
96
97 gint32          _clutter_stage_acquire_pick_id          (ClutterStage *stage,
98                                                          ClutterActor *actor);
99 void            _clutter_stage_release_pick_id          (ClutterStage *stage,
100                                                          gint32        pick_id);
101 ClutterActor *  _clutter_stage_get_actor_by_pick_id     (ClutterStage *stage,
102                                                          gint32        pick_id);
103
104 void            _clutter_stage_add_drag_actor           (ClutterStage       *stage,
105                                                          ClutterInputDevice *device,
106                                                          ClutterActor       *actor);
107 ClutterActor *  _clutter_stage_get_drag_actor           (ClutterStage       *stage,
108                                                          ClutterInputDevice *device);
109 void            _clutter_stage_remove_drag_actor        (ClutterStage       *stage,
110                                                          ClutterInputDevice *device);
111
112 ClutterStageState       _clutter_stage_get_state        (ClutterStage      *stage);
113 gboolean                _clutter_stage_is_activated     (ClutterStage      *stage);
114 gboolean                _clutter_stage_is_fullscreen    (ClutterStage      *stage);
115 gboolean                _clutter_stage_update_state     (ClutterStage      *stage,
116                                                          ClutterStageState  unset_state,
117                                                          ClutterStageState  set_state);
118
119 G_END_DECLS
120
121 #endif /* __CLUTTER_STAGE_PRIVATE_H__ */