forked from KolibriOS/kolibrios
bugfix of last SVN revision
git-svn-id: svn://kolibrios.org@1176 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
580
programs/develop/libraries/libGUI/SRC/libGUI.h
Normal file
580
programs/develop/libraries/libGUI/SRC/libGUI.h
Normal file
@@ -0,0 +1,580 @@
|
||||
/*
|
||||
service structures of libGUI
|
||||
*/
|
||||
|
||||
static DWORD ID;
|
||||
|
||||
//screen's parameters
|
||||
#define BYTES_PER_PIXEL 4
|
||||
|
||||
//platform parameters
|
||||
#define KOLIBRIOS 1
|
||||
//#define DEBUG
|
||||
|
||||
//boolean constants
|
||||
#define TRUE 0x1
|
||||
#define FALSE 0x0
|
||||
|
||||
//maximum callbacks for one check of callback
|
||||
#define MAX_CALLBACKS 255
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// libGUI sysyem messages types
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
#define MESSAGE_FULL_REDRAW_ALL 1
|
||||
#define MESSAGE_KEYS_EVENT 2
|
||||
#define MESSAGE_SPECIALIZED 3
|
||||
#define MESSAGE_SET_FOCUSE 4
|
||||
#define MESSAGE_CHANGE_FOCUSE 5
|
||||
#define MESSAGE_MOUSE_EVENT 6
|
||||
#define MESSAGE_CHANGE_POSITION_EVENT 7
|
||||
#define MESSAGE_CHANGESIZE_EVENT 8
|
||||
#define MESSAGE_CALL_TIMER_EVENT 9
|
||||
#define MESSAGE_FULL_REDRAW_ALL_WITH_FINITION 10
|
||||
#define MESSAGE_SET_MAIN_PARENT 11
|
||||
#define MESSAGE_DESTROY_CONTROL -1
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// system flags of controls
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
#define FLAG_SHOW_CONTROL 0x1
|
||||
#define FLAG_HIDE_CONTROL 0xfffe
|
||||
#define FLAG_FOCUSE_INPUT_SUPPOROTE 0x2
|
||||
#define FLAG_FOCUSE_INPUT_NOTSUPPOROTE 0xfffd
|
||||
#define FLAG_FOCUSE_INPUT_ON 0x4
|
||||
#define FLAG_FOCUSE_INPUT_OFF 0xfffb
|
||||
#define FLAG_CONNECT_EVENT_ON 0x8
|
||||
#define FLAG_CONNECT_EVENT_OFF 0xfff7
|
||||
#define FLAG_MOUSE_BLOCKED_ON 0x10
|
||||
#define FLAG_MOUSE_BLOCKED_OFF 0xffef
|
||||
#define FLAG_GET_SPECIALIZED_MESSAGE_ON 0x20
|
||||
#define FLAG_GET_SPECIALIZED_MESSAGE_OFF 0xffdf
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// system flags of callback functions
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
#define FLAG_BLOCK_CALLBACK_ON 0x1
|
||||
#define FLAG_BLOCK_CALLBACK_OFF 0xfe
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// system flags of main wondow for timers
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
#define FLAG_TIMER_ON 0x1
|
||||
#define FLAG_TIMER_OFF 0xfe
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// system keys states
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
#define KEY_DOWN 16
|
||||
#define KEY_UP 17
|
||||
#define KEY_HOTKEY 18
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// system mouse buttons states
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
#define MOUSE_LEFT_BUTTON_DOWN 19
|
||||
#define MOUSE_LEFT_BUTTON_UP 20
|
||||
#define MOUSE_RIGHT_BUTTON_DOWN 21
|
||||
#define MOUSE_RIGHT_BUTTON_UP 22
|
||||
#define MOUSE_MIDDLE_BUTTON_DOWN 23
|
||||
#define MOUSE_MIDDLE_BUTTON_UP 24
|
||||
#define MOUSE_4_BUTTON_DOWN 25
|
||||
#define MOUSE_4_BUTTON_UP 26
|
||||
#define MOUSE_5_BUTTON_DOWN 27
|
||||
#define MOUSE_5_BUTTON_UP 28
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// CONNECT EVENTS FOR CALLBACKs
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// connect events for button
|
||||
////////////////////////////////////////////////////////////////
|
||||
#define BUTTON_ENTER_EVENT 29
|
||||
#define BUTTON_LEAVE_EVENT 30
|
||||
#define BUTTON_PRESSED_EVENT 31
|
||||
#define BUTTON_RELEASED_EVENT 32
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// connect events for button
|
||||
////////////////////////////////////////////////////////////////
|
||||
#define SCROLLBAR_CHANGED_EVENT 33
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// connect events for main parent window
|
||||
////////////////////////////////////////////////////////////////
|
||||
#define DELETE_EVENT 36
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
//screen buffer parameters
|
||||
////////////////////////////////////////////////////////////////////
|
||||
#define DRAW_OUTPUT_SCREEN 0
|
||||
#define DRAW_OUTPUT_BUFFER 1
|
||||
|
||||
|
||||
static struct SCREEN
|
||||
{
|
||||
DWORD bits_per_pixel;
|
||||
DWORD bytes_per_pixel;
|
||||
DWORD draw_output;
|
||||
int x;
|
||||
int y;
|
||||
int size_x;
|
||||
int size_y;
|
||||
int skin_height;
|
||||
int display_size_x;
|
||||
int display_size_y;
|
||||
char *buffer;
|
||||
}screen;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// header of parent of control
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct HEADERPARENT
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
|
||||
DWORD **control_for_callback_function;
|
||||
DWORD **callback_for_control_callback;
|
||||
DWORD number_callbacks;
|
||||
DWORD *global_active_control_for_keys;
|
||||
DWORD *message;
|
||||
DWORD *timer_bk;
|
||||
DWORD *timer_fd;
|
||||
DWORD number_timers_for_controls;
|
||||
DWORD *calev_bk;
|
||||
DWORD *calev_fd;
|
||||
DWORD *IDL_func;
|
||||
DWORD *IDL_func_data;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct HEADERPARENT parent_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// header of control
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct HEADER
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct HEADER header_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// callback structure for callback function of control
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct CALLBACK
|
||||
{
|
||||
DWORD *clb_bk;
|
||||
DWORD *clb_fd;
|
||||
DWORD *clb_control;
|
||||
DWORD *func;
|
||||
DWORD *func_data;
|
||||
DWORD connect_event;
|
||||
DWORD flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct CALLBACK gui_callback_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// timer
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct TIMER
|
||||
{
|
||||
DWORD *tmr_bk;
|
||||
DWORD *tmr_fd;
|
||||
DWORD *tmr_parent;
|
||||
DWORD *func;
|
||||
DWORD *func_data;
|
||||
DWORD last_time;
|
||||
DWORD time_tick;
|
||||
DWORD flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct TIMER gui_timer_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// structure for callback events
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct CALLBACKEVENT
|
||||
{
|
||||
DWORD *calev_bk;
|
||||
DWORD *calev_fd;
|
||||
DWORD *calev_parent;
|
||||
DWORD *func;
|
||||
DWORD *func_data;
|
||||
DWORD event_type;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct CALLBACKEVENT gui_callbackevent_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// structure for callback events
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct FINITION
|
||||
{
|
||||
DWORD x;
|
||||
DWORD y;
|
||||
DWORD sizex;
|
||||
DWORD sizey;
|
||||
char flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct FINITION finition_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// type of data - structure message
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct MESSAGE
|
||||
{
|
||||
DWORD type;
|
||||
DWORD arg1;
|
||||
DWORD arg2;
|
||||
DWORD arg3;
|
||||
DWORD arg4;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct MESSAGE gui_message_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// prototype of functions
|
||||
////////////////////////////////////////////////////////////////
|
||||
void (*ControlProc)(void *Control,gui_message_t *message);
|
||||
void (*CallbackFunction)(header_t *Control,void *data);
|
||||
void (*TimerCallbackFunction)(void *data);
|
||||
void (*CallbackFunctionForEvent)(gui_message_t *message,void *data);
|
||||
void (*IDL_Function)(void *data);
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// button
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct ControlButton
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
|
||||
//button's data
|
||||
unsigned char btn_flags; };
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ControlButton gui_button_t;
|
||||
// information for creating control Button
|
||||
#pragma pack(push,1)
|
||||
struct ButtonData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ButtonData gui_button_data_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// scroller
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct ControlScrollBar
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
|
||||
//scroll bar's data
|
||||
float ruller_size;
|
||||
float ruller_pos;
|
||||
float ruller_step;
|
||||
unsigned char scb_flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ControlScrollBar gui_scroll_bar_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct ScrollBarData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
float ruller_size;
|
||||
float ruller_pos;
|
||||
float ruller_step;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ScrollBarData gui_scroll_bar_data_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// progressbar
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct ControlProgressBar
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
|
||||
//progress bar's data
|
||||
float progress;
|
||||
unsigned char prb_flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ControlProgressBar gui_progress_bar_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct ProgressBarData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
float progress;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ProgressBarData gui_progress_bar_data_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// scrolled window
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct ControlScrolledWindow
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
|
||||
//scrolled windows's data
|
||||
DWORD virtual_x;
|
||||
DWORD virtual_y;
|
||||
DWORD virtual_sizex;
|
||||
DWORD virtual_sizey;
|
||||
DWORD *virtual_controls_x;
|
||||
DWORD *virtual_controls_y;
|
||||
DWORD number_virtual_controls;
|
||||
DWORD scroll_arrea_sizex;
|
||||
DWORD scroll_arrea_sizey;
|
||||
DWORD *horizontal_scroll;
|
||||
DWORD *vertical_scroll;
|
||||
unsigned char scw_flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ControlScrolledWindow gui_scrolled_window_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct ScrolledWindowData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ScrolledWindowData gui_scrolled_window_data_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// image
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct ControlImage
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
|
||||
char bits_per_pixel;
|
||||
char bytes_per_pixel;
|
||||
char *img;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ControlImage gui_image_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct ImageData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
char bits_per_pixel;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ImageData gui_image_data_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// text
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct ControlText
|
||||
{
|
||||
DWORD *ctrl_proc;
|
||||
DWORD *ctrl_fd;
|
||||
DWORD *ctrl_bk;
|
||||
DWORD *child_fd;
|
||||
DWORD *child_bk;
|
||||
DWORD *parent;
|
||||
DWORD *main_parent;
|
||||
DWORD ctrl_x;
|
||||
DWORD ctrl_y;
|
||||
DWORD ctrl_sizex;
|
||||
DWORD ctrl_sizey;
|
||||
DWORD ctrl_ID;
|
||||
DWORD *active_control_for_keys;
|
||||
DWORD *active_control_for_mouse;
|
||||
DWORD *callback;
|
||||
DWORD *finition;
|
||||
DWORD *timer;
|
||||
DWORD flags;
|
||||
|
||||
DWORD *font;
|
||||
DWORD color;
|
||||
DWORD background_color;
|
||||
char *text;
|
||||
BYTE txt_flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct ControlText gui_text_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct TextData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
DWORD *font;
|
||||
DWORD color;
|
||||
DWORD background_color;
|
||||
char background;
|
||||
char *text;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct TextData gui_text_data_t;
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// prototips of some service functions
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
char CheckCrossRectangles(int x1,int y1,int sizex1,int sizey1,int x2,int y2,int sizex2,int sizey2);
|
Reference in New Issue
Block a user