icon_new: also fix RMB, thanks Prohor for found issue

asciivju: better code, bigger fonts
quark: bugfixes

git-svn-id: svn://kolibrios.org@7957 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2020-05-20 01:13:52 +00:00
parent 7c4990bd81
commit 4fa1e75fb3
5 changed files with 319 additions and 326 deletions

View File

@ -165,6 +165,7 @@ sh=/sys/shell
asc=/sys/3d/view3ds asc=/sys/3d/view3ds
skn=/sys/skincfg skn=/sys/skincfg
dtp=/sys/skincfg
lif=/kolibrios/demos/life2 lif=/kolibrios/demos/life2
kla=/sys/games/klavisha kla=/sys/games/klavisha
pdf=/kolibrios/media/updf pdf=/kolibrios/media/updf

View File

@ -1,5 +1,5 @@
/* /*
Quark Code Edit v0.2 Quark Code Edit
Author: Kiril Lipatov aka Leency Author: Kiril Lipatov aka Leency
Licence: GPLv2 Licence: GPLv2
@ -432,7 +432,7 @@ void EventChangeCharset(dword id)
{ {
if (param[0]=='\0') return; if (param[0]=='\0') return;
user_encoding = id; user_encoding = id;
LoadFile(#openfile_path); LoadFile(#param);
ParseAndPaint(); ParseAndPaint();
draw_window(); draw_window();
} }
@ -602,11 +602,12 @@ void EncodeToDos()
if (strstr(io.buffer_data, "\208\190")) real_encoding = CH_UTF8; if (strstr(io.buffer_data, "\208\190")) real_encoding = CH_UTF8;
else { else {
if (chrnum(io.buffer_data, '\246')>5) if (chrnum(io.buffer_data, '\246')>5)
|| (strstr(io.buffer_data, "пр")) real_encoding = CH_CP1251; || (strstr(io.buffer_data, "\239\240")) real_encoding = CH_CP1251;
} }
} }
if (real_encoding != CH_CP866) if (real_encoding != CH_CP866) {
ChangeCharset(real_encoding, "CP866", io.buffer_data); ChangeCharset(real_encoding, "CP866", io.buffer_data);
}
} }
void LoadFile(dword f_path) void LoadFile(dword f_path)

View File

@ -115,10 +115,10 @@ draw_magnify:
sub edx, [m_y] sub edx, [m_y]
mov ebx, ecx mov ebx, ecx
shl ebx, 3+16 shl ebx, 3+16
mov bl, 7 mov bl, 8
mov ecx, edx mov ecx, edx
shl ecx, 3+16 shl ecx, 3+16
mov cl, 7 mov cl, 8
mov edx, eax mov edx, eax
mcall 13 mcall 13
pop edx ecx pop edx ecx

View File

@ -6,305 +6,289 @@ use32
include '../../../proc32.inc' include '../../../proc32.inc'
include '../../../macros.inc' include '../../../macros.inc'
BUTTON_SIDE equ 16 ; button are squares BUTTON_SIDE = 28 ; button are squares
BUTTON_SPACE equ 19 ; space between cols and rows BUTTON_SPACE = 34 ; space between cols and rows
BUTTON_ID_SHIFT equ 2 ; button_id = character + BUTTON_ID_SHIFT BUTTON_ID_SHIFT = 2 ; button_id = character + BUTTON_ID_SHIFT
TABLE_BEGIN_X equ 2 TABLE_BEGIN_X = 2
TABLE_BEGIN_Y equ 2 TABLE_BEGIN_Y = 2
PANEL_Y = BUTTON_SPACE*8+TABLE_BEGIN_Y+TABLE_BEGIN_Y
FOCUS_SQUARE_COLOR equ 0x000080FF FOCUS_SQUARE_COLOR = 0x000080FF
PAGE_SWITCHER_BLINK_COLOR equ 0x00808080 SWITCHER_BLINK_COLOR = 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, 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, 200*0x10000+PANEL_Y+33
add ecx, eax add ecx, eax
mov edx, 0x34000000 mov ebx, 200*0x10000+BUTTON_SPACE*16+TABLE_BEGIN_X+TABLE_BEGIN_X+9
or edx, [sys_colors.work] mcall 0, , , 0x34AAAaaa, 0x80000000, window_title
mov esi, 0x80000000 test [proc_info.wnd_state], 0x04
or esi, [sys_colors.grab_text] jnz @f
mcall 0, <300,315>, , , , window_title
test [proc_info.wnd_state], 0x04
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], BUTTON_SPACE*16+TABLE_BEGIN_X ; 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 edx, 0x80000000
shl ebx, 16 mov dl, [symbol_current]
mov bx, BUTTON_SIDE add edx, BUTTON_ID_SHIFT
mov ecx, [button_y] mov esi, 0xFFFfff
shl ecx, 16 mcall 8, <[button_x],BUTTON_SIDE>, <[button_y],BUTTON_SIDE>
mov cx, BUTTON_SIDE and edx, 0x7FFFFFFF
mov edx, 0x80000000 or edx, 0x20000000
mov dl, [symbol_current] mcall
add edx, BUTTON_ID_SHIFT
mcall 8, , ,
and edx, 0x7FFFFFFF
or edx, 0x20000000
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, 9
shl ebx, 16 shl ebx, 16
add ebx, [button_y] add ebx, [button_y]
add ebx, 5 add ebx, 7
mcall 4, , [sys_colors.work_button_text], symbol_current, 1 mcall 4, , 0x01000000, 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, 0xCCCccc
cmp [_blinking], 1 ; blinking?
jne @f
mov esi, SWITCHER_BLINK_COLOR
@@: mcall , <2,98>, <PANEL_Y+1,23>, 0x2000FFAA
mov esi, [sys_colors.work_button] mov ecx, 0x81000000
cmp [_blinking], 1 ; blinking? mov edx, string_000_127
jne @f cmp [symbol_start], 0 ; first page?
mov esi, PAGE_SWITCHER_BLINK_COLOR je @f
@@: mcall , <2,60>, <157,19>, 0x2000FFAA mov edx, string_128_255 ; ok, the second one
@@: mcall 4, <10,PANEL_Y+6>,
mcall , <115,PANEL_Y+6>, 0x81000000, string_ASCII_CODE
mov ecx, 0x80000000 ret
or ecx, [sys_colors.work_button_text]
mov edx, string_000_127
cmp [symbol_start], 0 ; first page?
je @f
mov edx, string_128_255 ; ok, the second one
@@: mcall 4, <11,164>,
ret
endp endp
proc draw_codes proc draw_codes
mov ecx, 0x80000000 movzx ecx, [symbol_focused]
or ecx, [sys_colors.work_text] mcall 47, 0x00030000, , <250,PANEL_Y+6>, 0x41000000, 0xAAAaaa
mcall 4, <80,164>, , string_ASCII_CODE mcall , 0x00020100, , <500,PANEL_Y+6>,
mcall , <180,164>, , string_ASCII_HEX_CODE
movzx ecx, [symbol_focused]
mov esi, 0x40000000
or esi, [sys_colors.work_text]
mcall 47, 0x00030000, , <152,164>, , [sys_colors.work]
mcall , 0x00020100, , <276,164>,
ret ret
endp endp
quit: quit:
mcall -1 mcall -1
szZ window_title ,'ASCIIVju v0.4' szZ window_title ,'ASCIIVju'
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: 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
sys_colors system_colors rb 0x400 ;stack
rb 0x400 ;stack
e_end: e_end:

View File

@ -195,20 +195,27 @@ MSGMouse:
mov [MouseY],ecx mov [MouseY],ecx
mov [MouseX],ebx mov [MouseX],ebx
MOUSE_STATE_LMB_HOLD = $00000001
MOUSE_STATE_RMB_HOLD = $00000002
MOUSE_EVENT_LMB_DOWN = $00000100
MOUSE_EVENT_RMB_DOWN = $00000200
mcall 37,3 mcall 37,3
test eax,1b ; bit 0 is set = left button is held ;check LMB is pressed
jnz @f test eax, MOUSE_STATE_LMB_HOLD
jmp CheckRB jz @f
test eax, MOUSE_EVENT_LMB_DOWN
jz @f
jmp LButtonPress
@@: @@:
test eax,100000000b ; bit 8 is set = left button is pressed ;check RMB is pressed
jnz @f test eax, MOUSE_STATE_RMB_HOLD
jmp CheckRB jz @f
test eax, MOUSE_EVENT_RMB_DOWN
jz @f
jmp RButtonPress
@@: @@:
jnz LButtonPress jmp messages
CheckRB:
jnz RButtonPress
jmp messages
ErrLoadLibs: ErrLoadLibs:
;dps '婚 网<>ォョ碆 ァ<>」璢ァィ粮 ュ・ョ。螳、ィャ<EFBDA8> 。ィ。ォィョ筵ェィ' ;dps '婚 网<>ォョ碆 ァ<>」璢ァィ粮 ュ・ョ。螳、ィャ<EFBDA8> 。ィ。ォィョ筵ェィ'