forked from KolibriOS/kolibrios
1071 lines
27 KiB
Plaintext
1071 lines
27 KiB
Plaintext
|
;-----------------------------------------------------------------------
|
||
|
; assembler SDK for libGUI
|
||
|
;-----------------------------------------------------------------------
|
||
|
|
||
|
HEADER_SIZE = 18*4
|
||
|
NULL = 0
|
||
|
|
||
|
;///////////////////////////////////////////////////////////////////////
|
||
|
;// libGUI system messages types
|
||
|
;///////////////////////////////////////////////////////////////////////
|
||
|
MESSAGE_FULL_REDRAW_ALL = 1
|
||
|
MESSAGE_KEYS_EVENT = 2
|
||
|
MESSAGE_SPECIALIZED = 3
|
||
|
MESSAGE_SET_FOCUSE = 4
|
||
|
MESSAGE_CHANGE_FOCUSE = 5
|
||
|
MESSAGE_MOUSE_EVENT = 6
|
||
|
MESSAGE_CHANGE_POSITION_EVENT = 7
|
||
|
MESSAGE_CHANGESIZE_EVENT = 8
|
||
|
MESSAGE_CALL_TIMER_EVENT = 9
|
||
|
MESSAGE_FULL_REDRAW_ALL_WITH_FINITION = 10
|
||
|
MESSAGE_SET_MAIN_PARENT = 11
|
||
|
MESSAGE_DESTROY_CONTROL = -1
|
||
|
|
||
|
;///////////////////////////////////////////////////////////////////////
|
||
|
;// system keys states
|
||
|
;///////////////////////////////////////////////////////////////////////
|
||
|
KEY_DOWN = 16
|
||
|
KEY_UP = 17
|
||
|
KEY_HOTKEY = 18
|
||
|
;///////////////////////////////////////////////////////////////////////
|
||
|
;// system mouse buttons states
|
||
|
;///////////////////////////////////////////////////////////////////////
|
||
|
MOUSE_LEFT_BUTTON_DOWN = 19
|
||
|
MOUSE_LEFT_BUTTON_UP = 20
|
||
|
MOUSE_RIGHT_BUTTON_DOWN = 21
|
||
|
MOUSE_RIGHT_BUTTON_UP = 22
|
||
|
MOUSE_MIDDLE_BUTTON_DOWN = 23
|
||
|
MOUSE_MIDDLE_BUTTON_UP = 24
|
||
|
MOUSE_4_BUTTON_DOWN = 25
|
||
|
MOUSE_4_BUTTON_UP = 26
|
||
|
MOUSE_5_BUTTON_DOWN = 27
|
||
|
MOUSE_5_BUTTON_UP = 28
|
||
|
|
||
|
;---------------------------------------------------------------------
|
||
|
; CONNECT EVENTS FOR CALLBACKs
|
||
|
;---------------------------------------------------------------------
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// connect events for button
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
BUTTON_ENTER_EVENT = 29
|
||
|
BUTTON_LEAVE_EVENT = 30
|
||
|
BUTTON_PRESSED_EVENT = 31
|
||
|
BUTTON_RELEASED_EVENT = 32
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// connect events for scroll bar
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
SCROLLBAR_CHANGED_EVENT = 33
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// connect events for main parent window
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
DELETE_EVENT = 36
|
||
|
|
||
|
;-----------------------------------------------------------------------
|
||
|
;------------------------libGUI functions-------------------------------
|
||
|
;-----------------------------------------------------------------------
|
||
|
|
||
|
;DWORD LibGUIversion(void);
|
||
|
macro LibGUIversion
|
||
|
{
|
||
|
call [imp_LibGUIversion]
|
||
|
}
|
||
|
;char InitLibGUI(void);
|
||
|
macro InitLibGUI
|
||
|
{
|
||
|
call [imp_InitLibGUI]
|
||
|
}
|
||
|
|
||
|
;void LibGUImain(parent_t *WindowParent);
|
||
|
macro LibGUImain WindowParent
|
||
|
{
|
||
|
pushd WindowParent
|
||
|
call [imp_LibGUImain]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
|
||
|
;void QuitLibGUI(parent_t *window);
|
||
|
macro QuitLibGUI window
|
||
|
{
|
||
|
pushd window
|
||
|
call [imp_QuitLibGUI]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;void* CreateWindow(void)
|
||
|
macro CreateWindow
|
||
|
{
|
||
|
call [imp_CreateWindow]
|
||
|
}
|
||
|
;void SetWindowSizeRequest(parent_t *WindowParent,int size_x,int size_y)
|
||
|
macro SetWindowSizeRequest WindowParent,sizex,sizey
|
||
|
{
|
||
|
pushd sizey
|
||
|
pushd sizex
|
||
|
pushd WindowParent
|
||
|
call [imp_SetWindowSizeRequest]
|
||
|
add esp,3*4
|
||
|
}
|
||
|
;void PackControls(void *Parent,void *control);
|
||
|
macro PackControls Parent,control
|
||
|
{
|
||
|
pushd control
|
||
|
pushd Parent
|
||
|
call [imp_PackControls]
|
||
|
add esp,2*4
|
||
|
}
|
||
|
;void DestroyControl(void *control);
|
||
|
macro DestroyControl control
|
||
|
{
|
||
|
pushd control
|
||
|
call [imp_DestroyControl]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;void SetControlSizeRequest(void *Control,int new_size_x,int new_size_y);
|
||
|
macro SetControlSizeRequest Control,new_size_x,new_size_y
|
||
|
{
|
||
|
pushd new_size_y
|
||
|
pushd new_size_x
|
||
|
pushd Control
|
||
|
call [imp_SetControlSizeRequest]
|
||
|
add esp 3*4
|
||
|
}
|
||
|
;int GetControlSizeX(void *Control);
|
||
|
macro GetControlSizeX Control
|
||
|
{
|
||
|
pushd Control
|
||
|
call [imp_GetControlSizeX]
|
||
|
add esp 1*4
|
||
|
}
|
||
|
;int GetControlSizeY(void *Control);
|
||
|
macro GetControlSizeY Control
|
||
|
{
|
||
|
pushd Control
|
||
|
call [imp_GetControlSizeY]
|
||
|
add esp 1*4
|
||
|
}
|
||
|
;void SetControlNewPosition(void *Control,int new_x,int new_y)
|
||
|
macro SetControlNewPosition Control,new_x,new_y
|
||
|
{
|
||
|
pushd new_y
|
||
|
pushd new_x
|
||
|
pushd Control
|
||
|
call [imp_SetControlNewPosition]
|
||
|
add esp,3*4
|
||
|
}
|
||
|
;int GetControlPositionX(void *Control);
|
||
|
macro GetControlPositionX Control
|
||
|
{
|
||
|
pushd Control
|
||
|
call [imp_GetControlPositionX]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;int GetControlPositionY(void *Control);
|
||
|
macro GetControlPositionY Control
|
||
|
{
|
||
|
pushd Control
|
||
|
call [imp_GetControlPositionY]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;void* SetFocuse(void *Control);
|
||
|
macro SetFocuse Control
|
||
|
{
|
||
|
pushd Control
|
||
|
call [imp_SetFocuse]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;void RedrawControl(void *Control)
|
||
|
macro RedrawControl Control
|
||
|
{
|
||
|
pushd Control
|
||
|
call [imp_RedrawControl]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;void SpecialRedrawControl(void *Control)
|
||
|
macro SpecialRedrawControl Control
|
||
|
{
|
||
|
pushd Control
|
||
|
call [imp_SpecialRedrawControl]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;SetCallbackFunction(void *Control,int event_name,void *callback_func,void *callback_func_data);
|
||
|
macro SetCallbackFunction Control,event_name,callback_func,callback_func_data
|
||
|
{
|
||
|
pushd callback_func_data
|
||
|
pushd callback_func
|
||
|
pushd event_name
|
||
|
pushd Control
|
||
|
call [imp_SetCallbackFunction]
|
||
|
add esp,4*4
|
||
|
}
|
||
|
;BlockCallbackFunction(void *Control,gui_callback_t *callback_ID)
|
||
|
macro BlockCallbackFunction Control,callback_ID
|
||
|
{
|
||
|
pushd callback_ID
|
||
|
pushd Control
|
||
|
call [imp_BlockCallbackFunction]
|
||
|
add esp,2*4
|
||
|
}
|
||
|
;void UnblockCallbackFunction(void *Control,gui_callback_t *callback_ID)
|
||
|
macro UnblockCallbackFunction Control,callback_ID
|
||
|
{
|
||
|
pushd callback_ID
|
||
|
pushd Control
|
||
|
call [imp_UnblockCallbackFunction]
|
||
|
add esp,2*4
|
||
|
}
|
||
|
;void SetIDL_Function(parent_t *Parent,void *function,void *function_data)
|
||
|
macro SetIDL_Function Parent,function,function_data
|
||
|
{
|
||
|
pushd function_data
|
||
|
pushd function
|
||
|
pushd Parent
|
||
|
call [imp_SetIDL_Function]
|
||
|
add esp,3*4
|
||
|
}
|
||
|
;void DestroyIDL_Function(parent_t *Parent)
|
||
|
macro DestroyIDL_Function Parent
|
||
|
{
|
||
|
pushd Parent
|
||
|
call [imp_DestroyIDL_Function]
|
||
|
add eso,1*4
|
||
|
}
|
||
|
;SetTimerCallbackForFunction(parent_t *parent_window,int time_tick,void *func,void *func_data)
|
||
|
macro SetTimerCallbackForFunction parent_window,time_tick,func,func_data
|
||
|
{
|
||
|
pushd func_data
|
||
|
pushd func
|
||
|
pushd time_tick
|
||
|
pushd parent_window
|
||
|
call [imp_SetTimerCallbackForFunction]
|
||
|
add esp,4*4
|
||
|
}
|
||
|
;DestroyTimerCallbackForFunction(gui_timer_t *timer)
|
||
|
macro DestroyTimerCallbackForFunction timer
|
||
|
{
|
||
|
pushd timer
|
||
|
call [imp_DestroyTimerCallbackForFunction]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;SetCallbackFunctionForEvent)(parent_t *parent_window,int event_type,void *func,void *func_data)
|
||
|
macro SetCallbackFunctionForEvent parent_window,event_type,func,func_data
|
||
|
{
|
||
|
pushd func_data
|
||
|
pushd func
|
||
|
pushd event_type
|
||
|
pushd parent_window
|
||
|
call [imp_SetCallbackFunctionForEvent]
|
||
|
add esp,4*4
|
||
|
}
|
||
|
;DestroyCallbackFunctionForEvent(gui_callbackevent_t *callback_event)
|
||
|
macro DestroyCallbackFunctionForEvent callback_event
|
||
|
{
|
||
|
pushd callback_event
|
||
|
call [imp_DestroyCallbackFunctionForEvent]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;CreateButton(gui_button_data_t *info_for_control)
|
||
|
macro CreateButton info_for_control
|
||
|
{
|
||
|
pushd info_for_control
|
||
|
call [imp_CreateButton]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;CreateButtonWithText(gui_button_data_t *info,char *txt)
|
||
|
macro CreateButtonWithText info,txt
|
||
|
{
|
||
|
pushd txt
|
||
|
pushd info
|
||
|
call [imp_CreateButtonWithText]
|
||
|
add esp,2*4
|
||
|
}
|
||
|
;CreateProgressBar(gui_progress_bar_data_t *info_for_control)
|
||
|
macro CreateProgressBar info_for_control
|
||
|
{
|
||
|
pushd info_for_control
|
||
|
call [imp_CreateProgressBar]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;SetProgressBarPulse)(gui_progress_bar_t *ProgressBar,int time_update)
|
||
|
macro SetProgressBarPulse ProgressBar,time_update
|
||
|
{
|
||
|
pushd time_update
|
||
|
pushd ProgressBar
|
||
|
call [imp_SetProgressBarPulse]
|
||
|
add esp,2*4
|
||
|
}
|
||
|
;ProgressBarSetText(gui_progress_bar_t *pbar,char *txt)
|
||
|
macro ProgressBarSetText pbar,txt
|
||
|
{
|
||
|
pushd txt
|
||
|
pushd pbar
|
||
|
call [imp_ProgressBarSetText]
|
||
|
add esp,2*4
|
||
|
}
|
||
|
;ProgressBarGetText(gui_progress_bar_t *pbar)
|
||
|
macro ProgressBarGetText pbar
|
||
|
{
|
||
|
pushd pbar
|
||
|
call [imp_ProgressBarGetText]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;CreateHorizontalScrollBar(gui_scroll_bar_data_t *info_for_control)
|
||
|
macro CreateHorizontalScrollBar info_for_control
|
||
|
{
|
||
|
pushd info_for_control
|
||
|
call [imp_CreateHorizontalScrollBar]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;CreateVerticalScrollBar(gui_scroll_bar_data_t *info_for_control)
|
||
|
macro CreateVerticalScrollBar info_for_control
|
||
|
{
|
||
|
pushd info_for_control
|
||
|
call [imp_CreateVerticalScrollBar]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;CreateScrolledWindow)(gui_scrolled_window_data_t *info_for_control)
|
||
|
macro CreateScrolledWindow info_for_control
|
||
|
{
|
||
|
pushd info_for_control
|
||
|
call [imp_CreateScrolledWindow]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;ScrolledWindowPackControls(gui_scrolled_window_t *parent,void *Control)
|
||
|
macro ScrolledWindowPackControls parent,Control
|
||
|
{
|
||
|
pushd Control
|
||
|
pushd parent
|
||
|
call [imp_ScrolledWindowPackControls]
|
||
|
add esp,2*4
|
||
|
}
|
||
|
;CreateImage(gui_image_data_t *info_for_control)
|
||
|
macro CreateImage info_for_control
|
||
|
{
|
||
|
pushd info_for_control
|
||
|
call [imp_CreateImage]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;CreateText(gui_text_data_t *info_for_control)
|
||
|
macro CreateText info_for_control
|
||
|
{
|
||
|
pushd info_for_control
|
||
|
call [imp_CreateText]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;TextBackgroundOn(gui_text_t *Text)
|
||
|
macro TextBackgroundOn Txt
|
||
|
{
|
||
|
pushd Txt
|
||
|
call [imp_TextBackgroundOn]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;TextBackgroundOff(gui_text_t *Text)
|
||
|
macro TextBackgroundOff Txt
|
||
|
{
|
||
|
pushd Txt
|
||
|
call [imp_TextBackgroundOff]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;LoadFont(char *fullfontname)
|
||
|
macro LoadFont fullfontname
|
||
|
{
|
||
|
pushd fullfontname
|
||
|
call [imp_LoadFont]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
;FreeFont(font_t *font)
|
||
|
macro FreeFont font
|
||
|
{
|
||
|
pushd font
|
||
|
call [imp_FreeFont]
|
||
|
add esp,1*4
|
||
|
}
|
||
|
|
||
|
;----------------------------------------------------------------
|
||
|
;----------------------debug output------------------------------
|
||
|
;----------------------------------------------------------------
|
||
|
;IN
|
||
|
;esi=stirng
|
||
|
align 4
|
||
|
gui_ksys_debug_out_str:
|
||
|
|
||
|
pushad
|
||
|
mov eax,63
|
||
|
mov ebx,1
|
||
|
|
||
|
next_simbol_print:
|
||
|
|
||
|
xor edx,edx
|
||
|
mov dl,[esi]
|
||
|
test dl,dl
|
||
|
jz exit_print_str
|
||
|
|
||
|
cmp dl,10
|
||
|
jne no_new_line
|
||
|
mov ecx,13
|
||
|
int 0x40
|
||
|
no_new_line:
|
||
|
|
||
|
xor ecx,ecx
|
||
|
mov cl, dl
|
||
|
int 0x40
|
||
|
|
||
|
add esi,1
|
||
|
|
||
|
jmp next_simbol_print
|
||
|
|
||
|
exit_print_str:
|
||
|
popad
|
||
|
|
||
|
ret
|
||
|
|
||
|
;-------------------------------------------------------------------
|
||
|
;-------------------get proc from export table----------------------
|
||
|
;-------------------------------------------------------------------
|
||
|
;INPUT
|
||
|
;ebx=pointer to export table
|
||
|
;esi=pointer to function name
|
||
|
;OUTPUT
|
||
|
;eax=pointer to function
|
||
|
align 4
|
||
|
gui_ksys_cofflib_getproc:
|
||
|
|
||
|
next_name_check:
|
||
|
|
||
|
mov ecx,[ebx]
|
||
|
|
||
|
test ecx,ecx
|
||
|
jz end_export
|
||
|
|
||
|
push esi
|
||
|
;cmp export string with name
|
||
|
next_simbol_check:
|
||
|
|
||
|
xor eax,eax
|
||
|
mov al,[ecx];load byte of func name from export
|
||
|
xor edx,edx
|
||
|
mov dl,[esi]
|
||
|
|
||
|
cmp al,dl
|
||
|
jne exit_check_simbol
|
||
|
test al,al
|
||
|
jne no_end_string
|
||
|
mov eax,[ebx+4]
|
||
|
pop esi
|
||
|
jmp end_export
|
||
|
no_end_string:
|
||
|
|
||
|
add ecx,1
|
||
|
add esi,1
|
||
|
jmp next_simbol_check
|
||
|
|
||
|
exit_check_simbol:
|
||
|
pop esi
|
||
|
|
||
|
add ebx,8
|
||
|
jmp next_name_check
|
||
|
|
||
|
end_export:
|
||
|
|
||
|
ret
|
||
|
|
||
|
;-------------------------------------------------------------------
|
||
|
;-----------------------Link libGUI---------------------------------
|
||
|
;-------------------------------------------------------------------
|
||
|
|
||
|
link_libGUI:
|
||
|
|
||
|
mov edi,eax;save export table pointer
|
||
|
mov esi,libGUI_imp
|
||
|
|
||
|
next_libGUI_func_link:
|
||
|
|
||
|
push esi
|
||
|
mov eax,esi
|
||
|
mov esi,[eax]
|
||
|
|
||
|
mov ebx,edi;pointer to export table
|
||
|
call gui_ksys_cofflib_getproc
|
||
|
pop esi
|
||
|
mov [esi],eax ;func proc
|
||
|
|
||
|
add esi,4
|
||
|
cmp [esi],dword 0
|
||
|
jne next_libGUI_func_link
|
||
|
|
||
|
ret
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// Load libGUI
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;IN
|
||
|
;pointer to path or
|
||
|
LoadLibGUI:
|
||
|
|
||
|
push eax
|
||
|
push ebx
|
||
|
push ecx
|
||
|
push edx
|
||
|
push esi
|
||
|
push edi
|
||
|
|
||
|
mov ecx,[esp+28];path
|
||
|
|
||
|
test ecx,ecx
|
||
|
jnz have_other_path
|
||
|
mov ecx,sys_libGUI_path
|
||
|
have_other_path:
|
||
|
|
||
|
;try to load libGUI library
|
||
|
mov eax,68
|
||
|
mov ebx,19
|
||
|
int 0x40
|
||
|
|
||
|
test eax,eax
|
||
|
jnz libGUI_loaded_successfully
|
||
|
mov esi,message_cant_load_lib
|
||
|
call gui_ksys_debug_out_str
|
||
|
|
||
|
xor eax,eax
|
||
|
dec eax
|
||
|
int 0x40;system exit program
|
||
|
libGUI_loaded_successfully:
|
||
|
|
||
|
call link_libGUI
|
||
|
|
||
|
mov eax,68
|
||
|
mov ebx,11
|
||
|
int 0x40
|
||
|
|
||
|
InitLibGUI
|
||
|
|
||
|
test eax,eax
|
||
|
jz libGUI_initialized_successfully
|
||
|
mov esi,message_cant_initialize_lib
|
||
|
call gui_ksys_debug_out_str
|
||
|
|
||
|
xor eax,eax
|
||
|
dec eax
|
||
|
int 0x40;system exit program
|
||
|
libGUI_initialized_successfully:
|
||
|
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop edx
|
||
|
pop ecx
|
||
|
pop ebx
|
||
|
pop eax
|
||
|
|
||
|
ret 4
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// font type structure
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
struc font_t
|
||
|
{
|
||
|
.fnt_draw rd 1;pointer
|
||
|
.fnt_unpacker rd 1;pointer
|
||
|
.fnt_fd rd 1;pointer
|
||
|
.fnt_bk rd 1;pointer
|
||
|
.sizex rd 1;
|
||
|
.sizey rd 1;
|
||
|
.size rd 1;
|
||
|
.encoding_type rd 1;
|
||
|
.font rd 1;pointer
|
||
|
.fnt_name rd 1;pointer
|
||
|
.type rd 1;
|
||
|
.flags rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// header of parent of control
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
struc parent_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
|
||
|
.control_for_callback_function rd 1;array of pointers
|
||
|
.callback_for_control_callback rd 1;array of pointers
|
||
|
.number_callbacks rd 1;
|
||
|
.global_active_control_for_keys rd 1;pointer
|
||
|
.message rd 1;pointer
|
||
|
.timer_bk rd 1;pointer
|
||
|
.timer_fd rd 1;pointer
|
||
|
.number_timers_for_controls rd 1;
|
||
|
.calev_bk rd 1;pointer
|
||
|
.calev_fd rd 1;pointer
|
||
|
.IDL_func rd 1;pointer
|
||
|
.IDL_func_data rd 1;pointer
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// header of control
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
struc header_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// callback structure for callback function of control
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
struc gui_callback_t
|
||
|
{
|
||
|
.clb_bk rd 1;pointer
|
||
|
.clb_fd rd 1;pointer
|
||
|
.clb_control rd 1;pointer
|
||
|
.func rd 1;pointer
|
||
|
.func_data rd 1;pointer
|
||
|
.connect_event rd 1;
|
||
|
.flags rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// timer
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
struc gui_timer_t
|
||
|
{
|
||
|
.tmr_bk rd 1;pointer
|
||
|
.tmr_fd rd 1;pointer
|
||
|
.tmr_parent rd 1;pointer
|
||
|
.func rd 1;pointer
|
||
|
.func_data rd 1;pointer
|
||
|
.last_time rd 1;
|
||
|
.time_tick rd 1;
|
||
|
.flags rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// structure for callback events
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
struc gui_callbackevent_t
|
||
|
{
|
||
|
.calev_bk rd 1;pointer
|
||
|
.calev_fd rd 1;pointer
|
||
|
.calev_parent rd 1;pointer
|
||
|
.func rd 1;pointer
|
||
|
.func_data rd 1;pointer
|
||
|
.event_type rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// type of data - structure message
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
struc gui_message_t
|
||
|
{
|
||
|
.type rd 1;
|
||
|
.arg1 rd 1;
|
||
|
.arg2 rd 1;
|
||
|
.arg3 rd 1;
|
||
|
.arg4 rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// button
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struc gui_button_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
|
||
|
.btn_flags rb 1;
|
||
|
}
|
||
|
|
||
|
;information for creating control Button
|
||
|
|
||
|
struc gui_button_data_t
|
||
|
{
|
||
|
.x rd 1;
|
||
|
.y rd 1;
|
||
|
.wight rd 1;
|
||
|
.height rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// scroll bar
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struc gui_scroll_bar_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
|
||
|
.ruller_size rd 1;float
|
||
|
.ruller_pos rd 1;float
|
||
|
.ruller_step rd 1;float
|
||
|
.scb_flags rb 1;
|
||
|
}
|
||
|
|
||
|
struc gui_scroll_bar_data_t
|
||
|
{
|
||
|
.x rd 1;
|
||
|
.y rd 1;
|
||
|
.wight rd 1;
|
||
|
.height rd 1;
|
||
|
.ruller_size rd 1;float
|
||
|
.ruller_pos rd 1;float
|
||
|
.ruller_step rd 1;float
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// progressbar
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struc gui_progress_bar_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
|
||
|
.progress rd 1;float
|
||
|
.prb_flags rb 1;
|
||
|
}
|
||
|
|
||
|
struc gui_progress_bar_data_t
|
||
|
{
|
||
|
.x rd 1;
|
||
|
.y rd 1;
|
||
|
.wight rd 1;
|
||
|
.height rd 1;
|
||
|
.progress rd 1;float
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// scrolled window
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struc gui_scrolled_window_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
|
||
|
.virtual_x rd 1;
|
||
|
.virtual_y rd 1;
|
||
|
.virtual_sizex rd 1;
|
||
|
.virtual_sizey rd 1;
|
||
|
.virtual_controls_x rd 1;pointer
|
||
|
.virtual_controls_y rd 1;pointer
|
||
|
.number_virtual_controls rd 1;
|
||
|
.scroll_arrea_sizex rd 1;
|
||
|
.scroll_arrea_sizey rd 1;
|
||
|
.horizontal_scroll rd 1;pointer
|
||
|
.vertical_scroll rd 1;pointer
|
||
|
.scw_flags rb 1;
|
||
|
}
|
||
|
|
||
|
struc gui_scrolled_window_data_t
|
||
|
{
|
||
|
.x rd 1;
|
||
|
.y rd 1;
|
||
|
.wight rd 1;
|
||
|
.height rd 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// image
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struc gui_image_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
|
||
|
.bits_per_pixel rb 1;
|
||
|
.bytes_per_pixel rb 1;
|
||
|
.img rd 1;pointer
|
||
|
}
|
||
|
|
||
|
|
||
|
struc gui_image_data_t
|
||
|
{
|
||
|
.x rd 1;
|
||
|
.y rd 1;
|
||
|
.wight rd 1;
|
||
|
.height rd 1;
|
||
|
.bits_per_pixel rb 1;
|
||
|
}
|
||
|
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
;// text
|
||
|
;////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struc gui_text_t
|
||
|
{
|
||
|
.ctrl_proc rd 1;pointer
|
||
|
.ctrl_fd rd 1;pointer
|
||
|
.ctrl_bk rd 1;pointer
|
||
|
.child_fd rd 1;pointer
|
||
|
.child_bk rd 1;pointer
|
||
|
.parent rd 1;pointer
|
||
|
.main_parent rd 1;pointer
|
||
|
.ctrl_x rd 1;
|
||
|
.ctrl_y rd 1;
|
||
|
.ctrl_sizex rd 1;
|
||
|
.ctrl_sizey rd 1;
|
||
|
.ctrl_ID rd 1;
|
||
|
.active_control_for_keys rd 1;pointer
|
||
|
.active_control_for_mouse rd 1;pointer
|
||
|
.callback rd 1;pointer
|
||
|
.finition rd 1;pointer
|
||
|
.timer rd 1;pointer
|
||
|
.flags rd 1;
|
||
|
|
||
|
.font rd 1;pointer
|
||
|
.color rd 1;
|
||
|
.background_color rd 1;
|
||
|
.text rd 1;pointer
|
||
|
.txt_flags rb 1;
|
||
|
}
|
||
|
|
||
|
struc gui_text_data_t
|
||
|
{
|
||
|
.x rd 1;
|
||
|
.y rd 1;
|
||
|
.font rd 1;pointer
|
||
|
.color rd 1;
|
||
|
.background_color rd 1;
|
||
|
.background rb 1;
|
||
|
.text rd 1;pointer
|
||
|
}
|
||
|
|
||
|
;//**********************************************************************
|
||
|
;// libGUI service functions
|
||
|
;//**********************************************************************
|
||
|
|
||
|
;default system path to libGUI
|
||
|
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||
|
message_cant_load_lib db 'cant load lib',13,10,0
|
||
|
message_cant_initialize_lib db 'cant initialize libGUI',13,10,0
|
||
|
|
||
|
szLibGUIversion db 'LibGUIversion',0
|
||
|
szInitLibGUI db 'InitLibGUI',0
|
||
|
szLibGUImain db 'LibGUImain',0
|
||
|
szQuitLibGUI db 'QuitLibGUI',0
|
||
|
|
||
|
szCreateWindow db 'CreateWindow',0
|
||
|
szSetWindowSizeRequest db 'SetWindowSizeRequest',0
|
||
|
|
||
|
szPackControls db 'PackControls',0
|
||
|
szDestroyControl db 'DestroyControl',0
|
||
|
szSetControlSizeRequest db 'SetControlSizeRequest',0
|
||
|
szGetControlSizeX db 'GetControlSizeX',0
|
||
|
szGetControlSizeY db 'GetControlSizeY',0
|
||
|
szSetControlNewPosition db 'SetControlNewPosition',0
|
||
|
szGetControlPositionX db 'GetControlPositionX',0
|
||
|
szGetControlPositionY db 'GetControlPositionY',0
|
||
|
szSetFocuse db 'SetFocuse',0
|
||
|
szRedrawControl db 'RedrawControl',0
|
||
|
szSpecialRedrawControl db 'SpecialRedrawControl',0
|
||
|
|
||
|
szSetCallbackFunction db 'SetCallbackFunction',0
|
||
|
szBlockCallbackFunction db 'BlockCallbackFunction',0
|
||
|
szUnblockCallbackFunction db 'UnblockCallbackFunction',0
|
||
|
|
||
|
szSetIDL_Function db 'SetIDL_Function',0
|
||
|
szDestroyIDL_Function db 'DestroyIDL_Function',0
|
||
|
|
||
|
szSetTimerCallbackForFunction db 'SetTimerCallbackForFunction',0
|
||
|
szDestroyTimerCallbackForFunction db 'DestroyTimerCallbackForFunction',0
|
||
|
|
||
|
szSetCallbackFunctionForEvent db 'SetCallbackFunctionForEvent',0
|
||
|
szDestroyCallbackFunctionForEvent db 'DestroyCallbackFunctionForEvent',0
|
||
|
|
||
|
szCreateButton db 'CreateButton',0
|
||
|
szCreateButtonWithText db 'CreateButtonWithText',0
|
||
|
|
||
|
szCreateProgressBar db 'CreateProgressBar',0
|
||
|
szSetProgressBarPulse db 'SetProgressBarPulse',0
|
||
|
szProgressBarSetText db 'ProgressBarSetText',0
|
||
|
szProgressBarGetText db 'ProgressBarGetText',0
|
||
|
|
||
|
szCreateHorizontalScrollBar db 'CreateHorizontalScrollBar',0
|
||
|
szCreateVerticalScrollBar db 'CreateVerticalScrollBar',0
|
||
|
|
||
|
szCreateScrolledWindow db 'CreateScrolledWindow',0
|
||
|
szScrolledWindowPackControls db 'ScrolledWindowPackControls',0
|
||
|
|
||
|
szCreateImage db 'CreateImage',0
|
||
|
|
||
|
szCreateText db 'CreateText',0
|
||
|
szTextBackgroundOn db 'TextBackgroundOn',0
|
||
|
szTextBackgroundOff db 'TextBackgroundOff',0
|
||
|
|
||
|
szLoadFont db 'LoadFont',0
|
||
|
szFreeFont db 'FreeFont',0
|
||
|
|
||
|
libGUI_imp:
|
||
|
|
||
|
imp_LibGUIversion dd szLibGUIversion
|
||
|
imp_InitLibGUI dd szInitLibGUI
|
||
|
imp_LibGUImain dd szLibGUImain
|
||
|
imp_QuitLibGUI dd szQuitLibGUI
|
||
|
|
||
|
imp_CreateWindow dd szCreateWindow
|
||
|
imp_SetWindowSizeRequest dd szSetWindowSizeRequest
|
||
|
|
||
|
imp_PackControls dd szPackControls
|
||
|
imp_DestroyControl dd szDestroyControl
|
||
|
imp_SetControlSizeRequest dd szSetControlSizeRequest
|
||
|
imp_GetControlSizeX dd szGetControlSizeX
|
||
|
imp_GetControlSizeY dd szGetControlSizeY
|
||
|
imp_SetControlNewPosition dd szSetControlNewPosition
|
||
|
imp_GetControlPositionX dd szGetControlPositionX
|
||
|
imp_GetControlPositionY dd szGetControlPositionY
|
||
|
imp_SetFocuse dd szSetFocuse
|
||
|
imp_RedrawControl dd szRedrawControl
|
||
|
imp_SpecialRedrawControl dd szSpecialRedrawControl
|
||
|
|
||
|
imp_SetCallbackFunction dd szSetCallbackFunction
|
||
|
imp_BlockCallbackFunction dd szBlockCallbackFunction
|
||
|
imp_UnblockCallbackFunction dd szUnblockCallbackFunction
|
||
|
|
||
|
imp_SetIDL_Function dd szSetIDL_Function
|
||
|
imp_DestroyIDL_Function dd szDestroyIDL_Function
|
||
|
|
||
|
imp_SetTimerCallbackForFunction dd szSetTimerCallbackForFunction
|
||
|
imp_DestroyTimerCallbackForFunction dd szDestroyTimerCallbackForFunction
|
||
|
|
||
|
imp_SetCallbackFunctionForEvent dd szSetCallbackFunctionForEvent
|
||
|
imp_DestroyCallbackFunctionForEvent dd szDestroyCallbackFunctionForEvent
|
||
|
|
||
|
imp_CreateButton dd szCreateButton
|
||
|
imp_CreateButtonWithText dd szCreateButtonWithText
|
||
|
|
||
|
imp_CreateProgressBar dd szCreateProgressBar
|
||
|
imp_SetProgressBarPulse dd szSetProgressBarPulse
|
||
|
imp_ProgressBarSetText dd szProgressBarSetText
|
||
|
imp_ProgressBarGetText dd szProgressBarGetText
|
||
|
|
||
|
imp_CreateHorizontalScrollBar dd szCreateHorizontalScrollBar
|
||
|
imp_CreateVerticalScrollBar dd szCreateVerticalScrollBar
|
||
|
|
||
|
imp_CreateScrolledWindow dd szCreateScrolledWindow
|
||
|
imp_ScrolledWindowPackControls dd szScrolledWindowPackControls
|
||
|
|
||
|
imp_CreateImage dd szCreateImage
|
||
|
|
||
|
imp_CreateText dd szCreateText
|
||
|
imp_TextBackgroundOn dd szTextBackgroundOn
|
||
|
imp_TextBackgroundOff dd szTextBackgroundOff
|
||
|
|
||
|
imp_LoadFont dd szLoadFont
|
||
|
imp_FreeFont dd szFreeFont
|
||
|
|
||
|
dd 0
|
||
|
|