I'm testing support for GetConsoleScreenBufferInfoEx.
At the moment, I've extended the screen_buffer struct in server/console.c to look like this:
struct screen_buffer { struct object obj; /* object header */ struct list entry; /* entry in list of all screen buffers */ struct console_input *input; /* associated console input */ int mode; /* output mode */ int cursor_size; /* size of cursor (percentage filled) */ int cursor_visible;/* cursor visibility flag */ int cursor_x; /* position of cursor */ int cursor_y; /* position of cursor */ int width; /* size (w-h) of the screen buffer */ int height; int max_width; /* size (w-h) of the window given font size */ int max_height; char_info_t *data; /* the data for each cell - a width x height matrix */ unsigned short attr; /* default attribute for screen buffer */ rectangle_t win; /* current visible window on the screen buffer * * as seen in wineconsole */ struct fd *fd; /* for bare console, attached output fd */ unsigned short popup_attr; /* the console popup fill attribute */ BOOL fullscreen; /* indicates whether fullscreen mode is supported */ COLORREF colortable[16];/* an array of DWORD values */ };
In server/protocol.def I have:
@REQ(get_console_output_info) obj_handle_t handle; /* handle to the console */ @REPLY short int cursor_size; /* size of cursor (percentage filled) */ short int cursor_visible;/* cursor visibility flag */ short int cursor_x; /* position of cursor (x, y) */ short int cursor_y; short int width; /* width of the screen buffer */ short int height; /* height of the screen buffer */ short int attr; /* default attribute */ short int win_left; /* window actually displayed by renderer */ short int win_top; /* the rect area is expressed within the */ short int win_right; /* boundaries of the screen buffer */ short int win_bottom; short int max_width; /* maximum size (width x height) for the window */ short int max_height; short int popup_attr; /* the console popup fill attribute */ short int fullscreen; /* indicates whether fullscreen mode is supported */ --> type??? colortable; /* a COLORREF array of DWORD values */ @END
While colortable is a COLORREF array, protocol.def does not allow types such as DWORD, COLORREF, etc.
What type should colortable be given to pass tools/make_requests?