tizen 2.4 release
[framework/uifw/e17-mod-tizen-comp.git] / src / e_mod_comp_canvas.h
1 #ifdef E_TYPEDEFS
2 #else
3 #ifndef E_MOD_COMP_CANVAS_H
4 #define E_MOD_COMP_CANVAS_H
5
6 typedef struct _E_Comp_Canvas E_Comp_Canvas;
7 typedef struct _E_Comp_Layer  E_Comp_Layer;
8
9 //enum for stereoscopic view modes
10 typedef enum _E_Comp_Stereo_Mode
11 {
12    E_COMP_STEREO_MONO = 0,
13    E_COMP_STEREO_HORIZONTAL = 1,
14    E_COMP_STEREO_VERTICAL = 2,
15    E_COMP_STEREO_INTERLACED = 3,
16 } E_Comp_Stereo_Mode;
17
18 typedef enum _E_Nocomp_Mode
19 {
20    E_NOCOMP_MODE_NONE,
21    E_NOCOMP_MODE_PREPARE,
22    E_NOCOMP_MODE_BEGIN,
23    E_NOCOMP_MODE_RUN,
24    E_NOCOMP_MODE_END,
25    E_NOCOMP_MODE_DISPOSE
26 } E_Nocomp_Mode;
27
28 struct _E_Comp_Layer
29 {
30    char             *name;
31    Evas_Object      *layout;     // e_layout
32    Evas_Object      *bg;         // background rectangle object for e_layout
33    int               x, y, w, h; // geometry
34    E_Comp_Canvas    *canvas;     // parent canvas
35    unsigned int      count;      // indicates number of running effect objects, if 0 then layer will be hidden
36    Eina_List        *objs;       // list of E_Comp_Effect_Object
37    Eina_Bool         need_init;  // EINA_TRUE: need to initialize, EINA_FALSE: already initialized.
38 };
39
40 struct _E_Comp_Canvas
41 {
42    E_Comp           *comp;
43    E_Zone           *zone; // NULL if we have a single big canvas for all screens
44    Ecore_Evas       *ee;
45    Ecore_X_Window    ee_win;
46    Evas             *evas;
47    Eina_List        *layers; // list of E_Comp_Layer
48    int               x, y, w, h; // geometry
49    int               num;
50    struct {
51      Evas_Object    *bg;
52      Evas_Object    *fg;
53      double          frametimes[122];
54      int             frameskip;
55    } fps;
56    struct {
57      E_Nocomp_Mode   mode;
58      E_Comp_Win     *cw;
59      Eina_Bool       force_composite;
60      int             comp_ref; // indicates the number of modules using composite mode
61      struct {
62        E_Comp_Win   *cw;
63        Ecore_Timer  *timer;
64      } prepare;
65      struct {
66        E_Comp_Win   *cw;
67        Ecore_Timer  *timer;
68        int           dmg_updates;
69      } end;
70    } nocomp;
71    struct {
72      Eina_Bool       run;
73      int             num;
74    } animation;
75    Evas_Object      *bg_img;
76    Eina_Bool         use_bg_img : 1;
77    E_Comp_HW_Ov_Win *ov;
78    E_Comp_Effect_Zone_Rotation *zr;
79    Eina_Bool         xv_ready[3]; // [0]: XV is running [1]: rotation_end_event was occcured [2]: XV_BYPASS_DONE1 msg was received
80
81    E_Comp_HWComp    *hwcomp;
82    E_Comp_Stereo_Mode          stereoscopic_mode; //stereoscopic view mode
83 };
84
85 EAPI E_Comp_Canvas *e_mod_comp_canvas_add(E_Comp *c, E_Zone *zone);
86 EAPI void           e_mod_comp_canvas_del(E_Comp_Canvas *canvas);
87 EAPI E_Comp_Win    *e_mod_comp_canvas_fullscreen_check(E_Comp_Canvas *canvas);
88 EAPI void           e_mod_comp_canvas_nocomp_prepare(E_Comp_Canvas *canvas, E_Comp_Win *cw);
89 EAPI Eina_Bool      e_mod_comp_canvas_nocomp_begin(E_Comp_Canvas *canvas);
90 EAPI Eina_Bool      e_mod_comp_canvas_nocomp_end(E_Comp_Canvas *canvas);
91 EAPI Eina_Bool      e_mod_comp_canvas_nocomp_dispose(E_Comp_Canvas *canvas);
92 EAPI E_Comp_Layer  *e_mod_comp_canvas_layer_get(E_Comp_Canvas *canvas, const char *name);
93 EAPI void           e_mod_comp_canvas_stereo_layout_set(E_Comp_Canvas *canvas);
94
95 EAPI void                  e_mod_comp_layer_populate(E_Comp_Layer *ly, Evas_Object *o);
96 EAPI void                  e_mod_comp_layer_populate_above_normal(E_Comp_Layer *ly, Evas_Object *o);
97 EAPI void                  e_mod_comp_layer_raise_above(E_Comp_Canvas *canvas, Evas_Object *o, E_Border *bd);
98 EAPI void                  e_mod_comp_layer_lower_below(E_Comp_Canvas *canvas, Evas_Object *o, E_Border *bd);
99 EAPI void                  e_mod_comp_layer_eval(E_Comp_Layer *ly);
100 EAPI void                  e_mod_comp_layer_bg_adjust(E_Comp_Layer *ly);
101 EAPI void                  e_mod_comp_layer_effect_set(E_Comp_Layer *ly, Eina_Bool set);
102 EAPI Eina_Bool             e_mod_comp_layer_effect_get(E_Comp_Layer *ly);
103 EAPI E_Comp_Effect_Object *e_mod_comp_layer_effect_obj_get(E_Comp_Layer *ly, Ecore_X_Window win);
104
105 #endif
106 #endif