1*d734a8ceSbeveloper /****************************************************************************** 2*d734a8ceSbeveloper / 3*d734a8ceSbeveloper / File: GraphicsCard.h 4*d734a8ceSbeveloper / 5*d734a8ceSbeveloper / Description: App Server interface for graphics card add-ons. 6*d734a8ceSbeveloper / 7*d734a8ceSbeveloper / Copyright 1993-98, Be Incorporated 8*d734a8ceSbeveloper / 9*d734a8ceSbeveloper *******************************************************************************/ 10*d734a8ceSbeveloper 11*d734a8ceSbeveloper #ifndef _GRAPHICS_CARD_H 12*d734a8ceSbeveloper #define _GRAPHICS_CARD_H 13*d734a8ceSbeveloper 14*d734a8ceSbeveloper #include <BeBuild.h> 15*d734a8ceSbeveloper #include <GraphicsDefs.h> 16*d734a8ceSbeveloper #include <SupportDefs.h> 17*d734a8ceSbeveloper 18*d734a8ceSbeveloper /*-------------------------------------------------------------*/ 19*d734a8ceSbeveloper /*----- Command Constants -------------------------------------*/ 20*d734a8ceSbeveloper 21*d734a8ceSbeveloper enum { 22*d734a8ceSbeveloper B_OPEN_GRAPHICS_CARD, 23*d734a8ceSbeveloper B_CLOSE_GRAPHICS_CARD, 24*d734a8ceSbeveloper B_GET_GRAPHICS_CARD_INFO, 25*d734a8ceSbeveloper B_GET_GRAPHICS_CARD_HOOKS, 26*d734a8ceSbeveloper B_SET_INDEXED_COLOR, 27*d734a8ceSbeveloper B_GET_SCREEN_SPACES, 28*d734a8ceSbeveloper B_CONFIG_GRAPHICS_CARD, 29*d734a8ceSbeveloper B_GET_REFRESH_RATES, 30*d734a8ceSbeveloper B_SET_SCREEN_GAMMA, 31*d734a8ceSbeveloper 32*d734a8ceSbeveloper B_GET_INFO_FOR_CLONE_SIZE, 33*d734a8ceSbeveloper B_GET_INFO_FOR_CLONE, 34*d734a8ceSbeveloper B_SET_CLONED_GRAPHICS_CARD, 35*d734a8ceSbeveloper B_CLOSE_CLONED_GRAPHICS_CARD, 36*d734a8ceSbeveloper B_PROPOSE_FRAME_BUFFER, 37*d734a8ceSbeveloper B_SET_FRAME_BUFFER, 38*d734a8ceSbeveloper B_SET_DISPLAY_AREA, 39*d734a8ceSbeveloper B_MOVE_DISPLAY_AREA} 40*d734a8ceSbeveloper ; 41*d734a8ceSbeveloper 42*d734a8ceSbeveloper /*----- Optional ---------------*/ 43*d734a8ceSbeveloper 44*d734a8ceSbeveloper enum { 45*d734a8ceSbeveloper B_CRT_CONTROL = 0x0001, 46*d734a8ceSbeveloper B_GAMMA_CONTROL = 0x0002, 47*d734a8ceSbeveloper B_FRAME_BUFFER_CONTROL = 0x0004, 48*d734a8ceSbeveloper B_PARALLEL_BUFFER_ACCESS = 0x0008, 49*d734a8ceSbeveloper B_LAME_ASS_CARD = 0x0010 50*d734a8ceSbeveloper }; 51*d734a8ceSbeveloper 52*d734a8ceSbeveloper /*-------------------------------------------------------------*/ 53*d734a8ceSbeveloper /*----- Structures --------------------------------------------*/ 54*d734a8ceSbeveloper 55*d734a8ceSbeveloper typedef struct { 56*d734a8ceSbeveloper int16 version; 57*d734a8ceSbeveloper int16 id; 58*d734a8ceSbeveloper void *frame_buffer; 59*d734a8ceSbeveloper char rgba_order[4]; 60*d734a8ceSbeveloper int16 flags; 61*d734a8ceSbeveloper int16 bits_per_pixel; 62*d734a8ceSbeveloper int16 bytes_per_row; 63*d734a8ceSbeveloper int16 width; 64*d734a8ceSbeveloper int16 height; 65*d734a8ceSbeveloper } graphics_card_info; 66*d734a8ceSbeveloper 67*d734a8ceSbeveloper 68*d734a8ceSbeveloper typedef struct { 69*d734a8ceSbeveloper int32 index; 70*d734a8ceSbeveloper rgb_color color; 71*d734a8ceSbeveloper } indexed_color; 72*d734a8ceSbeveloper 73*d734a8ceSbeveloper 74*d734a8ceSbeveloper typedef struct { 75*d734a8ceSbeveloper uint32 space; 76*d734a8ceSbeveloper float refresh_rate; 77*d734a8ceSbeveloper uchar h_position; 78*d734a8ceSbeveloper uchar v_position; 79*d734a8ceSbeveloper uchar h_size; 80*d734a8ceSbeveloper uchar v_size; 81*d734a8ceSbeveloper } graphics_card_config; 82*d734a8ceSbeveloper 83*d734a8ceSbeveloper 84*d734a8ceSbeveloper typedef struct { 85*d734a8ceSbeveloper float min; 86*d734a8ceSbeveloper float max; 87*d734a8ceSbeveloper float current; 88*d734a8ceSbeveloper } refresh_rate_info; 89*d734a8ceSbeveloper 90*d734a8ceSbeveloper 91*d734a8ceSbeveloper typedef struct { 92*d734a8ceSbeveloper void *screen_base; 93*d734a8ceSbeveloper void *io_base; 94*d734a8ceSbeveloper uint32 vendor_id; 95*d734a8ceSbeveloper uint32 device_id; 96*d734a8ceSbeveloper uint32 _reserved1_; 97*d734a8ceSbeveloper uint32 _reserved2_; 98*d734a8ceSbeveloper } graphics_card_spec; 99*d734a8ceSbeveloper 100*d734a8ceSbeveloper 101*d734a8ceSbeveloper typedef struct { 102*d734a8ceSbeveloper int16 x1; 103*d734a8ceSbeveloper int16 y1; 104*d734a8ceSbeveloper int16 x2; 105*d734a8ceSbeveloper int16 y2; 106*d734a8ceSbeveloper rgb_color color; 107*d734a8ceSbeveloper } rgb_color_line; 108*d734a8ceSbeveloper 109*d734a8ceSbeveloper 110*d734a8ceSbeveloper typedef struct { 111*d734a8ceSbeveloper int16 x1; 112*d734a8ceSbeveloper int16 y1; 113*d734a8ceSbeveloper int16 x2; 114*d734a8ceSbeveloper int16 y2; 115*d734a8ceSbeveloper uchar color; 116*d734a8ceSbeveloper } indexed_color_line; 117*d734a8ceSbeveloper 118*d734a8ceSbeveloper 119*d734a8ceSbeveloper typedef struct { 120*d734a8ceSbeveloper int16 bits_per_pixel; 121*d734a8ceSbeveloper int16 bytes_per_row; 122*d734a8ceSbeveloper int16 width; 123*d734a8ceSbeveloper int16 height; 124*d734a8ceSbeveloper int16 display_width; 125*d734a8ceSbeveloper int16 display_height; 126*d734a8ceSbeveloper int16 display_x; 127*d734a8ceSbeveloper int16 display_y; 128*d734a8ceSbeveloper } frame_buffer_info; 129*d734a8ceSbeveloper 130*d734a8ceSbeveloper 131*d734a8ceSbeveloper typedef struct { 132*d734a8ceSbeveloper uchar red[256]; 133*d734a8ceSbeveloper uchar green[256]; 134*d734a8ceSbeveloper uchar blue[256]; 135*d734a8ceSbeveloper } screen_gamma; 136*d734a8ceSbeveloper 137*d734a8ceSbeveloper 138*d734a8ceSbeveloper /*-------------------------------------------------------------*/ 139*d734a8ceSbeveloper /*----- Hook Function -----------------------------------------*/ 140*d734a8ceSbeveloper 141*d734a8ceSbeveloper typedef void (*graphics_card_hook) (); 142*d734a8ceSbeveloper 143*d734a8ceSbeveloper #define B_GRAPHICS_HOOK_COUNT 48 144*d734a8ceSbeveloper 145*d734a8ceSbeveloper 146*d734a8ceSbeveloper #ifdef __cplusplus 147*d734a8ceSbeveloper extern "C" { 148*d734a8ceSbeveloper #endif 149*d734a8ceSbeveloper 150*d734a8ceSbeveloper _EXPORT int32 control_graphics_card(uint32, void*); 151*d734a8ceSbeveloper 152*d734a8ceSbeveloper #ifdef __cplusplus 153*d734a8ceSbeveloper } 154*d734a8ceSbeveloper #endif 155*d734a8ceSbeveloper 156*d734a8ceSbeveloper 157*d734a8ceSbeveloper /*-------------------------------------------------------------*/ 158*d734a8ceSbeveloper /*----- Debugging Functions ------------------------------------*/ 159*d734a8ceSbeveloper 160*d734a8ceSbeveloper #ifdef __cplusplus 161*d734a8ceSbeveloper extern "C" { 162*d734a8ceSbeveloper #endif 163*d734a8ceSbeveloper 164*d734a8ceSbeveloper void dprintf(const char *format, ...); 165*d734a8ceSbeveloper bool set_dprintf_enabled(bool); /* returns old enable flag */ 166*d734a8ceSbeveloper 167*d734a8ceSbeveloper #ifdef __cplusplus 168*d734a8ceSbeveloper } 169*d734a8ceSbeveloper #endif 170*d734a8ceSbeveloper 171*d734a8ceSbeveloper 172*d734a8ceSbeveloper /*-------------------------------------------------------------*/ 173*d734a8ceSbeveloper /*----- Obsolete ---------------------------------------------*/ 174*d734a8ceSbeveloper #define B_HOOK_COUNT B_GRAPHICS_HOOK_COUNT 175*d734a8ceSbeveloper 176*d734a8ceSbeveloper 177*d734a8ceSbeveloper /*-------------------------------------------------------------*/ 178*d734a8ceSbeveloper /*-------------------------------------------------------------*/ 179*d734a8ceSbeveloper 180*d734a8ceSbeveloper #endif /* _GRAPHICS_CARD_H */ 181*d734a8ceSbeveloper 182*d734a8ceSbeveloper 183*d734a8ceSbeveloper 184*d734a8ceSbeveloper 185*d734a8ceSbeveloper 186*d734a8ceSbeveloper 187*d734a8ceSbeveloper 188*d734a8ceSbeveloper 189