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