2000-07-30 13:21:14 -07:00
|
|
|
#ifndef _EVAS_H
|
|
|
|
#define _EVAS_H 1
|
|
|
|
|
|
|
|
#include <X11/Xlib.h>
|
|
|
|
#include <Imlib2.h>
|
|
|
|
|
2000-09-26 12:16:48 -07:00
|
|
|
/* types */
|
|
|
|
#ifndef _EVAS_PRIVATE_H
|
|
|
|
typedef void * Evas;
|
|
|
|
typedef void * Evas_Gradient;
|
|
|
|
typedef void * Evas_Object;
|
|
|
|
#endif
|
2000-07-30 14:38:57 -07:00
|
|
|
typedef struct _Evas_List * Evas_List;
|
2000-07-31 11:06:21 -07:00
|
|
|
|
2000-09-26 12:16:48 -07:00
|
|
|
/* public structs */
|
|
|
|
struct _Evas_List
|
2000-07-30 13:21:14 -07:00
|
|
|
{
|
2000-07-30 15:42:55 -07:00
|
|
|
Evas_List prev, next;
|
2000-07-30 13:21:14 -07:00
|
|
|
void *data;
|
|
|
|
};
|
|
|
|
|
2000-09-26 12:16:48 -07:00
|
|
|
/* enums */
|
|
|
|
#define RENDER_METHOD_COUNT 5
|
|
|
|
enum _Evas_Render_Method
|
2000-07-30 14:38:57 -07:00
|
|
|
{
|
2000-09-27 08:14:06 -07:00
|
|
|
RENDER_METHOD_ALPHA_SOFTWARE, /* imlib2 rendering to any drawable */
|
|
|
|
RENDER_METHOD_BASIC_HARDWARE, /* X11 pixmap rendering to any drawable */
|
|
|
|
RENDER_METHOD_3D_HARDWARE, /* oepngl rendering to windows only */
|
|
|
|
RENDER_METHOD_ALPHA_HARDWARE, /* unimplimented */
|
|
|
|
RENDER_METHOD_IMAGE /* imlib2 rendering to imlib image target */
|
2000-07-30 14:38:57 -07:00
|
|
|
};
|
|
|
|
|
2000-09-26 12:16:48 -07:00
|
|
|
enum _Evas_Callback_Type
|
2000-07-30 14:38:57 -07:00
|
|
|
{
|
2000-09-26 12:16:48 -07:00
|
|
|
CALLBACK_MOUSE_IN,
|
|
|
|
CALLBACK_MOUSE_OUT,
|
|
|
|
CALLBACK_MOUSE_DOWN,
|
|
|
|
CALLBACK_MOUSE_UP,
|
|
|
|
CALLBACK_MOUSE_MOVE,
|
|
|
|
CALLBACK_FREE
|
2000-07-30 14:38:57 -07:00
|
|
|
};
|
|
|
|
|
2000-09-26 12:16:48 -07:00
|
|
|
enum _Evas_Image_Format
|
2000-07-30 14:38:57 -07:00
|
|
|
{
|
2000-09-26 12:16:48 -07:00
|
|
|
IMAGE_FORMAT_BGRA,
|
|
|
|
IMAGE_FORMAT_ARGB,
|
|
|
|
IMAGE_FORMAT_RGB,
|
|
|
|
IMAGE_FORMAT_GRAY
|
2000-07-30 14:38:57 -07:00
|
|
|
};
|
|
|
|
|
2000-10-16 16:18:22 -07:00
|
|
|
/* enum types */
|
|
|
|
typedef enum _Evas_Callback_Type Evas_Callback_Type;
|
|
|
|
typedef enum _Evas_Image_Format Evas_Image_Format;
|
|
|
|
typedef enum _Evas_Render_Method Evas_Render_Method;
|
|
|
|
|
2000-09-26 12:16:48 -07:00
|
|
|
/* functions */
|
2000-07-30 13:21:14 -07:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
2000-07-30 14:38:57 -07:00
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* create and destroy */
|
2000-09-25 12:47:44 -07:00
|
|
|
Evas evas_new_all(Display *display, Window parent_window,
|
|
|
|
int x, int y, int w, int h,
|
|
|
|
Evas_Render_Method render_method,
|
|
|
|
int colors, int font_cache, int image_cache,
|
|
|
|
char *font_dir);
|
|
|
|
Window evas_get_window(Evas e);
|
|
|
|
Display *evas_get_display(Evas e);
|
|
|
|
Visual *evas_get_visual(Evas e);
|
|
|
|
Colormap evas_get_colormap(Evas e);
|
|
|
|
int evas_get_colors(Evas e);
|
|
|
|
Imlib_Image evas_get_image(Evas e);
|
|
|
|
Evas_Render_Method evas_get_render_method(Evas e);
|
|
|
|
Evas evas_new(void);
|
|
|
|
void evas_free(Evas e);
|
2000-07-30 13:21:14 -07:00
|
|
|
|
|
|
|
/* for exposes or forced redraws (relative to output drawable) */
|
|
|
|
void evas_update_rect(Evas e, int x, int y, int w, int h);
|
2000-10-14 20:11:11 -07:00
|
|
|
/* for when the evas isnt fully visible you can clip out rects that are */
|
|
|
|
/* full obscured rects of the evas (ie windows ontop) */
|
|
|
|
void evas_add_obscured_rect(Evas e, int x, int y, int w, int h);
|
|
|
|
void evas_clear_obscured_rects(Evas e);
|
2000-07-30 13:21:14 -07:00
|
|
|
|
|
|
|
/* drawing */
|
2000-12-01 18:21:07 -08:00
|
|
|
Imlib_Updates evas_render_updates(Evas e);
|
|
|
|
void evas_render(Evas e);
|
2000-07-30 13:21:14 -07:00
|
|
|
|
|
|
|
/* query for settings to use */
|
2000-08-13 22:41:56 -07:00
|
|
|
Visual *evas_get_optimal_visual(Evas e, Display *disp);
|
|
|
|
Colormap evas_get_optimal_colormap(Evas e, Display *disp);
|
2000-08-22 00:02:35 -07:00
|
|
|
void evas_get_drawable_size(Evas e, int *w, int *h);
|
|
|
|
void evas_get_viewport(Evas e, double *x, double *y, double *w, double *h);
|
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* the output settings */
|
|
|
|
void evas_set_output(Evas e, Display *disp, Drawable d, Visual *v, Colormap c);
|
2000-09-13 15:36:46 -07:00
|
|
|
void evas_set_output_image(Evas e, Imlib_Image image);
|
2000-09-15 08:04:48 -07:00
|
|
|
void evas_set_output_colors(Evas e, int colors);
|
2000-08-11 00:47:52 -07:00
|
|
|
void evas_set_output_size(Evas e, int w, int h);
|
2000-07-31 10:48:34 -07:00
|
|
|
void evas_set_output_viewport(Evas e, double x, double y, double w, double h);
|
|
|
|
void evas_set_output_method(Evas e, Evas_Render_Method method);
|
2000-08-12 23:06:43 -07:00
|
|
|
void evas_set_scale_smoothness(Evas e, int smooth);
|
2000-07-31 10:48:34 -07:00
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* deleting objects */
|
|
|
|
void evas_del_object(Evas e, Evas_Object o);
|
|
|
|
|
|
|
|
/* adding objects */
|
|
|
|
Evas_Object evas_add_image_from_file(Evas e, char *file);
|
2000-09-15 06:49:14 -07:00
|
|
|
/* ** ** not implimented yet ** ** */Evas_Object evas_add_image_from_data(Evas e, void *data, Evas_Image_Format format, int w, int h);
|
2000-07-30 13:21:14 -07:00
|
|
|
Evas_Object evas_add_text(Evas e, char *font, int size, char *text);
|
2000-08-13 22:41:56 -07:00
|
|
|
Evas_Object evas_add_rectangle(Evas e);
|
|
|
|
Evas_Object evas_add_line(Evas e);
|
2000-07-30 13:21:14 -07:00
|
|
|
Evas_Object evas_add_gradient_box(Evas e);
|
2000-10-11 17:26:34 -07:00
|
|
|
Evas_Object evas_add_poly(Evas e);
|
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* set object settings */
|
|
|
|
void evas_set_image_file(Evas e, Evas_Object o, char *file);
|
2000-09-15 06:49:14 -07:00
|
|
|
/* ** ** not implimented yet ** ** */void evas_set_image_data(Evas e, Evas_Object o, void *data, Evas_Image_Format format, int w, int h);
|
2000-07-30 14:38:57 -07:00
|
|
|
void evas_set_image_fill(Evas e, Evas_Object o, double x, double y, double w, double h);
|
2000-08-20 00:13:31 -07:00
|
|
|
void evas_set_image_border(Evas e, Evas_Object o, int l, int r, int t, int b);
|
2000-07-31 10:48:34 -07:00
|
|
|
void evas_set_color(Evas e, Evas_Object o, int r, int g, int b, int a);
|
2000-08-13 20:23:46 -07:00
|
|
|
void evas_set_text(Evas e, Evas_Object o, char *text);
|
|
|
|
void evas_set_font(Evas e, Evas_Object o, char *font, int size);
|
2000-07-30 13:21:14 -07:00
|
|
|
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_zoom_scale(Evas e, Evas_Object o, int scale);
|
2000-07-30 14:38:57 -07:00
|
|
|
void evas_set_line_xy(Evas e, Evas_Object o, double x1, double y1, double x2, double y2);
|
2000-08-21 20:45:58 -07:00
|
|
|
void evas_set_pass_events(Evas e, Evas_Object o, int pass_events);
|
2000-10-11 17:26:34 -07:00
|
|
|
void evas_add_point(Evas e, Evas_Object o, double x, double y);
|
|
|
|
|
2000-08-13 23:37:51 -07:00
|
|
|
/* cache settings for performance */
|
2000-08-13 20:23:46 -07:00
|
|
|
void evas_set_font_cache(Evas e, int size);
|
|
|
|
int evas_get_font_cache(Evas e);
|
|
|
|
void evas_flush_font_cache(Evas e);
|
|
|
|
void evas_set_image_cache(Evas e, int size);
|
2000-08-13 22:41:56 -07:00
|
|
|
int evas_get_image_cache(Evas e);
|
2000-08-13 20:23:46 -07:00
|
|
|
void evas_flush_image_cache(Evas e);
|
2000-08-13 23:37:51 -07:00
|
|
|
|
|
|
|
/* font path */
|
2000-08-13 20:23:46 -07:00
|
|
|
void evas_font_add_path(Evas e, char *path);
|
|
|
|
void evas_font_del_path(Evas e, char *path);
|
2000-07-30 14:38:57 -07:00
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* layer stacking for object */
|
|
|
|
void evas_set_layer(Evas e, Evas_Object o, int l);
|
2000-09-15 06:49:14 -07:00
|
|
|
/* ** ** not implimented yet ** ** */void evas_set_layer_store(Evas e, int l, int store);
|
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* 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);
|
2000-08-12 23:06:43 -07:00
|
|
|
void evas_stack_above(Evas e, Evas_Object o, Evas_Object above);
|
2000-09-15 06:49:14 -07:00
|
|
|
void evas_stack_below(Evas e, Evas_Object o, Evas_Object below);
|
2000-07-30 13:21:14 -07:00
|
|
|
|
2000-09-15 06:49:14 -07:00
|
|
|
/* object geometry */
|
2000-07-30 13:21:14 -07:00
|
|
|
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);
|
|
|
|
|
2000-09-13 15:36:46 -07:00
|
|
|
/* object query */
|
|
|
|
Evas_List evas_objects_in_rect(Evas e, double x, double y, double w, double h);
|
|
|
|
Evas_List evas_objects_at_position(Evas e, double x, double y);
|
|
|
|
Evas_Object evas_object_in_rect(Evas e, double x, double y, double w, double h);
|
|
|
|
Evas_Object evas_object_at_position(Evas e, double x, double y);
|
2000-09-25 12:47:44 -07:00
|
|
|
Evas_Object evas_object_get_named(Evas e, char *name);
|
|
|
|
void evas_object_set_name(Evas e, Evas_Object o, char *name);
|
|
|
|
char *evas_object_get_name(Evas e, Evas_Object o);
|
2000-10-11 17:26:34 -07:00
|
|
|
Evas_List evas_get_points(Evas e, Evas_Object o);
|
2000-09-25 12:47:44 -07:00
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* object visibility */
|
|
|
|
void evas_show(Evas e, Evas_Object o);
|
|
|
|
void evas_hide(Evas e, Evas_Object o);
|
|
|
|
|
|
|
|
/* image query ops */
|
|
|
|
void evas_get_image_size(Evas e, Evas_Object o, int *w, int *h);
|
2000-08-20 00:13:31 -07:00
|
|
|
void evas_get_image_border(Evas e, Evas_Object o, int *l, int *r, int *t, int *b);
|
2000-07-30 13:21:14 -07:00
|
|
|
|
2000-08-20 00:13:31 -07:00
|
|
|
/* coordinate space transforms */
|
|
|
|
int evas_world_x_to_screen(Evas e, double x);
|
|
|
|
int evas_world_y_to_screen(Evas e, double y);
|
|
|
|
double evas_screen_x_to_world(Evas e, int x);
|
|
|
|
double evas_screen_y_to_world(Evas e, int y);
|
|
|
|
|
|
|
|
/* text query ops */
|
2000-09-13 10:19:38 -07:00
|
|
|
char *evas_get_text_string(Evas e, Evas_Object o);
|
|
|
|
char *evas_get_text_font(Evas e, Evas_Object o);
|
|
|
|
int evas_get_text_size(Evas e, Evas_Object o);
|
|
|
|
int evas_text_at_position(Evas e, Evas_Object o, double x, double y, int *char_x, int *char_y, int *char_w, int *char_h);
|
|
|
|
void evas_text_at(Evas e, Evas_Object o, int index, int *char_x, int *char_y, int *char_w, int *char_h);
|
|
|
|
void evas_text_get_ascent_descent(Evas e, Evas_Object o, double *ascent, double *descent);
|
|
|
|
void evas_text_get_max_ascent_descent(Evas e, Evas_Object o, double *ascent, double *descent);
|
|
|
|
void evas_text_get_advance(Evas e, Evas_Object o, double *h_advance, double *v_advance);
|
|
|
|
double evas_text_get_inset(Evas e, Evas_Object o);
|
|
|
|
|
2000-08-20 00:13:31 -07:00
|
|
|
/* object query ops */
|
|
|
|
void evas_get_color(Evas e, Evas_Object o, int *r, int *g, int *b, int *a);
|
|
|
|
Evas_Object evas_get_object_under_mouse(Evas e);
|
|
|
|
|
2000-08-14 00:01:00 -07:00
|
|
|
/* data attachment ops */
|
2000-08-20 00:13:31 -07:00
|
|
|
void evas_put_data(Evas e, Evas_Object o, char *key, void *data);
|
|
|
|
void *evas_get_data(Evas e, Evas_Object o, char *key);
|
2000-08-20 14:49:41 -07:00
|
|
|
void *evas_remove_data(Evas e, Evas_Object o, char *key);
|
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* events */
|
2000-10-31 10:15:11 -08:00
|
|
|
void evas_ungrab_button(Evas e);
|
2000-07-30 13:21:14 -07:00
|
|
|
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);
|
2000-10-13 11:00:48 -07:00
|
|
|
int evas_pointer_in(Evas e);
|
|
|
|
void evas_pointer_pos(Evas e, int *x, int *y);
|
|
|
|
int evas_pointer_buttons(Evas e);
|
2000-10-13 20:41:11 -07:00
|
|
|
void evas_pinter_ungrab(Evas e);
|
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
/* callbacks */
|
2000-08-14 00:01:00 -07:00
|
|
|
void evas_callback_add(Evas e, Evas_Object o, Evas_Callback_Type callback, void (*func) (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y), void *data);
|
2000-07-30 13:21:14 -07:00
|
|
|
void evas_callback_del(Evas e, Evas_Object o, Evas_Callback_Type callback);
|
|
|
|
|
2000-07-30 15:42:55 -07:00
|
|
|
/* list ops */
|
|
|
|
Evas_List evas_list_append(Evas_List list, void *data);
|
|
|
|
Evas_List evas_list_prepend(Evas_List list, void *data);
|
|
|
|
Evas_List evas_list_append_relative(Evas_List list, void *data, void *relative);
|
|
|
|
Evas_List evas_list_prepend_relative(Evas_List list, void *data, void *relative);
|
|
|
|
Evas_List evas_list_remove(Evas_List list, void *data);
|
|
|
|
void * evas_list_find(Evas_List list, void *data);
|
|
|
|
Evas_List evas_list_free(Evas_List list);
|
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|