steed/src/sdl-instead/graphics.h

186 lines
6.6 KiB
C
Raw Normal View History

2009-02-21 12:52:44 +02:00
#ifndef __GRAPHICS_H__
#define __GRAPHICS_H__
2011-02-19 16:48:09 +02:00
#include <SDL_version.h>
2010-10-06 20:31:30 +03:00
/* #define GFX_CACHE_SIZE 64
2010-01-23 08:21:53 +02:00
#define GFX_MAX_CACHED_W 256
#define GFX_MAX_CACHED_H 256
#define WORD_CACHE_SIZE 1024
#define LINK_CACHE_SIZE 64
2010-10-06 20:31:30 +03:00
*/
2011-02-19 15:23:09 +02:00
#if SDL_VERSION_ATLEAST(1,3,0)
typedef int gtimer_t;
#define NULL_TIMER 0
#else
2009-10-25 09:09:02 +02:00
typedef void* gtimer_t;
2011-02-19 15:23:09 +02:00
#define NULL_TIMER NULL
#endif
2009-02-21 12:52:44 +02:00
typedef void* img_t;
typedef void* fnt_t;
typedef void* layout_t;
typedef void* textbox_t;
typedef void* xref_t;
2010-03-10 07:30:54 +02:00
typedef void* word_t;
2009-02-21 12:52:44 +02:00
typedef struct {
int r;
int g;
int b;
} color_t;
2010-01-21 15:30:10 +02:00
2009-02-21 12:52:44 +02:00
#define ALIGN_LEFT 1
#define ALIGN_RIGHT 2
#define ALIGN_CENTER 4
#define ALIGN_JUSTIFY 8
2010-09-01 22:56:36 +03:00
#define ALIGN_TOP 16
#define ALIGN_BOTTOM 32
2010-09-02 11:03:06 +03:00
#define ALIGN_MIDDLE 64
2009-02-21 12:52:44 +02:00
#define STYLE_NORMAL 0x00
#define STYLE_BOLD 0x01
#define STYLE_ITALIC 0x02
#define STYLE_UNDERLINE 0x04
static inline color_t gfx_col(int r, int g, int b)
{
color_t col;
col.r = r;
col.g = g;
col.b = b;
return col;
}
2009-09-10 20:07:32 +03:00
extern int gfx_init(void);
extern void gfx_done(void);
extern int gfx_parse_color (const char *spec, color_t *def);
2009-02-21 12:52:44 +02:00
extern void gfx_flip(void);
extern cache_t gfx_image_cache(void);
2009-02-21 12:52:44 +02:00
extern img_t gfx_screen(img_t nscreen);
extern void gfx_bg(color_t col);
extern void gfx_noclip(void);
extern void gfx_clip(int x, int y, int w, int h);
2009-11-29 17:15:38 +02:00
extern void gfx_getclip(int *x, int *y, int *w, int *h);
2009-02-21 12:52:44 +02:00
extern int gfx_width;
extern int gfx_height;
2009-09-10 20:07:32 +03:00
extern int gfx_video_init(void);
extern int gfx_set_mode(int w, int h, int fs);
extern int gfx_get_mode(int n, int *w, int *h);
2010-09-10 14:07:52 +03:00
extern int gfx_get_max_mode(int *w, int *h);
extern int gfx_next_mode(int *w, int *h);
extern int gfx_prev_mode(int *w, int *h);
2009-02-21 12:52:44 +02:00
extern void gfx_update(int x, int y, int w, int h);
2009-09-10 20:07:32 +03:00
extern void gfx_video_done(void);
2009-02-21 12:52:44 +02:00
extern void gfx_clear(int x, int y, int w, int h);
2011-04-13 20:42:11 +03:00
extern void gfx_copy_from(img_t p, int x, int y, int width, int height, img_t to, int xx, int yy);
2009-02-21 12:52:44 +02:00
extern void gfx_draw(img_t pixmap, int x, int y);
extern void gfx_draw_wh(img_t p, int x, int y, int w, int h);
extern img_t gfx_grab_screen(int x, int y, int w, int h);
extern img_t gfx_new(int w, int h);
2009-08-26 08:25:53 +03:00
extern img_t gfx_load_image(char *filename);
2009-02-21 12:52:44 +02:00
extern void gfx_free_image(img_t pixmap);
extern int gfx_img_w(img_t pixmap);
extern int gfx_img_h(img_t pixmap);
extern img_t gfx_combine(img_t src, img_t dst);
extern void gfx_set_alpha(img_t src, int alpha);
2011-04-13 17:11:39 +03:00
extern void gfx_unset_alpha(img_t src);
2009-02-21 12:52:44 +02:00
extern img_t gfx_alpha_img(img_t src, int alpha);
2010-09-15 11:35:54 +03:00
extern img_t gfx_display_alpha(img_t src);
2009-02-21 12:52:44 +02:00
extern img_t gfx_scale(img_t src, float xscale, float yscale);
2011-04-12 10:42:01 +03:00
extern img_t gfx_rotate(img_t src, float angle);
2010-01-27 13:20:41 +02:00
extern void gfx_draw_bg(img_t p, int x, int y, int width, int height);
extern void gfx_draw_from(img_t p, int x, int y, int width, int height, img_t to, int xx, int yy);
2011-02-19 15:23:09 +02:00
extern void gfx_cursor(int *xp, int *yp);
2010-01-27 13:20:41 +02:00
extern void gfx_warp_cursor(int x, int y);
2010-07-10 09:39:29 +03:00
extern void gfx_change_screen(img_t src, int steps);
2010-01-27 13:20:41 +02:00
extern int gfx_fading(void);
2009-02-21 12:52:44 +02:00
extern void gfx_img_fill(img_t img, int x, int y, int w, int h, color_t col);
extern void gfx_fill(int x, int y, int w, int h, color_t col);
extern fnt_t fnt_load(const char *fname, int size);
extern void fnt_free(fnt_t);
2011-03-08 21:36:13 +02:00
extern int fnt_height(fnt_t fn);
extern void fnt_style(fnt_t fn, int style);
extern img_t fnt_render(fnt_t fn, const char *p, color_t col);
2009-02-21 12:52:44 +02:00
extern void txt_draw(fnt_t fnt, const char *txt, int x, int y, color_t col);
extern void txt_size(fnt_t fnt, const char *txt, int *w, int *h);
2011-03-09 11:05:05 +02:00
// extern int txt_width(fnt_t fnt, const char *txt);
2011-03-09 10:33:30 +02:00
2009-02-21 12:52:44 +02:00
//extern layout_t txt_layout(fnt_t fn, char *txt, int width, int height);
extern layout_t txt_layout(fnt_t fn, int align, int width, int height);
extern void txt_layout_add(layout_t lay, char *txt);
extern void txt_layout_set(layout_t lay, char *txt);
extern void txt_layout_draw(layout_t lay, int x, int y);
extern void txt_layout_free(layout_t lay);
2011-01-11 20:41:46 +02:00
extern void _txt_layout_free(layout_t lay); /* do not free lay obj */
2009-02-21 12:52:44 +02:00
extern xref_t txt_layout_xref(layout_t lay, int x, int y);
extern void txt_layout_color(layout_t lay, color_t fg);
2010-10-07 16:10:24 +03:00
extern fnt_t txt_layout_font(layout_t lay);
2010-10-30 15:54:41 +03:00
extern void txt_layout_font_height(layout_t lay, float height);
2010-10-07 16:10:24 +03:00
2009-02-21 12:52:44 +02:00
extern void txt_layout_link_color(layout_t lay, color_t link);
extern void txt_layout_active_color(layout_t lay, color_t link);
extern void txt_layout_link_style(layout_t lay, int style);
extern int txt_layout_add_img(layout_t lay, const char *name, img_t img);
extern img_t txt_layout_images(layout_t lay, void **v); /* enumerator */
2010-03-10 07:30:54 +02:00
extern word_t txt_layout_words(layout_t lay, word_t w); /* enumerator */
2010-03-10 13:58:57 +02:00
extern int word_geom(word_t v, int *x, int *y, int *w, int *h);
extern img_t word_image(word_t v);
2009-02-21 12:52:44 +02:00
extern void txt_layout_size(layout_t lay, int *w, int *h);
extern textbox_t txt_box(int w, int h);
extern layout_t txt_box_layout(textbox_t tbox);
extern void txt_box_set(textbox_t tbox, layout_t lay);
extern void txt_box_free(textbox_t tbox);
extern void txt_box_draw(textbox_t tbox, int x, int y);
extern void txt_box_next(textbox_t tbox);
extern void txt_box_prev(textbox_t tbox);
extern void txt_box_next_line(textbox_t tbox);
extern void txt_box_prev_line(textbox_t tbox);
2009-08-26 08:25:53 +03:00
extern void txt_box_scroll(textbox_t tbox, int disp);
2009-02-21 12:52:44 +02:00
extern xref_t txt_box_xref(textbox_t tbox, int x, int y);
2009-09-05 13:10:03 +03:00
extern xref_t txt_box_xrefs(textbox_t tbox);
2009-02-21 12:52:44 +02:00
extern int txt_box_off(textbox_t tbox);
extern void txt_box_size(textbox_t tbox, int *w, int *h);
extern void txt_box_resize(textbox_t tbox, int w, int h);
2009-02-21 12:52:44 +02:00
typedef void (*clear_fn)(int x, int y, int w, int h);
2009-02-21 12:52:44 +02:00
extern void txt_box_update_links(textbox_t tbox, int x, int y, clear_fn);
extern void txt_layout_update_links(layout_t layout, int x, int y, clear_fn clear);
extern void txt_layout_real_size(layout_t lay, int *w, int *h);
2011-01-11 20:41:46 +02:00
extern void txt_layout_set_size(layout_t lay, int w, int h); /* without text only */
2010-10-30 15:54:41 +03:00
extern int txt_layout_pos2off(layout_t lay, int pos, int *hh);
2009-02-21 12:52:44 +02:00
extern img_t txt_box_render(textbox_t tbox);
extern char *xref_get_text(xref_t x);
extern void xref_set_active(xref_t x, int val);
2009-12-12 16:13:22 +02:00
extern int xref_get_active(xref_t x);
2009-09-05 13:10:03 +03:00
extern xref_t xref_next(xref_t x);
extern xref_t xref_prev(xref_t x);
extern int xref_position(xref_t x, int *xc, int *yc);
extern xref_t txt_layout_xrefs(layout_t lay);
2009-02-21 12:52:44 +02:00
extern layout_t xref_layout(xref_t x);
typedef void (*update_fn)(int x, int y, int w, int h);
extern void xref_update(xref_t xref, int x, int y, clear_fn clear, update_fn update);
extern void gfx_start_gif(img_t img);
2010-03-02 16:49:35 +02:00
extern int gfx_is_drawn_gifs(void);
extern void gfx_stop_gif(img_t img);
extern int gfx_frame_gif(img_t img);
2009-10-25 09:09:02 +02:00
extern void gfx_del_timer(gtimer_t han);
extern gtimer_t gfx_add_timer(int delay, int (*fn)(int, void*), void *aux);
2009-10-02 21:08:24 +03:00
extern void gfx_update_gif(img_t img);
2009-10-03 08:52:07 +03:00
extern void gfx_dispose_gif(img_t p);
2009-02-21 12:52:44 +02:00
#endif