00001 #ifndef gf_included_allglint_h
00002 #define gf_included_allglint_h
00003
00004 #include "alleggl.h"
00005
00006
00007 struct allegro_gl_info {
00008 float version;
00009 int num_texture_units;
00010 int max_texture_size;
00011 int is_voodoo3_and_under;
00012 int is_voodoo;
00013 int is_matrox_g200;
00014 int is_ati_rage_pro;
00015 int is_ati_radeon_7000;
00016 int is_ati_r200_chip;
00017 int is_mesa_driver;
00018 };
00019
00020
00021
00022 struct allegro_gl_driver {
00023 void (*flip) (void);
00024 void (*gl_on) (void);
00025 void (*gl_off) (void);
00026 void (*screen_masked_blit)(struct BITMAP *source, int source_x,
00027 int source_y, int dest_x, int dest_y,
00028 int width, int height, int flip_dir,
00029 int blit_type);
00030 };
00031
00032
00033
00034 struct allegro_gl_rgba_size {
00035 int r, g, b, a;
00036 };
00037
00038
00039
00040 struct allegro_gl_indexed_size {
00041 int bpp;
00042 };
00043
00044
00045
00046 union allegro_gl_pixel_size {
00047 struct allegro_gl_rgba_size rgba;
00048 struct allegro_gl_indexed_size indexed;
00049 };
00050
00051
00052
00053 struct allegro_gl_display_info {
00054 int allegro_format;
00055 union allegro_gl_pixel_size pixel_size;
00056 int colour_depth;
00057 union allegro_gl_pixel_size accum_size;
00058 int doublebuffered;
00059 int stereo;
00060 int aux_buffers;
00061 int depth_size;
00062 int stencil_size;
00063 int w, h, x, y;
00064 int r_shift, g_shift, b_shift, a_shift;
00065 int packed_pixel_type, packed_pixel_format;
00066 int rmethod;
00067 int fullscreen;
00068 int vidmem_policy;
00069 int sample_buffers;
00070 int samples;
00071 int float_color;
00072 int float_depth;
00073 };
00074
00075 extern struct allegro_gl_display_info allegro_gl_display_info;
00076 extern struct allegro_gl_driver *__allegro_gl_driver;
00077 extern struct allegro_gl_info allegro_gl_info;
00078 extern int __allegro_gl_required_settings, __allegro_gl_suggested_settings;
00079 extern int __allegro_gl_valid_context;
00080 extern int __allegro_gl_use_alpha;
00081 extern GLint __allegro_gl_texture_read_format[5];
00082 extern GLint __allegro_gl_texture_components[5];
00083
00084 #ifdef ALLEGRO_WINDOWS
00085 extern HDC __allegro_gl_hdc;
00086 #endif
00087
00088 int __allegro_gl_make_power_of_2(int x);
00089
00090 void __allegro_gl_reset_scorer (void);
00091 int __allegro_gl_score_config (int refnum, struct allegro_gl_display_info *dinfo);
00092 int __allegro_gl_best_config (void);
00093
00094 void __allegro_gl_set_allegro_image_format (int big_endian);
00095
00096 void __allegro_gl_fill_in_info(void);
00097
00098 void __allegro_gl_manage_extensions(void);
00099 void __allegro_gl_unmanage_extensions(void);
00100 void __allegro_gl_print_extensions(const char * extension);
00101 int __allegro_gl_look_for_an_extension(AL_CONST char *name,
00102 AL_CONST GLubyte * extensions);
00103
00104
00105 extern _DRIVER_INFO *(*saved_gfx_drivers) (void);
00106
00107 typedef void (* BLIT_BETWEEN_FORMATS_FUNC) (struct BITMAP*, struct BITMAP*, int, int, int, int, int, int);
00108 extern BLIT_BETWEEN_FORMATS_FUNC __blit_between_formats8;
00109 extern BLIT_BETWEEN_FORMATS_FUNC __blit_between_formats15;
00110 extern BLIT_BETWEEN_FORMATS_FUNC __blit_between_formats16;
00111 extern BLIT_BETWEEN_FORMATS_FUNC __blit_between_formats24;
00112 extern BLIT_BETWEEN_FORMATS_FUNC __blit_between_formats32;
00113
00114 void allegro_gl_memory_blit_between_formats(struct BITMAP *source, struct BITMAP *dest, int source_x, int source_y, int dest_x, int dest_y, int width, int height);
00115
00116 int allegro_gl_set_mouse_sprite(BITMAP *sprite, int xfocus, int yfocus);
00117 int allegro_gl_show_mouse(BITMAP* bmp, int x, int y);
00118 void allegro_gl_hide_mouse(void);
00119 void allegro_gl_move_mouse(int x, int y);
00120
00121
00122 extern char const *__allegro_gl_get_format_description(GLint format);
00123 extern int __allegro_gl_get_num_channels(GLenum format);
00124 extern GLenum __allegro_gl_get_bitmap_type(BITMAP *bmp, int flags);
00125 extern GLenum __allegro_gl_get_bitmap_color_format(BITMAP *bmp, int flags);
00126 extern GLint __allegro_gl_get_texture_format_ex(BITMAP *bmp, int flags);
00127 extern BITMAP *__allegro_gl_munge_bitmap(int flags, BITMAP *bmp, int x, int y,
00128 int w, int h, GLint *type, GLint *format);
00129
00130 extern int __allegro_gl_blit_operation;
00131
00132
00136 typedef struct AGL_GLYPH {
00137 int glyph_num;
00138 int x, y, w, h;
00139 int offset_x, offset_y, offset_w, offset_h;
00140 } AGL_GLYPH;
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00160 typedef struct FONT_AGL_DATA {
00161 int type;
00162 int start, end;
00163 int is_free_chunk;
00164
00165 float scale;
00166 GLint format;
00167
00168 void *data;
00169 AGL_GLYPH *glyph_coords;
00170 GLuint list_base;
00171 GLuint texture;
00172
00173 struct FONT_AGL_DATA *next;
00174
00175 int has_alpha;
00176 } FONT_AGL_DATA;
00177
00178 extern struct FONT_VTABLE *font_vtable_agl;
00179
00180
00185 #define AGL_TEXTURE_FORCE_ALPHA_INTERNAL 0x80000000
00186
00190 #define AGL_TEXTURE_CHECK_VALID_INTERNAL 0x40000000
00191
00192
00193 #define AGL_OP_LOGIC_OP 0x0
00194 #define AGL_OP_BLEND 0x1
00195
00196 #define AGL_H_FLIP 1
00197 #define AGL_V_FLIP 2
00198 #define AGL_REGULAR_BMP 1
00199
00200
00201 #define AGL_NO_ROTATION 2
00202
00203
00204
00205
00206
00207 #define AGL_LOG(level,str)
00208
00209 #ifdef DEBUGMODE
00210 #ifdef LOGLEVEL
00211
00212 void __allegro_gl_log (int level, const char *str);
00213 #undef AGL_LOG
00214 #define AGL_LOG(level,str) __allegro_gl_log (level, str)
00215
00216
00217 #endif
00218 #endif
00219
00220
00221 #define GET_ALLEGRO_VERSION() MAKE_VER(ALLEGRO_VERSION, ALLEGRO_SUB_VERSION, \
00222 ALLEGRO_WIP_VERSION)
00223 #define MAKE_VER(a, b, c) (((a) << 16) | ((b) << 8) | (c))
00224
00225
00226 #endif
00227