0,0 → 1,465 |
;------------------------------------------------------------------------------ |
; *************************************************** |
; ********* 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 |
|
mov edx,[system_colours+4*6] |
mov eax,COLOR_CHANGE_MAGNITUDE |
call subtract_color_change_magnitude |
mov [wcolor], edx |
|
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 ; Ïîêà ÷òî òàê. |
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 |
|
mov [redraw_window_flag],0 |
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 |
;-------------------------------------- |
align 4 |
@@: |
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 |
mov edx,[wcolor] |
mov eax,COLOR_CHANGE_MAGNITUDE_2 |
call add_color_change_magnitude |
mov ecx,edx |
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,10 ;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 edx,[wcolor] |
mov eax,COLOR_CHANGE_MAGNITUDE_2 |
call add_color_change_magnitude |
mov ecx,edx |
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 ecx, [height] |
mov edx, 0x60d1ff01 |
; 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 |
|
call calculate_button_y_coordinate_and_size |
mov edx,[MenuButton_color] ;0x44aa44 |
mov esi,[wcolor] |
add ebx,3 shl 16 - 5 |
call draw_appl_button |
|
add ebx, 6*65536 |
mov bx,[height] |
shr bx,1 |
sub bx,3 |
mov ecx,[PanelText_color] |
or ecx,0x10000000 |
if lang eq et |
mcall 4,,,m_text,5 |
else |
mcall 4,,,m_text,4 |
end if |
;-------------------------------------- |
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, 0x60000000 + 103 |
; call calculate_button_y_coordinate_and_size |
mov ecx, [height] |
mcall 8 ;,,<3,13> |
|
call calculate_button_y_coordinate_and_size |
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,[PanelText_color] |
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 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 |
mov ecx, [height] |
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 |
;------------------------------------------------------------------------------ |