74 lines
1.6 KiB
C
74 lines
1.6 KiB
C
#ifndef LIBRARY_VKVM_H
|
||
#define LIBRARY_VKVM_H
|
||
|
||
typedef int type_todo;
|
||
|
||
private struct interruptVector {
|
||
int pid;
|
||
int signal;
|
||
};
|
||
|
||
//enum config file defaults {
|
||
const int max_width_pixels = 800;
|
||
const int max_height_pixels = 600;
|
||
const int max_textMode_width;
|
||
const int max_textMode_height;
|
||
// TODO: add ControlRegisters members here
|
||
//TODO: add get/set methods
|
||
//};
|
||
|
||
|
||
enum GraphicMode {
|
||
Text,
|
||
BlackWhite,
|
||
Gray_256,
|
||
TrueColor;
|
||
};
|
||
|
||
private struct controlRegisters {
|
||
int layout_version
|
||
int trigger_reset;
|
||
int width_pixels;
|
||
int height_pixels;
|
||
GraphicMode graphicMode;
|
||
int autoRedrawInterval;
|
||
int timerInterruptInterval;
|
||
type_todo bw_background_color;
|
||
type_todo bw_foreground_color;
|
||
int textMode_width;
|
||
int textMode_height;
|
||
int textMode_font;
|
||
int textMode_font_width;
|
||
int textMode_font_height;
|
||
int mouse_pos_x;
|
||
int mouse_pos_y;
|
||
char keyboardBuffer[16];
|
||
int keyboardBuffer_index_w;
|
||
int keyboardBuffer_index_r;
|
||
};
|
||
|
||
//TODO: add init
|
||
//TODO: add methods for a event handling approach
|
||
//TODO: add methods for a pooling approach
|
||
|
||
// interrupts
|
||
/*
|
||
1 timer
|
||
2 mouse move
|
||
mouse button
|
||
key down
|
||
key up
|
||
reread ControlRegisters
|
||
redraw GUI // opposite direction (i.e. client to GUI)!
|
||
render Text // text mode client -> text rendering process -> redraw GUI
|
||
*/
|
||
|
||
// Shared Memory Layout
|
||
// --------------------------------------------------------------------
|
||
// struct ControlRegisters
|
||
// char reserved[1024]
|
||
// Interrupt Vector Table [64]
|
||
// text area [max_textMode_width * max_textMode_height]
|
||
// pixel area [max_height_pixels * max_height_pixels * sizeof(uint_32)]
|
||
|
||
#endif |