160 lines
5.0 KiB
C
160 lines
5.0 KiB
C
|
#ifndef _EVAS_H
|
||
|
#define _EVAS_H 1
|
||
|
|
||
|
#include <X11/Xlib.h>
|
||
|
#include <Imlib2.h>
|
||
|
|
||
|
typedef struct _Evas * Evas;
|
||
|
typedef struct _Evas_Gradient * Evas_Gradient;
|
||
|
typedef void * Evas_Object;
|
||
|
typedef void * Evas_Group;
|
||
|
typedef int Evas_Callback_Type;
|
||
|
typedef int Evas_Image_Format;
|
||
|
typedef struct _Evas_List * Evas_List;
|
||
|
|
||
|
#define RENDER_METHOD_FASTEST 0
|
||
|
#define RENDER_METHOD_BEST 1
|
||
|
|
||
|
struct _Evas
|
||
|
{
|
||
|
struct _state {
|
||
|
Display *display;
|
||
|
Drawable drawable;
|
||
|
Visual *visual;
|
||
|
Colormap colormap;
|
||
|
|
||
|
struct _output {
|
||
|
int x, y, w, h;
|
||
|
} output;
|
||
|
|
||
|
struct _viewport {
|
||
|
double x, y, w, h;
|
||
|
} viewport;
|
||
|
|
||
|
Evas_List *active_layers;
|
||
|
|
||
|
Evas_List *objects;
|
||
|
|
||
|
int render_method;
|
||
|
|
||
|
} current, previous;
|
||
|
|
||
|
/* externally provided updates for drawable relative rects */
|
||
|
Evas_List *updates;
|
||
|
};
|
||
|
|
||
|
struct _Evas_Gradient
|
||
|
{
|
||
|
Imlib_Color_Range color_range;
|
||
|
};
|
||
|
|
||
|
struct _Evas_List
|
||
|
{
|
||
|
Evas_List *prev, *next;
|
||
|
void *data;
|
||
|
};
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* create and destroy */
|
||
|
Evas evas_new(void);
|
||
|
void evas_free(Evas e);
|
||
|
|
||
|
/* for exposes or forced redraws (relative to output drawable) */
|
||
|
void evas_update_rect(Evas e, int x, int y, int w, int h);
|
||
|
|
||
|
/* drawing */
|
||
|
void evas_render(Evas e);
|
||
|
|
||
|
/* query for settings to use */
|
||
|
Visual *evas_get_optimal_visual(Display *disp);
|
||
|
Colormap evas_get_optimal_colormap(Display *disp);
|
||
|
|
||
|
/* the output settings */
|
||
|
void evas_set_output(Evas e, Display *disp, Drawable d, Visual *v, Colormap c);
|
||
|
void evas_set_output_rect(Evas e, int x, int y, int w, int h);
|
||
|
void evas_set_viewport(Evas e, double x, double y, double w, double h);
|
||
|
|
||
|
/* deleting objects */
|
||
|
void evas_del_object(Evas e, Evas_Object o);
|
||
|
|
||
|
/* adding objects */
|
||
|
Evas_Object evas_add_image_from_file(Evas e, char *file);
|
||
|
Evas_Object evas_add_image_from_data(Evas e, void *data, Evas_Image_Format format, int w, int h);
|
||
|
Evas_Object evas_add_text(Evas e, char *font, int size, char *text);
|
||
|
Evas_Object evas_add_rectangle(Evas e, int r, Evas_Group g, int b);
|
||
|
Evas_Object evas_add_line(Evas e, int r, Evas_Group g, int b, int a);
|
||
|
Evas_Object evas_add_gradient_box(Evas e);
|
||
|
Evas_Object evas_add_bits(Evas e, char *file);
|
||
|
Evas_Object evas_add_evas(Evas e, Evas evas);
|
||
|
|
||
|
/* set object settings */
|
||
|
void evas_set_image_file(Evas e, Evas_Object o, char *file);
|
||
|
void evas_set_image_fill_size(Evas e, Evas_Object o, double w, double h);
|
||
|
void evas_set_bits_file(Evas e, Evas_Object o, char *file);
|
||
|
void evas_set_color(Evas e, Evas_Object o, int r, Evas_Group g, int b, int a);
|
||
|
void evas_set_gradient_angle(Evas e, Evas_Object o, double angle);
|
||
|
void evas_set_gradient(Evas e, Evas_Object o, Evas_Gradient grad);
|
||
|
void evas_set_angle(Evas e, Evas_Object o, double angle);
|
||
|
void evas_set_blend_mode(Evas e, int mode);
|
||
|
void evas_set_zoom_scale(Evas e, Evas_Object o, int scale);
|
||
|
|
||
|
/* layer stacking for object */
|
||
|
void evas_set_layer(Evas e, Evas_Object o, int l);
|
||
|
|
||
|
/* gradient creating / deletion / modification */
|
||
|
Evas_Gradient evas_gradient_new(void);
|
||
|
void evas_gradient_free(Evas_Gradient grad);
|
||
|
void evas_gradient_add_color(Evas_Gradient grad, int r, int g, int b, int a, int dist);
|
||
|
|
||
|
/* stacking within a layer */
|
||
|
void evas_raise(Evas e, Evas_Object o);
|
||
|
void evas_lower(Evas e, Evas_Object o);
|
||
|
void evas_stack_above(Evas e, Evas_Object o, int above);
|
||
|
void evas_stack_below(Evas e, Evas_Object o, int above);
|
||
|
|
||
|
/* object geoemtry */
|
||
|
void evas_move(Evas e, Evas_Object o, double x, double y);
|
||
|
void evas_resize(Evas e, Evas_Object o, double w, double h);
|
||
|
void evas_get_geometry(Evas e, Evas_Object o, double *x, double *y, double *w, double *h);
|
||
|
|
||
|
/* object visibility */
|
||
|
void evas_show(Evas e, Evas_Object o);
|
||
|
void evas_hide(Evas e, Evas_Object o);
|
||
|
|
||
|
/* group operations */
|
||
|
Evas_Group evas_add_group(Evas e);
|
||
|
void evas_add_to_group(Evas e, Evas_Object o, Evas_Group g);
|
||
|
void evas_disband_group(Evas e, Evas_Group g);
|
||
|
void evas_del_from_group(Evas e, Evas_Object o, Evas_Group g);
|
||
|
|
||
|
/* evas bits ops */
|
||
|
void evas_bits_get_padding(Evas e, Evas_Object o, double *l, double *r, double *t, double *b);
|
||
|
void evas_bits_get_min(Evas e, Evas_Object o, double *w, double *h);
|
||
|
void evas_bits_get_max(Evas e, Evas_Object o, double *w, double *h);
|
||
|
void evas_bits_get_classed_bit_geoemtry(Evas e, Evas_Object o, char *class, double *x, double *y, double *w, double *h);
|
||
|
|
||
|
/* image query ops */
|
||
|
void evas_get_image_size(Evas e, Evas_Object o, int *w, int *h);
|
||
|
|
||
|
/* events */
|
||
|
void evas_event_button_down(Evas e, int x, int y, int b);
|
||
|
void evas_event_button_up(Evas e, int x, int y, int b);
|
||
|
void evas_event_move(Evas e, int x, int y);
|
||
|
void evas_event_enter(Evas e);
|
||
|
void evas_event_leave(Evas e);
|
||
|
|
||
|
/* callbacks */
|
||
|
void evas_callback_add(Evas e, Evas_Object o, Evas_Callback_Type callback, void (*func) (void *_data, Evas _e, char *_class, Evas_Object _o, int _b, int _x, int _y), void *data);
|
||
|
void evas_callback_del(Evas e, Evas_Object o, Evas_Callback_Type callback);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|