Fix macro name - rename sys_colors to sys_colors_new to avoid collisions

git-svn-id: svn://kolibrios.org@4817 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Yogev Ezra 2014-04-10 16:43:59 +00:00
parent b22512a865
commit 6e6d77845e
2 changed files with 311 additions and 311 deletions

View File

@ -1,310 +1,310 @@
use32 use32
org 0x0 org 0x0
db 'MENUET01' db 'MENUET01'
dd 0x01,start,i_end,e_end,e_end,0,0 dd 0x01,start,i_end,e_end,e_end,0,0
include '../../../proc32.inc' include '../../../proc32.inc'
include '../../../macros.inc' include '../../../macros.inc'
BUTTON_SIDE equ 16 ; button are squares BUTTON_SIDE equ 16 ; button are squares
BUTTON_SPACE equ 19 ; space between cols and rows BUTTON_SPACE equ 19 ; space between cols and rows
BUTTON_ID_SHIFT equ 2 ; button_id = character + BUTTON_ID_SHIFT BUTTON_ID_SHIFT equ 2 ; button_id = character + BUTTON_ID_SHIFT
TABLE_BEGIN_X equ 2 TABLE_BEGIN_X equ 2
TABLE_BEGIN_Y equ 2 TABLE_BEGIN_Y equ 2
FOCUS_SQUARE_COLOR equ 0x000080FF FOCUS_SQUARE_COLOR equ 0x000080FF
PAGE_SWITCHER_BLINK_COLOR equ 0x00808080 PAGE_SWITCHER_BLINK_COLOR equ 0x00808080
start: start:
still: still:
mcall 10 mcall 10
dec eax dec eax
jz redraw jz redraw
dec eax dec eax
jz key jz key
button: button:
mcall 17 mcall 17
shr eax, 8 shr eax, 8
cmp eax, 1 cmp eax, 1
je quit je quit
cmp ax, 0xFFAA ; page switcher cmp ax, 0xFFAA ; page switcher
je .switch_page ; any button with a character je .switch_page ; any button with a character
.change_focus: .change_focus:
mov bl, [symbol_focused] mov bl, [symbol_focused]
mov [symbol_unfocused], bl mov [symbol_unfocused], bl
sub ax, BUTTON_ID_SHIFT ; get the corresponding character sub ax, BUTTON_ID_SHIFT ; get the corresponding character
mov [symbol_focused], al mov [symbol_focused], al
stdcall draw_table, 0 stdcall draw_table, 0
call draw_codes call draw_codes
jmp still jmp still
.switch_page: .switch_page:
movzx bx, [symbol_start] movzx bx, [symbol_start]
add bx, BUTTON_ID_SHIFT add bx, BUTTON_ID_SHIFT
mov cx, 128 ; half of page mov cx, 128 ; half of page
mov edx, 0x80000000 mov edx, 0x80000000
mov dx, bx mov dx, bx
@@: mcall 8 @@: mcall 8
inc edx inc edx
dec cx dec cx
jnz @b jnz @b
@@: add [symbol_start], 128 ; change page @@: add [symbol_start], 128 ; change page
add [symbol_focused], 128 add [symbol_focused], 128
stdcall draw_table, 1 ; 1 means redraw the whole table stdcall draw_table, 1 ; 1 means redraw the whole table
call draw_codes call draw_codes
stdcall draw_page_switcher, 1 ; 1 means dark color, for blinking stdcall draw_page_switcher, 1 ; 1 means dark color, for blinking
mcall 5, 10 mcall 5, 10
stdcall draw_page_switcher, 0 ; 0 means usual light color stdcall draw_page_switcher, 0 ; 0 means usual light color
jmp still jmp still
redraw: redraw:
mcall 9, proc_info, -1 mcall 9, proc_info, -1
mcall 48, 3, sc, 40 mcall 48, 3, sys_colors, 40
mcall 12, 1 mcall 12, 1
mcall 48, 4 ; get skin height mcall 48, 4 ; get skin height
mov ecx, 300*0x10000+184 mov ecx, 300*0x10000+184
add ecx, eax add ecx, eax
mov edx, 0x34000000 mov edx, 0x34000000
or edx, [sc.work] or edx, [sys_colors.work]
mov esi, 0x80000000 mov esi, 0x80000000
or esi, [sc.grab_text] or esi, [sys_colors.grab_text]
mcall 0, <300,315>, , , , window_title mcall 0, <300,315>, , , , window_title
test [proc_info.wnd_state], 0x04 test [proc_info.wnd_state], 0x04
jnz @f jnz @f
stdcall draw_table, 1 stdcall draw_table, 1
call draw_codes call draw_codes
stdcall draw_page_switcher, 0 stdcall draw_page_switcher, 0
@@: @@:
mcall 12, 2 mcall 12, 2
jmp still jmp still
key: key:
mcall 2 mcall 2
cmp ah, 0x09 ; TAB key cmp ah, 0x09 ; TAB key
je button.switch_page je button.switch_page
cmp ah, 0xB0 ; left cmp ah, 0xB0 ; left
jne @f jne @f
mov bl, [symbol_focused] mov bl, [symbol_focused]
mov [symbol_unfocused], bl mov [symbol_unfocused], bl
dec bl dec bl
and bl, 0x0f and bl, 0x0f
and [symbol_focused], 0xf0 and [symbol_focused], 0xf0
or [symbol_focused], bl or [symbol_focused], bl
stdcall draw_table, 0 stdcall draw_table, 0
call draw_codes call draw_codes
jmp still jmp still
@@: cmp ah, 0xB1 ; down @@: cmp ah, 0xB1 ; down
jne @f jne @f
mov bl, [symbol_focused] mov bl, [symbol_focused]
mov [symbol_unfocused], bl mov [symbol_unfocused], bl
add bl, 16 add bl, 16
and bl, 0x70 and bl, 0x70
and [symbol_focused], 0x8f and [symbol_focused], 0x8f
or [symbol_focused], bl or [symbol_focused], bl
stdcall draw_table, 0 stdcall draw_table, 0
call draw_codes call draw_codes
jmp still jmp still
@@: cmp ah, 0xB2 ; up @@: cmp ah, 0xB2 ; up
jne @f jne @f
mov bl, [symbol_focused] mov bl, [symbol_focused]
mov [symbol_unfocused], bl mov [symbol_unfocused], bl
sub bl, 16 sub bl, 16
and bl, 0x70 and bl, 0x70
and [symbol_focused], 0x8f and [symbol_focused], 0x8f
or [symbol_focused], bl or [symbol_focused], bl
stdcall draw_table, 0 stdcall draw_table, 0
call draw_codes call draw_codes
jmp still jmp still
@@: cmp ah, 0xB3 ; righ @@: cmp ah, 0xB3 ; righ
jne @f jne @f
mov bl, [symbol_focused] mov bl, [symbol_focused]
mov [symbol_unfocused], bl mov [symbol_unfocused], bl
inc bl inc bl
and bl, 0x0f and bl, 0x0f
and [symbol_focused], 0xf0 and [symbol_focused], 0xf0
or [symbol_focused], bl or [symbol_focused], bl
stdcall draw_table, 0 stdcall draw_table, 0
call draw_codes call draw_codes
jmp still jmp still
jne @f jne @f
@@: @@:
jmp still jmp still
proc draw_table _full_redraw proc draw_table _full_redraw
mov al, [symbol_start] mov al, [symbol_start]
mov [symbol_current], al mov [symbol_current], al
.next_button: .next_button:
xor edi, edi ; character focus flag xor edi, edi ; character focus flag
mov al, [symbol_current] mov al, [symbol_current]
cmp al, [symbol_focused] cmp al, [symbol_focused]
jne @f jne @f
inc edi inc edi
@@: cmp [_full_redraw], 1 @@: cmp [_full_redraw], 1
je .draw je .draw
cmp al, [symbol_focused] cmp al, [symbol_focused]
je .draw je .draw
cmp al, [symbol_unfocused] ; previously focused, should redraw to clear focus cmp al, [symbol_unfocused] ; previously focused, should redraw to clear focus
je .draw je .draw
jmp .skip ; skip button if it isn't (un)focused jmp .skip ; skip button if it isn't (un)focused
.draw: .draw:
call draw_button call draw_button
.skip: .skip:
mov bl, [symbol_start] mov bl, [symbol_start]
add bl, 127 ; end of current page add bl, 127 ; end of current page
cmp [symbol_current], bl ; the last on page? cmp [symbol_current], bl ; the last on page?
jne @f jne @f
mov [button_x], TABLE_BEGIN_X mov [button_x], TABLE_BEGIN_X
mov [button_y], TABLE_BEGIN_Y mov [button_y], TABLE_BEGIN_Y
ret ret
@@: inc [symbol_current] @@: inc [symbol_current]
add [button_x], BUTTON_SPACE add [button_x], BUTTON_SPACE
cmp [button_x], 306 ; the last in row? cmp [button_x], 306 ; the last in row?
jne .next_button jne .next_button
add [button_y], BUTTON_SPACE ; next row add [button_y], BUTTON_SPACE ; next row
mov [button_x], TABLE_BEGIN_X mov [button_x], TABLE_BEGIN_X
jmp .next_button jmp .next_button
ret ret
endp endp
proc draw_button proc draw_button
mov ebx, [button_x] mov ebx, [button_x]
shl ebx, 16 shl ebx, 16
mov bx, BUTTON_SIDE mov bx, BUTTON_SIDE
mov ecx, [button_y] mov ecx, [button_y]
shl ecx, 16 shl ecx, 16
mov cx, BUTTON_SIDE mov cx, BUTTON_SIDE
mov edx, 0x80000000 mov edx, 0x80000000
mov dl, [symbol_current] mov dl, [symbol_current]
add edx, BUTTON_ID_SHIFT add edx, BUTTON_ID_SHIFT
mcall 8, , , mcall 8, , ,
and edx, 0x7FFFFFFF and edx, 0x7FFFFFFF
or edx, 0x20000000 or edx, 0x20000000
mcall , , , , [sc.work_button] mcall , , , , [sys_colors.work_button]
test edi, edi ; is focused? test edi, edi ; is focused?
jz .symbol ; draw only character, not selection square jz .symbol ; draw only character, not selection square
.focus_frame: ; draw a blue square (selection), 8 segments .focus_frame: ; draw a blue square (selection), 8 segments
mov esi, [button_x] mov esi, [button_x]
mov edi, [button_y] mov edi, [button_y]
mov bx, si mov bx, si
shl ebx, 16 shl ebx, 16
mov bx, si mov bx, si
add bx, BUTTON_SIDE add bx, BUTTON_SIDE
mov cx, di mov cx, di
shl ecx, 16 shl ecx, 16
mov cx, di mov cx, di
mcall 38, , , FOCUS_SQUARE_COLOR mcall 38, , , FOCUS_SQUARE_COLOR
add ecx, 0x00010001 add ecx, 0x00010001
mcall mcall
add ecx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2) add ecx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2)
mcall mcall
add ecx, 0x00010001 add ecx, 0x00010001
mcall mcall
mov bx, si mov bx, si
shl ebx, 16 shl ebx, 16
mov bx, si mov bx, si
mov cx, di mov cx, di
shl ecx, 16 shl ecx, 16
mov cx, di mov cx, di
add ecx, 2*0x10000+(BUTTON_SIDE-2) add ecx, 2*0x10000+(BUTTON_SIDE-2)
mcall 38, , , mcall 38, , ,
add ebx, 0x00010001 add ebx, 0x00010001
mcall mcall
add ebx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2) add ebx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2)
mcall mcall
add ebx, 0x00010001 add ebx, 0x00010001
mcall mcall
.symbol: .symbol:
mov ebx, [button_x] mov ebx, [button_x]
add ebx, 6 add ebx, 6
shl ebx, 16 shl ebx, 16
add ebx, [button_y] add ebx, [button_y]
add ebx, 5 add ebx, 5
mcall 4, , [sc.work_button_text], symbol_current, 1 mcall 4, , [sys_colors.work_button_text], symbol_current, 1
ret ret
endp endp
proc draw_page_switcher _blinking proc draw_page_switcher _blinking
mcall 8, , , 0x8000FFAA mcall 8, , , 0x8000FFAA
mov esi, [sc.work_button] mov esi, [sys_colors.work_button]
cmp [_blinking], 1 ; blinking? cmp [_blinking], 1 ; blinking?
jne @f jne @f
mov esi, PAGE_SWITCHER_BLINK_COLOR mov esi, PAGE_SWITCHER_BLINK_COLOR
@@: mcall , <2,60>, <157,19>, 0x2000FFAA @@: mcall , <2,60>, <157,19>, 0x2000FFAA
mov ecx, 0x80000000 mov ecx, 0x80000000
or ecx, [sc.work_button_text] or ecx, [sys_colors.work_button_text]
mov edx, string_000_127 mov edx, string_000_127
cmp [symbol_start], 0 ; first page? cmp [symbol_start], 0 ; first page?
je @f je @f
mov edx, string_128_255 ; ok, the second one mov edx, string_128_255 ; ok, the second one
@@: mcall 4, <11,164>, @@: mcall 4, <11,164>,
ret ret
endp endp
proc draw_codes proc draw_codes
mov ecx, 0x80000000 mov ecx, 0x80000000
or ecx, [sc.work_text] or ecx, [sys_colors.work_text]
mcall 4, <80,164>, , string_ASCII_CODE mcall 4, <80,164>, , string_ASCII_CODE
mcall , <180,164>, , string_ASCII_HEX_CODE mcall , <180,164>, , string_ASCII_HEX_CODE
movzx ecx, [symbol_focused] movzx ecx, [symbol_focused]
mov esi, 0x40000000 mov esi, 0x40000000
or esi, [sc.work_text] or esi, [sys_colors.work_text]
mcall 47, 0x00030000, , <152,164>, , [sc.work] mcall 47, 0x00030000, , <152,164>, , [sys_colors.work]
mcall , 0x00020100, , <276,164>, mcall , 0x00020100, , <276,164>,
ret ret
endp endp
quit: quit:
mcall -1 mcall -1
szZ window_title ,'ASCIIVju v0.4' szZ window_title ,'ASCIIVju v0.4'
szZ string_000_127 ,'000-127' szZ string_000_127 ,'000-127'
szZ string_128_255 ,'128-255' szZ string_128_255 ,'128-255'
szZ string_ASCII_CODE ,'ASCII Code: ' szZ string_ASCII_CODE ,'ASCII Code: '
szZ string_ASCII_HEX_CODE ,'ASCII Hex-Code: ' szZ string_ASCII_HEX_CODE ,'ASCII Hex-Code: '
button_x dd 2 button_x dd 2
button_y dd 2 button_y dd 2
symbol_current db 0 symbol_current db 0
symbol_start db 0 symbol_start db 0
symbol_unfocused db 0 symbol_unfocused db 0
symbol_focused db 0 symbol_focused db 0
i_end: i_end:
proc_info process_information proc_info process_information
sc system_colors sys_colors system_colors
rb 0x400 ;stack rb 0x400 ;stack
e_end: e_end:

View File

@ -507,7 +507,7 @@ struct system_colors
work_graph dd ? work_graph dd ?
ends ends
struct sys_colors struct sys_colors_new
menu_body dd ? menu_body dd ?
3d_face dd ? 3d_face dd ?
3d_dark dd ? 3d_dark dd ?