forked from KolibriOS/kolibrios
Added SDK for FASM and some assembler examples.
git-svn-id: svn://kolibrios.org@1180 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
4af4fa5809
commit
456168f5b2
115
programs/develop/libraries/libGUI/examples/src/ASM/BUTTON.ASM
Normal file
115
programs/develop/libraries/libGUI/examples/src/ASM/BUTTON.ASM
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
;Hello world example
|
||||||
|
|
||||||
|
use32
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 1
|
||||||
|
dd start
|
||||||
|
dd i_end
|
||||||
|
dd 0x1500
|
||||||
|
dd 0x1500
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
TRUE = 1
|
||||||
|
FALSE = 0
|
||||||
|
|
||||||
|
include 'libGUI.inc'
|
||||||
|
|
||||||
|
start:
|
||||||
|
;load libGUI labrari
|
||||||
|
push NULL ;use default system path to library
|
||||||
|
call LoadLibGUI
|
||||||
|
|
||||||
|
;create main window
|
||||||
|
CreateWindow
|
||||||
|
mov [window],eax
|
||||||
|
|
||||||
|
;change size of main window
|
||||||
|
SetWindowSizeRequest [window],90,60
|
||||||
|
|
||||||
|
;set callback function for button close window
|
||||||
|
SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
|
||||||
|
|
||||||
|
;create control Button with text
|
||||||
|
mov [bdata.x],5
|
||||||
|
mov [bdata.y],5
|
||||||
|
mov [bdata.wight],70
|
||||||
|
mov [bdata.height],20
|
||||||
|
CreateButtonWithText bdata,btext
|
||||||
|
mov [button],eax
|
||||||
|
|
||||||
|
;set callback functions for button
|
||||||
|
SetCallbackFunction [button],BUTTON_ENTER_EVENT,callback_func1,NULL
|
||||||
|
SetCallbackFunction [button],BUTTON_PRESSED_EVENT,callback_func2,NULL
|
||||||
|
SetCallbackFunction [button],BUTTON_RELEASED_EVENT,callback_func3,NULL
|
||||||
|
SetCallbackFunction [button],BUTTON_LEAVE_EVENT,callback_func4,NULL
|
||||||
|
|
||||||
|
;pack control Text in window
|
||||||
|
PackControls [window],[button]
|
||||||
|
|
||||||
|
;start libGUI main loop
|
||||||
|
LibGUImain [window]
|
||||||
|
|
||||||
|
|
||||||
|
;void callback_func_delete_window(header_t *control,void *data)
|
||||||
|
callback_func_delete_window:
|
||||||
|
|
||||||
|
mov eax,[esp+4] ;control
|
||||||
|
|
||||||
|
QuitLibGUI eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void callback_func1(header_t *control,void *data)
|
||||||
|
callback_func1:
|
||||||
|
;save esi befor use
|
||||||
|
push esi
|
||||||
|
mov esi,btext1
|
||||||
|
call gui_ksys_debug_out_str
|
||||||
|
pop esi
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void callback_func2(header_t *control,void *data)
|
||||||
|
callback_func2:
|
||||||
|
;save esi befor use
|
||||||
|
push esi
|
||||||
|
mov esi,btext2
|
||||||
|
call gui_ksys_debug_out_str
|
||||||
|
pop esi
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void callback_func3(header_t *control,void *data)
|
||||||
|
callback_func3:
|
||||||
|
;save esi befor use
|
||||||
|
push esi
|
||||||
|
mov esi,btext3
|
||||||
|
call gui_ksys_debug_out_str
|
||||||
|
pop esi
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void callback_func4(header_t *control,void *data)
|
||||||
|
callback_func4:
|
||||||
|
;save esi befor use
|
||||||
|
push esi
|
||||||
|
mov esi,btext4
|
||||||
|
call gui_ksys_debug_out_str
|
||||||
|
pop esi
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
|
;----------------------data--------------------
|
||||||
|
btext db 'Click Me!',0
|
||||||
|
btext1 db 13,10,'entry in button',0
|
||||||
|
btext2 db 13,10,'button pressed',0
|
||||||
|
btext3 db 13,10,'button released',0
|
||||||
|
btext4 db 13,10,'leave button',0
|
||||||
|
|
||||||
|
bdata gui_button_data_t
|
||||||
|
window rd 1;parent_t *window
|
||||||
|
button rd 1;gui_button_t *button
|
||||||
|
|
||||||
|
i_end:
|
92
programs/develop/libraries/libGUI/examples/src/ASM/IMAGE.ASM
Normal file
92
programs/develop/libraries/libGUI/examples/src/ASM/IMAGE.ASM
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
;Hello world example
|
||||||
|
|
||||||
|
use32
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 1
|
||||||
|
dd start
|
||||||
|
dd i_end
|
||||||
|
dd 0x1000
|
||||||
|
dd 0x1000
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
TRUE = 1
|
||||||
|
FALSE = 0
|
||||||
|
|
||||||
|
include 'libGUI.inc'
|
||||||
|
|
||||||
|
start:
|
||||||
|
;load libGUI labrari
|
||||||
|
push NULL ;use default system path to library
|
||||||
|
call LoadLibGUI
|
||||||
|
;create main window
|
||||||
|
CreateWindow
|
||||||
|
mov [window],eax
|
||||||
|
;change size of main window
|
||||||
|
SetWindowSizeRequest [window],220,142
|
||||||
|
;set callback function for button close window
|
||||||
|
SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
|
||||||
|
|
||||||
|
;create control Image
|
||||||
|
mov [imgdata.x],5
|
||||||
|
mov [imgdata.y],5
|
||||||
|
mov [imgdata.wight],200
|
||||||
|
mov [imgdata.height],100
|
||||||
|
mov [imgdata.bits_per_pixel],32
|
||||||
|
CreateImage imgdata
|
||||||
|
mov [image],eax
|
||||||
|
|
||||||
|
;copy data from pointer to local variable
|
||||||
|
;for access to filds of structure
|
||||||
|
mov ecx,[image]
|
||||||
|
mov eax,[ecx+HEADER_SIZE+2] ;pointer to picture
|
||||||
|
|
||||||
|
xor ecx,ecx
|
||||||
|
for_size_y:
|
||||||
|
xor edx,edx
|
||||||
|
for_size_x:
|
||||||
|
;generate color
|
||||||
|
mov ebx,edx ;i
|
||||||
|
mov esi,ecx ;j
|
||||||
|
imul ebx,ebx ;i*i
|
||||||
|
imul esi,esi ;j*j
|
||||||
|
add ebx,esi ;i*i+j*J
|
||||||
|
mov esi,edx ;i
|
||||||
|
lea esi,[esi+2*esi] ;i*3
|
||||||
|
sub ebx,esi ;i*i+j*j-i*3
|
||||||
|
mov esi,ecx ;j
|
||||||
|
shl esi,1 ;j*2
|
||||||
|
add ebx,esi ;i*i+j*j-i*3+2*j
|
||||||
|
imul ebx,100 ;100*(i*i+j*j-i*3+2*j)
|
||||||
|
|
||||||
|
mov [eax],ebx
|
||||||
|
add eax,4
|
||||||
|
inc edx
|
||||||
|
cmp edx,200
|
||||||
|
jl for_size_x
|
||||||
|
inc ecx
|
||||||
|
cmp ecx,100
|
||||||
|
jl for_size_y
|
||||||
|
|
||||||
|
;pack control Text in window
|
||||||
|
PackControls [window],[image]
|
||||||
|
|
||||||
|
;start libGUI main loop
|
||||||
|
LibGUImain [window]
|
||||||
|
|
||||||
|
|
||||||
|
;void callback_func_delete_window(header_t *control,void *data)
|
||||||
|
callback_func_delete_window:
|
||||||
|
|
||||||
|
mov eax,[esp+4] ;control
|
||||||
|
|
||||||
|
QuitLibGUI eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
align 4
|
||||||
|
;----------------data-----------------
|
||||||
|
imgdata gui_image_data_t
|
||||||
|
window rd 1;parent_t *window
|
||||||
|
image rd 1
|
||||||
|
|
||||||
|
i_end:
|
@ -0,0 +1,191 @@
|
|||||||
|
;Hello world example
|
||||||
|
|
||||||
|
use32
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 1
|
||||||
|
dd start
|
||||||
|
dd i_end
|
||||||
|
dd 0x1000
|
||||||
|
dd 0x1000
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
TRUE = 1
|
||||||
|
FALSE = 0
|
||||||
|
|
||||||
|
include 'libGUI.inc'
|
||||||
|
|
||||||
|
start:
|
||||||
|
;load libGUI labrari
|
||||||
|
push NULL ;use default system path to library
|
||||||
|
call LoadLibGUI
|
||||||
|
;create main window
|
||||||
|
CreateWindow
|
||||||
|
mov [window],eax
|
||||||
|
;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 control Text
|
||||||
|
mov [pbdata.x],5
|
||||||
|
mov [pbdata.y],5
|
||||||
|
mov [pbdata.wight],300;use default system libGUI font
|
||||||
|
mov [pbdata.height],25;use background for text
|
||||||
|
mov [pbdata.progress],dword 0.0
|
||||||
|
CreateProgressBar pbdata
|
||||||
|
mov [progress_bar],eax
|
||||||
|
|
||||||
|
;create timer for update progress level each 50 milliseconds
|
||||||
|
SetTimerCallbackForFunction [window],5,progress_bar_callback,[progress_bar]
|
||||||
|
|
||||||
|
;pack control Text in window
|
||||||
|
PackControls [window],[progress_bar]
|
||||||
|
|
||||||
|
;redraw progress bar automatically each 50 milleseconds
|
||||||
|
SetProgressBarPulse [progress_bar],5
|
||||||
|
|
||||||
|
;start libGUI main loop
|
||||||
|
LibGUImain [window]
|
||||||
|
|
||||||
|
|
||||||
|
;void progress_bar_callback(void *data)
|
||||||
|
progress_bar_callback:
|
||||||
|
|
||||||
|
mov eax,[esp+4];pointer to control progress bar
|
||||||
|
|
||||||
|
mov ecx,[eax+HEADER_SIZE];progress
|
||||||
|
mov [progress],ecx
|
||||||
|
mov [increment],dword 0.01
|
||||||
|
mov [digit],100
|
||||||
|
|
||||||
|
fld dword[increment]
|
||||||
|
fld dword[progress]
|
||||||
|
fadd st0,st1
|
||||||
|
fst dword [progress]
|
||||||
|
fild dword[digit]
|
||||||
|
fmul st0,st1
|
||||||
|
fistp dword[digit]
|
||||||
|
fstp st0 ;free progress
|
||||||
|
fstp st0 ;free increment
|
||||||
|
|
||||||
|
cmp [progress],dword 1.0
|
||||||
|
jl no_max_progress
|
||||||
|
mov [progress],dword 0.0
|
||||||
|
no_max_progress:
|
||||||
|
|
||||||
|
mov ecx,[progress]
|
||||||
|
mov [eax+HEADER_SIZE],ecx ;save new value of progress
|
||||||
|
|
||||||
|
;print progressvalue in string
|
||||||
|
push ebx ;save befor use
|
||||||
|
|
||||||
|
mov eax,txt
|
||||||
|
add eax,9
|
||||||
|
mov ebx,eax ;save eax
|
||||||
|
|
||||||
|
push eax
|
||||||
|
push [digit]
|
||||||
|
call dec_to_str
|
||||||
|
|
||||||
|
add ebx,eax
|
||||||
|
mov [ebx],byte '%'
|
||||||
|
mov [ebx+1],byte 0
|
||||||
|
|
||||||
|
pop ebx
|
||||||
|
|
||||||
|
;set text for progress bar
|
||||||
|
ProgressBarSetText [progress_bar],txt
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void callback_func_delete_window(header_t *control,void *data)
|
||||||
|
callback_func_delete_window:
|
||||||
|
|
||||||
|
mov eax,[esp+4] ;control
|
||||||
|
|
||||||
|
QuitLibGUI eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;int dectostr(int digit,char *str)
|
||||||
|
dec_to_str:
|
||||||
|
mov eax,[esp+4];digit
|
||||||
|
mov ecx,[esp+8];string
|
||||||
|
|
||||||
|
push ebx esi edi ;save befor use
|
||||||
|
|
||||||
|
cmp eax,10
|
||||||
|
jl print_digit
|
||||||
|
|
||||||
|
mov ebx,eax ;save digit
|
||||||
|
mov edi,1
|
||||||
|
mov esi,10
|
||||||
|
next_i_div:
|
||||||
|
cdq ;extend to edx:eax
|
||||||
|
idiv esi ;eax=eax/esi
|
||||||
|
test eax,eax
|
||||||
|
jz no_mul_ten
|
||||||
|
imul edi,esi ;edi=edi*10
|
||||||
|
no_mul_ten:
|
||||||
|
mov eax,edx ;eax=eax % 10
|
||||||
|
cmp eax,esi
|
||||||
|
jae next_i_div
|
||||||
|
|
||||||
|
test eax,eax
|
||||||
|
jnz no_multyple_10
|
||||||
|
;print digit in string
|
||||||
|
mov [ecx],byte '1'
|
||||||
|
inc ecx
|
||||||
|
mov eax,ebx ;eax=digit
|
||||||
|
next_i_str_:
|
||||||
|
cdq ;extend to edx:eax
|
||||||
|
idiv edi ;eax=eax/edi
|
||||||
|
|
||||||
|
mov [ecx],byte '0'
|
||||||
|
|
||||||
|
inc ecx
|
||||||
|
mov eax,edx ;eax=eax % edi
|
||||||
|
cmp eax,10
|
||||||
|
jae next_i_str_
|
||||||
|
dec ecx
|
||||||
|
jmp exit_multyple
|
||||||
|
no_multyple_10:
|
||||||
|
;print digit in string
|
||||||
|
mov eax,ebx ;eax=digit
|
||||||
|
next_i_str:
|
||||||
|
cdq ;extend to edx:eax
|
||||||
|
idiv edi ;eax=eax/edi
|
||||||
|
|
||||||
|
add al,byte '0' ;al='0'+digit
|
||||||
|
mov [ecx],byte al
|
||||||
|
|
||||||
|
inc ecx
|
||||||
|
mov eax,edx ;eax=eax % edi
|
||||||
|
cmp eax,10
|
||||||
|
jae next_i_str
|
||||||
|
print_digit:
|
||||||
|
|
||||||
|
add al,byte '0'
|
||||||
|
mov [ecx],byte al
|
||||||
|
|
||||||
|
exit_multyple:
|
||||||
|
mov eax,ecx
|
||||||
|
|
||||||
|
pop edi esi ebx
|
||||||
|
|
||||||
|
sub eax,[esp+8] ;number of printed simbols
|
||||||
|
inc eax
|
||||||
|
|
||||||
|
ret 8
|
||||||
|
|
||||||
|
align 4
|
||||||
|
;----------------data-----------------
|
||||||
|
txt db 'PROGRESS ',0,0,0,0,0,0
|
||||||
|
pbdata gui_progress_bar_data_t
|
||||||
|
window rd 1
|
||||||
|
progress_bar rd 1
|
||||||
|
progress rd 1
|
||||||
|
increment rd 1
|
||||||
|
digit rd 1
|
||||||
|
i_end:
|
@ -0,0 +1,111 @@
|
|||||||
|
;Hello world example
|
||||||
|
|
||||||
|
use32
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 1
|
||||||
|
dd start
|
||||||
|
dd i_end
|
||||||
|
dd 0x10000
|
||||||
|
dd 0x10000
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
TRUE = 1
|
||||||
|
FALSE = 0
|
||||||
|
|
||||||
|
include 'libGUI.inc'
|
||||||
|
|
||||||
|
start:
|
||||||
|
;load libGUI labrari
|
||||||
|
push NULL ;use default system path to library
|
||||||
|
call LoadLibGUI
|
||||||
|
;create main window
|
||||||
|
CreateWindow
|
||||||
|
mov [window],eax
|
||||||
|
;change size of main window
|
||||||
|
SetWindowSizeRequest [window],270,282
|
||||||
|
;set callback function for button close window
|
||||||
|
SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
|
||||||
|
|
||||||
|
;create control HorizontalScrollBar
|
||||||
|
mov [swdata.x],5
|
||||||
|
mov [swdata.y],5
|
||||||
|
mov [swdata.wight],250
|
||||||
|
mov [swdata.height],250
|
||||||
|
CreateScrolledWindow swdata
|
||||||
|
mov [scrolled_window],eax
|
||||||
|
|
||||||
|
;create buttons
|
||||||
|
mov ecx,10
|
||||||
|
next_j:
|
||||||
|
mov edx,10
|
||||||
|
next_i:
|
||||||
|
mov esi,edx ;i
|
||||||
|
mov edi,ecx ;j
|
||||||
|
dec esi ;i-1
|
||||||
|
dec edi ;j-1
|
||||||
|
imul esi,75 ;(i-1)*75
|
||||||
|
imul edi,25 ;(j-1)*25
|
||||||
|
add esi,10 ;10+(i-1)*75
|
||||||
|
add edi,10 ;10+(j-1)*25
|
||||||
|
|
||||||
|
mov [bdata.x],esi
|
||||||
|
mov [bdata.y],edi
|
||||||
|
mov [bdata.wight],70
|
||||||
|
mov [bdata.height],20
|
||||||
|
|
||||||
|
push ecx edx esi edi;save registers befor call
|
||||||
|
|
||||||
|
CreateButtonWithText bdata,btxt
|
||||||
|
mov [button],eax
|
||||||
|
|
||||||
|
;set callback functions for scroll bars
|
||||||
|
SetCallbackFunction [button],BUTTON_PRESSED_EVENT,callback_func,NULL
|
||||||
|
;pack control Button in ScrolledWindow
|
||||||
|
ScrolledWindowPackControls [scrolled_window],[button]
|
||||||
|
|
||||||
|
pop edi esi edx ecx
|
||||||
|
dec edx
|
||||||
|
jnz next_i
|
||||||
|
dec ecx
|
||||||
|
jnz next_j
|
||||||
|
|
||||||
|
;pack scrolled window in window
|
||||||
|
PackControls [window],[scrolled_window]
|
||||||
|
|
||||||
|
;start libGUI main loop
|
||||||
|
LibGUImain [window]
|
||||||
|
|
||||||
|
|
||||||
|
;void callback_func(header_t *control,void *data)
|
||||||
|
callback_func:
|
||||||
|
|
||||||
|
mov eax,[esp+4];pointer to control
|
||||||
|
|
||||||
|
push esi;save befor use
|
||||||
|
mov esi,message
|
||||||
|
call gui_ksys_debug_out_str
|
||||||
|
pop esi
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void callback_func_delete_window(header_t *control,void *data)
|
||||||
|
callback_func_delete_window:
|
||||||
|
|
||||||
|
mov eax,[esp+4] ;control
|
||||||
|
|
||||||
|
QuitLibGUI eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
align 4
|
||||||
|
;----------------data-----------------
|
||||||
|
btxt db 'button',0
|
||||||
|
message db 13,10,'pressed button',0
|
||||||
|
bdata gui_button_data_t
|
||||||
|
swdata gui_scrolled_window_data_t
|
||||||
|
|
||||||
|
window rd 1
|
||||||
|
scrolled_window rd 1
|
||||||
|
button rd 1
|
||||||
|
|
||||||
|
i_end:
|
@ -0,0 +1,110 @@
|
|||||||
|
;Hello world example
|
||||||
|
|
||||||
|
use32
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 1
|
||||||
|
dd start
|
||||||
|
dd i_end
|
||||||
|
dd 0x1000
|
||||||
|
dd 0x1000
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
TRUE = 1
|
||||||
|
FALSE = 0
|
||||||
|
|
||||||
|
include 'libGUI.inc'
|
||||||
|
|
||||||
|
start:
|
||||||
|
;load libGUI labrari
|
||||||
|
push NULL ;use default system path to library
|
||||||
|
call LoadLibGUI
|
||||||
|
;create main window
|
||||||
|
CreateWindow
|
||||||
|
mov [window],eax
|
||||||
|
;change size of main window
|
||||||
|
SetWindowSizeRequest [window],270,207
|
||||||
|
;set callback function for button close window
|
||||||
|
SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
|
||||||
|
|
||||||
|
;create control HorizontalScrollBar
|
||||||
|
mov [hsbdata.x],5
|
||||||
|
mov [hsbdata.y],5
|
||||||
|
mov [hsbdata.wight],250
|
||||||
|
mov [hsbdata.height],16
|
||||||
|
mov [hsbdata.ruller_size],dword 0.2 ;ruler size 0..1
|
||||||
|
mov [hsbdata.ruller_pos],dword 0.5 ;ruler position 0..1
|
||||||
|
mov [hsbdata.ruller_step],dword 0.1 ;ruler step 0..1
|
||||||
|
CreateHorizontalScrollBar hsbdata
|
||||||
|
mov [hscroll_bar],eax
|
||||||
|
|
||||||
|
;create control HorizontalScrollBar
|
||||||
|
mov [vsbdata.x],5
|
||||||
|
mov [vsbdata.y],26
|
||||||
|
mov [vsbdata.wight],16
|
||||||
|
mov [vsbdata.height],150
|
||||||
|
mov [vsbdata.ruller_size],dword 0.5 ;ruler size 0..1
|
||||||
|
mov [vsbdata.ruller_pos],dword 0.05 ;ruler position 0..1
|
||||||
|
mov [vsbdata.ruller_step],dword 0.1 ;ruler step 0..1
|
||||||
|
CreateVerticalScrollBar vsbdata
|
||||||
|
mov [vscroll_bar],eax
|
||||||
|
|
||||||
|
;set callback functions for scroll bars
|
||||||
|
SetCallbackFunction [hscroll_bar],SCROLLBAR_CHANGED_EVENT,hscroll_bar_callback,NULL
|
||||||
|
SetCallbackFunction [vscroll_bar],SCROLLBAR_CHANGED_EVENT,vscroll_bar_callback,NULL
|
||||||
|
|
||||||
|
;pack controls in window
|
||||||
|
PackControls [window],[hscroll_bar]
|
||||||
|
PackControls [window],[vscroll_bar]
|
||||||
|
|
||||||
|
;start libGUI main loop
|
||||||
|
LibGUImain [window]
|
||||||
|
|
||||||
|
|
||||||
|
;void hscroll_bar_callback(header_ *control,void *data)
|
||||||
|
hscroll_bar_callback:
|
||||||
|
|
||||||
|
mov eax,[esp+4];pointer to control scroll bar
|
||||||
|
|
||||||
|
push ebx
|
||||||
|
mov ebx,[eax+HEADER_SIZE];size of ruler
|
||||||
|
mov ecx,[eax+HEADER_SIZE+4];position of ruler
|
||||||
|
mov edx,[eax+HEADER_SIZE+8];step change position of ruler by press
|
||||||
|
;buttons of scroll bar
|
||||||
|
pop ebx
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void hscroll_bar_callback(header_ *control,void *data)
|
||||||
|
vscroll_bar_callback:
|
||||||
|
|
||||||
|
mov eax,[esp+4];pointer to control scroll bar
|
||||||
|
|
||||||
|
push ebx ;save befor use
|
||||||
|
|
||||||
|
mov ebx,[eax+HEADER_SIZE];size of ruler
|
||||||
|
mov ecx,[eax+HEADER_SIZE+4];position of ruler
|
||||||
|
mov edx,[eax+HEADER_SIZE+8];step change position of ruler by press
|
||||||
|
;buttons of scroll bar
|
||||||
|
pop ebx
|
||||||
|
ret
|
||||||
|
|
||||||
|
;void callback_func_delete_window(header_t *control,void *data)
|
||||||
|
callback_func_delete_window:
|
||||||
|
|
||||||
|
mov eax,[esp+4] ;control
|
||||||
|
|
||||||
|
QuitLibGUI eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
|
;----------------data-----------------
|
||||||
|
hsbdata gui_scroll_bar_data_t
|
||||||
|
vsbdata gui_scroll_bar_data_t
|
||||||
|
|
||||||
|
window rd 1
|
||||||
|
hscroll_bar rd 1
|
||||||
|
vscroll_bar rd 1
|
||||||
|
|
||||||
|
i_end:
|
63
programs/develop/libraries/libGUI/examples/src/ASM/TEXT.ASM
Normal file
63
programs/develop/libraries/libGUI/examples/src/ASM/TEXT.ASM
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
;Hello world example
|
||||||
|
|
||||||
|
use32
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 1
|
||||||
|
dd start
|
||||||
|
dd i_end
|
||||||
|
dd 0x800
|
||||||
|
dd 0x800
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
TRUE = 1
|
||||||
|
FALSE = 0
|
||||||
|
|
||||||
|
include 'libGUI.inc'
|
||||||
|
|
||||||
|
start:
|
||||||
|
;load libGUI labrari
|
||||||
|
push NULL ;use default system path to library
|
||||||
|
call LoadLibGUI
|
||||||
|
;create main window
|
||||||
|
CreateWindow
|
||||||
|
mov [window],eax
|
||||||
|
;change size of main window
|
||||||
|
SetWindowSizeRequest [window],92,46
|
||||||
|
;set callback function for button close window
|
||||||
|
SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
|
||||||
|
|
||||||
|
;create control Text
|
||||||
|
mov [txtdata.x],5
|
||||||
|
mov [txtdata.y],5
|
||||||
|
mov [txtdata.font],NULL;use default system libGUI font
|
||||||
|
mov [txtdata.background],TRUE;use background for text
|
||||||
|
mov [txtdata.color],0xffffff;text color
|
||||||
|
mov [txtdata.background_color],0xff8000
|
||||||
|
mov [txtdata.text],txt
|
||||||
|
CreateText txtdata
|
||||||
|
mov [text],eax
|
||||||
|
|
||||||
|
;pack control Text in window
|
||||||
|
PackControls [window],[text]
|
||||||
|
|
||||||
|
;start libGUI main loop
|
||||||
|
LibGUImain [window]
|
||||||
|
|
||||||
|
|
||||||
|
;void callback_func_delete_window(header_t *control,void *data)
|
||||||
|
callback_func_delete_window:
|
||||||
|
|
||||||
|
mov eax,[esp+4] ;control
|
||||||
|
|
||||||
|
QuitLibGUI eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
align 4
|
||||||
|
;----------------data-----------------
|
||||||
|
txt db 'Hello world!',0
|
||||||
|
txtdata gui_text_data_t
|
||||||
|
window rd 1;parent_t *window
|
||||||
|
text rd 1;gui_text_data_t *text
|
||||||
|
|
||||||
|
i_end:
|
1070
programs/develop/sdk/trunk/libGUI/FASM/LIBGUI.INC
Normal file
1070
programs/develop/sdk/trunk/libGUI/FASM/LIBGUI.INC
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user