Index: back_end.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/utility/ftwl/back_end.h,v retrieving revision 1.4 diff -u -r1.4 back_end.h --- back_end.h 22 Mar 2005 21:40:54 -0000 1.4 +++ back_end.h 24 Mar 2005 19:22:23 -0000 @@ -88,59 +88,57 @@ int state; // unused; }; -struct osda; /* Off-Screen Drawing Area */ +struct be_canvas; struct Sprite; struct FT_Bitmap_; #include "text_renderer.h" -/* ===== general osda ===== */ -struct osda *be_create_osda(int width, int height); -void be_free_osda(struct osda *osda); -void be_set_transparent(struct osda *osda, - const struct ct_rect *rect); +/* ===== general canvas functions ===== */ +/* Create a canvas for drawing at the specified coordinates + * and dimensions. */ +struct be_canvas *be_create_canvas(int x, int y, int width, int height); +void be_free_canvas(struct be_canvas *canvas); -/* ===== drawing to osda ===== */ +/* ===== drawing to the canvas ===== */ #define be_draw_string tr_draw_string -void be_draw_bitmap(struct osda *target, be_color color, +void be_draw_bitmap(struct be_canvas *target, be_color color, const struct ct_point *position, struct FT_Bitmap_ *bitmap); -void be_draw_region(struct osda *target, const struct ct_rect *region, +void be_draw_region(struct be_canvas *target, const struct ct_rect *region, be_color color); -void be_draw_line(struct osda *target, const struct ct_point *start, +void be_draw_line(struct be_canvas *target, const struct ct_point *start, const struct ct_point *end, int line_width, bool dashed, be_color color); -void be_draw_rectangle(struct osda *target, const struct ct_rect *spec, +void be_draw_rectangle(struct be_canvas *target, const struct ct_rect *spec, int line_width, be_color color); -void be_draw_sprite(struct osda *target, +void be_draw_sprite(struct be_canvas *target, const struct Sprite *sprite, const struct ct_size *size, const struct ct_point *dest_pos, const struct ct_point *src_pos); -void be_multiply_alphas(struct Sprite *dest_sprite, - const struct Sprite *src_sprite, - const struct ct_point *src_pos); -void be_copy_osda_to_osda(struct osda *dest, - struct osda *src, - const struct ct_size *size, - const struct ct_point *dest_pos, - const struct ct_point *src_pos); +/* Copy canvas to back buffer */ +void be_buffer_canvas(struct be_canvas *src, + const struct ct_size *size, + const struct ct_point *dest_pos, + const struct ct_point *src_pos); /* ===== query info ===== */ void be_screen_get_size(struct ct_size *size); #define be_string_get_size tr_string_get_size void be_sprite_get_size(struct ct_size *size, const struct Sprite *sprite); -void be_osda_get_size(struct ct_size *size, - const struct osda *osda); -bool be_is_transparent_pixel(struct osda *osda, const struct ct_point *pos); +void be_canvas_get_size(struct ct_size *size, + const struct be_canvas *canvas); -/* ===== graphics.c implementation ===== */ +/* ===== sprites (graphics.c implementation) ===== */ struct Sprite *be_load_gfxfile(const char *filename); struct Sprite *be_crop_sprite(struct Sprite *source, - int x, int y, int width, int height); + int x, int y, int width, int height, + struct Sprite *mask, + int mask_offset_x, int mask_offset_y); void be_free_sprite(struct Sprite *sprite); /* ===== other ===== */ @@ -149,8 +147,8 @@ void be_next_event(struct be_event *event, struct timeval *timeout); void be_add_net_input(int sock); void be_remove_net_input(void); -void be_copy_osda_to_screen(struct osda *src); -void be_write_osda_to_file(struct osda *osda, const char *filename); +void be_flip_buffers(void); /* move back buffer to front buffer */ +void be_write_canvas_to_file(struct be_canvas *canvas, const char *filename); be_color be_get_color(int red, int green, int blue, int alpha); #endif