1/* 2 * Copyright 2009, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _GRAPHICS_CARD_H 6#define _GRAPHICS_CARD_H 7 8 9#include <GraphicsDefs.h> 10 11 12/* #pragma mark - command constants */ 13enum { 14 B_OPEN_GRAPHICS_CARD, 15 B_CLOSE_GRAPHICS_CARD, 16 B_GET_GRAPHICS_CARD_INFO, 17 B_GET_GRAPHICS_CARD_HOOKS, 18 B_SET_INDEXED_COLOR, 19 B_GET_SCREEN_SPACES, 20 B_CONFIG_GRAPHICS_CARD, 21 B_GET_REFRESH_RATES, 22 B_SET_SCREEN_GAMMA, 23 24 B_GET_INFO_FOR_CLONE_SIZE, 25 B_GET_INFO_FOR_CLONE, 26 B_SET_CLONED_GRAPHICS_CARD, 27 B_CLOSE_CLONED_GRAPHICS_CARD, 28 B_PROPOSE_FRAME_BUFFER, 29 B_SET_FRAME_BUFFER, 30 B_SET_DISPLAY_AREA, 31 B_MOVE_DISPLAY_AREA 32}; 33 34/* #pragma mark - optional flags */ 35enum { 36 B_CRT_CONTROL = 0x0001, 37 B_GAMMA_CONTROL = 0x0002, 38 B_FRAME_BUFFER_CONTROL = 0x0004, 39 B_PARALLEL_BUFFER_ACCESS = 0x0008, 40 B_LAME_ASS_CARD = 0x0010 41}; 42 43 44/* #pragma mark - structures */ 45 46 47typedef struct { 48 int16 version; 49 int16 id; 50 void* frame_buffer; 51 char rgba_order[4]; 52 int16 flags; 53 int16 bits_per_pixel; 54 int16 bytes_per_row; 55 int16 width; 56 int16 height; 57} graphics_card_info; 58 59 60typedef struct { 61 int32 index; 62 rgb_color color; 63} indexed_color; 64 65 66typedef struct { 67 uint32 space; 68 float refresh_rate; 69 uchar h_position; 70 uchar v_position; 71 uchar h_size; 72 uchar v_size; 73} graphics_card_config; 74 75 76typedef struct { 77 float min; 78 float max; 79 float current; 80} refresh_rate_info; 81 82 83typedef struct { 84 void* screen_base; 85 void* io_base; 86 uint32 vendor_id; 87 uint32 device_id; 88 uint32 _reserved1_; 89 uint32 _reserved2_; 90} graphics_card_spec; 91 92 93typedef struct { 94 int16 x1; 95 int16 y1; 96 int16 x2; 97 int16 y2; 98 rgb_color color; 99} rgb_color_line; 100 101 102typedef struct { 103 int16 x1; 104 int16 y1; 105 int16 x2; 106 int16 y2; 107 uchar color; 108} indexed_color_line; 109 110 111typedef struct { 112 int16 bits_per_pixel; 113 int16 bytes_per_row; 114 int16 width; 115 int16 height; 116 int16 display_width; 117 int16 display_height; 118 int16 display_x; 119 int16 display_y; 120} frame_buffer_info; 121 122 123typedef struct { 124 uchar red[256]; 125 uchar green[256]; 126 uchar blue[256]; 127} screen_gamma; 128 129 130/* #pragma mark - hook function */ 131 132 133typedef void (*graphics_card_hook) (); 134 135#define B_GRAPHICS_HOOK_COUNT 48 136 137 138#ifdef __cplusplus 139extern "C" { 140#endif 141 142int32 control_graphics_card(uint32, void*); 143 144#ifdef __cplusplus 145} 146#endif 147 148 149/* #pragma mark - deprecated */ 150#define B_HOOK_COUNT B_GRAPHICS_HOOK_COUNT 151 152 153#endif /* _GRAPHICS_CARD_H */ 154