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.

git-svn-id: svn://kolibrios.org@648 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
andrew_programmer
2007-10-15 10:45:36 +00:00
parent 16f5992719
commit 6cdf720037
49 changed files with 18399 additions and 0 deletions

View File

@@ -0,0 +1,459 @@
pb_control_data_size = 34
pb_redraw_all = 10000000b
pb_redraw_all_off = 01111111b
pb_special_progress_on = 1b
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:
mov ebx,[esp+4]
mov eax,[esp+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
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
or [ProgressBar.type],pb_special_progress_on
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:
xor eax,eax
mov al,[ProgressBar.type]
and al,pb_special_progress_on
test al,al
jz no_draw_progress_bar
and [ProgressBar.type],pb_special_progress_off
call draw_progress
no_draw_progress_bar:
exit_progress_bar:
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