forked from KolibriOS/kolibrios
1)Added memory meneger.
2)Added log output to console in debug mode. 3)Added SDK for MSVC++. git-svn-id: svn://kolibrios.org@1175 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
698f06c417
commit
82495158d4
File diff suppressed because it is too large
Load Diff
@ -1,18 +0,0 @@
|
||||
/*OUTPUT_FORMAT("binary")*/
|
||||
ENTRY("start_")
|
||||
SECTIONS
|
||||
{
|
||||
.text 0x000000:
|
||||
{
|
||||
*(.text)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.data)
|
||||
}
|
||||
|
||||
.bss :
|
||||
{
|
||||
*(.bss)
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
OUTFILE = interface.kex
|
||||
INPUT = interface.c
|
||||
OUTPUT = interface.o
|
||||
OBJS = start.o interface.o
|
||||
|
||||
|
||||
.SUFFIXES: .asm .o
|
||||
|
||||
$(OUTFILE) : $(OBJS)
|
||||
fasm start.asm start.o
|
||||
gcc -c $(INPUT) -nostdinc -I/home/andrew/kolibri/develop/include/
|
||||
ld -nostdlib -T kolibri.ld -n -L/home/andrew/kolibri/develop/lib/ -o $(OUTFILE) $(OBJS) -lck -lm
|
||||
objcopy $(OUTFILE) -O binary
|
||||
|
||||
.asm.o:
|
||||
fasm $*.asm
|
||||
|
||||
.c.o:
|
||||
gcc -c $*.c
|
||||
|
||||
clean :
|
||||
del *.o
|
@ -1,136 +0,0 @@
|
||||
format MS COFF
|
||||
section '.text' executable
|
||||
public start_
|
||||
;extrn mf_init
|
||||
extrn main
|
||||
;include 'debug2.inc'
|
||||
__DEBUG__=0
|
||||
|
||||
start_:
|
||||
;virtual at 0
|
||||
db 'MENUET01' ; 1. Magic number (8 bytes)
|
||||
dd 0x01 ; 2. Version of executable file
|
||||
dd start ; 3. Start address
|
||||
dd 0x0 ; 4. Size of image
|
||||
dd 0x100000 ; 5. Size of needed memory
|
||||
dd 0x100000 ; 6. Pointer to stack
|
||||
hparams dd 0x0 ; 7. Pointer to program arguments
|
||||
hpath dd 0x0 ; 8. Pointer to program path
|
||||
;end virtual
|
||||
|
||||
start:
|
||||
;DEBUGF 'Start programm\n'
|
||||
;init heap of memory
|
||||
mov eax,68
|
||||
mov ebx,11
|
||||
int 0x40
|
||||
|
||||
;DEBUGF ' path "%s"\n params "%s"\n', .path, .params
|
||||
; check for overflow
|
||||
mov al, [path+buf_len-1]
|
||||
or al, [params+buf_len-1]
|
||||
jnz .crash
|
||||
; check if path written by OS
|
||||
mov eax, [hparams]
|
||||
test eax, eax
|
||||
jz .without_path
|
||||
mov eax, path
|
||||
.without_path:
|
||||
mov esi, eax
|
||||
call push_param
|
||||
; retrieving parameters
|
||||
mov esi, params
|
||||
xor edx, edx ; dl - èä¸ò ïàðàìåòð(1) èëè ðàçäåëèòåëè(0)
|
||||
; dh - ñèìâîë ñ êîòîðîãî íà÷àëñÿ ïàðàìåòð (1 êàâû÷êè, 0 îñòàëüíîå)
|
||||
mov ecx, 1 ; cl = 1
|
||||
; ch = 0 ïðîñòî íîëü
|
||||
.parse:
|
||||
lodsb
|
||||
test al, al
|
||||
jz .run
|
||||
test dl, dl
|
||||
jnz .findendparam
|
||||
;{åñëè áûë ðàçäåëèòåëü
|
||||
cmp al, ' '
|
||||
jz .parse ;çàãðóæåí ïðîáåë, ãðóçèì ñëåäóþùèé ñèìâîë
|
||||
mov dl, cl ;íà÷èíàåòñÿ ïàðàìåòð
|
||||
cmp al, '"'
|
||||
jz @f ;çàãðóæåíû êàâû÷êè
|
||||
mov dh, ch ;ïàðàìåòð áåç êàâû÷åê
|
||||
dec esi
|
||||
call push_param
|
||||
inc esi
|
||||
jmp .parse
|
||||
|
||||
@@:
|
||||
mov dh, cl ;ïàðàìåòð â êàâû÷åêàõ
|
||||
call push_param ;åñëè íå ïðîáåë çíà÷èò íà÷èíàåòñÿ êàêîé òî ïàðàìåòð
|
||||
jmp .parse ;åñëè áûë ðàçäåëèòåëü}
|
||||
|
||||
.findendparam:
|
||||
test dh, dh
|
||||
jz @f ; áåç êàâû÷åê
|
||||
cmp al, '"'
|
||||
jz .clear
|
||||
jmp .parse
|
||||
@@:
|
||||
cmp al, ' '
|
||||
jnz .parse
|
||||
|
||||
.clear:
|
||||
lea ebx, [esi - 1]
|
||||
mov [ebx], ch
|
||||
mov dl, ch
|
||||
jmp .parse
|
||||
|
||||
.run:
|
||||
;DEBUGF 'call main(%x, %x) with params:\n', [argc], argv
|
||||
if __DEBUG__ = 1
|
||||
mov ecx, [argc]
|
||||
@@:
|
||||
lea esi, [ecx * 4 + argv-4]
|
||||
DEBUGF '0x%x) "%s"\n', cx, [esi]
|
||||
loop @b
|
||||
end if
|
||||
push [argc]
|
||||
push argv
|
||||
call main
|
||||
.exit:
|
||||
;DEBUGF 'Exit from prog\n';
|
||||
xor eax,eax
|
||||
dec eax
|
||||
int 0x40
|
||||
dd -1
|
||||
.crash:
|
||||
;DEBUGF 'E:buffer overflowed\n'
|
||||
jmp .exit
|
||||
;============================
|
||||
push_param:
|
||||
;============================
|
||||
;parameters
|
||||
; esi - pointer
|
||||
;description
|
||||
; procedure increase argc
|
||||
; and add pointer to array argv
|
||||
; procedure changes ebx
|
||||
mov ebx, [argc]
|
||||
cmp ebx, max_parameters
|
||||
jae .dont_add
|
||||
mov [argv+4*ebx], esi
|
||||
inc [argc]
|
||||
.dont_add:
|
||||
ret
|
||||
;==============================
|
||||
public params as '__argv'
|
||||
public path as '__path'
|
||||
|
||||
section '.bss'
|
||||
buf_len = 0x400
|
||||
max_parameters=0x20
|
||||
argc rd 1
|
||||
argv rd max_parameters
|
||||
path rb buf_len
|
||||
params rb buf_len
|
||||
|
||||
;section '.data'
|
||||
;include_debug_strings ; ALWAYS present in data section
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,800 +0,0 @@
|
||||
;
|
||||
;
|
||||
; This is example using GUI component Bookmark from libGUI.
|
||||
;
|
||||
;
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 126*1024
|
||||
dd 126*1024
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall 68,19,sys_libGUI_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnResizeComponent
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [resize_component],eax
|
||||
|
||||
push fnMoveComponent
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [move_component],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_button],eax
|
||||
|
||||
push fnCraeteScroller
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_scroller],eax
|
||||
|
||||
push fnCraeteBookmark
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_bookmark],eax
|
||||
|
||||
push fnCraeteImage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_image],eax
|
||||
|
||||
push fnCraeteText
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_text],eax
|
||||
|
||||
push fnCraeteNumber
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_number],eax
|
||||
|
||||
push fnCraeteCheckbox
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_check_box],eax
|
||||
|
||||
push fnCraeteEditbox
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_edit_box],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],120
|
||||
mov [Button1.y],120
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],dword ecx
|
||||
mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
|
||||
|
||||
mov [Button3.type],byte 10010001b
|
||||
mov [Button3.x],165
|
||||
mov [Button3.y],320
|
||||
mov [Button3.width],word 70
|
||||
mov [Button3.height],word 20
|
||||
mov [Button3.color1],dword ecx
|
||||
mov [Button3.color2],dword 0xffffff
|
||||
mov [Button3.text],text3
|
||||
|
||||
|
||||
push Button3
|
||||
push Parend
|
||||
call [craete_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
;********************************************
|
||||
;***************Init scrollers****************
|
||||
;********************************************
|
||||
|
||||
;init vertical scroller
|
||||
mov ecx,[ColorsTable+8]
|
||||
mov [VerticalScroller.type],byte 11110001b
|
||||
mov [VerticalScroller.x],150
|
||||
mov [VerticalScroller.y],10
|
||||
mov [VerticalScroller.pos],0.2
|
||||
mov [VerticalScroller.length],200
|
||||
mov [VerticalScroller.size],0.3
|
||||
mov [VerticalScroller.color1],ecx
|
||||
|
||||
;********************************************
|
||||
;******************Init Image****************
|
||||
;********************************************
|
||||
|
||||
mov [Image.type],byte 10000000b
|
||||
mov [Image.x],30
|
||||
mov [Image.y],10
|
||||
mov [Image.sizex],200
|
||||
mov [Image.sizey],200
|
||||
mov [Image.pointer],Picture
|
||||
|
||||
;********************************************
|
||||
;******************Init Text*****************
|
||||
;********************************************
|
||||
|
||||
mov [Text.type],byte 10000000b
|
||||
mov [Text.color],0xffffff
|
||||
mov [Text.x],100
|
||||
mov [Text.y],100
|
||||
mov [Text.length],25
|
||||
mov [Text.pointer],text_for_text
|
||||
|
||||
;********************************************
|
||||
;*****************Init Number****************
|
||||
;********************************************
|
||||
|
||||
mov [Number.type],byte 10000010b
|
||||
mov [Number.color],0xffffff
|
||||
mov [Number.x],150
|
||||
mov [Number.y],100
|
||||
mov [Number.parameters],5*65536+4
|
||||
mov [Number.number],-1234.5678
|
||||
|
||||
;********************************************
|
||||
;***************Init CheckBox****************
|
||||
;********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
;mov [CheckBox.ch_flags],word 10b
|
||||
mov [CheckBox.ch_left],150
|
||||
mov [CheckBox.ch_top],330
|
||||
mov [CheckBox.ch_text_margin],4
|
||||
mov [CheckBox.ch_size],11
|
||||
mov [CheckBox.ch_color],0xffffff
|
||||
mov [CheckBox.ch_border_color],ecx
|
||||
mov [CheckBox.ch_text_color],0
|
||||
mov [CheckBox.ch_text_ptr],check_box_text
|
||||
mov [CheckBox.ch_text_length],9
|
||||
|
||||
;********************************************
|
||||
;***************Init EditBox*****************
|
||||
;********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
mov [EditBox.ed_flags],0b;1000000000000000b
|
||||
mov [EditBox.ed_left],100 ;x
|
||||
mov [EditBox.ed_top],100 ;y
|
||||
mov [EditBox.ed_width],150
|
||||
mov [EditBox.ed_height],14
|
||||
mov [EditBox.ed_max],100
|
||||
mov [EditBox.ed_text],buffer_for_text
|
||||
mov [EditBox.ed_color],dword 0xffffff
|
||||
mov [EditBox.shift_color],dword 0xaabbcc
|
||||
mov [EditBox.ed_focus_border_color],0
|
||||
mov [EditBox.ed_blur_border_color],ecx
|
||||
mov [EditBox.ed_text_color],0
|
||||
|
||||
|
||||
|
||||
;********************************************
|
||||
;***************Init bookmark****************
|
||||
;********************************************
|
||||
|
||||
|
||||
;init bookmark
|
||||
mov ecx,[ColorsTable+8]
|
||||
mov [Bookmark.type],byte 10100001b
|
||||
mov [Bookmark.x],10
|
||||
mov [Bookmark.y],10
|
||||
mov [Bookmark.sizex],350
|
||||
mov [Bookmark.sizey],270
|
||||
mov [Bookmark.color_1],dword ecx
|
||||
mov [Bookmark.color2],dword 0xffffff
|
||||
|
||||
mov [Bookmark.number_bookmarks],3
|
||||
mov [Bookmark.number_zak_in_1],2
|
||||
mov [Bookmark.number_zak_in_2],3
|
||||
mov [Bookmark.number_zak_in_3],1
|
||||
|
||||
mov [Bookmark.text_for_1],text4
|
||||
mov [Bookmark.number_contrl_1],1
|
||||
mov [Bookmark.type_control_1],1
|
||||
mov [Bookmark.info_1_control],dword Button1
|
||||
|
||||
mov [Bookmark.text_for_2],text5
|
||||
mov [Bookmark.number_contrl_2],1
|
||||
mov [Bookmark.type_control_2],6
|
||||
mov [Bookmark.info_2_control],dword Number
|
||||
|
||||
mov [Bookmark.text_for_3],text6
|
||||
mov [Bookmark.number_contrl_3],1
|
||||
mov [Bookmark.type_control_3],8
|
||||
mov [Bookmark.info_3_control],dword EditBox
|
||||
|
||||
mov [Bookmark.text_for_4],text7
|
||||
mov [Bookmark.number_contrl_4],1
|
||||
mov [Bookmark.type_control_4],4
|
||||
mov [Bookmark.info_4_control],dword Image
|
||||
|
||||
mov [Bookmark.text_for_5],text8
|
||||
mov [Bookmark.number_contrl_5],1
|
||||
mov [Bookmark.type_control_5],2
|
||||
mov [Bookmark.info_5_control],dword VerticalScroller
|
||||
|
||||
mov [Bookmark.text_for_6],text9
|
||||
mov [Bookmark.number_contrl_6],1
|
||||
mov [Bookmark.type_control_6],5
|
||||
mov [Bookmark.info_6_control],dword Text
|
||||
|
||||
|
||||
push Bookmark
|
||||
push Parend
|
||||
call [craete_bookmark]
|
||||
mov [PointerToControlForBookmark],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
;*****************************************************
|
||||
;**********Example of resize component****************
|
||||
;*****************************************************
|
||||
mov ebx,[PointerToControlForButtonExit]
|
||||
push 30;270
|
||||
push 150;250
|
||||
push ebx
|
||||
call [resize_component]
|
||||
|
||||
;*****************************************************
|
||||
;**********Example of remove component****************
|
||||
;*****************************************************
|
||||
mov ebx,[PointerToControlForButtonExit]
|
||||
push 340;270
|
||||
push 120;250
|
||||
push ebx
|
||||
call [move_component]
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov eax,[PointerToControlForBookmark]
|
||||
mov ebx,[Window_SizeX]
|
||||
mov ecx,[Window_SizeY]
|
||||
sub ebx,50
|
||||
sub ecx,130
|
||||
;or [eax+44],byte 1000000b
|
||||
mov [eax+32],ebx
|
||||
mov [eax+36],ecx
|
||||
|
||||
mov [Message],dword 1
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[PointerToControlForButtonExit]
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,11b
|
||||
jne no_crossing_pressing_button
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_crossing_pressing_button:
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,1b
|
||||
jne no_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForBookmark]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
mcall 9,IPC_table,-1
|
||||
mcall 12,1
|
||||
|
||||
mov eax,[IPC_table+34]
|
||||
mov ebx,[IPC_table+38]
|
||||
mov ecx,[IPC_table+42]
|
||||
mov edx,[IPC_table+46]
|
||||
mov [Window_CordinatX],eax
|
||||
mov [Window_CordinatY],ebx
|
||||
mov [Window_SizeX],ecx
|
||||
mov [Window_SizeY],edx
|
||||
|
||||
cmp [Window_SizeX],400
|
||||
jae no_minimum_size_x
|
||||
|
||||
mov [Window_SizeX],400
|
||||
mov ecx,[Window_SizeX]
|
||||
|
||||
no_minimum_size_x:
|
||||
|
||||
cmp [Window_SizeY],400
|
||||
jae no_minimum_size_y
|
||||
|
||||
mov [Window_SizeY],400
|
||||
mov edx,[Window_SizeY]
|
||||
|
||||
no_minimum_size_y:
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,[Window_CordinatX]
|
||||
mov ecx,[Window_CordinatY]
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,[Window_SizeX]
|
||||
add ecx,[Window_SizeY]
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
;call print_controls_information
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
check_box_text db 'Check box',0
|
||||
|
||||
text1 db 'text',0
|
||||
text3 db 'Exit',0
|
||||
|
||||
text4 db 'Bookmark_1',0
|
||||
text5 db 'Bookmark_2',0
|
||||
text6 db 'Bookmark_3',0
|
||||
text7 db 'Bookmark_4',0
|
||||
|
||||
text8 db 'Bookmark_5',0
|
||||
text9 db 'Bookmark_6',0
|
||||
|
||||
text_for_text db 'Hello world from bookmark',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnResizeComponent db 'ResizeComponent',0
|
||||
fnMoveComponent db 'MoveComponent',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteScroller db 'CraeteScroller',0
|
||||
fnCraeteBookmark db 'CraeteBookmark',0
|
||||
fnCraeteImage db 'CraeteImage',0
|
||||
fnCraeteText db 'CraeteText',0
|
||||
fnCraeteNumber db 'CraeteNumber',0
|
||||
fnCraeteCheckbox db 'CraeteCheckbox',0
|
||||
fnCraeteEditbox db 'CraeteEditbox',0
|
||||
fnCraeteProgressbar db 'CraeteProgressbar',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
resize_component dd 0
|
||||
move_component dd 0
|
||||
craete_button dd 0
|
||||
craete_scroller dd 0
|
||||
craete_bookmark dd 0
|
||||
craete_image dd 0
|
||||
craete_text dd 0
|
||||
craete_number dd 0
|
||||
craete_check_box dd 0
|
||||
craete_edit_box dd 0
|
||||
craete_progres_bar dd 0
|
||||
|
||||
PointerToControlForButton1 dd 0
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForHorizontalScroller dd 0
|
||||
PointerToControlForVerticalScroller dd 0
|
||||
|
||||
PointerToControlForBookmark dd 0
|
||||
|
||||
PointerToControlForImage dd 0
|
||||
|
||||
PointerToControlForText dd 0
|
||||
|
||||
PointerToControlForCheckBox dd 0
|
||||
|
||||
PointerToControlForEditBox dd 0
|
||||
|
||||
|
||||
Window_CordinatX dd 0
|
||||
Window_CordinatY dd 0
|
||||
|
||||
Window_SizeX dd 0
|
||||
Window_SizeY dd 0
|
||||
|
||||
button_pressed dd 0
|
||||
|
||||
IPC_table rd 256
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
|
||||
ColorsTable rd 10
|
||||
buffer_for_text rb 100+2
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
struc SCROLLER
|
||||
{
|
||||
.type rb 1
|
||||
.x rw 1
|
||||
.y rw 1
|
||||
.length rw 1
|
||||
.color1 rd 1
|
||||
.size rd 1
|
||||
.pos rd 1
|
||||
.buttons_flags rw 1
|
||||
.ChildButton1 rd 1
|
||||
.ChildButton2 rd 1
|
||||
.mouseX rw 1
|
||||
.mouseY rw 1
|
||||
}
|
||||
|
||||
struc BOOKMARK
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.color_1 rd 1
|
||||
.reserved rd 1
|
||||
.color2 rd 1
|
||||
|
||||
.number_bookmarks rd 1
|
||||
.number_zak_in_1 rd 1
|
||||
.number_zak_in_2 rd 1
|
||||
.number_zak_in_3 rd 1
|
||||
|
||||
.text_for_1 rd 1
|
||||
.number_contrl_1 rd 1
|
||||
.type_control_1 rd 1
|
||||
.info_1_control rd 1
|
||||
|
||||
.text_for_2 rd 1
|
||||
.number_contrl_2 rd 1
|
||||
.type_control_2 rd 1
|
||||
.info_2_control rd 1
|
||||
|
||||
.text_for_3 rd 1
|
||||
.number_contrl_3 rd 1
|
||||
.type_control_3 rd 1
|
||||
.info_3_control rd 1
|
||||
|
||||
.text_for_4 rd 1
|
||||
.number_contrl_4 rd 1
|
||||
.type_control_4 rd 1
|
||||
.info_4_control rd 1
|
||||
|
||||
.text_for_5 rd 1
|
||||
.number_contrl_5 rd 1
|
||||
.type_control_5 rd 1
|
||||
.info_5_control rd 1
|
||||
|
||||
.text_for_6 rd 1
|
||||
.number_contrl_6 rd 1
|
||||
.type_control_6 rd 1
|
||||
.info_6_control rd 1
|
||||
|
||||
}
|
||||
|
||||
struc IMAGE
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.pointer rd 1
|
||||
}
|
||||
|
||||
struc TEXT
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.length rd 1
|
||||
.pointer rd 1
|
||||
}
|
||||
|
||||
struc NUMBER
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.number rd 1
|
||||
.parameters rd 1
|
||||
}
|
||||
|
||||
struc CHECKBOX
|
||||
{
|
||||
.ch_flags rw 1
|
||||
.ch_left rw 1
|
||||
.ch_top rw 1
|
||||
.ch_text_margin rd 1
|
||||
.ch_size rd 1
|
||||
.ch_size_2 rw 1
|
||||
.ch_size_3 rw 1
|
||||
.ch_color rd 1
|
||||
.ch_border_color rd 1
|
||||
.ch_text_color rd 1
|
||||
.ch_text_ptr rd 1
|
||||
.ch_text_length rw 1
|
||||
.mouseX rd 1
|
||||
.mouseY rd 1
|
||||
}
|
||||
struc EDITBOX
|
||||
{
|
||||
.ed_width rd 1 ;? ?
|
||||
.ed_left rd 1 ; ??
|
||||
.ed_top rd 1 ; ??
|
||||
.ed_color rd 1 ;??? ?
|
||||
.shift_color rd 1 ;?????. ??
|
||||
.ed_focus_border_color rd 1 ;??? ?
|
||||
.ed_blur_border_color rd 1 ;?? ? ?
|
||||
.ed_text_color rd 1 ;????
|
||||
.ed_max rd 1 ;- ? ?? ?? ?
|
||||
.ed_text rd 1 ;??? ??
|
||||
.ed_flags rw 1 ;?
|
||||
.ed_size rd 1 ;- ?
|
||||
.ed_pos rd 1 ;? ??
|
||||
.ed_offset rd 1 ;??
|
||||
.cl_curs_x rd 1 ;??? ???? ?
|
||||
.cl_curs_y rd 1 ;??? ???? ?
|
||||
.ed_shift_pos rd 1 ; ??
|
||||
.ed_shift_pos_old rd 1 ;?? ??
|
||||
.ed_height rd 1
|
||||
.mouseX rd 1
|
||||
.mouseY rd 1
|
||||
}
|
||||
|
||||
struc PROGRESSBAR
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color1 rd 1
|
||||
.color2 rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.progres rd 1
|
||||
.color3 rd 1
|
||||
}
|
||||
|
||||
Button1 BUTTON
|
||||
Button3 BUTTON
|
||||
VerticalScroller SCROLLER
|
||||
Bookmark BOOKMARK
|
||||
Image IMAGE
|
||||
Text TEXT
|
||||
Number NUMBER
|
||||
CheckBox CHECKBOX
|
||||
EditBox EDITBOX
|
||||
EditBox2 EDITBOX
|
||||
ProgressBar PROGRESSBAR
|
||||
|
||||
antibug: rb 2000
|
||||
|
||||
Picture:
|
||||
file 'image.raw'
|
||||
|
||||
i_end:
|
File diff suppressed because one or more lines are too long
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,444 +0,0 @@
|
||||
;
|
||||
;
|
||||
; This is a example of using GUI component Button from libGUI
|
||||
;
|
||||
;
|
||||
|
||||
control_hader_size = 44
|
||||
control_button_data_size = 50
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 4*1024
|
||||
dd 4*1024
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
;load dll from system directory
|
||||
mcall 68,19,sys_dll_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [crate_button],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],20
|
||||
mov [Button1.y],10
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],0xaabbccff;dword ecx
|
||||
;mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
push Button1
|
||||
push Parend
|
||||
call [crate_button]
|
||||
mov [PointerToControlForButton1],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button2.type],byte 10010010b
|
||||
mov [Button2.x],20
|
||||
mov [Button2.y],40
|
||||
mov [Button2.width],word 70
|
||||
mov [Button2.height],word 20
|
||||
mov [Button2.color1],dword ecx
|
||||
mov [Button2.color2],dword 0xffffff
|
||||
mov [Button2.image],ButtonPicture
|
||||
mov [Button2.imageSizeX],16
|
||||
mov [Button2.imageSizeY],16
|
||||
mov [Button2.transparentColor],0xffffff
|
||||
|
||||
push Button2
|
||||
push Parend
|
||||
call [crate_button]
|
||||
mov [PointerToControlForButton2],eax
|
||||
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button3.type],byte 10000100b
|
||||
mov [Button3.x],20
|
||||
mov [Button3.y],70
|
||||
mov [Button3.width],word 70
|
||||
mov [Button3.height],word 20
|
||||
mov [Button3.color1],dword ecx
|
||||
mov [Button3.color2],dword 0xffffff
|
||||
mov [Button3.text],text1
|
||||
mov [Button3.textX],40
|
||||
mov [Button3.textY],8
|
||||
mov [Button3.textcolor],0
|
||||
mov [Button3.image],ButtonPicture
|
||||
mov [Button3.imageX],3
|
||||
mov [Button3.imageY],3
|
||||
mov [Button3.imageSizeX],16
|
||||
mov [Button3.imageSizeY],16
|
||||
mov [Button3.transparentColor],0xffffff
|
||||
|
||||
push Button3
|
||||
push Parend
|
||||
call [crate_button]
|
||||
mov [PointerToControlForButton3],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button4.type],byte 10010001b
|
||||
mov [Button4.x],20
|
||||
mov [Button4.y],100
|
||||
mov [Button4.width],word 70
|
||||
mov [Button4.height],word 20
|
||||
mov [Button4.color1],dword ecx
|
||||
mov [Button4.color2],dword 0xffffff
|
||||
mov [Button4.text],text4
|
||||
mov [Button4.textX],10
|
||||
mov [Button4.textY],10
|
||||
mov [Button4.textcolor],0
|
||||
mov [Button4.image],ButtonPicture
|
||||
mov [Button4.imageX],5
|
||||
mov [Button4.imageY],5
|
||||
mov [Button4.imageSizeX],16
|
||||
mov [Button4.imageSizeY],16
|
||||
mov [Button4.transparentColor],0xffffff
|
||||
|
||||
push Button4
|
||||
push Parend
|
||||
call [crate_button]
|
||||
mov [PointerToControlForButton4],eax
|
||||
|
||||
|
||||
call draw_window
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
mov [SystemEvent],eax
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
|
||||
;button 1
|
||||
mov esi,[PointerToControlForButton1]
|
||||
add esi,control_hader_size ;size control's structure
|
||||
mov edi,Button1
|
||||
mov ecx,control_button_data_size
|
||||
rep movsb
|
||||
|
||||
;button 2
|
||||
mov esi,[PointerToControlForButton2]
|
||||
add esi,control_hader_size ;size control's structure
|
||||
mov edi,Button2
|
||||
mov ecx,control_button_data_size
|
||||
rep movsb
|
||||
|
||||
;button 3
|
||||
mov esi,[PointerToControlForButton3]
|
||||
add esi,control_hader_size ;size control's structure
|
||||
mov edi,Button3
|
||||
mov ecx,control_button_data_size
|
||||
rep movsb
|
||||
|
||||
;button 4
|
||||
mov esi,[PointerToControlForButton4]
|
||||
add esi,control_hader_size ;size control's structure
|
||||
mov edi,Button4
|
||||
mov ecx,control_button_data_size
|
||||
rep movsb
|
||||
|
||||
xor eax,eax
|
||||
mov al,[Button4.flag]
|
||||
cmp al,11b
|
||||
jne no_exit_demo
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_exit_demo:
|
||||
|
||||
cmp al,1b
|
||||
jne no_only_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_only_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_only_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
;free resourses
|
||||
push [PointerToControlForButton1]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForButton2]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForButton3]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForButton4]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,200
|
||||
add ecx,200
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
mcall 12,2
|
||||
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_dll_path db '/sys/lib/libGUi.obj',0
|
||||
|
||||
|
||||
text1 db 'text',0
|
||||
text4 db 'Exit',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
crate_button dd 0
|
||||
|
||||
PointerToControlForButton1 dd 0
|
||||
PointerToControlForButton2 dd 0
|
||||
PointerToControlForButton3 dd 0
|
||||
PointerToControlForButton4 dd 0
|
||||
|
||||
SystemEvent dd 0
|
||||
button_pressed rb 1
|
||||
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message dd 0,0,0,0
|
||||
ColorsTable dd 0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
|
||||
Button1 BUTTON
|
||||
Button2 BUTTON
|
||||
Button3 BUTTON
|
||||
Button4 BUTTON
|
||||
|
||||
antibug rb 460
|
||||
|
||||
ButtonPicture:
|
||||
file 'test.raw'
|
||||
|
||||
i_end:
|
@ -1 +0,0 @@
|
||||
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙úý˙÷üţűĆĺ÷™Ń˙˙˙˙˙˙˙˙˙˙x˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙·˙˙ǡáůVÉôě›ŇővÁ÷üţµđěůŔ˙˙O˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙„˙˙ś{Ő÷¶ńĚÂčúżâĎđüJĆôľęŻ˙˙W˙˙˙˙˙˙˙˙˙‹Úřˇáů˙˙˙˙˙<CB99>˙˙k°ćŇBĂ줟Ú÷<C39A>Č©äÝsÓ«˙˙D˙˙Ľ˙˙˙˙˙˙˙˙˙1ľň°ďŤŰřąéăÓńŽéřm°ć}śÔ{÷ŤEÔéMşéf˙˙čĚďüHĹô)»ň˙˙˙†Ů÷!¸ńcÍőPÇôHĹô2ľňÓń©üÓUîŹüÝ@˙˙Á—ŢřRČô–ŢřoŃö˙˙˙úý˙úý˙˙˙˙í•î šî ší‰˙˙µňNŻýăV÷ŹźÚK°Ýjľú·ß˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ţđřýŕńýŕńţđDţń×ňJţň€˙˙<CB99>ţí÷ůŻŰď%ť˙˙˙˙˙˙˙˙˙˙˙˙˙˙ń˙˙<CB99>˙˙e˙˙Z˙˙HýáěňP°˙˙p˙˙Ž˙˙˙˙ýţî–ţôú˙˙˙˙˙˙˙˙˙˙˙č˙˙n˙˙´˙˙ľ˝ęďßÚńňQ±“ÝĂžŕźýţ˙˙˙˙ţňů˙ţ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ůý˙DÄóÍâőöŠĘŰôý%şńľęű˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙§ăůdÎőfÎő˙˙˙˙˙˙˙˙˙¬ĺúhĎö˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Ęîüµçúäöý˙˙˙˙˙˙˙˙˙ŢőýwÔö˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,373 +0,0 @@
|
||||
;
|
||||
;
|
||||
; Example of using gui component CheckBox from libGUI.
|
||||
;
|
||||
;
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 1600
|
||||
dd 1600
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall 68,19,sys_libGUI_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_button],eax
|
||||
|
||||
push fnCraeteCheckbox
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_check_box],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Buttton****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],10
|
||||
mov [Button1.y],40
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],dword ecx
|
||||
mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
push Button1
|
||||
push Parend
|
||||
call [craete_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
;********************************************
|
||||
;***************Init CheckBox****************
|
||||
;********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
;mov [CheckBox.ch_flags],word 10b
|
||||
mov [CheckBox.ch_left],20
|
||||
mov [CheckBox.ch_top],15
|
||||
mov [CheckBox.ch_text_margin],4
|
||||
mov [CheckBox.ch_size],11
|
||||
mov [CheckBox.ch_color],0xffffff
|
||||
mov [CheckBox.ch_border_color],ecx
|
||||
mov [CheckBox.ch_text_color],0
|
||||
mov [CheckBox.ch_text_ptr],check_box_text
|
||||
mov [CheckBox.ch_text_length],9
|
||||
|
||||
push CheckBox
|
||||
push Parend
|
||||
call [craete_check_box]
|
||||
mov [PointerToControlForCheckBox],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],dword 1
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[PointerToControlForButtonExit]
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,11b
|
||||
jne no_crossing_pressing_button
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_crossing_pressing_button:
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,1b
|
||||
jne no_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForCheckBox]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,100
|
||||
add ecx,100
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
check_box_text db 'Check box',0
|
||||
|
||||
text1 db 'Exit',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteCheckbox db 'CraeteCheckbox',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
craete_button dd 0
|
||||
craete_check_box dd 0
|
||||
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForCheckBox dd 0
|
||||
|
||||
button_pressed dd 0
|
||||
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
|
||||
ColorsTable rd 10
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
|
||||
struc CHECKBOX
|
||||
{
|
||||
.ch_flags rw 1
|
||||
.ch_left rw 1
|
||||
.ch_top rw 1
|
||||
.ch_text_margin rd 1
|
||||
.ch_size rd 1
|
||||
.ch_size_2 rw 1
|
||||
.ch_size_3 rw 1
|
||||
.ch_color rd 1
|
||||
.ch_border_color rd 1
|
||||
.ch_text_color rd 1
|
||||
.ch_text_ptr rd 1
|
||||
.ch_text_length rw 1
|
||||
.mouseX rd 1
|
||||
.mouseY rd 1
|
||||
}
|
||||
|
||||
|
||||
Button1 BUTTON
|
||||
CheckBox CHECKBOX
|
||||
i_end:
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,383 +0,0 @@
|
||||
;
|
||||
;
|
||||
; This is example of using GUI component EditBox from libGUI.
|
||||
;
|
||||
;
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 1800
|
||||
dd 1800
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall 68,19,sys_libGUI_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_button],eax
|
||||
|
||||
push fnCraeteEditbox
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_edit_box],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],20
|
||||
mov [Button1.y],50
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],dword ecx
|
||||
mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
push Button1
|
||||
push Parend
|
||||
call [craete_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
;********************************************
|
||||
;***************Init EditBox*****************
|
||||
;********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
mov [EditBox.ed_flags],0b;1000000000000000b
|
||||
mov [EditBox.ed_left],5 ;x
|
||||
mov [EditBox.ed_top],10 ;y
|
||||
mov [EditBox.ed_width],100
|
||||
mov [EditBox.ed_height],14
|
||||
mov [EditBox.ed_max],100
|
||||
mov [EditBox.ed_text],buffer_for_text
|
||||
mov [EditBox.ed_color],dword 0xffffff
|
||||
mov [EditBox.shift_color],dword 0xaabbcc
|
||||
mov [EditBox.ed_focus_border_color],0
|
||||
mov [EditBox.ed_blur_border_color],ecx
|
||||
mov [EditBox.ed_text_color],0
|
||||
|
||||
push EditBox
|
||||
push Parend
|
||||
call [craete_edit_box]
|
||||
mov [PointerToControlForEditBox],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],dword 1
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[PointerToControlForButtonExit]
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,11b
|
||||
jne no_crossing_pressing_button
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_crossing_pressing_button:
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,1b
|
||||
jne no_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForEditBox]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,120
|
||||
add ecx,120
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
text1 db 'Exit',0
|
||||
|
||||
text_for_text db 'Hello world from zakladka',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteEditbox db 'CraeteEditbox',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
craete_button dd 0
|
||||
craete_edit_box dd 0
|
||||
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForEditBox dd 0
|
||||
|
||||
button_pressed dd 0
|
||||
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
|
||||
ColorsTable rd 10
|
||||
buffer_for_text rb 100+2
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
struc EDITBOX
|
||||
{
|
||||
.ed_width rd 1
|
||||
.ed_left rd 1
|
||||
.ed_top rd 1
|
||||
.ed_color rd 1
|
||||
.shift_color rd 1
|
||||
.ed_focus_border_color rd 1
|
||||
.ed_blur_border_color rd 1
|
||||
.ed_text_color rd 1
|
||||
.ed_max rd 1
|
||||
.ed_text rd 1
|
||||
.ed_flags rw 1
|
||||
.ed_size rd 1
|
||||
.ed_pos rd 1
|
||||
.ed_offset rd 1
|
||||
.cl_curs_x rd 1
|
||||
.cl_curs_y rd 1
|
||||
.ed_shift_pos rd 1
|
||||
.ed_shift_pos_old rd 1
|
||||
.ed_height rd 1
|
||||
.mouseX rd 1
|
||||
.mouseY rd 1
|
||||
}
|
||||
|
||||
Button1 BUTTON
|
||||
EditBox EDITBOX
|
||||
|
||||
i_end:
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
Binary file not shown.
@ -1,362 +0,0 @@
|
||||
;
|
||||
;
|
||||
; This is example of using GUI component Image from libGUI.
|
||||
;
|
||||
;
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 7*1024+100
|
||||
dd 7*1024+100
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall 68,19,sys_libGUI_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [crate_button],eax
|
||||
|
||||
push fnCraeteImage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [crate_image],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],10
|
||||
mov [Button1.y],50
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],dword ecx
|
||||
mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
push Button1
|
||||
push Parend
|
||||
call [crate_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
;********************************************
|
||||
;******************Init Image****************
|
||||
;********************************************
|
||||
|
||||
mov [Image.type],byte 10000000b
|
||||
mov [Image.x],25
|
||||
mov [Image.y],5
|
||||
mov [Image.sizex],40
|
||||
mov [Image.sizey],40
|
||||
mov [Image.pointer],Picture
|
||||
|
||||
push Image
|
||||
push Parend
|
||||
call [crate_image]
|
||||
mov [PointerToControlForImage],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[PointerToControlForButtonExit]
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,11b
|
||||
jne no_crossing_pressing_button
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_crossing_pressing_button:
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,1b
|
||||
jne no_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForImage]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,100
|
||||
add ecx,100
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
text1 db 'Exit',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteImage db 'CraeteImage',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
crate_button dd 0
|
||||
crate_image dd 0
|
||||
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForImage dd 0
|
||||
|
||||
button_pressed dd 0
|
||||
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
|
||||
ColorsTable rd 10
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
struc IMAGE
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.pointer rd 1
|
||||
}
|
||||
|
||||
Button1 BUTTON
|
||||
Image IMAGE
|
||||
|
||||
untibug: rb 1000
|
||||
|
||||
Picture:
|
||||
file 'koslogo.raw'
|
||||
|
||||
i_end:
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,377 +0,0 @@
|
||||
;
|
||||
;
|
||||
; This is example using GUI component Number from libGUI.
|
||||
;
|
||||
;
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 1700
|
||||
dd 1700
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall 68,19,sys_libGUI_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_button],eax
|
||||
|
||||
push fnCraeteNumber
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_number],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],10
|
||||
mov [Button1.y],50
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],dword ecx
|
||||
mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
push Button1
|
||||
push Parend
|
||||
call [craete_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
;********************************************
|
||||
;****************Init Numbers****************
|
||||
;********************************************
|
||||
|
||||
mov [NumberFloat.type],byte 10000010b
|
||||
mov [NumberFloat.color],0xffffff
|
||||
mov [NumberFloat.x],20
|
||||
mov [NumberFloat.y],10
|
||||
mov [NumberFloat.parameters],4*65536+5
|
||||
mov [NumberFloat.number],-1234.56789
|
||||
|
||||
mov [NumberInteger.type],byte 10000000b
|
||||
mov [NumberInteger.color],0xffffff
|
||||
mov [NumberInteger.x],26
|
||||
mov [NumberInteger.y],30
|
||||
mov [NumberInteger.parameters],8*65536
|
||||
mov [NumberInteger.number],12345678
|
||||
|
||||
push NumberFloat
|
||||
push Parend
|
||||
call [craete_number]
|
||||
mov [PointerToControlForNumberFloat],eax
|
||||
|
||||
push NumberInteger
|
||||
push Parend
|
||||
call [craete_number]
|
||||
mov [PointerToControlForNumberInteger],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],dword 1
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[PointerToControlForButtonExit]
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,11b
|
||||
jne no_crossing_pressing_button
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_crossing_pressing_button:
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,1b
|
||||
jne no_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForNumberFloat]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForNumberInteger]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,100
|
||||
add ecx,100
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
text1 db 'Exit',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteNumber db 'CraeteNumber',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
craete_button dd 0
|
||||
craete_number dd 0
|
||||
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForNumberFloat dd 0
|
||||
PointerToControlForNumberInteger dd 0
|
||||
|
||||
button_pressed dd 0
|
||||
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
|
||||
ColorsTable rd 10
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
|
||||
struc NUMBER
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.number rd 1
|
||||
.parameters rd 1
|
||||
}
|
||||
|
||||
Button1 BUTTON
|
||||
NumberFloat NUMBER
|
||||
NumberInteger NUMBER
|
||||
|
||||
i_end:
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,424 +0,0 @@
|
||||
;
|
||||
;
|
||||
; Example of using GUI componet ProgressBar from libGUI
|
||||
;
|
||||
;
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 124*1024
|
||||
dd 124*1024
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall 68,19,sys_libGUI_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnActivateTrapForSpecializedMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [activate_trap_for_specialized_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_button],eax
|
||||
|
||||
push fnCraeteProgressbar
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_progress_bar],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],60
|
||||
mov [Button1.y],50
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],dword ecx
|
||||
mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
mov [ProgressBar.type],byte 10000001b
|
||||
mov [ProgressBar.color1],dword 0xffffff
|
||||
mov [ProgressBar.color2],0xff0000
|
||||
mov [ProgressBar.color3],ecx
|
||||
mov [ProgressBar.x],5
|
||||
mov [ProgressBar.y],5
|
||||
mov [ProgressBar.sizex],175
|
||||
mov [ProgressBar.sizey],16
|
||||
mov [ProgressBar.progres],0
|
||||
|
||||
push Button1
|
||||
push Parend
|
||||
call [craete_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
push ProgressBar
|
||||
push Parend
|
||||
call [craete_progress_bar]
|
||||
mov [PointerToControlForProgressBar],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov [progress],0.02
|
||||
mov [progress_step],0.01
|
||||
still:
|
||||
;----------------------------------------
|
||||
;--send special message for ProgressBar--
|
||||
;----------------------------------------
|
||||
|
||||
mov ebx,[progress]
|
||||
mov eax,[PointerToControlForProgressBar]
|
||||
mov [eax+44+26],ebx
|
||||
|
||||
push eax
|
||||
call [activate_trap_for_specialized_message]
|
||||
|
||||
fld [progress_step]
|
||||
fld [progress]
|
||||
fadd st0,st1
|
||||
fstp [progress]
|
||||
fstp st0
|
||||
|
||||
cmp [progress],dword 1.0
|
||||
jl no_1_
|
||||
|
||||
mov [progress],0.02
|
||||
mov eax,[PointerToControlForProgressBar]
|
||||
mov [eax+44+26],dword 0.02
|
||||
|
||||
push eax
|
||||
call [activate_trap_for_specialized_message]
|
||||
|
||||
mov [Message],dword 1
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
no_1_:
|
||||
|
||||
;fld [progress]
|
||||
;fcmovbe
|
||||
;fstsw ax
|
||||
;sahf
|
||||
;jle no_1_
|
||||
|
||||
;no_1_:
|
||||
|
||||
mov [Message],dword 3
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mcall 5,1
|
||||
|
||||
mcall 11
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],dword 1
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[PointerToControlForButtonExit]
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,11b
|
||||
jne no_crossing_pressing_button
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_crossing_pressing_button:
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,1b
|
||||
jne no_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForProgressBar]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,200
|
||||
add ecx,100
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
;call print_controls_information
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
text1 db 'Exit',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteProgressbar db 'CraeteProgressbar',0
|
||||
fnActivateTrapForSpecializedMessage db 'ActivateTrapForSpecializedMessage',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
craete_button dd 0
|
||||
|
||||
craete_progress_bar dd 0
|
||||
|
||||
activate_trap_for_specialized_message dd 0
|
||||
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForProgressBar dd 0
|
||||
|
||||
button_pressed dd 0
|
||||
progress dd 0
|
||||
progress_step dd 0
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
|
||||
ColorsTable rd 10
|
||||
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
struc PROGRESSBAR
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color1 rd 1
|
||||
.color2 rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.progres rd 1
|
||||
.color3 rd 1
|
||||
}
|
||||
|
||||
Button1 BUTTON
|
||||
ProgressBar PROGRESSBAR
|
||||
i_end:
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,506 +0,0 @@
|
||||
;
|
||||
;
|
||||
; This is example of using GUI component Scroller from libGUI
|
||||
;
|
||||
;
|
||||
|
||||
control_hader_size = 44
|
||||
control_scroller_data_size = 29
|
||||
control_button_data_size = 50
|
||||
|
||||
first_child_button_pressed = 1b
|
||||
second_child_button_pressed = 10000b
|
||||
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 4000
|
||||
dd 4000
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
;load dll from system directory
|
||||
mcall 68,19,sys_dll_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_button],eax
|
||||
|
||||
push fnCraeteScroller
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_scroller],eax
|
||||
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [ButtonExit.type],byte 10010001b
|
||||
mov [ButtonExit.x],90
|
||||
mov [ButtonExit.y],160
|
||||
mov [ButtonExit.width],word 70
|
||||
mov [ButtonExit.height],word 20
|
||||
mov [ButtonExit.color1],dword ecx
|
||||
mov [ButtonExit.color2],dword 0xffffff
|
||||
mov [ButtonExit.text],text
|
||||
|
||||
|
||||
push ButtonExit
|
||||
push Parend
|
||||
call [craete_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
;********************************************
|
||||
;***************Init scrollers****************
|
||||
;********************************************
|
||||
|
||||
;init vertical scroller
|
||||
mov ecx,[ColorsTable+8]
|
||||
mov [VerticalScroller.type],byte 11100001b
|
||||
mov [VerticalScroller.x],10
|
||||
mov [VerticalScroller.y],30
|
||||
mov [VerticalScroller.pos],0.2
|
||||
mov [VerticalScroller.length],200
|
||||
mov [VerticalScroller.size],0.9
|
||||
mov [VerticalScroller.color1],ecx
|
||||
|
||||
|
||||
push VerticalScroller
|
||||
push Parend
|
||||
call [craete_scroller]
|
||||
mov [PointerToControlForVerticalScroller],eax
|
||||
|
||||
;init horizontal scroller
|
||||
mov ecx,[ColorsTable+8]
|
||||
mov [HorizontalScroller.type],byte 11110010b
|
||||
mov [HorizontalScroller.x],30
|
||||
mov [HorizontalScroller.y],30
|
||||
mov [HorizontalScroller.pos],0.7
|
||||
mov [HorizontalScroller.length],200
|
||||
mov [HorizontalScroller.size],0.3
|
||||
mov [HorizontalScroller.color1],0xaabbccff;ecx
|
||||
|
||||
push HorizontalScroller
|
||||
push Parend
|
||||
call [craete_scroller]
|
||||
mov [PointerToControlForHorizontalScroller],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
mov [SystemEvent],eax
|
||||
|
||||
;-----------------------
|
||||
;check for redraw window
|
||||
;-----------------------
|
||||
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;---------------------
|
||||
;check for keys events
|
||||
;---------------------
|
||||
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;-------------------------
|
||||
;check for events of mouse
|
||||
;-------------------------
|
||||
|
||||
cmp eax,3
|
||||
jne no_button_close_window
|
||||
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_button_close_window:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
;craete message of mouse for controls
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send message to controls
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
;interraction with button exit
|
||||
;copy data of scroller of button from control to structure
|
||||
|
||||
mov esi,[PointerToControlForButtonExit]
|
||||
add esi,control_hader_size
|
||||
mov edi,ButtonExit
|
||||
mov ecx,control_button_data_size
|
||||
rep movsb
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ButtonExit.flag]
|
||||
|
||||
;check button for pressing
|
||||
and al,10b
|
||||
test al,al
|
||||
jz button_3_not_pressed
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
jmp no_pressed_button
|
||||
|
||||
button_3_not_pressed:
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_pressed_button
|
||||
|
||||
jmp exit
|
||||
no_pressed_button:
|
||||
|
||||
;interraction with vertical scroller
|
||||
|
||||
;copy data of vertical scroller from control to structure
|
||||
|
||||
mov esi,[PointerToControlForVerticalScroller]
|
||||
add esi,control_hader_size
|
||||
mov edi,VerticalScroller
|
||||
mov ecx,control_scroller_data_size
|
||||
rep movsb
|
||||
|
||||
mov eax,[VerticalScroller.pos]
|
||||
mov [PosY_float],eax ;position of scroll bar from 0...1
|
||||
|
||||
xor edx,edx
|
||||
call DrawRectangle
|
||||
|
||||
xor eax,eax
|
||||
mov ax,[VerticalScroller.buttons_flags]
|
||||
and ax,first_child_button_pressed
|
||||
test ax,ax
|
||||
jz vertical_first_child_button_not_pressed
|
||||
|
||||
mov edx,0xff00
|
||||
call DrawRectangle
|
||||
|
||||
vertical_first_child_button_not_pressed:
|
||||
|
||||
|
||||
xor eax,eax
|
||||
mov ax,[VerticalScroller.buttons_flags]
|
||||
and ax,second_child_button_pressed
|
||||
test ax,ax
|
||||
jz vertical_second_child_button_not_pressed
|
||||
|
||||
mov edx,0xff
|
||||
call DrawRectangle
|
||||
|
||||
vertical_second_child_button_not_pressed:
|
||||
|
||||
;interraction with horizontal scroller
|
||||
|
||||
;copy data of horizontal scroller from control to structure
|
||||
|
||||
mov esi,[PointerToControlForHorizontalScroller]
|
||||
add esi,control_hader_size
|
||||
mov edi,HorizontalScroller
|
||||
mov ecx,control_scroller_data_size
|
||||
rep movsb
|
||||
|
||||
xor eax,eax
|
||||
mov ax,[HorizontalScroller.buttons_flags]
|
||||
and ax,first_child_button_pressed
|
||||
test ax,ax
|
||||
jz horizontal_first_child_button_not_pressed
|
||||
|
||||
mov edx,0xffffff
|
||||
call DrawRectangle
|
||||
|
||||
horizontal_first_child_button_not_pressed:
|
||||
|
||||
xor eax,eax
|
||||
mov ax,[HorizontalScroller.buttons_flags]
|
||||
and ax,second_child_button_pressed
|
||||
test ax,ax
|
||||
jz horizontal_second_child_button_not_pressed
|
||||
|
||||
mov edx,0xff0000
|
||||
call DrawRectangle
|
||||
|
||||
horizontal_second_child_button_not_pressed:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
;free resourses
|
||||
push [PointerToControlForVerticalScroller]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForHorizontalScroller]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,280
|
||||
add ecx,280
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
DrawRectangle:
|
||||
|
||||
mov eax,13
|
||||
mov ebx,100*65536+50
|
||||
mov ecx,100*65536+50
|
||||
int 0x40
|
||||
|
||||
ret
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_dll_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
text db 'Exit',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteScroller db 'CraeteScroller',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
craete_button dd 0
|
||||
craete_scroller dd 0
|
||||
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForHorizontalScroller dd 0
|
||||
PointerToControlForVerticalScroller dd 0
|
||||
|
||||
|
||||
SystemEvent dd 0
|
||||
|
||||
PosX_float dd 0
|
||||
PosY_float dd 0
|
||||
|
||||
|
||||
button_pressed dd 0
|
||||
|
||||
IPC_table rd 256
|
||||
path rb 256
|
||||
ColorsTable rd 10
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
x dd 0
|
||||
y dd 0
|
||||
number dd 0
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
struc SCROLLER
|
||||
{
|
||||
.type rb 1
|
||||
.x rw 1
|
||||
.y rw 1
|
||||
.length rw 1
|
||||
.color1 rd 1
|
||||
.size rd 1
|
||||
.pos rd 1
|
||||
.buttons_flags rw 1
|
||||
.ChildButton1 rd 1
|
||||
.ChildButton2 rd 1
|
||||
.mouseX rw 1
|
||||
.mouseY rw 1
|
||||
}
|
||||
|
||||
ButtonExit BUTTON
|
||||
VerticalScroller SCROLLER
|
||||
HorizontalScroller SCROLLER
|
||||
|
||||
|
||||
i_end:
|
@ -1,47 +0,0 @@
|
||||
|
||||
_ksys_cofflib_getproc:
|
||||
|
||||
mov ebx,[esp+4]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[esp+8]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret 8
|
@ -1,366 +0,0 @@
|
||||
;
|
||||
;
|
||||
; This is example using GUI component Text from libGUI.
|
||||
;
|
||||
;
|
||||
|
||||
include 'macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd 1600
|
||||
dd 1600
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
start:
|
||||
;init hepe of memory
|
||||
mcall 68,11
|
||||
|
||||
;set current dir as ./
|
||||
call GetPath
|
||||
|
||||
;load dll
|
||||
mcall 68,19,path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall 68,19,sys_libGUI_path
|
||||
|
||||
test eax,eax
|
||||
jnz libGUI_loaded
|
||||
|
||||
mcall -1
|
||||
|
||||
libGUI_loaded:
|
||||
|
||||
mov [myexport],eax
|
||||
|
||||
;load dll functions
|
||||
|
||||
push fnDestroyControl
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [destroy_control],eax
|
||||
|
||||
push fnSendMessage
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [send_message],eax
|
||||
|
||||
push fnCraeteButton
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_button],eax
|
||||
|
||||
push fnCraeteText
|
||||
push [myexport]
|
||||
call _ksys_cofflib_getproc
|
||||
mov [craete_text],eax
|
||||
|
||||
;set events mask
|
||||
mcall 40,1100111b
|
||||
|
||||
;get standart colors table
|
||||
mcall 48,3,ColorsTable,40
|
||||
|
||||
;*********************************************
|
||||
;****************Init Butttons****************
|
||||
;*********************************************
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
mov [Button1.type],byte 10010001b
|
||||
mov [Button1.x],80
|
||||
mov [Button1.y],50
|
||||
mov [Button1.width],word 70
|
||||
mov [Button1.height],word 20
|
||||
mov [Button1.color1],dword ecx
|
||||
mov [Button1.color2],dword 0xffffff
|
||||
mov [Button1.text],text1
|
||||
|
||||
push Button1
|
||||
push Parend
|
||||
call [craete_button]
|
||||
mov [PointerToControlForButtonExit],eax
|
||||
|
||||
mov ecx,[ColorsTable+8]
|
||||
and ecx,0xffffff
|
||||
|
||||
|
||||
;********************************************
|
||||
;******************Init Text*****************
|
||||
;********************************************
|
||||
|
||||
mov [Text.type],byte 10000010b
|
||||
mov [Text.color],0xffffff
|
||||
mov [Text.background_color],0xff
|
||||
mov [Text.x],5
|
||||
mov [Text.y],10
|
||||
mov [Text.length],36
|
||||
mov [Text.pointer],text_for_text
|
||||
|
||||
|
||||
push Text
|
||||
push Parend
|
||||
call [craete_text]
|
||||
mov [PointerToControlForText],eax
|
||||
|
||||
call draw_window
|
||||
|
||||
|
||||
;send message 1 for redrawing ALL controls
|
||||
mov [Message],dword 1
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
still:
|
||||
mcall 10
|
||||
|
||||
;check for redraw window
|
||||
cmp eax,1
|
||||
jne no_window
|
||||
|
||||
call draw_window
|
||||
|
||||
mov [Message],dword 1
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
jmp still
|
||||
no_window:
|
||||
|
||||
;check for keys events
|
||||
cmp eax,2
|
||||
jne no_keys
|
||||
|
||||
mcall 2
|
||||
shr eax,8
|
||||
|
||||
mov [Message],dword 2
|
||||
mov [Message+4],eax
|
||||
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[Message+4]
|
||||
|
||||
cmp al,27
|
||||
je exit
|
||||
|
||||
jmp still
|
||||
no_keys:
|
||||
|
||||
;check for pressed butons
|
||||
cmp eax,3
|
||||
jne no_buttons
|
||||
|
||||
mcall 17
|
||||
shr eax,8
|
||||
|
||||
jmp still
|
||||
no_buttons:
|
||||
|
||||
;check for mouse events
|
||||
cmp eax,6
|
||||
jne no_mouse
|
||||
|
||||
mov [Message],dword 6
|
||||
|
||||
mcall 37,1
|
||||
mov ebx,eax
|
||||
shr eax,16 ;x
|
||||
and ebx,0xffff ;y
|
||||
|
||||
mov [Message+4],eax
|
||||
mov [Message+8],ebx
|
||||
|
||||
mcall 37,2
|
||||
mov [Message+12],eax
|
||||
|
||||
;send system events to control
|
||||
push Message
|
||||
push Parend
|
||||
call [send_message]
|
||||
|
||||
mov eax,[PointerToControlForButtonExit]
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,11b
|
||||
jne no_crossing_pressing_button
|
||||
|
||||
mov [button_pressed],1
|
||||
|
||||
no_crossing_pressing_button:
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,byte[eax+45]
|
||||
cmp bl,1b
|
||||
jne no_crossing_button
|
||||
|
||||
cmp [button_pressed],1
|
||||
jne no_crossing_button
|
||||
|
||||
jmp exit
|
||||
|
||||
no_crossing_button:
|
||||
|
||||
jmp still
|
||||
no_mouse:
|
||||
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
|
||||
push [PointerToControlForButtonExit]
|
||||
call [destroy_control]
|
||||
|
||||
push [PointerToControlForText]
|
||||
call [destroy_control]
|
||||
|
||||
mcall -1
|
||||
|
||||
|
||||
;**********************************************
|
||||
;*******************Draw window****************
|
||||
;**********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12,1
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,50
|
||||
mov ecx,50
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,250
|
||||
add ecx,100
|
||||
mov edx,0x03aabbcc
|
||||
mov esi,0x805080d0
|
||||
mov edi,0x005080d0
|
||||
mcall
|
||||
|
||||
;call print_controls_information
|
||||
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
|
||||
GetPath:
|
||||
|
||||
mov ebx,255
|
||||
mov ecx,path
|
||||
|
||||
next_symvol:
|
||||
mov edx,ecx
|
||||
add edx,ebx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[edx]
|
||||
cmp eax,'/'
|
||||
je exit_path
|
||||
|
||||
dec ebx
|
||||
jnz next_symvol
|
||||
|
||||
exit_path:
|
||||
|
||||
inc edx
|
||||
mov esi,dll_name
|
||||
mov edi,edx
|
||||
mov ecx,10
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
include 'getproc.asm'
|
||||
|
||||
;************************************************************
|
||||
;***************************DATA*****************************
|
||||
;************************************************************
|
||||
|
||||
align 4
|
||||
|
||||
dll_name db 'libGUI.obj',0
|
||||
sys_libGUI_path db '/sys/lib/libGUI.obj',0
|
||||
|
||||
text1 db 'Exit',0
|
||||
|
||||
text_for_text db 'Example of using GUI component text.',0
|
||||
|
||||
fnDestroyControl db 'DestroyControl',0
|
||||
fnSendMessage db 'SendMessage',0
|
||||
fnCraeteButton db 'CraeteButton',0
|
||||
fnCraeteText db 'CraeteText',0
|
||||
|
||||
myexport dd 0
|
||||
|
||||
destroy_control dd 0
|
||||
send_message dd 0
|
||||
craete_button dd 0
|
||||
craete_text dd 0
|
||||
|
||||
PointerToControlForButtonExit dd 0
|
||||
|
||||
PointerToControlForText dd 0
|
||||
|
||||
button_pressed dd 0
|
||||
|
||||
|
||||
path rb 256
|
||||
|
||||
Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes
|
||||
Message rd 4
|
||||
|
||||
ColorsTable rd 10
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.type db 1
|
||||
.flag db 1
|
||||
.x dw 1
|
||||
.y dw 1
|
||||
.width dw 1
|
||||
.height dw 1
|
||||
.image dd 1
|
||||
.imageX dw 1
|
||||
.imageY dw 1
|
||||
.imageSizeX dw 1
|
||||
.imageSizeY dw 1
|
||||
.transparentColor dd 1
|
||||
.text dd 1
|
||||
.textX dw 1
|
||||
.textY dw 1
|
||||
.textcolor dd 1
|
||||
.color1 dd 1
|
||||
.color2 dd 1
|
||||
.mouseX dw 1
|
||||
.mouseY dw 1
|
||||
}
|
||||
|
||||
struc TEXT
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.length rd 1
|
||||
.pointer rd 1
|
||||
.background_color rd 1
|
||||
}
|
||||
|
||||
Button1 BUTTON
|
||||
Text TEXT
|
||||
|
||||
i_end:
|
@ -1,29 +0,0 @@
|
||||
RUSSIAN
|
||||
|
||||
Åñòü íåñêîëüêî ñïîñîáîâ óñòàíîâèòü libGUI.
|
||||
|
||||
1) Óñòàíîâêà èç KolibriOS.
|
||||
|
||||
Çàãðóçèòå KolibriOS. Ïðè ïîìîùè ôàéëîâîãî ìåíåäæåðà (KFAR èëè KFM íà âàø âûáîð) çàéäèòå â äèðåêòîðèþ /rd/1/lib/ è ñêîïèðóéòå òóäà libGUI.obj
|
||||
Çàïóñòèòå ïðîãðàììó RDSAVE. Åñëè âû çàãðóçèëèñü ñ æ¸ñòêîãî äèñêà, òî ñîõðàíèòå îáðàç íà æ¸ñòêèé äèñê. Ïî óìîë÷àíèþ ïîäðàçóìåâàåòñÿ, ÷òî Âû
|
||||
çàãðóçèëè KolibriOS èç äèðåêòîðèè /hdx/1/kolibri/ , ãäå x çàâèñèò îò òîãî, íà êàêîì IDE ðàçú¸ìå íàõîäèòüñÿ âàø æ¸ñòêèé äèñê. Çíà÷åíèå x âû ìîæåòå
|
||||
ïîñìîòðåòü â ôàéëîâîì ìåíåäæåðå.Åñëè âû çàãðóçèëèñü ñ floppy äèñêà, òî íàæìèòå ñîîòâåòñòâóþùóþ êíîïêó.
|
||||
Âñ¸, óñòàíîâêà çàêîí÷åíà!
|
||||
|
||||
2)Îòêðîéòå îáðàç KOLIBRI.IMG ,Ýòî ìîæíî ñäåëàòü ïðè ïîìîùè ïðîãðàììû WinImage èëè êàêîé ëèáî äðóãîé ïðîãðàììû, ðàáîòàþùåé ñ img îáðàçàìè.
|
||||
Çàéäèòå â îáðàçå â ïàïêó lib è ñêîïèðóéòå òóäà libGUI.obj . Ñîõðàíèòå îáðàç.
|
||||
|
||||
ENGLISH
|
||||
|
||||
There are some ways to establish libGUI.
|
||||
|
||||
1) Installation from KolibriOS.
|
||||
|
||||
Load KolibriOS. By means of the file manager (KFAR or KFM on your choice) go in a directory/rd/1/lib/and copy there libGUI.obj
|
||||
Start program RDSAVE. If you were loaded from a hard disk keep an image on a hard disk. By default it is meant, that you
|
||||
Have loaded KolibriOS from a directory/hdx/1/kolibri/where x depends on on what IDE a socket to be your hard disk. Value x you can
|
||||
To look in the file manager. If you were loaded with floppy a disk press the appropriate button.
|
||||
Everything, installation is completed!
|
||||
|
||||
2) Open image KOLIBRI.IMG, It can be made by means of program WinImage or what or other program working with img in the images.
|
||||
Go in an image in a folder lib and copy there libGUI.obj. Keep an image.
|
@ -1,22 +0,0 @@
|
||||
;*******************************************************
|
||||
;*Function activate a trap for the specialized message.*
|
||||
;*******************************************************
|
||||
|
||||
;IN
|
||||
;void ActivateTrapForSpecializedMessage(dword *control)
|
||||
|
||||
activate_trap_for_specialized_message:
|
||||
|
||||
push eax
|
||||
push ebx
|
||||
|
||||
mov ebx,[esp+8+4]
|
||||
xor eax,eax
|
||||
mov al,[ebx+control_header_size]
|
||||
or al,activate_trap
|
||||
mov [ebx+control_header_size],al
|
||||
|
||||
pop ebx
|
||||
pop eax
|
||||
|
||||
ret 4
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,251 +0,0 @@
|
||||
|
||||
cb_control_data_dize = 44
|
||||
|
||||
;****************************************************
|
||||
;****************craete CheckBox**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to parend
|
||||
;pointer to CheckBox's structure
|
||||
;OUT
|
||||
;pointer to initialized control
|
||||
align 4
|
||||
|
||||
craete_check_box:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+24+4]
|
||||
mov eax,[esp+24+8]
|
||||
|
||||
mov [PointerToStructureForCheckBox],eax
|
||||
|
||||
mov eax,control_header_size+cb_control_data_dize
|
||||
call craete_control
|
||||
|
||||
;set all CheckBox's parameters in control
|
||||
mov [eax],dword check_box
|
||||
|
||||
mov ecx,cb_control_data_dize
|
||||
mov esi,[PointerToStructureForCheckBox]
|
||||
mov edi,eax
|
||||
add edi,control_header_size
|
||||
rep movsb
|
||||
|
||||
call get_skin_height
|
||||
|
||||
mov ebx,[PointerToStructureForCheckBox]
|
||||
xor ecx,ecx
|
||||
xor edx,edx
|
||||
mov cx,[ebx+2] ;CheckBox x
|
||||
mov dx,[ebx+4] ;CheckBox y
|
||||
mov esi,[ebx+10] ;CheckBox size
|
||||
add ecx,border_width
|
||||
add edx,[skin_height]
|
||||
;copy information to control
|
||||
mov [eax+24],ecx
|
||||
mov [eax+28],edx
|
||||
mov [eax+32],esi
|
||||
mov [eax+36],esi
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 8
|
||||
|
||||
;****************************************************
|
||||
;*****************Draw CheckBox**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to control of CheckBox
|
||||
;message
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
check_box:
|
||||
|
||||
;get message
|
||||
mov eax,[esp+8]
|
||||
|
||||
;get pointer to control of CheckBox
|
||||
mov esi,[esp+4]
|
||||
mov [PointerForCheckBox],esi
|
||||
|
||||
;copy information from control to structure
|
||||
add esi,control_header_size
|
||||
mov edi,dword CheckBox
|
||||
mov ecx,control_header_size+cb_control_data_dize
|
||||
rep movsb
|
||||
|
||||
push eax
|
||||
;load coordinats and size from control
|
||||
mov eax,[PointerForCheckBox]
|
||||
mov ebx,[eax+24] ;x
|
||||
mov ecx,[eax+28] ;y
|
||||
mov edx,[eax+32] ;size
|
||||
;set current coordinats and sizes in CheckBox
|
||||
mov [CheckBox.ch_left],bx
|
||||
mov [CheckBox.ch_top],cx
|
||||
mov [CheckBox.ch_size],edx
|
||||
pop eax
|
||||
|
||||
cmp [eax],dword 1
|
||||
jne no_redraw_all_check_box
|
||||
|
||||
mov eax,13
|
||||
mov bx,[CheckBox.ch_left]
|
||||
mov cx,[CheckBox.ch_top]
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ecx,[CheckBox.ch_size]
|
||||
mov edx,[CheckBox.ch_border_color]
|
||||
mcall
|
||||
|
||||
mov edx,[CheckBox.ch_color]
|
||||
add ebx,1 shl 16 - 2
|
||||
add ecx,1 shl 16 - 2
|
||||
mcall
|
||||
|
||||
mov eax,[CheckBox.ch_size]
|
||||
mov ebx,eax
|
||||
mov ecx,3
|
||||
shr ebx,1
|
||||
cdq
|
||||
idiv ecx
|
||||
mov [CheckBox.ch_size_2],bx
|
||||
mov [CheckBox.ch_size_3],ax
|
||||
|
||||
test word [CheckBox.ch_flags],2
|
||||
jz @f
|
||||
call draw_ch
|
||||
@@:
|
||||
|
||||
movzx ebx,word[CheckBox.ch_left]
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ebx,[CheckBox.ch_text_margin]
|
||||
shl ebx,16
|
||||
mov bx,[CheckBox.ch_top]
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ebx,(-9+1)
|
||||
mov ecx,[CheckBox.ch_text_color]
|
||||
|
||||
mov edx,[CheckBox.ch_text_ptr]
|
||||
movzx esi,word [CheckBox.ch_text_length]
|
||||
|
||||
mov eax,4
|
||||
mcall
|
||||
|
||||
jmp exit_check_box
|
||||
no_redraw_all_check_box:
|
||||
|
||||
|
||||
cmp [eax],dword 3
|
||||
je exit_check_box
|
||||
|
||||
cmp [eax],dword 6
|
||||
jne no_mouse_check_box
|
||||
|
||||
mov esi,[eax+4]
|
||||
mov edi,[eax+8]
|
||||
mov ebx,[eax+12] ;buttons of mouse state
|
||||
mov [CheckBox.mouseX],esi
|
||||
mov [CheckBox.mouseY],edi
|
||||
mov eax,ebx
|
||||
|
||||
test eax,eax
|
||||
jnz @f
|
||||
btr word [CheckBox.ch_flags],2
|
||||
jmp exit_check_box
|
||||
@@:
|
||||
bts word [CheckBox.ch_flags],2
|
||||
jc .mouse_end
|
||||
movzx esi,word [CheckBox.ch_text_length]
|
||||
|
||||
imul esi,6
|
||||
add esi,[CheckBox.ch_text_margin]
|
||||
|
||||
mov eax,[CheckBox.mouseX]
|
||||
shl eax,16
|
||||
add eax,[CheckBox.mouseY]
|
||||
|
||||
xor ebx,ebx
|
||||
|
||||
movzx ebx,word[CheckBox.ch_top]
|
||||
cmp ax,bx
|
||||
jl .mouse_end
|
||||
add ebx,[CheckBox.ch_size]
|
||||
cmp ax,bx
|
||||
jg .mouse_end
|
||||
|
||||
shr eax,16
|
||||
movzx ebx,word[CheckBox.ch_left]
|
||||
cmp ax,bx
|
||||
jl .mouse_end
|
||||
add ebx,[CheckBox.ch_size]
|
||||
add ebx,esi
|
||||
cmp ax,bx
|
||||
jg .mouse_end
|
||||
|
||||
bts word[CheckBox.ch_flags],1
|
||||
jc @f
|
||||
|
||||
call draw_ch
|
||||
|
||||
jmp .mouse_end
|
||||
@@:
|
||||
btr word[CheckBox.ch_flags],1
|
||||
call clear_ch
|
||||
|
||||
.mouse_end:
|
||||
|
||||
no_mouse_check_box:
|
||||
|
||||
exit_check_box:
|
||||
|
||||
;save resultat of work in control
|
||||
mov ecx,cb_control_data_dize ;save in control only flags
|
||||
mov esi,dword CheckBox
|
||||
mov edi,[PointerForCheckBox]
|
||||
add edi,control_header_size
|
||||
cld
|
||||
rep movsb
|
||||
|
||||
ret 8
|
||||
|
||||
;ch_text_margin=4
|
||||
;ch_size=11
|
||||
|
||||
clear_ch:
|
||||
mov edx,[CheckBox.ch_color]
|
||||
jmp @f
|
||||
|
||||
draw_ch:
|
||||
mov edx,[CheckBox.ch_border_color]
|
||||
@@:
|
||||
|
||||
movzx ebx,word[CheckBox.ch_left]
|
||||
add bx,[CheckBox.ch_size_3]
|
||||
shl ebx,16
|
||||
mov bx,[CheckBox.ch_size_2]
|
||||
;mov bp,bx
|
||||
;push bx
|
||||
movzx ecx,word [CheckBox.ch_top]
|
||||
mov eax,13
|
||||
add cx,[CheckBox.ch_size_3]
|
||||
shl ecx,16
|
||||
;mov cx,bp
|
||||
mov cx,[CheckBox.ch_size_2]
|
||||
mcall
|
||||
|
||||
ret
|
@ -1,26 +0,0 @@
|
||||
;eax - x1
|
||||
;ebx - y1
|
||||
;ecx - size x
|
||||
;edx - size y
|
||||
;esi - x2
|
||||
;edi - y2
|
||||
;if crossing than eax=0xffffff
|
||||
|
||||
CheckCrossingBox:
|
||||
|
||||
add ecx,eax
|
||||
add edx,ebx
|
||||
|
||||
cmp esi,eax
|
||||
jl exit_crossing
|
||||
cmp esi,ecx
|
||||
ja exit_crossing
|
||||
cmp edi,ebx
|
||||
jl exit_crossing
|
||||
cmp edi,edx
|
||||
ja exit_crossing
|
||||
xor eax,eax
|
||||
mov eax,0xffffff
|
||||
exit_crossing:
|
||||
|
||||
ret
|
@ -1 +0,0 @@
|
||||
__CPU_type fix p5
|
@ -1,131 +0,0 @@
|
||||
macro debug_print str
|
||||
{
|
||||
local ..string, ..label
|
||||
|
||||
jmp ..label
|
||||
..string db str,0
|
||||
..label:
|
||||
|
||||
pushf
|
||||
pushad
|
||||
mov edx,..string
|
||||
call debug_outstr
|
||||
popad
|
||||
popf
|
||||
}
|
||||
|
||||
dps fix debug_print
|
||||
|
||||
macro debug_print_dec arg
|
||||
{
|
||||
pushf
|
||||
pushad
|
||||
if ~arg eq eax
|
||||
mov eax,arg
|
||||
end if
|
||||
call debug_outdec
|
||||
popad
|
||||
popf
|
||||
}
|
||||
|
||||
dpd fix debug_print_dec
|
||||
|
||||
;---------------------------------
|
||||
debug_outdec: ;(eax - num, edi-str)
|
||||
push 10 ;2
|
||||
pop ecx ;1
|
||||
push -'0' ;2
|
||||
.l0:
|
||||
xor edx,edx ;2
|
||||
div ecx ;2
|
||||
push edx ;1
|
||||
test eax,eax ;2
|
||||
jnz .l0 ;2
|
||||
.l1:
|
||||
pop eax ;1
|
||||
add al,'0' ;2
|
||||
call debug_outchar ; stosb
|
||||
jnz .l1 ;2
|
||||
ret ;1
|
||||
;---------------------------------
|
||||
|
||||
debug_outchar: ; al - char
|
||||
pushf
|
||||
pushad
|
||||
mov cl,al
|
||||
mov eax,63
|
||||
mov ebx,1
|
||||
int 0x40
|
||||
popad
|
||||
popf
|
||||
ret
|
||||
|
||||
debug_outstr:
|
||||
mov eax,63
|
||||
mov ebx,1
|
||||
@@:
|
||||
mov cl,[edx]
|
||||
test cl,cl
|
||||
jz @f
|
||||
int 40h
|
||||
inc edx
|
||||
jmp @b
|
||||
@@:
|
||||
ret
|
||||
|
||||
|
||||
macro newline
|
||||
{
|
||||
dps <13,10>
|
||||
}
|
||||
|
||||
macro print message
|
||||
{
|
||||
dps message
|
||||
newline
|
||||
}
|
||||
|
||||
macro pregs
|
||||
{
|
||||
dps "EAX: "
|
||||
dpd eax
|
||||
dps " EBX: "
|
||||
dpd ebx
|
||||
newline
|
||||
dps "ECX: "
|
||||
dpd ecx
|
||||
dps " EDX: "
|
||||
dpd edx
|
||||
newline
|
||||
}
|
||||
|
||||
macro debug_print_hex arg
|
||||
{
|
||||
pushf
|
||||
pushad
|
||||
if ~arg eq eax
|
||||
mov eax, arg
|
||||
end if
|
||||
call debug_outhex
|
||||
popad
|
||||
popf
|
||||
}
|
||||
dph fix debug_print_hex
|
||||
|
||||
debug_outhex:
|
||||
; eax - number
|
||||
mov edx, 8
|
||||
.new_char:
|
||||
rol eax, 4
|
||||
movzx ecx, al
|
||||
and cl, 0x0f
|
||||
mov cl, [__hexdigits + ecx]
|
||||
pushad
|
||||
mcall 63, 1
|
||||
popad
|
||||
dec edx
|
||||
jnz .new_char
|
||||
ret
|
||||
|
||||
__hexdigits:
|
||||
db '0123456789ABCDEF'
|
@ -1,595 +0,0 @@
|
||||
|
||||
DrawLine:
|
||||
|
||||
mov eax,38
|
||||
mov ebx,[Line.x1]
|
||||
mov ecx,[Line.y1]
|
||||
mov edx,[Line.color]
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,[Line.x2]
|
||||
add ecx,[Line.y2]
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
DrawPixel:
|
||||
|
||||
xor eax,eax
|
||||
inc al
|
||||
mov ebx,[Pixel.x]
|
||||
mov ecx,[Pixel.y]
|
||||
mov edx,[Pixel.color]
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
RectangleContour:
|
||||
|
||||
mov eax,38
|
||||
mov ebx,[Rectangle.x]
|
||||
mov ecx,[Rectangle.y]
|
||||
mov edx,[Rectangle.color]
|
||||
mov esi,ebx
|
||||
mov edi,ecx
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,esi
|
||||
add ecx,edi
|
||||
add ebx,[Rectangle.width]
|
||||
mcall
|
||||
|
||||
mov eax,38
|
||||
mov ebx,[Rectangle.x]
|
||||
mov ecx,[Rectangle.y]
|
||||
mov edx,[Rectangle.color]
|
||||
add ecx,[Rectangle.height]
|
||||
mov esi,ebx
|
||||
mov edi,ecx
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,esi
|
||||
add ecx,edi
|
||||
add ebx,[Rectangle.width]
|
||||
mcall
|
||||
|
||||
mov eax,38
|
||||
mov ebx,[Rectangle.x]
|
||||
mov ecx,[Rectangle.y]
|
||||
mov edx,[Rectangle.color]
|
||||
mov esi,ebx
|
||||
mov edi,ecx
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,esi
|
||||
add ecx,edi
|
||||
add ecx,[Rectangle.height]
|
||||
mcall
|
||||
|
||||
mov eax,38
|
||||
mov ebx,[Rectangle.x]
|
||||
mov ecx,[Rectangle.y]
|
||||
mov edx,[Rectangle.color]
|
||||
add ebx,[Rectangle.width]
|
||||
mov esi,ebx
|
||||
mov edi,ecx
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,esi
|
||||
add ecx,edi
|
||||
add ecx,[Rectangle.height]
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
;eax -first color
|
||||
;ebx- second color
|
||||
;OUT
|
||||
;eax - averege color
|
||||
calculate_average_color:
|
||||
|
||||
and eax,0xffffff
|
||||
and ebx,0xffffff
|
||||
|
||||
mov [b_min],al
|
||||
mov [b_max],bl
|
||||
shr eax,8
|
||||
shr ebx,8
|
||||
mov [g_min],al
|
||||
mov [g_max],bl
|
||||
shr eax,8
|
||||
shr ebx,8
|
||||
mov [r_min],al
|
||||
mov [r_max],bl
|
||||
|
||||
xor eax,eax
|
||||
xor ebx,ebx
|
||||
mov al,[r_max]
|
||||
mov bl,[r_min]
|
||||
add eax,ebx
|
||||
shr eax,1
|
||||
mov [r],al
|
||||
|
||||
xor eax,eax
|
||||
xor ebx,ebx
|
||||
mov al,[g_max]
|
||||
mov bl,[g_min]
|
||||
add eax,ebx
|
||||
shr eax,1
|
||||
mov [g],al
|
||||
|
||||
xor eax,eax
|
||||
xor ebx,ebx
|
||||
mov al,[b_max]
|
||||
mov bl,[b_min]
|
||||
add eax,ebx
|
||||
shr eax,1
|
||||
mov [b],al
|
||||
|
||||
xor eax,eax
|
||||
mov al,[r]
|
||||
shl eax,8
|
||||
mov al,[g]
|
||||
shl eax,8
|
||||
mov al,[b]
|
||||
|
||||
ret
|
||||
|
||||
;eax -color
|
||||
;ebx- sub value
|
||||
;OUT
|
||||
;eax - sabved color
|
||||
calculate_sabved_color:
|
||||
|
||||
and eax,0xffffff
|
||||
|
||||
mov [b],al
|
||||
shr eax,8
|
||||
mov [g],al
|
||||
shr eax,8
|
||||
mov [r],al
|
||||
|
||||
sub [r],bl
|
||||
sub [g],bl
|
||||
sub [b],bl
|
||||
|
||||
xor eax,eax
|
||||
mov al,[r]
|
||||
shl eax,8
|
||||
mov al,[g]
|
||||
shl eax,8
|
||||
mov al,[b]
|
||||
|
||||
ret
|
||||
|
||||
DrawString:
|
||||
|
||||
mov ebx,[Button.text]
|
||||
call GetLengthString
|
||||
mov esi,eax
|
||||
|
||||
mov eax,4
|
||||
mov ebx,[Font.x]
|
||||
shl ebx,16
|
||||
add ebx,[Font.y]
|
||||
mov ecx,[Button.textcolor]
|
||||
mov edx,[Button.text]
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
;eax -first color
|
||||
;ebx- second color
|
||||
;ecx- x coordinat of rectangle
|
||||
;edx- y coordinat of rectangle
|
||||
;esi- rectangle size x
|
||||
;edi- rectangle size y
|
||||
|
||||
rectangle_gradient_right:
|
||||
|
||||
mov [line_coordinat_x],ecx
|
||||
mov [line_coordinat_y],edx
|
||||
mov [line_size_x],esi
|
||||
mov [line_size_y],edi
|
||||
|
||||
mov ecx,esi
|
||||
mov edx,dword pointer
|
||||
call gradient
|
||||
|
||||
mov ecx,[line_coordinat_y]
|
||||
shl ecx,16
|
||||
add ecx,[line_coordinat_y]
|
||||
add ecx,[line_size_y]
|
||||
|
||||
mov eax,[line_size_x]
|
||||
add [line_coordinat_x],eax
|
||||
|
||||
mov esi,dword pointer
|
||||
mov edi,[line_size_x]
|
||||
|
||||
next_vertical_line_draw_right:
|
||||
|
||||
mov eax,38
|
||||
mov ebx,[line_coordinat_x]
|
||||
shl ebx,16
|
||||
add ebx,[line_coordinat_x]
|
||||
mov edx,[esi]
|
||||
and edx,0xffffff
|
||||
mcall
|
||||
|
||||
add esi,3
|
||||
sub [line_coordinat_x],1
|
||||
|
||||
dec edi
|
||||
jnz next_vertical_line_draw_right
|
||||
|
||||
ret
|
||||
|
||||
;eax -first color
|
||||
;ebx- second color
|
||||
;ecx- x coordinat of rectangle
|
||||
;edx- y coordinat of rectangle
|
||||
;esi- rectangle size x
|
||||
;edi- rectangle size y
|
||||
|
||||
rectangle_gradient_left:
|
||||
|
||||
mov [line_coordinat_x],ecx
|
||||
mov [line_coordinat_y],edx
|
||||
mov [line_size_x],esi
|
||||
mov [line_size_y],edi
|
||||
|
||||
mov ecx,esi
|
||||
mov edx,dword pointer
|
||||
call gradient
|
||||
|
||||
mov ecx,[line_coordinat_y]
|
||||
shl ecx,16
|
||||
add ecx,[line_coordinat_y]
|
||||
add ecx,[line_size_y]
|
||||
|
||||
mov esi,dword pointer
|
||||
mov edi,[line_size_x]
|
||||
|
||||
next_vertical_line_draw_left:
|
||||
|
||||
mov eax,38
|
||||
mov ebx,[line_coordinat_x]
|
||||
shl ebx,16
|
||||
add ebx,[line_coordinat_x]
|
||||
mov edx,[esi]
|
||||
and edx,0xffffff
|
||||
mcall
|
||||
|
||||
add esi,3
|
||||
add [line_coordinat_x],1
|
||||
|
||||
dec edi
|
||||
jnz next_vertical_line_draw_left
|
||||
|
||||
ret
|
||||
|
||||
;eax -first color
|
||||
;ebx- second color
|
||||
;ecx- x coordinat of rectangle
|
||||
;edx- y coordinat of rectangle
|
||||
;esi- rectangle size x
|
||||
;edi- rectangle size y
|
||||
|
||||
rectangle_gradient_up:
|
||||
|
||||
mov [line_coordinat_x],ecx
|
||||
mov [line_coordinat_y],edx
|
||||
mov [line_size_x],esi
|
||||
mov [line_size_y],edi
|
||||
|
||||
mov ecx,edi
|
||||
mov edx,dword pointer
|
||||
call gradient
|
||||
|
||||
mov ebx,[line_coordinat_x]
|
||||
shl ebx,16
|
||||
add ebx,[line_coordinat_x]
|
||||
add ebx,[line_size_x]
|
||||
|
||||
mov eax,[line_size_y]
|
||||
add [line_coordinat_y],eax
|
||||
|
||||
mov esi,dword pointer
|
||||
mov edi,[line_size_y]
|
||||
|
||||
next_horizontal_line_draw_up:
|
||||
|
||||
mov eax,38
|
||||
mov ecx,[line_coordinat_y]
|
||||
shl ecx,16
|
||||
add ecx,[line_coordinat_y]
|
||||
mov edx,[esi]
|
||||
and edx,0xffffff
|
||||
mcall
|
||||
|
||||
add esi,3
|
||||
sub [line_coordinat_y],1
|
||||
|
||||
dec edi
|
||||
jnz next_horizontal_line_draw_up
|
||||
|
||||
ret
|
||||
|
||||
;eax -first color
|
||||
;ebx- second color
|
||||
;ecx- x coordinat of rectangle
|
||||
;edx- y coordinat of rectangle
|
||||
;esi- rectangle size x
|
||||
;edi- rectangle size y
|
||||
|
||||
rectangle_gradient_down:
|
||||
|
||||
mov [line_coordinat_x],ecx
|
||||
mov [line_coordinat_y],edx
|
||||
mov [line_size_x],esi
|
||||
mov [line_size_y],edi
|
||||
|
||||
mov ecx,edi
|
||||
mov edx,dword pointer
|
||||
call gradient
|
||||
|
||||
mov ebx,[line_coordinat_x]
|
||||
shl ebx,16
|
||||
add ebx,[line_coordinat_x]
|
||||
add ebx,[line_size_x]
|
||||
|
||||
mov esi,dword pointer
|
||||
mov edi,[line_size_y]
|
||||
|
||||
next_horizontal_line_draw_down:
|
||||
|
||||
mov eax,38
|
||||
mov ecx,[line_coordinat_y]
|
||||
shl ecx,16
|
||||
add ecx,[line_coordinat_y]
|
||||
mov edx,[esi]
|
||||
and edx,0xffffff
|
||||
mcall
|
||||
|
||||
add esi,3
|
||||
add [line_coordinat_y],1
|
||||
|
||||
dec edi
|
||||
jnz next_horizontal_line_draw_down
|
||||
|
||||
ret
|
||||
|
||||
;eax -first color
|
||||
;ebx- second color
|
||||
;ecx- length of line
|
||||
;edx- pointer to memory for colors of gradient
|
||||
|
||||
gradient:
|
||||
|
||||
mov [length],ecx
|
||||
|
||||
and eax,0xffffff
|
||||
and eax,0xffffff
|
||||
|
||||
mov [b_min],al
|
||||
mov [b_max],bl
|
||||
shr eax,8
|
||||
shr ebx,8
|
||||
mov [g_min],al
|
||||
mov [g_max],bl
|
||||
shr eax,8
|
||||
shr ebx,8
|
||||
mov [r_min],al
|
||||
mov [r_max],bl
|
||||
|
||||
mov eax,[length]
|
||||
dec eax
|
||||
mov [v],eax
|
||||
fild [v]
|
||||
|
||||
xor eax,eax
|
||||
mov al,[r_max]
|
||||
sub al,[r_min]
|
||||
mov [v],eax
|
||||
fild [v]
|
||||
fdiv st0,st1
|
||||
fstp [step_r]
|
||||
|
||||
xor eax,eax
|
||||
mov al,[g_max]
|
||||
sub al,[g_min]
|
||||
mov [v],eax
|
||||
fild [v]
|
||||
fdiv st0,st1
|
||||
fstp [step_g]
|
||||
|
||||
xor eax,eax
|
||||
mov al,[b_max]
|
||||
sub al,[b_min]
|
||||
mov [v],eax
|
||||
fild [v]
|
||||
fdiv st0,st1
|
||||
fstp [step_b]
|
||||
|
||||
fstp [v]
|
||||
|
||||
xor eax,eax
|
||||
mov al,[r_min]
|
||||
mov [r],al
|
||||
mov [v],eax
|
||||
fild [v]
|
||||
fstp [r_f]
|
||||
|
||||
xor eax,eax
|
||||
mov al,[g_min]
|
||||
mov [g],al
|
||||
mov [v],eax
|
||||
fild [v]
|
||||
fstp [g_f]
|
||||
|
||||
xor eax,eax
|
||||
mov al,[b_min]
|
||||
mov [b],al
|
||||
mov [v],eax
|
||||
fild [v]
|
||||
fstp [b_f]
|
||||
|
||||
next_gradient_color_save:
|
||||
|
||||
xor ebx,ebx
|
||||
xor eax,eax
|
||||
mov al,[r]
|
||||
mov bl,al
|
||||
shl eax,8
|
||||
mov al,[g]
|
||||
shl eax,8
|
||||
mov al,[b]
|
||||
|
||||
mov [edx],ax
|
||||
mov [edx+2],bl
|
||||
|
||||
fld [step_r]
|
||||
fld [r_f]
|
||||
fadd st0,st1
|
||||
fst [r_f]
|
||||
fistp [v]
|
||||
xor eax,eax
|
||||
mov eax,[v]
|
||||
mov [r],al
|
||||
fstp [v]
|
||||
|
||||
fld [step_g]
|
||||
fld [g_f]
|
||||
fadd st0,st1
|
||||
fst [g_f]
|
||||
fistp [v]
|
||||
xor eax,eax
|
||||
mov eax,[v]
|
||||
mov [g],al
|
||||
fstp [v]
|
||||
|
||||
fld [step_b]
|
||||
fld [b_f]
|
||||
fadd st0,st1
|
||||
fst [b_f]
|
||||
fistp [v]
|
||||
xor eax,eax
|
||||
mov eax,[v]
|
||||
mov [b],al
|
||||
fstp [v]
|
||||
|
||||
add edx,3
|
||||
|
||||
dec ecx
|
||||
jnz next_gradient_color_save
|
||||
|
||||
ret
|
||||
|
||||
;IN
|
||||
;NON
|
||||
;OUT
|
||||
;variable [skin_height]
|
||||
|
||||
get_skin_height:
|
||||
|
||||
pushad
|
||||
|
||||
mov eax,48
|
||||
mov ebx,4
|
||||
int 0x40
|
||||
|
||||
mov [skin_height],eax
|
||||
popad
|
||||
|
||||
ret
|
||||
;eax - x
|
||||
;ebx - y
|
||||
;ecx - size x
|
||||
;edx - size y
|
||||
;esi - pointer to memory for rectangle
|
||||
SaveFonForRectangle:
|
||||
|
||||
mov [Rectangle.x],eax
|
||||
mov [Rectangle.y],ebx
|
||||
mov [Rectangle.width],ecx
|
||||
mov [Rectangle.height],edx
|
||||
mov [PointerToMem],esi
|
||||
|
||||
;get bytes per string
|
||||
mov eax,61
|
||||
mov ebx,2
|
||||
mcall
|
||||
mov [BitsPerPixel],eax
|
||||
|
||||
mov eax,61
|
||||
mov ebx,3
|
||||
mcall
|
||||
mov [BytesPerString],eax
|
||||
|
||||
|
||||
;get window coordinats
|
||||
mov eax,9
|
||||
mov ebx,dword IPC_table
|
||||
or ecx,-1
|
||||
mcall
|
||||
|
||||
mov eax,dword[IPC_table+34]
|
||||
mov ebx,dword[IPC_table+38]
|
||||
;mov ecx,dword[IPC_table+42]
|
||||
;mov edx,dword[IPC_table+46]
|
||||
;mov [WindowCoordinatX],eax
|
||||
;mov [WindowCoordinatY],ebx
|
||||
;mov [WindowSizeX],ecx
|
||||
;mov [WindowSizeY],edx
|
||||
|
||||
add eax,[Rectangle.x]
|
||||
add ebx,[Rectangle.y]
|
||||
|
||||
imul ebx,[BytesPerString]
|
||||
mov esi,[Rectangle.width]
|
||||
|
||||
cmp [BitsPerPixel],24
|
||||
jne no_24
|
||||
|
||||
lea eax,[eax+eax*2]
|
||||
lea esi,[esi+esi*2]
|
||||
mov edi,3
|
||||
jmp exit_bits_per_pixel
|
||||
no_24:
|
||||
|
||||
shl eax,2
|
||||
shl esi,2
|
||||
mov edi,4
|
||||
exit_bits_per_pixel:
|
||||
|
||||
add eax,ebx
|
||||
|
||||
mov ebx,[BytesPerString]
|
||||
sub ebx,esi
|
||||
mov [offset],ebx
|
||||
|
||||
mov esi,[PointerToMem]
|
||||
mov edx,[Rectangle.height]
|
||||
next_string_pixels_save:
|
||||
|
||||
mov ecx,[Rectangle.width]
|
||||
next_pixel_save:
|
||||
|
||||
mov ebx,[gs:eax]
|
||||
and ebx,0xffffff
|
||||
mov [esi],bx
|
||||
shr ebx,16
|
||||
mov [esi+2],bl
|
||||
|
||||
add esi,3
|
||||
add eax,edi
|
||||
dec ecx
|
||||
jnz next_pixel_save
|
||||
|
||||
add eax,[offset]
|
||||
dec edx
|
||||
jnz next_string_pixels_save
|
||||
|
||||
exit_:
|
||||
ret
|
@ -1,267 +0,0 @@
|
||||
|
||||
eb_control_data_size = 82
|
||||
|
||||
;****************************************************
|
||||
;******************craete EditBox*********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to parend
|
||||
;pointer to EditBox's structure
|
||||
;OUT
|
||||
;pointer to initialized control
|
||||
align 4
|
||||
|
||||
craete_edit_box:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+24+4]
|
||||
mov eax,[esp+24+8]
|
||||
|
||||
mov [PointerToStructureForEditBox],eax
|
||||
|
||||
mov eax,control_header_size+eb_control_data_size
|
||||
call craete_control
|
||||
|
||||
;set all EditBox's parameters in control
|
||||
mov [eax],dword edit_box
|
||||
|
||||
mov ecx,eb_control_data_size
|
||||
mov esi,[PointerToStructureForEditBox]
|
||||
mov edi,eax
|
||||
add edi,control_header_size
|
||||
rep movsb
|
||||
|
||||
call get_skin_height
|
||||
|
||||
mov ebx,[PointerToStructureForEditBox]
|
||||
mov ecx,[ebx+4] ;x
|
||||
mov edx,[ebx+8] ;y
|
||||
mov esi,[ebx] ;size x
|
||||
mov edi,[ebx+70] ;size y
|
||||
add ecx,border_width
|
||||
add edx,[skin_height]
|
||||
;copy information to control
|
||||
mov [eax+24],ecx
|
||||
mov [eax+28],edx
|
||||
mov [eax+32],esi
|
||||
mov [eax+36],edi
|
||||
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 8
|
||||
|
||||
;****************************************************
|
||||
;******************Draw EditBox**********************
|
||||
;****************************************************
|
||||
;include 'editbox_mac.inc'
|
||||
;IN
|
||||
;pointer to control of EditBox
|
||||
;message
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
include 'editbox_mac.inc'
|
||||
|
||||
edit_box:
|
||||
;;;;;;;;;;;;
|
||||
;Structure from libGui á®æ¨ æ¨ï áâàãªâãà
|
||||
;;;;;;;;;;;;
|
||||
|
||||
;get message
|
||||
mov eax,[esp+8]
|
||||
|
||||
;get pointer to control of button
|
||||
mov esi,[esp+4]
|
||||
mov [PointerForEditBox],esi
|
||||
|
||||
;copy control to local control
|
||||
add esi,control_header_size
|
||||
mov edi,dword EditBox
|
||||
mov ecx,eb_control_data_size
|
||||
rep movsb
|
||||
|
||||
;;;;;;;;;;;;
|
||||
;Structure from libGui á®æ¨ æ¨ï áâàãªâãà
|
||||
;;;;;;;;;;;;
|
||||
srt_ed_libgui
|
||||
|
||||
push eax
|
||||
;load coordinats and size from control
|
||||
mov eax,[PointerForEditBox]
|
||||
mov ebx,[eax+24] ;x
|
||||
mov ecx,[eax+28] ;y
|
||||
mov edx,[eax+32] ;size x
|
||||
mov esi,[eax+36] ;size y
|
||||
;set current coordinats and sizes in EeditBox
|
||||
mov [EditBox.ed_left],ebx
|
||||
mov [EditBox.ed_top],ecx
|
||||
mov [EditBox.ed_width],edx
|
||||
mov [EditBox.ed_height],esi
|
||||
pop eax
|
||||
|
||||
;events of redraw all EditBox
|
||||
|
||||
cmp [eax],dword 1
|
||||
jne .no_redraw_all_edit_box
|
||||
|
||||
|
||||
call .draw_border
|
||||
.draw_bg_cursor_text:
|
||||
|
||||
call .check_offset
|
||||
|
||||
call .draw_bg
|
||||
|
||||
call .draw_shift
|
||||
.draw_cursor_text:
|
||||
|
||||
test word[EditBox.ed_flags],ed_focus
|
||||
je @f
|
||||
call .draw_cursor
|
||||
@@:
|
||||
call .draw_text
|
||||
|
||||
jmp .editbox_exit;exit_edit_box
|
||||
.no_redraw_all_edit_box:
|
||||
|
||||
|
||||
;events of keys for EditBox
|
||||
|
||||
cmp [eax],dword 2
|
||||
jne .no_keys_edit_box
|
||||
|
||||
mov ebx,[eax+4]
|
||||
shl ebx,8
|
||||
mov eax,ebx
|
||||
|
||||
test word [EditBox.ed_flags],ed_focus
|
||||
je .editbox_exit;exit_edit_box;@b
|
||||
|
||||
call .check_shift
|
||||
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®¢¥à塞, çâ® ¦ â® --------------------------------
|
||||
;----------------------------------------------------------
|
||||
|
||||
use_key_process backspase,delete,left,right,home,end,insert
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;‡ £«ãèª ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢¨§ â.¥. ¯à¨
|
||||
;®¡ à㦥¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
srt_ed_libgui
|
||||
use_key_no_process up,down,esc
|
||||
|
||||
;--- ¦ â ¤àã£ ï ª« ¢¨è ---
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;<EFBFBD>஢¥àª ãáâ ®¢«¥ «¨ ä« £ ¯à¨ ª®â®à®¬ 㦮 ¢ë¢®¤¨âì
|
||||
;⮫쪮 æ¨äàë ¢ 㦮¬ ¡®ªá¥ ¥á«¨ â ª®© ¥®¡å®¤¨¬®á⨠¥â
|
||||
;㦮 § ª®¬¥â¨à®¢ âì ¬ ªà®á
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
use_key_figures_only
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;¯à®¢¥àª shift ¡ë« «¨ ¦ â
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
are_key_shift_press
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ + ¤ «ì¥©è ï ®¡à ¡®âª
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
are_key_cur_end
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Ž¡à ¡®âª ª« ¢¨è insert,delete.backspase,home,end,left,right
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
use_work_key
|
||||
|
||||
|
||||
.no_keys_edit_box:
|
||||
|
||||
cmp [eax],dword 3
|
||||
je exit_edit_box
|
||||
|
||||
;events of mouse for EditBox
|
||||
|
||||
cmp [eax],dword 6
|
||||
jne .editbox_exit
|
||||
|
||||
mov esi,[eax+4]
|
||||
mov edi,[eax+8]
|
||||
mov ecx,[eax+12]
|
||||
mov [EditBox.mouseX],esi
|
||||
mov [EditBox.mouseY],edi
|
||||
mov [ButtonsOfMouse],ecx
|
||||
|
||||
mov eax,ecx
|
||||
|
||||
test eax,1
|
||||
jnz .mouse_left_button
|
||||
and word [EditBox.ed_flags],ed_mouse_on_off
|
||||
jmp .editbox_exit
|
||||
|
||||
.mouse_left_button:
|
||||
|
||||
mov eax,[EditBox.mouseX]
|
||||
shl eax,16
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;”ãªæ¨ï ®¡à ¡®âª¨ ¬ë誨 ¯®«ã票¥ ª®®à¤¨ â ¨ ¯à®¢¥àª ¨å + ¢ë¤¥«¥¨ï
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
use_work_mouse ;scr_h,scr_w
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Ž¡é¨¥ äãªæ¨¨ ®¡à ¡®âª¨
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
use_general_func
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;”ãªæ¨¨ ¤«ï à ¡®âë á key
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
use_key_func
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;”ãªæ¨¨ ¤«ï à ¡®âë á mouse
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
use_mouse_func ;scr_w
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å äãªæ¨© ¨ ¯®áâ ®¡à ¡®â稪®¢
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
.editbox_exit:
|
||||
|
||||
exit_edit_box:
|
||||
|
||||
;save resulatat of work in control
|
||||
mov esi,dword EditBox
|
||||
mov edi,[PointerForEditBox]
|
||||
add edi,control_header_size
|
||||
mov ecx,eb_control_data_size
|
||||
rep movsb
|
||||
|
||||
ret 8
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,160 +0,0 @@
|
||||
|
||||
im_control_data_size = 26
|
||||
im_redraw_all = 10000000b
|
||||
im_redraw_all_off = 01111111b
|
||||
;im_special_redraw_on = 00000001b
|
||||
;im_special_redraw_off = 11111110b
|
||||
|
||||
;****************************************************
|
||||
;*******************craete Image**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to parend
|
||||
;pointer to Image's structure
|
||||
;OUT
|
||||
;pointer to initialized Image's structure
|
||||
align 4
|
||||
|
||||
craete_image:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+24+4]
|
||||
mov eax,[esp+24+8]
|
||||
|
||||
mov [PointerToStructureForImage],eax
|
||||
|
||||
mov eax,control_header_size+im_control_data_size
|
||||
call craete_control
|
||||
|
||||
;set all image's parameters in control
|
||||
mov [eax],dword image
|
||||
|
||||
mov ecx,im_control_data_size
|
||||
mov esi,[PointerToStructureForImage]
|
||||
mov edi,eax
|
||||
add edi,control_header_size
|
||||
rep movsb
|
||||
|
||||
call get_skin_height
|
||||
|
||||
mov ebx,[PointerToStructureForImage]
|
||||
mov ecx,[ebx+6] ;x
|
||||
mov edx,[ebx+10] ;y
|
||||
mov esi,[ebx+14] ;size x
|
||||
mov edi,[ebx+18] ;size y
|
||||
add ecx,border_width
|
||||
add edx,[skin_height]
|
||||
;copy information to control
|
||||
mov [eax+24],ecx
|
||||
mov [eax+28],edx
|
||||
mov [eax+32],esi
|
||||
mov [eax+36],edi
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 8
|
||||
|
||||
;****************************************************
|
||||
;********************Draw Image**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to control of button
|
||||
;message
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
image:
|
||||
|
||||
;get message
|
||||
mov eax,[esp+8]
|
||||
|
||||
;get pointer to control of image
|
||||
mov esi,[esp+4]
|
||||
mov [PointerForImage],esi
|
||||
;copy control to local control
|
||||
add esi,control_header_size
|
||||
mov edi,dword Image
|
||||
mov ecx,im_control_data_size
|
||||
rep movsb
|
||||
|
||||
|
||||
cmp [eax],dword 1
|
||||
jne no_redraw_all_image
|
||||
|
||||
or [Image.type],im_redraw_all
|
||||
no_redraw_all_image:
|
||||
|
||||
cmp [eax],dword 3
|
||||
jne no_special_message_image
|
||||
|
||||
xor eax,eax
|
||||
mov al,[Image.type]
|
||||
and al,activate_trap
|
||||
test al,al
|
||||
jz no_activate_redraw_image
|
||||
|
||||
and [Image.type],deactivate_trap
|
||||
or [Image.type],im_redraw_all
|
||||
no_activate_redraw_image:
|
||||
|
||||
no_special_message_image:
|
||||
|
||||
;load coordinats and size from control
|
||||
mov eax,[PointerForImage]
|
||||
mov ebx,[eax+24] ;x
|
||||
mov ecx,[eax+28] ;y
|
||||
mov edx,[eax+32] ;size x
|
||||
mov esi,[eax+36] ;size y
|
||||
;set current coordinats and sizes in zakladka
|
||||
mov [Image.x],ebx
|
||||
mov [Image.y],ecx
|
||||
mov [Image.sizex],edx
|
||||
mov [Image.sizey],esi
|
||||
|
||||
xor eax,eax
|
||||
mov al,[Image.type]
|
||||
and al,im_redraw_all
|
||||
test al,al
|
||||
jz no_redraw_image_
|
||||
|
||||
and [Image.type],im_redraw_all_off
|
||||
|
||||
mov esi,dword Image
|
||||
mov edi,[PointerForImage]
|
||||
add edi,control_header_size
|
||||
mov ecx,2
|
||||
rep movsb
|
||||
|
||||
mov eax,7
|
||||
mov ebx,[Image.pointer]
|
||||
mov ecx,[Image.sizex]
|
||||
shl ecx,16
|
||||
add ecx,[Image.sizey]
|
||||
mov edx,[Image.x]
|
||||
shl edx,16
|
||||
add edx,[Image.y]
|
||||
mcall
|
||||
|
||||
no_redraw_image_:
|
||||
|
||||
exit_image:
|
||||
|
||||
mov edi,[PointerForImage]
|
||||
add edi,control_header_size
|
||||
mov esi,dword Image
|
||||
mov ecx,im_control_data_size
|
||||
rep movsb
|
||||
|
||||
ret 8
|
@ -1,548 +0,0 @@
|
||||
;**********************************************************************
|
||||
; library of Graphics Universal Interface for Kolibri operation system
|
||||
;
|
||||
; version 071119
|
||||
; 2007 year
|
||||
;
|
||||
;autors:
|
||||
;
|
||||
;andrew_programmer polynki@mail.ru
|
||||
;
|
||||
;menegement of controls : destroy_control, send_message,move_component
|
||||
; resize_component,activate_trap_for_specialized_message
|
||||
;GUI components : button,scroller,Bookmark,text,image,number,progres_bar
|
||||
;
|
||||
;<Lrz> and Maxxxx32
|
||||
;
|
||||
;GUI components : CheckBox,EditBox
|
||||
;
|
||||
;**********************************************************************
|
||||
|
||||
format MS COFF
|
||||
|
||||
public EXPORTS
|
||||
|
||||
control_header_size = 44
|
||||
|
||||
border_width = 5
|
||||
|
||||
activate_trap = 01000000b
|
||||
deactivate_trap = 10111111b
|
||||
|
||||
section '.flat' code readable align 16
|
||||
|
||||
include 'macros.inc'
|
||||
include 'debug.inc'
|
||||
|
||||
;GUI components
|
||||
|
||||
include 'button.inc'
|
||||
|
||||
include 'scroller.inc'
|
||||
|
||||
include 'bookmark.inc'
|
||||
|
||||
include 'image.inc'
|
||||
|
||||
include 'text.inc'
|
||||
|
||||
include 'number.inc'
|
||||
|
||||
include 'check_box.inc'
|
||||
|
||||
include 'edit_box.inc'
|
||||
|
||||
include 'progress_bar.inc'
|
||||
|
||||
;engen of libGUI(menegment of controls)
|
||||
|
||||
include 'menegment_of_controls.inc'
|
||||
|
||||
;functions which proved work of GUI components
|
||||
|
||||
include 'draw.inc'
|
||||
|
||||
include 'string.inc'
|
||||
|
||||
include 'check_crossing_box.inc'
|
||||
|
||||
include 'memory.inc'
|
||||
|
||||
;function for get version of library
|
||||
include 'version.inc'
|
||||
|
||||
;function for resize GUI component
|
||||
include 'resize_component.inc'
|
||||
|
||||
;function for move GUI component
|
||||
include 'move_component.inc'
|
||||
|
||||
;function for activate trap for specialized messages
|
||||
include 'activate_trap.inc'
|
||||
|
||||
align 16
|
||||
EXPORTS:
|
||||
dd szDestroyControl,destroy_control
|
||||
dd szSendMessage,send_message
|
||||
dd szVersion,get_version
|
||||
dd szResizeComponent,resize_component
|
||||
dd szMoveComponent,move_component
|
||||
dd szActivateTrap,activate_trap_for_specialized_message
|
||||
dd szcraeteButton,craete_button
|
||||
dd szcraeteScroller,craete_scroller
|
||||
dd szcraeteBookmark,craete_Bookmark
|
||||
dd szcraeteImage,craete_image
|
||||
dd szcraeteText,craete_text
|
||||
dd szcraeteNumber,craete_number
|
||||
dd szcraeteCheckBox,craete_check_box
|
||||
dd szcraeteEditBox,craete_edit_box
|
||||
dd szcraeteProgressBar,craete_progress_bar
|
||||
dd 0,0
|
||||
|
||||
szDestroyControl db 'DestroyControl',0
|
||||
szSendMessage db 'SendMessage',0
|
||||
szVersion db 'Version',0
|
||||
szResizeComponent db 'ResizeComponent',0
|
||||
szMoveComponent db 'MoveComponent',0
|
||||
szActivateTrap db 'ActivateTrapForSpecializedMessage',0
|
||||
szcraeteButton db 'CraeteButton',0
|
||||
szcraeteScroller db 'CraeteScroller',0
|
||||
szcraeteBookmark db 'CraeteBookmark',0
|
||||
szcraeteImage db 'CraeteImage',0
|
||||
szcraeteText db 'CraeteText',0
|
||||
szcraeteNumber db 'CraeteNumber',0
|
||||
szcraeteCheckBox db 'CraeteCheckbox',0
|
||||
szcraeteEditBox db 'CraeteEditbox',0
|
||||
szcraeteProgressBar db 'CraeteProgressbar',0
|
||||
|
||||
section '.data' data readable writable align 16
|
||||
;************************************************
|
||||
;******************DLL DATA**********************
|
||||
;************************************************
|
||||
|
||||
point db '.',0
|
||||
signum db '-',0
|
||||
|
||||
BitsPerPixel rd 1
|
||||
BytesPerString rd 1
|
||||
WindowCoordinatX rd 1
|
||||
WindowCoordinatY rd 1
|
||||
WindowSizeX rd 1
|
||||
WindowSizeY rd 1
|
||||
|
||||
PointerToMem rd 1
|
||||
offset rd 1
|
||||
|
||||
v rd 1
|
||||
v2 rd 1
|
||||
v3 rd 1
|
||||
|
||||
r_min rb 1
|
||||
r_max rb 1
|
||||
g_min rb 1
|
||||
g_max rb 1
|
||||
b_min rb 1
|
||||
b_max rb 1
|
||||
r rb 1
|
||||
g rb 1
|
||||
b rb 1
|
||||
r_f rd 1
|
||||
g_f rd 1
|
||||
b_f rd 1
|
||||
step_r rd 1
|
||||
step_g rd 1
|
||||
step_b rd 1
|
||||
length rd 1
|
||||
length2 rd 1
|
||||
Color rd 1
|
||||
AveregeColor rd 1
|
||||
|
||||
line_coordinat_x rd 1
|
||||
line_coordinat_y rd 1
|
||||
line_size_x rd 1
|
||||
line_size_y rd 1
|
||||
line_size_y_f rd 1
|
||||
|
||||
x rd 1
|
||||
y rd 1
|
||||
xo rd 1
|
||||
yo rd 1
|
||||
x_ctl rd 1
|
||||
y_ctl rd 1
|
||||
|
||||
;ReturnAddresButton rd 1
|
||||
;ReturnAddresScroller rd 1
|
||||
;ReturnAddresBookmark rd 1
|
||||
;ReturnAddresImage rd 1
|
||||
;ReturnAddresText rd 1
|
||||
;ReturnAddresNumber rd 1
|
||||
;ReturnAddresCheckBox rd 1
|
||||
;ReturnAddresEditBox rd 1
|
||||
;ReturnAddresProgressBar rd 1
|
||||
|
||||
Button_Flag rb 1
|
||||
|
||||
Scrollersize rd 1
|
||||
ControlID rd 1
|
||||
Message rd 4
|
||||
Parend rd 1
|
||||
Control rd 1
|
||||
ReturnControl rd 1
|
||||
PointerToControl rd 1
|
||||
ActiveControl rd 1
|
||||
ActiveControlForKeys rd 1
|
||||
ButtonsOfMouse rd 1
|
||||
|
||||
PointerToStructureForBookmark rd 1
|
||||
ParendForBookmark rd 1
|
||||
PointerToStructureForButton rd 1
|
||||
ParendForButton rd 1
|
||||
PointerToStructureForScroller rd 1
|
||||
ParendForScroller rd 1
|
||||
PointerToStructureForImage rd 1
|
||||
PointerToStructureForText rd 1
|
||||
PointerToStructureForNumber rd 1
|
||||
PointerToStructureForCheckBox rd 1
|
||||
PointerToStructureForEditBox rd 1
|
||||
PointerToStructureForProgressBar rd 1
|
||||
|
||||
PointerForButton rd 1
|
||||
PointerForScroller rd 1
|
||||
PointerForBookmark rd 1
|
||||
PointerForImage rd 1
|
||||
PointerForText rd 1
|
||||
PointerForNumber rd 1
|
||||
PointerForCheckBox rd 1
|
||||
PointerForEditBox rd 1
|
||||
PointerForProgressBar rd 1
|
||||
|
||||
ChisloZakladok rd 1
|
||||
|
||||
integer_part rd 1
|
||||
float_part rd 1
|
||||
tochnost1 rd 1
|
||||
tochnost2 rd 1
|
||||
signum_float_number rb 1
|
||||
|
||||
skin_height rd 1
|
||||
|
||||
;*********************************
|
||||
;**********GUI structures*********
|
||||
;*********************************
|
||||
|
||||
;struc CONTROL
|
||||
;{
|
||||
; .ctrl_proc rd 0 ;0
|
||||
; .ctrl_fd rd 0 ;4
|
||||
; .ctrl_bk rd 0 ;8
|
||||
; .child_fd rd 0 ;12
|
||||
; .child_bk rd 0 ;16
|
||||
; .parend rd 0 ;20
|
||||
; .x rd 0 ;24
|
||||
; .y rd 0 ;28
|
||||
; .sizex rd 0 ;32
|
||||
; .sizey rd 0 ;36
|
||||
; .ID rd 0 ;40
|
||||
;}
|
||||
|
||||
struc BUTTON
|
||||
{
|
||||
.ctrl_proc rd 1
|
||||
.ctrl_fd rd 1
|
||||
.ctrl_bk rd 1
|
||||
.child_fd rd 1
|
||||
.child_bk rd 1
|
||||
.parend rd 1
|
||||
.ctrl_x rd 1
|
||||
.ctrl_y rd 1
|
||||
.ctrl_sizex rd 1
|
||||
.ctrl_sizey rd 1
|
||||
.ctrl_ID rd 1
|
||||
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.x rw 1
|
||||
.y rw 1
|
||||
.width rw 1
|
||||
.height rw 1
|
||||
.image rd 1
|
||||
.imageX rw 1
|
||||
.imageY rw 1
|
||||
.imageSizeX rw 1
|
||||
.imageSizeY rw 1
|
||||
.transparentColor rd 1
|
||||
.text rd 1
|
||||
.textX rw 1
|
||||
.textY rw 1
|
||||
.textcolor rd 1
|
||||
.color1 rd 1
|
||||
.color2 rd 1
|
||||
.mouseX rw 1
|
||||
.mouseY rw 1
|
||||
}
|
||||
|
||||
struc SCROLLER
|
||||
{
|
||||
.ctrl_proc rd 1
|
||||
.ctrl_fd rd 1
|
||||
.ctrl_bk rd 1
|
||||
.child_fd rd 1
|
||||
.child_bk rd 1
|
||||
.parend rd 1
|
||||
.ctrl_x rd 1
|
||||
.ctrl_y rd 1
|
||||
.ctrl_sizex rd 1
|
||||
.ctrl_sizey rd 1
|
||||
.ctrl_ID rd 1
|
||||
|
||||
.type rb 1
|
||||
.x rw 1
|
||||
.y rw 1
|
||||
.length rw 1
|
||||
.color1 rd 1
|
||||
.size rd 1
|
||||
.pos rd 1
|
||||
.buttons_flags rw 1
|
||||
.ChildButton1 rd 1
|
||||
.ChildButton2 rd 1
|
||||
.mouseX rw 1
|
||||
.mouseY rw 1
|
||||
}
|
||||
|
||||
;********************************
|
||||
;*********Child Buttons**********
|
||||
;********************************
|
||||
struc CHILDBUTTON
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.x rw 1
|
||||
.y rw 1
|
||||
.width rw 1
|
||||
.height rw 1
|
||||
.image rd 1
|
||||
.imageX rw 1
|
||||
.imageY rw 1
|
||||
.imageSizeX rw 1
|
||||
.imageSizeY rw 1
|
||||
.transparentColor rd 1
|
||||
.text rd 1
|
||||
.textX rw 1
|
||||
.textY rw 1
|
||||
.textcolor rd 1
|
||||
.color1 rd 1
|
||||
.color2 rd 1
|
||||
.mouseX rw 1
|
||||
.mouseY rw 1
|
||||
}
|
||||
|
||||
struc BOOKMARK
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.color1 rd 1
|
||||
.reserved rd 1
|
||||
.color2 rd 1
|
||||
|
||||
.FullBookmarkSizeX rd 1
|
||||
.BookmarkSizeX rd 1
|
||||
.PointerToTextForBookmark rd 1
|
||||
.BookmarkX rd 1
|
||||
.BookmarkY rd 1
|
||||
.ChildButtonsForBookmark rd 1
|
||||
.CounterChildButtons rd 1
|
||||
.ChisloZakladok rd 1
|
||||
.ChisloStrokeZakladok rd 1
|
||||
.MessageForChildButton rd 5
|
||||
.ChildControlForBookmark rd 1
|
||||
.NumberBookmarksInActiveString rd 1
|
||||
.NumberBookmarksInEndString rd 1
|
||||
.PointerToActiveBookmarks rd 1
|
||||
.PointerToEndBookmarks rd 1
|
||||
.BookmarkFlag rb 1
|
||||
.y_end_stroke rd 1
|
||||
|
||||
.CounterChildControls rd 1
|
||||
.ActiveChildControl rd 1
|
||||
.AddresOfActiveChildControl rd 1
|
||||
.MouseX rd 1
|
||||
.MouseY rd 1
|
||||
|
||||
.DefectSizeX rd 1
|
||||
.ControlAddres rd 1
|
||||
|
||||
.counter1 rd 1
|
||||
.counter2 rd 1
|
||||
|
||||
.NumberActiveControl rd 1
|
||||
|
||||
.WorkPlace_x rd 1
|
||||
.WorkPlace_y rd 1
|
||||
.WorkPlace_sizex rd 1
|
||||
.WorkPlace_sizey rd 1
|
||||
.WorkPlace_windowx rd 1
|
||||
.WorkPlace_windowsizex rd 1
|
||||
|
||||
}
|
||||
|
||||
struc IMAGE
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.pointer rd 1
|
||||
}
|
||||
|
||||
struc TEXT
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.length rd 1
|
||||
.pointer rd 1
|
||||
.background_color rd 1
|
||||
}
|
||||
|
||||
struc NUMBER
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.number rd 1
|
||||
.parameters rd 1
|
||||
}
|
||||
|
||||
struc CHECKBOX
|
||||
{
|
||||
.ch_flags rw 1
|
||||
.ch_left rw 1
|
||||
.ch_top rw 1
|
||||
.ch_text_margin rd 1
|
||||
.ch_size rd 1
|
||||
.ch_size_2 rw 1
|
||||
.ch_size_3 rw 1
|
||||
.ch_color rd 1
|
||||
.ch_border_color rd 1
|
||||
.ch_text_color rd 1
|
||||
.ch_text_ptr rd 1
|
||||
.ch_text_length rw 1
|
||||
.mouseX rd 1
|
||||
.mouseY rd 1
|
||||
}
|
||||
|
||||
struc EDITBOX
|
||||
{
|
||||
.ed_width rd 1
|
||||
.ed_left rd 1
|
||||
.ed_top rd 1
|
||||
.ed_color rd 1
|
||||
.shift_color rd 1
|
||||
.ed_focus_border_color rd 1
|
||||
.ed_blur_border_color rd 1
|
||||
.ed_text_color rd 1
|
||||
.ed_max rd 1
|
||||
.ed_text rd 1
|
||||
.ed_flags rw 1
|
||||
.ed_size rd 1
|
||||
.ed_pos rd 1
|
||||
.ed_offset rd 1
|
||||
.cl_curs_x rd 1
|
||||
.cl_curs_y rd 1
|
||||
.ed_shift_pos rd 1
|
||||
.ed_shift_pos_old rd 1
|
||||
.ed_height rd 1
|
||||
.mouseX rd 1
|
||||
.mouseY rd 1
|
||||
}
|
||||
|
||||
struc PROGRESSBAR
|
||||
{
|
||||
.type rb 1
|
||||
.flag rb 1
|
||||
.color1 rd 1
|
||||
.color2 rd 1
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.sizex rd 1
|
||||
.sizey rd 1
|
||||
.progress rd 1
|
||||
.color3 rd 1
|
||||
}
|
||||
|
||||
;********************************
|
||||
;*Graphics primitives structures*
|
||||
;********************************
|
||||
struc LINE
|
||||
{
|
||||
.x1 rd 1
|
||||
.y1 rd 1
|
||||
.x2 rd 1
|
||||
.y2 rd 1
|
||||
.color rd 1
|
||||
}
|
||||
|
||||
struc PIXEL
|
||||
{
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.color rd 1
|
||||
}
|
||||
|
||||
struc FONT1
|
||||
{
|
||||
.sizeX rd 6
|
||||
.sizeY rd 9
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
}
|
||||
|
||||
struc RECTANGLE
|
||||
{
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
.width rd 1
|
||||
.height rd 1
|
||||
.color rd 1
|
||||
}
|
||||
|
||||
struc SCROLLBAR
|
||||
{
|
||||
.x rd 1
|
||||
.y rd 1
|
||||
}
|
||||
|
||||
Line LINE
|
||||
Pixel PIXEL
|
||||
Font FONT1
|
||||
Rectangle RECTANGLE
|
||||
ScrollBar SCROLLBAR
|
||||
ChildButton CHILDBUTTON
|
||||
|
||||
Button BUTTON
|
||||
Scroller SCROLLER
|
||||
Bookmark BOOKMARK
|
||||
Image IMAGE
|
||||
Text TEXT
|
||||
Number NUMBER
|
||||
CheckBox CHECKBOX
|
||||
EditBox EDITBOX
|
||||
ProgressBar PROGRESSBAR
|
||||
|
||||
pointer rd 50
|
||||
pointer2 rd 13
|
||||
IPC_table process_information; rb 1024
|
||||
colors_table1 rd 15
|
||||
colors_table2 rd 15
|
||||
|
@ -1,269 +0,0 @@
|
||||
; new application structure
|
||||
macro meos_app_start
|
||||
{
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01'
|
||||
dd 0x01
|
||||
dd __start
|
||||
dd __end
|
||||
dd __memory
|
||||
dd __stack
|
||||
|
||||
if used __params & ~defined __params
|
||||
dd __params
|
||||
else
|
||||
dd 0x0
|
||||
end if
|
||||
|
||||
dd 0x0
|
||||
}
|
||||
MEOS_APP_START fix meos_app_start
|
||||
|
||||
macro code
|
||||
{
|
||||
__start:
|
||||
}
|
||||
CODE fix code
|
||||
|
||||
macro data
|
||||
{
|
||||
__data:
|
||||
}
|
||||
DATA fix data
|
||||
|
||||
macro udata
|
||||
{
|
||||
if used __params & ~defined __params
|
||||
__params:
|
||||
db 0
|
||||
__end:
|
||||
rb 255
|
||||
else
|
||||
__end:
|
||||
end if
|
||||
__udata:
|
||||
}
|
||||
UDATA fix udata
|
||||
|
||||
macro meos_app_end
|
||||
{
|
||||
align 32
|
||||
rb 2048
|
||||
__stack:
|
||||
__memory:
|
||||
}
|
||||
MEOS_APP_END fix meos_app_end
|
||||
|
||||
|
||||
; macro for defining multiline text data
|
||||
struc mstr [sstring]
|
||||
{
|
||||
forward
|
||||
local ssize
|
||||
virtual at 0
|
||||
db sstring
|
||||
ssize = $
|
||||
end virtual
|
||||
dd ssize
|
||||
db sstring
|
||||
common
|
||||
dd -1
|
||||
}
|
||||
|
||||
|
||||
; strings
|
||||
macro sz name,[data] { ; from MFAR [mike.dld]
|
||||
common
|
||||
if used name
|
||||
label name
|
||||
end if
|
||||
forward
|
||||
if used name
|
||||
db data
|
||||
end if
|
||||
common
|
||||
if used name
|
||||
.size = $-name
|
||||
end if
|
||||
}
|
||||
|
||||
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
|
||||
common
|
||||
if used name
|
||||
label name
|
||||
end if
|
||||
forward
|
||||
if (used name)&(lang eq lng)
|
||||
db data
|
||||
end if
|
||||
common
|
||||
if used name
|
||||
.size = $-name
|
||||
end if
|
||||
}
|
||||
|
||||
|
||||
|
||||
; easy system call macro
|
||||
macro mpack dest, hsrc, lsrc
|
||||
{
|
||||
if (hsrc eqtype 0) & (lsrc eqtype 0)
|
||||
mov dest, (hsrc) shl 16 + lsrc
|
||||
else
|
||||
if (hsrc eqtype 0) & (~lsrc eqtype 0)
|
||||
mov dest, (hsrc) shl 16
|
||||
add dest, lsrc
|
||||
else
|
||||
mov dest, hsrc
|
||||
shl dest, 16
|
||||
add dest, lsrc
|
||||
end if
|
||||
end if
|
||||
}
|
||||
|
||||
macro __mov reg,a,b { ; mike.dld
|
||||
if (~a eq)&(~b eq)
|
||||
mpack reg,a,b
|
||||
else if (~a eq)&(b eq)
|
||||
mov reg,a
|
||||
end if
|
||||
}
|
||||
|
||||
macro mcall a,b,c,d,e,f { ; mike.dld
|
||||
__mov eax,a
|
||||
__mov ebx,b
|
||||
__mov ecx,c
|
||||
__mov edx,d
|
||||
__mov esi,e
|
||||
__mov edi,f
|
||||
int 0x40
|
||||
}
|
||||
|
||||
|
||||
|
||||
; optimize the code for size
|
||||
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
|
||||
|
||||
macro add arg1,arg2
|
||||
{
|
||||
if (arg2 eqtype 0)
|
||||
if (arg2) = 1
|
||||
inc arg1
|
||||
else
|
||||
add arg1,arg2
|
||||
end if
|
||||
else
|
||||
add arg1,arg2
|
||||
end if
|
||||
}
|
||||
|
||||
macro sub arg1,arg2
|
||||
{
|
||||
if (arg2 eqtype 0)
|
||||
if (arg2) = 1
|
||||
dec arg1
|
||||
else
|
||||
sub arg1,arg2
|
||||
end if
|
||||
else
|
||||
sub arg1,arg2
|
||||
end if
|
||||
}
|
||||
|
||||
macro mov arg1,arg2
|
||||
{
|
||||
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
|
||||
if (arg2) = 0
|
||||
xor arg1,arg1
|
||||
else if (arg2) = 1
|
||||
xor arg1,arg1
|
||||
inc arg1
|
||||
else if (arg2) = -1
|
||||
or arg1,-1
|
||||
else if (arg2) > -128 & (arg2) < 128
|
||||
push arg2
|
||||
pop arg1
|
||||
else
|
||||
mov arg1,arg2
|
||||
end if
|
||||
else
|
||||
mov arg1,arg2
|
||||
end if
|
||||
}
|
||||
|
||||
|
||||
macro struct name
|
||||
{
|
||||
virtual at 0
|
||||
name name
|
||||
sizeof.#name = $ - name
|
||||
end virtual
|
||||
}
|
||||
|
||||
; structures used in MeOS
|
||||
struc process_information
|
||||
{
|
||||
.cpu_usage dd ? ; +0
|
||||
.window_stack_position dw ? ; +4
|
||||
.window_stack_value dw ? ; +6
|
||||
.not_used1 dw ? ; +8
|
||||
.process_name rb 12 ; +10
|
||||
.memory_start dd ? ; +22
|
||||
.used_memory dd ? ; +26
|
||||
.PID dd ? ; +30
|
||||
.x_start dd ? ; +34
|
||||
.y_start dd ? ; +38
|
||||
.x_size dd ? ; +42
|
||||
.y_size dd ? ; +46
|
||||
.slot_state dw ? ; +50
|
||||
dw ? ; +52 - reserved
|
||||
.client_left dd ? ; +54
|
||||
.client_top dd ? ; +58
|
||||
.client_width dd ? ; +62
|
||||
.client_height dd ? ; +66
|
||||
.wnd_state db ? ; +70
|
||||
rb (1024-71)
|
||||
}
|
||||
struct process_information
|
||||
|
||||
struc system_colors
|
||||
{
|
||||
.frame dd ?
|
||||
.grab dd ?
|
||||
.grab_button dd ?
|
||||
.grab_button_text dd ?
|
||||
.grab_text dd ?
|
||||
.work dd ?
|
||||
.work_button dd ?
|
||||
.work_button_text dd ?
|
||||
.work_text dd ?
|
||||
.work_graph dd ?
|
||||
}
|
||||
struct system_colors
|
||||
|
||||
|
||||
; constants
|
||||
|
||||
; events
|
||||
EV_IDLE = 0
|
||||
EV_TIMER = 0
|
||||
EV_REDRAW = 1
|
||||
EV_KEY = 2
|
||||
EV_BUTTON = 3
|
||||
EV_EXIT = 4
|
||||
EV_BACKGROUND = 5
|
||||
EV_MOUSE = 6
|
||||
EV_IPC = 7
|
||||
EV_STACK = 8
|
||||
|
||||
; event mask bits for function 40
|
||||
EVM_REDRAW = 1b
|
||||
EVM_KEY = 10b
|
||||
EVM_BUTTON = 100b
|
||||
EVM_EXIT = 1000b
|
||||
EVM_BACKGROUND = 10000b
|
||||
EVM_MOUSE = 100000b
|
||||
EVM_IPC = 1000000b
|
||||
EVM_STACK = 10000000b
|
@ -1,32 +0,0 @@
|
||||
;eax - size
|
||||
;OUT
|
||||
;eax - pointer
|
||||
malloc:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
|
||||
mov ecx,eax
|
||||
mov eax,68
|
||||
mov ebx,12
|
||||
mcall
|
||||
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret
|
||||
|
||||
;eax - pointer
|
||||
free:
|
||||
push ebx
|
||||
push ecx
|
||||
|
||||
mov ecx,eax
|
||||
mov eax,68
|
||||
mov ebx,13
|
||||
mcall
|
||||
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret
|
@ -1,535 +0,0 @@
|
||||
;****************************************************************
|
||||
;***************Elements of menegment for Controls***************
|
||||
;****************************************************************
|
||||
|
||||
;**********************************************************
|
||||
;********************craete control*************************
|
||||
;**********************************************************
|
||||
|
||||
;IN
|
||||
;eax - ctructure's size
|
||||
;ebx - Parend(pointer to structure for parend)
|
||||
;OUT
|
||||
;eax - pointer to new control
|
||||
|
||||
craete_control:
|
||||
|
||||
test eax,eax
|
||||
jnz no_null_size
|
||||
|
||||
mov eax,1
|
||||
no_null_size:
|
||||
|
||||
call malloc
|
||||
mov [ReturnControl],eax
|
||||
|
||||
push ebx ;parend
|
||||
push eax ;control
|
||||
call AddObject
|
||||
|
||||
mov eax,[ReturnControl]
|
||||
|
||||
;information about craete control output to debug board
|
||||
call new_line
|
||||
mov [s_p],s_craete
|
||||
call print_string
|
||||
debug_print_dec [ReturnControl]
|
||||
mov [s_p],s_parend
|
||||
call print_string
|
||||
debug_print_dec dword[eax+20]
|
||||
mov [s_p],s_last
|
||||
call print_string
|
||||
debug_print_dec dword[eax+4]
|
||||
;--------------------------------
|
||||
|
||||
ret
|
||||
|
||||
AddObject:
|
||||
|
||||
mov ecx,[esp+4] ;control
|
||||
mov edx,[esp+8] ;parend
|
||||
|
||||
mov eax,[edx+12] ;eax=parend->child_fd
|
||||
test eax,eax
|
||||
jnz else_parend_add_object
|
||||
|
||||
add [ControlID],1
|
||||
mov esi,[ControlID]
|
||||
|
||||
mov [edx+12],ecx ;Parend->child_fd=control
|
||||
mov [edx+16],ecx ;Parend->child_bk=control
|
||||
|
||||
mov [ecx+20],edx ;control->parend=Parend
|
||||
mov [ecx+4],edx ;control->ctrl_fd=Parend
|
||||
mov [ecx+40],esi ;control->ctrl_ID=ID
|
||||
|
||||
jmp exit_if_parend_add_object
|
||||
else_parend_add_object:
|
||||
|
||||
add [ControlID],1
|
||||
mov esi,[ControlID]
|
||||
|
||||
mov edi,[edx+16] ;last_control=Parend->child_bk
|
||||
mov [edx+16],ecx ;Parend->child_bk=control
|
||||
|
||||
mov [edi+8],ecx ;last_control->ctrl_bk=control
|
||||
mov [ecx+4],edi ;control->ctrl_fd=last_control;
|
||||
mov [ecx+20],edx ;control->parend=Parend;
|
||||
mov [ecx+40],esi ;control->ctrl_ID=ID
|
||||
|
||||
exit_if_parend_add_object:
|
||||
|
||||
ret 8
|
||||
|
||||
|
||||
;************************************************************
|
||||
;***********************Destroy control**********************
|
||||
;************************************************************
|
||||
|
||||
;Delete Control.
|
||||
;IN
|
||||
;pointer to control for delete
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
destroy_control:
|
||||
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
mov eax,[esp+28+4]
|
||||
|
||||
mov ebx,[eax+20] ;get parend for control
|
||||
|
||||
;checking pointer of control to 0
|
||||
test eax,eax
|
||||
jz exit_destroy_control
|
||||
|
||||
;checking parend to main parend(parend of window)
|
||||
;if parend equ main parend than exit
|
||||
test ebx,ebx
|
||||
jz exit_destroy_control
|
||||
|
||||
mov ecx,[ebx+12] ;Parend->child_fd
|
||||
test ecx,ecx
|
||||
jz exit_destroy_control
|
||||
|
||||
mov ecx,[ebx+12] ;Parend->child_fd
|
||||
mov edx,[ebx+16] ;Parend->child_bk
|
||||
|
||||
cmp ecx,edx
|
||||
jne no_if_parend_child_fd_child_bk
|
||||
|
||||
cmp ecx,eax
|
||||
jne no_if_parend_child_fd_control
|
||||
|
||||
mov [ebx+12],dword 0 ;Parend->child_fd=0
|
||||
mov [ebx+16],dword 0 ;Parend->child_bk=0
|
||||
|
||||
;send message to control for deleting
|
||||
push eax
|
||||
|
||||
mov [Message],dword -1
|
||||
mov ebx,[eax] ;load .... for control
|
||||
push Message
|
||||
push eax
|
||||
call ebx
|
||||
|
||||
pop eax
|
||||
|
||||
push eax
|
||||
call free
|
||||
pop eax
|
||||
|
||||
call new_line
|
||||
mov [s_p],s_destroy
|
||||
call print_string
|
||||
debug_print_dec eax
|
||||
mov [s_p],s_1
|
||||
call print_string
|
||||
|
||||
jmp exit_destroy_control
|
||||
no_if_parend_child_fd_control:
|
||||
|
||||
no_if_parend_child_fd_child_bk:
|
||||
;----------------------------------------------
|
||||
mov esi,ecx ;seek_control=Parend->child_fd
|
||||
|
||||
while_seek_control:
|
||||
cmp esi,0
|
||||
je exit_destroy_control
|
||||
;*******************************************************************
|
||||
cmp esi,eax
|
||||
jne no_if_seek_control_control
|
||||
;***************************************************************
|
||||
mov edi,[esi+8]
|
||||
test edi,edi
|
||||
jz no_if_seek_control_ctrl_bk
|
||||
;***********************************************************
|
||||
mov ecx,[esi+4]
|
||||
mov edx,[esi+8]
|
||||
mov [edx+4],ecx
|
||||
|
||||
cmp ecx,ebx
|
||||
je no_if_last_control_parend
|
||||
;*******************************************************
|
||||
mov [ecx+8],edx
|
||||
jmp else_seek_control_ctrl_bk
|
||||
;*******************************************************
|
||||
no_if_last_control_parend:
|
||||
|
||||
mov [ebx+12],edx
|
||||
|
||||
jmp else_seek_control_ctrl_bk
|
||||
;*********************************************************
|
||||
no_if_seek_control_ctrl_bk:
|
||||
;**********************************************************
|
||||
|
||||
mov ecx,[esi+4] ;last_control=seek_control->ctrl_fd
|
||||
mov [ecx+8],dword 0 ;last_control->ctrl_bk=0
|
||||
mov [ebx+16],ecx ;Parend->child_bk=last_control
|
||||
|
||||
else_seek_control_ctrl_bk:
|
||||
;**********************************************************
|
||||
|
||||
;send message to control for deleting
|
||||
push eax
|
||||
|
||||
mov [Message],dword -1
|
||||
mov ebx,[eax] ;load .... for control
|
||||
push Message
|
||||
push eax
|
||||
call ebx
|
||||
|
||||
pop eax
|
||||
|
||||
push eax
|
||||
call free
|
||||
pop eax
|
||||
|
||||
call new_line
|
||||
mov [s_p],s_destroy
|
||||
call print_string
|
||||
debug_print_dec eax
|
||||
mov [s_p],s_2
|
||||
call print_string
|
||||
|
||||
jmp exit_destroy_control
|
||||
|
||||
no_if_seek_control_control:
|
||||
;****************************************************************
|
||||
|
||||
mov edi,[esi+8] ;exchange_control=seek_control->ctrl_bk
|
||||
mov esi,edi ;seek_control=exchange_control
|
||||
|
||||
jmp while_seek_control
|
||||
;*******************************************************************
|
||||
exit_destroy_control:
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
pop eax
|
||||
|
||||
ret 4
|
||||
|
||||
;***********************************************************
|
||||
;*****************Send message to Control*******************
|
||||
;***********************************************************
|
||||
|
||||
;IN
|
||||
;pointer to message
|
||||
;pointer to parend(structure)
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
send_message:
|
||||
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
;get pointer to parend
|
||||
mov eax,[esp+28+4]
|
||||
mov [Parend],eax
|
||||
|
||||
;get message
|
||||
mov esi,[esp+28+8]
|
||||
mov edi,dword Message
|
||||
mov ecx,4
|
||||
rep movsd
|
||||
|
||||
;load event type
|
||||
mov eax,[Message]
|
||||
|
||||
|
||||
;check for event type and get parameters for Control
|
||||
dec eax
|
||||
jnz no_window_redraw
|
||||
|
||||
mov ebx,[Parend]
|
||||
mov esi,[ebx+12] ;get pointer to first child control of parend
|
||||
mov ebx,esi
|
||||
|
||||
send_message_for_redraw_to_next_control:
|
||||
|
||||
;if esi=0 than exit
|
||||
test esi,esi
|
||||
jz exit_check_event_type
|
||||
|
||||
push ebx
|
||||
push esi
|
||||
|
||||
mov eax,ebx
|
||||
mov ebx,[eax] ;load .... for control
|
||||
push Message
|
||||
push eax
|
||||
call ebx
|
||||
|
||||
pop esi
|
||||
pop ebx
|
||||
|
||||
mov esi,[ebx+8]
|
||||
mov ebx,esi
|
||||
|
||||
jmp send_message_for_redraw_to_next_control
|
||||
|
||||
no_window_redraw:
|
||||
|
||||
dec eax
|
||||
jnz no_keys
|
||||
|
||||
|
||||
;if have active control than send message
|
||||
;checking for active control
|
||||
mov ebx,[ActiveControlForKeys]
|
||||
test ebx,ebx
|
||||
jz exit_check_event_type
|
||||
|
||||
mov eax,[ActiveControlForKeys]
|
||||
mov ebx,[eax] ;load proc for control
|
||||
push Message
|
||||
push eax
|
||||
call ebx
|
||||
|
||||
jmp exit_check_event_type
|
||||
no_keys:
|
||||
|
||||
dec eax
|
||||
jnz no_special_system_message
|
||||
|
||||
mov ebx,[Parend];
|
||||
mov esi,[ebx+12]
|
||||
mov ebx,esi
|
||||
|
||||
send_special_message_to_next_control:
|
||||
|
||||
;if esi=0 than exit
|
||||
test esi,esi
|
||||
jz exit_check_event_type
|
||||
|
||||
push ebx
|
||||
push esi
|
||||
|
||||
mov eax,ebx
|
||||
mov ebx,[eax] ;load .... for control
|
||||
push Message
|
||||
push eax
|
||||
call ebx
|
||||
|
||||
pop esi
|
||||
pop ebx
|
||||
|
||||
mov esi,[ebx+8]
|
||||
mov ebx,esi
|
||||
|
||||
jmp send_special_message_to_next_control
|
||||
|
||||
no_special_system_message:
|
||||
|
||||
;*************************************************
|
||||
;****************Mouse send message***************
|
||||
;*************************************************
|
||||
|
||||
cmp eax,3
|
||||
jne no_mouse
|
||||
|
||||
;check childrens of parend for crossing
|
||||
mov ebx,[Parend]
|
||||
mov esi,[ebx+12] ;esi =first child control
|
||||
mov ebx,esi ;ebx =first child control
|
||||
|
||||
mov eax,[Message+12]
|
||||
and eax,1b
|
||||
test eax,eax
|
||||
jz left_button_of_mouse_not_pressed
|
||||
|
||||
mov eax,[ActiveControl]
|
||||
test eax,eax
|
||||
jz havent_active_control
|
||||
|
||||
mov eax,[ActiveControl]
|
||||
mov ebx,[eax] ;load proc for control
|
||||
push Message
|
||||
push eax
|
||||
call ebx
|
||||
|
||||
jmp exit_check_event_type
|
||||
havent_active_control:
|
||||
|
||||
jmp exit_if_left_button_of_mouse__pressed
|
||||
left_button_of_mouse_not_pressed:
|
||||
|
||||
mov eax,[ActiveControl]
|
||||
test eax,eax
|
||||
jz havent_active_control_
|
||||
|
||||
mov [ActiveControl],dword 0
|
||||
|
||||
havent_active_control_:
|
||||
|
||||
exit_if_left_button_of_mouse__pressed:
|
||||
|
||||
|
||||
next_conrol_check_for_crossing_with_mouse:
|
||||
|
||||
test esi,esi
|
||||
jz exit_next_conrol_check_for_crossing_with_mouse
|
||||
|
||||
mov [PointerToControl],ebx
|
||||
|
||||
|
||||
push ebx
|
||||
push esi
|
||||
|
||||
mov eax,[ebx+28] ;eax = y coordinat of control
|
||||
mov [y_ctl],eax
|
||||
mov eax,[ebx+24] ;eax = x coordinat of control
|
||||
|
||||
mov ecx,[ebx+32] ;ecx = size x of control
|
||||
mov edx,[ebx+36] ;edx = size y of control
|
||||
mov esi,[Message+4] ;mouse x
|
||||
mov edi,[Message+8] ;mouse y
|
||||
mov ebx,[y_ctl]
|
||||
|
||||
call CheckCrossingBox
|
||||
|
||||
cmp eax,0xffffff
|
||||
jne no_activate_control
|
||||
|
||||
mov eax,[Message+12]
|
||||
and eax,1b
|
||||
test eax,eax
|
||||
jz no_activate_control
|
||||
|
||||
mov eax,[PointerToControl]
|
||||
mov [ActiveControl],eax
|
||||
mov [ActiveControlForKeys],eax
|
||||
|
||||
no_activate_control:
|
||||
|
||||
mov eax,[PointerToControl]
|
||||
mov ebx,[eax] ;load proc for control
|
||||
push Message
|
||||
push eax
|
||||
call ebx
|
||||
|
||||
pop esi
|
||||
pop ebx
|
||||
|
||||
mov esi,[ebx+8] ;16 but not 8
|
||||
mov ebx,esi
|
||||
|
||||
jmp next_conrol_check_for_crossing_with_mouse
|
||||
|
||||
exit_next_conrol_check_for_crossing_with_mouse:
|
||||
|
||||
no_mouse:
|
||||
|
||||
exit_check_event_type:
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
pop eax
|
||||
|
||||
ret 8
|
||||
|
||||
|
||||
new_line:
|
||||
|
||||
pushad
|
||||
|
||||
mov eax,63
|
||||
mov ebx,1
|
||||
xor ecx,ecx
|
||||
mov cl,13
|
||||
int 0x40
|
||||
|
||||
mov eax,63
|
||||
mov ebx,1
|
||||
xor ecx,ecx
|
||||
mov cl,10
|
||||
int 0x40
|
||||
|
||||
popad
|
||||
|
||||
ret
|
||||
|
||||
print_string:
|
||||
|
||||
pushad
|
||||
|
||||
xor esi,esi
|
||||
|
||||
next_symbol_print:
|
||||
|
||||
mov edi,[s_p]
|
||||
add edi,esi
|
||||
|
||||
xor edx,edx
|
||||
mov dl,byte[edi]
|
||||
test dl,dl
|
||||
jz exit_print_str
|
||||
|
||||
mov eax,63
|
||||
mov ebx,1
|
||||
xor ecx,ecx
|
||||
mov cl,byte[edi]
|
||||
int 0x40
|
||||
|
||||
inc esi
|
||||
jmp next_symbol_print
|
||||
|
||||
exit_print_str:
|
||||
|
||||
popad
|
||||
|
||||
|
||||
ret
|
||||
|
||||
s_p dd 0
|
||||
s_craete db 'craete ',0
|
||||
s_destroy db 'destroy ',0
|
||||
s_parend db ' parend ',0
|
||||
s_last db ' ctrl_fd ',0
|
||||
s_next db ' ctrl_bk ',0
|
||||
s_1 db ' 1',0
|
||||
s_2 db ' 2',0
|
@ -1,34 +0,0 @@
|
||||
;****************************************************
|
||||
;*****************move of GUI component**************
|
||||
;****************************************************
|
||||
;IN
|
||||
;MoveComponent(dword Parend,dword Control,dword newx,dword newy)
|
||||
;newy
|
||||
;newx
|
||||
;Control
|
||||
;Parend
|
||||
;OUT
|
||||
;not
|
||||
|
||||
align 4
|
||||
|
||||
move_component:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+16+4] ;Control
|
||||
mov ecx,[esp+16+8] ;new x
|
||||
mov edx,[esp+16+12] ;new y
|
||||
|
||||
mov [ebx+24],ecx
|
||||
mov [ebx+28],edx
|
||||
|
||||
pop ebp
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 12
|
@ -1,397 +0,0 @@
|
||||
|
||||
nm_control_data_size = 22
|
||||
nm_redraw_all = 10000000b
|
||||
nm_redraw_off = 01111111b
|
||||
;nm_special_redraw_on = 00000100b
|
||||
;nm_special_redraw_off = 11111011b
|
||||
nm_integer_type = 00000010b
|
||||
nm_no_show_number = 00000001b
|
||||
|
||||
;****************************************************
|
||||
;********************craete Number**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to parend
|
||||
;pointer to Number's structure
|
||||
;OUT
|
||||
;pointer to initialized Number's structure
|
||||
align 4
|
||||
|
||||
craete_number:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+24+4]
|
||||
mov eax,[esp+24+8]
|
||||
|
||||
mov [PointerToStructureForNumber],eax
|
||||
|
||||
mov eax,control_header_size+nm_control_data_size
|
||||
call craete_control
|
||||
|
||||
;set all image's parameters in control
|
||||
mov [eax],dword number
|
||||
|
||||
mov ecx,nm_control_data_size
|
||||
mov esi,[PointerToStructureForNumber]
|
||||
mov edi,eax
|
||||
add edi,control_header_size
|
||||
rep movsb
|
||||
|
||||
call get_skin_height
|
||||
|
||||
mov ebx,[PointerToStructureForNumber]
|
||||
mov ecx,[ebx+6] ;x
|
||||
mov edx,[ebx+10] ;y
|
||||
add ecx,border_width
|
||||
add edx,[skin_height]
|
||||
;copy information to control
|
||||
mov [eax+24],ecx
|
||||
mov [eax+28],edx
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 8
|
||||
|
||||
;****************************************************
|
||||
;********************Draw Number*********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to control of number
|
||||
;message
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
number:
|
||||
|
||||
;get message
|
||||
mov eax,[esp+8]
|
||||
|
||||
;get pointer to control of image
|
||||
mov esi,[esp+4]
|
||||
mov [PointerForNumber],esi
|
||||
;copy control to local control
|
||||
add esi,control_header_size
|
||||
mov edi,dword Number
|
||||
mov ecx,nm_control_data_size
|
||||
rep movsb
|
||||
|
||||
|
||||
cmp [eax],dword 1
|
||||
jne no_redraw_all_number
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,[Number.type]
|
||||
and bl,nm_no_show_number
|
||||
test bl,bl
|
||||
jnz no_redraw_all_number
|
||||
|
||||
or [Number.type],nm_redraw_all
|
||||
|
||||
no_redraw_all_number:
|
||||
|
||||
cmp [eax],dword 3
|
||||
jne no_special_message_for_number
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,[Number.type]
|
||||
and bl,activate_trap
|
||||
test bl,bl
|
||||
jz no_special_message_for_number
|
||||
|
||||
or [Number.type],nm_redraw_all
|
||||
and [Number.type],deactivate_trap
|
||||
|
||||
no_special_message_for_number:
|
||||
|
||||
cmp [eax],dword -1
|
||||
jne no_destroy_control_of_number
|
||||
|
||||
jmp exit_number
|
||||
no_destroy_control_of_number:
|
||||
|
||||
;load coordinats and size from control
|
||||
mov eax,[PointerForNumber]
|
||||
mov ebx,[eax+24] ;x
|
||||
mov ecx,[eax+28] ;y
|
||||
;set current coordinats and sizes in zakladka
|
||||
mov [Number.x],ebx
|
||||
mov [Number.y],ecx
|
||||
|
||||
xor eax,eax
|
||||
mov al,[Number.type]
|
||||
and al,nm_redraw_all
|
||||
test al,al
|
||||
jz no_redraw_number_
|
||||
|
||||
and [Number.type],nm_redraw_off
|
||||
|
||||
mov esi,dword Number
|
||||
mov edi,[PointerForNumber]
|
||||
add edi,control_header_size
|
||||
mov ecx,2
|
||||
rep movsb
|
||||
|
||||
;get standart colors table
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,dword pointer2
|
||||
mov edx,40
|
||||
mcall
|
||||
|
||||
xor eax,eax
|
||||
mov al,[Number.type]
|
||||
and al,nm_integer_type
|
||||
test al,al
|
||||
jnz no_integer_number
|
||||
|
||||
mov eax,47
|
||||
mov ebx,[Number.parameters]
|
||||
mov ecx,[Number.number]
|
||||
mov edx,[Number.x]
|
||||
shl edx,16
|
||||
add edx,[Number.y]
|
||||
mov esi,[Number.color]
|
||||
mov edi,[pointer2+8]
|
||||
mcall
|
||||
|
||||
jmp no_redraw_number_
|
||||
no_integer_number:
|
||||
;---------------------------------------
|
||||
|
||||
mov ebx,[Number.parameters]
|
||||
mov ecx,ebx
|
||||
shr ebx,16 ;format for integer
|
||||
and ecx,0xffff ;format for float
|
||||
|
||||
;get integer part of float number
|
||||
mov eax,1
|
||||
mov edi,ecx
|
||||
pow_10__:
|
||||
|
||||
;eax=eax*10
|
||||
lea eax,[eax+eax*4]
|
||||
shl eax,1
|
||||
|
||||
dec edi
|
||||
jnz pow_10__
|
||||
mov edx,eax
|
||||
|
||||
;check for signum
|
||||
mov [v2],0
|
||||
fld [Number.number]
|
||||
fcom [v2]
|
||||
fstsw ax
|
||||
sahf
|
||||
jae no_signum_float_number
|
||||
|
||||
fabs
|
||||
mov [signum_float_number],byte 1
|
||||
|
||||
no_signum_float_number:
|
||||
fstp [Number.number]
|
||||
|
||||
mov [v2],edx ;v2=10^ecx
|
||||
fild [v2]
|
||||
fld [Number.number]
|
||||
fmul st0,st1
|
||||
fistp [v]
|
||||
fstp st0
|
||||
|
||||
mov esi,edx
|
||||
mov eax,[v]
|
||||
cdq
|
||||
idiv esi
|
||||
mov [v],eax
|
||||
|
||||
and [integer_part],0
|
||||
and [tochnost1],0
|
||||
|
||||
;save v in v2
|
||||
mov eax,[v]
|
||||
mov [v2],eax
|
||||
|
||||
mov [Number.flag],0
|
||||
mov esi,ebx
|
||||
get_next_razryd_of_number_integer:
|
||||
|
||||
mov eax,1
|
||||
|
||||
mov edi,esi
|
||||
pow_10_integer:
|
||||
|
||||
;eax=eax*10
|
||||
lea eax,[eax+eax*4]
|
||||
shl eax,1
|
||||
|
||||
dec edi
|
||||
jnz pow_10_integer
|
||||
|
||||
mov edi,eax
|
||||
mov eax,[v]
|
||||
cdq
|
||||
idiv edi
|
||||
and eax,0xf
|
||||
|
||||
test eax,eax
|
||||
jz no_save_pos_for_integer
|
||||
|
||||
cmp [Number.flag],0
|
||||
jne no_save_pos_for_integer
|
||||
|
||||
mov [Number.flag],1b
|
||||
mov [tochnost1],esi
|
||||
add [tochnost1],1
|
||||
|
||||
no_save_pos_for_integer:
|
||||
|
||||
imul eax,edi
|
||||
sub [v],eax
|
||||
add [integer_part],eax
|
||||
|
||||
dec esi
|
||||
jnz get_next_razryd_of_number_integer
|
||||
mov eax,[v]
|
||||
add [integer_part],eax
|
||||
|
||||
cmp [tochnost1],0
|
||||
jnz all_ok_with_tochnost
|
||||
|
||||
mov [tochnost1],1
|
||||
all_ok_with_tochnost:
|
||||
|
||||
;get float part of float number
|
||||
mov eax,[v2]
|
||||
mov [v],eax
|
||||
|
||||
mov eax,1
|
||||
mov edi,ecx
|
||||
pow_10_float__:
|
||||
|
||||
;eax=eax*10
|
||||
lea eax,[eax+eax*4]
|
||||
shl eax,1
|
||||
|
||||
dec edi
|
||||
jnz pow_10_float__
|
||||
|
||||
mov [v2],eax ;v2=10^ecx
|
||||
|
||||
fild [v2]
|
||||
fild [v]
|
||||
fld [Number.number]
|
||||
fsub st0,st1
|
||||
fmul st0,st2
|
||||
fistp [v]
|
||||
fstp st0
|
||||
fstp st0
|
||||
|
||||
and [float_part],0
|
||||
|
||||
mov esi,ecx
|
||||
get_next_razryd_of_number_float:
|
||||
|
||||
mov eax,1
|
||||
|
||||
mov edi,esi
|
||||
pow_10_float:
|
||||
|
||||
;eax=eax*10
|
||||
lea eax,[eax+eax*4]
|
||||
shl eax,1
|
||||
|
||||
dec edi
|
||||
jnz pow_10_float
|
||||
|
||||
mov edi,eax
|
||||
mov eax,[v]
|
||||
cdq
|
||||
idiv edi
|
||||
and eax,0xf
|
||||
imul eax,edi
|
||||
sub [v],eax
|
||||
add [float_part],eax
|
||||
|
||||
dec esi
|
||||
jnz get_next_razryd_of_number_float
|
||||
mov eax,[v]
|
||||
add [float_part],eax
|
||||
|
||||
mov [tochnost2],ecx
|
||||
cmp [signum_float_number],byte 1
|
||||
jne no_draw_signum_for_float_number
|
||||
|
||||
;draw signum
|
||||
mov eax,4
|
||||
mov ebx,[Number.x]
|
||||
mov ecx,[Number.color]
|
||||
mov edx,dword signum
|
||||
mov esi,1
|
||||
mov edi,[pointer2+8]
|
||||
shl ebx,16
|
||||
add ebx,[Number.y]
|
||||
mcall
|
||||
|
||||
add [Number.x],6
|
||||
mov [signum_float_number],0
|
||||
no_draw_signum_for_float_number:
|
||||
|
||||
;draw integer part of float number
|
||||
mov eax,47
|
||||
mov ebx,[tochnost1]
|
||||
mov ecx,[integer_part]
|
||||
mov edx,[Number.x]
|
||||
mov esi,[Number.color]
|
||||
mov edi,[pointer2+8]
|
||||
shl edx,16
|
||||
shl ebx,16
|
||||
add edx,[Number.y]
|
||||
mcall
|
||||
|
||||
mov edx,[tochnost1]
|
||||
add edx,1
|
||||
lea edx,[edx+edx*2]
|
||||
shl edx,1 ;edx=edx*6
|
||||
add edx,[Number.x]
|
||||
mov [x],edx
|
||||
|
||||
;draw float part of float number
|
||||
mov eax,47
|
||||
mov ebx,[tochnost2]
|
||||
mov ecx,[float_part]
|
||||
mov esi,[Number.color]
|
||||
mov edi,[pointer2+8]
|
||||
shl edx,16
|
||||
shl ebx,16
|
||||
add edx,[Number.y]
|
||||
mcall
|
||||
|
||||
;draw point betwen integer part of number and float part of number
|
||||
mov eax,4
|
||||
mov ebx,[x]
|
||||
mov ecx,[Number.color]
|
||||
mov edx,dword point
|
||||
mov esi,1
|
||||
mov edi,[pointer2+8]
|
||||
sub ebx,6
|
||||
shl ebx,16
|
||||
add ebx,[Number.y]
|
||||
mcall
|
||||
|
||||
no_redraw_number_:
|
||||
;-----------------------------------------
|
||||
|
||||
exit_number:
|
||||
|
||||
ret 8
|
@ -1,484 +0,0 @@
|
||||
|
||||
pb_control_data_size = 34
|
||||
pb_redraw_all = 10000000b
|
||||
pb_redraw_all_off = 01111111b
|
||||
;pb_special_progress_on = 00000001b
|
||||
;pb_special_progress_off = 11111110b
|
||||
|
||||
;****************************************************
|
||||
;****************craete ProgressBar********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to parend
|
||||
;pointer to ProgressBar's structure
|
||||
;OUT
|
||||
;pointer to initialized control
|
||||
align 4
|
||||
|
||||
craete_progress_bar:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+24+4]
|
||||
mov eax,[esp+24+8]
|
||||
|
||||
mov [PointerToStructureForProgressBar],eax
|
||||
|
||||
mov eax,control_header_size+pb_control_data_size
|
||||
call craete_control
|
||||
|
||||
;set all EditBox's parameters in control
|
||||
mov [eax],dword progress_bar
|
||||
|
||||
mov ecx,pb_control_data_size
|
||||
mov esi,[PointerToStructureForProgressBar]
|
||||
mov edi,eax
|
||||
add edi,control_header_size
|
||||
rep movsb
|
||||
|
||||
call get_skin_height
|
||||
|
||||
mov ebx,[PointerToStructureForProgressBar]
|
||||
mov ecx,[ebx+10] ;x
|
||||
mov edx,[ebx+14] ;y
|
||||
mov esi,[ebx+18] ;size x
|
||||
mov edi,[ebx+22] ;size y
|
||||
add ecx,border_width
|
||||
add edx,[skin_height]
|
||||
;copy information to control
|
||||
mov [eax+24],ecx
|
||||
mov [eax+28],edx
|
||||
mov [eax+32],esi
|
||||
mov [eax+36],edi
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 8
|
||||
|
||||
;****************************************************
|
||||
;*****************Draw ProgressBar********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to control of ProgressBar
|
||||
;message
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
progress_bar:
|
||||
|
||||
;get message
|
||||
mov eax,[esp+8]
|
||||
|
||||
;get pointer to control of button
|
||||
mov esi,[esp+4]
|
||||
mov [PointerForProgressBar],esi
|
||||
|
||||
;copy control to local control
|
||||
add esi,control_header_size
|
||||
mov edi,dword ProgressBar
|
||||
mov ecx,pb_control_data_size
|
||||
rep movsb
|
||||
|
||||
|
||||
push eax
|
||||
;load coordinats and size from control
|
||||
mov eax,[PointerForProgressBar]
|
||||
mov ebx,[eax+24] ;x
|
||||
mov ecx,[eax+28] ;y
|
||||
mov edx,[eax+32] ;size x
|
||||
mov esi,[eax+36] ;size y
|
||||
;set current coordinats and sizes in EeditBox
|
||||
mov [ProgressBar.x],ebx
|
||||
mov [ProgressBar.y],ecx
|
||||
mov [ProgressBar.sizex],edx
|
||||
mov [ProgressBar.sizey],esi
|
||||
|
||||
pop eax
|
||||
|
||||
|
||||
cmp [eax],dword -1
|
||||
jne no_destroy_progress_bar
|
||||
|
||||
jmp exit_progress_bar
|
||||
no_destroy_progress_bar:
|
||||
|
||||
cmp [eax],dword 1
|
||||
jne no_redraw_all_progress_bar
|
||||
|
||||
or [ProgressBar.type],pb_redraw_all
|
||||
|
||||
no_redraw_all_progress_bar:
|
||||
|
||||
cmp [eax],dword 3
|
||||
jne no_special_message_progress_bar
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ProgressBar.type]
|
||||
and al,activate_trap
|
||||
test al,al
|
||||
jz no_draw_progress_bar
|
||||
|
||||
and [ProgressBar.type],deactivate_trap
|
||||
|
||||
cmp [ProgressBar.progress],dword 0.02
|
||||
jae nofull_redraw
|
||||
call draw_all_progress_bar
|
||||
nofull_redraw:
|
||||
|
||||
call draw_progress
|
||||
|
||||
no_draw_progress_bar:
|
||||
jmp exit_progress_bar
|
||||
|
||||
no_special_message_progress_bar:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ProgressBar.type]
|
||||
and al,pb_redraw_all
|
||||
test al,al
|
||||
jz no_draw_all_progress_bar
|
||||
|
||||
and [ProgressBar.type],pb_redraw_all_off
|
||||
|
||||
call draw_all_progress_bar
|
||||
|
||||
jmp exit_progress_bar
|
||||
|
||||
no_draw_all_progress_bar:
|
||||
|
||||
|
||||
exit_progress_bar:
|
||||
|
||||
mov edi,[PointerForProgressBar]
|
||||
add edi,control_header_size
|
||||
mov esi,dword ProgressBar
|
||||
mov ecx,pb_control_data_size
|
||||
rep movsb
|
||||
|
||||
ret 8
|
||||
|
||||
draw_all_progress_bar:
|
||||
|
||||
mov eax,[ProgressBar.color3]
|
||||
mov ebx,dword 0xffffff
|
||||
mov ecx,20
|
||||
mov edx,dword colors_table1
|
||||
call gradient
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[ProgressBar.x]
|
||||
mov ecx,[ProgressBar.y]
|
||||
mov edx,[ProgressBar.color1]
|
||||
shl ebx,16
|
||||
shl ecx,16
|
||||
add ebx,[ProgressBar.sizex]
|
||||
add ecx,[ProgressBar.sizey]
|
||||
mcall
|
||||
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[ProgressBar.y]
|
||||
add eax,[ProgressBar.sizex]
|
||||
add ebx,[ProgressBar.sizey]
|
||||
mov [v],eax ;v=x+sizex
|
||||
mov [v2],ebx ;v2=y+sizey
|
||||
|
||||
;dark lines
|
||||
mov eax,[ProgressBar.color3]
|
||||
and eax,0xffffff
|
||||
mov [Line.color],eax
|
||||
mov [Pixel.color],eax
|
||||
|
||||
;(x+1,y)-(x+sizex-1,y)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[ProgressBar.y]
|
||||
mov ecx,[v]
|
||||
add eax,1
|
||||
sub ecx,1
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],ecx
|
||||
mov [Line.y1],ebx
|
||||
mov [Line.y2],ebx
|
||||
call DrawLine
|
||||
|
||||
;(x+sizex,y+1)-(x+sizex,y+sizey-1)
|
||||
mov eax,[v]
|
||||
mov ebx,[v2]
|
||||
mov ecx,[ProgressBar.y]
|
||||
add ecx,1
|
||||
sub ebx,1
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ecx
|
||||
mov [Line.y2],ebx
|
||||
call DrawLine
|
||||
|
||||
;(x+1,y+sizey)-(x+sizex-1,y+sizey)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[v]
|
||||
mov ecx,[v2]
|
||||
add eax,1
|
||||
sub ebx,1
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],ebx
|
||||
mov [Line.y1],ecx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x,y+1)-(x,y_sizey-1)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[ProgressBar.y]
|
||||
mov ecx,[v2]
|
||||
add ebx,1
|
||||
sub ecx,1
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ebx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+1,y+1)-(x+1,y+2)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[ProgressBar.y]
|
||||
mov ecx,ebx
|
||||
add eax,1
|
||||
add ebx,1
|
||||
add ecx,2
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ebx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+2,y+1)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[ProgressBar.y]
|
||||
add eax,2
|
||||
add ebx,1
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
;(x+1,y+sizey-1)-(x+1,y+sizey-2)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[v2]
|
||||
mov ecx,ebx
|
||||
add eax,1
|
||||
sub ebx,1
|
||||
sub ecx,2
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ebx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+2,y+sizey-1)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[v2]
|
||||
add eax,2
|
||||
sub ebx,1
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
;(x+sizex-1,y+1)-(x+sizex-1,y+2)
|
||||
mov eax,[v]
|
||||
mov ebx,[ProgressBar.y]
|
||||
mov ecx,ebx
|
||||
sub eax,1
|
||||
add ebx,1
|
||||
add ecx,2
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ebx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+sizex-2,y+1)
|
||||
mov eax,[v]
|
||||
mov ebx,[ProgressBar.y]
|
||||
sub eax,2
|
||||
add ebx,1
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
;(x+sizex-1,y+sizey-2)-(x+sizex-1,y+sizey-1)
|
||||
mov eax,[v]
|
||||
mov ebx,[v2]
|
||||
mov ecx,ebx
|
||||
sub eax,1
|
||||
sub ebx,2
|
||||
sub ecx,1
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ebx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+sizex-2,y+sizey-1)
|
||||
mov eax,[v]
|
||||
mov ebx,[v2]
|
||||
sub eax,2
|
||||
sub ebx,1
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
mov eax,[colors_table1+10*3]
|
||||
and eax,0xffffff
|
||||
mov [Line.color],eax
|
||||
mov [Pixel.color],eax
|
||||
|
||||
;(x+3,y+1)-(x+sizex-3,y+1)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[v]
|
||||
mov ecx,[ProgressBar.y]
|
||||
add ecx,1
|
||||
add eax,3
|
||||
sub ebx,3
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],ebx
|
||||
mov [Line.y1],ecx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+2,y+2)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[ProgressBar.y]
|
||||
add eax,2
|
||||
add ebx,2
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
;(x+sizex-1,y+3)-(x+sizex-1,y+sizey-3)
|
||||
mov eax,[v]
|
||||
mov ebx,[v2]
|
||||
mov ecx,[ProgressBar.y]
|
||||
sub eax,1
|
||||
sub ebx,3
|
||||
add ecx,3
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ecx
|
||||
mov [Line.y2],ebx
|
||||
call DrawLine
|
||||
|
||||
;(x+sizex-2,y+2)
|
||||
mov eax,[v]
|
||||
mov ebx,[ProgressBar.y]
|
||||
sub eax,2
|
||||
add ebx,2
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
;(x+3,y+sizey-1)-(x+sizex-3,y+sizey-1)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[v]
|
||||
mov ecx,[v2]
|
||||
sub ebx,3
|
||||
sub ecx,1
|
||||
add eax,3
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],ebx
|
||||
mov [Line.y1],ecx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+sizex-2,y+sizey-2)
|
||||
mov eax,[v]
|
||||
mov ebx,[v2]
|
||||
sub eax,2
|
||||
sub ebx,2
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
;(x+1,y+3)-(x+1,y+sizey-3)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[ProgressBar.y]
|
||||
mov ecx,[v2]
|
||||
add eax,1
|
||||
add ebx,3
|
||||
sub ecx,3
|
||||
mov [Line.x1],eax
|
||||
mov [Line.x2],eax
|
||||
mov [Line.y1],ebx
|
||||
mov [Line.y2],ecx
|
||||
call DrawLine
|
||||
|
||||
;(x+2,y+sizey-2)
|
||||
mov eax,[ProgressBar.x]
|
||||
mov ebx,[v2]
|
||||
add eax,2
|
||||
sub ebx,2
|
||||
mov [Pixel.x],eax
|
||||
mov [Pixel.y],ebx
|
||||
call DrawPixel
|
||||
|
||||
ret
|
||||
|
||||
draw_progress:
|
||||
|
||||
cmp [ProgressBar.progress],dword 0.02
|
||||
jae min_size_ok
|
||||
|
||||
mov [ProgressBar.progress],dword 0.02
|
||||
min_size_ok:
|
||||
|
||||
cmp [ProgressBar.progress],dword 1.0
|
||||
jle max_size_ok
|
||||
|
||||
mov [ProgressBar.progress],dword 1.0
|
||||
max_size_ok:
|
||||
|
||||
mov eax,[ProgressBar.sizex]
|
||||
sub eax,6
|
||||
mov [v2],eax
|
||||
|
||||
fld [ProgressBar.progress]
|
||||
fild [v2]
|
||||
fmul st0,st1
|
||||
fistp [v3]
|
||||
fstp st0
|
||||
|
||||
mov eax,[ProgressBar.color2]
|
||||
mov ebx,0xffffff
|
||||
mov ecx,[ProgressBar.x]
|
||||
mov edx,[ProgressBar.y]
|
||||
mov esi,[v3]
|
||||
mov edi,[ProgressBar.sizey]
|
||||
sub edi,4
|
||||
shr edi,1
|
||||
add ecx,3
|
||||
add edx,1
|
||||
|
||||
call rectangle_gradient_up
|
||||
|
||||
mov eax,[ProgressBar.color2]
|
||||
mov ebx,0xffffff
|
||||
mov ecx,[ProgressBar.x]
|
||||
mov edx,[ProgressBar.y]
|
||||
mov esi,[v3]
|
||||
mov edi,[ProgressBar.sizey]
|
||||
sub edi,4
|
||||
shr edi,1
|
||||
add ecx,3
|
||||
add edx,2
|
||||
add edx,edi
|
||||
|
||||
call rectangle_gradient_down
|
||||
|
||||
ret
|
@ -1,34 +0,0 @@
|
||||
;****************************************************
|
||||
;***************Resize of GUI component**************
|
||||
;****************************************************
|
||||
;IN
|
||||
;ResizeComponent(dword Parend,dword Control,dword newx,dword newy)
|
||||
;newy
|
||||
;newx
|
||||
;Control
|
||||
;Parend
|
||||
;OUT
|
||||
;not
|
||||
|
||||
align 4
|
||||
|
||||
resize_component:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+16+4] ;Control
|
||||
mov ecx,[esp+16+8] ;new size x
|
||||
mov edx,[esp+16+12] ;new size y
|
||||
|
||||
mov [ebx+32],ecx
|
||||
mov [ebx+36],edx
|
||||
|
||||
pop ebp
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 12
|
File diff suppressed because it is too large
Load Diff
@ -1,19 +0,0 @@
|
||||
;ebx - pointer to string
|
||||
GetLengthString:
|
||||
|
||||
xor ecx,ecx
|
||||
|
||||
next_simvol:
|
||||
inc ecx
|
||||
xor eax,eax
|
||||
mov al,[ebx]
|
||||
test al,al
|
||||
jz null
|
||||
inc ebx
|
||||
jmp next_simvol
|
||||
|
||||
null:
|
||||
mov eax,ecx
|
||||
dec eax
|
||||
|
||||
ret
|
@ -1,180 +0,0 @@
|
||||
|
||||
; Macroinstructions for defining data structures
|
||||
|
||||
macro struct name
|
||||
{ fields@struct equ name
|
||||
match child parent, name \{ fields@struct equ child,fields@\#parent \}
|
||||
sub@struct equ
|
||||
struc db [val] \{ \common fields@struct equ fields@struct,.,db,<val> \}
|
||||
struc dw [val] \{ \common fields@struct equ fields@struct,.,dw,<val> \}
|
||||
struc du [val] \{ \common fields@struct equ fields@struct,.,du,<val> \}
|
||||
struc dd [val] \{ \common fields@struct equ fields@struct,.,dd,<val> \}
|
||||
struc dp [val] \{ \common fields@struct equ fields@struct,.,dp,<val> \}
|
||||
struc dq [val] \{ \common fields@struct equ fields@struct,.,dq,<val> \}
|
||||
struc dt [val] \{ \common fields@struct equ fields@struct,.,dt,<val> \}
|
||||
struc rb count \{ fields@struct equ fields@struct,.,db,count dup (?) \}
|
||||
struc rw count \{ fields@struct equ fields@struct,.,dw,count dup (?) \}
|
||||
struc rd count \{ fields@struct equ fields@struct,.,dd,count dup (?) \}
|
||||
struc rp count \{ fields@struct equ fields@struct,.,dp,count dup (?) \}
|
||||
struc rq count \{ fields@struct equ fields@struct,.,dq,count dup (?) \}
|
||||
struc rt count \{ fields@struct equ fields@struct,.,dt,count dup (?) \}
|
||||
macro db [val] \{ \common \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,db,<val> \}
|
||||
macro dw [val] \{ \common \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dw,<val> \}
|
||||
macro du [val] \{ \common \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,du,<val> \}
|
||||
macro dd [val] \{ \common \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dd,<val> \}
|
||||
macro dp [val] \{ \common \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dp,<val> \}
|
||||
macro dq [val] \{ \common \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dq,<val> \}
|
||||
macro dt [val] \{ \common \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dt,<val> \}
|
||||
macro rb count \{ \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,db,count dup (?) \}
|
||||
macro rw count \{ \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dw,count dup (?) \}
|
||||
macro rd count \{ \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dd,count dup (?) \}
|
||||
macro rp count \{ \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dp,count dup (?) \}
|
||||
macro rq count \{ \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dq,count dup (?) \}
|
||||
macro rt count \{ \local anonymous
|
||||
fields@struct equ fields@struct,anonymous,dt,count dup (?) \}
|
||||
macro union \{ fields@struct equ fields@struct,,union,<
|
||||
sub@struct equ union \}
|
||||
macro struct \{ fields@struct equ fields@struct,,substruct,<
|
||||
sub@struct equ substruct \}
|
||||
virtual at 0 }
|
||||
|
||||
macro ends
|
||||
{ match , sub@struct \{ restruc db,dw,du,dd,dp,dq,dt
|
||||
restruc rb,rw,rd,rp,rq,rt
|
||||
purge db,dw,du,dd,dp,dq,dt
|
||||
purge rb,rw,rd,rp,rq,rt
|
||||
purge union,struct
|
||||
match name=,fields,fields@struct \\{ fields@struct equ
|
||||
make@struct name,fields
|
||||
fields@\\#name equ fields \\}
|
||||
end virtual \}
|
||||
match any, sub@struct \{ fields@struct equ fields@struct> \}
|
||||
restore sub@struct }
|
||||
|
||||
macro make@struct name,[field,type,def]
|
||||
{ common
|
||||
if $
|
||||
display 'Error: definition of ',`name,' contains illegal instructions.',0Dh,0Ah
|
||||
err
|
||||
end if
|
||||
local define
|
||||
define equ name
|
||||
forward
|
||||
local sub
|
||||
match , field \{ make@substruct type,name,sub def
|
||||
define equ define,.,sub, \}
|
||||
match any, field \{ define equ define,.#field,type,<def> \}
|
||||
common
|
||||
match fields, define \{ define@struct fields \} }
|
||||
|
||||
macro define@struct name,[field,type,def]
|
||||
{ common
|
||||
local list
|
||||
list equ
|
||||
forward
|
||||
if ~ field eq .
|
||||
name#field type def
|
||||
sizeof.#name#field = $ - name#field
|
||||
else
|
||||
rb sizeof.#type
|
||||
end if
|
||||
local value
|
||||
match any, list \{ list equ list, \}
|
||||
list equ list <value>
|
||||
common
|
||||
sizeof.#name = $
|
||||
restruc name
|
||||
match values, list \{
|
||||
struc name value \\{
|
||||
match any, fields@struct \\\{ fields@struct equ fields@struct,.,name,<values> \\\}
|
||||
match , fields@struct \\\{ label .
|
||||
forward
|
||||
match , value \\\\{ field type def \\\\}
|
||||
match any, value \\\\{ field type value
|
||||
if ~ field eq .
|
||||
rb sizeof.#name#field - ($-field)
|
||||
end if \\\\}
|
||||
common \\\} \\} \} }
|
||||
|
||||
macro enable@substruct
|
||||
{ macro make@substruct substruct,parent,name,[field,type,def]
|
||||
\{ \common
|
||||
\local define
|
||||
define equ parent,name
|
||||
\forward
|
||||
\local sub
|
||||
match , field \\{ match any, type \\\{ enable@substruct
|
||||
make@substruct type,name,sub def
|
||||
purge make@substruct
|
||||
define equ define,.,sub, \\\} \\}
|
||||
match any, field \\{ define equ define,.\#field,type,<def> \\}
|
||||
\common
|
||||
match fields, define \\{ define@\#substruct fields \\} \} }
|
||||
|
||||
enable@substruct
|
||||
|
||||
macro define@union parent,name,[field,type,def]
|
||||
{ common
|
||||
virtual at 0
|
||||
forward
|
||||
if ~ field eq .
|
||||
virtual at 0
|
||||
parent#field type def
|
||||
sizeof.#parent#field = $ - parent#field
|
||||
end virtual
|
||||
if sizeof.#parent#field > $
|
||||
rb sizeof.#parent#field - $
|
||||
end if
|
||||
else if sizeof.#type > $
|
||||
rb sizeof.#type - $
|
||||
end if
|
||||
common
|
||||
sizeof.#name = $
|
||||
end virtual
|
||||
struc name [value] \{ \common
|
||||
label .\#name
|
||||
last@union equ
|
||||
forward
|
||||
match any, last@union \\{ virtual at .\#name
|
||||
field type def
|
||||
end virtual \\}
|
||||
match , last@union \\{ match , value \\\{ field type def \\\}
|
||||
match any, value \\\{ field type value \\\} \\}
|
||||
last@union equ field
|
||||
common rb sizeof.#name - ($ - .\#name) \} }
|
||||
|
||||
macro define@substruct parent,name,[field,type,def]
|
||||
{ common
|
||||
virtual at 0
|
||||
forward
|
||||
if ~ field eq .
|
||||
parent#field type def
|
||||
sizeof.#parent#field = $ - parent#field
|
||||
else
|
||||
rb sizeof.#type
|
||||
end if
|
||||
local value
|
||||
common
|
||||
sizeof.#name = $
|
||||
end virtual
|
||||
struc name value \{
|
||||
label .\#name
|
||||
forward
|
||||
match , value \\{ field type def \\}
|
||||
match any, value \\{ field type value
|
||||
if ~ field eq .
|
||||
rb sizeof.#parent#field - ($-field)
|
||||
end if \\}
|
||||
common \} }
|
@ -1,183 +0,0 @@
|
||||
|
||||
tx_control_data_size = 26
|
||||
tx_no_show_text = 00000001b
|
||||
tx_text_and_background = 00000010b
|
||||
tx_redraw_all = 10000000b
|
||||
tx_redraw_all_off = 01111111b
|
||||
;tx_special_redraw_on = 00000100b
|
||||
;tx_special_redraw_off = 11111011b
|
||||
|
||||
;****************************************************
|
||||
;********************craete Text**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to parend
|
||||
;pointer to Text's structure
|
||||
;OUT
|
||||
;pointer to initialized Texr's structure
|
||||
align 4
|
||||
|
||||
craete_text:
|
||||
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
|
||||
mov ebx,[esp+24+4]
|
||||
mov eax,[esp+24+8]
|
||||
|
||||
mov [PointerToStructureForText],eax
|
||||
|
||||
mov eax,control_header_size+tx_control_data_size
|
||||
call craete_control
|
||||
|
||||
;set all image's parameters in control
|
||||
mov [eax],dword text
|
||||
|
||||
mov ecx,tx_control_data_size
|
||||
mov esi,[PointerToStructureForText]
|
||||
mov edi,eax
|
||||
add edi,control_header_size
|
||||
rep movsb
|
||||
|
||||
call get_skin_height
|
||||
|
||||
mov ebx,[PointerToStructureForText]
|
||||
mov ecx,[ebx+6] ;x
|
||||
mov edx,[ebx+10] ;y
|
||||
mov esi,[ebx+14] ;length x
|
||||
imul esi,6
|
||||
add ecx,border_width
|
||||
add edx,[skin_height]
|
||||
;copy information to control
|
||||
mov [eax+24],ecx
|
||||
mov [eax+28],edx
|
||||
mov [eax+32],esi
|
||||
mov [eax+36],dword 9
|
||||
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop edx
|
||||
pop ecx
|
||||
pop ebx
|
||||
|
||||
ret 8
|
||||
|
||||
;****************************************************
|
||||
;********************Draw Text**********************
|
||||
;****************************************************
|
||||
;IN
|
||||
;pointer to control of text
|
||||
;message
|
||||
;OUT
|
||||
;not returned value
|
||||
align 4
|
||||
|
||||
text:
|
||||
|
||||
;get message
|
||||
mov eax,[esp+8]
|
||||
|
||||
;get pointer to control of image
|
||||
mov esi,[esp+4]
|
||||
mov [PointerForText],esi
|
||||
;copy control to local control
|
||||
add esi,control_header_size
|
||||
mov edi,dword Text
|
||||
mov ecx,tx_control_data_size
|
||||
rep movsb
|
||||
|
||||
|
||||
cmp [eax],dword 1
|
||||
jne no_redraw_all_text
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,[Text.type]
|
||||
and bl,tx_no_show_text
|
||||
test bl,bl
|
||||
jnz no_redraw_all_text
|
||||
|
||||
or [Text.type],tx_redraw_all
|
||||
|
||||
no_redraw_all_text:
|
||||
|
||||
cmp [eax],dword 3
|
||||
jne no_special_message_for_text
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,[Text.type]
|
||||
and bl,activate_trap
|
||||
test bl,bl
|
||||
jz no_special_message_for_text
|
||||
|
||||
or [Text.type],tx_redraw_all
|
||||
and [Text.type],deactivate_trap
|
||||
|
||||
no_special_message_for_text:
|
||||
|
||||
;load coordinats and size from control
|
||||
mov eax,[PointerForText]
|
||||
mov ebx,[eax+24] ;x
|
||||
mov ecx,[eax+28] ;y
|
||||
;set current coordinats and sizes in zakladka
|
||||
mov [Text.x],ebx
|
||||
mov [Text.y],ecx
|
||||
|
||||
;get standart colors table
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,dword pointer2
|
||||
mov edx,40
|
||||
mcall
|
||||
|
||||
xor eax,eax
|
||||
mov al,[Text.type]
|
||||
and al,tx_redraw_all
|
||||
test al,al
|
||||
jz no_redraw_text_
|
||||
|
||||
and [Text.type],tx_redraw_all_off
|
||||
|
||||
|
||||
mov esi,dword Text
|
||||
mov edi,[PointerForText]
|
||||
add edi,control_header_size
|
||||
mov ecx,2
|
||||
rep movsb
|
||||
|
||||
mov ecx,[Text.color]
|
||||
|
||||
xor eax,eax
|
||||
mov al,[Text.type]
|
||||
and al,tx_text_and_background
|
||||
test al,al
|
||||
jz no_background_color
|
||||
|
||||
mov edi,[Text.background_color]
|
||||
or ecx,01000000000000000000000000000000b
|
||||
|
||||
no_background_color:
|
||||
|
||||
mov eax,4
|
||||
mov ebx,[Text.x]
|
||||
shl ebx,16
|
||||
add ebx,[Text.y]
|
||||
mov edx,[Text.pointer]
|
||||
mov esi,[Text.length]
|
||||
mcall
|
||||
|
||||
no_redraw_text_:
|
||||
|
||||
exit_text:
|
||||
|
||||
mov edi,[PointerForText]
|
||||
add edi,control_header_size
|
||||
mov esi,dword Text
|
||||
mov ecx,tx_control_data_size
|
||||
rep movsb
|
||||
|
||||
ret 8
|
@ -1,16 +0,0 @@
|
||||
;****************************************************
|
||||
;****************get version of library**************
|
||||
;****************************************************
|
||||
;IN
|
||||
;not
|
||||
;OUT
|
||||
;version of library
|
||||
;fersion format year:mouth:day
|
||||
align 4
|
||||
|
||||
get_version:
|
||||
|
||||
xor eax,eax
|
||||
mov eax,dword 080204 ;4.02.08
|
||||
|
||||
ret
|
@ -1,100 +0,0 @@
|
||||
4.02.08
|
||||
RUSSIAN
|
||||
Äîáàâëåíî ñîõðàíåíèå ðåãèñòðîâ ïîñëå âõîäà â ôóíêöèè: SendMessage() , DestroyControl().
|
||||
|
||||
ENGLISH
|
||||
Save of registers after an entrance in function is added: SendMessage (), DestroyControl ().
|
||||
|
||||
31.01.08
|
||||
RUSSIAN
|
||||
Äîáàâëåíî ñîõðàíåíèå ðåãèñòðîâ ïîñëå âõîäà â ôóíêöèè libGUI.
|
||||
|
||||
ENGLISH
|
||||
Save of registers after an entrance in function libGUI is added.
|
||||
|
||||
16.12.07
|
||||
|
||||
RUSSIAN
|
||||
|
||||
Èñïðàâëåíû îøèáêè â êîíòðîëàõ: ProgressBar, Text, Image.
|
||||
|
||||
ENGLISH
|
||||
|
||||
Mistakes in controls are corrected: ProgressBar, Text, Image.
|
||||
|
||||
28.11.07
|
||||
|
||||
RUSSIAN
|
||||
|
||||
Äîáàâëåíà ïîääåðæêà ôîíîâîãî öâåòà äëÿ control-à Text.
|
||||
|
||||
ENGLISH
|
||||
|
||||
Support of background color for control Text is added.
|
||||
|
||||
19.11.07
|
||||
|
||||
RUSSIAN
|
||||
|
||||
Ôóíêöèÿ RemoveComponent ïåðåèìåíîâàíà â MoveComponent.
|
||||
Äîáàâëåíà íîâàÿ ôóíêöèÿ.
|
||||
void ActivateTrapForSpecializedMessage(dword *control) - àêòèâèðîâàòü ëîâóøêó äëÿ ñïåöèàëèçèðîâàííûõ ñîîáùåíèé.
|
||||
|
||||
ENGLISH
|
||||
|
||||
Function RemoveComponent is renamed in MoveComponent.
|
||||
New function is added.
|
||||
void ActivateTrapForSpecializedMessage (dword *control) - to activate a trap for the specialized messages.
|
||||
|
||||
15.10.07
|
||||
|
||||
RUSSIAN
|
||||
|
||||
Âûøëà íîâàÿ âåðñèÿ áèáëèîòåêè libGUI.
|
||||
|
||||
×òî íîâîãî â ýòîé âåðñèè:
|
||||
|
||||
1) Ïåðåäà÷à ïàðàìåòðîâ ôóíêöèÿì áèáëèîòåêè ïåðåïèñàíà íà êîíâåíöèþ stdcall.
|
||||
|
||||
2)Òåïåðü ôóíêöèè ëèíêóþòñÿ ïî èìåíàì.
|
||||
|
||||
3)Òåïåðü, åñëè íàâåñòè ìûøü íà êîìïîíåíò è íàæàòü ëåâóþ êíîïêó ìûøè, òî âñå ñîîáùåíèÿ îò
|
||||
ìûøè ïîñûëàþòñÿ òîëüêî ýòîìó êîìïîíåíòó.Åñëè îòïóñòèòü ëåâóþ êíîïêó ìûøè, òî ñîîáùåíèÿ îò
|
||||
ìûøè âíîâü ñòàíîâÿòñÿ äîñòóïíûìè äëÿ âñåõ êîìïîíåíòîâ.
|
||||
|
||||
4) Â áèáëèîòåêó äîáàâëåíû íîâûå ôóíêöèè.
|
||||
int Version(void) - ïîëó÷èòü âåðñèþ áèáëèîòåêè. Âåðñèÿ âîçâðàùàåòñÿ â ôîðìàòå: ãîä + ìåñÿö + äåíü . Òåêóùàÿ
|
||||
áèáëèîòåêà èìååò âåðñèþ 071014.
|
||||
void RemoveComponent(void *Control,int new_x,int new_y) - ïåðåìåùàåò êîìïîíåíò â íîâûå êîîðäèíàòû.
|
||||
void ResizeComponent(void *Control,int new_sizex,int new_sizey) - èçìåíÿåò ðàçìåð êîìïîíåíòà.
|
||||
Ïðèìåðû èñïîëüçîâàíèÿ ýòèõ ôóíêöèé ñìîòðèòå â ïðèìåðå Bookmark.
|
||||
|
||||
5)Äîáàâëåí ïðèìåð ðàáîòû ñ libGUI â ÿçûêå ïðîãðàììèðîâàíèÿ C. Ýòîò ïðèìåð ÿâëÿåòñÿ ÷àñòüþ èíòåðôåéñà íàïèñàííîãî
|
||||
ìíîé äëÿ ìîåé íàó÷íîé ïðîãðàììû.
|
||||
|
||||
ENGLISH
|
||||
|
||||
14.10.07
|
||||
|
||||
The new version of library libGUI has left.
|
||||
|
||||
That new in this version:
|
||||
|
||||
1) Transfer of parameters to functions of library is copied on the convention stdcall.
|
||||
|
||||
2) Now functions link on names.
|
||||
|
||||
3)Now, if to guide the mouse on a component and to press the left button of the mouse all
|
||||
messages from the mouse are sent only to this component.If to release(let off) the left
|
||||
button of the mouse messages from the mouse again become accessible to all components.
|
||||
|
||||
4) In library new functions are added.
|
||||
int Version (void) - to receive the version of library. The version comes back in a format: year + month + day.
|
||||
The current library has version 71014.
|
||||
void RemoveComponent (void *Control, int new_x, int new_y) - moves a component to new coordinates.
|
||||
void ResizeComponent (void *Control, int new_sizex, int new_sizey) - changes the size of a component.
|
||||
Examples of use of these functions look in example Bookmark.
|
||||
|
||||
5) The example of work with libGUI in programming language C is added. This example is a part of the interface
|
||||
written by me for my scientific program.
|
||||
|
@ -1,243 +0,0 @@
|
||||
/*
|
||||
libGUI dinamic library SDK
|
||||
load library and link function
|
||||
*/
|
||||
|
||||
#include "libGUI.h"
|
||||
|
||||
|
||||
struct IMPORT
|
||||
{
|
||||
char *name;
|
||||
void *function;
|
||||
}__attribute__((packed));
|
||||
|
||||
typedef struct IMPORT import_t;
|
||||
|
||||
static char *sys_libGUI_path="/sys/lib/libGUI.obj";
|
||||
|
||||
static char* funcnames[] = {"LibGUIversion","InitLibGUI","LibGUImain","QuitLibGUI",
|
||||
|
||||
"CreateWindow","SetWindowSizeRequest",
|
||||
|
||||
"PackControls","DestroyControl","SetControlSizeRequest","GetControlSizeX",
|
||||
"GetControlSizeY","SetControlNewPosition","GetControlPositionX",
|
||||
"GetControlPositionY","SetFocuse","RedrawControl","SpecialRedrawControl",
|
||||
|
||||
"SetCallbackFunction","BlockCallbackFunction","UnblockCallbackFunction",
|
||||
|
||||
"SetIDL_Function","DestroyIDL_Function",
|
||||
|
||||
"SetTimerCallbackForFunction","DestroyTimerCallbackForFunction",
|
||||
|
||||
"SetCallbackFunctionForEvent","DestroyCallbackFunctionForEvent",
|
||||
|
||||
"CreateButton","CreateButtonWithText",
|
||||
|
||||
"CreateProgressBar","SetProgressBarPulse","ProgressBarSetText","ProgressBarGetText",
|
||||
|
||||
"CreateHorizontalScrollBar","CreateVerticalScrollBar",
|
||||
|
||||
"CreateScrolledWindow","ScrolledWindowPackControls",
|
||||
|
||||
"CreateImage",
|
||||
|
||||
"CreateText","TextBackgroundOn","TextBackgroundOff",
|
||||
|
||||
"LoadFont","FreeFont"};
|
||||
|
||||
|
||||
static inline void* gui_ksys_load_dll(char *path)
|
||||
{
|
||||
void *dll_export;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(dll_export)
|
||||
:"a"(68),"b"(19),"c"(path));
|
||||
|
||||
return(dll_export);
|
||||
}
|
||||
|
||||
static inline void gui_ksys_debug_out(int c)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:
|
||||
:"a"(63),"b"(1),"c"(c));
|
||||
}
|
||||
|
||||
static void gui_debug_out_str(char *s)
|
||||
{
|
||||
|
||||
while(*s)
|
||||
{
|
||||
if (*s=='\n') gui_ksys_debug_out(13);
|
||||
|
||||
gui_ksys_debug_out(*s);
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
static int gui_strcmp(const char* string1, const char* string2)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (*string1<*string2)
|
||||
return -1;
|
||||
if (*string1>*string2)
|
||||
return 1;
|
||||
if (*string1=='\0')
|
||||
return 0;
|
||||
string1++;
|
||||
string2++;
|
||||
}
|
||||
}
|
||||
|
||||
static void* gui_cofflib_getproc(import_t *lib, char *name)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; lib[i].name && gui_strcmp(name, lib[i].name); i++);
|
||||
|
||||
if(lib[i].name) return lib[i].function;
|
||||
else return NULL;
|
||||
}
|
||||
|
||||
static inline void gui_ksys_exit(int value)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:
|
||||
:"a"(-1),"b"(value));
|
||||
}
|
||||
|
||||
void link_libGUI(import_t *exp,char **imports)
|
||||
{
|
||||
LibGUIversion=(DWORD (stdcall *)(void))
|
||||
gui_cofflib_getproc(exp,imports[0]);
|
||||
InitLibGUI=(char (stdcall *)(void))
|
||||
gui_cofflib_getproc(exp,imports[1]);
|
||||
LibGUImain=(void (stdcall *)(parent_t *WindowParent))
|
||||
gui_cofflib_getproc(exp,imports[2]);
|
||||
QuitLibGUI=(void (stdcall *)(parent_t *window))
|
||||
gui_cofflib_getproc(exp,imports[3]);
|
||||
CreateWindow=(void* (stdcall *)(void))
|
||||
gui_cofflib_getproc(exp,imports[4]);
|
||||
SetWindowSizeRequest=(void (stdcall *)(parent_t *WindowParent,int size_x,int size_y))
|
||||
gui_cofflib_getproc(exp,imports[5]);
|
||||
PackControls=(void (stdcall *)(void *Parent,void *control))
|
||||
gui_cofflib_getproc(exp,imports[6]);
|
||||
DestroyControl=(void (stdcall *)(void *control))
|
||||
gui_cofflib_getproc(exp,imports[7]);
|
||||
SetControlSizeRequest=(void (stdcall *)(void *Control,int new_size_x,int new_size_y))
|
||||
gui_cofflib_getproc(exp,imports[8]);
|
||||
GetControlSizeX=(int (stdcall *)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[9]);
|
||||
GetControlSizeY=(int (stdcall *)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[10]);
|
||||
SetControlNewPosition=(void (stdcall *)(void *Control,int new_x,int new_y))
|
||||
gui_cofflib_getproc(exp,imports[11]);
|
||||
GetControlPositionX=(int (stdcall *)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[12]);
|
||||
GetControlPositionY=(int (stdcall *)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[13]);
|
||||
SetFocuse=(void* (stdcall *)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[14]);
|
||||
RedrawControl=(void (stdcall *)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[15]);
|
||||
SpecialRedrawControl=(void (stdcall *)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[16]);
|
||||
SetCallbackFunction=(gui_callback_t* (stdcall *)(void *Control,
|
||||
int event_name,void *callback_func,void *callback_func_data))
|
||||
gui_cofflib_getproc(exp,imports[17]);
|
||||
BlockCallbackFunction=(void (stdcall *)(void *Control,gui_callback_t *callback_ID))
|
||||
gui_cofflib_getproc(exp,imports[18]);
|
||||
UnblockCallbackFunction=(void (stdcall *)(void *Control,gui_callback_t *callback_ID))
|
||||
gui_cofflib_getproc(exp,imports[19]);
|
||||
SetIDL_Function=(void (stdcall *)(parent_t *Parent,void *function,void *function_data))
|
||||
gui_cofflib_getproc(exp,imports[20]);
|
||||
DestroyIDL_Function=(void (stdcall *)(parent_t *Parent))
|
||||
gui_cofflib_getproc(exp,imports[21]);
|
||||
SetTimerCallbackForFunction=(gui_timer_t* (stdcall *)(parent_t *parent_window,
|
||||
int time_tick,void *func,void *func_data))
|
||||
gui_cofflib_getproc(exp,imports[22]);
|
||||
DestroyTimerCallbackForFunction=(void (stdcall *)(gui_timer_t *timer))
|
||||
gui_cofflib_getproc(exp,imports[23]);
|
||||
SetCallbackFunctionForEvent=(gui_callbackevent_t* (stdcall *)(parent_t *parent_window,
|
||||
int event_type,void *func,void *func_data))
|
||||
gui_cofflib_getproc(exp,imports[24]);
|
||||
DestroyCallbackFunctionForEvent=(void (stdcall *)(gui_callbackevent_t *callback_event))
|
||||
gui_cofflib_getproc(exp,imports[25]);
|
||||
CreateButton=(gui_button_t* (stdcall *)(gui_button_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[26]);
|
||||
CreateButtonWithText=(gui_button_t* (stdcall *)(gui_button_data_t *info,char *txt))
|
||||
gui_cofflib_getproc(exp,imports[27]);
|
||||
CreateProgressBar=(gui_progress_bar_t* (stdcall *)(gui_progress_bar_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[28]);
|
||||
SetProgressBarPulse=(void (stdcall *)(gui_progress_bar_t *ProgressBar,int time_update))
|
||||
gui_cofflib_getproc(exp,imports[29]);
|
||||
ProgressBarSetText=(void (stdcall *)(gui_progress_bar_t *pbar,char *txt))
|
||||
gui_cofflib_getproc(exp,imports[30]);
|
||||
ProgressBarGetText=(char* (stdcall *)(gui_progress_bar_t *pbar))
|
||||
gui_cofflib_getproc(exp,imports[31]);
|
||||
CreateHorizontalScrollBar=(gui_scroll_bar_t* (stdcall *)(gui_scroll_bar_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[32]);
|
||||
CreateVerticalScrollBar=(gui_scroll_bar_t* (stdcall *)(gui_scroll_bar_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[33]);
|
||||
CreateScrolledWindow=(gui_scrolled_window_t* (stdcall *)(gui_scrolled_window_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[34]);
|
||||
ScrolledWindowPackControls=(void (stdcall *)(gui_scrolled_window_t *parent,void *Control))
|
||||
gui_cofflib_getproc(exp,imports[35]);
|
||||
CreateImage=(gui_image_t* (stdcall *)(gui_image_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[36]);
|
||||
CreateText=(gui_text_t* (stdcall *)(gui_text_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[37]);
|
||||
TextBackgroundOn=(void (stdcall *)(gui_text_t *Text))
|
||||
gui_cofflib_getproc(exp,imports[38]);
|
||||
TextBackgroundOff=(void (stdcall *)(gui_text_t *Text))
|
||||
gui_cofflib_getproc(exp,imports[39]);
|
||||
LoadFont=(font_t* (stdcall *)(char *fullfontname))
|
||||
gui_cofflib_getproc(exp,imports[40]);
|
||||
FreeFont=(void (stdcall *)(font_t *font))
|
||||
gui_cofflib_getproc(exp,imports[41]);
|
||||
}
|
||||
|
||||
void LoadLibGUI(char *lib_path)
|
||||
{
|
||||
import_t *export;
|
||||
char *path;
|
||||
DWORD vers;
|
||||
|
||||
if (lib_path==NULL)
|
||||
{
|
||||
path=sys_libGUI_path;
|
||||
export=(import_t*)gui_ksys_load_dll(path);
|
||||
}
|
||||
else
|
||||
{
|
||||
path=lib_path;
|
||||
export=(import_t*)gui_ksys_load_dll(path);
|
||||
}
|
||||
|
||||
if (export==NULL)
|
||||
{
|
||||
gui_debug_out_str("\ncan't load lib=");
|
||||
gui_debug_out_str(path);
|
||||
gui_ksys_exit(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
link_libGUI(export,funcnames);
|
||||
if (InitLibGUI())
|
||||
{
|
||||
gui_debug_out_str("\ncan't initialize libGUI");
|
||||
gui_ksys_exit(0);
|
||||
}
|
||||
gui_debug_out_str(" initialized");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,591 +0,0 @@
|
||||
/*
|
||||
service structures of libGUI
|
||||
*/
|
||||
#define NULL (void*)0
|
||||
|
||||
typedef unsigned int DWORD;
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned short int WORD;
|
||||
typedef unsigned int size_t;
|
||||
|
||||
#define stdcall __stdcall
|
||||
#define cdecl __cdecl
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// 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 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 scroll bar
|
||||
////////////////////////////////////////////////////////////////
|
||||
#define SCROLLBAR_CHANGED_EVENT 33
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// connect events for main parent window
|
||||
////////////////////////////////////////////////////////////////
|
||||
#define DELETE_EVENT 36
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// font type structure
|
||||
////////////////////////////////////////////////////////////////
|
||||
#pragma pack(push,1)
|
||||
struct FONT
|
||||
{
|
||||
DWORD *fnt_draw;
|
||||
DWORD *fnt_unpacker;
|
||||
DWORD *fnt_fd;
|
||||
DWORD *fnt_bk;
|
||||
int sizex;
|
||||
int sizey;
|
||||
int size;
|
||||
int encoding_type;
|
||||
char *font;
|
||||
char *fnt_name;
|
||||
DWORD type;
|
||||
DWORD flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct FONT font_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// 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;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// 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;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// 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
|
||||
BYTE 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;
|
||||
BYTE scb_flags;
|
||||
};
|
||||
|
||||
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;
|
||||
BYTE 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;
|
||||
BYTE 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;
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// load libGUI library and link functions
|
||||
/////////////////////////////////////////////////////////////////
|
||||
void LoadLibGUI(char *lib_path);
|
||||
|
||||
//**********************************************************************
|
||||
// libGUI service functions
|
||||
//**********************************************************************
|
||||
|
||||
DWORD (stdcall *LibGUIversion)(void);
|
||||
char (stdcall *InitLibGUI)(void);
|
||||
void (stdcall *LibGUImain)(parent_t *WindowParent);
|
||||
void (stdcall *QuitLibGUI)(parent_t *window);
|
||||
|
||||
void* (stdcall *CreateWindow)(void);
|
||||
void (stdcall *SetWindowSizeRequest)(parent_t *WindowParent,int size_x,int size_y);
|
||||
|
||||
void (stdcall *PackControls)(void *Parent,void *control);
|
||||
void (stdcall *DestroyControl)(void *control);
|
||||
void (stdcall *SetControlSizeRequest)(void *Control,int new_size_x,int new_size_y);
|
||||
int (stdcall *GetControlSizeX)(void *Control);
|
||||
int (stdcall *GetControlSizeY)(void *Control);
|
||||
void (stdcall *SetControlNewPosition)(void *Control,int new_x,int new_y);
|
||||
int (stdcall *GetControlPositionX)(void *Control);
|
||||
int (stdcall *GetControlPositionY)(void *Control);
|
||||
void* (stdcall *SetFocuse)(void *Control);
|
||||
void (stdcall *RedrawControl)(void *Control);
|
||||
void (stdcall *SpecialRedrawControl)(void *Control);
|
||||
|
||||
gui_callback_t* (stdcall *SetCallbackFunction)(void *Control,
|
||||
int event_name,void *callback_func,
|
||||
void *callback_func_data);
|
||||
void (stdcall *BlockCallbackFunction)(void *Control,gui_callback_t *callback_ID);
|
||||
void (stdcall *UnblockCallbackFunction)(void *Control,gui_callback_t *callback_ID);
|
||||
|
||||
void (stdcall *SetIDL_Function)(parent_t *Parent,void *function,void *function_data);
|
||||
void (stdcall *DestroyIDL_Function)(parent_t *Parent);
|
||||
|
||||
gui_timer_t* (stdcall *SetTimerCallbackForFunction)(parent_t *parent_window,
|
||||
int time_tick,void *func,void *func_data);
|
||||
void (stdcall *DestroyTimerCallbackForFunction)(gui_timer_t *timer);
|
||||
|
||||
gui_callbackevent_t* (stdcall *SetCallbackFunctionForEvent)(parent_t *parent_window,
|
||||
int event_type,void *func,void *func_data);
|
||||
void (stdcall *DestroyCallbackFunctionForEvent)(gui_callbackevent_t *callback_event);
|
||||
|
||||
gui_button_t* (stdcall *CreateButton)(gui_button_data_t *info_for_control);
|
||||
gui_button_t* (stdcall *CreateButtonWithText)(gui_button_data_t *info,char *txt);
|
||||
|
||||
gui_progress_bar_t* (stdcall *CreateProgressBar)(gui_progress_bar_data_t *info_for_control);
|
||||
void (stdcall *SetProgressBarPulse)(gui_progress_bar_t *ProgressBar,int time_update);
|
||||
void (stdcall *ProgressBarSetText)(gui_progress_bar_t *pbar,char *txt);
|
||||
char* (stdcall *ProgressBarGetText)(gui_progress_bar_t *pbar);
|
||||
|
||||
gui_scroll_bar_t* (stdcall *CreateHorizontalScrollBar)(gui_scroll_bar_data_t *info_for_control);
|
||||
gui_scroll_bar_t* (stdcall *CreateVerticalScrollBar)(gui_scroll_bar_data_t *info_for_control);
|
||||
|
||||
gui_scrolled_window_t* (stdcall *CreateScrolledWindow)(gui_scrolled_window_data_t *info_for_control);
|
||||
void (stdcall *ScrolledWindowPackControls)(gui_scrolled_window_t *parent,void *Control);
|
||||
|
||||
gui_image_t* (stdcall *CreateImage)(gui_image_data_t *info_for_control);
|
||||
|
||||
gui_text_t* (stdcall *CreateText)(gui_text_data_t *info_for_control);
|
||||
void (stdcall *TextBackgroundOn)(gui_text_t *Text);
|
||||
void (stdcall *TextBackgroundOff)(gui_text_t *Text);
|
||||
|
||||
font_t* (stdcall *LoadFont)(char *fullfontname);
|
||||
void (stdcall *FreeFont)(font_t *font);
|
||||
|
@ -1,241 +0,0 @@
|
||||
/*
|
||||
libGUI dinamic library SDK
|
||||
load library and link function
|
||||
*/
|
||||
|
||||
#include "libGUI.h"
|
||||
|
||||
|
||||
struct IMPORT
|
||||
{
|
||||
char *name;
|
||||
void *function;
|
||||
}__attribute__((packed));
|
||||
|
||||
typedef struct IMPORT import_t;
|
||||
|
||||
static char *sys_libGUI_path="/sys/lib/libGUI.obj";
|
||||
|
||||
static char* funcnames[] = {"LibGUIversion","InitLibGUI","LibGUImain","QuitLibGUI",
|
||||
|
||||
"CreateWindow","SetWindowSizeRequest",
|
||||
|
||||
"PackControls","DestroyControl","SetControlSizeRequest","GetControlSizeX",
|
||||
"GetControlSizeY","SetControlNewPosition","GetControlPositionX",
|
||||
"GetControlPositionY","SetFocuse","RedrawControl","SpecialRedrawControl",
|
||||
|
||||
"SetCallbackFunction","BlockCallbackFunction","UnblockCallbackFunction",
|
||||
|
||||
"SetIDL_Function","DestroyIDL_Function",
|
||||
|
||||
"SetTimerCallbackForFunction","DestroyTimerCallbackForFunction",
|
||||
|
||||
"SetCallbackFunctionForEvent","DestroyCallbackFunctionForEvent",
|
||||
|
||||
"CreateButton","CreateButtonWithText",
|
||||
|
||||
"CreateProgressBar","SetProgressBarPulse","ProgressBarSetText","ProgressBarGetText",
|
||||
|
||||
"CreateHorizontalScrollBar","CreateVerticalScrollBar",
|
||||
|
||||
"CreateScrolledWindow","ScrolledWindowPackControls",
|
||||
|
||||
"CreateImage",
|
||||
|
||||
"CreateText","TextBackgroundOn","TextBackgroundOff",
|
||||
|
||||
"LoadFont","FreeFont"};
|
||||
|
||||
|
||||
static inline void* gui_ksys_load_dll(char *path)
|
||||
{
|
||||
void *dll_export;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(dll_export)
|
||||
:"a"(68),"b"(19),"c"(path));
|
||||
|
||||
return(dll_export);
|
||||
}
|
||||
|
||||
static inline void gui_ksys_debug_out(int c)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:
|
||||
:"a"(63),"b"(1),"c"(c));
|
||||
}
|
||||
|
||||
static void gui_debug_out_str(char *s)
|
||||
{
|
||||
|
||||
while(*s)
|
||||
{
|
||||
if (*s=='\n') gui_ksys_debug_out(13);
|
||||
|
||||
gui_ksys_debug_out(*s);
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
static int gui_strcmp(const char* string1, const char* string2)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (*string1<*string2)
|
||||
return -1;
|
||||
if (*string1>*string2)
|
||||
return 1;
|
||||
if (*string1=='\0')
|
||||
return 0;
|
||||
string1++;
|
||||
string2++;
|
||||
}
|
||||
}
|
||||
|
||||
static void* gui_cofflib_getproc(import_t *lib, char *name)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; lib[i].name && gui_strcmp(name, lib[i].name); i++);
|
||||
|
||||
if(lib[i].name) return lib[i].function;
|
||||
else return NULL;
|
||||
}
|
||||
|
||||
static inline void gui_ksys_exit(int value)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:
|
||||
:"a"(-1),"b"(value));
|
||||
}
|
||||
|
||||
void link_libGUI(import_t *exp,char **imports)
|
||||
{
|
||||
LibGUIversion=(DWORD stdcall (*)(void))
|
||||
gui_cofflib_getproc(exp,imports[0]);
|
||||
InitLibGUI=(char stdcall (*)(void))
|
||||
gui_cofflib_getproc(exp,imports[1]);
|
||||
LibGUImain=(void stdcall (*)(parent_t *WindowParent))
|
||||
gui_cofflib_getproc(exp,imports[2]);
|
||||
QuitLibGUI=(void stdcall (*)(parent_t *window))
|
||||
gui_cofflib_getproc(exp,imports[3]);
|
||||
CreateWindow=(void* stdcall (*)(void))
|
||||
gui_cofflib_getproc(exp,imports[4]);
|
||||
SetWindowSizeRequest=(void stdcall (*)(parent_t *WindowParent,int size_x,int size_y))
|
||||
gui_cofflib_getproc(exp,imports[5]);
|
||||
PackControls=(void stdcall (*)(void *Parent,void *control))
|
||||
gui_cofflib_getproc(exp,imports[6]);
|
||||
DestroyControl=(void stdcall (*)(void *control))
|
||||
gui_cofflib_getproc(exp,imports[7]);
|
||||
SetControlSizeRequest=(void stdcall (*)(void *Control,int new_size_x,int new_size_y))
|
||||
gui_cofflib_getproc(exp,imports[8]);
|
||||
GetControlSizeX=(int stdcall (*)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[9]);
|
||||
GetControlSizeY=(int stdcall (*)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[10]);
|
||||
SetControlNewPosition=(void stdcall (*)(void *Control,int new_x,int new_y))
|
||||
gui_cofflib_getproc(exp,imports[11]);
|
||||
GetControlPositionX=(int stdcall (*)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[12]);
|
||||
GetControlPositionY=(int stdcall (*)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[13]);
|
||||
SetFocuse=(void* stdcall (*)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[14]);
|
||||
RedrawControl=(void stdcall (*)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[15]);
|
||||
SpecialRedrawControl=(void stdcall (*)(void *Control))
|
||||
gui_cofflib_getproc(exp,imports[16]);
|
||||
SetCallbackFunction=(gui_callback_t* stdcall (*)(void *Control,
|
||||
int event_name,void *callback_func,void *callback_func_data))
|
||||
gui_cofflib_getproc(exp,imports[17]);
|
||||
BlockCallbackFunction=(void stdcall (*)(void *Control,gui_callback_t *callback_ID))
|
||||
gui_cofflib_getproc(exp,imports[18]);
|
||||
UnblockCallbackFunction=(void stdcall (*)(void *Control,gui_callback_t *callback_ID))
|
||||
gui_cofflib_getproc(exp,imports[19]);
|
||||
SetIDL_Function=(void stdcall (*)(parent_t *Parent,void *function,void *function_data))
|
||||
gui_cofflib_getproc(exp,imports[20]);
|
||||
DestroyIDL_Function=(void stdcall (*)(parent_t *Parent))
|
||||
gui_cofflib_getproc(exp,imports[21]);
|
||||
SetTimerCallbackForFunction=(gui_timer_t* stdcall (*)(parent_t *parent_window,
|
||||
int time_tick,void *func,void *func_data))
|
||||
gui_cofflib_getproc(exp,imports[22]);
|
||||
DestroyTimerCallbackForFunction=(void stdcall (*)(gui_timer_t *timer))
|
||||
gui_cofflib_getproc(exp,imports[23]);
|
||||
SetCallbackFunctionForEvent=(gui_callbackevent_t* stdcall (*)(parent_t *parent_window,
|
||||
int event_type,void *func,void *func_data))
|
||||
gui_cofflib_getproc(exp,imports[24]);
|
||||
DestroyCallbackFunctionForEvent=(void stdcall (*)(gui_callbackevent_t *callback_event))
|
||||
gui_cofflib_getproc(exp,imports[25]);
|
||||
CreateButton=(gui_button_t* stdcall (*)(gui_button_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[26]);
|
||||
CreateButtonWithText=(gui_button_t* stdcall (*)(gui_button_data_t *info,char *txt))
|
||||
gui_cofflib_getproc(exp,imports[27]);
|
||||
CreateProgressBar=(gui_progress_bar_t* stdcall (*)(gui_progress_bar_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[28]);
|
||||
SetProgressBarPulse=(void stdcall (*)(gui_progress_bar_t *ProgressBar,int time_update))
|
||||
gui_cofflib_getproc(exp,imports[29]);
|
||||
ProgressBarSetText=(void stdcall (*)(gui_progress_bar_t *pbar,char *txt))
|
||||
gui_cofflib_getproc(exp,imports[30]);
|
||||
ProgressBarGetText=(char* stdcall (*)(gui_progress_bar_t *pbar))
|
||||
gui_cofflib_getproc(exp,imports[31]);
|
||||
CreateHorizontalScrollBar=(gui_scroll_bar_t* stdcall (*)(gui_scroll_bar_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[32]);
|
||||
CreateVerticalScrollBar=(gui_scroll_bar_t* stdcall (*)(gui_scroll_bar_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[33]);
|
||||
CreateScrolledWindow=(gui_scrolled_window_t* stdcall (*)(gui_scrolled_window_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[34]);
|
||||
ScrolledWindowPackControls=(void stdcall (*)(gui_scrolled_window_t *parent,void *Control))
|
||||
gui_cofflib_getproc(exp,imports[35]);
|
||||
CreateImage=(gui_image_t* stdcall (*)(gui_image_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[36]);
|
||||
CreateText=(gui_text_t* stdcall (*)(gui_text_data_t *info_for_control))
|
||||
gui_cofflib_getproc(exp,imports[37]);
|
||||
TextBackgroundOn=(void stdcall (*)(gui_text_t *Text))
|
||||
gui_cofflib_getproc(exp,imports[38]);
|
||||
TextBackgroundOff=(void stdcall (*)(gui_text_t *Text))
|
||||
gui_cofflib_getproc(exp,imports[39]);
|
||||
LoadFont=(font_t* stdcall (*)(char *fullfontname))
|
||||
gui_cofflib_getproc(exp,imports[40]);
|
||||
FreeFont=(void stdcall (*)(font_t *font))
|
||||
gui_cofflib_getproc(exp,imports[41]);
|
||||
}
|
||||
|
||||
void LoadLibGUI(char *lib_path)
|
||||
{
|
||||
import_t *export;
|
||||
char *path;
|
||||
|
||||
if (lib_path==NULL)
|
||||
{
|
||||
path=sys_libGUI_path;
|
||||
export=(import_t*)gui_ksys_load_dll(path);
|
||||
}
|
||||
else
|
||||
{
|
||||
path=lib_path;
|
||||
export=(import_t*)gui_ksys_load_dll(path);
|
||||
}
|
||||
|
||||
if (export==NULL)
|
||||
{
|
||||
gui_debug_out_str("\ncan't load lib=");
|
||||
gui_debug_out_str(path);
|
||||
gui_ksys_exit(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
link_libGUI(export,funcnames);
|
||||
if (InitLibGUI())
|
||||
{
|
||||
gui_debug_out_str("\ncan't initialize libGUI");
|
||||
gui_ksys_exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,589 +0,0 @@
|
||||
/*
|
||||
service structures of libGUI
|
||||
*/
|
||||
#define NULL (void*)0
|
||||
|
||||
typedef unsigned int DWORD;
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned short int WORD;
|
||||
typedef unsigned int size_t;
|
||||
|
||||
#define stdcall __attribute__ ((stdcall))
|
||||
#define cdecl __attribute__ ((cdecl))
|
||||
#define pack __attribute__ ((packed))
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// 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 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 scroll bar
|
||||
////////////////////////////////////////////////////////////////
|
||||
#define SCROLLBAR_CHANGED_EVENT 33
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// connect events for main parent window
|
||||
////////////////////////////////////////////////////////////////
|
||||
#define DELETE_EVENT 36
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// font type structure
|
||||
////////////////////////////////////////////////////////////////
|
||||
struct FONT
|
||||
{
|
||||
DWORD *fnt_draw;
|
||||
DWORD *fnt_unpacker;
|
||||
DWORD *fnt_fd;
|
||||
DWORD *fnt_bk;
|
||||
int sizex;
|
||||
int sizey;
|
||||
int size;
|
||||
int encoding_type;
|
||||
char *font;
|
||||
char *fnt_name;
|
||||
DWORD type;
|
||||
DWORD flags;
|
||||
}pack;
|
||||
|
||||
typedef struct FONT font_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// header of parent of control
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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;
|
||||
}pack;
|
||||
|
||||
typedef struct HEADERPARENT parent_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// header of control
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct HEADER header_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// callback structure for callback function of control
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct CALLBACK
|
||||
{
|
||||
DWORD *clb_bk;
|
||||
DWORD *clb_fd;
|
||||
DWORD *clb_control;
|
||||
DWORD *func;
|
||||
DWORD *func_data;
|
||||
DWORD connect_event;
|
||||
DWORD flags;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct CALLBACK gui_callback_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// timer
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct TIMER
|
||||
{
|
||||
DWORD *tmr_bk;
|
||||
DWORD *tmr_fd;
|
||||
DWORD *tmr_parent;
|
||||
DWORD *func;
|
||||
DWORD *func_data;
|
||||
DWORD last_time;
|
||||
DWORD time_tick;
|
||||
DWORD flags;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct TIMER gui_timer_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// structure for callback events
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct CALLBACKEVENT
|
||||
{
|
||||
DWORD *calev_bk;
|
||||
DWORD *calev_fd;
|
||||
DWORD *calev_parent;
|
||||
DWORD *func;
|
||||
DWORD *func_data;
|
||||
DWORD event_type;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct CALLBACKEVENT gui_callbackevent_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// type of data - structure message
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct MESSAGE
|
||||
{
|
||||
DWORD type;
|
||||
DWORD arg1;
|
||||
DWORD arg2;
|
||||
DWORD arg3;
|
||||
DWORD arg4;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct MESSAGE gui_message_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// button
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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
|
||||
BYTE btn_flags;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ControlButton gui_button_t;
|
||||
|
||||
// information for creating control Button
|
||||
|
||||
struct ButtonData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ButtonData gui_button_data_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// scroller
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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;
|
||||
BYTE scb_flags;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ControlScrollBar gui_scroll_bar_t;
|
||||
|
||||
|
||||
struct ScrollBarData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
float ruller_size;
|
||||
float ruller_pos;
|
||||
float ruller_step;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ScrollBarData gui_scroll_bar_data_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// progressbar
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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;
|
||||
BYTE prb_flags;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ControlProgressBar gui_progress_bar_t;
|
||||
|
||||
|
||||
struct ProgressBarData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
float progress;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ProgressBarData gui_progress_bar_data_t;
|
||||
////////////////////////////////////////////////////////////////
|
||||
// scrolled window
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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;
|
||||
BYTE scw_flags;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ControlScrolledWindow gui_scrolled_window_t;
|
||||
|
||||
|
||||
struct ScrolledWindowData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ScrolledWindowData gui_scrolled_window_data_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// image
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ControlImage gui_image_t;
|
||||
|
||||
|
||||
struct ImageData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
char bits_per_pixel;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ImageData gui_image_data_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// text
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct ControlText gui_text_t;
|
||||
|
||||
|
||||
struct TextData
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
DWORD *font;
|
||||
DWORD color;
|
||||
DWORD background_color;
|
||||
char background;
|
||||
char *text;
|
||||
}pack;
|
||||
|
||||
|
||||
typedef struct TextData gui_text_data_t;
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// load libGUI library and link functions
|
||||
/////////////////////////////////////////////////////////////////
|
||||
void LoadLibGUI(char *lib_path);
|
||||
|
||||
//**********************************************************************
|
||||
// libGUI service functions
|
||||
//**********************************************************************
|
||||
|
||||
DWORD stdcall (*LibGUIversion)(void);
|
||||
char stdcall (*InitLibGUI)(void);
|
||||
void stdcall (*LibGUImain)(parent_t *WindowParent);
|
||||
void stdcall (*QuitLibGUI)(parent_t *window);
|
||||
|
||||
void* stdcall (*CreateWindow)(void);
|
||||
void stdcall (*SetWindowSizeRequest)(parent_t *WindowParent,int size_x,int size_y);
|
||||
|
||||
void stdcall (*PackControls)(void *Parent,void *control);
|
||||
void stdcall (*DestroyControl)(void *control);
|
||||
void stdcall (*SetControlSizeRequest)(void *Control,int new_size_x,int new_size_y);
|
||||
int stdcall (*GetControlSizeX)(void *Control);
|
||||
int stdcall (*GetControlSizeY)(void *Control);
|
||||
void stdcall (*SetControlNewPosition)(void *Control,int new_x,int new_y);
|
||||
int stdcall (*GetControlPositionX)(void *Control);
|
||||
int stdcall (*GetControlPositionY)(void *Control);
|
||||
void* stdcall (*SetFocuse)(void *Control);
|
||||
void stdcall (*RedrawControl)(void *Control);
|
||||
void stdcall (*SpecialRedrawControl)(void *Control);
|
||||
|
||||
gui_callback_t* stdcall (*SetCallbackFunction)(void *Control,
|
||||
int event_name,void *callback_func,
|
||||
void *callback_func_data);
|
||||
void stdcall (*BlockCallbackFunction)(void *Control,gui_callback_t *callback_ID);
|
||||
void stdcall (*UnblockCallbackFunction)(void *Control,gui_callback_t *callback_ID);
|
||||
|
||||
void stdcall (*SetIDL_Function)(parent_t *Parent,void *function,void *function_data);
|
||||
void stdcall (*DestroyIDL_Function)(parent_t *Parent);
|
||||
|
||||
gui_timer_t* stdcall (*SetTimerCallbackForFunction)(parent_t *parent_window,
|
||||
int time_tick,void *func,void *func_data);
|
||||
void stdcall (*DestroyTimerCallbackForFunction)(gui_timer_t *timer);
|
||||
|
||||
gui_callbackevent_t* stdcall (*SetCallbackFunctionForEvent)(parent_t *parent_window,
|
||||
int event_type,void *func,void *func_data);
|
||||
void stdcall (*DestroyCallbackFunctionForEvent)(gui_callbackevent_t *callback_event);
|
||||
|
||||
gui_button_t* stdcall (*CreateButton)(gui_button_data_t *info_for_control);
|
||||
gui_button_t* stdcall (*CreateButtonWithText)(gui_button_data_t *info,char *txt);
|
||||
|
||||
gui_progress_bar_t* stdcall (*CreateProgressBar)(gui_progress_bar_data_t *info_for_control);
|
||||
void stdcall (*SetProgressBarPulse)(gui_progress_bar_t *ProgressBar,int time_update);
|
||||
void stdcall (*ProgressBarSetText)(gui_progress_bar_t *pbar,char *txt);
|
||||
char* stdcall (*ProgressBarGetText)(gui_progress_bar_t *pbar);
|
||||
|
||||
gui_scroll_bar_t* stdcall (*CreateHorizontalScrollBar)(gui_scroll_bar_data_t *info_for_control);
|
||||
gui_scroll_bar_t* stdcall (*CreateVerticalScrollBar)(gui_scroll_bar_data_t *info_for_control);
|
||||
|
||||
gui_scrolled_window_t* stdcall (*CreateScrolledWindow)(gui_scrolled_window_data_t *info_for_control);
|
||||
void stdcall (*ScrolledWindowPackControls)(gui_scrolled_window_t *parent,void *Control);
|
||||
|
||||
gui_image_t* stdcall (*CreateImage)(gui_image_data_t *info_for_control);
|
||||
|
||||
gui_text_t* stdcall (*CreateText)(gui_text_data_t *info_for_control);
|
||||
void stdcall (*TextBackgroundOn)(gui_text_t *Text);
|
||||
void stdcall (*TextBackgroundOff)(gui_text_t *Text);
|
||||
|
||||
font_t* stdcall (*LoadFont)(char *fullfontname);
|
||||
void stdcall (*FreeFont)(font_t *font);
|
||||
|
@ -1,2 +0,0 @@
|
||||
gcc -c -O2 -nostdinc -nostdlib -march=pentium -fomit-frame-pointer -fno-builtin -o libGUI.obj libGUI.c
|
||||
@pause
|
@ -1,11 +0,0 @@
|
||||
SRC = libGUI.c
|
||||
TARGET = libGUI.obj
|
||||
CFLAGS = -O2 -nostdinc -nostdlib -march=pentium -fomit-frame-pointer -fno-builtin
|
||||
CC = gcc
|
||||
|
||||
all:
|
||||
$(CC) -c $(SRC) $(CFLAGS) -o $(TARGET)
|
||||
strip -X --strip-unneeded $(TARGET)
|
||||
clean:
|
||||
rm *.obj
|
||||
rm $(TARGET)
|
@ -1,11 +0,0 @@
|
||||
/*
|
||||
control button data
|
||||
*/
|
||||
|
||||
#define FLAG_INSERT_BUTTON_ON 0x1;
|
||||
#define FLAG_INSERT_BUTTON_OFF 0xfe;
|
||||
#define FLAG_PRESSED_BUTTON_ON 0x2
|
||||
#define FLAG_PRESSED_BUTTON_OFF 0xfd
|
||||
#define FLAG_RELEASED_BUTTON_ON 0x4
|
||||
#define FLAG_RELEASED_BUTTON_OFF 0xfb
|
||||
|
@ -1,413 +0,0 @@
|
||||
/*
|
||||
control Button
|
||||
*/
|
||||
|
||||
void DrawFocuseForButton(struct ControlButton *Button)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int sizex;
|
||||
int sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=Button->ctrl_x;
|
||||
y=Button->ctrl_y;
|
||||
sizex=Button->ctrl_sizex;
|
||||
sizey=Button->ctrl_sizey;
|
||||
fin=(struct FINITION*)Button->finition;
|
||||
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,0xbfff);
|
||||
}
|
||||
|
||||
void DrawPressedButton(struct ControlButton *Button)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int sizex;
|
||||
int sizey;
|
||||
struct FINITION *fin;
|
||||
gui_message_t message;
|
||||
|
||||
x=Button->ctrl_x;
|
||||
y=Button->ctrl_y;
|
||||
sizex=Button->ctrl_sizex;
|
||||
sizey=Button->ctrl_sizey;
|
||||
fin=(struct FINITION*)Button->finition;
|
||||
|
||||
Draw(fin,TOOL_GRADIENT_DOWN_FILLED_RECTANGLE,x,y,sizex,sizey/2,COLOR_FON,COLOR_MIDDLE_LIGHT);
|
||||
Draw(fin,TOOL_GRADIENT_DOWN_FILLED_RECTANGLE,x,y+sizey/2,sizex,sizey/2,COLOR_MIDDLE_LIGHT,COLOR_FON);
|
||||
|
||||
|
||||
Draw(fin,TOOL_HORIZONTAL_LINE,x,x+sizex-1,y,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_VERTICAL_LINE,x,y,y+sizey-1,COLOR_LIGHT);
|
||||
Draw(fin,TOOL_HORIZONTAL_LINE,x,x+sizex-1,y+sizey-1,COLOR_LIGHT);
|
||||
Draw(fin,TOOL_VERTICAL_LINE,x,y,y+sizey-1,COLOR_ABSOLUTE_DARK);
|
||||
|
||||
if (fin->flags & FINITION_ON)
|
||||
{
|
||||
message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION;
|
||||
message.arg1=fin->x;
|
||||
message.arg2=fin->y;
|
||||
message.arg3=fin->sizex;
|
||||
message.arg4=fin->sizey;
|
||||
}
|
||||
else
|
||||
{
|
||||
message.type=MESSAGE_FULL_REDRAW_ALL;
|
||||
}
|
||||
|
||||
SendMessage((struct HEADER*)Button,&message);
|
||||
|
||||
if (Button->flags & FLAG_FOCUSE_INPUT_ON) DrawFocuseForButton(Button);
|
||||
}
|
||||
|
||||
void DrawInsertButton(struct ControlButton *Button)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int sizex;
|
||||
int sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=Button->ctrl_x;
|
||||
y=Button->ctrl_y;
|
||||
sizex=Button->ctrl_sizex;
|
||||
sizey=Button->ctrl_sizey;
|
||||
fin=(struct FINITION*)Button->finition;
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_INSERT);
|
||||
}
|
||||
|
||||
void DrawButton(struct ControlButton *Button)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int sizex;
|
||||
int sizey;
|
||||
struct FINITION *fin;
|
||||
gui_message_t message;
|
||||
|
||||
x=Button->ctrl_x;
|
||||
y=Button->ctrl_y;
|
||||
sizex=Button->ctrl_sizex;
|
||||
sizey=Button->ctrl_sizey;
|
||||
fin=(struct FINITION*)Button->finition;
|
||||
|
||||
Draw(fin,TOOL_GRADIENT_UP_FILLED_RECTANGLE,x,y,sizex,sizey,COLOR_FON,COLOR_MIDDLE_LIGHT);
|
||||
//Draw(fin,TOOL_GRADIENT_DOWN_FILLED_RECTANGLE,x,y+sizey/2,sizex,sizey/2,COLOR_FON,COLOR_MIDDLE_LIGHT);
|
||||
|
||||
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK);
|
||||
|
||||
Draw(fin,TOOL_HORIZONTAL_LINE,x+1,x+sizex-2,y+1,COLOR_LIGHT);
|
||||
Draw(fin,TOOL_VERTICAL_LINE,x+sizex-2,y+1,y+sizey-2,COLOR_MIDDLE_LIGHT);
|
||||
Draw(fin,TOOL_HORIZONTAL_LINE,x+1,x+sizex-2,y+sizey-2,COLOR_MIDDLE_LIGHT);
|
||||
Draw(fin,TOOL_VERTICAL_LINE,x+1,y+1,y+sizey-2,COLOR_LIGHT);
|
||||
|
||||
if (Button->child_bk!=NULL)
|
||||
{
|
||||
if (fin->flags & FINITION_ON)
|
||||
{
|
||||
message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION;
|
||||
message.arg1=fin->x;
|
||||
message.arg2=fin->y;
|
||||
message.arg3=fin->sizex;
|
||||
message.arg4=fin->sizey;
|
||||
}
|
||||
else
|
||||
{
|
||||
message.type=MESSAGE_FULL_REDRAW_ALL;
|
||||
}
|
||||
SendMessage((struct HEADER*)Button,&message);
|
||||
}
|
||||
if (Button->flags & FLAG_FOCUSE_INPUT_ON) DrawFocuseForButton(Button);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// control Button
|
||||
//---------------------------------------------------------------------------------
|
||||
void ButtonProc(struct ControlButton *button,struct MESSAGE *message)
|
||||
{
|
||||
int x,y,btn_state;
|
||||
char v;
|
||||
struct TIMER *timer;
|
||||
struct FINITION *fin;
|
||||
parent_t *main_parent;
|
||||
|
||||
switch(message->type)
|
||||
{
|
||||
case MESSAGE_FULL_REDRAW_ALL:
|
||||
{
|
||||
//draw button
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION:
|
||||
{
|
||||
fin=(struct FINITION*)button->finition;
|
||||
fin->flags=fin->flags | FINITION_ON;
|
||||
fin->x=message->arg1;
|
||||
fin->y=message->arg2;
|
||||
fin->sizex=message->arg3;
|
||||
fin->sizey=message->arg4;
|
||||
DrawButton(button);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_KEYS_EVENT:
|
||||
{
|
||||
main_parent=(parent_t*)button->main_parent;
|
||||
//not relazed yet
|
||||
if (button->flags & FLAG_FOCUSE_INPUT_ON)
|
||||
{
|
||||
if (message->arg1==KEY_DOWN)
|
||||
{
|
||||
if (message->arg2==SC_SPACE)
|
||||
{
|
||||
button->btn_flags=button->btn_flags | FLAG_PRESSED_BUTTON_ON;
|
||||
|
||||
if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT)!=NULL)
|
||||
{
|
||||
button->flags=button->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)button;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawPressedButton(button);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (message->arg2==SC_SPACE)
|
||||
{
|
||||
button->btn_flags=button->btn_flags | FLAG_RELEASED_BUTTON_ON;
|
||||
button->btn_flags=button->btn_flags & FLAG_PRESSED_BUTTON_OFF;
|
||||
|
||||
if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT)!=NULL)
|
||||
{
|
||||
button->flags=button->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)button;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SPECIALIZED:
|
||||
{
|
||||
if (button->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON)
|
||||
{
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button);
|
||||
button->flags=button->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_MOUSE_EVENT:
|
||||
{ //check press of mouse buttons
|
||||
x=message->arg1;
|
||||
y=message->arg2;
|
||||
main_parent=(parent_t*)button->main_parent;
|
||||
|
||||
if (message->arg3==MOUSE_LEFT_BUTTON_UP)
|
||||
{
|
||||
//insert of button
|
||||
if (CheckCrossBox((struct HEADER*)button,x,y)==TRUE)
|
||||
{
|
||||
v=button->btn_flags & FLAG_INSERT_BUTTON_ON;
|
||||
if ((ControlCheckCallbackEvent(button,(DWORD)BUTTON_ENTER_EVENT)!=NULL) && (v==FALSE))
|
||||
{
|
||||
button->flags=button->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)button;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_ENTER_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
button->btn_flags=button->btn_flags | FLAG_INSERT_BUTTON_ON;
|
||||
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawInsertButton(button);
|
||||
}
|
||||
else
|
||||
{
|
||||
v=button->btn_flags & FLAG_INSERT_BUTTON_ON;
|
||||
if (v==TRUE)
|
||||
{
|
||||
if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_LEAVE_EVENT)!=NULL)
|
||||
{
|
||||
button->flags=button->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)button;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_LEAVE_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
button->btn_flags=button->btn_flags & FLAG_INSERT_BUTTON_OFF;
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button);
|
||||
}
|
||||
}
|
||||
|
||||
if (button->btn_flags & FLAG_PRESSED_BUTTON_ON)
|
||||
{
|
||||
button->btn_flags=button->btn_flags & FLAG_PRESSED_BUTTON_OFF;
|
||||
button->btn_flags=button->btn_flags | FLAG_RELEASED_BUTTON_ON;
|
||||
|
||||
if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT)!=NULL)
|
||||
{
|
||||
button->flags=button->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)button;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (CheckCrossBox((struct HEADER*)button,x,y)==TRUE)
|
||||
{
|
||||
if (message->arg3==MOUSE_LEFT_BUTTON_DOWN)
|
||||
{
|
||||
if ((button->btn_flags & FLAG_PRESSED_BUTTON_ON)==FALSE)
|
||||
{if (button->flags & FLAG_SHOW_CONTROL)
|
||||
DrawPressedButton(button);}
|
||||
button->btn_flags=button->btn_flags | FLAG_PRESSED_BUTTON_ON;
|
||||
}
|
||||
}
|
||||
|
||||
if ((message->arg3==MOUSE_LEFT_BUTTON_DOWN) && (button->btn_flags & FLAG_PRESSED_BUTTON_ON))
|
||||
{
|
||||
if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT)!=NULL)
|
||||
{
|
||||
button->flags=button->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)button;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_POSITION_EVENT:
|
||||
{
|
||||
button->ctrl_x=button->ctrl_x+message->arg1;
|
||||
button->ctrl_y=button->ctrl_y+message->arg2;
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CALL_TIMER_EVENT:
|
||||
{
|
||||
if (button->timer!=(DWORD*)NULL)
|
||||
{
|
||||
timer=(struct TIMER*)button->timer;
|
||||
if (timer->flags & FLAG_TIMER_ON) Timer(timer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_FOCUSE:
|
||||
{
|
||||
button->flags=button->flags | FLAG_FOCUSE_INPUT_ON;
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_FOCUSE:
|
||||
{
|
||||
button->flags=button->flags & FLAG_FOCUSE_INPUT_OFF;
|
||||
if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_DESTROY_CONTROL:
|
||||
{
|
||||
if (button->timer!=(DWORD*)NULL) free(button->timer);
|
||||
free(button->finition);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_MAIN_PARENT:
|
||||
{
|
||||
SendMessage((struct HEADER*)button,message);
|
||||
button->main_parent=(DWORD*)message->arg1;
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
//send message to child controls(if there is)
|
||||
SendMessage((struct HEADER*)button,message);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create control Button
|
||||
//---------------------------------------------------------------------------------
|
||||
void* CreateButton(struct ButtonData *info_for_control)
|
||||
{
|
||||
struct ControlButton *Button;
|
||||
struct FINITION *fin;
|
||||
|
||||
Button=malloc(sizeof(struct ControlButton));
|
||||
Button->finition=malloc(sizeof(struct FINITION));
|
||||
fin=(struct FINITION*)Button->finition;
|
||||
fin->flags=0;
|
||||
|
||||
ID++;
|
||||
#ifdef DEBUG
|
||||
printf("\ncreated button with ID=%d",(int)ID);
|
||||
#endif
|
||||
Button->child_bk=(DWORD*)NULL;
|
||||
Button->child_fd=(DWORD*)NULL;
|
||||
Button->active_control_for_keys=(DWORD*)NULL;
|
||||
Button->active_control_for_mouse=(DWORD*)NULL;
|
||||
Button->callback=(DWORD*)NULL;
|
||||
Button->timer=(DWORD*)NULL;
|
||||
|
||||
Button->ctrl_proc=(DWORD*)&ButtonProc;
|
||||
Button->ctrl_x=info_for_control->x;
|
||||
Button->ctrl_y=info_for_control->y;
|
||||
Button->ctrl_sizex=info_for_control->width;
|
||||
Button->ctrl_sizey=info_for_control->height;
|
||||
Button->ctrl_ID=ID;
|
||||
Button->flags=0;
|
||||
Button->flags=Button->flags | FLAG_SHOW_CONTROL;
|
||||
Button->flags=Button->flags | FLAG_FOCUSE_INPUT_SUPPOROTE;
|
||||
|
||||
Button->btn_flags=0;
|
||||
|
||||
return(Button);
|
||||
}
|
||||
|
||||
void* CreateButtonWithText(gui_button_data_t *info,char *txt)
|
||||
{
|
||||
gui_button_t *Button;
|
||||
gui_text_t *text;
|
||||
gui_text_data_t txtdata;
|
||||
int len;
|
||||
|
||||
Button=CreateButton(info);
|
||||
len=strlen(txt);
|
||||
|
||||
txtdata.x=0;
|
||||
txtdata.y=0;
|
||||
txtdata.font=NULL;
|
||||
txtdata.background=FALSE;
|
||||
txtdata.color=0;
|
||||
txtdata.text=malloc(len);
|
||||
memmove(txtdata.text,txt,len);
|
||||
text=CreateText(&txtdata);
|
||||
|
||||
if (text->ctrl_sizex>Button->ctrl_sizex) Button->ctrl_sizex=text->ctrl_sizex+10;
|
||||
if (text->ctrl_sizey>Button->ctrl_sizey) Button->ctrl_sizey=text->ctrl_sizey+6;
|
||||
|
||||
text->ctrl_x=(Button->ctrl_sizex/2)-(text->ctrl_sizex/2);
|
||||
text->ctrl_y=(Button->ctrl_sizey/2)-(text->ctrl_sizey/2);
|
||||
PackControls(Button,text);
|
||||
|
||||
return(Button);
|
||||
}
|
||||
|
@ -1,162 +0,0 @@
|
||||
/*
|
||||
control Image
|
||||
*/
|
||||
|
||||
void DisplayImage(gui_image_t *Image)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int sizex;
|
||||
int sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=Image->ctrl_x;
|
||||
y=Image->ctrl_y;
|
||||
sizex=Image->ctrl_sizex;
|
||||
sizey=Image->ctrl_sizey;
|
||||
fin=(struct FINITION*)Image->finition;
|
||||
|
||||
Draw(fin,TOOL_IMAGE,x,y,sizex,sizey,Image->bits_per_pixel,Image->img);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// control Image
|
||||
//---------------------------------------------------------------------------------
|
||||
void ImageProc(gui_image_t *Image,gui_message_t *message)
|
||||
{
|
||||
finition_t *fin;
|
||||
|
||||
switch(message->type)
|
||||
{
|
||||
case MESSAGE_FULL_REDRAW_ALL:
|
||||
{
|
||||
//draw Image
|
||||
if (Image->flags & FLAG_SHOW_CONTROL) DisplayImage(Image);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION:
|
||||
{
|
||||
fin=(struct FINITION*)Image->finition;
|
||||
fin->flags=fin->flags | FINITION_ON;
|
||||
fin->x=message->arg1;
|
||||
fin->y=message->arg2;
|
||||
fin->sizex=message->arg3;
|
||||
fin->sizey=message->arg4;
|
||||
DisplayImage(Image);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SPECIALIZED:
|
||||
{
|
||||
if (Image->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON)
|
||||
{
|
||||
if (Image->flags & FLAG_SHOW_CONTROL) DisplayImage(Image);
|
||||
Image->flags=Image->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_POSITION_EVENT:
|
||||
{
|
||||
Image->ctrl_x=Image->ctrl_x+message->arg1;
|
||||
Image->ctrl_y=Image->ctrl_y+message->arg2;
|
||||
break;
|
||||
}
|
||||
case MESSAGE_DESTROY_CONTROL:
|
||||
{
|
||||
free(Image->finition);
|
||||
free(Image->img);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_MAIN_PARENT:
|
||||
{
|
||||
SendMessage((struct HEADER*)Image,message);
|
||||
Image->main_parent=(DWORD*)message->arg1;
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
//send message to child controls(if there is)
|
||||
SendMessage((struct HEADER*)Image,message);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create control Image
|
||||
//---------------------------------------------------------------------------------
|
||||
void* CreateImage(struct ImageData *info_for_control)
|
||||
{
|
||||
gui_image_t *Image;
|
||||
finition_t *fin;
|
||||
DWORD sizemem;
|
||||
|
||||
Image=malloc(sizeof(struct ControlImage));
|
||||
Image->finition=malloc(sizeof(struct FINITION));
|
||||
fin=(struct FINITION*)Image->finition;
|
||||
fin->flags=0;
|
||||
|
||||
ID++;
|
||||
#ifdef DEBUG
|
||||
printf("\ncreated image with ID=%d",(int)ID);
|
||||
#endif
|
||||
Image->child_bk=(DWORD*)NULL;
|
||||
Image->child_fd=(DWORD*)NULL;
|
||||
Image->active_control_for_keys=(DWORD*)NULL;
|
||||
Image->active_control_for_mouse=(DWORD*)NULL;
|
||||
Image->callback=(DWORD*)NULL;
|
||||
Image->timer=(DWORD*)NULL;
|
||||
|
||||
Image->ctrl_proc=(DWORD*)&ImageProc;
|
||||
Image->ctrl_x=(DWORD)info_for_control->x;
|
||||
Image->ctrl_y=(DWORD)info_for_control->y;
|
||||
Image->ctrl_sizex=(DWORD)info_for_control->width;
|
||||
Image->ctrl_sizey=(DWORD)info_for_control->height;
|
||||
Image->bits_per_pixel=info_for_control->bits_per_pixel;
|
||||
Image->ctrl_ID=ID;
|
||||
Image->flags=0;
|
||||
Image->flags=Image->flags | FLAG_SHOW_CONTROL;
|
||||
|
||||
switch(Image->bits_per_pixel)
|
||||
{
|
||||
case 32:
|
||||
{
|
||||
sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*4;
|
||||
Image->bytes_per_pixel=4;
|
||||
break;
|
||||
}
|
||||
case 24:
|
||||
{
|
||||
sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*3;
|
||||
Image->bytes_per_pixel=3;
|
||||
break;
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*2;
|
||||
Image->bytes_per_pixel=2;
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*2;
|
||||
Image->bytes_per_pixel=2;
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
sizemem=Image->ctrl_sizex*Image->ctrl_sizey;
|
||||
Image->bytes_per_pixel=1;
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
sizemem=((Image->ctrl_sizex*Image->ctrl_sizey)>>1)+1;
|
||||
Image->bytes_per_pixel=0;
|
||||
break;
|
||||
}
|
||||
default: return(NULL);
|
||||
}
|
||||
|
||||
Image->img=malloc(sizemem);
|
||||
|
||||
return(Image);
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
#define FLAG_PB_VERTICAL_ORIENTATION_ON 0x1
|
||||
#define FLAG_PB_HORIZONTAL_ORIENTATION_ON 0x2
|
||||
#define FLAG_PB_FROM_LEFT_TO_RIGHT_ON 0x4
|
||||
#define FLAG_PB_FROM_RIGHT_TO_LEFT_ON 0x8
|
||||
#define FLAG_PB_FROM_DOWN_TO_UP_ON 0x10
|
||||
#define FLAG_PB_FROM_UP_TO_DOWN_ON 0x20
|
||||
#define FLAG_PB_TEXT_ON 0x40
|
||||
|
||||
#define FLAG_PB_VERTICAL_ORIENTATION_OFF 0xfe
|
||||
#define FLAG_PB_HORIZONTAL_ORIENTATION_OFF 0xfd
|
||||
#define FLAG_PB_FROM_LEFT_TO_RIGHT_OFF 0xfb
|
||||
#define FLAG_PB_FROM_RIGHT_TO_LEFT_OFF 0xf7
|
||||
#define FLAG_PB_FROM_DOWN_TO_UP_OFF 0xef
|
||||
#define FLAG_PB_FROM_UP_TO_DOWN_OFF 0xdf
|
||||
#define FLAG_PB_TEXT_OFF 0xbf
|
||||
|
@ -1,311 +0,0 @@
|
||||
/*
|
||||
control ProgressBar
|
||||
*/
|
||||
|
||||
void ProgressBarDrawProgress(struct ControlProgressBar *ProgressBar)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int pos_progress;
|
||||
int sizex;
|
||||
int sizey;
|
||||
char v;
|
||||
struct FINITION *fin;
|
||||
gui_message_t message;
|
||||
gui_text_size_t size;
|
||||
gui_text_t *Text;
|
||||
|
||||
if ((ProgressBar->flags & FLAG_SHOW_CONTROL)==FALSE) return;
|
||||
|
||||
x=ProgressBar->ctrl_x;
|
||||
y=ProgressBar->ctrl_y;
|
||||
sizex=ProgressBar->ctrl_sizex;
|
||||
sizey=ProgressBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ProgressBar->finition;
|
||||
|
||||
if (ProgressBar->progress<0.0) ProgressBar->progress=0.0;
|
||||
if (ProgressBar->progress>1.0) ProgressBar->progress=1.0;
|
||||
|
||||
v=ProgressBar->prb_flags & FLAG_PB_HORIZONTAL_ORIENTATION_ON;
|
||||
if (v!=FALSE)
|
||||
{
|
||||
pos_progress=(int)(ProgressBar->progress*(sizex-2));
|
||||
|
||||
if (ProgressBar->prb_flags & FLAG_PB_FROM_LEFT_TO_RIGHT_ON)
|
||||
{
|
||||
Draw(fin,TOOL_GRADIENT_UP_FILLED_RECTANGLE,x+1,y+1,pos_progress,sizey-2,COLOR_FON,COLOR_MIDDLE_LIGHT);
|
||||
Draw(fin,TOOL_GRADIENT_UP_FILLED_RECTANGLE,x+1+pos_progress,y+1,sizex-2-pos_progress,
|
||||
sizey-2,COLOR_MIDDLE_LIGHT,COLOR_LIGHT);
|
||||
if (ProgressBar->prb_flags & FLAG_PB_TEXT_ON)
|
||||
{
|
||||
if (fin->flags & FINITION_ON)
|
||||
{
|
||||
message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION;
|
||||
message.arg1=fin->x;
|
||||
message.arg2=fin->y;
|
||||
message.arg3=fin->sizex;
|
||||
message.arg4=fin->sizey;
|
||||
}
|
||||
else
|
||||
{
|
||||
message.type=MESSAGE_FULL_REDRAW_ALL;
|
||||
}
|
||||
Text=(gui_text_t*)ProgressBar->child_bk;
|
||||
size=GetStringSize((font_t*)Text->font,Text->text);
|
||||
Text->ctrl_sizex=(DWORD)size.sizex;
|
||||
Text->ctrl_sizey=(DWORD)size.sizey;
|
||||
Text->ctrl_x=x+(sizex/2)-(Text->ctrl_sizex/2);
|
||||
Text->ctrl_y=y+(sizey/2)-(Text->ctrl_sizey/2);
|
||||
|
||||
SendMessage((struct HEADER*)ProgressBar,&message);
|
||||
}
|
||||
}
|
||||
|
||||
if (ProgressBar->prb_flags & FLAG_PB_FROM_RIGHT_TO_LEFT_ON)
|
||||
{
|
||||
//Draw(fin,"filled_rectangle",x+sizex-pos_progress-1,y+1,x+sizex-1,sizey-2,0xff0000);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void DrawProgressBar(struct ControlProgressBar *ProgressBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
char c;
|
||||
char *save_buf,*buf;
|
||||
int save_size_x,save_size_y;
|
||||
DWORD draw_output,flags;
|
||||
finition_t *fin;
|
||||
|
||||
x=ProgressBar->ctrl_x;
|
||||
y=ProgressBar->ctrl_y;
|
||||
sizex=ProgressBar->ctrl_sizex;
|
||||
sizey=ProgressBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ProgressBar->finition;
|
||||
|
||||
//alocate a buffer for draw text
|
||||
c=screen.bits_per_pixel >> 3;
|
||||
buf=malloc(sizex*sizey*c);
|
||||
|
||||
//save current screen parameters
|
||||
save_buf=screen.buffer;
|
||||
save_size_x=screen.size_x;
|
||||
save_size_y=screen.size_y;
|
||||
draw_output=screen.draw_output;
|
||||
|
||||
//load parameters of local buffer
|
||||
screen.buffer=buf;
|
||||
screen.size_x=sizex;
|
||||
screen.size_y=sizey;
|
||||
screen.draw_output=DRAW_OUTPUT_BUFFER;
|
||||
|
||||
//move control
|
||||
SetControlNewPosition(ProgressBar,0,0);
|
||||
//save finition parameters
|
||||
flags=fin->flags;
|
||||
fin->flags &=FINITION_OFF;
|
||||
|
||||
//draw progress bar in buffer
|
||||
Draw(fin,TOOL_RECTANGLE,0,0,sizex,sizey,COLOR_ABSOLUTE_DARK);
|
||||
ProgressBarDrawProgress(ProgressBar);
|
||||
|
||||
//restore last position of control
|
||||
SetControlNewPosition(ProgressBar,x,y);
|
||||
//restore finition
|
||||
fin->flags=flags;
|
||||
|
||||
//restore screen parameters
|
||||
screen.buffer=save_buf;
|
||||
screen.size_x=save_size_x;
|
||||
screen.size_y=save_size_y;
|
||||
screen.draw_output=draw_output;
|
||||
|
||||
//move rendered objects from local buffer to screen
|
||||
if (fin->flags & FINITION_ON)
|
||||
DrawImageFinit(fin,x,y,sizex,sizey,screen.bits_per_pixel,buf);
|
||||
else
|
||||
DrawImage(x,y,sizex,sizey,screen.bits_per_pixel,buf);
|
||||
|
||||
//free local buffer
|
||||
free(buf);
|
||||
}
|
||||
|
||||
void SetProgressBarPulse(struct ControlProgressBar *ProgressBar,int time_tick)
|
||||
{
|
||||
struct TIMER *timer;
|
||||
struct HEADERPARENT *main_parent;
|
||||
|
||||
main_parent=(struct HEADERPARENT*)ProgressBar->main_parent;
|
||||
if (main_parent!=(struct HEADERPARENT*)NULL)
|
||||
{
|
||||
main_parent->number_timers_for_controls++;
|
||||
|
||||
ProgressBar->timer=(DWORD*)SetTimerCallbackForControl(time_tick,&DrawProgressBar,ProgressBar);
|
||||
timer=(struct TIMER*)ProgressBar->timer;
|
||||
timer->flags=timer->flags | FLAG_TIMER_ON;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// control ProgressBar
|
||||
//---------------------------------------------------------------------------------
|
||||
void ProgressBarProc(struct ControlProgressBar *ProgressBar,struct MESSAGE *message)
|
||||
{
|
||||
int btn_state;
|
||||
char v;
|
||||
struct TIMER *timer;
|
||||
struct FINITION *fin;
|
||||
|
||||
switch(message->type)
|
||||
{
|
||||
case MESSAGE_FULL_REDRAW_ALL:
|
||||
{
|
||||
//draw ProgressBar
|
||||
if (ProgressBar->flags & FLAG_SHOW_CONTROL) DrawProgressBar(ProgressBar);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION:
|
||||
{
|
||||
fin=(struct FINITION*)ProgressBar->finition;
|
||||
fin->flags=fin->flags | FINITION_ON;
|
||||
fin->x=message->arg1;
|
||||
fin->y=message->arg2;
|
||||
fin->sizex=message->arg3;
|
||||
fin->sizey=message->arg4;
|
||||
DrawProgressBar(ProgressBar);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SPECIALIZED:
|
||||
{ //redraw bar of progress
|
||||
if (ProgressBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON)
|
||||
{
|
||||
if (ProgressBar->flags & FLAG_SHOW_CONTROL) ProgressBarDrawProgress(ProgressBar);
|
||||
ProgressBar->flags=ProgressBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_POSITION_EVENT:
|
||||
{
|
||||
ProgressBar->ctrl_x=ProgressBar->ctrl_x+message->arg1;
|
||||
ProgressBar->ctrl_y=ProgressBar->ctrl_y+message->arg2;
|
||||
SendMessage((struct HEADER*)ProgressBar,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CALL_TIMER_EVENT:
|
||||
{
|
||||
if (ProgressBar->timer!=(DWORD*)NULL)
|
||||
{
|
||||
timer=(struct TIMER*)ProgressBar->timer;
|
||||
if (timer->flags & FLAG_TIMER_ON) Timer(timer);
|
||||
}
|
||||
SendMessage((struct HEADER*)ProgressBar,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_DESTROY_CONTROL:
|
||||
{
|
||||
if (ProgressBar->timer!=(DWORD*)NULL) free(ProgressBar->timer);
|
||||
free(ProgressBar->finition);
|
||||
SendMessage((struct HEADER*)ProgressBar,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_MAIN_PARENT:
|
||||
{
|
||||
SendMessage((struct HEADER*)ProgressBar,message);
|
||||
ProgressBar->main_parent=(DWORD*)message->arg1;
|
||||
SendMessage((struct HEADER*)ProgressBar,message);
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create control ProgressBar
|
||||
//---------------------------------------------------------------------------------
|
||||
void* CreateProgressBarEmpty(struct ProgressBarData *info_for_control)
|
||||
{
|
||||
struct ControlProgressBar *ProgressBar;
|
||||
struct FINITION *fin;
|
||||
|
||||
ProgressBar=malloc(sizeof(struct ControlProgressBar));
|
||||
ProgressBar->finition=malloc(sizeof(struct FINITION));
|
||||
fin=(struct FINITION*)ProgressBar->finition;
|
||||
fin->flags=0;
|
||||
|
||||
ID++;
|
||||
#ifdef DEBUG
|
||||
printf("\ncreated progress bar with ID=%d",(int)ID);
|
||||
#endif
|
||||
ProgressBar->child_bk=(DWORD*)NULL;
|
||||
ProgressBar->child_fd=(DWORD*)NULL;
|
||||
ProgressBar->active_control_for_keys=(DWORD*)NULL;
|
||||
ProgressBar->active_control_for_mouse=(DWORD*)NULL;
|
||||
ProgressBar->callback=(DWORD*)NULL;
|
||||
ProgressBar->timer=(DWORD*)NULL;
|
||||
ProgressBar->ctrl_proc=(DWORD*)&ProgressBarProc;
|
||||
ProgressBar->ctrl_x=(DWORD)info_for_control->x;
|
||||
ProgressBar->ctrl_y=(DWORD)info_for_control->y;
|
||||
ProgressBar->ctrl_sizex=(DWORD)info_for_control->width;
|
||||
ProgressBar->ctrl_sizey=(DWORD)info_for_control->height;
|
||||
ProgressBar->ctrl_ID=ID;
|
||||
ProgressBar->progress=info_for_control->progress;
|
||||
ProgressBar->flags=0;
|
||||
ProgressBar->flags=ProgressBar->flags | FLAG_SHOW_CONTROL;
|
||||
|
||||
ProgressBar->prb_flags=0;
|
||||
ProgressBar->prb_flags=ProgressBar->prb_flags | FLAG_PB_HORIZONTAL_ORIENTATION_ON;
|
||||
ProgressBar->prb_flags=ProgressBar->prb_flags | FLAG_PB_FROM_LEFT_TO_RIGHT_ON;
|
||||
|
||||
return(ProgressBar);
|
||||
}
|
||||
|
||||
void* CreateProgressBar(gui_progress_bar_data_t *info)
|
||||
{
|
||||
gui_text_t *text;
|
||||
gui_text_data_t txtdata;
|
||||
gui_progress_bar_t *pbar;
|
||||
|
||||
pbar=CreateProgressBarEmpty(info);
|
||||
|
||||
txtdata.x=0;
|
||||
txtdata.y=0;
|
||||
txtdata.font=NULL;
|
||||
txtdata.background=FALSE;
|
||||
txtdata.color=0;
|
||||
txtdata.text=malloc(1024);
|
||||
txtdata.text[0]=0;
|
||||
text=CreateText(&txtdata);
|
||||
|
||||
text->ctrl_x=(pbar->ctrl_sizex/2)-(text->ctrl_sizex/2);
|
||||
text->ctrl_y=(pbar->ctrl_sizey/2)-(text->ctrl_sizey/2);
|
||||
PackControls(pbar,text);
|
||||
|
||||
text->flags &=FLAG_HIDE_CONTROL;
|
||||
|
||||
return(pbar);
|
||||
}
|
||||
|
||||
void ProgressBarSetText(gui_progress_bar_t *pbar,char *txt)
|
||||
{
|
||||
gui_text_t *text;
|
||||
|
||||
text=(gui_text_t*)pbar->child_bk;
|
||||
|
||||
if (*txt!='\0')
|
||||
{
|
||||
pbar->prb_flags|=FLAG_PB_TEXT_ON;
|
||||
memmove(text->text,txt,strlen(txt));
|
||||
text->flags |=FLAG_SHOW_CONTROL;
|
||||
}
|
||||
}
|
||||
|
||||
char *ProgressBarGetText(gui_progress_bar_t *pbar)
|
||||
{
|
||||
gui_text_t *text;
|
||||
|
||||
text=(gui_text_t*)pbar->child_bk;
|
||||
|
||||
return(text->text);
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
#define FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON 0x1
|
||||
#define FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_OFF 0xfe
|
||||
#define FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON 0x2
|
||||
#define FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_OFF 0xfd
|
||||
#define FLAG_SCROLL_RULLER_PRESSED 0x4
|
||||
#define FLAG_SCROLL_RULLER_RELEASED 0xfb
|
@ -1,801 +0,0 @@
|
||||
/*
|
||||
control ScrollBar
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Draw Ruller
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void DrawRuller(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
int scrollbar_size,ruller_size,ruller_pos;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON)
|
||||
{
|
||||
scrollbar_size=sizex-sizey*2;
|
||||
ruller_size=(int)(scrollbar_size*ScrollBar->ruller_size);
|
||||
if (ruller_size<5) ruller_size=5;
|
||||
if (ruller_size>sizex) ruller_size=sizex-2*sizey;
|
||||
|
||||
ruller_pos=x+sizey+(int)((scrollbar_size-ruller_size)*ScrollBar->ruller_pos);
|
||||
//left bar
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+sizey,y+1,ruller_pos-x-sizey,sizey-2,COLOR_FON);
|
||||
//right bar
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,ruller_pos+ruller_size,y+1,x+sizex-sizey-ruller_pos-ruller_size,sizey-2,COLOR_FON);
|
||||
//roller
|
||||
Draw(fin,TOOL_RECTANGLE,ruller_pos,y,ruller_size,sizey,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,ruller_pos+1,y+1,ruller_size-2,sizey-2,COLOR_MIDDLE_LIGHT);
|
||||
Draw(fin,TOOL_VERTICAL_LINE,ruller_pos+(ruller_size/2)-2,y+sizey/4,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_VERTICAL_LINE,ruller_pos+(ruller_size/2),y+sizey/4,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_VERTICAL_LINE,ruller_pos+(ruller_size/2)+2,y+sizey/4,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON)
|
||||
{
|
||||
scrollbar_size=sizey-sizex*2;
|
||||
ruller_size=(int)(scrollbar_size*ScrollBar->ruller_size);
|
||||
if (ruller_size<5) ruller_size=5;
|
||||
if (ruller_size>sizey) ruller_size=sizey-2*sizex;
|
||||
|
||||
ruller_pos=y+sizex+(int)((scrollbar_size-ruller_size)*ScrollBar->ruller_pos);
|
||||
//up bar
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizex,sizex-2,ruller_pos-y-sizex,COLOR_FON);
|
||||
//down bar
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,ruller_pos+ruller_size,sizex-2,y+sizey-sizex-ruller_pos-ruller_size,COLOR_FON);
|
||||
//roller
|
||||
Draw(fin,TOOL_RECTANGLE,x,ruller_pos,sizex,ruller_size,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,ruller_pos+1,sizex-2,ruller_size-2,COLOR_MIDDLE_LIGHT);
|
||||
Draw(fin,TOOL_HORIZONTAL_LINE,x+sizex/4,x+(3*sizex)/4,ruller_pos+(ruller_size/2)-2,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_HORIZONTAL_LINE,x+sizex/4,x+(3*sizex)/4,ruller_pos+(ruller_size/2),COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_HORIZONTAL_LINE,x+sizex/4,x+(3*sizex)/4,ruller_pos+(ruller_size/2)+2,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Draw full Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void DrawScrollBar(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON)
|
||||
{
|
||||
|
||||
//draw child buttons and roller
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK);
|
||||
//left button
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizey,sizey,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT);
|
||||
//left arrow of left button
|
||||
Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
//right button
|
||||
Draw(fin,TOOL_RECTANGLE,x+sizex-sizey,y,sizey,sizey,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+sizex-sizey+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT);
|
||||
//right arrow of right button
|
||||
Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
//roller
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
|
||||
if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON)
|
||||
{
|
||||
//draw child buttons and roller
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK);
|
||||
//up button
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizex,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT);
|
||||
//up arrow of up button
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+sizex/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+(3*sizex)/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+sizex/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+(3*sizex)/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
//down button
|
||||
Draw(fin,TOOL_RECTANGLE,x,y+sizey-sizex,sizex,sizex,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizey-sizex+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT);
|
||||
//down arrow of down button
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+sizex/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+(3*sizex)/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+sizex/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+(3*sizex)/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
//roller
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Vertical Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// animation of up button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_DrawPressedUpButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//up button
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizex,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizex-2,sizex-2,COLOR_FON);
|
||||
//up arrow of up button
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+sizex/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+(3*sizex)/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+sizex/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+(3*sizex)/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
void ScrollBar_DrawReleasedUpButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//up button
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizex,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT);
|
||||
//up arrow of up button
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+sizex/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+(3*sizex)/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+sizex/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+(3*sizex)/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// animation of down button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_DrawPressedDownButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//down button
|
||||
Draw(fin,TOOL_RECTANGLE,x,y+sizey-sizex,sizex,sizex,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizey-sizex+1,sizex-2,sizex-2,COLOR_FON);
|
||||
//down arrow of down button
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+sizex/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+(3*sizex)/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+sizex/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+(3*sizex)/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
void ScrollBar_DrawReleasedDownButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//down button
|
||||
Draw(fin,TOOL_RECTANGLE,x,y+sizey-sizex,sizex,sizex,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizey-sizex+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT);
|
||||
//down arrow of down button
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+sizex/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+(3*sizex)/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+sizex/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+(3*sizex)/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// callback function for up button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_FuncCallbackForUpButton_Pressed(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
struct HEADERPARENT *main_parent;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
if (ScrollBar->ruller_size!=1.0)
|
||||
{
|
||||
ScrollBar->ruller_pos=ScrollBar->ruller_pos-ScrollBar->ruller_step;
|
||||
}
|
||||
if (ScrollBar->ruller_pos<0.0) ScrollBar->ruller_pos=0.0;
|
||||
ScrollBar_DrawPressedUpButton(ScrollBar);
|
||||
|
||||
if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL)
|
||||
{
|
||||
main_parent=(struct HEADERPARENT*)ScrollBar->main_parent;
|
||||
ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)ScrollBar;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
|
||||
void ScrollBar_FuncCallbackForUpButton_Released(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
ScrollBar_DrawReleasedUpButton(ScrollBar);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// callback function for down button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_FuncCallbackForDownButton_Pressed(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
struct HEADERPARENT *main_parent;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
if (ScrollBar->ruller_size!=1.0)
|
||||
{
|
||||
ScrollBar->ruller_pos=ScrollBar->ruller_pos+ScrollBar->ruller_step;
|
||||
}
|
||||
if (ScrollBar->ruller_pos>1.0) ScrollBar->ruller_pos=1.0;
|
||||
ScrollBar_DrawPressedDownButton(ScrollBar);
|
||||
|
||||
if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL)
|
||||
{
|
||||
main_parent=(struct HEADERPARENT*)ScrollBar->main_parent;
|
||||
ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)ScrollBar;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
|
||||
void ScrollBar_FuncCallbackForDownButton_Released(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
ScrollBar_DrawReleasedDownButton(ScrollBar);
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Horizontal Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// animation of left button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_DrawPressedLeftButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//left button
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizey-2,sizey-2,COLOR_FON);
|
||||
//left arrow of left button
|
||||
Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
void ScrollBar_DrawReleasedLeftButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//left button
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT);
|
||||
//left arrow of left button
|
||||
Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// animation of right button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_DrawPressedRightButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//right button
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+sizex-sizey+1,y+1,sizey-2,sizey-2,COLOR_FON);
|
||||
//right arrow of right button
|
||||
Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
|
||||
void ScrollBar_DrawReleasedRightButton(struct ControlScrollBar *ScrollBar)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
|
||||
//right button
|
||||
Draw(fin,TOOL_FILLED_RECTANGLE,x+sizex-sizey+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT);
|
||||
//right arrow of right button
|
||||
Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK);
|
||||
Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// callback function for left button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_FuncCallbackForLeftButton_Pressed(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
struct HEADERPARENT *main_parent;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
if (ScrollBar->ruller_size!=1.0)
|
||||
{
|
||||
ScrollBar->ruller_pos=ScrollBar->ruller_pos-ScrollBar->ruller_step;
|
||||
}
|
||||
if (ScrollBar->ruller_pos<0.0) ScrollBar->ruller_pos=0.0;
|
||||
ScrollBar_DrawPressedLeftButton(ScrollBar);
|
||||
|
||||
if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL)
|
||||
{
|
||||
main_parent=(struct HEADERPARENT*)ScrollBar->main_parent;
|
||||
ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)ScrollBar;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
|
||||
void ScrollBar_FuncCallbackForLeftButton_Released(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
ScrollBar_DrawReleasedLeftButton(ScrollBar);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// callback function for right button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_FuncCallbackForRightButton_Pressed(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
struct HEADERPARENT *main_parent;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
if (ScrollBar->ruller_size!=1.0)
|
||||
{
|
||||
ScrollBar->ruller_pos=ScrollBar->ruller_pos+ScrollBar->ruller_step;
|
||||
}
|
||||
if (ScrollBar->ruller_pos>1.0) ScrollBar->ruller_pos=1.0;
|
||||
ScrollBar_DrawPressedRightButton(ScrollBar);
|
||||
|
||||
if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL)
|
||||
{
|
||||
main_parent=(struct HEADERPARENT*)ScrollBar->main_parent;
|
||||
ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)ScrollBar;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
|
||||
void ScrollBar_FuncCallbackForRightButton_Released(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
ScrollBar_DrawReleasedRightButton(ScrollBar);
|
||||
DrawRuller(ScrollBar);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// callback function for ruller bar button of Scroll Bar
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollBar_FuncCallbackForScrollRullerPressed(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
ScrollBar->scb_flags=ScrollBar->scb_flags | FLAG_SCROLL_RULLER_PRESSED;
|
||||
}
|
||||
|
||||
void ScrollBar_FuncCallbackForScrollRullerReleased(struct HEADER *control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
|
||||
ScrollBar=(struct ControlScrollBar*)data;
|
||||
ScrollBar->scb_flags=ScrollBar->scb_flags & FLAG_SCROLL_RULLER_RELEASED;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// control ScrollBar
|
||||
//---------------------------------------------------------------------------------
|
||||
void ScrollBarProc(struct ControlScrollBar *ScrollBar,struct MESSAGE *message)
|
||||
{
|
||||
int mx,my;
|
||||
char mouse_buttons_state;
|
||||
int x,y,sizex,sizey;
|
||||
int scrollbar_size,ruller_size,ruller_pos;
|
||||
int ruller_min,ruller_max;
|
||||
float max_pos,current_pos,last_ruller_pos;
|
||||
struct FINITION *fin;
|
||||
struct TIMER *timer;
|
||||
struct HEADERPARENT *main_parent;
|
||||
|
||||
x=ScrollBar->ctrl_x;
|
||||
y=ScrollBar->ctrl_y;
|
||||
sizex=ScrollBar->ctrl_sizex;
|
||||
sizey=ScrollBar->ctrl_sizey;
|
||||
|
||||
switch(message->type)
|
||||
{
|
||||
case MESSAGE_FULL_REDRAW_ALL:
|
||||
{
|
||||
//draw ScrollBar
|
||||
if (ScrollBar->flags & FLAG_SHOW_CONTROL) DrawScrollBar(ScrollBar);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION:
|
||||
{
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
fin->flags=fin->flags | FINITION_ON;
|
||||
fin->x=message->arg1;
|
||||
fin->y=message->arg2;
|
||||
fin->sizex=message->arg3;
|
||||
fin->sizey=message->arg4;
|
||||
DrawScrollBar(ScrollBar);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SPECIALIZED:
|
||||
{
|
||||
if (ScrollBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON)
|
||||
{
|
||||
if (ScrollBar->flags & FLAG_SHOW_CONTROL) DrawScrollBar(ScrollBar);
|
||||
ScrollBar->flags=ScrollBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_MOUSE_EVENT:
|
||||
{
|
||||
mx=message->arg1;
|
||||
my=message->arg2;
|
||||
mouse_buttons_state=message->arg3;
|
||||
main_parent=(struct HEADERPARENT*)ScrollBar->main_parent;
|
||||
|
||||
//check ruller state
|
||||
if (ScrollBar->scb_flags & FLAG_SCROLL_RULLER_PRESSED)
|
||||
{ // horizontal ScrollBar
|
||||
if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON)
|
||||
{
|
||||
scrollbar_size=sizex-sizey*2;
|
||||
ruller_size=scrollbar_size*ScrollBar->ruller_size;
|
||||
if (ruller_size<5) ruller_size=5;
|
||||
|
||||
ruller_min=x+sizey; //minimum x
|
||||
ruller_max=ruller_min+scrollbar_size-ruller_size;
|
||||
ruller_pos=mx-(ruller_size/2);//ruller centred under mouse pointer
|
||||
|
||||
if (ruller_pos<ruller_min) ruller_pos=ruller_min;
|
||||
if (ruller_pos>ruller_max) ruller_pos=ruller_max;
|
||||
|
||||
if (ruller_max!=ruller_min)
|
||||
{
|
||||
max_pos=(float)(ruller_max-ruller_min);
|
||||
current_pos=(float)(ruller_pos-ruller_min);
|
||||
last_ruller_pos=ScrollBar->ruller_pos;
|
||||
ScrollBar->ruller_pos=current_pos/max_pos;
|
||||
}
|
||||
else {ScrollBar->ruller_pos=0.0;}
|
||||
|
||||
if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL)
|
||||
{
|
||||
if (ScrollBar->ruller_pos!=last_ruller_pos)
|
||||
{
|
||||
ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)ScrollBar;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
}
|
||||
if (ScrollBar->ruller_pos!=last_ruller_pos) DrawRuller(ScrollBar);
|
||||
break;
|
||||
}
|
||||
// vertical ScrollBar
|
||||
if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON)
|
||||
{
|
||||
scrollbar_size=sizey-sizex*2;
|
||||
ruller_size=scrollbar_size*ScrollBar->ruller_size;
|
||||
if (ruller_size<5) ruller_size=5;
|
||||
|
||||
ruller_min=y+sizex; //minimum x
|
||||
ruller_max=ruller_min+scrollbar_size-ruller_size;
|
||||
ruller_pos=my-(ruller_size/2);//ruller centred under mouse pointer
|
||||
|
||||
if (ruller_pos<ruller_min) ruller_pos=ruller_min;
|
||||
if (ruller_pos>ruller_max) ruller_pos=ruller_max;
|
||||
|
||||
if (ruller_max!=ruller_min)
|
||||
{
|
||||
max_pos=(float)(ruller_max-ruller_min);
|
||||
current_pos=(float)(ruller_pos-ruller_min);
|
||||
last_ruller_pos=ScrollBar->ruller_pos;
|
||||
ScrollBar->ruller_pos=current_pos/max_pos;
|
||||
}
|
||||
else {ScrollBar->ruller_pos=0.0;}
|
||||
|
||||
if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL)
|
||||
{
|
||||
if (ScrollBar->ruller_pos!=last_ruller_pos)
|
||||
{
|
||||
ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON;
|
||||
main_parent->control_for_callback_function[main_parent->number_callbacks]=
|
||||
(DWORD*)ScrollBar;
|
||||
main_parent->callback_for_control_callback[main_parent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT);
|
||||
main_parent->number_callbacks++;
|
||||
}
|
||||
}
|
||||
if (ScrollBar->ruller_pos!=last_ruller_pos) DrawRuller(ScrollBar);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_POSITION_EVENT:
|
||||
{
|
||||
ScrollBar->ctrl_x=ScrollBar->ctrl_x+message->arg1;
|
||||
ScrollBar->ctrl_y=ScrollBar->ctrl_y+message->arg2;
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CALL_TIMER_EVENT:
|
||||
{
|
||||
if (ScrollBar->timer!=(DWORD*)NULL)
|
||||
{
|
||||
timer=(struct TIMER*)ScrollBar->timer;
|
||||
if (timer->flags & FLAG_TIMER_ON) Timer(timer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_DESTROY_CONTROL:
|
||||
{
|
||||
if (ScrollBar->timer!=(DWORD*)NULL) free(ScrollBar->timer);
|
||||
free(ScrollBar->finition);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_MAIN_PARENT:
|
||||
{
|
||||
SendMessage((struct HEADER*)ScrollBar,message);
|
||||
ScrollBar->main_parent=(DWORD*)message->arg1;
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
//send message to child controls(if there is)
|
||||
SendMessage((struct HEADER*)ScrollBar,message);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create control ScrollBar
|
||||
//---------------------------------------------------------------------------------
|
||||
void* CreateScrollBar(struct ScrollBarData *info_for_control)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
struct FINITION *fin;
|
||||
|
||||
ScrollBar=malloc(sizeof(struct ControlScrollBar));
|
||||
ScrollBar->finition=malloc(sizeof(struct FINITION));
|
||||
fin=(struct FINITION*)ScrollBar->finition;
|
||||
fin->flags=0;
|
||||
|
||||
ID++;
|
||||
#ifdef DEBUG
|
||||
printf("\ncreated scroll bar with ID=%d",(int)ID);
|
||||
#endif
|
||||
ScrollBar->child_bk=(DWORD*)NULL;
|
||||
ScrollBar->child_fd=(DWORD*)NULL;
|
||||
ScrollBar->active_control_for_keys=(DWORD*)NULL;
|
||||
ScrollBar->active_control_for_mouse=(DWORD*)NULL;
|
||||
ScrollBar->callback=(DWORD*)NULL;
|
||||
ScrollBar->timer=(DWORD*)NULL;
|
||||
|
||||
ScrollBar->ctrl_proc=(DWORD*)&ScrollBarProc;
|
||||
ScrollBar->ctrl_x=(DWORD)info_for_control->x;
|
||||
ScrollBar->ctrl_y=(DWORD)info_for_control->y;
|
||||
ScrollBar->ctrl_sizex=(DWORD)info_for_control->width;
|
||||
ScrollBar->ctrl_sizey=(DWORD)info_for_control->height;
|
||||
ScrollBar->ctrl_ID=ID;
|
||||
ScrollBar->ruller_size=info_for_control->ruller_size;
|
||||
ScrollBar->ruller_pos=info_for_control->ruller_pos;
|
||||
ScrollBar->ruller_step=info_for_control->ruller_step;
|
||||
ScrollBar->flags=0;
|
||||
ScrollBar->flags=ScrollBar->flags | FLAG_SHOW_CONTROL;
|
||||
|
||||
return(ScrollBar);
|
||||
}
|
||||
|
||||
void* CreateHorizontalScrollBar(struct ScrollBarData *info_for_control)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
struct ControlButton *ChildButton1;
|
||||
struct ControlButton *ChildButton2;
|
||||
struct ControlButton *ScrollRuller;
|
||||
struct ButtonData ChildButton1Data;
|
||||
struct ButtonData ChildButton2Data;
|
||||
struct ButtonData ScrollRullerData;
|
||||
|
||||
ScrollBar=CreateScrollBar(info_for_control);
|
||||
//set horizontal orientation
|
||||
ScrollBar->scb_flags=0;
|
||||
ScrollBar->scb_flags=ScrollBar->scb_flags | FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON;
|
||||
|
||||
//fill data for first child button of scroller
|
||||
ChildButton1Data.x=0;
|
||||
ChildButton1Data.y=0;
|
||||
ChildButton1Data.width=ScrollBar->ctrl_sizey;
|
||||
ChildButton1Data.height=ChildButton1Data.width;
|
||||
|
||||
//fill data for second child button of scroller
|
||||
ChildButton2Data.x=ScrollBar->ctrl_sizex-ScrollBar->ctrl_sizey;
|
||||
ChildButton2Data.y=0;
|
||||
ChildButton2Data.width=ScrollBar->ctrl_sizey;
|
||||
ChildButton2Data.height=ChildButton2Data.width;
|
||||
|
||||
//fill data for scroll ruller button of scroller
|
||||
ScrollRullerData.x=ScrollBar->ctrl_sizey;
|
||||
ScrollRullerData.y=0;
|
||||
ScrollRullerData.width=ScrollBar->ctrl_sizex-2*ScrollBar->ctrl_sizey;
|
||||
ScrollRullerData.height=ScrollBar->ctrl_sizey;
|
||||
|
||||
ChildButton1=CreateButton(&ChildButton1Data);
|
||||
ChildButton2=CreateButton(&ChildButton2Data);
|
||||
ScrollRuller=CreateButton(&ScrollRullerData);
|
||||
|
||||
ChildButton1->flags=ChildButton1->flags & FLAG_HIDE_CONTROL;
|
||||
ChildButton2->flags=ChildButton2->flags & FLAG_HIDE_CONTROL;
|
||||
ScrollRuller->flags=ScrollRuller->flags & FLAG_HIDE_CONTROL;
|
||||
|
||||
SetCallbackFunction(ChildButton1,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForLeftButton_Pressed,ScrollBar);
|
||||
SetCallbackFunction(ChildButton1,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForLeftButton_Released,ScrollBar);
|
||||
|
||||
SetCallbackFunction(ChildButton2,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForRightButton_Pressed,ScrollBar);
|
||||
SetCallbackFunction(ChildButton2,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForRightButton_Released,ScrollBar);
|
||||
|
||||
SetCallbackFunction(ScrollRuller,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForScrollRullerPressed,ScrollBar);
|
||||
SetCallbackFunction(ScrollRuller,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForScrollRullerReleased,ScrollBar);
|
||||
|
||||
//pack button in control ScrollBar
|
||||
PackControls(ScrollBar,ChildButton1);
|
||||
PackControls(ScrollBar,ChildButton2);
|
||||
PackControls(ScrollBar,ScrollRuller);
|
||||
|
||||
return(ScrollBar);
|
||||
}
|
||||
|
||||
void* CreateVerticalScrollBar(struct ScrollBarData *info_for_control)
|
||||
{
|
||||
struct ControlScrollBar *ScrollBar;
|
||||
struct ControlButton *ChildButton1;
|
||||
struct ControlButton *ChildButton2;
|
||||
struct ControlButton *ScrollRuller;
|
||||
struct ButtonData ChildButton1Data;
|
||||
struct ButtonData ChildButton2Data;
|
||||
struct ButtonData ScrollRullerData;
|
||||
|
||||
ScrollBar=CreateScrollBar(info_for_control);
|
||||
//set vertical orientation
|
||||
ScrollBar->scb_flags=0;
|
||||
ScrollBar->scb_flags=ScrollBar->scb_flags | FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON;
|
||||
|
||||
//fill data for first child button of scroller
|
||||
ChildButton1Data.x=0;
|
||||
ChildButton1Data.y=0;
|
||||
ChildButton1Data.width=ScrollBar->ctrl_sizex;
|
||||
ChildButton1Data.height=ChildButton1Data.width;
|
||||
|
||||
//fill data for second child button of scroller
|
||||
ChildButton2Data.x=0;
|
||||
ChildButton2Data.y=ScrollBar->ctrl_sizey-ScrollBar->ctrl_sizex;
|
||||
ChildButton2Data.width=ScrollBar->ctrl_sizex;
|
||||
ChildButton2Data.height=ChildButton2Data.width;
|
||||
|
||||
//fill data for scroll ruller button of scroller
|
||||
ScrollRullerData.x=0;
|
||||
ScrollRullerData.y=ScrollBar->ctrl_sizex;
|
||||
ScrollRullerData.width=ScrollBar->ctrl_sizex;
|
||||
ScrollRullerData.height=ScrollBar->ctrl_sizey-2*ScrollBar->ctrl_sizex;
|
||||
|
||||
ChildButton1=CreateButton(&ChildButton1Data);
|
||||
ChildButton2=CreateButton(&ChildButton2Data);
|
||||
ScrollRuller=CreateButton(&ScrollRullerData);
|
||||
|
||||
ChildButton1->flags=ChildButton1->flags & FLAG_HIDE_CONTROL;
|
||||
ChildButton2->flags=ChildButton2->flags & FLAG_HIDE_CONTROL;
|
||||
ScrollRuller->flags=ScrollRuller->flags & FLAG_HIDE_CONTROL;
|
||||
|
||||
SetCallbackFunction(ChildButton1,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForUpButton_Pressed,ScrollBar);
|
||||
SetCallbackFunction(ChildButton1,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForUpButton_Released,ScrollBar);
|
||||
|
||||
SetCallbackFunction(ChildButton2,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForDownButton_Pressed,ScrollBar);
|
||||
SetCallbackFunction(ChildButton2,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForDownButton_Released,ScrollBar);
|
||||
|
||||
SetCallbackFunction(ScrollRuller,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForScrollRullerPressed,ScrollBar);
|
||||
SetCallbackFunction(ScrollRuller,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForScrollRullerReleased,ScrollBar);
|
||||
|
||||
//pack button in control ScrollBar
|
||||
PackControls(ScrollBar,ChildButton1);
|
||||
PackControls(ScrollBar,ChildButton2);
|
||||
PackControls(ScrollBar,ScrollRuller);
|
||||
|
||||
return(ScrollBar);
|
||||
}
|
||||
|
@ -1,6 +0,0 @@
|
||||
#define FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON 0x1
|
||||
#define FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON 0x2
|
||||
|
||||
#define FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_OFF 0xfe
|
||||
#define FLAG_SCROLL_WIN_VERTICAL_SCROLL_OFF 0xfd
|
||||
|
@ -1,530 +0,0 @@
|
||||
/*
|
||||
control ScrolledWindow
|
||||
*/
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// pack controls in ScrolledWindow
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
void ScrolledWindowPackControls(void *parent,void *Control)
|
||||
{
|
||||
struct HEADER *control;
|
||||
struct ControlScrolledWindow *ScrolledWindow;
|
||||
struct ControlScrollBar *HorizontalScrollBar;
|
||||
struct ControlScrollBar *VerticalScrollBar;
|
||||
struct FINITION *fin;
|
||||
int x,y;
|
||||
|
||||
ScrolledWindow=(struct ControlScrolledWindow*)parent;
|
||||
control=(struct HEADER *)Control;
|
||||
|
||||
if (control->ctrl_x+control->ctrl_sizex>ScrolledWindow->virtual_sizex)
|
||||
{
|
||||
ScrolledWindow->virtual_sizex=control->ctrl_x+control->ctrl_sizex;
|
||||
}
|
||||
if (control->ctrl_y+control->ctrl_sizey>ScrolledWindow->virtual_sizey)
|
||||
{
|
||||
ScrolledWindow->virtual_sizey=control->ctrl_y+control->ctrl_sizey;
|
||||
}
|
||||
|
||||
PackControls(ScrolledWindow,control);
|
||||
|
||||
//calculate new control coordinates
|
||||
x=control->ctrl_x+1;//add border width
|
||||
y=control->ctrl_y+1;//add border heght
|
||||
SetControlNewPosition(control,x,y);
|
||||
|
||||
//save coordinates of control in arrea
|
||||
ScrolledWindow->virtual_controls_x[ScrolledWindow->number_virtual_controls]=x;
|
||||
ScrolledWindow->virtual_controls_y[ScrolledWindow->number_virtual_controls]=y;
|
||||
ScrolledWindow->number_virtual_controls++;
|
||||
|
||||
x=ScrolledWindow->ctrl_x+1;
|
||||
y=ScrolledWindow->ctrl_y+1;
|
||||
|
||||
//check cross control with scroll arrea
|
||||
if (CheckCrossRectangles(x,y,ScrolledWindow->scroll_arrea_sizex,ScrolledWindow->scroll_arrea_sizey,
|
||||
control->ctrl_x,control->ctrl_y,control->ctrl_sizex,control->ctrl_sizey)==TRUE)
|
||||
{
|
||||
control->flags=control->flags | FLAG_SHOW_CONTROL;
|
||||
control->flags=control->flags & FLAG_MOUSE_BLOCKED_OFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
control->flags=control->flags & FLAG_HIDE_CONTROL;
|
||||
control->flags=control->flags | FLAG_MOUSE_BLOCKED_ON;
|
||||
}
|
||||
|
||||
if (ScrolledWindow->virtual_sizex>ScrolledWindow->scroll_arrea_sizex)
|
||||
{
|
||||
HorizontalScrollBar=(struct ControlScrollBar*)ScrolledWindow->horizontal_scroll;
|
||||
|
||||
if ((ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON)==FALSE)
|
||||
{
|
||||
ScrolledWindow->scroll_arrea_sizey=ScrolledWindow->ctrl_sizey-16-2;
|
||||
ScrolledWindow->scw_flags=ScrolledWindow->scw_flags | FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON;
|
||||
HorizontalScrollBar->flags=HorizontalScrollBar->flags | FLAG_SHOW_CONTROL;
|
||||
HorizontalScrollBar->flags=HorizontalScrollBar->flags & FLAG_MOUSE_BLOCKED_OFF;
|
||||
}
|
||||
}
|
||||
|
||||
if (ScrolledWindow->virtual_sizey>ScrolledWindow->scroll_arrea_sizey)
|
||||
{
|
||||
VerticalScrollBar=(struct ControlScrollBar*)ScrolledWindow->vertical_scroll;
|
||||
|
||||
if ((ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON)==FALSE)
|
||||
{
|
||||
ScrolledWindow->scroll_arrea_sizex=ScrolledWindow->ctrl_sizex-16-2;
|
||||
ScrolledWindow->scw_flags=ScrolledWindow->scw_flags | FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON;
|
||||
VerticalScrollBar->flags=VerticalScrollBar->flags | FLAG_SHOW_CONTROL;
|
||||
VerticalScrollBar->flags=VerticalScrollBar->flags & FLAG_MOUSE_BLOCKED_OFF;
|
||||
}
|
||||
}
|
||||
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON)
|
||||
{
|
||||
HorizontalScrollBar->ruller_size=(float)ScrolledWindow->scroll_arrea_sizex;
|
||||
HorizontalScrollBar->ruller_size=HorizontalScrollBar->ruller_size/((float)ScrolledWindow->virtual_sizex);
|
||||
}
|
||||
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON)
|
||||
{
|
||||
VerticalScrollBar->ruller_size=(float)ScrolledWindow->scroll_arrea_sizey;
|
||||
VerticalScrollBar->ruller_size=VerticalScrollBar->ruller_size/((float)ScrolledWindow->virtual_sizey);
|
||||
}
|
||||
|
||||
//finit draw arrea for control
|
||||
fin=(struct FINITION*)control->finition;
|
||||
fin->x=ScrolledWindow->ctrl_x+1;
|
||||
fin->y=ScrolledWindow->ctrl_y+1;
|
||||
fin->sizex=ScrolledWindow->scroll_arrea_sizex;
|
||||
fin->sizey=ScrolledWindow->scroll_arrea_sizey;
|
||||
fin->flags=fin->flags | FINITION_ON;
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Draw full Scrolled Window
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void ScrollWin_FuncCallback_HVScroll(struct HEADER* control,void *data)
|
||||
{
|
||||
struct ControlScrollBar *Hscrollbar,*Vscrollbar;
|
||||
struct ControlScrolledWindow *ScrolledWindow;
|
||||
struct HEADER *seek_control,*exchange_control;
|
||||
struct MESSAGE local_message;
|
||||
struct FINITION *fin;
|
||||
int i,new_x,new_y,x,y,sizex,sizey;
|
||||
char c;
|
||||
char *save_buf,*buf;
|
||||
int save_size_x,save_size_y;
|
||||
DWORD draw_output;
|
||||
|
||||
ScrolledWindow=(gui_scrolled_window_t*)data;
|
||||
Hscrollbar=(gui_scroll_bar_t*)ScrolledWindow->horizontal_scroll;
|
||||
Vscrollbar=(gui_scroll_bar_t*)ScrolledWindow->vertical_scroll;
|
||||
ScrolledWindow->virtual_x=(ScrolledWindow->virtual_sizex-ScrolledWindow->scroll_arrea_sizex)*Hscrollbar->ruller_pos;
|
||||
ScrolledWindow->virtual_y=(ScrolledWindow->virtual_sizey-ScrolledWindow->scroll_arrea_sizey)*Vscrollbar->ruller_pos;
|
||||
|
||||
x=ScrolledWindow->ctrl_x+1;
|
||||
y=ScrolledWindow->ctrl_y+1;
|
||||
sizex=ScrolledWindow->scroll_arrea_sizex;
|
||||
sizey=ScrolledWindow->scroll_arrea_sizey;
|
||||
|
||||
//alocate a buffer for draw text
|
||||
c=screen.bits_per_pixel >> 3;
|
||||
i=sizex*sizey*c;
|
||||
buf=malloc(i);
|
||||
|
||||
//save current screen parameters
|
||||
save_buf=screen.buffer;
|
||||
save_size_x=screen.size_x;
|
||||
save_size_y=screen.size_y;
|
||||
draw_output=screen.draw_output;
|
||||
|
||||
//load parameters of local buffer
|
||||
screen.buffer=buf;
|
||||
screen.size_x=sizex;
|
||||
screen.size_y=sizey;
|
||||
screen.draw_output=DRAW_OUTPUT_BUFFER;
|
||||
|
||||
//fill buffer by background color
|
||||
FillArrea(buf,i,screen.bits_per_pixel,COLOR_LIGHT);
|
||||
|
||||
local_message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION;
|
||||
local_message.arg1=0;
|
||||
local_message.arg2=0;
|
||||
local_message.arg3=sizex;
|
||||
local_message.arg4=sizey;
|
||||
|
||||
seek_control=(struct HEADER*)Vscrollbar->ctrl_fd;
|
||||
//move controls in new position
|
||||
for(i=0;i<ScrolledWindow->number_virtual_controls;i++)
|
||||
{
|
||||
new_x=ScrolledWindow->virtual_controls_x[i]-ScrolledWindow->virtual_x;
|
||||
new_y=ScrolledWindow->virtual_controls_y[i]-ScrolledWindow->virtual_y;
|
||||
|
||||
SetControlNewPosition(seek_control,new_x,new_y);
|
||||
|
||||
if (CheckCrossRectangles(x,y,sizex,sizey,new_x,new_y,
|
||||
seek_control->ctrl_sizex,
|
||||
seek_control->ctrl_sizey)==TRUE)
|
||||
{
|
||||
seek_control->flags=seek_control->flags | FLAG_SHOW_CONTROL;
|
||||
seek_control->flags=seek_control->flags & FLAG_MOUSE_BLOCKED_OFF;
|
||||
|
||||
//move control
|
||||
SetControlNewPosition(seek_control,new_x-x,new_y-y);
|
||||
//call draw control in buffer
|
||||
ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc;
|
||||
ControlProc(seek_control,&local_message);
|
||||
//restore last position of control
|
||||
SetControlNewPosition(seek_control,new_x,new_y);
|
||||
//restore coordinates of last finition of control
|
||||
fin=(finition_t*)seek_control->finition;
|
||||
fin->x=x;
|
||||
fin->y=y;
|
||||
}
|
||||
else
|
||||
{
|
||||
seek_control->flags=seek_control->flags & FLAG_HIDE_CONTROL;
|
||||
seek_control->flags=seek_control->flags | FLAG_MOUSE_BLOCKED_ON;
|
||||
}
|
||||
|
||||
exchange_control=(struct HEADER*)seek_control->ctrl_fd;
|
||||
seek_control=exchange_control;
|
||||
}
|
||||
//restore screen parameters
|
||||
screen.buffer=save_buf;
|
||||
screen.size_x=save_size_x;
|
||||
screen.size_y=save_size_y;
|
||||
screen.draw_output=draw_output;
|
||||
|
||||
//move rendered objects from local buffer to screen
|
||||
fin=(finition_t*)ScrolledWindow->finition;
|
||||
if (fin->flags & FINITION_ON)
|
||||
DrawImageFinit(fin,x,y,sizex,sizey,screen.bits_per_pixel,buf);
|
||||
else
|
||||
DrawImage(x,y,sizex,sizey,screen.bits_per_pixel,buf);
|
||||
|
||||
//free local buffer
|
||||
free(buf);
|
||||
}
|
||||
|
||||
void DrawScrolledWindow(struct ControlScrolledWindow *ScrolledWindow)
|
||||
{
|
||||
int x,y,sizex,sizey;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=ScrolledWindow->ctrl_x;
|
||||
y=ScrolledWindow->ctrl_y;
|
||||
sizex=ScrolledWindow->ctrl_sizex;
|
||||
sizey=ScrolledWindow->ctrl_sizey;
|
||||
fin=(struct FINITION*)ScrolledWindow->finition;
|
||||
|
||||
if ((ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON) ||
|
||||
(ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON))
|
||||
{
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,ScrolledWindow->scroll_arrea_sizex+2,
|
||||
ScrolledWindow->scroll_arrea_sizey+2,COLOR_ABSOLUTE_DARK);
|
||||
}
|
||||
else
|
||||
Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK);
|
||||
|
||||
ScrollWin_FuncCallback_HVScroll(NULL,ScrolledWindow);
|
||||
}
|
||||
|
||||
void ScrlWinCheckActivatedForKeysControl(struct ControlScrolledWindow *ScrolledWindow)
|
||||
{
|
||||
struct HEADER *control,*seek_control,*exchange_control;
|
||||
struct MESSAGE local_message;
|
||||
struct FINITION *fin;
|
||||
struct ControlScrollBar *Vscrollbar,*Hscrollbar;
|
||||
int i,x,y,sizex,sizey;
|
||||
int sx,sy;
|
||||
|
||||
control=(struct HEADER*)ScrolledWindow->active_control_for_keys;
|
||||
|
||||
x=ScrolledWindow->ctrl_x+1;
|
||||
y=ScrolledWindow->ctrl_y+1;
|
||||
sizex=ScrolledWindow->scroll_arrea_sizex;
|
||||
sizey=ScrolledWindow->scroll_arrea_sizey;
|
||||
|
||||
if (CheckFullCrossRectangles(x,y,sizex,sizey,
|
||||
control->ctrl_x,control->ctrl_y,control->ctrl_sizex,control->ctrl_sizey)==TRUE) return;
|
||||
|
||||
//calculate new x and y coordinates
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON)
|
||||
{
|
||||
sx=(control->ctrl_x-x);
|
||||
|
||||
if (sx<0) sx=x;
|
||||
else
|
||||
{
|
||||
if (control->ctrl_sizex<sizex) sx=x+sizex-control->ctrl_sizex;
|
||||
else sx=x;
|
||||
}
|
||||
}
|
||||
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON)
|
||||
{
|
||||
sy=(control->ctrl_y-y);
|
||||
|
||||
if (sy<0) sy=y;
|
||||
else
|
||||
{
|
||||
if (control->ctrl_sizey<sizey) sy=y+sizey-control->ctrl_sizey;
|
||||
else sy=y;
|
||||
}
|
||||
}
|
||||
|
||||
Vscrollbar=(struct ControlScrollBar*)ScrolledWindow->vertical_scroll;
|
||||
Hscrollbar=(struct ControlScrollBar*)ScrolledWindow->horizontal_scroll;
|
||||
//find active control and virtual control coordinates
|
||||
seek_control=(struct HEADER*)Vscrollbar->ctrl_fd;
|
||||
|
||||
for(i=0;i<ScrolledWindow->number_virtual_controls;i++)
|
||||
{
|
||||
if (seek_control==control)
|
||||
{
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON)
|
||||
ScrolledWindow->virtual_x=ScrolledWindow->virtual_controls_x[i]-sx;
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON)
|
||||
ScrolledWindow->virtual_y=ScrolledWindow->virtual_controls_y[i]-sy;
|
||||
break;
|
||||
}
|
||||
|
||||
exchange_control=(struct HEADER*)seek_control->ctrl_fd;
|
||||
seek_control=exchange_control;
|
||||
}
|
||||
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON)
|
||||
{
|
||||
Hscrollbar->ruller_pos=(float)ScrolledWindow->virtual_x;
|
||||
Hscrollbar->ruller_pos=Hscrollbar->ruller_pos/((float)(ScrolledWindow->virtual_sizex-ScrolledWindow->scroll_arrea_sizex));
|
||||
SpecialRedrawControl(Hscrollbar);
|
||||
}
|
||||
if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON)
|
||||
{
|
||||
Vscrollbar->ruller_pos=(float)ScrolledWindow->virtual_y;
|
||||
Vscrollbar->ruller_pos=Vscrollbar->ruller_pos/((float)(ScrolledWindow->virtual_sizey-ScrolledWindow->scroll_arrea_sizey));
|
||||
SpecialRedrawControl(Vscrollbar);
|
||||
}
|
||||
ScrollWin_FuncCallback_HVScroll(NULL,ScrolledWindow);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// control ScrolledWindowScrolledWindow->virtual_sizex
|
||||
//---------------------------------------------------------------------------------
|
||||
void ScrolledWindowProc(struct ControlScrolledWindow *ScrolledWindow,struct MESSAGE *message)
|
||||
{
|
||||
int i,x,y,sizex,sizey;
|
||||
struct HEADER *seek_control,*exchange_control;
|
||||
struct ControlScrollBar *Hscrollbar,*Vscrollbar;
|
||||
struct MESSAGE local_message;
|
||||
struct FINITION *fin;
|
||||
struct TIMER *timer;
|
||||
|
||||
x=ScrolledWindow->ctrl_x;
|
||||
y=ScrolledWindow->ctrl_y;
|
||||
sizex=ScrolledWindow->ctrl_sizex;
|
||||
sizey=ScrolledWindow->ctrl_sizey;
|
||||
|
||||
switch(message->type)
|
||||
{
|
||||
case MESSAGE_FULL_REDRAW_ALL:
|
||||
{
|
||||
//draw ScrolledWindow
|
||||
if (ScrolledWindow->flags & FLAG_SHOW_CONTROL)
|
||||
{
|
||||
DrawScrolledWindow(ScrolledWindow);
|
||||
Hscrollbar=(gui_scroll_bar_t*)ScrolledWindow->horizontal_scroll;
|
||||
Vscrollbar=(gui_scroll_bar_t*)ScrolledWindow->vertical_scroll;
|
||||
//draw scroll bars
|
||||
ControlProc=(void (*)(void *Control,gui_message_t *message))Hscrollbar->ctrl_proc;
|
||||
ControlProc(Hscrollbar,message);
|
||||
ControlProc=(void (*)(void *Control,gui_message_t *message))Vscrollbar->ctrl_proc;
|
||||
ControlProc(Vscrollbar,message);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION:
|
||||
{
|
||||
fin=(struct FINITION*)ScrolledWindow->finition;
|
||||
fin->flags=fin->flags | FINITION_ON;
|
||||
fin->x=message->arg1;
|
||||
fin->y=message->arg2;
|
||||
fin->sizex=message->arg3;
|
||||
fin->sizey=message->arg4;
|
||||
DrawScrolledWindow(ScrolledWindow);
|
||||
SendMessage((struct HEADER*)ScrolledWindow,message);//<<<<<<----------------------------------
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SPECIALIZED:
|
||||
{
|
||||
if (ScrolledWindow->flags & FLAG_SHOW_CONTROL) SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
ScrolledWindow->flags=ScrolledWindow->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF;
|
||||
break;
|
||||
}
|
||||
|
||||
case MESSAGE_KEYS_EVENT:
|
||||
{
|
||||
if (ScrolledWindow->active_control_for_keys!=NULL) ScrlWinCheckActivatedForKeysControl(ScrolledWindow);
|
||||
SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_MOUSE_EVENT:
|
||||
{
|
||||
SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_POSITION_EVENT:
|
||||
{
|
||||
ScrolledWindow->ctrl_x=ScrolledWindow->ctrl_x+message->arg1;
|
||||
ScrolledWindow->ctrl_y=ScrolledWindow->ctrl_y+message->arg2;
|
||||
|
||||
//change virtual coordinates of controls
|
||||
Vscrollbar=(struct ControlScrollBar*)ScrolledWindow->vertical_scroll;
|
||||
seek_control=(struct HEADER *)Vscrollbar->ctrl_fd;
|
||||
for(i=0;i<ScrolledWindow->number_virtual_controls;i++)
|
||||
{
|
||||
ScrolledWindow->virtual_controls_x[i]+=message->arg1;
|
||||
ScrolledWindow->virtual_controls_y[i]+=message->arg2;
|
||||
|
||||
fin=(struct FINITION*)seek_control->finition;
|
||||
fin->x=ScrolledWindow->ctrl_x+1;
|
||||
fin->y=ScrolledWindow->ctrl_y+1;
|
||||
fin->sizex=ScrolledWindow->scroll_arrea_sizex;
|
||||
fin->sizey=ScrolledWindow->scroll_arrea_sizey;
|
||||
|
||||
exchange_control=(struct HEADER*)seek_control->ctrl_fd;
|
||||
seek_control=exchange_control;
|
||||
}
|
||||
|
||||
SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CALL_TIMER_EVENT:
|
||||
{
|
||||
if (ScrolledWindow->timer!=(DWORD*)NULL)
|
||||
{
|
||||
timer=(struct TIMER*)ScrolledWindow->timer;
|
||||
if (timer->flags & FLAG_TIMER_ON) Timer(timer);
|
||||
}
|
||||
SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_FOCUSE:
|
||||
{
|
||||
//SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_FOCUSE:
|
||||
{
|
||||
//SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_DESTROY_CONTROL:
|
||||
{
|
||||
if (ScrolledWindow->timer!=(DWORD*)NULL) free(ScrolledWindow->timer);
|
||||
free(ScrolledWindow->finition);
|
||||
SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_MAIN_PARENT:
|
||||
{
|
||||
SendMessage((struct HEADER*)ScrolledWindow,message);
|
||||
ScrolledWindow->main_parent=(DWORD*)message->arg1;
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create control ScrolledWindow
|
||||
//---------------------------------------------------------------------------------
|
||||
void* CreateScrolledWindow(struct ScrolledWindowData *info_for_control)
|
||||
{
|
||||
struct ControlScrolledWindow *ScrolledWindow;
|
||||
struct FINITION *fin;
|
||||
struct ControlScrollBar *HorizontalScrollBar;
|
||||
struct ControlScrollBar *VerticalScrollBar;
|
||||
struct ScrollBarData HorizontalScrollData;
|
||||
struct ScrollBarData VerticalScrollData;
|
||||
|
||||
|
||||
ScrolledWindow=malloc(sizeof(struct ControlScrolledWindow));
|
||||
ScrolledWindow->finition=malloc(sizeof(struct FINITION));
|
||||
fin=(struct FINITION*)ScrolledWindow->finition;
|
||||
fin->flags=0;
|
||||
ScrolledWindow->scw_flags=0;
|
||||
|
||||
ID++;
|
||||
#ifdef DEBUG
|
||||
printf("\ncreated scrollet window with ID=%d",(int)ID);
|
||||
#endif
|
||||
ScrolledWindow->child_bk=(DWORD*)NULL;
|
||||
ScrolledWindow->child_fd=(DWORD*)NULL;
|
||||
ScrolledWindow->active_control_for_keys=(DWORD*)NULL;
|
||||
ScrolledWindow->active_control_for_mouse=(DWORD*)NULL;
|
||||
ScrolledWindow->callback=(DWORD*)NULL;
|
||||
ScrolledWindow->timer=(DWORD*)NULL;
|
||||
|
||||
ScrolledWindow->ctrl_proc=(DWORD*)&ScrolledWindowProc;
|
||||
ScrolledWindow->ctrl_x=(DWORD)info_for_control->x;
|
||||
ScrolledWindow->ctrl_y=(DWORD)info_for_control->y;
|
||||
ScrolledWindow->ctrl_sizex=(DWORD)info_for_control->width;
|
||||
ScrolledWindow->ctrl_sizey=(DWORD)info_for_control->height;
|
||||
ScrolledWindow->ctrl_ID=ID;
|
||||
ScrolledWindow->virtual_x=0;
|
||||
ScrolledWindow->virtual_y=0;
|
||||
ScrolledWindow->virtual_controls_x=malloc(1024*sizeof(DWORD));
|
||||
ScrolledWindow->virtual_controls_y=malloc(1024*sizeof(DWORD));
|
||||
ScrolledWindow->virtual_sizex=0;
|
||||
ScrolledWindow->virtual_sizey=0;
|
||||
ScrolledWindow->number_virtual_controls=0;
|
||||
ScrolledWindow->flags=0;
|
||||
ScrolledWindow->flags=ScrolledWindow->flags | FLAG_SHOW_CONTROL;
|
||||
ScrolledWindow->flags=ScrolledWindow->flags | FLAG_FOCUSE_INPUT_SUPPOROTE;
|
||||
|
||||
//calculate default scroll arrea size
|
||||
ScrolledWindow->scroll_arrea_sizex=ScrolledWindow->ctrl_sizex-2;
|
||||
ScrolledWindow->scroll_arrea_sizey=ScrolledWindow->ctrl_sizey-2;
|
||||
|
||||
//create child scroll bars
|
||||
HorizontalScrollData.x=0;
|
||||
HorizontalScrollData.y=ScrolledWindow->ctrl_sizey-16;
|
||||
HorizontalScrollData.width=ScrolledWindow->ctrl_sizex-16;
|
||||
HorizontalScrollData.height=16;
|
||||
HorizontalScrollData.ruller_size=1.0;
|
||||
HorizontalScrollData.ruller_pos=0.0;
|
||||
HorizontalScrollData.ruller_step=0.05;
|
||||
|
||||
VerticalScrollData.x=ScrolledWindow->ctrl_sizex-16;
|
||||
VerticalScrollData.y=0;
|
||||
VerticalScrollData.width=16;
|
||||
VerticalScrollData.height=ScrolledWindow->ctrl_sizey-16;
|
||||
VerticalScrollData.ruller_size=1.0;
|
||||
VerticalScrollData.ruller_pos=0.0;
|
||||
VerticalScrollData.ruller_step=0.05;
|
||||
|
||||
HorizontalScrollBar=CreateHorizontalScrollBar(&HorizontalScrollData);
|
||||
VerticalScrollBar=CreateVerticalScrollBar(&VerticalScrollData);
|
||||
|
||||
SetCallbackFunction(HorizontalScrollBar,SCROLLBAR_CHANGED_EVENT,&ScrollWin_FuncCallback_HVScroll,ScrolledWindow);
|
||||
SetCallbackFunction(VerticalScrollBar,SCROLLBAR_CHANGED_EVENT,&ScrollWin_FuncCallback_HVScroll,ScrolledWindow);
|
||||
|
||||
PackControls(ScrolledWindow,HorizontalScrollBar);
|
||||
PackControls(ScrolledWindow,VerticalScrollBar);
|
||||
|
||||
ScrolledWindow->horizontal_scroll=(DWORD*)HorizontalScrollBar;
|
||||
ScrolledWindow->vertical_scroll=(DWORD*)VerticalScrollBar;
|
||||
//disable show scrollers and block mouse for them
|
||||
HorizontalScrollBar->flags=HorizontalScrollBar->flags & FLAG_HIDE_CONTROL;
|
||||
HorizontalScrollBar->flags=HorizontalScrollBar->flags | FLAG_MOUSE_BLOCKED_ON;
|
||||
VerticalScrollBar->flags=VerticalScrollBar->flags & FLAG_HIDE_CONTROL;
|
||||
VerticalScrollBar->flags=VerticalScrollBar->flags | FLAG_MOUSE_BLOCKED_ON;
|
||||
|
||||
return(ScrolledWindow);
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
|
||||
#define TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_ON 0x1
|
||||
#define TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_OFF 0xfe
|
||||
|
||||
#define TEXT_BACKGROUND_ON 0x2;
|
||||
#define TEXT_BACKGROUND_OFF 0xfd;
|
||||
|
||||
struct TextSize
|
||||
{
|
||||
int sizex;
|
||||
int sizey;
|
||||
};
|
||||
|
||||
typedef struct TextSize gui_text_size_t;
|
||||
|
||||
|
@ -1,181 +0,0 @@
|
||||
/*
|
||||
control Text
|
||||
*/
|
||||
|
||||
|
||||
gui_text_size_t GetStringSize(font_t *font,char *s)
|
||||
{
|
||||
long len;
|
||||
gui_text_size_t size;
|
||||
|
||||
len=strlen(s);
|
||||
if (font->size==FONT_CONSTANT_SIZE)
|
||||
{
|
||||
if (font->flags & FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON)
|
||||
{
|
||||
size.sizex=len*font->sizex;
|
||||
size.sizey=font->sizey;
|
||||
}
|
||||
}
|
||||
|
||||
return(size);
|
||||
}
|
||||
|
||||
void TextBackgroundOn(gui_text_t *Text)
|
||||
{
|
||||
Text->txt_flags |=TEXT_BACKGROUND_ON;
|
||||
}
|
||||
|
||||
void TextBackgroundOff(gui_text_t *Text)
|
||||
{
|
||||
Text->txt_flags &=TEXT_BACKGROUND_ON;
|
||||
}
|
||||
|
||||
void DisplayText(gui_text_t *Text)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int sizex;
|
||||
int sizey;
|
||||
char v;
|
||||
font_t *font;
|
||||
gui_text_size_t size;
|
||||
struct FINITION *fin;
|
||||
|
||||
x=Text->ctrl_x;
|
||||
y=Text->ctrl_y;
|
||||
fin=(struct FINITION*)Text->finition;
|
||||
font=(font_t*)Text->font;
|
||||
|
||||
v=Text->txt_flags & TEXT_BACKGROUND_ON;
|
||||
if (v) font->flags|=FONT_FLAG_DRAW_BACKGROUND_ON;
|
||||
else font->flags&=FONT_FLAG_DRAW_BACKGROUND_OFF;
|
||||
|
||||
v=Text->txt_flags & TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_ON;
|
||||
if (v) font->flags|=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON;
|
||||
else font->flags&=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_OFF;
|
||||
|
||||
size=GetStringSize((font_t*)Text->font,Text->text);
|
||||
Text->ctrl_sizex=(DWORD)size.sizex;
|
||||
Text->ctrl_sizey=(DWORD)size.sizey;
|
||||
|
||||
DrawFont=(void(*)(finition_t *fin,int fx,int fy,DWORD color,
|
||||
DWORD background_color,font_t *font,BYTE *s))font->fnt_draw;
|
||||
DrawFont(fin,x,y,Text->color,Text->background_color,font,Text->text);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// control Text
|
||||
//---------------------------------------------------------------------------------
|
||||
void TextProc(gui_text_t *Text,gui_message_t *message)
|
||||
{
|
||||
finition_t *fin;
|
||||
|
||||
switch(message->type)
|
||||
{
|
||||
case MESSAGE_FULL_REDRAW_ALL:
|
||||
{
|
||||
//draw Text
|
||||
if (Text->flags & FLAG_SHOW_CONTROL) DisplayText(Text);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION:
|
||||
{
|
||||
fin=(struct FINITION*)Text->finition;
|
||||
fin->flags=fin->flags | FINITION_ON;
|
||||
fin->x=message->arg1;
|
||||
fin->y=message->arg2;
|
||||
fin->sizex=message->arg3;
|
||||
fin->sizey=message->arg4;
|
||||
DisplayText(Text);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SPECIALIZED:
|
||||
{
|
||||
if (Text->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON)
|
||||
{
|
||||
if (Text->flags & FLAG_SHOW_CONTROL) DisplayText(Text);
|
||||
Text->flags=Text->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MESSAGE_CHANGE_POSITION_EVENT:
|
||||
{
|
||||
Text->ctrl_x=Text->ctrl_x+message->arg1;
|
||||
Text->ctrl_y=Text->ctrl_y+message->arg2;
|
||||
break;
|
||||
}
|
||||
case MESSAGE_DESTROY_CONTROL:
|
||||
{
|
||||
free(Text->finition);
|
||||
break;
|
||||
}
|
||||
case MESSAGE_SET_MAIN_PARENT:
|
||||
{
|
||||
SendMessage((struct HEADER*)Text,message);
|
||||
Text->main_parent=(DWORD*)message->arg1;
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
//send message to child controls(if there is)
|
||||
SendMessage((struct HEADER*)Text,message);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create control Text
|
||||
//---------------------------------------------------------------------------------
|
||||
void* CreateText(gui_text_data_t *info_for_control)
|
||||
{
|
||||
gui_text_t *Text;
|
||||
finition_t *fin;
|
||||
gui_text_size_t size;
|
||||
|
||||
Text=malloc(sizeof(struct ControlText));
|
||||
Text->finition=malloc(sizeof(struct FINITION));
|
||||
fin=(struct FINITION*)Text->finition;
|
||||
fin->flags=0;
|
||||
|
||||
if (info_for_control->font==(DWORD*)NULL) Text->font=FontsMeneger.default_font;
|
||||
else Text->font=info_for_control->font;
|
||||
|
||||
size=GetStringSize((font_t*)Text->font,info_for_control->text);
|
||||
|
||||
ID++;
|
||||
#ifdef DEBUG
|
||||
printf("\ncreated text with ID=%d",(int)ID);
|
||||
#endif
|
||||
Text->child_bk=(DWORD*)NULL;
|
||||
Text->child_fd=(DWORD*)NULL;
|
||||
Text->active_control_for_keys=(DWORD*)NULL;
|
||||
Text->active_control_for_mouse=(DWORD*)NULL;
|
||||
Text->callback=(DWORD*)NULL;
|
||||
Text->timer=(DWORD*)NULL;
|
||||
|
||||
Text->ctrl_proc=(DWORD*)&TextProc;
|
||||
Text->ctrl_x=(DWORD)info_for_control->x;
|
||||
Text->ctrl_y=(DWORD)info_for_control->y;
|
||||
Text->ctrl_sizex=(DWORD)size.sizex;
|
||||
Text->ctrl_sizey=(DWORD)size.sizey;
|
||||
Text->ctrl_ID=ID;
|
||||
Text->color=info_for_control->color;
|
||||
Text->background_color=info_for_control->background_color;
|
||||
Text->text=info_for_control->text;
|
||||
Text->txt_flags=0;
|
||||
Text->txt_flags|=TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_ON;
|
||||
|
||||
if (info_for_control->background)
|
||||
{
|
||||
Text->txt_flags|=TEXT_BACKGROUND_ON;
|
||||
}
|
||||
else
|
||||
{
|
||||
Text->txt_flags&=TEXT_BACKGROUND_OFF;
|
||||
}
|
||||
|
||||
Text->flags=0;
|
||||
Text->flags=Text->flags | FLAG_SHOW_CONTROL;
|
||||
|
||||
return(Text);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
|
||||
#define FINITION_ON 0x1
|
||||
#define FINITION_OFF 0xfe
|
||||
|
||||
#define COLOR_FON 0x924900
|
||||
#define COLOR_DARK 0x5a5a5a
|
||||
#define COLOR_ABSOLUTE_DARK 0x0
|
||||
#define COLOR_MIDDLE_LIGHT 0xffff00
|
||||
#define COLOR_LIGHT 0xffffff
|
||||
|
||||
#define COLOR_INSERT 0x71ff30//0xffff10
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
// tool's names
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
#define TOOL_PIXEL 128
|
||||
#define TOOL_LINE 129
|
||||
#define TOOL_VERTICAL_LINE 130
|
||||
#define TOOL_HORIZONTAL_LINE 131
|
||||
#define TOOL_RECTANGLE 132
|
||||
#define TOOL_FILLED_RECTANGLE 133
|
||||
#define TOOL_GRADIENT_UP_FILLED_RECTANGLE 134
|
||||
#define TOOL_GRADIENT_DOWN_FILLED_RECTANGLE 135
|
||||
#define TOOL_GRADIENT_LEFT_FILLED_RECTANGLE 136
|
||||
#define TOOL_GRADIENT_RIGHT_FILLED_RECTANGLE 137
|
||||
#define TOOL_CIRCLE 138
|
||||
#define TOOL_FILLED_CIRCLE 139
|
||||
#define TOOL_ELLIPSE 140
|
||||
#define TOOL_FILLED_ELLIPSE 141
|
||||
#define TOOL_IMAGE 142
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,63 +0,0 @@
|
||||
/*
|
||||
font meneger header structure
|
||||
*/
|
||||
|
||||
#define FONT_FLAG_DEFAULT_FONT_ON 0x1
|
||||
#define FONT_FLAG_DEFAULT_FONT_OFF 0xfe
|
||||
#define FONT_FLAG_DRAW_BACKGROUND_ON 0x2
|
||||
#define FONT_FLAG_DRAW_BACKGROUND_OFF 0xfd
|
||||
#define FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON 0x4
|
||||
#define FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_OFF 0xfb
|
||||
|
||||
#define FONT_CONSTANT_SIZE -1
|
||||
|
||||
//some types encoding characters
|
||||
#define FONT_TYPE_ASCII 0x1
|
||||
#define FONT_TYPE_UNICODE 0x2
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// some ASCII encodings
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
//cyrillic encodings
|
||||
#define FONT_ENCODING_CYRILLIC_IBM866 0x1
|
||||
#define FONT_ENCODING_CYRILLIC_IBM437 0x2
|
||||
#define FONT_ENCODING_CYRILLIC_KOI8R 0x4
|
||||
#define FONT_ENCODING_CYRILLIC_ISO8859_5 0x8
|
||||
#define FONT_ENCODING_CYRILLIC_CP1251 0x10
|
||||
|
||||
#pragma pack(push,1)
|
||||
static struct
|
||||
{
|
||||
DWORD *fnt_fd;
|
||||
DWORD *fnt_bk;
|
||||
DWORD *default_font;
|
||||
DWORD number_fonts;
|
||||
}FontsMeneger;
|
||||
#pragma pack(pop)
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct FONT
|
||||
{
|
||||
DWORD *fnt_draw;
|
||||
DWORD *fnt_unpacker;
|
||||
DWORD *fnt_fd;
|
||||
DWORD *fnt_bk;
|
||||
int sizex;
|
||||
int sizey;
|
||||
int size;
|
||||
int encoding_type;
|
||||
char *font;
|
||||
char *fnt_name;
|
||||
DWORD type;
|
||||
DWORD flags;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct FONT font_t;
|
||||
|
||||
static char *default_fonts_path="/sys/fonts/";
|
||||
|
||||
void (*DrawFont)(finition_t *fin,int fx,int fy,DWORD color,DWORD background_color,font_t *font,BYTE *s);
|
||||
|
||||
|
@ -1,373 +0,0 @@
|
||||
/*
|
||||
menegement of fonts
|
||||
*/
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// destroy font
|
||||
//---------------------------------------------------------------------------------
|
||||
void DestroyFont(font_t *font)
|
||||
{
|
||||
font_t *seek_font;
|
||||
font_t *exchange_font;
|
||||
font_t *last_font;
|
||||
font_t *next_font;
|
||||
|
||||
if (font==(font_t*)NULL) return;
|
||||
|
||||
if (FontsMeneger.fnt_bk==FontsMeneger.fnt_fd)
|
||||
{
|
||||
//parent have got alone font
|
||||
if (FontsMeneger.fnt_bk==(DWORD*)font)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
printf("\ndestroyed font %d font name=%s",(int)font,(char*)font->fnt_name);
|
||||
#endif
|
||||
free(font);
|
||||
FontsMeneger.fnt_bk=(DWORD*)NULL;
|
||||
FontsMeneger.fnt_fd=(DWORD*)NULL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
seek_font=(font_t*)FontsMeneger.fnt_bk;
|
||||
while(seek_font!=(font_t*)NULL)
|
||||
{
|
||||
if (seek_font==font)
|
||||
{
|
||||
//delete font from fonts's cash
|
||||
last_font=(font_t*)seek_font->fnt_bk;
|
||||
next_font=(font_t*)seek_font->fnt_fd;
|
||||
|
||||
if ((last_font!=(font_t*)NULL) && (next_font!=(font_t*)NULL))
|
||||
{//deliting font isn't first font and isn't endest
|
||||
next_font->fnt_bk=(DWORD*)last_font;
|
||||
last_font->fnt_fd=(DWORD*)next_font;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (last_font==(font_t*)NULL)
|
||||
{//deliting font is first font of Parend
|
||||
FontsMeneger.fnt_bk=(DWORD*)next_font;
|
||||
next_font->fnt_bk=(DWORD*)NULL;
|
||||
if (next_font->fnt_fd==(DWORD*)NULL)
|
||||
{
|
||||
FontsMeneger.fnt_fd=(DWORD*)next_font;
|
||||
FontsMeneger.fnt_bk=(DWORD*)next_font;
|
||||
}
|
||||
}
|
||||
|
||||
if (next_font==(font_t*)NULL)
|
||||
{
|
||||
//there isn't next fonts
|
||||
last_font->fnt_fd=(DWORD*)NULL;
|
||||
FontsMeneger.fnt_fd=(DWORD*)last_font;
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
printf("\ndestroyed font %d font name=%s",(int)font,(char*)font->fnt_name);
|
||||
#endif
|
||||
free(font);
|
||||
break;
|
||||
}
|
||||
exchange_font=(font_t*)seek_font->fnt_fd;
|
||||
seek_font=exchange_font;
|
||||
}
|
||||
}
|
||||
|
||||
void *CreateFont(void)
|
||||
{
|
||||
font_t *font;
|
||||
font_t *backward_font;
|
||||
|
||||
font=malloc(sizeof(struct FONT));
|
||||
|
||||
if (FontsMeneger.fnt_bk==(DWORD*)NULL)
|
||||
{//not yet fonts
|
||||
FontsMeneger.fnt_bk=(DWORD*)font;
|
||||
FontsMeneger.fnt_fd=(DWORD*)font;
|
||||
font->fnt_bk=(DWORD*)NULL;
|
||||
font->fnt_fd=(DWORD*)NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
backward_font=(font_t*)FontsMeneger.fnt_fd;
|
||||
FontsMeneger.fnt_fd=(DWORD*)font;
|
||||
backward_font->fnt_fd=(DWORD*)font;
|
||||
font->fnt_bk=(DWORD*)backward_font;
|
||||
font->fnt_fd=(DWORD*)NULL;
|
||||
}
|
||||
return(font);
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// CHAR.MT and CHAR2.MT fonts unpacker
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void CHAR_MT_FontsUnpacker(unsigned char *loaded_font,font_t *font,char font_type)
|
||||
{
|
||||
int i,j,k;
|
||||
unsigned char c;
|
||||
unsigned char *p;
|
||||
|
||||
if (font_type==FALSE)
|
||||
{//CHAR.MT
|
||||
font->font=malloc(6*9*256);
|
||||
p=(unsigned char*)font->font;
|
||||
|
||||
for(j=0;j<256;j++)
|
||||
{
|
||||
for(i=0;i<9;i++)
|
||||
{
|
||||
c=(unsigned char)(*loaded_font);
|
||||
p[5]=(unsigned char)(c & 0x20);
|
||||
p[4]=(unsigned char)(c & 0x10);
|
||||
p[3]=(unsigned char)(c & 0x8);
|
||||
p[2]=(unsigned char)(c & 0x4);
|
||||
p[1]=(unsigned char)(c & 0x2);
|
||||
p[0]=(unsigned char)(c & 0x1);
|
||||
|
||||
p+=6;
|
||||
loaded_font++;
|
||||
}
|
||||
}
|
||||
font->sizex=6;
|
||||
font->sizey=9;
|
||||
}
|
||||
else
|
||||
{//CHAR2.MT
|
||||
font->font=malloc(8*10*256);
|
||||
p=(unsigned char*)font->font;
|
||||
|
||||
for(j=0;j<256;j++)
|
||||
{
|
||||
for(i=0;i<10;i++)
|
||||
{
|
||||
c=(unsigned char)(*loaded_font);
|
||||
p[7]=(unsigned char)(c & 0x80);
|
||||
p[6]=(unsigned char)(c & 0x40);
|
||||
p[5]=(unsigned char)(c & 0x20);
|
||||
p[4]=(unsigned char)(c & 0x10);
|
||||
p[3]=(unsigned char)(c & 0x8);
|
||||
p[2]=(unsigned char)(c & 0x4);
|
||||
p[1]=(unsigned char)(c & 0x2);
|
||||
p[0]=(unsigned char)(c & 0x1);
|
||||
|
||||
p+=8;
|
||||
loaded_font++;
|
||||
}
|
||||
}
|
||||
font->sizex=8;
|
||||
font->sizey=10;
|
||||
}
|
||||
|
||||
font->size=FONT_CONSTANT_SIZE;
|
||||
font->type=FONT_TYPE_ASCII;
|
||||
font->encoding_type=FONT_ENCODING_CYRILLIC_IBM866;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// CHAR.MT and CHAR2.MT fonts draw
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void MonofontDraw(finition_t *fin,int fx,int fy,
|
||||
DWORD color,DWORD background_color,
|
||||
font_t *font,unsigned char *s)
|
||||
{
|
||||
unsigned int i,j,k,step,len;
|
||||
int x,y,size_x,save_size_x,save_size_y;
|
||||
unsigned char *p,*buf,*save_buf;
|
||||
unsigned char c;
|
||||
DWORD draw_output;
|
||||
|
||||
step=font->sizex*font->sizey;
|
||||
len=strlen(s);
|
||||
|
||||
if (font->flags & FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON)
|
||||
{
|
||||
if (font->flags & FONT_FLAG_DRAW_BACKGROUND_ON)
|
||||
{//there is a fon and not finition for draw
|
||||
//alocate a buffer for draw text
|
||||
size_x=font->sizex*len;
|
||||
|
||||
c=screen.bits_per_pixel >> 3;
|
||||
i=step*c*len;
|
||||
buf=malloc(i);
|
||||
|
||||
//save current screen parameters
|
||||
save_buf=screen.buffer;
|
||||
save_size_x=screen.size_x;
|
||||
save_size_y=screen.size_y;
|
||||
draw_output=screen.draw_output;
|
||||
|
||||
//load parameters of local buffer
|
||||
screen.buffer=buf;
|
||||
screen.size_x=size_x;
|
||||
screen.size_y=font->sizey;
|
||||
screen.draw_output=DRAW_OUTPUT_BUFFER;
|
||||
|
||||
//fill buffer by background color
|
||||
FillArrea(buf,i,screen.bits_per_pixel,background_color);
|
||||
|
||||
//draw text
|
||||
x=0;
|
||||
for(k=0;k<len;k++)
|
||||
{
|
||||
c=s[k];
|
||||
p=font->font+step*c;
|
||||
for(j=0;j<font->sizey;j++)
|
||||
{
|
||||
|
||||
for(i=0;i<font->sizex;i++)
|
||||
{
|
||||
if (*p) DrawPixel(x+i,j,color);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
x=x+font->sizex;
|
||||
}
|
||||
|
||||
//restore screen parameters
|
||||
screen.buffer=save_buf;
|
||||
screen.size_x=save_size_x;
|
||||
screen.size_y=save_size_y;
|
||||
screen.draw_output=draw_output;
|
||||
|
||||
//move text from local buffer to screen
|
||||
if (fin->flags & FINITION_ON)
|
||||
DrawImageFinit(fin,fx,fy,size_x,font->sizey,screen.bits_per_pixel,buf);
|
||||
else
|
||||
DrawImage(fx,fy,size_x,font->sizey,screen.bits_per_pixel,buf);
|
||||
|
||||
//free local buffer
|
||||
free(buf);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fin->flags & FINITION_ON)
|
||||
{//not background and finition for draw
|
||||
x=fx;
|
||||
y=fy;
|
||||
for(k=0;k<len;k++)
|
||||
{
|
||||
c=s[k];
|
||||
p=font->font+step*c;
|
||||
for(j=0;j<font->sizey;j++)
|
||||
{
|
||||
|
||||
for(i=0;i<font->sizex;i++)
|
||||
{
|
||||
if (*p) DrawPixelFinit(fin,x+i,y+j,color);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
x=x+font->sizex;
|
||||
}
|
||||
}
|
||||
else
|
||||
{//not background and not finition for draw
|
||||
x=fx;
|
||||
y=fy;
|
||||
for(k=0;k<len;k++)
|
||||
{
|
||||
c=s[k];
|
||||
p=font->font+step*c;
|
||||
for(j=0;j<font->sizey;j++)
|
||||
{
|
||||
|
||||
for(i=0;i<font->sizex;i++)
|
||||
{
|
||||
if (*p) DrawPixel(x+i,y+j,color);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
x=x+font->sizex;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// fonts loader
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
font_t *LoadFont(char *fullfontname)
|
||||
{
|
||||
char *path;
|
||||
char *c;
|
||||
BYTE *buf;
|
||||
long filesize;
|
||||
int len1,len2,i;
|
||||
font_t *font;
|
||||
static DWORD buf_for_size[2];
|
||||
static DWORD buf_for_pos[2];
|
||||
|
||||
path=malloc(263);
|
||||
if (strchr(fullfontname,'/')==NULL)
|
||||
{
|
||||
len1=strlen(default_fonts_path);
|
||||
len2=strlen(fullfontname);
|
||||
memmove(path,default_fonts_path,len1);
|
||||
memmove(path+len1,fullfontname,len2);
|
||||
*(path+len1+len2)='\0';
|
||||
}
|
||||
else
|
||||
memmove(path,fullfontname,strlen(fullfontname));
|
||||
|
||||
if (gui_get_file_size(path,buf_for_size)==KOLIBRIOS_SYS_FILE_ACCESS_SUCCESSFULLY)
|
||||
{
|
||||
filesize=buf_for_size[0];
|
||||
buf=malloc(filesize);
|
||||
//load fonts in buffer
|
||||
gui_read_file(path,buf_for_pos,filesize,buf);
|
||||
|
||||
free(path);
|
||||
//register font
|
||||
font=CreateFont();
|
||||
c=strrchr(fullfontname,'/');
|
||||
if(c==NULL) font->fnt_name=fullfontname;
|
||||
else
|
||||
font->fnt_name=(char*)(c+1);
|
||||
|
||||
//check font type
|
||||
c=strstr(font->fnt_name,"CHAR.MT");//check standart type of fonts
|
||||
if (c!=NULL)
|
||||
{
|
||||
font->fnt_unpacker=(DWORD*)&CHAR_MT_FontsUnpacker;
|
||||
font->fnt_draw=(DWORD*)&MonofontDraw;
|
||||
CHAR_MT_FontsUnpacker(buf,font,FALSE);//CHAR.MT
|
||||
free(buf);
|
||||
font->flags=0;
|
||||
font->flags|=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON;
|
||||
}
|
||||
|
||||
c=strstr(font->fnt_name,"CHAR2.MT");//check standart type of fonts
|
||||
if (c!=NULL)
|
||||
{
|
||||
font->fnt_unpacker=(DWORD*)&CHAR_MT_FontsUnpacker;
|
||||
font->fnt_draw=(DWORD*)&MonofontDraw;
|
||||
CHAR_MT_FontsUnpacker(buf,font,TRUE);//CHAR2.MT
|
||||
free(buf);
|
||||
font->flags=0;
|
||||
font->flags|=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON;
|
||||
}
|
||||
//not other fonts yet
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef DEBUG
|
||||
printf("\ncannot load font %s",path);
|
||||
#endif
|
||||
free(path);
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
FontsMeneger.number_fonts++;
|
||||
return(font);
|
||||
}
|
||||
|
||||
void FreeFont(font_t *font)
|
||||
{
|
||||
if (font==(font_t*)FontsMeneger.default_font) return;
|
||||
|
||||
free(font->font);
|
||||
DestroyFont(font);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
/*
|
||||
scan codes of keys
|
||||
*/
|
||||
|
||||
//Scan Codes of some keys in pressed state
|
||||
#define SC_TAB 15
|
||||
#define SC_ENTER 28
|
||||
#define SC_SPACE 57
|
@ -1,657 +0,0 @@
|
||||
/*
|
||||
some system function of KolibriOS
|
||||
*/
|
||||
|
||||
#define KOLIBRIOS_SYS_EVENT_REDRAW 1
|
||||
#define KOLIBRIOS_SYS_EVENT_KEYS 2
|
||||
#define KOLIBRIOS_SYS_EVENT_BUTTON_PRESSED 3
|
||||
#define KOLIBRIOS_SYS_EVENT_REDRAW_BACKGROUND 5
|
||||
#define KOLIBRIOS_SYS_EVENT_MOUSE 6
|
||||
#define KOLIBRIOS_SYS_EVENT_IPC 7
|
||||
#define KOLIBRIOS_SYS_EVENT_NET 8
|
||||
#define KOLIBRIOS_SYS_EVENT_DEBUG 9
|
||||
|
||||
#define KOLIBRIOS_SYS_MOUSE_BUTTON_LEFT_DOWN 0x1
|
||||
#define KOLIBRIOS_SYS_MOUSE_BUTTON_RIGHT_DOWN (0x1<<1)
|
||||
#define KOLIBRIOS_SYS_MOUSE_BUTTON_MIDDLE_DOWN (0x1 <<2)
|
||||
#define KOLIBRIOS_SYS_MOUSE_BUTTON_4_DOWN (0x1 <<3)
|
||||
#define KOLIBRIOS_SYS_MOUSE_BUTTON_5_DOWN (0x1 <<4)
|
||||
|
||||
#define KOLIBRIOS_SYS_FILE_ACCESS_SUCCESSFULLY 0
|
||||
#define KOLIBRIOS_SYS_FILE_UNDEFINED_PARTITION_OR_HARDDRIVE_BASE 1
|
||||
#define KOLIBRIOS_SYS_FILE_FUNCTION_DONT_SUPPOROTE_FOR_CURRENT_FILE_SYSTEM 2
|
||||
#define KOLIBRIOS_SYS_FILE_UNKNOWN_FILE_SYSTEM 3
|
||||
#define KOLIBRIOS_SYS_FILE_NOT_FOUND 5
|
||||
#define KOLIBRIOS_SYS_FILE_FINISHED 6
|
||||
#define KOLIBRIOS_SYS_FILE_POINTER_OUTOFMEMORY_APPLICATION 7
|
||||
#define KOLIBRIOS_SYS_FILE_MEMORY_OF_DEVICE_FILLED 8
|
||||
#define KOLIBRIOS_SYS_FILE_TABLE_DESTROYED 9
|
||||
#define KOLIBRIOS_SYS_FILE_ACCESS_DENITED 10
|
||||
#define KOLIBRIOS_SYS_FILE_DEVICE_ERROR 11
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct KOLIBRIOS_FILEIO
|
||||
{
|
||||
DWORD number_subfunction;
|
||||
DWORD offset_in_file_low;
|
||||
DWORD offset_in_file_hight;
|
||||
DWORD size;
|
||||
DWORD *data;
|
||||
BYTE null;
|
||||
char *full_file_path;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct KOLIBRIOS_FILEIO fileio_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct BLOCK_DATA_ENTRY_DIRECTORY
|
||||
{
|
||||
DWORD attributes;
|
||||
DWORD types_data_of_name;
|
||||
DWORD time_created_file;
|
||||
DWORD date_created_file;
|
||||
DWORD time_last_access;
|
||||
DWORD date_last_access;
|
||||
DWORD time_last_modification;
|
||||
DWORD date_last_modification;
|
||||
DWORD file_size_low;
|
||||
DWORD file_size_hight;
|
||||
DWORD *filename;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct BLOCK_DATA_ENTRY_DIRECTORY bded_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct PROCESS_TABLE
|
||||
{
|
||||
int cpu_usage; //+0
|
||||
int window_pos_info; //+4
|
||||
short int reserved1; //+8
|
||||
char name[12]; //+10
|
||||
int memstart; //+22
|
||||
int memused; //+26
|
||||
int pid; //+30
|
||||
int winx_start; //+34
|
||||
int winy_start; //+38
|
||||
int winx_size; //+42
|
||||
int winy_size; //+46
|
||||
short int slot_info; //+50
|
||||
short int reserved2; //+52
|
||||
int clientx; //+54
|
||||
int clienty; //+58
|
||||
int clientwidth; //+62
|
||||
int clientheight; //+66
|
||||
unsigned char window_state; //+70
|
||||
char reserved3[1024-71]; //+71
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct PROCESS_TABLE process_table_t;
|
||||
|
||||
#pragma pack(push,1)
|
||||
struct IMPORT
|
||||
{
|
||||
char *name;
|
||||
void *data;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct IMPORT import_t;
|
||||
|
||||
static DWORD gui_get_file_size(char *filename,DWORD *buf_for_size);
|
||||
static DWORD gui_read_file(char *filename,DWORD *buf_pos_size,DWORD size_read,char *buf);
|
||||
static DWORD gui_create_rewrite_file(char *filename,DWORD *buf_pos_size,DWORD size_write,char *buf);
|
||||
static DWORD gui_append_to_file(char *filename,DWORD *buf_pos_size,DWORD size_write,char *buf);
|
||||
static void gui_debug_out_str(char *s);
|
||||
static void* gui_cofflib_getproc(import_t *lib, char *name);
|
||||
|
||||
#define alwinline __attribute__((always_inline))
|
||||
//------------------------------------------------------------------------------------------
|
||||
// draw window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void __attribute__((always_inline)) gui_ksys_draw_window(DWORD x,DWORD y,DWORD sizex,DWORD sizey,DWORD flags)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"xorl %%eax,%%eax\n\t"
|
||||
"movl %0,%%ebx\n\t"
|
||||
"movl %1,%%ecx\n\t"
|
||||
"movl %4,%%edx\n\t"
|
||||
"shll $16,%%ebx\n\t"
|
||||
"shll $16,%%ecx\n\t"
|
||||
"addl %2,%%ebx\n\t"
|
||||
"addl %3,%%ecx\n\t"
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"g"(x),"g"(y),"g"(sizex),"g"(sizey),"g"(flags)
|
||||
:"eax","ebx","ecx","edx");
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// begin redraw window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void __attribute__((always_inline)) gui_ksys_begin_draw_window(void)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(12),"b"(1));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// finish redraw window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void __attribute__((always_inline)) gui_ksys_finish_draw_window(void)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(12),"b"(2));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// set new position and new size of window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void alwinline gui_ksys_set_position_and_size_window(DWORD new_x,
|
||||
DWORD new_y,DWORD new_sizex,DWORD new_sizey)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(67),"b"(new_x),"c"(new_y),"d"(new_sizex),"S"(new_sizey));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// set title of window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_set_title_window(char *title)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(71),"b"(1),"c"(title));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// delete title of window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_delete_title_window(void)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(71),"b"(1),"c"(0));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get information about current process
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_current_process_information(void *mem)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(9),"b"(mem),"c"(-1));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// delete title of window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int __attribute__((always_inline)) gui_ksys_get_skin_height(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(48),"b"(4));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get pressed key
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int __attribute__((always_inline)) gui_ksys_get_key(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(2));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// set keyboard input mode
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_set_keyboard_input_mode(int mode)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(66),"b"(1),"c"(mode));
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get keyboard input mode
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_keyboard_input_mode(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(66),"b"(2));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get state of menegers keys
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_state_menegers_keys(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(66),"b"(3));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// set events mask
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_set_events_mask(DWORD mask)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(40),"b"(mask));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// wait event
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int __attribute__((always_inline)) gui_ksys_wait_event(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(10));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// check for event
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_check_event(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(11));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// wait event while not timeout
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_wait_event_with_timeout(DWORD timeout)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(23),"b"(timeout));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get code of pressed button
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_code_pressed_button(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(17));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get window mouse coordinates
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_window_mouse_coordinates(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(37),"b"(1));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get screen mouse coordinates
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_screen_mouse_coordinates(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(37),"b"(0));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get mouse buttons state
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_mouse_buttons_state(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(37),"b"(2));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get mouse ruler state
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline int gui_ksys_get_mouse_ruler_state(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(37),"b"(7));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// put pixel in window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_put_pixel_window(int x,int y,DWORD color)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(1),"b"(x),"c"(y),"d"(color));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// put image in window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_put_image_window(char *p,int x,int y,int sizex,int sizey)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"shll $16,%%ecx\n\t"
|
||||
"shll $16,%%edx\n\t"
|
||||
"addl %%esi,%%ecx\n\t"
|
||||
"addl %%edi,%%edx\n\t"
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(7),"b"(p),"c"(sizex),"d"(x),"S"(sizey),"D"(y));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// draw filled rectangle in window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_draw_filled_rectangle_window(int x,int y,int sizex,int sizey,DWORD color)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"shll $16,%%ebx\n\t"
|
||||
"shll $16,%%ecx\n\t"
|
||||
"addl %%esi,%%ebx\n\t"
|
||||
"addl %%edi,%%ecx\n\t"
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(13),"b"(x),"c"(y),"d"(color),"S"(sizex),"D"(sizey));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get screen size
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline DWORD gui_ksys_get_screen_size(void)
|
||||
{
|
||||
DWORD value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(14));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get color of pixel in coordinates (x,y)
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline DWORD gui_ksys_get_color_pixel_window(DWORD coordinates)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(35),"b"(coordinates));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get bits per pixel on the screen
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline DWORD gui_ksys_get_screen_bits_per_pixel(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(61),"b"(2));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// draw line in window
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_draw_line_window(int x1,int y1,int x2,int y2,DWORD color)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"shll $16,%%ebx\n\t"
|
||||
"shll $16,%%ecx\n\t"
|
||||
"addl %%esi,%%ebx\n\t"
|
||||
"addl %%edi,%%ecx\n\t"
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(38),"b"(x1),"c"(y1),"d"(color),"S"(x2),"D"(y2));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get standart colors table
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_get_standart_colors_table(char *buf)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:/*no output*/
|
||||
:"a"(48),"b"(3),"c"(buf),"d"(40));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// get time from start system to current in 1/100 sec.
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline DWORD gui_ksys_get_ticks(void)
|
||||
{
|
||||
DWORD value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(26),"b"(9));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// initialize heap of memory
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline DWORD gui_ksys_init_user_heap(void)
|
||||
{
|
||||
DWORD value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(value)
|
||||
:"a"(68),"b"(11));
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// alloctae size bytes of user memory
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void* gui_ksys_malloc(DWORD size)
|
||||
{
|
||||
void *value;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
:"=a"(value)
|
||||
:"a"(68),"b"(12),"c"(size)
|
||||
:"memory");
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// free pointer of memory
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_free(void *mem)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:
|
||||
:"a"(68),"b"(13),"c"(mem)
|
||||
:"memory");
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// reallocate of memory
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void* gui_ksys_realloc(DWORD new_size,void *old_mem)
|
||||
{
|
||||
void *new_mem;
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(new_mem)
|
||||
:"a"(68),"b"(20),"c"(new_size),"d"(old_mem)
|
||||
:"memory");
|
||||
|
||||
return(new_mem);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// load user mode DLL
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void* gui_ksys_load_dll(char *path)
|
||||
{
|
||||
void *dll_export;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(dll_export)
|
||||
:"a"(68),"b"(19),"c"(path));
|
||||
|
||||
return(dll_export);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// create thred
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void* gui_ksys_create_thread(DWORD *thread_eip,DWORD *thread_esp)
|
||||
{
|
||||
void *thread_TID;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(thread_TID)
|
||||
:"a"(51),"b"(1),"c"(thread_eip),"d"(thread_esp)
|
||||
:"memory");
|
||||
|
||||
return(thread_TID);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// acces to files input output
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline DWORD gui_ksys_files_io(fileio_t *f,DWORD value)
|
||||
{
|
||||
DWORD err_status;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:"=a"(err_status),"=b"(value)
|
||||
:"a"(70),"b"(f));
|
||||
|
||||
return(err_status);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// debug board output
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_debug_out(int c)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:
|
||||
:"a"(63),"b"(1),"c"(c));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// KolibriOS system exit program
|
||||
//------------------------------------------------------------------------------------------
|
||||
extern inline void gui_ksys_exit(int value)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"int $0x40"
|
||||
:
|
||||
:"a"(-1),"b"(value));
|
||||
}
|
||||
|
@ -1,67 +0,0 @@
|
||||
/*
|
||||
some system function of KolibriOS and founded of them functions
|
||||
*/
|
||||
|
||||
static DWORD gui_get_file_size(char *filename,DWORD *buf_for_size)
|
||||
{
|
||||
static char buf[44];
|
||||
static fileio_t f;
|
||||
bded_t *bded;
|
||||
DWORD status,value;
|
||||
|
||||
f.number_subfunction=5;
|
||||
f.data=(DWORD*)buf;
|
||||
f.full_file_path=filename;
|
||||
|
||||
status=gui_ksys_files_io(&f,value);
|
||||
|
||||
if (status==KOLIBRIOS_SYS_FILE_ACCESS_SUCCESSFULLY)
|
||||
{
|
||||
bded=(bded_t*)buf;
|
||||
*buf_for_size=bded->file_size_low;
|
||||
buf_for_size++;
|
||||
*buf_for_size=bded->file_size_hight;
|
||||
}
|
||||
|
||||
return(status);
|
||||
}
|
||||
|
||||
static DWORD gui_read_file(char *filename,DWORD *buf_pos_size,DWORD size_read,char *buf)
|
||||
{
|
||||
static fileio_t f;
|
||||
DWORD status,value;
|
||||
|
||||
f.number_subfunction=0;
|
||||
f.offset_in_file_low=(DWORD)*buf_pos_size;buf_pos_size++;
|
||||
f.offset_in_file_hight=(DWORD)*buf_pos_size;
|
||||
f.size=size_read;
|
||||
f.data=(DWORD*)buf;
|
||||
f.full_file_path=filename;
|
||||
|
||||
status=gui_ksys_files_io(&f,value);
|
||||
|
||||
return(status);
|
||||
}
|
||||
|
||||
static void gui_debug_out_str(char *s)
|
||||
{
|
||||
|
||||
while(*s)
|
||||
{
|
||||
if (*s=='\n') gui_ksys_debug_out(13);
|
||||
|
||||
gui_ksys_debug_out(*s);
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
static void* gui_cofflib_getproc(import_t *lib, char *name)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; lib[i].name && strcmp(name, lib[i].name); i++);
|
||||
|
||||
if(lib[i].name) return lib[i].data;
|
||||
else return NULL;
|
||||
}
|
||||
|
@ -1,167 +0,0 @@
|
||||
/*
|
||||
libGUI dinamic library
|
||||
(c) andrew_programmer 2009
|
||||
*/
|
||||
|
||||
//service libGUI types of data,functions and constants
|
||||
#include "types.h"
|
||||
#include "libGUI.h"
|
||||
#include "kolibri_system.h"
|
||||
#include "draw_controls.h"
|
||||
#include "fonts_meneger.h"
|
||||
#include "keys.h"
|
||||
|
||||
//controls
|
||||
#include "control_button.h"
|
||||
#include "control_image.h"
|
||||
#include "control_progress_bar.h"
|
||||
#include "control_scroll_bar.h"
|
||||
#include "control_scrolled_window.h"
|
||||
#include "control_text.h"
|
||||
|
||||
//some libC functions
|
||||
#include "stdarg.h"
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
#include "stdlib.h"
|
||||
|
||||
#include "stdio.inc"
|
||||
#include "string.inc"
|
||||
#include "stdlib.inc"
|
||||
#include "kolibri_system.inc"
|
||||
#include "draw_controls.inc"
|
||||
#include "fonts_meneger.inc"
|
||||
#include "libGUI_menegement.inc"
|
||||
#include "parent_window.inc"
|
||||
#include "main_libGUI.inc"
|
||||
#include "control_text.inc"
|
||||
#include "control_image.inc"
|
||||
#include "control_button.inc"
|
||||
#include "control_progress_bar.inc"
|
||||
#include "control_scroll_bar.inc"
|
||||
#include "control_scrolled_window.inc"
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
void *function;
|
||||
}export_t;
|
||||
|
||||
//char szSTART[] = "START";
|
||||
char szLibGUIversion[] = "LibGUIversion";
|
||||
char szInitLibGUI[] = "InitLibGUI";
|
||||
char szLibGUImain[] = "LibGUImain";
|
||||
char szQuitLibGUI[] = "QuitLibGUI";
|
||||
|
||||
char szCreateWindow[] = "CreateWindow";
|
||||
char szSetWindowSizeRequest[] = "SetWindowSizeRequest";
|
||||
|
||||
char szPackControls[] = "PackControls";
|
||||
char szDestroyControl[] = "DestroyControl";
|
||||
char szSetControlSizeRequest[] = "SetControlSizeRequest";
|
||||
char szGetControlSizeX[] = "GetControlSizeX";
|
||||
char szGetControlSizeY[] = "GetControlSizeY";
|
||||
char szSetControlNewPosition[] = "SetControlNewPosition";
|
||||
char szGetControlPositionX[] = "GetControlPositionX";
|
||||
char szGetControlPositionY[] = "GetControlPositionY";
|
||||
char szSetFocuse[] = "SetFocuse";
|
||||
char szRedrawControl[] = "RedrawControl";
|
||||
char szSpecialRedrawControl[] = "SpecialRedrawControl";
|
||||
|
||||
char szSetCallbackFunction[] = "SetCallbackFunction";
|
||||
char szBlockCallbackFunction[] = "BlockCallbackFunction";
|
||||
char szUnblockCallbackFunction[] = "UnblockCallbackFunction";
|
||||
|
||||
char szSetIDL_Function[] = "SetIDL_Function";
|
||||
char szDestroyIDL_Function[] = "DestroyIDL_Function";
|
||||
|
||||
char szSetTimerCallbackForFunction[] = "SetTimerCallbackForFunction";
|
||||
char szDestroyTimerCallbackForFunction[] = "DestroyTimerCallbackForFunction";
|
||||
|
||||
char szSetCallbackFunctionForEvent[] = "SetCallbackFunctionForEvent";
|
||||
char szDestroyCallbackFunctionForEvent[] = "DestroyCallbackFunctionForEvent";
|
||||
|
||||
char szCreateButton[] = "CreateButton";
|
||||
char szCreateButtonWithText[] = "CreateButtonWithText";
|
||||
|
||||
char szCreateProgressBar[] = "CreateProgressBar";
|
||||
char szSetProgressBarPulse[] = "SetProgressBarPulse";
|
||||
char szProgressBarSetText[] = "ProgressBarSetText";
|
||||
char szProgressBarGetText[] = "ProgressBarGetText";
|
||||
|
||||
char szCreateHorizontalScrollBar[] = "CreateHorizontalScrollBar";
|
||||
char szCreateVerticalScrollBar[] = "CreateVerticalScrollBar";
|
||||
|
||||
char szCreateScrolledWindow[] = "CreateScrolledWindow";
|
||||
char szScrolledWindowPackControls[] = "ScrolledWindowPackControls";
|
||||
|
||||
char szCreateImage[] = "CreateImage";
|
||||
|
||||
char szCreateText[] = "CreateText";
|
||||
char szTextBackgroundOn[] = "TextBackgroundOn";
|
||||
char szTextBackgroundOff[] = "TextBackgroundOff";
|
||||
|
||||
char szLoadFont[] = "LoadFont";
|
||||
char szFreeFont[] = "FreeFont";
|
||||
|
||||
export_t EXPORTS[]__asm__("EXPORTS") =
|
||||
{
|
||||
{szLibGUIversion, LibGUIversion },
|
||||
{szInitLibGUI, InitLibGUI },
|
||||
{szLibGUImain, LibGUImain },
|
||||
{szQuitLibGUI, QuitLibGUI },
|
||||
|
||||
{szCreateWindow, CreateWindow },
|
||||
{szSetWindowSizeRequest, SetWindowSizeRequest },
|
||||
|
||||
{szPackControls, PackControls },
|
||||
{szDestroyControl, DestroyControl },
|
||||
{szSetControlSizeRequest, SetControlSizeRequest },
|
||||
{szGetControlSizeX, GetControlSizeX },
|
||||
{szGetControlSizeY, GetControlSizeY },
|
||||
{szSetControlNewPosition, SetControlNewPosition },
|
||||
{szGetControlPositionX, GetControlPositionX },
|
||||
{szGetControlPositionY, GetControlPositionY },
|
||||
{szSetFocuse, SetFocuse },
|
||||
{szRedrawControl, RedrawControl },
|
||||
{szSpecialRedrawControl, SpecialRedrawControl },
|
||||
|
||||
{szSetCallbackFunction, SetCallbackFunction },
|
||||
{szBlockCallbackFunction, BlockCallbackFunction },
|
||||
{szUnblockCallbackFunction, UnblockCallbackFunction },
|
||||
|
||||
{szSetIDL_Function, SetIDL_Function },
|
||||
{szDestroyIDL_Function, DestroyIDL_Function },
|
||||
|
||||
{szSetTimerCallbackForFunction, SetTimerCallbackForFunction },
|
||||
{szDestroyTimerCallbackForFunction, DestroyTimerCallbackForFunction },
|
||||
|
||||
{szSetCallbackFunctionForEvent, SetCallbackFunctionForEvent },
|
||||
{szDestroyCallbackFunctionForEvent, DestroyCallbackFunctionForEvent },
|
||||
|
||||
{szCreateButton, CreateButton },
|
||||
{szCreateButtonWithText, CreateButtonWithText },
|
||||
|
||||
{szCreateProgressBar, CreateProgressBar },
|
||||
{szSetProgressBarPulse, SetProgressBarPulse },
|
||||
{szProgressBarSetText, ProgressBarSetText },
|
||||
{szProgressBarGetText, ProgressBarGetText },
|
||||
|
||||
{szCreateHorizontalScrollBar, CreateHorizontalScrollBar },
|
||||
{szCreateVerticalScrollBar, CreateVerticalScrollBar },
|
||||
|
||||
{szCreateScrolledWindow, CreateScrolledWindow },
|
||||
{szScrolledWindowPackControls, ScrolledWindowPackControls },
|
||||
|
||||
{szCreateImage, CreateImage },
|
||||
|
||||
{szCreateText, CreateText },
|
||||
{szTextBackgroundOn, TextBackgroundOn },
|
||||
{szTextBackgroundOff, TextBackgroundOff },
|
||||
|
||||
{szLoadFont, LoadFont },
|
||||
{szFreeFont, FreeFont },
|
||||
|
||||
{NULL,NULL},
|
||||
};
|
@ -1,581 +0,0 @@
|
||||
/*
|
||||
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);
|
File diff suppressed because it is too large
Load Diff
@ -1,225 +0,0 @@
|
||||
/*
|
||||
main meneger loop libGUI library
|
||||
*/
|
||||
|
||||
void LibGUImain(parent_t *WindowParent)
|
||||
{
|
||||
DWORD event,key,value;
|
||||
header_t *control;
|
||||
gui_message_t *events_message;
|
||||
gui_timer_t *seek_timer,*exchange_timer;
|
||||
gui_callbackevent_t *seek_calev,*calev,*exchange_calev;
|
||||
int i;
|
||||
char quit;
|
||||
|
||||
|
||||
events_message=(struct MESSAGE*)WindowParent->message;
|
||||
|
||||
//tell all child controls of main parent who is main parent
|
||||
events_message->type=MESSAGE_SET_MAIN_PARENT;
|
||||
events_message->arg1=(DWORD)WindowParent;
|
||||
SendMessage((struct HEADER *)WindowParent,events_message);
|
||||
|
||||
//display all created controls in window
|
||||
gui_draw_window(WindowParent);
|
||||
events_message->type=MESSAGE_FULL_REDRAW_ALL;
|
||||
SendMessage((struct HEADER *)WindowParent,events_message);
|
||||
|
||||
events_message->type=0;
|
||||
|
||||
quit=FALSE;
|
||||
WindowParent->number_callbacks=0;
|
||||
|
||||
while (quit==FALSE)
|
||||
{
|
||||
//check for timers
|
||||
if ((WindowParent->timer_bk!=(DWORD*)NULL) ||
|
||||
(WindowParent->number_timers_for_controls!=0)) {event=gui_ksys_wait_event_with_timeout(1);}
|
||||
else {event=gui_ksys_wait_event();}
|
||||
|
||||
//get and chack system events
|
||||
switch(event)
|
||||
{
|
||||
case KOLIBRIOS_SYS_EVENT_BUTTON_PRESSED:
|
||||
{
|
||||
if (ControlCheckCallbackEvent(WindowParent,DELETE_EVENT)!=NULL)
|
||||
{
|
||||
WindowParent->flags |= FLAG_CONNECT_EVENT_ON;
|
||||
WindowParent->control_for_callback_function[WindowParent->number_callbacks]=
|
||||
(DWORD*)WindowParent;
|
||||
WindowParent->callback_for_control_callback[WindowParent->number_callbacks]=
|
||||
(DWORD*)ControlCheckCallbackEvent(WindowParent,(DWORD)DELETE_EVENT);
|
||||
WindowParent->number_callbacks++;
|
||||
}
|
||||
|
||||
quit=TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
case KOLIBRIOS_SYS_EVENT_REDRAW:
|
||||
{
|
||||
GetNewWindowSizePos(WindowParent);
|
||||
SetWindowSizeRequest(WindowParent,WindowParent->ctrl_sizex,WindowParent->ctrl_sizey);
|
||||
gui_draw_window(WindowParent);
|
||||
|
||||
events_message->type=MESSAGE_FULL_REDRAW_ALL;
|
||||
SendMessage((struct HEADER *)WindowParent,events_message);
|
||||
break;
|
||||
}
|
||||
|
||||
case KOLIBRIOS_SYS_EVENT_KEYS:
|
||||
{
|
||||
key=gui_ksys_get_key();
|
||||
|
||||
|
||||
key=key>>8;
|
||||
|
||||
if (key & 128)
|
||||
{
|
||||
events_message->arg1=KEY_UP;
|
||||
events_message->arg2=key & 127;
|
||||
}
|
||||
else
|
||||
{
|
||||
events_message->arg1=KEY_DOWN;
|
||||
events_message->arg2=key;
|
||||
}
|
||||
|
||||
events_message->type=MESSAGE_KEYS_EVENT;
|
||||
SendMessage((struct HEADER *)WindowParent,events_message);
|
||||
break;
|
||||
}
|
||||
|
||||
case KOLIBRIOS_SYS_EVENT_MOUSE:
|
||||
{
|
||||
value=gui_ksys_get_window_mouse_coordinates();
|
||||
|
||||
events_message->type=MESSAGE_MOUSE_EVENT;
|
||||
events_message->arg2=(value & 0xffff)-screen.y;//y
|
||||
value=value >>16;
|
||||
events_message->arg1=value-screen.x;//x
|
||||
|
||||
value=gui_ksys_get_mouse_buttons_state();
|
||||
|
||||
switch(value)
|
||||
{
|
||||
case KOLIBRIOS_SYS_MOUSE_BUTTON_LEFT_DOWN:
|
||||
{
|
||||
events_message->arg3=MOUSE_LEFT_BUTTON_DOWN;
|
||||
break;
|
||||
}
|
||||
case KOLIBRIOS_SYS_MOUSE_BUTTON_RIGHT_DOWN:
|
||||
{
|
||||
events_message->arg3=MOUSE_RIGHT_BUTTON_DOWN;
|
||||
break;
|
||||
}
|
||||
case KOLIBRIOS_SYS_MOUSE_BUTTON_MIDDLE_DOWN:
|
||||
{
|
||||
events_message->arg3=MOUSE_MIDDLE_BUTTON_DOWN;
|
||||
break;
|
||||
}
|
||||
case KOLIBRIOS_SYS_MOUSE_BUTTON_4_DOWN:
|
||||
{
|
||||
events_message->arg3=MOUSE_4_BUTTON_DOWN;
|
||||
break;
|
||||
}
|
||||
case KOLIBRIOS_SYS_MOUSE_BUTTON_5_DOWN:
|
||||
{
|
||||
events_message->arg3=MOUSE_5_BUTTON_DOWN;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (events_message->arg3==MOUSE_LEFT_BUTTON_DOWN)
|
||||
{
|
||||
events_message->arg3=MOUSE_LEFT_BUTTON_UP;
|
||||
break;
|
||||
}
|
||||
if (events_message->arg3==MOUSE_RIGHT_BUTTON_DOWN)
|
||||
{
|
||||
events_message->arg3=MOUSE_RIGHT_BUTTON_UP;
|
||||
break;
|
||||
}
|
||||
if (events_message->arg3==MOUSE_MIDDLE_BUTTON_DOWN)
|
||||
{
|
||||
events_message->arg3=MOUSE_MIDDLE_BUTTON_UP;
|
||||
break;
|
||||
}
|
||||
if (events_message->arg3==MOUSE_4_BUTTON_DOWN)
|
||||
{
|
||||
events_message->arg3=MOUSE_4_BUTTON_UP;
|
||||
break;
|
||||
}
|
||||
if (events_message->arg3==MOUSE_5_BUTTON_DOWN)
|
||||
{
|
||||
events_message->arg3=MOUSE_5_BUTTON_UP;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
SendMessage((struct HEADER *)WindowParent,events_message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//call functions for events
|
||||
seek_calev=(struct CALLBACKEVENT*)WindowParent->calev_bk;
|
||||
while(seek_calev!=(struct CALLBACKEVENT*)NULL)
|
||||
{
|
||||
if (seek_calev->event_type==events_message->type)
|
||||
{
|
||||
CallbackFunctionForEvent=(void(*)(struct MESSAGE *message,void *data))seek_calev->func;
|
||||
CallbackFunctionForEvent(events_message,seek_calev->func_data);
|
||||
}
|
||||
exchange_calev=(struct CALLBACKEVENT*)seek_calev->calev_fd;
|
||||
seek_calev=exchange_calev;
|
||||
}
|
||||
|
||||
|
||||
//call timers of controls
|
||||
if (WindowParent->number_timers_for_controls!=0)
|
||||
{
|
||||
events_message->type=(char)MESSAGE_CALL_TIMER_EVENT;
|
||||
SendMessage((struct HEADER *)WindowParent,events_message);
|
||||
}
|
||||
|
||||
//call callback functions
|
||||
for(i=0;i<WindowParent->number_callbacks;i++)
|
||||
{
|
||||
control=(struct HEADER*)WindowParent->control_for_callback_function[i];
|
||||
//check callback control
|
||||
if (control!=(struct HEADER*)NULL)
|
||||
{
|
||||
calev=(struct CALLBACKEVENT*)WindowParent->callback_for_control_callback[i];
|
||||
if (control->flags & FLAG_CONNECT_EVENT_ON)
|
||||
{
|
||||
CallbackFunction=(void (*)( struct HEADER *Control,void *data))calev->func;
|
||||
CallbackFunction(control,calev->func_data);
|
||||
|
||||
control->flags=control->flags & FLAG_CONNECT_EVENT_OFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
WindowParent->number_callbacks=0;
|
||||
|
||||
//call timers of parent window
|
||||
seek_timer=(struct TIMER*)WindowParent->timer_bk;
|
||||
while(seek_timer!=(struct TIMER*)NULL)
|
||||
{
|
||||
if (seek_timer->flags & FLAG_TIMER_ON) Timer(seek_timer);
|
||||
|
||||
exchange_timer=(struct TIMER*)seek_timer->tmr_fd;
|
||||
seek_timer=exchange_timer;
|
||||
}
|
||||
|
||||
//check for IDL function and call it if enabled
|
||||
if (WindowParent->IDL_func!=(DWORD*)NULL)
|
||||
{
|
||||
IDL_Function=(void(*)(void *data))WindowParent->IDL_func;
|
||||
IDL_Function(WindowParent->IDL_func_data);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,132 +0,0 @@
|
||||
/*
|
||||
create parent of window
|
||||
*/
|
||||
|
||||
#define PARENT_WINDOW_DEFAULT_SIZEX 320
|
||||
#define PARENT_WINDOW_DEFAULT_SIZEY 200
|
||||
|
||||
#define PARENT_WINDOW_BORDER_WIDTH 5;
|
||||
|
||||
void gui_get_screen_parameters(void)
|
||||
{
|
||||
int value;
|
||||
|
||||
value=(int)gui_ksys_get_screen_bits_per_pixel();
|
||||
screen.bits_per_pixel=(char)value;
|
||||
screen.bytes_per_pixel=screen.bits_per_pixel >> 3;
|
||||
|
||||
screen.skin_height=gui_ksys_get_skin_height();
|
||||
|
||||
screen.x=PARENT_WINDOW_BORDER_WIDTH;
|
||||
screen.y=screen.skin_height;
|
||||
|
||||
value=gui_ksys_get_screen_size();
|
||||
screen.display_size_y=value & 0xffff;
|
||||
screen.display_size_y=value >> 16;
|
||||
}
|
||||
|
||||
void gui_draw_window(parent_t *window)
|
||||
{
|
||||
DWORD flag;
|
||||
|
||||
flag=3;
|
||||
flag=flag<<24;
|
||||
flag +=0xaabbcc;
|
||||
|
||||
gui_ksys_begin_draw_window();
|
||||
gui_ksys_draw_window(window->ctrl_x,window->ctrl_y,window->ctrl_sizex,window->ctrl_sizey,flag);
|
||||
gui_ksys_finish_draw_window();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create window parent
|
||||
//---------------------------------------------------------------------------------
|
||||
void* CreateWindow(void)
|
||||
{
|
||||
struct HEADERPARENT *WindowParent;
|
||||
|
||||
WindowParent=malloc(sizeof(parent_t));
|
||||
WindowParent->message=malloc(sizeof(gui_message_t));
|
||||
WindowParent->control_for_callback_function=malloc(sizeof(DWORD)*MAX_CALLBACKS);
|
||||
WindowParent->callback_for_control_callback=malloc(sizeof(DWORD)*MAX_CALLBACKS);
|
||||
|
||||
WindowParent->main_parent=(DWORD*)WindowParent;
|
||||
WindowParent->global_active_control_for_keys=(DWORD*)NULL;
|
||||
|
||||
WindowParent->control_for_callback_function[0]=(DWORD*)NULL;
|
||||
WindowParent->number_callbacks=0;
|
||||
|
||||
WindowParent->child_bk=(DWORD*)NULL;
|
||||
WindowParent->active_control_for_keys=(DWORD*)NULL;
|
||||
WindowParent->active_control_for_mouse=(DWORD*)NULL;
|
||||
WindowParent->ctrl_x=0x0;
|
||||
WindowParent->ctrl_y=0x0;
|
||||
WindowParent->ctrl_sizex=PARENT_WINDOW_DEFAULT_SIZEX;
|
||||
WindowParent->ctrl_sizey=PARENT_WINDOW_DEFAULT_SIZEY;
|
||||
WindowParent->callback=(DWORD*)NULL;//no callbacks yet
|
||||
WindowParent->timer=(DWORD*)NULL;//no timers yet
|
||||
|
||||
WindowParent->flags=0;
|
||||
WindowParent->flags=WindowParent->flags | FLAG_SHOW_CONTROL;
|
||||
WindowParent->flags=WindowParent->flags | FLAG_FOCUSE_INPUT_SUPPOROTE;
|
||||
|
||||
WindowParent->number_timers_for_controls=0;
|
||||
WindowParent->timer_bk=(DWORD*)NULL;
|
||||
WindowParent->timer_fd=(DWORD*)NULL;
|
||||
|
||||
WindowParent->calev_bk=(DWORD*)NULL;
|
||||
WindowParent->calev_fd=(DWORD*)NULL;
|
||||
|
||||
WindowParent->IDL_func=(DWORD*)NULL;
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
//---------------------------platform depended part of code------------------------
|
||||
//---------------------------------------------------------------------------------
|
||||
//create and initialize screen buffer
|
||||
gui_get_screen_parameters();
|
||||
//by default draw output to the screen
|
||||
screen.draw_output=DRAW_OUTPUT_SCREEN;
|
||||
//calculate size of client's arrea
|
||||
screen.size_x=WindowParent->ctrl_sizex-9;
|
||||
screen.size_y=WindowParent->ctrl_sizey-screen.skin_height-4;
|
||||
//----------------------------------------------------------------------------------
|
||||
ID=0;
|
||||
return(WindowParent);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// create window parent
|
||||
//---------------------------------------------------------------------------------
|
||||
void SetWindowSizeRequest(parent_t *WindowParent,int size_x,int size_y)
|
||||
{
|
||||
static int x,y,sizex,sizey;
|
||||
//---------------------------------------------------------------------------------
|
||||
//---------------------------platform depended part of code------------------------
|
||||
//---------------------------------------------------------------------------------
|
||||
x=WindowParent->ctrl_x;
|
||||
y=WindowParent->ctrl_y;
|
||||
sizex=size_x;
|
||||
sizey=size_y;
|
||||
gui_ksys_set_position_and_size_window(x,y,sizex,sizey);
|
||||
//---------------------------------------------------------------------------------
|
||||
WindowParent->ctrl_sizex=sizex;
|
||||
WindowParent->ctrl_sizey=sizey;
|
||||
|
||||
screen.size_x=WindowParent->ctrl_sizex-9;
|
||||
screen.size_y=WindowParent->ctrl_sizey-screen.skin_height-4;
|
||||
}
|
||||
|
||||
void GetNewWindowSizePos(parent_t *WindowParent)
|
||||
{
|
||||
static process_table_t procinfo;
|
||||
|
||||
gui_ksys_get_current_process_information(&procinfo);
|
||||
|
||||
WindowParent->ctrl_x=(DWORD)procinfo.winx_start;
|
||||
WindowParent->ctrl_y=(DWORD)procinfo.winy_start;
|
||||
WindowParent->ctrl_sizex=(DWORD)procinfo.winx_size;
|
||||
WindowParent->ctrl_sizey=(DWORD)procinfo.winy_size;
|
||||
|
||||
//get screen parameters again
|
||||
gui_get_screen_parameters();
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
|
||||
typedef char *va_list;
|
||||
#define _roundsize(n) ( (sizeof(n) + 3) & ~3 )
|
||||
#define va_start(ap,v) (ap = (va_list)&v+_roundsize(v))
|
||||
#define va_arg(ap,t) ( *(t *)((ap += _roundsize(t)) - _roundsize(t)) )
|
||||
#define va_end(ap) (ap = (va_list)0)
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
|
||||
static int cdecl printf(const char *format,...);
|
||||
|
@ -1,790 +0,0 @@
|
||||
/*
|
||||
function for format output to the string
|
||||
*/
|
||||
|
||||
static int formatted_double_to_string(long double number,int format1,int format2,char *s)
|
||||
{
|
||||
/*
|
||||
double n;
|
||||
double nbefor;
|
||||
double nafter;
|
||||
double v,v2;
|
||||
long intdigit;
|
||||
long beforpointdigit;
|
||||
long div;
|
||||
int i;
|
||||
int pos;
|
||||
int size;
|
||||
int fmt1;
|
||||
int fmt2;
|
||||
long mul;
|
||||
static char buf[200];
|
||||
|
||||
size=(int)s;
|
||||
n=(double)number;
|
||||
if (n<0) {*s='-';s++;n=-n;}
|
||||
|
||||
fmt1=format1;
|
||||
fmt2=format2;
|
||||
if (fmt2>18) {fmt2=18;} //maximum of size long long type
|
||||
|
||||
//clear array befor output
|
||||
for(i=0;i<=200;i++) {buf[i]=0;}
|
||||
|
||||
if ((fmt1>=0) && (n<1))
|
||||
{ //formatted output if 0<=n<1
|
||||
mul=1;
|
||||
for(i=0;i<fmt2;i++)
|
||||
{n=n*10;mul=mul*10;}
|
||||
|
||||
n=n*10;
|
||||
n=ceil(n);
|
||||
intdigit=floor(n);
|
||||
//intdigit=n;
|
||||
intdigit=(intdigit/10);
|
||||
|
||||
pos=0;
|
||||
mul=mul/10;
|
||||
for(i=0;i<fmt2-1;i++)
|
||||
{
|
||||
div=intdigit/mul;
|
||||
buf[pos]=(char)div;
|
||||
pos++;
|
||||
intdigit=intdigit-div*mul;
|
||||
mul=mul/10;
|
||||
if (mul==1) break;
|
||||
}
|
||||
buf[pos]=(char)intdigit;
|
||||
*s='0';s++;
|
||||
*s='.';s++;
|
||||
for(i=0;i<format2;i++)
|
||||
{
|
||||
if ((buf[i]>=0) && (buf[i]<=9)) {*s='0'+buf[i];}
|
||||
else {*s='0';}
|
||||
s++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ //if n>=1
|
||||
//v=floorf(n+0.00000000000001);
|
||||
beforpointdigit=floor(n+0.00000000000001);
|
||||
//beforpointdigit=n;
|
||||
nbefor=beforpointdigit;
|
||||
nafter=n-nbefor;
|
||||
|
||||
//print part of number befor point
|
||||
mul=1;
|
||||
for(i=0;i<200-2;i++)
|
||||
{
|
||||
mul=mul*10;
|
||||
if ((beforpointdigit/mul)==0) {fmt1=i+1;break;}
|
||||
}
|
||||
|
||||
pos=0;
|
||||
mul=mul/10;
|
||||
for(i=0;i<fmt1-1;i++)
|
||||
{
|
||||
div=beforpointdigit/mul;
|
||||
buf[pos]=(char)div;
|
||||
pos++;
|
||||
beforpointdigit=beforpointdigit-div*mul;
|
||||
mul=mul/10;
|
||||
if (mul==1) break;
|
||||
}
|
||||
buf[pos]=(char)beforpointdigit;
|
||||
|
||||
for(i=0;i<fmt1;i++)
|
||||
{
|
||||
if ((buf[i]>=0) && (buf[i]<=9)) {*s='0'+buf[i];}
|
||||
s++;
|
||||
}
|
||||
|
||||
//print part of number after point
|
||||
mul=1;
|
||||
for(i=0;i<fmt2;i++)
|
||||
{nafter=nafter*10;mul=mul*10;}
|
||||
|
||||
nafter=nafter*10;
|
||||
nafter=ceil(nafter);
|
||||
intdigit=floor(nafter);
|
||||
//intdigit=nafter;
|
||||
intdigit=intdigit/10;
|
||||
|
||||
pos=0;
|
||||
mul=mul/10;
|
||||
for(i=0;i<fmt2-1;i++)
|
||||
{
|
||||
div=intdigit/mul;
|
||||
buf[pos]=(char)div;
|
||||
pos++;
|
||||
intdigit=intdigit-div*mul;
|
||||
mul=mul/10;
|
||||
if (mul==1) break;
|
||||
}
|
||||
buf[pos]=(char)intdigit;
|
||||
*s='.';s++;
|
||||
for(i=0;i<format2;i++)
|
||||
{
|
||||
if ((buf[i]>=0) && (buf[i]<=9)) {*s='0'+buf[i];}
|
||||
else {*s='0';}
|
||||
s++;
|
||||
}
|
||||
|
||||
}
|
||||
size=(int)s-size;
|
||||
return(size);
|
||||
*/
|
||||
}
|
||||
|
||||
static int formatted_long_to_string(long long number,int fmt1,char *s)
|
||||
{
|
||||
int i;
|
||||
int pos;
|
||||
int fmt;
|
||||
int size;
|
||||
int difference_pos;
|
||||
long digit;
|
||||
long mul;
|
||||
long div;
|
||||
static char buf[200];
|
||||
|
||||
//clear array befor output
|
||||
for(i=0;i<200;i++) {buf[i]=0;}
|
||||
digit=number;
|
||||
|
||||
size=(int)s;
|
||||
if (digit<0) {*s='-';s++;digit=-digit;}
|
||||
if (digit==0) {*s='0';s++;goto end;}
|
||||
|
||||
mul=1;
|
||||
for(i=0;i<200-2;i++)
|
||||
{
|
||||
mul=mul*10;
|
||||
if ((digit/mul)==0) {fmt=i+1;break;}
|
||||
}
|
||||
|
||||
difference_pos=i+1;
|
||||
|
||||
pos=0;
|
||||
mul=mul/10;
|
||||
for(i=0;i<fmt-1;i++)
|
||||
{
|
||||
div=digit/mul;
|
||||
buf[pos]=(char)div;
|
||||
pos++;
|
||||
digit=digit-div*mul;
|
||||
mul=mul/10;
|
||||
if (mul==1) break;
|
||||
}
|
||||
buf[pos]=(char)digit;
|
||||
|
||||
if (fmt1>=difference_pos) fmt=fmt1;
|
||||
else
|
||||
fmt=difference_pos;
|
||||
|
||||
for(i=0;i<fmt;i++)
|
||||
{
|
||||
if (i<difference_pos)
|
||||
{
|
||||
if ((buf[i]>=0) && (buf[i]<=9)) {*s='0'+buf[i];}
|
||||
}
|
||||
else
|
||||
{
|
||||
*s=' ';
|
||||
}
|
||||
s++;
|
||||
}
|
||||
end:
|
||||
size=(int)s-size;
|
||||
return(size);
|
||||
}
|
||||
|
||||
static int formatted_hex_to_string(long long number,int fmt1,char flag_register,char *s)
|
||||
{
|
||||
long n;
|
||||
int i,pos;
|
||||
int fmt;
|
||||
long size;
|
||||
int difference_pos;
|
||||
static char xdigs_lower[16]="0123456789abcdef";
|
||||
static char xdigs_upper[16]="0123456789ABCDEF";
|
||||
static char buf[200];
|
||||
|
||||
n=(long)number;
|
||||
size=(int)s;
|
||||
if (n<0) {*s='-';s++;n=-n;}
|
||||
|
||||
if (n==0) {*s='0';s++;goto end;}
|
||||
for(i=0;i<200;i++) {buf[i]=0;}
|
||||
|
||||
i=0;
|
||||
if (flag_register==0)
|
||||
{
|
||||
while (n>0)
|
||||
{
|
||||
buf[i]=xdigs_lower[n & 15];
|
||||
n=n>>4;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (n>0)
|
||||
{
|
||||
buf[i]=xdigs_upper[n & 15];
|
||||
n=n>>4;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
pos=i;
|
||||
difference_pos=i;
|
||||
|
||||
for(i=pos-1;i>=0;i--)
|
||||
{
|
||||
*s=buf[i];
|
||||
s++;
|
||||
}
|
||||
|
||||
if (fmt1-difference_pos>0)
|
||||
{
|
||||
for(i=difference_pos+1;i<=fmt1;i++)
|
||||
{
|
||||
*s=' ';
|
||||
s++;
|
||||
}
|
||||
}
|
||||
end:size=(int)s-size;
|
||||
return(size);
|
||||
}
|
||||
|
||||
static int formatted_octa_to_string(long long number,int fmt1,char flag_register,char *s)
|
||||
{
|
||||
long n;
|
||||
int i,pos;
|
||||
int fmt;
|
||||
long size;
|
||||
int difference_pos;
|
||||
static char xdigs_lower[16]="012345678";
|
||||
static char buf[200];
|
||||
|
||||
n=number;
|
||||
size=(int)s;
|
||||
if (n<0) {*s='-';s++;n=-n;}
|
||||
|
||||
if (n==0) {*s='0';s++;goto end;}
|
||||
for(i=0;i<200;i++) {buf[i]=0;}
|
||||
|
||||
i=0;
|
||||
if (flag_register==0)
|
||||
{
|
||||
while (n>0)
|
||||
{
|
||||
buf[i]=xdigs_lower[n & 7];
|
||||
n=n>>3;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
pos=i;
|
||||
difference_pos=i;
|
||||
|
||||
for(i=pos-1;i>=0;i--)
|
||||
{
|
||||
*s=buf[i];
|
||||
s++;
|
||||
}
|
||||
|
||||
if (fmt1-difference_pos>0)
|
||||
{
|
||||
for(i=difference_pos+1;i<=fmt1;i++)
|
||||
{
|
||||
*s=' ';
|
||||
s++;
|
||||
}
|
||||
}
|
||||
end:size=(int)s-size;
|
||||
return(size);
|
||||
}
|
||||
|
||||
static int format_print(char *dest, size_t maxlen,const char *fmt0, va_list argp)
|
||||
{
|
||||
int i,j,k;
|
||||
int length;
|
||||
int fmt1,fmt2,stepen;
|
||||
size_t pos,posc;
|
||||
long long intdigit;
|
||||
long double doubledigit;
|
||||
float floatdigit;
|
||||
const char *fmt,*fmtc;
|
||||
char *s;
|
||||
char *str;
|
||||
static char buffmt1[30];
|
||||
static char buffmt2[30];
|
||||
static char buf[1024];
|
||||
char format_flag;
|
||||
char flag_point;
|
||||
char flag_noformat;
|
||||
char flag_long;
|
||||
char flag_unsigned;
|
||||
char flag_register;
|
||||
char flag_plus;
|
||||
|
||||
fmt=fmt0;
|
||||
s=dest;
|
||||
pos=0;
|
||||
while(pos<maxlen)
|
||||
{
|
||||
if (*fmt=='%')
|
||||
{
|
||||
|
||||
if (*(fmt+1)=='%')
|
||||
{
|
||||
*s='%';
|
||||
s++;
|
||||
fmt=fmt+2;
|
||||
pos++;
|
||||
goto exit_check;
|
||||
}
|
||||
//checking to containg format in the string
|
||||
fmtc=fmt;
|
||||
posc=pos;
|
||||
format_flag=0;
|
||||
flag_long=0;
|
||||
flag_unsigned=0;
|
||||
flag_register=0;
|
||||
flag_plus=0;
|
||||
while((*fmtc!='\0') || (*fmtc!=0))
|
||||
{
|
||||
fmtc++;
|
||||
posc++;
|
||||
switch(*fmtc)
|
||||
{
|
||||
case 'c':
|
||||
case 'C':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'd':
|
||||
case 'D':
|
||||
case 'i':
|
||||
case 'I':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'e':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'E':
|
||||
format_flag=1;
|
||||
flag_long=1;
|
||||
break;
|
||||
case 'f':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'F':
|
||||
format_flag=1;
|
||||
flag_long=1;
|
||||
break;
|
||||
case 'g':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'G':
|
||||
format_flag=1;
|
||||
flag_long=1;
|
||||
break;
|
||||
case 'l':
|
||||
flag_long=1;
|
||||
break;
|
||||
case 'L':
|
||||
flag_long=2;
|
||||
break;
|
||||
case 'o':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 's':
|
||||
case 'S':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'u':
|
||||
case 'U':
|
||||
format_flag=1;
|
||||
flag_unsigned=1;
|
||||
break;
|
||||
case 'x':
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'X':
|
||||
flag_register=1;
|
||||
format_flag=1;
|
||||
break;
|
||||
case 'z':
|
||||
case 'Z':
|
||||
format_flag=1;
|
||||
flag_unsigned=1;
|
||||
break;
|
||||
case '+':
|
||||
flag_plus=1;
|
||||
break;
|
||||
|
||||
default:;
|
||||
}
|
||||
if ((*fmtc=='%') || (*fmtc==' ')) break;
|
||||
if (format_flag==1) break;
|
||||
}
|
||||
|
||||
if (format_flag==0)
|
||||
{
|
||||
*s=*fmt;
|
||||
fmt++;
|
||||
s++;
|
||||
pos++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((posc-pos)==1)
|
||||
{//simbols % and format simbol near tothere(for example %c )
|
||||
fmt=fmtc+1;
|
||||
switch(*fmtc)
|
||||
{
|
||||
case 'c':
|
||||
case 'C':
|
||||
if ((pos+1)<maxlen)
|
||||
{
|
||||
//*s=(int)va_arg(argp,char*);
|
||||
*s=*((char *)argp);
|
||||
argp=argp+4;
|
||||
*s++;pos++;
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
case 'S':
|
||||
str=va_arg(argp,char*);
|
||||
length=strlen(str);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,str,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'd':
|
||||
case 'D':
|
||||
case 'i':
|
||||
case 'I':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
//intdigit=*((long*)argp);
|
||||
//argp=argp+4;
|
||||
if ((intdigit>0) && (flag_plus==1) && (pos+1<maxlen))
|
||||
{
|
||||
*s='+';
|
||||
s++;
|
||||
pos++;
|
||||
}
|
||||
length=formatted_long_to_string(intdigit,0,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
//intdigit=*((long int *)argp);
|
||||
//argp=argp+4;
|
||||
|
||||
length=formatted_octa_to_string(intdigit,0,flag_register,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'u':
|
||||
case 'U':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long int);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
|
||||
if (flag_unsigned==1) {
|
||||
if (intdigit<0) {intdigit=-intdigit;}
|
||||
}
|
||||
|
||||
length=formatted_long_to_string(intdigit,0,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'x':
|
||||
case 'X':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
//intdigit=*((long int *)argp);
|
||||
//argp=argp+4;
|
||||
|
||||
length=formatted_hex_to_string(intdigit,0,flag_register,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'z':
|
||||
case 'Z':
|
||||
intdigit=va_arg(argp,size_t);
|
||||
|
||||
if (flag_unsigned==1) {
|
||||
if (intdigit<0) {intdigit=-intdigit;}
|
||||
}
|
||||
|
||||
length=formatted_long_to_string(intdigit,0,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
default:;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt++;
|
||||
flag_point=0;
|
||||
flag_noformat=0;
|
||||
fmt1=0;
|
||||
fmt2=0;
|
||||
j=0;
|
||||
k=0;
|
||||
for(i=pos+1;i<posc;i++)
|
||||
{
|
||||
switch(*fmt)
|
||||
{
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
if (flag_point==0)
|
||||
{
|
||||
buffmt1[j]=*fmt-'0';
|
||||
j++;
|
||||
}
|
||||
else
|
||||
{
|
||||
buffmt2[k]=*fmt-'0';
|
||||
k++;
|
||||
}
|
||||
break;
|
||||
case '.':
|
||||
flag_point=1;
|
||||
break;
|
||||
case 'l':
|
||||
case 'L':
|
||||
break;
|
||||
case '+':
|
||||
break;
|
||||
default:flag_noformat=1;
|
||||
}
|
||||
if (flag_noformat==1) break;
|
||||
fmt++;
|
||||
}
|
||||
if (flag_noformat==0)
|
||||
{
|
||||
stepen=1;
|
||||
for(i=j-1;i>=0;i--)
|
||||
{
|
||||
fmt1=fmt1+buffmt1[i]*stepen;
|
||||
stepen=stepen*10;
|
||||
}
|
||||
stepen=1;
|
||||
for(i=k-1;i>=0;i--)
|
||||
{
|
||||
fmt2=fmt2+buffmt2[i]*stepen;
|
||||
stepen=stepen*10;
|
||||
}
|
||||
switch(*fmtc)
|
||||
{
|
||||
case 'f':
|
||||
case 'F':
|
||||
if (flag_long==0) {doubledigit=va_arg(argp,double);}
|
||||
if (flag_long>=1) {doubledigit=va_arg(argp,long double);}
|
||||
//doubledigit=*((double *)argp);
|
||||
//sargp=argp+8;
|
||||
length=formatted_double_to_string(doubledigit,fmt1,fmt2,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'd':
|
||||
case 'D':
|
||||
case 'i':
|
||||
case 'I':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
|
||||
if ((intdigit>0) && (flag_plus==1) && (pos+1<maxlen))
|
||||
{
|
||||
*s='+';
|
||||
s++;
|
||||
pos++;
|
||||
}
|
||||
length=formatted_long_to_string(intdigit,fmt1,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
length=formatted_octa_to_string(intdigit,fmt1,flag_register,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'u':
|
||||
case 'U':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long int);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
|
||||
if (flag_unsigned==1) {
|
||||
if (intdigit<0) {intdigit=-intdigit;}
|
||||
}
|
||||
|
||||
length=formatted_long_to_string(intdigit,fmt1,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'x':
|
||||
case 'X':
|
||||
if (flag_long==0) {intdigit=va_arg(argp,int);}
|
||||
if (flag_long==1) {intdigit=va_arg(argp,long int);}
|
||||
if (flag_long==2) {intdigit=va_arg(argp,long long);}
|
||||
length=formatted_hex_to_string(intdigit,fmt1,flag_register,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
case 'z':
|
||||
case 'Z':
|
||||
intdigit=va_arg(argp,size_t);
|
||||
|
||||
if (flag_unsigned==1) {
|
||||
if (intdigit<0) {intdigit=-intdigit;}
|
||||
}
|
||||
|
||||
length=formatted_long_to_string(intdigit,fmt1,buf);
|
||||
if ((pos+length)<maxlen)
|
||||
{
|
||||
memmove(s,buf,length);
|
||||
s=s+length;pos=pos+length;
|
||||
}
|
||||
break;
|
||||
default:;
|
||||
}
|
||||
}
|
||||
fmt=fmtc+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*fmt=='\0') {break;}
|
||||
*s=*fmt;
|
||||
fmt++;
|
||||
s++;
|
||||
pos++;
|
||||
}
|
||||
exit_check:;
|
||||
}
|
||||
return(pos);
|
||||
}
|
||||
static char* dllname="/rd/1/lib/console.obj";
|
||||
int console_init_status=0;
|
||||
|
||||
static char* imports[] = {"START","version","con_init","con_write_asciiz","con_printf","con_exit"};
|
||||
static char* caption = "Console";
|
||||
|
||||
static DWORD (stdcall *dll_ver)(void);
|
||||
static void (stdcall *con_init)(DWORD wnd_width, DWORD wnd_height, DWORD scr_width, DWORD scr_height, const char* title);
|
||||
static void (stdcall *con_write_asciiz)(const char* string);
|
||||
static void (cdecl *con_printf)(const char* format,...);
|
||||
static void (stdcall *con_exit)(DWORD bCloseWindow);
|
||||
|
||||
static void printf_link(import_t *exp, char** imports)
|
||||
{
|
||||
dll_ver = (DWORD (stdcall *)(void))
|
||||
gui_cofflib_getproc(exp, imports[1]);
|
||||
con_init = (void (stdcall *)(DWORD , DWORD, DWORD, DWORD, const char*))
|
||||
gui_cofflib_getproc(exp, imports[2]);
|
||||
con_printf = (void (cdecl *)(const char*,...))
|
||||
(exp, imports[4]);
|
||||
con_exit = (void (stdcall *)(DWORD))
|
||||
gui_cofflib_getproc(exp, imports[5]);
|
||||
}
|
||||
|
||||
static int init_console(void)
|
||||
{
|
||||
import_t *hDll;
|
||||
|
||||
if((hDll = (import_t*)gui_ksys_load_dll(dllname)) == 0)
|
||||
{
|
||||
gui_debug_out_str("can't load lib\n");
|
||||
return 1;
|
||||
}
|
||||
printf_link(hDll, imports);
|
||||
|
||||
con_init(-1, -1, -1, -1, caption);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
static int printf(const char *format,...)
|
||||
{
|
||||
int i;
|
||||
int printed_simbols;
|
||||
va_list arg;
|
||||
static char simbol[]={"%s"};
|
||||
char *s;
|
||||
|
||||
va_start(arg,format);
|
||||
|
||||
/*
|
||||
if (console_init_status==0)
|
||||
{
|
||||
i=init_console();
|
||||
console_init_status=1;
|
||||
}
|
||||
*/
|
||||
s=malloc(4096);
|
||||
printed_simbols=format_print(s,4096,format,arg);
|
||||
gui_debug_out_str(s);
//con_printf(simbol,s);
|
||||
free(s);
|
||||
|
||||
return(printed_simbols);
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
/*
|
||||
some standart libC helper functions
|
||||
*/
|
||||
|
||||
static void* malloc(DWORD size);
|
||||
static void free(void *memory);
|
||||
static void* realloc(void *old_mem,DWORD new_size);
|
||||
static void exit(int c);
|
||||
|
@ -1,24 +0,0 @@
|
||||
/*
|
||||
some standart libC helper functions
|
||||
*/
|
||||
|
||||
static void* malloc(DWORD size)
|
||||
{
|
||||
return(gui_ksys_malloc(size));
|
||||
}
|
||||
|
||||
static void free(void *memory)
|
||||
{
|
||||
gui_ksys_free(memory);
|
||||
}
|
||||
|
||||
static void* realloc(void *old_mem,DWORD new_size)
|
||||
{
|
||||
return(gui_ksys_realloc(new_size,old_mem));
|
||||
}
|
||||
|
||||
static void exit(int c)
|
||||
{
|
||||
gui_ksys_exit(c);
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
/*
|
||||
some libC function working with memory
|
||||
*/
|
||||
|
||||
static void *memmove(void *dst,const void *src,size_t length);
|
||||
static size_t strlen(const char *s);
|
||||
static char* strchr(const char *string, int c);
|
||||
static char* strrchr(const char *string, int c);
|
||||
static char* strstr(const char *s1,const char *s2);
|
||||
static int strcmp(const char*,const char*);
|
||||
static int strncmp(const char* string1, const char* string2, int count);
|
||||
|
||||
static int vsnprintf(char *dest, size_t size,const char *format,va_list ap);
|
||||
static int cdecl snprintf(char *dest, size_t size, const char *format,...);
|
||||
static int cdecl sprintf(char *dest,const char *format,...);
|
||||
|
@ -1,149 +0,0 @@
|
||||
/*
|
||||
some libC function working with memory
|
||||
*/
|
||||
|
||||
static void *memmove(void *dst,const void *src,size_t length)
|
||||
{
|
||||
void *value;
|
||||
|
||||
if (length & 3)
|
||||
{//length not aligned in 4 bytes use reb movsb
|
||||
__asm__ __volatile__(
|
||||
"movl %%edi,%%eax\n\t"
|
||||
"cld\n\t"
|
||||
"rep\n\t"
|
||||
"movsb"
|
||||
:"=D"(value)
|
||||
:"c"(length),"S"(src),"D"(dst)
|
||||
:"eax");
|
||||
}
|
||||
else
|
||||
{//length aligned in 4 bytes use rep movsd
|
||||
length=length >> 2;//length=length/4
|
||||
__asm__ __volatile__(
|
||||
"movl %%edi,%%eax\n\t"
|
||||
"cld\n\t"
|
||||
"rep\n\t"
|
||||
"movsd"
|
||||
:"=D"(value)
|
||||
:"c"(length),"S"(src),"D"(dst)
|
||||
:"eax");
|
||||
|
||||
}
|
||||
return(value);
|
||||
}
|
||||
|
||||
static size_t strlen(const char *s)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
i=0;
|
||||
while(*s!='\0')
|
||||
{
|
||||
i++;
|
||||
s++;
|
||||
}
|
||||
return(i);
|
||||
}
|
||||
|
||||
static char* strchr(const char *string, int c)
|
||||
{
|
||||
while(*string!='\0')
|
||||
{
|
||||
if (*string==(char)c) return((char*)string);
|
||||
string++;
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
static char* strrchr(const char *string, int c)
|
||||
{
|
||||
char *s;
|
||||
int i,j;
|
||||
|
||||
s=(char*)string;
|
||||
while(*s!='\0') {s++;}
|
||||
|
||||
j=(int)(s-string);
|
||||
s--;
|
||||
|
||||
for(i=0;i<j;i++)
|
||||
{
|
||||
if (*s==(char)c) return(s);
|
||||
s--;
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
static char* strstr(const char *s1,const char *s2)
|
||||
{
|
||||
char *s;
|
||||
int i,j,len1,len2;
|
||||
|
||||
len2=strlen(s2);
|
||||
if (len2==0) return((char*)s1);
|
||||
|
||||
len1=strlen(s1);
|
||||
for(i=0;i<len1-len2+1;i++)
|
||||
{
|
||||
if (s1[i]==s2[0])
|
||||
{
|
||||
for(j=0;j<len2;j++)
|
||||
{
|
||||
if (s1[i+j]!=s2[j]) break;
|
||||
}
|
||||
if (j==len2) return((char*)(s1+i));
|
||||
}
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
static int strcmp(const char* string1, const char* string2)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (*string1<*string2)
|
||||
return -1;
|
||||
if (*string1>*string2)
|
||||
return 1;
|
||||
if (*string1=='\0')
|
||||
return 0;
|
||||
string1++;
|
||||
string2++;
|
||||
}
|
||||
}
|
||||
|
||||
static int strncmp(const char* string1, const char* string2, int count)
|
||||
{
|
||||
while(count>0 && *string1==*string2)
|
||||
{
|
||||
if (*string1) return 0;
|
||||
++string1;
|
||||
++string2;
|
||||
--count;
|
||||
}
|
||||
if(count) return (*string1 - *string2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sprintf(char *dest,const char *format,...)
|
||||
{
|
||||
va_list arg;
|
||||
va_start (arg, format);
|
||||
return format_print(dest,4096, format, arg);
|
||||
}
|
||||
|
||||
static int snprintf(char *dest, size_t size,const char *format,...)
|
||||
{
|
||||
va_list arg;
|
||||
va_start (arg, format);
|
||||
return format_print(dest,size, format, arg);
|
||||
}
|
||||
|
||||
static int vsnprintf(char *dest, size_t size,const char *format,va_list ap)
|
||||
{
|
||||
return format_print(dest,size, format, ap);
|
||||
}
|
||||
|
||||
|
@ -1,17 +0,0 @@
|
||||
/*
|
||||
some used types
|
||||
*/
|
||||
#define NULL (void*)0
|
||||
|
||||
typedef unsigned int DWORD;
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned short int WORD;
|
||||
typedef unsigned int size_t;
|
||||
|
||||
|
||||
//#define stdcall __attribute__((stdcall))
|
||||
//#define cdecl __attribute__((cdecl))
|
||||
|
||||
//for win compilers
|
||||
#define stdcall __stdcall
|
||||
#define cdecl __cdecl
|
@ -1,70 +0,0 @@
|
||||
/*
|
||||
test libGUI library
|
||||
*/
|
||||
#include "stdarg.h"
|
||||
#include "libGUI.h"
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "string.h"
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
void callback_func_delete_window(header_t *control,void *data)
|
||||
{
|
||||
QuitLibGUI((parent_t*)control);
|
||||
}
|
||||
|
||||
void callback_func1(header_t *control,void *data)
|
||||
{
|
||||
printf("\nentry in button");
|
||||
}
|
||||
|
||||
void callback_func2(header_t *control,void *data)
|
||||
{
|
||||
printf("\nbutton pressed");
|
||||
}
|
||||
|
||||
void callback_func3(header_t *control,void *data)
|
||||
{
|
||||
printf("\nbutton released");
|
||||
}
|
||||
|
||||
void callback_func4(header_t *control,void *data)
|
||||
{
|
||||
printf("\nleave button");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
parent_t *window;
|
||||
gui_callback_t *id1,*id2,*id3,*id4;
|
||||
gui_button_data_t button_data;
|
||||
gui_button_t *button;
|
||||
|
||||
//load libGUI library
|
||||
LoadLibGUI(NULL);
|
||||
|
||||
//create main window
|
||||
window=CreateWindow();
|
||||
SetWindowSizeRequest(window,90,60);
|
||||
//create button
|
||||
button_data.x=5;
|
||||
button_data.y=5;
|
||||
button_data.width=70;
|
||||
button_data.height=20;
|
||||
//create button with text
|
||||
button=CreateButtonWithText(&button_data,"Click my!");
|
||||
//set callback functions for button close window
|
||||
SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL);
|
||||
|
||||
//set callback functions for button
|
||||
id1=SetCallbackFunction(button,BUTTON_ENTER_EVENT,&callback_func1,NULL);
|
||||
id2=SetCallbackFunction(button,BUTTON_PRESSED_EVENT,&callback_func2,NULL);
|
||||
id3=SetCallbackFunction(button,BUTTON_RELEASED_EVENT,&callback_func3,NULL);
|
||||
id4=SetCallbackFunction(button,BUTTON_LEAVE_EVENT,&callback_func4,NULL);
|
||||
//pack button in window
|
||||
PackControls(window,button);
|
||||
//start main libGUI loop
|
||||
LibGUImain(window);
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
/*
|
||||
test libGUI library
|
||||
*/
|
||||
#include "stdarg.h"
|
||||
#include "libGUI.h"
|
||||
#include "stdlib.h"
|
||||
#include "stdio.h"
|
||||
|
||||
void callback_func_delete_window(header_t *control,void *data)
|
||||
{
|
||||
QuitLibGUI((parent_t*)control);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
parent_t *window;
|
||||
gui_image_data_t imdata;
|
||||
gui_image_t *image;
|
||||
int i,j;
|
||||
unsigned int *img;
|
||||
|
||||
//load libGUI library
|
||||
LoadLibGUI(NULL);//use default system path to library
|
||||
//create main window
|
||||
window=CreateWindow();
|
||||
//change window size
|
||||
SetWindowSizeRequest(window,220,142);
|
||||
//set callback function for close window button
|
||||
SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL);
|
||||
//create image
|
||||
imdata.x=5;
|
||||
imdata.y=5;
|
||||
imdata.width=200;
|
||||
imdata.height=100;
|
||||
imdata.bits_per_pixel=32;//bits per pixel
|
||||
|
||||
image=CreateImage(&imdata);
|
||||
img=(unsigned int*)image->img;
|
||||
//generate 32 bits image
|
||||
for(i=0;i<GetControlSizeY(image);i++)
|
||||
{
|
||||
for(j=0;j<GetControlSizeX(image);j++)
|
||||
{
|
||||
*img=100*(i*i+j*j-i*3+2*j);
|
||||
img++;
|
||||
}
|
||||
}
|
||||
//pack image in window
|
||||
PackControls(window,image);
|
||||
//start main libGUI loop
|
||||
LibGUImain(window);
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
/*
|
||||
test libGUI library
|
||||
*/
|
||||
#include "stdarg.h"
|
||||
#include "libGUI.h"
|
||||
#include "string.h"
|
||||
|
||||
|
||||
void callback_func_delete_window(header_t *control,void *data)
|
||||
{
|
||||
QuitLibGUI((parent_t*)control);
|
||||
}
|
||||
|
||||
void ProgressBarCallback(void *data)
|
||||
{
|
||||
gui_progress_bar_t *progress_bar;
|
||||
int progress;
|
||||
static char txt[16];
|
||||
|
||||
progress_bar=(gui_progress_bar_t*)data;
|
||||
progress_bar->progress+=0.01;//incrase progress
|
||||
|
||||
if (progress_bar->progress>1.0) progress_bar->progress=0.0;
|
||||
|
||||
//calculate progress level in %
|
||||
progress=progress_bar->progress*100;
|
||||
snprintf(txt,16,"progress %d%%",progress);
|
||||
//set text for progress bar
|
||||
ProgressBarSetText(progress_bar,txt);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
parent_t *window;
|
||||
gui_progress_bar_data_t progress_bar_data;
|
||||
gui_progress_bar_t *progress_bar;
|
||||
gui_timer_t *timer;
|
||||
|
||||
//load libGUI library
|
||||
LoadLibGUI(NULL);//use default system path to library
|
||||
//create main window
|
||||
window=CreateWindow();
|
||||
//change size of main window
|
||||
SetWindowSizeRequest(window,320,57);
|
||||
//set callback function for button close window
|
||||
SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL);
|
||||
//create progress bar
|
||||
progress_bar_data.x=5;
|
||||
progress_bar_data.y=5;
|
||||
progress_bar_data.width=300;
|
||||
progress_bar_data.height=25;
|
||||
progress_bar_data.progress=0.0;
|
||||
progress_bar=CreateProgressBar(&progress_bar_data);
|
||||
|
||||
//create timer for update progress level each 50 millisecunds
|
||||
timer=SetTimerCallbackForFunction(window,5,&ProgressBarCallback,progress_bar);
|
||||
|
||||
//pack progress bar in window
|
||||
PackControls(window,progress_bar);
|
||||
|
||||
//update progress bar automatically each 50 millisecund
|
||||
SetProgressBarPulse(progress_bar,5);
|
||||
|
||||
//call main libGUI loop
|
||||
LibGUImain(window);
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
/*
|
||||
test libGUI library
|
||||
*/
|
||||
#include "stdarg.h"
|
||||
#include "libGUI.h"
|
||||
#include "stdio.h"
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
void callback_func_delete_window(header_t *control,void *data)
|
||||
{
|
||||
printf("\nlibGUI quit...");
|
||||
QuitLibGUI((parent_t*)control);
|
||||
}
|
||||
|
||||
void ScrollStateH(header_t *control,void *data)
|
||||
{
|
||||
gui_scroll_bar_t *hsc;
|
||||
|
||||
hsc=(gui_scroll_bar_t*)control;
|
||||
printf("\nhorizontal ruler position %d%%",(int)(hsc->ruller_pos*100));
|
||||
}
|
||||
|
||||
void ScrollStateV(header_t *control,void *data)
|
||||
{
|
||||
gui_scroll_bar_t *vsc;
|
||||
|
||||
vsc=(gui_scroll_bar_t*)control;
|
||||
printf("\nvertical ruler position %d%%",(int)(vsc->ruller_pos*100));
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
parent_t *window;
|
||||
gui_callback_t *id1,*id2;
|
||||
gui_scroll_bar_data_t horizontal_sbar_data;
|
||||
gui_scroll_bar_data_t vertical_sbar_data;
|
||||
gui_scroll_bar_t *ScrollBarH;
|
||||
gui_scroll_bar_t *ScrollBarV;
|
||||
|
||||
//load libGUI library
|
||||
LoadLibGUI(NULL);//use default system path to library
|
||||
//create main window
|
||||
window=CreateWindow();
|
||||
//change size of window
|
||||
SetWindowSizeRequest(window,270,207);
|
||||
//create horizontal scroll bar
|
||||
horizontal_sbar_data.x=5;
|
||||
horizontal_sbar_data.y=5;
|
||||
horizontal_sbar_data.width=250;
|
||||
horizontal_sbar_data.height=16;
|
||||
horizontal_sbar_data.ruller_size=0.2;//size of ruler E [0,1]
|
||||
horizontal_sbar_data.ruller_pos=0.5;//ruler position E [0,1]
|
||||
horizontal_sbar_data.ruller_step=0.1;//step of change ruler pos after press of button E [0,1]
|
||||
//create vertical scroll bar
|
||||
vertical_sbar_data.x=5;
|
||||
vertical_sbar_data.y=26;
|
||||
vertical_sbar_data.width=16;
|
||||
vertical_sbar_data.height=150;
|
||||
vertical_sbar_data.ruller_size=0.5;//size of ruler E [0,1]
|
||||
vertical_sbar_data.ruller_pos=0.05;//ruler position E [0,1]
|
||||
vertical_sbar_data.ruller_step=0.1;//step of change ruler pos after press of button E [0,1]
|
||||
|
||||
//create horizontal and vertical scroll bars
|
||||
ScrollBarH=CreateHorizontalScrollBar(&horizontal_sbar_data);
|
||||
ScrollBarV=CreateVerticalScrollBar(&vertical_sbar_data);
|
||||
//set callback functions for scroll bars
|
||||
id1=SetCallbackFunction(ScrollBarH,SCROLLBAR_CHANGED_EVENT,&ScrollStateH,NULL);
|
||||
id2=SetCallbackFunction(ScrollBarV,SCROLLBAR_CHANGED_EVENT,&ScrollStateV,NULL);
|
||||
//pack scroll bars in window
|
||||
PackControls(window,ScrollBarH);
|
||||
PackControls(window,ScrollBarV);
|
||||
//start minl libGUI loop
|
||||
LibGUImain(window);
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
/*
|
||||
test libGUI library
|
||||
*/
|
||||
#include "stdarg.h"
|
||||
#include "libGUI.h"
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "string.h"
|
||||
|
||||
void callback_func_delete_window(header_t *control,void *data)
|
||||
{
|
||||
QuitLibGUI((parent_t*)control);
|
||||
}
|
||||
|
||||
void callback_func(header_t *control,void *data)
|
||||
{
|
||||
printf("\npressed button with ID=%d control=%d",(int)control->ctrl_ID,(int)control);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
parent_t *window;
|
||||
gui_button_data_t button_data;
|
||||
gui_button_t *button;
|
||||
gui_scrolled_window_data_t scroll_win_data;
|
||||
gui_scrolled_window_t *ScrollWin;
|
||||
int i,j;
|
||||
static char txt[20];
|
||||
|
||||
//load libGUI library
|
||||
LoadLibGUI(NULL);
|
||||
//create main window
|
||||
window=CreateWindow();
|
||||
//change size of window
|
||||
SetWindowSizeRequest(window,270,282);
|
||||
|
||||
//create scrolled window
|
||||
scroll_win_data.x=5;
|
||||
scroll_win_data.y=5;
|
||||
scroll_win_data.width=250;
|
||||
scroll_win_data.height=250;
|
||||
ScrollWin=CreateScrolledWindow(&scroll_win_data);
|
||||
|
||||
//create buttons
|
||||
for(j=1;j<=10;j++)
|
||||
{
|
||||
for(i=1;i<=10;i++)
|
||||
{
|
||||
button_data.x=10+(i-1)*75;
|
||||
button_data.y=10+(j-1)*25;
|
||||
button_data.width=70;
|
||||
button_data.height=20;
|
||||
|
||||
snprintf(txt,20,"(%d,%d)",j,i);
|
||||
button=CreateButtonWithText(&button_data,txt);
|
||||
|
||||
SetCallbackFunction(button,BUTTON_PRESSED_EVENT,&callback_func,NULL);
|
||||
ScrolledWindowPackControls(ScrollWin,button);
|
||||
}
|
||||
}
|
||||
//set callback function for button close window
|
||||
SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL);
|
||||
//pack scrolled window in window
|
||||
PackControls(window,ScrollWin);
|
||||
//start main libGUI loop
|
||||
LibGUImain(window);
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
/*
|
||||
hello world example
|
||||
*/
|
||||
|
||||
#include "libGUI.h"
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
void callback_func_delete_window(header_t *control,void *data)
|
||||
{
|
||||
QuitLibGUI((parent_t*)control);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
parent_t *window;
|
||||
gui_text_data_t txtdata;
|
||||
gui_text_t *text;
|
||||
|
||||
//load libGUI library
|
||||
LoadLibGUI(NULL);//load from default system path to library
|
||||
//create main window
|
||||
window=CreateWindow();
|
||||
//change size of window
|
||||
SetWindowSizeRequest(window,92,46);
|
||||
//set callback function for button close window
|
||||
SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL);
|
||||
//create control text
|
||||
txtdata.x=5;
|
||||
txtdata.y=5;
|
||||
txtdata.font=NULL;//use default system libGUI font
|
||||
txtdata.background=TRUE;//use background for text
|
||||
txtdata.color=0xffffff;//text color
|
||||
txtdata.background_color=0xff8000;//background color
|
||||
txtdata.text="Hello world!";
|
||||
text=CreateText(&txtdata);
|
||||
|
||||
//pack control text in window
|
||||
PackControls(window,text);
|
||||
|
||||
//start libGUI main loop
|
||||
LibGUImain(window);
|
||||
}
|
||||
|
@ -1,2 +0,0 @@
|
||||
C file compile by GCC.
|
||||
asm file compile by FASM
|
@ -1,73 +0,0 @@
|
||||
format ELF
|
||||
include 'proc32.inc'
|
||||
section '.text' executable
|
||||
|
||||
public _ksys_cofflib_load
|
||||
public _ksys_cofflib_getproc
|
||||
|
||||
proc _ksys_cofflib_load stdcall, name:dword
|
||||
|
||||
mov eax, 68
|
||||
mov ebx, 19
|
||||
mov ecx, [name]
|
||||
int 0x40
|
||||
ret
|
||||
endp
|
||||
|
||||
proc _ksys_cofflib_getproc stdcall, export:dword,name:dword
|
||||
|
||||
mov ebx,[export]
|
||||
|
||||
next_name_check:
|
||||
|
||||
mov ecx,[ebx]
|
||||
test ecx,ecx
|
||||
jz end_export
|
||||
|
||||
;cmp export string with name
|
||||
mov esi,[name]
|
||||
xor edi,edi
|
||||
next_simbol_check:
|
||||
|
||||
xor eax,eax
|
||||
mov al,[ecx]
|
||||
test al,al
|
||||
jz exit_check_simbol
|
||||
|
||||
xor edx,edx
|
||||
mov dl,[esi]
|
||||
cmp al,dl
|
||||
je simbols_equvalent
|
||||
add edi,1
|
||||
jmp exit_check_simbol
|
||||
simbols_equvalent:
|
||||
|
||||
;pushad
|
||||
|
||||
;mov cl,al
|
||||
;mov ebx,1
|
||||
;mov eax,63
|
||||
;int 0x40
|
||||
|
||||
;popad
|
||||
|
||||
add ecx,1
|
||||
add esi,1
|
||||
jmp next_simbol_check
|
||||
exit_check_simbol:
|
||||
|
||||
test edi,edi
|
||||
jnz function_not_finded
|
||||
mov eax,[ebx+4]
|
||||
jmp end_export
|
||||
function_not_finded:
|
||||
|
||||
add ebx,8
|
||||
|
||||
jmp next_name_check
|
||||
|
||||
end_export:
|
||||
|
||||
ret
|
||||
endp
|
||||
|
@ -1,195 +0,0 @@
|
||||
#ifndef kolibrisys_h
|
||||
#define kolibrisys_h
|
||||
/*
|
||||
#ifdef GNUC
|
||||
#define stdcall __stdcall
|
||||
#define cdecl __cdecl
|
||||
#else
|
||||
#define stdcall ((__stdcall))
|
||||
#define cdecl ((__cdecl))
|
||||
#endif
|
||||
*/
|
||||
//#ifdef GNUC
|
||||
//#define stdcall __stdcall
|
||||
//#else
|
||||
#define cdecl __attribute__ ((cdecl))
|
||||
#define stdcall __attribute__ ((stdcall))
|
||||
//#endif
|
||||
|
||||
typedef unsigned int dword;
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short word;
|
||||
|
||||
typedef unsigned int fpos_t;
|
||||
typedef unsigned int size_t;
|
||||
|
||||
typedef struct process_table_entry{
|
||||
int cpu_usage; //+0
|
||||
int window_pos_info; //+4
|
||||
short int reserved1; //+8
|
||||
char name[12]; //+10
|
||||
int memstart; //+22
|
||||
int memused; //+26
|
||||
int pid; //+30
|
||||
int winx_start; //+34
|
||||
int winy_start; //+38
|
||||
int winx_size; //+42
|
||||
int winy_size; //+46
|
||||
short int slot_info; //+50
|
||||
short int reserved2; //+52
|
||||
int clientx; //+54
|
||||
int clienty; //+58
|
||||
int clientwidth; //+62
|
||||
int clientheight; //+66
|
||||
unsigned char window_state;//+70
|
||||
char reserved3[1024-71]; //+71
|
||||
}__attribute__((packed));
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
//------------------------KolibriOS system acces to files----------------------------
|
||||
//-----------------------------------------------------------------------------------
|
||||
extern dword stdcall _ksys_get_filesize(char *filename);
|
||||
extern dword stdcall _ksys_readfile(char *filename,dword pos,dword blocksize,void *data);
|
||||
extern dword stdcall _ksys_rewritefile(char *filename,dword blocksize,void *data);
|
||||
extern dword stdcall _ksys_appendtofile(char *filename,dword pos,dword blocksize,void *data);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//----------------------Run program---------------------------------------------------
|
||||
extern void stdcall _ksys_run_program(char* filename,char* parameters);
|
||||
//------------------------------------------------------------------------------------
|
||||
|
||||
//--------------------Debug output---------------------------------------------------
|
||||
extern void stdcall _ksys_debug_out(int c);
|
||||
extern void stdcall debug_out_str(char* str);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------Mouse state----------------------------------------------
|
||||
extern int stdcall _ksys_GetMouseXY(void);
|
||||
extern int stdcall _ksys_GetMouseButtonsState(void);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------get skin height------------------------------------------
|
||||
extern int stdcall _ksys_get_skin_height(void);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//----------------------------background---------------------------------------------
|
||||
extern void stdcall _ksys_set_background_size(int xsize,int ysize);
|
||||
extern void stdcall _ksys_write_background_mem(int pos,int color);
|
||||
extern void stdcall _ksys_draw_background(void);
|
||||
extern void stdcall _ksys_set_background_draw_type(int type);
|
||||
extern void stdcall _ksys_background_blockmove(void* src,int bgr_pos, int count);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//----------------------------functionf for draw window,lines.bar,etc.---------------
|
||||
extern void stdcall _ksys_draw_window(int xcoord,int ycoord, int xsize,
|
||||
int ysize,int workcolor,int type,
|
||||
int captioncolor,int windowtype,int bordercolor);
|
||||
extern void stdcall _ksys_window_redraw(int status);
|
||||
extern int stdcall _ksys_putpixel(int x,int y,int color);
|
||||
extern void stdcall _ksys_draw_bar(int x, int y, int xsize, int ysize, int color);
|
||||
extern void stdcall _ksys_line(int x1,int y1,int x2,int y2,int color);
|
||||
extern void stdcall _ksys_putimage(int x, int y, int xsize, int ysize, void* image);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------write text(system fonts 6x9)-----------------------------
|
||||
extern void stdcall _ksys_write_text(int x,int y,int color,char* text,int len);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//------------------ get screen size and bytes per pixel---------------------------
|
||||
extern int stdcall _ksys_get_screen_size(int* x,int* y);
|
||||
extern void stdcall _ksys_dga_get_resolution(int* xres, int* yres, int* bpp, int* bpscan);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//-------------------------------craete thread---------------------------------------
|
||||
extern void* stdcall _ksys_start_thread(void (* func_ptr)(void),int stack_size,int* pid);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//------------------system button(Old function. Better use libGUI functions.)--------
|
||||
extern void stdcall _ksys_make_button(int x, int y, int xsize, int ysize, int id, int color);
|
||||
extern int stdcall _ksys_get_button_id(void); //get state of system button
|
||||
//------------------------------------------------------------------------------------
|
||||
|
||||
//----------------------system clock(in 1/100 sec.) and date--------------------------
|
||||
extern int stdcall _ksys_get_system_clock(void);
|
||||
extern int stdcall _ksys_get_date(void);
|
||||
//------------------------------------------------------------------------------------
|
||||
|
||||
//-------------------------system delay(in 1/100 sec.)-------------------------------
|
||||
extern void stdcall _ksys_delay(int m);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//------------------------system events----------------------------------------------
|
||||
extern int stdcall _ksys_wait_for_event_infinite(void);
|
||||
extern int stdcall _ksys_check_for_event(void);
|
||||
extern int stdcall _ksys_wait_for_event(int time);
|
||||
extern void stdcall _ksys_set_wanted_events(int ev);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//----------------------------system exit program------------------------------------
|
||||
extern void stdcall _ksys_exit(void);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------system IPC send message-------------------------------
|
||||
extern void stdcall _ksys_send_message(int pid, void* msg, int size);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//---------------------------system work with IRQ from user mode---------------------
|
||||
extern void stdcall _ksys_define_receive_area(void* area, int size);
|
||||
extern int stdcall _ksys_get_irq_owner(int irq);
|
||||
extern int stdcall _ksys_get_data_read_by_irq(int irq, int* size, void* data);
|
||||
extern int stdcall _ksys_send_data_to_device(int port, unsigned char val);
|
||||
extern int stdcall _ksys_receive_data_from_device(int port,unsigned char* data);
|
||||
extern void stdcall _ksys_program_irq(void* intrtable, int irq);
|
||||
extern void stdcall _ksys_reserve_irq(int irq);
|
||||
extern void stdcall _ksys_free_irq(int irq);
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
//----------------------------system reserve diapason of ports----------------------
|
||||
extern int stdcall _ksys_reserve_port_area(int start,int end);
|
||||
extern int stdcall _ksys_free_port_area(int start,int end);
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
//-------------functions get key and set keyboard mode------------------------------
|
||||
extern int stdcall _ksys_get_key(void);
|
||||
extern void stdcall _ksys_set_keyboard_mode(int mode);
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
//--------------simple work with MPU401 sound device---------------------------------
|
||||
extern void stdcall _ksys_midi_reset(void);
|
||||
extern void stdcall _ksys_midi_send(int data);
|
||||
//-----------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------acces to PCI BUS from user mode---------------------------
|
||||
extern int stdcall _ksys_get_pci_version(void);
|
||||
extern int stdcall _ksys_get_last_pci_bus(void);
|
||||
extern int stdcall _ksys_get_pci_access_mechanism(void);
|
||||
extern int stdcall _ksys_pci_read_config_byte(int bus,int dev,int fn,int reg);
|
||||
extern int stdcall _ksys_pci_read_config_word(int bus,int dev,int fn,int reg);
|
||||
extern int stdcall _ksys_pci_read_config_dword(int bus,int dev,int fn,int reg);
|
||||
extern int stdcall _ksys_pci_write_config_byte(int bus,int dev,int fn,int reg,int value);
|
||||
extern int stdcall _ksys_pci_write_config_word(int bus,int dev,int fn,int reg,int value);
|
||||
extern int stdcall _ksys_pci_write_config_value(int bus,int dev,int fn,int reg,int value);
|
||||
//--------------------------------------------------------------------------------------
|
||||
|
||||
//------------------------Process information--------------------------------------
|
||||
extern int stdcall _ksys_get_process_table(struct process_table_entry *proctab,int pid); //if pid=-1 than get info about him.
|
||||
//---------------------------------------------------------------------------------
|
||||
|
||||
//-----------------Old functions for work with sound(Sound Blaster only).---------
|
||||
extern void stdcall _ksys_sound_load_block(void* blockptr);
|
||||
extern void stdcall _ksys_sound_play_block(void);
|
||||
extern void stdcall _ksys_sound_set_channels(int channels);
|
||||
extern void stdcall _ksys_sound_set_data_size(int size);
|
||||
extern void stdcall _ksys_sound_set_frequency(int frequency);
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------system speaker(integrated speaker)----------------
|
||||
extern void stdcall _ksys_sound_speaker_play(void* data);
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
//------------------function for work with Dinamic Link Librarys(DLL)--------------
|
||||
extern dword* stdcall _ksys_cofflib_load(char* name);
|
||||
extern char* stdcall _ksys_cofflib_getproc(void* exp,char* sz_name);
|
||||
//---------------------------------------------------------------------------------
|
||||
|
||||
#endif
|
@ -1,69 +0,0 @@
|
||||
|
||||
#include "kolibrisys.h"
|
||||
#include "libGUI.h"
|
||||
|
||||
char* sys_libGUI_path="/sys/lib/libGUI.obj";
|
||||
|
||||
void link_libGUI(char *exp){
|
||||
|
||||
char name_DestroyControl[]={"DestroyControl"};
|
||||
char name_SendMessage[]={"SendMessage"};
|
||||
char name_Version[]={"Version"};
|
||||
char name_ResizeComponent[]={"ResizeComponent"};
|
||||
char name_MoveComponent[]={"MoveComponent"};
|
||||
char name_ActivateTrapForSpecializedMessage[]={"ActivateTrapForSpecializedMessage"};
|
||||
char name_CraeteButton[]={"CraeteButton"};
|
||||
char name_CraeteScroller[]={"CraeteScroller"};
|
||||
char name_CraeteBookmark[]={"CraeteBookmark"};
|
||||
char name_CraeteImage[]={"CraeteImage"};
|
||||
char name_CraeteText[]={"CraeteText"};
|
||||
char name_CraeteNumber[]={"CraeteNumber"};
|
||||
char name_CraeteCheckbox[]={"CraeteCheckbox"};
|
||||
char name_CraeteEditbox[]={"CraeteEditbox"};
|
||||
char name_CraeteProgressbar[]={"CraeteProgressbar"};
|
||||
|
||||
DestroyControl=(void stdcall (*)(void *control))
|
||||
_ksys_cofflib_getproc(exp,name_DestroyControl);
|
||||
SendMessage=(void stdcall (*)(struct HEADER *Parend,struct MESSAGE *Message))
|
||||
_ksys_cofflib_getproc(exp,name_SendMessage);
|
||||
Version=(int stdcall (*)(void))
|
||||
_ksys_cofflib_getproc(exp,name_Version);
|
||||
ResizeComponent=(void stdcall(*)(void *Control,int new_sizex,int new_sizey))
|
||||
_ksys_cofflib_getproc(exp,name_ResizeComponent);
|
||||
MoveComponent=(void stdcall(*)(void *Control,int new_x,int new_y))
|
||||
_ksys_cofflib_getproc(exp,name_MoveComponent);
|
||||
ActivateTrapForSpecializedMessage=(void stdcall(*)(void *Control,int new_x,int new_y))
|
||||
_ksys_cofflib_getproc(exp,name_ActivateTrapForSpecializedMessage);
|
||||
CraeteButton=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteButton);
|
||||
CraeteScroller=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteScroller);
|
||||
CraeteBookmark=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteBookmark);
|
||||
CraeteImage=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteImage);
|
||||
CraeteText=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteText);
|
||||
CraeteNumber=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteNumber);
|
||||
CraeteCheckbox=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteCheckbox);
|
||||
CraeteEditbox=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteEditbox);
|
||||
CraeteProgressbar=(void* stdcall (*)(struct HEADER *Parend,void *Control))
|
||||
_ksys_cofflib_getproc(exp,name_CraeteProgressbar);
|
||||
|
||||
}
|
||||
|
||||
int Init_libGUI(void)
|
||||
{
|
||||
char *Export;
|
||||
|
||||
Export=(char *)_ksys_cofflib_load(sys_libGUI_path);
|
||||
if (Export==0) return CANNOT_LOAD_LIBGUI;
|
||||
|
||||
link_libGUI(Export);
|
||||
return(0);
|
||||
|
||||
}
|
||||
|
@ -1,369 +0,0 @@
|
||||
/*
|
||||
structures for work with libGUI
|
||||
*/
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
#define CANNOT_LOAD_LIBGUI 100
|
||||
#define PAREND_SIZE 44
|
||||
#define MESSAGE_SIZE 16
|
||||
|
||||
#define MESSAGE_FULL_REDRAW_ALL 1
|
||||
#define MESSAGE_KEYS_EVENTS 2
|
||||
#define MESSAGE_SPECIALIZED 3
|
||||
#define MESSAGE_MOUSE_EVENTS 6
|
||||
|
||||
#define BUTTON_TYPE_2D_WITH_TEXT (1+128)
|
||||
#define BUTTON_TYPE_2D_WITH_PICTURE (2+128)
|
||||
#define BUTTON_TYPE_2D_WITH_TEXT_PICTURE (4+128)
|
||||
#define BUTTON_TYPE_NO_DRAW (8+128)
|
||||
#define BUTTON_TYPE_3D_WITH_TEXT (1+16+128)
|
||||
#define BUTTON_TYPE_3D_WITH_PICTURE (2+16+128)
|
||||
#define BUTTON_TYPE_3D_WITH_TEXT_PICTURE (4+16+128)
|
||||
|
||||
#define TEXT_TYPE_NO_DRAW (1)
|
||||
#define TEXT_TYPE_WITH_BACKGROUND (128+2)
|
||||
#define TEXT_TYPE_SYSTEM_6X9 (128)
|
||||
|
||||
#define NUMBER_NO_DRAW (1)
|
||||
#define NUMBER_INTEGER (128)
|
||||
#define NUMBER_FLOAT (128+2)
|
||||
|
||||
#define IMAGE_TYPE_1 (128)
|
||||
|
||||
#define PROGRESS_BAR_TYPE_1 (128)
|
||||
|
||||
#define BOOKMARK_TYPE_1 (128)
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
#define BUTTON_STATE_CROSS (1)
|
||||
#define BUTTON_STATE_CROSS_PRESS (3)
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// header of control
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct HEADER
|
||||
{
|
||||
dword ctrl_proc;
|
||||
dword *ctrl_fd;
|
||||
dword *ctrl_bk;
|
||||
dword *child_fd;
|
||||
dword *child_bk;
|
||||
dword *parend;
|
||||
dword ctrl_x;
|
||||
dword ctrl_y;
|
||||
dword ctrl_sizex;
|
||||
dword ctrl_sizey;
|
||||
dword ctrl_ID;
|
||||
|
||||
}__attribute__((packed));
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// message
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct MESSAGE
|
||||
{
|
||||
dword type;
|
||||
dword arg1;
|
||||
dword arg2;
|
||||
dword arg3;
|
||||
}__attribute__((packed));
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// button
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct ControlButton
|
||||
{
|
||||
dword ctrl_proc;
|
||||
dword *ctrl_fd;
|
||||
dword *ctrl_bk;
|
||||
dword *child_fd;
|
||||
dword *child_bk;
|
||||
dword *parend;
|
||||
dword ctrl_x;
|
||||
dword ctrl_y;
|
||||
dword ctrl_sizex;
|
||||
dword ctrl_sizey;
|
||||
dword ctrl_ID;
|
||||
|
||||
byte type;
|
||||
byte flag;
|
||||
word x;
|
||||
word y;
|
||||
word width;
|
||||
word height;
|
||||
dword image;
|
||||
word imageX;
|
||||
word imageY;
|
||||
word imageSizeX;
|
||||
word imageSizeY;
|
||||
dword transparentColor;
|
||||
dword text;
|
||||
word textX;
|
||||
word textY;
|
||||
dword textcolor;
|
||||
dword color1;
|
||||
dword color2;
|
||||
word mouseX;
|
||||
word mouseY;
|
||||
}__attribute__((packed));
|
||||
|
||||
typedef struct InfoForButton
|
||||
{
|
||||
byte type; //0
|
||||
byte flag; //1
|
||||
word x; //2
|
||||
word y; //4
|
||||
word width; //6
|
||||
word height; //8
|
||||
dword image; //10
|
||||
word imageX; //14
|
||||
word imageY; //16
|
||||
word imageSizeX; //18
|
||||
word imageSizeY; //20
|
||||
dword transparentColor;//24
|
||||
dword text; //28
|
||||
word textX; //32
|
||||
word textY; //34
|
||||
dword textcolor; //36
|
||||
dword color1; //40
|
||||
dword color2;
|
||||
word mouseX;
|
||||
word mouseY;
|
||||
}__attribute__((packed));
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// scroller
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct ControlScroller
|
||||
{
|
||||
dword ctrl_proc;
|
||||
dword *ctrl_fd;
|
||||
dword *ctrl_bk;
|
||||
dword *child_fd;
|
||||
dword *child_bk;
|
||||
dword *parend;
|
||||
dword ctrl_x;
|
||||
dword ctrl_y;
|
||||
dword ctrl_sizex;
|
||||
dword ctrl_sizey;
|
||||
dword ctrl_ID;
|
||||
|
||||
byte type;
|
||||
word x;
|
||||
word y;
|
||||
word length;
|
||||
dword color1;
|
||||
float size;
|
||||
float pos;
|
||||
word buttons_flags;
|
||||
dword ChildButton1;
|
||||
dword ChildButton2;
|
||||
word MouseX;
|
||||
word MouseY;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct InfoForScroller
|
||||
{
|
||||
byte type;
|
||||
word x;
|
||||
word y;
|
||||
word length;
|
||||
dword color1;
|
||||
float size;
|
||||
float pos;
|
||||
word buttons_flags;
|
||||
dword ChildButton1;
|
||||
dword ChildButton2;
|
||||
word MouseX;
|
||||
word MouseY;
|
||||
}__attribute__((packed));
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// progressbar
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct ControlProgressbar
|
||||
{
|
||||
dword ctrl_proc;
|
||||
dword *ctrl_fd;
|
||||
dword *ctrl_bk;
|
||||
dword *child_fd;
|
||||
dword *child_bk;
|
||||
dword *parend;
|
||||
dword ctrl_x;
|
||||
dword ctrl_y;
|
||||
dword ctrl_sizex;
|
||||
dword ctrl_sizey;
|
||||
dword ctrl_ID;
|
||||
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword color2;
|
||||
dword x;
|
||||
dword y;
|
||||
dword sizex;
|
||||
dword sizey;
|
||||
float progress;
|
||||
dword color3;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct InfoForProgressbar
|
||||
{
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword color2;
|
||||
dword x;
|
||||
dword y;
|
||||
dword sizex;
|
||||
dword sizey;
|
||||
float progress;
|
||||
dword color3;
|
||||
}__attribute__((packed));
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// image
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct ControlImage
|
||||
{
|
||||
dword ctrl_proc;
|
||||
dword *ctrl_fd;
|
||||
dword *ctrl_bk;
|
||||
dword *child_fd;
|
||||
dword *child_bk;
|
||||
dword *parend;
|
||||
dword ctrl_x;
|
||||
dword ctrl_y;
|
||||
dword ctrl_sizex;
|
||||
dword ctrl_sizey;
|
||||
dword ctrl_ID;
|
||||
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword x;
|
||||
dword y;
|
||||
dword sizex;
|
||||
dword sizey;
|
||||
dword pointer;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct InfoForImage
|
||||
{
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword x;
|
||||
dword y;
|
||||
dword sizex;
|
||||
dword sizey;
|
||||
dword pointer;
|
||||
}__attribute__((packed));
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// text
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct ControlText
|
||||
{
|
||||
dword ctrl_proc;
|
||||
dword *ctrl_fd;
|
||||
dword *ctrl_bk;
|
||||
dword *child_fd;
|
||||
dword *child_bk;
|
||||
dword *parend;
|
||||
dword ctrl_x;
|
||||
dword ctrl_y;
|
||||
dword ctrl_sizex;
|
||||
dword ctrl_sizey;
|
||||
dword ctrl_ID;
|
||||
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword x;
|
||||
dword y;
|
||||
dword length;
|
||||
dword text;
|
||||
dword background_color;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct InfoForText
|
||||
{
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword x;
|
||||
dword y;
|
||||
dword length;
|
||||
dword text;
|
||||
dword background_color;
|
||||
}__attribute__((packed));
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// number
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
struct ControlNumber
|
||||
{
|
||||
dword ctrl_proc;
|
||||
dword *ctrl_fd;
|
||||
dword *ctrl_bk;
|
||||
dword *child_fd;
|
||||
dword *child_bk;
|
||||
dword *parend;
|
||||
dword ctrl_x;
|
||||
dword ctrl_y;
|
||||
dword ctrl_sizex;
|
||||
dword ctrl_sizey;
|
||||
dword ctrl_ID;
|
||||
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword x;
|
||||
dword y;
|
||||
float number;
|
||||
dword format;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct InfoForNumber
|
||||
{
|
||||
byte type;
|
||||
byte flag;
|
||||
dword color1;
|
||||
dword x;
|
||||
dword y;
|
||||
float number;
|
||||
dword format;
|
||||
}__attribute__((packed));
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// libGUI functions
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
void stdcall (*DestroyControl)(void *control);
|
||||
void stdcall (*SendMessage)(struct HEADER *Parend,struct MESSAGE *Message);
|
||||
int stdcall (*Version)(void);
|
||||
void stdcall (*ResizeComponent)(void *Control,int new_sizex,int new_sizey);
|
||||
void stdcall (*MoveComponent)(void *Control,int new_x,int new_y);
|
||||
void stdcall (*ActivateTrapForSpecializedMessage)(void *Control);
|
||||
void* stdcall (*CraeteButton)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteScroller)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteBookmark)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteImage)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteText)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteNumber)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteCheckbox)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteEditbox)(struct HEADER *Parend,void *Control);
|
||||
void* stdcall (*CraeteProgressbar)(struct HEADER *Parend,void *Control);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user