FreeBASIC  0.91.0
fb_gfx.h
Go to the documentation of this file.
1 /* internal gfx definitions */
2 
3 #ifndef __FB_GFX_H__
4 #define __FB_GFX_H__
5 
6 #include "../rtlib/fb.h"
7 
8 #ifdef HOST_DOS
9  /* No OpenGL support on DOS */
10  #define DISABLE_OPENGL
11 #endif
12 
13 #define PI 3.1415926535897932384626
14 
15 #define BYTES_PER_PIXEL(d) (((d) + 7) / 8)
16 #define BPP_MASK(b) ((int)((1LL << ((b) << 3)) - 1))
17 
18 #define DRIVER_LOCK() do { fb_GfxLock(); } while (0)
19 #define DRIVER_UNLOCK() do { fb_GfxUnlock(1, 0); } while (0) /* start_line > end_line so dirty is not modified */
20 #define SET_DIRTY(c,y,h) { if (__fb_gfx->framebuffer == (c)->line[0]) fb_hMemSet(__fb_gfx->dirty + (y), TRUE, (h)); }
21 
22 #define EVENT_LOCK() { fb_MutexLock(__fb_gfx->event_mutex); }
23 #define EVENT_UNLOCK() { fb_MutexUnlock(__fb_gfx->event_mutex); }
24 
25 #define DRIVER_NULL -1
26 #define DRIVER_FULLSCREEN 0x00000001
27 #define DRIVER_OPENGL 0x00000002
28 #define DRIVER_NO_SWITCH 0x00000004
29 #define DRIVER_NO_FRAME 0x00000008
30 #define DRIVER_SHAPED_WINDOW 0x00000010
31 #define DRIVER_ALWAYS_ON_TOP 0x00000020
32 #define DRIVER_ALPHA_PRIMITIVES 0x00000040
33 #define DRIVER_HIGH_PRIORITY 0x00000080
34 #define DRIVER_OPENGL_OPTIONS 0x000F0000
35 #define HAS_STENCIL_BUFFER 0x00010000
36 #define HAS_ACCUMULATION_BUFFER 0x00020000
37 #define HAS_MULTISAMPLE 0x00040000
38 
39 #define HAS_MMX 0x01000000
40 #define SCREEN_EXIT 0x80000000
41 #define PRINT_SCROLL_WAS_OFF 0x00000004
42 #define ALPHA_PRIMITIVES 0x00000008
43 #define OPENGL_PRIMITIVES 0x00000010
44 #define HIGH_PRIORITY 0x00000020
45 #define QB_COMPATIBILITY 0x10000000
46 #define OPENGL_SUPPORT 0x20000000
47 
48 #define CTX_BUFFER_INIT 0x00000001
49 #define CTX_BUFFER_SET 0x00000002
50 #define CTX_WINDOW_ACTIVE 0x00000004
51 #define CTX_WINDOW_SCREEN 0x00000008
52 #define CTX_VIEWPORT_SET 0x00000010
53 #define CTX_VIEW_SCREEN 0x00000020
54 
55 #define COORD_TYPE_AA 0
56 #define COORD_TYPE_AR 1
57 #define COORD_TYPE_RA 2
58 #define COORD_TYPE_RR 3
59 #define COORD_TYPE_A 4
60 #define COORD_TYPE_R 5
61 #define COORD_TYPE_MASK 0x00000007
62 #define DEFAULT_COLOR_1 0x80000000
63 #define DEFAULT_COLOR_2 0x40000000
64 #define VIEW_SCREEN 0x00000001
65 
66 #define LINE_TYPE_LINE 0
67 #define LINE_TYPE_B 1
68 #define LINE_TYPE_BF 2
69 
70 #define PAINT_TYPE_FILL 0
71 #define PAINT_TYPE_PATTERN 1
72 
73 #define MASK_COLOR_32 0xFF00FF
74 #define MASK_COLOR_16 0xF81F
75 
76 #define MASK_RB_32 0x00FF00FF
77 #define MASK_G_32 0x0000FF00
78 #define MASK_GA_32 0xFF00FF00
79 #define MASK_A_32 0xFF000000
80 
81 #define MASK_RB_16 0xF81F
82 #define MASK_R_16 0xF800
83 #define MASK_G_16 0x07E0
84 #define MASK_B_16 0x001F
85 
86 #define PUT_HEADER_NEW 0x7
87 
88 #define PUT_MODE_TRANS 0
89 #define PUT_MODE_PSET 1
90 #define PUT_MODE_PRESET 2
91 #define PUT_MODE_AND 3
92 #define PUT_MODE_OR 4
93 #define PUT_MODE_XOR 5
94 #define PUT_MODE_ALPHA 6
95 #define PUT_MODE_ADD 7
96 #define PUT_MODE_CUSTOM 8
97 #define PUT_MODE_BLEND 9
98 #define PUT_MODES 10
99 
100 #define WINDOW_TITLE_SIZE 128
101 
102 #define EVENT_KEY_PRESS 1
103 #define EVENT_KEY_RELEASE 2
104 #define EVENT_KEY_REPEAT 3
105 #define EVENT_MOUSE_MOVE 4
106 #define EVENT_MOUSE_BUTTON_PRESS 5
107 #define EVENT_MOUSE_BUTTON_RELEASE 6
108 #define EVENT_MOUSE_DOUBLE_CLICK 7
109 #define EVENT_MOUSE_WHEEL 8
110 #define EVENT_MOUSE_ENTER 9
111 #define EVENT_MOUSE_EXIT 10
112 #define EVENT_WINDOW_GOT_FOCUS 11
113 #define EVENT_WINDOW_LOST_FOCUS 12
114 #define EVENT_WINDOW_CLOSE 13
115 #define EVENT_MOUSE_HWHEEL 14
116 
117 #define MAX_EVENTS 128
118 
119 #define BUTTON_LEFT 0x1
120 #define BUTTON_RIGHT 0x2
121 #define BUTTON_MIDDLE 0x4
122 #define BUTTON_X1 0x8
123 #define BUTTON_X2 0x10
124 
125 #define GET_WINDOW_POS 0
126 #define GET_WINDOW_TITLE 1
127 #define GET_WINDOW_HANDLE 2
128 #define GET_DESKTOP_SIZE 3
129 #define GET_SCREEN_SIZE 4
130 #define GET_SCREEN_DEPTH 5
131 #define GET_SCREEN_BPP 6
132 #define GET_SCREEN_PITCH 7
133 #define GET_SCREEN_REFRESH 8
134 #define GET_DRIVER_NAME 9
135 #define GET_TRANSPARENT_COLOR 10
136 #define GET_VIEWPORT 11
137 #define GET_PEN_POS 12
138 #define GET_COLOR 13
139 #define GET_ALPHA_PRIMITIVES 14
140 #define GET_GL_EXTENSIONS 15
141 #define GET_HIGH_PRIORITY 16
142 
143 #define SET_FIRST_SETTER 100
144 #define SET_WINDOW_POS 100
145 #define SET_WINDOW_TITLE 101
146 #define SET_PEN_POS 102
147 #define SET_DRIVER_NAME 103
148 #define SET_ALPHA_PRIMITIVES 104
149 #define SET_GL_COLOR_BITS 105
150 #define SET_GL_COLOR_RED_BITS 106
151 #define SET_GL_COLOR_GREEN_BITS 107
152 #define SET_GL_COLOR_BLUE_BITS 108
153 #define SET_GL_COLOR_ALPHA_BITS 109
154 #define SET_GL_DEPTH_BITS 110
155 #define SET_GL_STENCIL_BITS 111
156 #define SET_GL_ACCUM_BITS 112
157 #define SET_GL_ACCUM_RED_BITS 113
158 #define SET_GL_ACCUM_GREEN_BITS 114
159 #define SET_GL_ACCUM_BLUE_BITS 115
160 #define SET_GL_ACCUM_ALPHA_BITS 116
161 #define SET_GL_NUM_SAMPLES 117
162 
163 #define POLL_EVENTS 200
164 
165 typedef void (BLITTER)(unsigned char *, int);
166 typedef FBCALL unsigned int (BLENDER)(unsigned int, unsigned int, void *);
167 typedef void (PUTTER)(unsigned char *, unsigned char *, int, int, int, int, int, BLENDER *, void *);
168 
169 typedef struct _GFX_CHAR_CELL {
171  unsigned fg, bg;
172 } GFX_CHAR_CELL;
173 
174 struct _EVENT {
175  int type;
176  union {
177  struct { /* keyboard events */
178  int scancode;
179  int ascii;
180  };
181  struct { /* mouse events */
182  int x, y;
183  int dx, dy;
184  };
185  int button;
186  int z;
187  int w;
188  };
189 } FBPACKED;
190 
191 typedef struct _EVENT EVENT;
192 
193 typedef struct FB_GFXCTX {
194  int id;
196  unsigned char **line;
197  int max_h;
200  void *last_target;
201  float last_x, last_y;
202  union {
203  struct {
205  };
206  int view[4];
207  };
208  union {
209  struct {
211  };
212  int old_view[4];
213  };
214  float win_x, win_y, win_w, win_h;
215  unsigned int fg_color, bg_color;
216  void (*put_pixel)(struct FB_GFXCTX *ctx, int x, int y, unsigned int color);
217  unsigned int (*get_pixel)(struct FB_GFXCTX *ctx, int x, int y);
218  void *(*pixel_set)(void *dest, int color, size_t size);
220  int flags;
221 } FB_GFXCTX;
222 
223 typedef struct FBGFX
224 {
225  int id;
226  int mode_num;
227  unsigned char **page;
228  int num_pages;
230  unsigned char *framebuffer;
231  int w, h;
232  int depth;
233  int bpp;
234  int pitch;
235  unsigned int *palette;
236  unsigned int *device_palette;
237  unsigned char *color_association;
238  char *dirty;
239  const struct GFXDRIVER *driver;
241  const struct PALETTE *default_palette;
244  const struct FONT *font;
245  int text_w, text_h;
246  float aspect;
247  char *key;
253  volatile int flags;
255 } FBGFX;
256 
257 typedef struct GFXDRIVER
258 {
267  char *name;
268 
287  int (*init)(char *title, int w, int h, int depth, int refresh_rate, int flags);
288 
301  void (*exit)(void);
302 
310  void (*lock)(void);
311 
318  void (*unlock)(void);
319 
327  void (*set_palette)(int index, int r, int g, int b);
328 
337  void (*wait_vsync)(void);
338 
353  int (*get_mouse)(int *x, int *y, int *z, int *buttons, int *clip);
354 
364  void (*set_mouse)(int x, int y, int cursor, int clip);
365 
372  void (*set_window_title)(char *title);
373 
380  int (*set_window_pos)(int x, int y);
381 
393  int *(*fetch_modes)(int depth, int *size);
394 
400  void (*flip)(void);
401 
407  void (*poll_events)(void);
408 } GFXDRIVER;
409 
410 typedef struct PALETTE
411 {
412  const int colors;
413  const unsigned char *data;
414 } PALETTE;
415 
416 typedef struct FONT
417 {
418  const int w;
419  const int h;
420  const unsigned char *data;
421 } FONT;
422 
423 struct _PUT_HEADER {
424  union {
425  struct {
426  unsigned short bpp:3;
427  unsigned short width:13;
428  unsigned short height;
429  } old;
430  unsigned int type;
431  };
432  int bpp;
433  unsigned int width;
434  unsigned int height;
435  unsigned int pitch;
436  unsigned int tex;
437  char _reserved[8];
438  unsigned char data[0];
439 } FBPACKED;
440 typedef struct _PUT_HEADER PUT_HEADER;
441 
442 /* Global variables */
443 extern FBGFX *__fb_gfx;
444 extern char *__fb_gfx_driver_name;
445 extern const GFXDRIVER *__fb_gfx_drivers_list[];
446 extern const GFXDRIVER __fb_gfxDriverNull;
447 extern void *(*fb_hMemCpy)(void *dest, const void *src, size_t size);
448 extern void *(*fb_hMemSet)(void *dest, int value, size_t size);
449 extern void *(*fb_hPixelCpy)(void *dest, const void *src, size_t size);
450 extern void *(*fb_hPixelSet)(void *dest, int color, size_t size);
451 extern unsigned int *__fb_color_conv_16to32;
452 extern char *__fb_window_title;
453 
454 /* must match data.c */
455 enum {
460 };
461 
462 /* must match data.c */
463 enum {
469 };
470 
471 extern const FONT __fb_font[FB_FONT_COUNT];
473 
474 /* Internal functions */
475 extern FB_GFXCTX *fb_hGetContext(void);
476 extern void fb_hSetupFuncs(int bpp);
477 extern void fb_hSetupData(void);
478 extern FBCALL int fb_hEncode(const unsigned char *in_buffer, ssize_t in_size, unsigned char *out_buffer, ssize_t *out_size);
479 extern FBCALL int fb_hDecode(const unsigned char *in_buffer, ssize_t in_size, unsigned char *out_buffer, ssize_t *out_size);
480 extern void fb_hPostEvent(EVENT *e);
481 extern void fb_hPostKey(int key);
482 extern BLITTER *fb_hGetBlitter(int device_depth, int is_rgb);
483 extern unsigned int fb_hMakeColor(int bpp, unsigned int index, int r, int g, int b);
484 extern unsigned int fb_hFixColor(int bpp, unsigned int color);
485 extern void fb_hRestorePalette(void);
486 extern void fb_hSetPaletteColorRgb(int index, int r, int g, int b);
487 extern void fb_hSetPaletteColor(int index, unsigned int color);
488 extern void fb_hPrepareTarget(FB_GFXCTX *ctx, void *target);
489 extern void fb_hSetPixelTransfer(FB_GFXCTX *ctx, unsigned int color);
490 extern void fb_hTranslateCoord(FB_GFXCTX *ctx, float fx, float fy, int *x, int *y);
491 extern void fb_hFixRelative(FB_GFXCTX *ctx, int coord_type, float *x1, float *y1, float *x2, float *y2);
492 extern void fb_hFixCoordsOrder(int *x1, int *y1, int *x2, int *y2);
493 extern void fb_hGfxBox(int x1, int y1, int x2, int y2, unsigned int color, int full, unsigned int style);
494 extern void fb_hScreenInfo(ssize_t *width, ssize_t *height, ssize_t *depth, ssize_t *refresh);
495 extern void *fb_hMemCpyMMX(void *dest, const void *src, size_t size);
496 extern void *fb_hMemSetMMX(void *dest, int value, size_t size);
497 extern void fb_hResetCharCells(FB_GFXCTX *context, int do_alloc);
498 extern void fb_hClearCharCells(int x1, int y1, int x2, int y2, int page, FB_WCHAR ch, unsigned fg, unsigned bg);
499 extern void fb_hSoftCursorInit(void);
500 extern void fb_hSoftCursorExit(void);
501 extern void fb_hSoftCursorPut(int x, int y);
502 extern void fb_hSoftCursorUnput(int x, int y);
503 extern void fb_hSoftCursorPaletteChanged(void);
504 extern int fb_hColorDistance(int index, int r, int g, int b);
505 extern void *fb_hPixelSetAlpha4(void *dest, int color, size_t size);
506 extern ssize_t fb_hGetWindowHandle(void);
507 
508 
509 /* Public API */
510 extern FBCALL int fb_GfxScreen(int mode, int depth, int num_pages, int flags, int refresh_rate);
511 extern FBCALL int fb_GfxScreenQB(int mode, int visible, int active);
512 extern FBCALL int fb_GfxScreenRes(int width, int height, int depth, int num_pages, int flags, int refresh_rate);
513 extern FBCALL void fb_GfxScreenInfo(ssize_t *width, ssize_t *height, ssize_t *depth, ssize_t *bpp, ssize_t *pitch, ssize_t *refresh_rate, FBSTRING *driver);
514 extern FBCALL int fb_GfxScreenList(int depth);
515 extern FBCALL void *fb_GfxImageCreate(int width, int height, unsigned int color, int depth, int flags);
516 extern FBCALL void *fb_GfxImageCreateQB(int width, int height, unsigned int color, int depth, int flags);
517 extern FBCALL void fb_GfxImageDestroy(void *image);
518 extern FBCALL int fb_GfxImageInfo(void *img, int *width, int *height, int *bpp, int *pitch, void **imgdata, int *size);
519 extern FBCALL void fb_GfxPalette(int index, int r, int g, int b);
520 extern FBCALL void fb_GfxPaletteUsing(int *data);
521 extern FBCALL void fb_GfxPaletteUsing64(long long *data);
522 extern FBCALL void fb_GfxPaletteGet(int index, int *r, int *g, int *b);
523 extern FBCALL void fb_GfxPaletteGet64(int index, long long *r, long long *g, long long *b);
524 extern FBCALL void fb_GfxPaletteGetUsing(int *data);
525 extern FBCALL void fb_GfxPaletteGetUsing64(long long *data);
526 extern FBCALL void fb_GfxPset(void *target, float x, float y, unsigned int color, int coord_type, int ispreset);
527 extern FBCALL int fb_GfxPoint(void *target, float x, float y);
528 extern FBCALL float fb_GfxPMap(float coord, int func);
529 extern FBCALL float fb_GfxCursor(int func);
530 extern FBCALL void fb_GfxView(int x1, int y1, int x2, int y2, unsigned int fill_color, unsigned int border_color, int screen);
531 extern FBCALL void fb_GfxWindow(float x1, float y1, float x2, float y2, int screen);
532 extern FBCALL void fb_GfxLine(void *target, float x1, float y1, float x2, float y2, unsigned int color, int type, unsigned int style, int coord_type);
533 extern FBCALL void fb_GfxEllipse(void *target, float x, float y, float radius, unsigned int color, float aspect, float start, float end, int fill, int coord_type);
534 extern FBCALL int fb_GfxGet(void *target, float x1, float y1, float x2, float y2, unsigned char *dest, int coord_type, FBARRAY *array);
535 extern FBCALL int fb_GfxGetQB(void *target, float x1, float y1, float x2, float y2, unsigned char *dest, int coord_type, FBARRAY *array);
536 extern FBCALL int fb_GfxPut(void *target, float x, float y, unsigned char *src, int x1, int y1, int x2, int y2, int coord_type, int mode, PUTTER *putter, int alpha, BLENDER *blender, void *param);
537 extern FBCALL int fb_GfxWaitVSync(void);
538 extern FBCALL void fb_GfxPaint(void *target, float fx, float fy, unsigned int color, unsigned int border_color, FBSTRING *pattern, int mode, int coord_type);
539 extern FBCALL void fb_GfxDraw(void *target, FBSTRING *command);
540 extern FBCALL int fb_GfxDrawString(void *target, float fx, float fy, int coord_type, FBSTRING *string, unsigned int color, void *font, int mode, PUTTER *putter, BLENDER *blender, void *param);
541 extern FBCALL int fb_GfxFlip(int from_page, int to_page);
542 extern FBCALL void fb_GfxLock(void);
543 extern FBCALL void fb_GfxUnlock(int start_line, int end_line);
544 extern FBCALL void *fb_GfxScreenPtr(void);
545 extern FBCALL void fb_GfxSetWindowTitle(FBSTRING *title);
546 extern FBCALL int fb_GfxGetJoystick(int id, ssize_t *buttons, float *a1, float *a2, float *a3, float *a4, float *a5, float *a6, float *a7, float *a8);
547 extern FBCALL int fb_GfxEvent(EVENT *event);
548 extern FBCALL void fb_GfxControl_s(int what, FBSTRING *param);
549 extern FBCALL void fb_GfxControl_i(int what, ssize_t *param1, ssize_t *param2, ssize_t *param3, ssize_t *param4);
550 extern FBCALL int fb_GfxBload(FBSTRING *filename, void *dest, void *pal);
551 extern FBCALL int fb_GfxBloadQB(FBSTRING *filename, void *dest, void *pal);
552 extern FBCALL int fb_GfxBsave(FBSTRING *filename, void *src, unsigned int size, void *pal);
553 extern FBCALL int fb_GfxBsaveEx(FBSTRING *filename, void *src, unsigned int size, void *pal, int bitsperpixel);
554 extern FBCALL void *fb_GfxGetGLProcAddress(const char *proc);
555 
556 /* Public API - QB compatibility */
557 extern FBCALL int fb_GfxStickQB( int n );
558 extern FBCALL int fb_GfxStrigQB( int n );
559 
560 
561 /* Runtime library hooks */
562 int fb_GfxGetkey(void);
563 FBSTRING *fb_GfxInkey(void);
564 int fb_GfxKeyHit(void);
565 int fb_GfxColor(int fg_color, int bg_color, int flags);
566 void fb_GfxClear(int mode);
567 int fb_GfxWidth(int w, int h);
568 int fb_GfxLocateRaw(int y, int x, int cursor);
569 int fb_GfxLocate(int y, int x, int cursor);
570 int fb_GfxGetX(void);
571 int fb_GfxGetY(void);
572 void fb_GfxGetXY(int *col, int *row);
573 void fb_GfxGetSize(int *cols, int *rows);
574 void fb_GfxPrintBuffer(const char *buffer, int mask);
575 void fb_GfxPrintBufferWstr(const FB_WCHAR *buffer, int mask);
576 void fb_GfxPrintBufferEx(const void *buffer, size_t len, int mask);
577 void fb_GfxPrintBufferWstrEx(const FB_WCHAR *buffer, size_t len, int mask);
578 char *fb_GfxReadStr(char *buffer, ssize_t maxlen);
579 int fb_GfxMultikey(int scancode);
580 int fb_GfxGetMouse(int *x, int *y, int *z, int *buttons, int *clip);
581 int fb_GfxSetMouse(int x, int y, int cursor, int clip);
582 int fb_GfxOut(unsigned short port, unsigned char value);
583 int fb_GfxIn(unsigned short port);
584 int fb_GfxLineInput( FBSTRING *text, void *dst, ssize_t dst_len, int fillrem, int addquestion, int addnewline );
585 int fb_GfxLineInputWstr( const FB_WCHAR *text, FB_WCHAR *dst, ssize_t max_chars, int addquestion, int addnewline );
586 unsigned int fb_GfxReadXY( int col, int row, int colorflag );
587 void fb_GfxSleep( int msecs );
588 int fb_GfxIsRedir( int is_input );
589 int fb_GfxPageCopy(int from_page, int to_page);
590 int fb_GfxPageSet(int work_page, int visible_page);
591 
592 typedef void (*FBGFX_IMAGE_CONVERT)(const unsigned char *, unsigned char *, int);
593 
594 void fb_image_convert_8to8(const unsigned char *src, unsigned char *dest, int w);
595 void fb_image_convert_8to16(const unsigned char *src, unsigned char *dest, int w);
596 void fb_image_convert_8to32(const unsigned char *src, unsigned char *dest, int w);
597 void fb_image_convert_24to16(const unsigned char *src, unsigned char *dest, int w);
598 void fb_image_convert_24to32(const unsigned char *src, unsigned char *dest, int w);
599 void fb_image_convert_32to16(const unsigned char *src, unsigned char *dest, int w);
600 void fb_image_convert_32to32(const unsigned char *src, unsigned char *dest, int w);
601 void fb_image_convert_24bgrto16(const unsigned char *src, unsigned char *dest, int w);
602 void fb_image_convert_24bgrto32(const unsigned char *src, unsigned char *dest, int w);
603 void fb_image_convert_32bgrto16(const unsigned char *src, unsigned char *dest, int w);
604 void fb_image_convert_32bgrto32(const unsigned char *src, unsigned char *dest, int w);
605 
606 FBCALL void fb_GfxImageConvertRow( const unsigned char *src, int src_bpp, unsigned char *dest, int dst_bpp, int width, int isrgb );
607 
608 void fb_hPutTrans (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
609 void fb_hPutPSet (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
610 void fb_hPutPReset(unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
611 void fb_hPutAnd (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
612 void fb_hPutOr (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
613 void fb_hPutXor (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
614 void fb_hPutAlpha (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
615 void fb_hPutBlend (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
616 void fb_hPutAdd (unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
617 void fb_hPutCustom(unsigned char *src, unsigned char *dest, int w, int h, int src_pitch, int dest_pitch, int alpha, BLENDER *blender, void *param);
618 
621 #define FB_GFX_ACTIVE() \
622  (__fb_gfx!=NULL)
623 
630 #define FB_GFX_GET_CODEPAGE() \
631  437
632 
635 #define FB_GFX_GET_CHARSET() \
636  "CP437"
637 
638 #endif