;button's types
bt_check_text_type = 00000001b
bt_check_picture_type = 00000010b
bt_check_picture_text_type = 00000100b
bt_no_draw = 00001000b
bt_check_3D_type = 00010000b
bt_check_full_redraw = 10000000b
bt_full_redraw_off = 01111111b
;button's flags
bt_crossing = 00000001b
bt_crossing_pressing = 00000011b
bt_crossing_pressing_off = 11111100b
bt_control_data_size = 50
;****************************************************
;******************craete Button**********************
;****************************************************
;IN
;pointer to parend
;pointer to Buttton's structure
;OUT
;pointer to initialized Button's structure
align 4
craete_button:
push ebx
push ecx
push edx
push esi
push edi
push ebp
mov ebx,[esp+24+4] ;parend
mov eax,[esp+24+8] ;control
mov [PointerToStructureForButton],eax
mov eax,control_header_size+bt_control_data_size
call craete_control
;set all button's parameters in control
mov ecx,dword button
mov [eax],dword button
mov ecx,bt_control_data_size
mov esi,[PointerToStructureForButton]
mov edi,eax
add edi,control_header_size
rep movsb
mov ebx,[PointerToStructureForButton]
xor ecx,ecx
xor edx,edx
xor esi,esi
xor edi,edi
mov cx,[ebx+2] ;button x
mov dx,[ebx+4] ;button y
mov si,[ebx+6] ;button size x
mov di,[ebx+8] ;button size y
call get_skin_height
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 Button**********************
;****************************************************
;IN
;pointer to control of button
;message
;OUT
;not returned value
align 4
button:
;get message
mov eax,[esp+8]
;get pointer to control of button
mov esi,[esp+4]
mov [PointerForButton],esi
;copy control to local control
mov edi,dword Button
mov ecx,control_header_size+bt_control_data_size
cld
rep movsb
cmp [eax],dword 1
jne no_redraw_all_button
or [Button.type],bt_check_full_redraw
no_redraw_all_button:
cmp [eax],dword 2
jne no_keys_button
jmp exit_button
no_keys_button:
cmp [eax],dword 3
jne no_pressed_button_button
jmp exit_button
no_pressed_button_button:
cmp [eax],dword 6
jne no_mouse_button
mov esi,[eax+4]
mov edi,[eax+8]
mov ecx,[eax+12]
mov [Button.mouseX],si
mov [Button.mouseY],di
mov [ButtonsOfMouse],ecx
no_mouse_button:
cmp [eax],dword -1
jne no_delete_button
jmp exit_button
no_delete_button:
;load coordinats and size from control
mov eax,[PointerForButton]
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 [Button.x],bx
mov [Button.y],cx
mov [Button.width],dx
mov [Button.height],si
mov [Button.color2],0xffffff
xor eax,eax
mov al,[Button.type]
and al,bt_check_full_redraw
test al,al
jz no_redraw_button
and [Button.type],bt_full_redraw_off
mov esi,dword Button
mov edi,[PointerForButton]
add esi,control_header_size
add edi,control_header_size
mov ecx,2
cld
rep movsb
;if bit 3 is tru than no draw button
mov al,[Button.type]
and al,bt_no_draw
test al,al
jnz no_draw_button
;generate colors tables
mov eax,[Button.color1]
mov ebx,0xffffff
mov ecx,20
mov edx,dword colors_table1
call gradient
xor eax,eax
mov ebx,[Button.color1]
mov ecx,20
mov edx,dword colors_table2
call gradient
xor eax,eax
mov al,[Button.type]
and al,bt_check_3D_type
test al,al
jz no_3d_button
;draw gradient up rectangle
mov eax,[Button.color1]
mov ebx,[Button.color2]
and eax,0xffffff
and ebx,0xffffff
xor ecx,ecx
xor edx,edx
xor esi,esi
xor edi,edi
mov cx,[Button.x]
mov dx,[Button.y]
mov si,[Button.width]
mov di,[Button.height]
add cx,1
add dx,2
sub si,1
sub di,3
call rectangle_gradient_up
mov eax,[Button.color1]
mov [Line.color],eax
;draw left vertical line
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
add [Line.y2],ecx
call DrawLine
;draw right vertical line
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
add [Line.y2],ecx
call DrawLine
;draw down 1 horizontal line
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],1
sub esi,1
add [Line.x2],esi
call DrawLine
;draw up light horizontal rectangle
xor ecx,ecx
xor esi,esi
mov si,[Button.height]
mov di,[Button.width]
mov eax,13
mov bx,[Button.x]
mov cx,[Button.y]
mov edx,0xffffff
add ebx,2
add ecx,1
shl ebx,16
shl ecx,16
sub edi,3
add ebx,edi
add ecx,2
mcall
;draw left light vertical line
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
;calculate color
mov dx,[Button.height]
sub edx,3+2
mov esi,[pointer+edx*3]
and esi,0xffffff
add eax,1
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
mov [Line.color],esi; dword 0xffffff
add [Line.y1],2
sub ecx,3
add [Line.y2],ecx
call DrawLine
;draw right light vertical line
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
add ax,[Button.width]
sub eax,1
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],2
sub ecx,3
add [Line.y2],ecx
call DrawLine
mov eax,[pointer+3*3]
and eax,0xffffff
mov [Button.color2],eax
mov [Line.color],eax
;draw up light left vertical line 1
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y2],2
call DrawLine
;draw up light right vertical line 1
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y2],2
call DrawLine
;draw up light left vertical line 2
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,1
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y2],1
call DrawLine
;draw up light right vertical line 2
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
sub eax,1
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y2],1
call DrawLine
;draw up light horizontal line
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],2
sub esi,2
add [Line.x2],esi
call DrawLine
mov eax,[pointer+3*3]
mov ebx,[pointer+3*9]
and eax,0xffffff
and ebx,0xffffff
call calculate_average_color
mov [Pixel.color],eax
;(x,y)
xor eax,eax
xor ebx,ebx
mov ax,[Button.x]
mov bx,[Button.y]
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
;(x+size_x,y)
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.width]
add eax,ecx
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
;(x+1,y+1)
xor eax,eax
xor ebx,ebx
mov ax,[Button.x]
mov bx,[Button.y]
add eax,1
add ebx,1
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
;(x+size_x-1,y+1)
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.width]
add eax,ecx
sub eax,1
add ebx,1
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
;(x,y+size_y)
xor eax,eax
xor ebx,ebx
mov ax,[Button.x]
mov bx,[Button.y]
add bx,[Button.height]
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
;(x+size_x,y+size_y)
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.width]
add eax,ecx
add bx,[Button.height]
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
;(x+1,y+size_y-2)
xor eax,eax
xor ebx,ebx
mov ax,[Button.x]
mov bx,[Button.y]
add eax,1
add bx,[Button.height]
sub ebx,2
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
;(x+size_x-1,y+size_y-2)
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.width]
add eax,ecx
sub eax,1
add bx,[Button.height]
sub ebx,2
mov [Pixel.x],eax
mov [Pixel.y],ebx
call DrawPixel
no_3d_button:
;****************************
;*********2D button**********
;****************************
xor eax,eax
mov al,[Button.type]
and al,bt_check_3D_type
test al,al
jnz no_2D_button
mov edx,[colors_table1+18]
and edx,0xffffff
xor ebx,ebx
xor ecx,ecx
xor esi,esi
xor edi,edi
mov si,[Button.width]
mov di,[Button.height]
mov eax,13
mov bx,[Button.x]
mov cx,[Button.y]
add ebx,1
add ecx,1
sub si,1
sub di,1
shl ebx,16
shl ecx,16
add ebx,esi
add ecx,edi
mcall
mov eax,[colors_table1+15*3]
and eax,0xffffff
mov [Line.color],eax
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov si,[Button.width]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
mov eax,[colors_table2+8*3]
and eax,0xffffff
mov [Line.color],eax
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
no_2D_button:
no_draw_button:
;check drawing text on the button
xor eax,eax
mov al,[Button.type]
and al,bt_check_text_type
test al,al
jz no_button_only_with_text
call DrawStringOnTheButton
jmp end_case_button
no_button_only_with_text:
;check drawing picture on the button
xor eax,eax
mov al,[Button.type]
and al,bt_check_picture_type
test al,al
jz no_button_only_with_picture
call DrawPictureOnTheButton
jmp end_case_button
no_button_only_with_picture:
xor eax,eax
mov al,[Button.type]
and al,bt_check_picture_text_type
test al,al
jz no_button_with_text_and_picture
;draw string in coordinats (textX,textY)
xor eax,eax
xor ebx,ebx
mov ax,[Button.textX]
mov bx,[Button.textY]
add ax,[Button.x]
add bx,[Button.y]
mov [Font.x],eax
mov [Font.y],ebx
call DrawString
;draw picture in coordinats (imageX,imageY)
xor eax,eax
xor ebx,ebx
mov ax,[Button.imageX]
mov bx,[Button.imageY]
add ax,[Button.x]
add bx,[Button.y]
mov [xo],eax
mov [x],eax
mov [y],ebx
xor esi,esi
xor edi,edi
mov si,[Button.imageSizeX]
mov di,[Button.imageSizeY]
mov ebp,[Button.image]
xor eax,eax
inc eax
loop_y_image_:
mov ebx,[xo]
mov [x],ebx
xor esi,esi
mov si,[Button.imageSizeX]
loop_x_image_:
mov edx,[ebp]
and edx,0xffffff
cmp edx,[Button.transparentColor]
je no_draw_pixel_
mov ebx,[x]
mov ecx,[y]
mcall
no_draw_pixel_:
add ebp,3
add [x],1
dec esi
jnz loop_x_image_
add [y],1
dec edi
jnz loop_y_image_
no_button_with_text_and_picture:
no_redraw_button:
end_case_button:
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
xor esi,esi
xor edi,edi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.width]
mov dx,[Button.height]
mov si,[Button.mouseX]
mov di,[Button.mouseY]
call CheckCrossingBox
cmp eax,0xffffff
jne no_crossing
xor ebx,ebx
mov bl,[Button.type]
and bl,bt_check_3D_type
test bl,bl
jz button_active_2D
push eax
mov eax,[ButtonsOfMouse]
cmp eax,1
je button_pressed_3d_
xor eax,eax
mov al,[Button.type]
and al,bt_no_draw
test al,al
jnz no_draw_active_button_3d_
call Draw3DActiveButton
no_draw_active_button_3d_:
mov [Button.flag],byte bt_crossing
jmp exit_button_pressed_3d_
button_pressed_3d_:
xor eax,eax
mov al,[Button.type]
and al,bt_no_draw
test al,al
jnz no_draw_pressed_button_3d_
call DrawPressed3DButton
no_draw_pressed_button_3d_:
mov [Button.flag],byte bt_crossing_pressing
exit_button_pressed_3d_:
pop eax
;save flag
mov esi,dword Button
mov edi,[PointerForButton]
add esi,control_header_size
add edi,control_header_size
mov ecx,2
cld
rep movsb
jmp no_crossing
button_active_2D:
push eax
mov eax,[ButtonsOfMouse]
cmp eax,1
je button_pressed_2d
xor eax,eax
mov al,[Button.type]
and al,bt_no_draw
test al,al
jnz no_active_button_2d_
call Draw2DActiveButton
no_active_button_2d_:
mov [Button.flag],byte bt_crossing
jmp exit_button_pressed_2d
button_pressed_2d:
xor eax,eax
mov al,[Button.type]
and al,bt_no_draw
test al,al
jnz no_draw_pressed_button_2d_
call DrawPressed2DButton
no_draw_pressed_button_2d_:
mov [Button.flag],byte bt_crossing_pressing
exit_button_pressed_2d:
pop eax
;save flag
mov esi,dword Button
mov edi,[PointerForButton]
add esi,control_header_size
add edi,control_header_size
mov ecx,2
cld
rep movsb
no_crossing:
cmp eax,0xffffff
je yes_crossing
xor ebx,ebx
mov bl,[Button.flag]
and bl,bt_crossing
test bl,bl
jz yes_crossing
xor ebx,ebx
mov bl,[Button.type]
and bl,bt_check_3D_type
test bl,bl
jz button_put_2D
push eax
xor eax,eax
mov al,[Button.type]
and al,bt_no_draw
test al,al
jnz no_draw_button_active_3d__
call Put3DActiveButton
no_draw_button_active_3d__:
pop eax
and [Button.flag],bt_crossing_pressing_off
mov esi,dword Button
mov edi,[PointerForButton]
add edi,control_header_size
add esi,control_header_size
mov ecx,2
cld
rep movsb
jmp yes_crossing
button_put_2D:
push eax
xor eax,eax
mov al,[Button.type]
and al,bt_no_draw
test al,al
jnz no_draw_button_active_2d__
call Put2DActiveButton
no_draw_button_active_2d__:
pop eax
and [Button.flag],bt_crossing_pressing_off
mov esi,dword Button
mov edi,[PointerForButton]
add esi,control_header_size
add edi,control_header_size
mov ecx,2
cld
rep movsb
yes_crossing:
exit_button:
ret 8
DrawStringOnTheButton:
;xor ebx,ebx
mov ebx,[Button.text]
call GetLengthString
imul eax,6 ;[Font.sizeX]
xor ebx,ebx
mov bx,[Button.width]
shr eax,1
shr ebx,1
sub ebx,eax
xor eax,eax
mov ax,[Button.x]
add eax,ebx
mov [Font.x],eax
xor ebx,ebx
mov bx,[Button.height]
shr ebx,1
sub ebx,3;[Font.sizeY]
xor eax,eax
mov ax,[Button.y]
add eax,ebx
mov [Font.y],eax
call DrawString
ret
DrawPictureOnTheButton:
xor esi,esi
xor edi,edi
xor eax,eax
xor ebx,ebx
mov ax,[Button.height]
mov bx,[Button.width]
mov di,[Button.imageSizeY]
mov si,[Button.imageSizeX]
shr ax,1
shr bx,1
shr si,1
shr di,1
sub ax,di
sub bx,si
add ax,[Button.y]
add bx,[Button.x]
mov [xo],ebx
mov [x],ebx
mov [y],eax
xor esi,esi
xor edi,edi
mov si,[Button.imageSizeX]
mov di,[Button.imageSizeY]
mov ebp,[Button.image]
xor eax,eax
inc eax
loop_y_image:
mov ebx,[xo]
mov [x],ebx
xor esi,esi
mov si,[Button.imageSizeX]
loop_x_image:
mov edx,[ebp]
and edx,0xffffff
cmp edx,[Button.transparentColor]
je no_draw_pixel
mov ebx,[x]
mov ecx,[y]
mcall
no_draw_pixel:
add ebp,3
add [x],1
dec esi
jnz loop_x_image
add [y],1
dec edi
jnz loop_y_image
ret
Draw3DActiveButton:
;call calculate_average_color
mov [Line.color],0xffffff;eax
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
sub ecx,1
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
sub ecx,1
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],1
xor ecx,ecx
mov cx,[Button.width]
sub ecx,1
add [Line.x2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],1
xor ecx,ecx
mov cx,[Button.width]
sub ecx,1
add [Line.x2],ecx
call DrawLine
ret
Put3DActiveButton:
mov eax,[Button.color1]
mov ebx,0xffffff
mov ecx,20
mov edx,dword pointer
call gradient
mov eax,[pointer+3];[Button.color1]
and eax,0xffffff
mov [Line.color],eax
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
sub ecx,1
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
sub ecx,1
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],1
xor ecx,ecx
mov cx,[Button.width]
sub ecx,1
add [Line.x2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],1
xor ecx,ecx
mov cx,[Button.width]
sub ecx,1
add [Line.x2],ecx
call DrawLine
ret
DrawPressed3DButton:
mov eax,[Button.color1]
mov ebx,0xffffff
mov ecx,20
mov edx,dword pointer
call gradient
mov edx,[pointer+3]
and edx,0xffffff
mov [Line.color],edx
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
sub ecx,1
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y1],3
sub ecx,1
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],1
xor ecx,ecx
mov cx,[Button.width]
sub ecx,1
add [Line.x2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x1],1
xor ecx,ecx
mov cx,[Button.width]
sub ecx,1
add [Line.x2],ecx
call DrawLine
ret
Draw2DActiveButton:
mov edx,[colors_table1]
and edx,0xffffff
;mov [Button.color2],edx
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
mov [Line.color],edx
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov si,[Button.width]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
ret
Put2DActiveButton:
mov edx,[pointer+15*3]
and edx,0xffffff
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
mov [Line.color],edx
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov si,[Button.width]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
mov edx,[colors_table2+8*3]
and edx,0xffffff
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
mov [Line.color],edx
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
ret
DrawPressed2DButton:
xor eax,eax
xor ebx,ebx
xor ecx,ecx
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
and [Line.color],0
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
;mov cx,[Button.height]
mov si,[Button.width]
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add eax,esi
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
mov [Line.color],0xffffff
add [Line.y2],ecx
call DrawLine
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor esi,esi
mov ax,[Button.x]
mov bx,[Button.y]
mov cx,[Button.height]
mov si,[Button.width]
add ebx,ecx
mov [Line.x1],eax
mov [Line.x2],eax
mov [Line.y1],ebx
mov [Line.y2],ebx
add [Line.x2],esi
call DrawLine
ret