aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/dropshadow/e_mod_main.h
blob: 9c4e547bd82817306f507a6b5c25d9fc892387bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H

typedef struct _Shpix         Shpix;
typedef struct _Shstore       Shstore;
typedef struct _Config        Config;
typedef struct _Dropshadow    Dropshadow;
typedef struct _Shadow        Shadow;
typedef struct _Shadow_Object Shadow_Object;
typedef struct _Tilebuf       Tilebuf;
typedef struct _Tilebuf_Tile  Tilebuf_Tile;

struct _Shpix
{
   int            w, h;
   unsigned char *pix;
};

struct _Shstore
{
   int            w, h;
   unsigned int  *pix;
};

struct _Config
{
   int shadow_x, shadow_y;
   int blur_size;
   int quality;
   double shadow_darkness;
};

struct _Dropshadow
{
   E_Module       *module;
   Eina_List      *shadows;
   Eina_List      *cons;
   E_Before_Idler *idler_before;

   E_Config_DD    *conf_edd;
   Config         *conf;
   E_Config_Dialog *config_dialog;
   
   struct {
      unsigned char *gauss;
      int            gauss_size;
      unsigned char *gauss2;
      int            gauss2_size;
   } table;
   
   struct {
      Shstore *shadow[4];
      int      ref;
   } shared;
};

struct _Shadow
{
   Dropshadow *ds;
   int x, y, w, h;
   E_Container_Shape *shape;
   
   Evas_Object *object[4];
   
   Eina_List *object_list;
   
   unsigned char initted : 1;
   unsigned char reshape : 1;
   unsigned char square : 1;
   unsigned char toosmall : 1;
   unsigned char use_shared : 1;
   unsigned char visible : 1;
};

struct _Shadow_Object
{
   int x, y, w, h;
   Evas_Object *obj;
};

struct _Tilebuf
{
   int outbuf_w;
   int outbuf_h;
   
   struct {
      int           w, h;
   } tile_size;
   
   struct {
      int           w, h;
      Tilebuf_Tile *tiles;
   } tiles;
};

struct _Tilebuf_Tile
{
   int redraw : 1;
};

extern E_Module *dropshadow_mod;

EAPI extern E_Module_Api e_modapi;

EAPI void *e_modapi_init     (E_Module *m);
EAPI int   e_modapi_shutdown (E_Module *m);
EAPI int   e_modapi_save     (E_Module *m);
EAPI int   e_modapi_info     (E_Module *m);

void  _dropshadow_cb_config_updated(void *data);

E_Config_Dialog *e_int_config_dropshadow_module(E_Container *con, const char *params __UNUSED__);
/**
 * @addtogroup Optional_Look
 * @{
 *
 * @defgroup Module_Dropshadow Drop Shadow
 *
 * Drops shadow on desktop for visible windows. This is a poor's man
 * solution for people that do not have @ref Module_Comp.
 *
 * @}
 */
#endif