enlightenment/src/modules/illume2/E_Illume.h

142 lines
4.3 KiB
C

#ifndef E_ILLUME_H
# define E_ILLUME_H
# include "e.h"
# define E_ILLUME_LAYOUT_API_VERSION 1
# define E_ILLUME_LAYOUT_POLICY_TYPE 0xE0b200b
typedef enum _E_Illume_Animation_Class
{
E_ILLUME_ANIM_APP,
E_ILLUME_ANIM_KEYBOARD,
E_ILLUME_ANIM_TOP_SHELF,
E_ILLUME_ANIM_BOTTOM_PANEL,
E_ILLUME_ANIM_DIALOG,
E_ILLUME_ANIM_QUICKPANEL,
E_ILLUME_ANIM_OTHER
} E_Illume_Animation_Class;
typedef struct _E_Illume_Layout_Api E_Illume_Layout_Api;
typedef struct _E_Illume_Layout_Policy E_Illume_Layout_Policy;
typedef struct _E_Illume_Config E_Illume_Config;
typedef struct _E_Illume_Config_Zone E_Illume_Config_Zone;
struct _E_Illume_Layout_Api
{
int version;
const char *label, *name;
};
struct _E_Illume_Layout_Policy
{
E_Object e_obj_inherit;
E_Illume_Layout_Api *api;
void *handle;
struct
{
void *(*init) (E_Illume_Layout_Policy *p);
int (*shutdown) (E_Illume_Layout_Policy *p);
void (*config) (E_Container *con, const char *params);
void (*border_add) (E_Border *bd);
void (*border_del) (E_Border *bd);
void (*border_focus_in) (E_Border *bd);
void (*border_focus_out) (E_Border *bd);
void (*border_activate) (E_Border *bd);
void (*border_property_change) (E_Border *bd, Ecore_X_Event_Window_Property *event);
void (*zone_layout) (E_Zone *zone);
void (*zone_move_resize) (E_Zone *zone);
void (*drag_start) (E_Border *bd);
void (*drag_end) (E_Border *bd);
} funcs;
};
struct _E_Illume_Config
{
int version;
struct
{
struct
{
int duration;
} kbd, softkey, quickpanel;
} sliding;
struct
{
const char *name;
struct
{
const char *class;
const char *name;
const char *title;
int win_type;
struct
{
int class, name, title, win_type;
} match;
} vkbd, softkey, home, indicator;
Eina_List *zones;
} policy;
// Not User Configurable. Placeholders
const char *mod_dir;
E_Config_Dialog *cfd;
};
struct _E_Illume_Config_Zone
{
int id;
struct
{
int dual, side;
} mode;
};
EAPI Eina_List *e_illume_layout_policies_get(void);
EAPI E_Illume_Config_Zone *e_illume_zone_config_get(int id);
EAPI int e_illume_border_is_dialog(E_Border *bd);
EAPI int e_illume_border_is_keyboard(E_Border *bd);
EAPI int e_illume_border_is_bottom_panel(E_Border *bd);
EAPI int e_illume_border_is_top_shelf(E_Border *bd);
EAPI int e_illume_border_is_home(E_Border *bd);
EAPI int e_illume_border_is_conformant(E_Border *bd);
EAPI int e_illume_border_is_quickpanel(E_Border *bd);
EAPI int e_illume_border_is_valid(E_Border *bd);
EAPI Eina_List *e_illume_border_valid_borders_get(E_Zone *zone);
EAPI E_Border *e_illume_border_valid_border_get(E_Zone *zone);
EAPI int e_illume_border_valid_count_get(E_Zone *zone);
EAPI Eina_List *e_illume_border_quickpanel_borders_get(E_Zone *zone);
EAPI int e_illume_border_quickpanel_count_get(E_Zone *zone);
EAPI E_Border *e_illume_border_at_xy_get(E_Zone *zone, int x, int y);
EAPI E_Border *e_illume_border_in_region_get(E_Zone *zone, int x, int y, int w, int h);
EAPI E_Border *e_illume_border_keyboard_get(E_Zone *zone);
EAPI E_Border *e_illume_border_top_shelf_get(E_Zone *zone);
EAPI E_Border *e_illume_border_bottom_panel_get(E_Zone *zone);
EAPI void e_illume_border_top_shelf_pos_get(E_Zone *zone, int *x, int *y);
EAPI void e_illume_border_top_shelf_size_get(E_Zone *zone, int *w, int *h);
EAPI void e_illume_border_bottom_panel_pos_get(E_Zone *zone, int *x, int *y);
EAPI void e_illume_border_bottom_panel_size_get(E_Zone *zone, int *w, int *h);
EAPI void e_illume_border_slide_to(E_Border *bd, int x, int y, E_Illume_Animation_Class aclass);
EAPI void e_illume_border_min_get(E_Border *bd, int *mw, int *mh);
EAPI void e_illume_border_max_get(E_Border *bd, int *mw, int *mh);
EAPI void e_illume_border_app1_safe_region_get(E_Zone *zone, int *x, int *y, int *w, int *h);
EAPI void e_illume_border_app2_safe_region_get(E_Zone *zone, int *x, int *y, int *w, int *h);
EAPI void e_illume_kbd_safe_app_region_get(E_Zone *zone, int *x, int *y, int *w, int *h);
extern EAPI E_Illume_Config *il_cfg;
extern EAPI int E_ILLUME_EVENT_POLICY_CHANGE;
#endif