forked from KolibriOS/kolibrios
446 lines
8.8 KiB
PHP
446 lines
8.8 KiB
PHP
|
;------------------------------------------------------------------------------
|
|||
|
; ***************************************************
|
|||
|
; ********* WINDOW DEFINITIONS AND DRAW *************
|
|||
|
; ***************************************************
|
|||
|
align 4
|
|||
|
draw_window:
|
|||
|
pusha
|
|||
|
mov [running_applications],-1
|
|||
|
mcall 12,1
|
|||
|
|
|||
|
mcall 48,3,system_colours,10*4
|
|||
|
|
|||
|
mov eax, [system_colours+4*6]
|
|||
|
sub eax, 0x101010
|
|||
|
mov [wcolor], eax
|
|||
|
|
|||
|
mcall 14 ; get screen max x & max y
|
|||
|
|
|||
|
cmp [width],dword 0
|
|||
|
je no_def_width
|
|||
|
|
|||
|
and eax,0xffff
|
|||
|
mov ebx,[width]
|
|||
|
shl ebx,16
|
|||
|
add eax,ebx
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
no_def_width:
|
|||
|
mov ebx,eax
|
|||
|
mov [screenxy],ebx
|
|||
|
shr ebx,16
|
|||
|
mov ecx,eax
|
|||
|
|
|||
|
cmp [place_attachment],1
|
|||
|
je @f
|
|||
|
|
|||
|
xor ecx,ecx
|
|||
|
mov cx,[height]
|
|||
|
dec cx
|
|||
|
jmp .attachment_selected
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
sub ecx,[height]
|
|||
|
inc ecx
|
|||
|
shl ecx,16
|
|||
|
mov cx,[height]
|
|||
|
dec cx
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
.attachment_selected:
|
|||
|
xor eax,eax ; DEFINE AND DRAW WINDOW
|
|||
|
mov edx, [wcolor]
|
|||
|
or edx, 0x01000000 ; do not draw the window
|
|||
|
mov esi, [wcolor]
|
|||
|
or esi, 0x01000000 ; unmovable window
|
|||
|
mov edi, [wcolor]
|
|||
|
mov [panel_x_pos], ebx
|
|||
|
mov [panel_y_pos], ecx ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
mcall
|
|||
|
|
|||
|
movzx eax,word [screenxy+2]
|
|||
|
mov [max_x],eax
|
|||
|
|
|||
|
call fill_window
|
|||
|
call minimize_left_button
|
|||
|
call minimize_right_button
|
|||
|
call draw_menu_and_clean_desktop
|
|||
|
mov [ptime],0
|
|||
|
call draw_tray
|
|||
|
call draw_application_buttons
|
|||
|
|
|||
|
mcall 12,2
|
|||
|
popa
|
|||
|
ret
|
|||
|
;------------------------------------------------------------------------------
|
|||
|
align 4
|
|||
|
fill_window:
|
|||
|
movzx ebx,word [screenxy+2]
|
|||
|
xor ecx,ecx
|
|||
|
mov edx,[wcolor]
|
|||
|
; add edx,0x161616
|
|||
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|||
|
imul eax,dword [soften_height]
|
|||
|
call subtract_color_change_magnitude
|
|||
|
cmp [soften_up],dword 0
|
|||
|
je no_su
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@: ; debug.inc has macros with the same name
|
|||
|
; sub edx,0x040404
|
|||
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|||
|
call add_color_change_magnitude
|
|||
|
; draw soften_up - the width of 5 pixels
|
|||
|
and edx,0x00FFFFFF
|
|||
|
mcall 38
|
|||
|
|
|||
|
add ecx,1*65536+1
|
|||
|
cmp cx,[soften_height] ;5
|
|||
|
jb @r
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
no_su:
|
|||
|
cmp [soften_down],dword 0
|
|||
|
je no_sd
|
|||
|
; draw soften_down - the width of 5 pixels
|
|||
|
pusha
|
|||
|
mov esi,[soften_height]
|
|||
|
mov ecx,[height]
|
|||
|
dec ecx
|
|||
|
shl ecx,16
|
|||
|
add ecx,[height]
|
|||
|
dec ecx
|
|||
|
mov edx,[wcolor]
|
|||
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|||
|
imul eax,dword [soften_height]
|
|||
|
call subtract_color_change_magnitude
|
|||
|
@@:
|
|||
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|||
|
call add_color_change_magnitude
|
|||
|
and edx,0x00FFFFFF
|
|||
|
mcall 38
|
|||
|
sub ecx,1*65536+1
|
|||
|
dec esi
|
|||
|
jnz @r
|
|||
|
popa
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
no_sd:
|
|||
|
movzx ebx,word [screenxy+2]
|
|||
|
xor ecx,ecx
|
|||
|
cmp [soften_up],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
add ecx,[soften_height]
|
|||
|
rol ecx,16
|
|||
|
add ecx,[soften_height]
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
; mov esi,stripe
|
|||
|
mov edx,[wcolor]
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
newline3:
|
|||
|
and edx,0x00FFFFFF
|
|||
|
mov eax,[height]
|
|||
|
cmp [soften_up],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
sub eax,[soften_height]
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
cmp [soften_down],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
sub eax,[soften_height]
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
mov cx,ax
|
|||
|
inc ebx
|
|||
|
mcall 13
|
|||
|
ret
|
|||
|
;------------------------------------------------------------------------------
|
|||
|
align 4
|
|||
|
minimize_left_button:
|
|||
|
cmp [minimize_left],dword 0
|
|||
|
je .exit
|
|||
|
|
|||
|
mov ecx,1 *65536
|
|||
|
add ecx,[height]
|
|||
|
dec ecx
|
|||
|
mov edx,101
|
|||
|
; add edx,[button_frames]
|
|||
|
or edx,0x40000000
|
|||
|
mcall 8,<0,9>,,,[wcolor] ; ABS LEFT
|
|||
|
|
|||
|
mov ebx,2*65536 ;+6
|
|||
|
mov bx,[height]
|
|||
|
shr bx,1
|
|||
|
sub bx,3
|
|||
|
mov ecx,[wcolor]
|
|||
|
add ecx,0x303030
|
|||
|
mcall 4,,,hidetext,1 ; HIDE TEXT
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
.exit:
|
|||
|
ret
|
|||
|
;------------------------------------------------------------------------------
|
|||
|
align 4
|
|||
|
minimize_right_button:
|
|||
|
cmp [minimize_right],dword 0
|
|||
|
je .exit
|
|||
|
mov eax,[max_x]
|
|||
|
sub eax,77
|
|||
|
shl eax,16
|
|||
|
mov ebx,eax
|
|||
|
add ebx,67
|
|||
|
|
|||
|
mov ecx,1 *65536
|
|||
|
add ecx,[height]
|
|||
|
dec ecx
|
|||
|
add ebx,68*65536
|
|||
|
mov bx,9
|
|||
|
mov edx,102
|
|||
|
; add edx,[button_frames]
|
|||
|
or edx,0x40000000
|
|||
|
mcall 8,,,,[wcolor] ; ABS RIGHT
|
|||
|
|
|||
|
mov ebx,[max_x]
|
|||
|
sub ebx,6
|
|||
|
shl ebx,16
|
|||
|
mov bx,[height]
|
|||
|
shr bx,1
|
|||
|
sub bx,3
|
|||
|
mov ecx,[wcolor]
|
|||
|
add ecx,0x303030
|
|||
|
mov esi,1
|
|||
|
mcall 4,,,hidetext+1
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
.exit:
|
|||
|
ret
|
|||
|
;------------------------------------------------------------------------------
|
|||
|
align 4
|
|||
|
draw_menu_and_clean_desktop:
|
|||
|
pusha
|
|||
|
; check draw for menu
|
|||
|
cmp [menu_enable],dword 0
|
|||
|
je no_menu
|
|||
|
; calculate and draw menu
|
|||
|
mov ebx, (0 shl 16) + MENU_SIZE-3
|
|||
|
; check for left minimize button enabled
|
|||
|
cmp [minimize_left],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
add ebx, ML_SIZE shl 16
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
call calculate_button_y_coordinate_and_size
|
|||
|
mov edx, 0x40d1ff01
|
|||
|
; mov edx, 0xd1ff01
|
|||
|
; add edx, [button_frames]
|
|||
|
mcall 8,,,,[wcolor] ; MENU BUTTON
|
|||
|
|
|||
|
mov eax,ebx
|
|||
|
shr eax,16
|
|||
|
mov [menu_button_x.start],eax
|
|||
|
|
|||
|
mov eax,ebx
|
|||
|
and eax,0xffff
|
|||
|
mov [menu_button_x.size],eax
|
|||
|
|
|||
|
mov eax,ecx
|
|||
|
shr eax,16
|
|||
|
mov [menu_button_y.start],eax
|
|||
|
|
|||
|
mov eax,ecx
|
|||
|
and eax,0xffff
|
|||
|
mov [menu_button_y.size],eax
|
|||
|
|
|||
|
mov edx,[MenuButton_color] ;0x44aa44
|
|||
|
mov esi,[wcolor]
|
|||
|
call draw_appl_button
|
|||
|
|
|||
|
add ebx, 8*65536
|
|||
|
mov bx,[height]
|
|||
|
shr bx,1
|
|||
|
sub bx,3
|
|||
|
mcall 4,,0x10ffffff,m_text,4
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
no_menu:
|
|||
|
; check draw for clean desktop button
|
|||
|
cmp [clean_desktop_enable],dword 0
|
|||
|
je .exit
|
|||
|
; calculate and draw clean desktop button
|
|||
|
mov ebx, (0 shl 16) + CLD_SIZE-5
|
|||
|
; check for left minimize button enabled
|
|||
|
cmp [minimize_left],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
add ebx, ML_SIZE shl 16
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
; check for menu button enabled
|
|||
|
cmp [menu_enable],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
add ebx, MENU_SIZE shl 16
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
; Inserted code for drawing buttons 103, 104, 105 (Clean, Restore, Exchange windows)
|
|||
|
mov esi, dword [system_colours+24] ; drawing buttons
|
|||
|
and esi, 0x00ffffff
|
|||
|
mov edx, 0x40000000 + 103
|
|||
|
call calculate_button_y_coordinate_and_size
|
|||
|
mcall 8 ;,,<3,13>
|
|||
|
|
|||
|
mov edx,[CleanDesktopButton_color] ;time_bgr_color
|
|||
|
mov esi,[wcolor]
|
|||
|
call draw_appl_button
|
|||
|
|
|||
|
; mov ecx, dword [system_colours+28]
|
|||
|
; and ecx, 0x00ffffff
|
|||
|
mov ecx,0xffffff
|
|||
|
add ebx,5 shl 16
|
|||
|
; mov bx,6
|
|||
|
mov bx,[height]
|
|||
|
shr bx,1
|
|||
|
sub bx,2
|
|||
|
mcall 4,,,page_clean_but,1
|
|||
|
sub bx,2
|
|||
|
mcall ,,,page_clean_but+1
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
.exit:
|
|||
|
popa
|
|||
|
ret
|
|||
|
;------------------------------------------------------------------------------
|
|||
|
align 4
|
|||
|
draw_application_buttons:
|
|||
|
pusha
|
|||
|
|
|||
|
cmp [run_appl],dword 0 ; do not draw application buttons
|
|||
|
je .exit
|
|||
|
|
|||
|
call calculate_offset_X
|
|||
|
|
|||
|
; mcall 14
|
|||
|
mov eax,[screenxy]
|
|||
|
shr eax,16
|
|||
|
|
|||
|
sub eax,[offset_X]
|
|||
|
; check for tray enabled
|
|||
|
; cmp [tray_enable],dword 0
|
|||
|
; je @f
|
|||
|
|
|||
|
; sub eax, TRAY_SIZE
|
|||
|
;--------------------------------------
|
|||
|
;align 4
|
|||
|
;@@:
|
|||
|
; check for left minimize button enabled
|
|||
|
cmp [minimize_right],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
sub eax, MR_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
cmp [clock_enable],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
sub eax,CLOCK_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
cmp [cpu_usage_enable],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
sub eax,CPU_USAGE_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
cmp [chlang_enable],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
sub eax,CHLANG_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
cmp [page_list_enable],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
sub eax,PAGE_LIST_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
mov ebx, TAB_SIZE
|
|||
|
xor edx,edx
|
|||
|
div ebx
|
|||
|
mov [max_applications], eax
|
|||
|
xor edi,edi
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
.nb:
|
|||
|
mov ebx,edi
|
|||
|
imul ebx,TAB_SIZE
|
|||
|
add ebx,[offset_X]
|
|||
|
shl ebx,16
|
|||
|
mov bx, TAB_SIZE-1
|
|||
|
mov edx,edi
|
|||
|
add edx,52
|
|||
|
or edx,0x60000000
|
|||
|
mov ecx, 1*65536
|
|||
|
add ecx, [height]
|
|||
|
sub ecx,3
|
|||
|
mcall 8,,,,[wcolor]
|
|||
|
|
|||
|
inc edi
|
|||
|
cmp edi,[max_applications]
|
|||
|
jb .nb
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
.exit:
|
|||
|
popa
|
|||
|
ret
|
|||
|
;------------------------------------------------------------------------------
|
|||
|
align 4
|
|||
|
calculate_offset_X:
|
|||
|
push eax
|
|||
|
xor eax,eax
|
|||
|
; check for left minimize button enabled
|
|||
|
cmp [minimize_left],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
add eax, ML_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
; check for menu button enabled
|
|||
|
cmp [menu_enable],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
add eax, MENU_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
; check for clean desktop button enabled
|
|||
|
cmp [clean_desktop_enable],dword 0
|
|||
|
je @f
|
|||
|
|
|||
|
add eax, CLD_SIZE
|
|||
|
;--------------------------------------
|
|||
|
align 4
|
|||
|
@@:
|
|||
|
mov [offset_X],eax
|
|||
|
pop eax
|
|||
|
ret
|
|||
|
;------------------------------------------------------------------------------
|