2010-08-25 06:22:41 -05:00
|
|
|
#ifndef GRAPHICS_H
|
|
|
|
#define GRAPHICS_H
|
|
|
|
#include <SDL/SDL.h>
|
2010-08-26 08:46:56 -05:00
|
|
|
#include "defines.h"
|
|
|
|
#include "hmap.h"
|
2010-08-25 06:22:41 -05:00
|
|
|
|
|
|
|
#ifdef PIX16
|
|
|
|
#define PIXELSIZE 2
|
|
|
|
#define PIXPACK(x) ((((x)>>8)&0xF800)|(((x)>>5)&0x07E0)|(((x)>>3)&0x001F))
|
|
|
|
#define PIXRGB(r,g,b) ((((r)<<8)&0xF800)|(((g)<<3)&0x07E0)|(((b)>>3)&0x001F))
|
|
|
|
#define PIXR(x) (((x)>>8)&0xF8)
|
|
|
|
#define PIXG(x) (((x)>>3)&0xFC)
|
|
|
|
#define PIXB(x) (((x)<<3)&0xF8)
|
|
|
|
#else
|
|
|
|
#define PIXELSIZE 4
|
|
|
|
#ifdef PIX32BGR
|
|
|
|
#define PIXPACK(x) ((((x)>>16)&0x0000FF)|((x)&0x00FF00)|(((x)<<16)&0xFF0000))
|
|
|
|
#define PIXRGB(r,g,b) (((b)<<16)|((g)<<8)|((r)))// (((b)<<16)|((g)<<8)|(r))
|
|
|
|
#define PIXR(x) ((x)&0xFF)
|
|
|
|
#define PIXG(x) (((x)>>8)&0xFF)
|
|
|
|
#define PIXB(x) ((x)>>16)
|
|
|
|
#else
|
|
|
|
#ifdef PIX32BGRA
|
|
|
|
#define PIXPACK(x) ((((x)>>8)&0x0000FF00)|(((x)<<8)&0x00FF0000)|(((x)<<24)&0xFF000000))
|
|
|
|
#define PIXRGB(r,g,b) (((b)<<24)|((g)<<16)|((r)<<8))
|
|
|
|
#define PIXR(x) (((x)>>8)&0xFF)
|
|
|
|
#define PIXG(x) (((x)>>16)&0xFF)
|
|
|
|
#define PIXB(x) (((x)>>24))
|
|
|
|
#else
|
|
|
|
#define PIXPACK(x) (x)
|
|
|
|
#define PIXRGB(r,g,b) (((r)<<16)|((g)<<8)|(b))
|
|
|
|
#define PIXR(x) ((x)>>16)
|
|
|
|
#define PIXG(x) (((x)>>8)&0xFF)
|
|
|
|
#define PIXB(x) ((x)&0xFF)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
2010-08-26 04:53:15 -05:00
|
|
|
extern unsigned cmode;
|
|
|
|
extern SDL_Surface *sdl_scrn;
|
|
|
|
extern int sdl_scale;
|
2010-08-25 06:22:41 -05:00
|
|
|
|
2010-08-26 08:46:56 -05:00
|
|
|
extern unsigned char fire_r[YRES/CELL][XRES/CELL];
|
|
|
|
extern unsigned char fire_g[YRES/CELL][XRES/CELL];
|
|
|
|
extern unsigned char fire_b[YRES/CELL][XRES/CELL];
|
|
|
|
|
2010-08-28 05:40:49 -05:00
|
|
|
extern unsigned int fire_alpha[CELL*3][CELL*3];
|
|
|
|
extern pixel *fire_bg;
|
|
|
|
|
2010-08-25 06:22:41 -05:00
|
|
|
pixel *rescale_img(pixel *src, int sw, int sh, int *qw, int *qh, int f);
|
|
|
|
|
|
|
|
void sdl_blit_1(int x, int y, int w, int h, pixel *src, int pitch);
|
|
|
|
|
|
|
|
void sdl_blit_2(int x, int y, int w, int h, pixel *src, int pitch);
|
|
|
|
|
|
|
|
void sdl_blit(int x, int y, int w, int h, pixel *src, int pitch);
|
|
|
|
|
|
|
|
void drawblob(pixel *vid, int x, int y, unsigned char cr, unsigned char cg, unsigned char cb);
|
|
|
|
|
|
|
|
void draw_tool(pixel *vid_buf, int b, int sl, int sr, unsigned pc, unsigned iswall);
|
|
|
|
|
|
|
|
int draw_tool_xy(pixel *vid_buf, int x, int y, int b, unsigned pc);
|
|
|
|
|
|
|
|
void draw_menu(pixel *vid_buf, int i, int hover);
|
|
|
|
|
|
|
|
#ifdef WIN32
|
|
|
|
_inline void drawpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
|
|
|
#else
|
2010-09-03 04:32:37 -05:00
|
|
|
extern inline void drawpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
2010-08-25 06:22:41 -05:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef WIN32
|
|
|
|
_inline int drawchar(pixel *vid, int x, int y, int c, int r, int g, int b, int a);
|
|
|
|
#else
|
2010-09-03 04:32:37 -05:00
|
|
|
extern inline int drawchar(pixel *vid, int x, int y, int c, int r, int g, int b, int a);
|
2010-08-25 06:22:41 -05:00
|
|
|
#endif
|
|
|
|
|
2010-09-03 09:05:09 -05:00
|
|
|
int drawtext(pixel *vid, int x, int y, const char *s, int r, int g, int b, int a);
|
2010-08-25 06:22:41 -05:00
|
|
|
|
|
|
|
void drawrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void fillrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void clearrect(pixel *vid, int x, int y, int w, int h);
|
|
|
|
|
|
|
|
void drawdots(pixel *vid, int x, int y, int h, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
int textwidth(char *s);
|
|
|
|
|
|
|
|
int drawtextmax(pixel *vid, int x, int y, int w, char *s, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
int textnwidth(char *s, int n);
|
|
|
|
|
|
|
|
int textwidthx(char *s, int w);
|
|
|
|
|
|
|
|
#ifdef WIN32
|
|
|
|
_inline void blendpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
|
|
|
#else
|
|
|
|
inline void blendpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void draw_icon(pixel *vid_buf, int x, int y, char ch, int flag);
|
|
|
|
|
|
|
|
void draw_air(pixel *vid);
|
|
|
|
|
|
|
|
void draw_line(pixel *vid, int x1, int y1, int x2, int y2, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void addpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void xor_pixel(int x, int y, pixel *vid);
|
|
|
|
|
|
|
|
void xor_line(int x1, int y1, int x2, int y2, pixel *vid);
|
|
|
|
|
|
|
|
void xor_rect(pixel *vid, int x, int y, int w, int h);
|
|
|
|
|
2010-08-27 07:01:20 -05:00
|
|
|
void draw_parts(pixel *vid);
|
|
|
|
|
2010-08-28 05:40:49 -05:00
|
|
|
void render_signs(pixel *vid_buf);
|
|
|
|
|
|
|
|
void render_fire(pixel *dst);
|
|
|
|
|
|
|
|
void prepare_alpha(void);
|
|
|
|
|
2010-08-29 07:10:58 -05:00
|
|
|
void draw_image(pixel *vid, pixel *img, int x, int y, int w, int h, int a);
|
|
|
|
|
|
|
|
void dim_copy(pixel *dst, pixel *src);
|
|
|
|
|
|
|
|
void render_zoom(pixel *img);
|
|
|
|
|
2010-09-01 05:40:29 -05:00
|
|
|
pixel *prerender_save(void *save, int size, int *width, int *height);
|
|
|
|
|
|
|
|
int render_thumb(void *thumb, int size, int bzip2, pixel *vid_buf, int px, int py, int scl);
|
|
|
|
|
|
|
|
void render_cursor(pixel *vid, int x, int y, int t, int r);
|
|
|
|
|
|
|
|
void sdl_open(void);
|
|
|
|
|
2010-09-01 08:49:45 -05:00
|
|
|
#ifdef OpenGL
|
|
|
|
void Enable2D ();
|
|
|
|
void RenderScene ();
|
|
|
|
void ClearScreen();
|
|
|
|
#endif
|
|
|
|
|
2010-09-03 09:05:09 -05:00
|
|
|
#endif
|