From 4fa1e75fb3e977974852a48fea8f8d6437a96653 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Wed, 20 May 2020 01:13:52 +0000 Subject: [PATCH] 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 --- data/common/settings/assoc.ini | 1 + programs/cmm/quark/quark.c | 9 +- programs/demos/magnify/trunk/magnify.asm | 4 +- programs/develop/asciivju/trunk/asciivju.asm | 604 +++++++++---------- programs/system/icon_new/icon.asm | 27 +- 5 files changed, 319 insertions(+), 326 deletions(-) diff --git a/data/common/settings/assoc.ini b/data/common/settings/assoc.ini index 17df68c0e8..3054ae56ea 100644 --- a/data/common/settings/assoc.ini +++ b/data/common/settings/assoc.ini @@ -165,6 +165,7 @@ sh=/sys/shell asc=/sys/3d/view3ds skn=/sys/skincfg +dtp=/sys/skincfg lif=/kolibrios/demos/life2 kla=/sys/games/klavisha pdf=/kolibrios/media/updf diff --git a/programs/cmm/quark/quark.c b/programs/cmm/quark/quark.c index cc8dc29439..9d0a4015aa 100644 --- a/programs/cmm/quark/quark.c +++ b/programs/cmm/quark/quark.c @@ -1,5 +1,5 @@ /* - Quark Code Edit v0.2 + Quark Code Edit Author: Kiril Lipatov aka Leency Licence: GPLv2 @@ -432,7 +432,7 @@ void EventChangeCharset(dword id) { if (param[0]=='\0') return; user_encoding = id; - LoadFile(#openfile_path); + LoadFile(#param); ParseAndPaint(); draw_window(); } @@ -602,11 +602,12 @@ void EncodeToDos() if (strstr(io.buffer_data, "\208\190")) real_encoding = CH_UTF8; else { 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); + } } void LoadFile(dword f_path) diff --git a/programs/demos/magnify/trunk/magnify.asm b/programs/demos/magnify/trunk/magnify.asm index e7fcb62530..50aaf95ad2 100644 --- a/programs/demos/magnify/trunk/magnify.asm +++ b/programs/demos/magnify/trunk/magnify.asm @@ -115,10 +115,10 @@ draw_magnify: sub edx, [m_y] mov ebx, ecx shl ebx, 3+16 - mov bl, 7 + mov bl, 8 mov ecx, edx shl ecx, 3+16 - mov cl, 7 + mov cl, 8 mov edx, eax mcall 13 pop edx ecx diff --git a/programs/develop/asciivju/trunk/asciivju.asm b/programs/develop/asciivju/trunk/asciivju.asm index 3ee6efe348..fcd7950cdb 100644 --- a/programs/develop/asciivju/trunk/asciivju.asm +++ b/programs/develop/asciivju/trunk/asciivju.asm @@ -1,310 +1,294 @@ -use32 - org 0x0 - db 'MENUET01' - dd 0x01,start,i_end,e_end,e_end,0,0 - -include '../../../proc32.inc' -include '../../../macros.inc' - -BUTTON_SIDE equ 16 ; button are squares -BUTTON_SPACE equ 19 ; space between cols and rows -BUTTON_ID_SHIFT equ 2 ; button_id = character + BUTTON_ID_SHIFT -TABLE_BEGIN_X equ 2 -TABLE_BEGIN_Y equ 2 - -FOCUS_SQUARE_COLOR equ 0x000080FF -PAGE_SWITCHER_BLINK_COLOR equ 0x00808080 - - -start: -still: - mcall 10 - dec eax - jz redraw - dec eax - jz key - -button: - mcall 17 - shr eax, 8 - - cmp eax, 1 - je quit - cmp ax, 0xFFAA ; page switcher - je .switch_page ; any button with a character - .change_focus: - mov bl, [symbol_focused] - mov [symbol_unfocused], bl - sub ax, BUTTON_ID_SHIFT ; get the corresponding character - mov [symbol_focused], al - stdcall draw_table, 0 - call draw_codes - jmp still - .switch_page: - movzx bx, [symbol_start] - add bx, BUTTON_ID_SHIFT - mov cx, 128 ; half of page - mov edx, 0x80000000 - mov dx, bx - @@: mcall 8 - inc edx - dec cx - jnz @b - - @@: add [symbol_start], 128 ; change page - add [symbol_focused], 128 - stdcall draw_table, 1 ; 1 means redraw the whole table - call draw_codes - stdcall draw_page_switcher, 1 ; 1 means dark color, for blinking - mcall 5, 10 - stdcall draw_page_switcher, 0 ; 0 means usual light color - jmp still - -redraw: - mcall 9, proc_info, -1 - mcall 48, 3, sys_colors, 40 - - mcall 12, 1 - - mcall 48, 4 ; get skin height - mov ecx, 300*0x10000+184 - add ecx, eax - mov edx, 0x34000000 - or edx, [sys_colors.work] - mov esi, 0x80000000 - or esi, [sys_colors.grab_text] - mcall 0, <300,315>, , , , window_title - test [proc_info.wnd_state], 0x04 - jnz @f - - stdcall draw_table, 1 - call draw_codes - stdcall draw_page_switcher, 0 - - @@: - mcall 12, 2 - jmp still - -key: - mcall 2 - cmp ah, 0x09 ; TAB key - je button.switch_page - - cmp ah, 0xB0 ; left - jne @f - mov bl, [symbol_focused] - mov [symbol_unfocused], bl - dec bl - and bl, 0x0f - and [symbol_focused], 0xf0 - or [symbol_focused], bl - stdcall draw_table, 0 - call draw_codes - jmp still - - @@: cmp ah, 0xB1 ; down - jne @f - mov bl, [symbol_focused] - mov [symbol_unfocused], bl - add bl, 16 - and bl, 0x70 - and [symbol_focused], 0x8f - or [symbol_focused], bl - stdcall draw_table, 0 - call draw_codes - jmp still - - @@: cmp ah, 0xB2 ; up - jne @f - mov bl, [symbol_focused] - mov [symbol_unfocused], bl - sub bl, 16 - and bl, 0x70 - and [symbol_focused], 0x8f - or [symbol_focused], bl - stdcall draw_table, 0 - call draw_codes - jmp still - - @@: cmp ah, 0xB3 ; righ - jne @f - mov bl, [symbol_focused] - mov [symbol_unfocused], bl - inc bl - and bl, 0x0f - and [symbol_focused], 0xf0 - or [symbol_focused], bl - stdcall draw_table, 0 - call draw_codes - jmp still - jne @f - - @@: - jmp still - - - -proc draw_table _full_redraw - - mov al, [symbol_start] - mov [symbol_current], al - - .next_button: - - xor edi, edi ; character focus flag - mov al, [symbol_current] - cmp al, [symbol_focused] - jne @f - inc edi - @@: cmp [_full_redraw], 1 - je .draw - cmp al, [symbol_focused] - je .draw - cmp al, [symbol_unfocused] ; previously focused, should redraw to clear focus - je .draw - jmp .skip ; skip button if it isn't (un)focused - - .draw: - call draw_button - .skip: - mov bl, [symbol_start] - add bl, 127 ; end of current page - cmp [symbol_current], bl ; the last on page? - jne @f - mov [button_x], TABLE_BEGIN_X - mov [button_y], TABLE_BEGIN_Y - ret - @@: inc [symbol_current] - add [button_x], BUTTON_SPACE - cmp [button_x], 306 ; the last in row? - jne .next_button - add [button_y], BUTTON_SPACE ; next row - mov [button_x], TABLE_BEGIN_X - jmp .next_button - ret -endp - - -proc draw_button - mov ebx, [button_x] - shl ebx, 16 - mov bx, BUTTON_SIDE - mov ecx, [button_y] - shl ecx, 16 - mov cx, BUTTON_SIDE - mov edx, 0x80000000 - mov dl, [symbol_current] - add edx, BUTTON_ID_SHIFT - mcall 8, , , - and edx, 0x7FFFFFFF - or edx, 0x20000000 - mcall , , , , [sys_colors.work_button] - - test edi, edi ; is focused? - jz .symbol ; draw only character, not selection square - .focus_frame: ; draw a blue square (selection), 8 segments - mov esi, [button_x] - mov edi, [button_y] - - mov bx, si - shl ebx, 16 - mov bx, si - add bx, BUTTON_SIDE - mov cx, di - shl ecx, 16 - mov cx, di - mcall 38, , , FOCUS_SQUARE_COLOR - add ecx, 0x00010001 - mcall - add ecx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2) - mcall - add ecx, 0x00010001 - mcall - - mov bx, si - shl ebx, 16 - mov bx, si - mov cx, di - shl ecx, 16 - mov cx, di - add ecx, 2*0x10000+(BUTTON_SIDE-2) - mcall 38, , , - add ebx, 0x00010001 - mcall - add ebx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2) - mcall - add ebx, 0x00010001 - mcall - - .symbol: - mov ebx, [button_x] - add ebx, 6 - shl ebx, 16 - add ebx, [button_y] - add ebx, 5 - mcall 4, , [sys_colors.work_button_text], symbol_current, 1 - - ret -endp - - -proc draw_page_switcher _blinking - - mcall 8, , , 0x8000FFAA - - mov esi, [sys_colors.work_button] - cmp [_blinking], 1 ; blinking? - jne @f - mov esi, PAGE_SWITCHER_BLINK_COLOR - @@: mcall , <2,60>, <157,19>, 0x2000FFAA - - mov ecx, 0x80000000 - 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 - - -proc draw_codes - - mov ecx, 0x80000000 - or ecx, [sys_colors.work_text] - mcall 4, <80,164>, , string_ASCII_CODE - 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 -endp - - -quit: - mcall -1 - - -szZ window_title ,'ASCIIVju v0.4' -szZ string_000_127 ,'000-127' -szZ string_128_255 ,'128-255' -szZ string_ASCII_CODE ,'ASCII Code: ' -szZ string_ASCII_HEX_CODE ,'ASCII Hex-Code: ' - -button_x dd 2 -button_y dd 2 - -symbol_current db 0 -symbol_start db 0 - -symbol_unfocused db 0 -symbol_focused db 0 -i_end: -proc_info process_information -sys_colors system_colors -rb 0x400 ;stack -e_end: +use32 + org 0x0 + db 'MENUET01' + dd 0x01,start,i_end,e_end,e_end,0,0 + +include '../../../proc32.inc' +include '../../../macros.inc' + +BUTTON_SIDE = 28 ; button are squares +BUTTON_SPACE = 34 ; space between cols and rows +BUTTON_ID_SHIFT = 2 ; button_id = character + BUTTON_ID_SHIFT +TABLE_BEGIN_X = 2 +TABLE_BEGIN_Y = 2 +PANEL_Y = BUTTON_SPACE*8+TABLE_BEGIN_Y+TABLE_BEGIN_Y + +FOCUS_SQUARE_COLOR = 0x000080FF +SWITCHER_BLINK_COLOR = 0x00808080 + + +start: +still: + mcall 10 + dec eax + jz redraw + dec eax + jz key + +button: + mcall 17 + shr eax, 8 + + cmp eax, 1 + je quit + cmp ax, 0xFFAA ; page switcher + je .switch_page ; any button with a character + .change_focus: + mov bl, [symbol_focused] + mov [symbol_unfocused], bl + sub ax, BUTTON_ID_SHIFT ; get the corresponding character + mov [symbol_focused], al + stdcall draw_table, 0 + call draw_codes + jmp still + .switch_page: + movzx bx, [symbol_start] + add bx, BUTTON_ID_SHIFT + mov cx, 128 ; half of page + mov edx, 0x80000000 + mov dx, bx + @@: mcall 8 + inc edx + dec cx + jnz @b + + @@: add [symbol_start], 128 ; change page + add [symbol_focused], 128 + stdcall draw_table, 1 ; 1 means redraw the whole table + call draw_codes + stdcall draw_page_switcher, 1 ; 1 means dark color, for blinking + mcall 5, 10 + stdcall draw_page_switcher, 0 ; 0 means usual light color + jmp still + +redraw: + mcall 9, proc_info, -1 + + mcall 12, 1 + + mcall 48, 4 ; get skin height + mov ecx, 200*0x10000+PANEL_Y+33 + add ecx, eax + mov ebx, 200*0x10000+BUTTON_SPACE*16+TABLE_BEGIN_X+TABLE_BEGIN_X+9 + mcall 0, , , 0x34AAAaaa, 0x80000000, window_title + test [proc_info.wnd_state], 0x04 + jnz @f + + stdcall draw_table, 1 + call draw_codes + stdcall draw_page_switcher, 0 + + @@: + mcall 12, 2 + jmp still + +key: + mcall 2 + cmp ah, 0x09 ; TAB key + je button.switch_page + + cmp ah, 0xB0 ; left + jne @f + mov bl, [symbol_focused] + mov [symbol_unfocused], bl + dec bl + and bl, 0x0f + and [symbol_focused], 0xf0 + or [symbol_focused], bl + stdcall draw_table, 0 + call draw_codes + jmp still + + @@: cmp ah, 0xB1 ; down + jne @f + mov bl, [symbol_focused] + mov [symbol_unfocused], bl + add bl, 16 + and bl, 0x70 + and [symbol_focused], 0x8f + or [symbol_focused], bl + stdcall draw_table, 0 + call draw_codes + jmp still + + @@: cmp ah, 0xB2 ; up + jne @f + mov bl, [symbol_focused] + mov [symbol_unfocused], bl + sub bl, 16 + and bl, 0x70 + and [symbol_focused], 0x8f + or [symbol_focused], bl + stdcall draw_table, 0 + call draw_codes + jmp still + + @@: cmp ah, 0xB3 ; righ + jne @f + mov bl, [symbol_focused] + mov [symbol_unfocused], bl + inc bl + and bl, 0x0f + and [symbol_focused], 0xf0 + or [symbol_focused], bl + stdcall draw_table, 0 + call draw_codes + jmp still + jne @f + + @@: + jmp still + + + +proc draw_table _full_redraw + + mov al, [symbol_start] + mov [symbol_current], al + + .next_button: + + xor edi, edi ; character focus flag + mov al, [symbol_current] + cmp al, [symbol_focused] + jne @f + inc edi + @@: cmp [_full_redraw], 1 + je .draw + cmp al, [symbol_focused] + je .draw + cmp al, [symbol_unfocused] ; previously focused, should redraw to clear focus + je .draw + jmp .skip ; skip button if it isn't (un)focused + + .draw: + call draw_button + .skip: + mov bl, [symbol_start] + add bl, 127 ; end of current page + cmp [symbol_current], bl ; the last on page? + jne @f + mov [button_x], TABLE_BEGIN_X + mov [button_y], TABLE_BEGIN_Y + ret + @@: inc [symbol_current] + add [button_x], BUTTON_SPACE + cmp [button_x], BUTTON_SPACE*16+TABLE_BEGIN_X ; the last in row? + jne .next_button + add [button_y], BUTTON_SPACE ; next row + mov [button_x], TABLE_BEGIN_X + jmp .next_button + ret +endp + + +proc draw_button + mov edx, 0x80000000 + mov dl, [symbol_current] + add edx, BUTTON_ID_SHIFT + mov esi, 0xFFFfff + mcall 8, <[button_x],BUTTON_SIDE>, <[button_y],BUTTON_SIDE> + and edx, 0x7FFFFFFF + or edx, 0x20000000 + mcall + + test edi, edi ; is focused? + jz .symbol ; draw only character, not selection square + .focus_frame: ; draw a blue square (selection), 8 segments + mov esi, [button_x] + mov edi, [button_y] + + mov bx, si + shl ebx, 16 + mov bx, si + add bx, BUTTON_SIDE + mov cx, di + shl ecx, 16 + mov cx, di + mcall 38, , , FOCUS_SQUARE_COLOR + add ecx, 0x00010001 + mcall + add ecx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2) + mcall + add ecx, 0x00010001 + mcall + + mov bx, si + shl ebx, 16 + mov bx, si + mov cx, di + shl ecx, 16 + mov cx, di + add ecx, 2*0x10000+(BUTTON_SIDE-2) + mcall 38, , , + add ebx, 0x00010001 + mcall + add ebx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2) + mcall + add ebx, 0x00010001 + mcall + + .symbol: + mov ebx, [button_x] + add ebx, 9 + shl ebx, 16 + add ebx, [button_y] + add ebx, 7 + mcall 4, , 0x01000000, symbol_current, 1 + + ret +endp + + +proc draw_page_switcher _blinking + + mcall 8, , , 0x8000FFAA + mov esi, 0xCCCccc + cmp [_blinking], 1 ; blinking? + jne @f + mov esi, SWITCHER_BLINK_COLOR + @@: mcall , <2,98>, , 0x2000FFAA + + mov ecx, 0x81000000 + mov edx, string_000_127 + cmp [symbol_start], 0 ; first page? + je @f + mov edx, string_128_255 ; ok, the second one + @@: mcall 4, <10,PANEL_Y+6>, + mcall , <115,PANEL_Y+6>, 0x81000000, string_ASCII_CODE + + ret +endp + + +proc draw_codes + + movzx ecx, [symbol_focused] + mcall 47, 0x00030000, , <250,PANEL_Y+6>, 0x41000000, 0xAAAaaa + mcall , 0x00020100, , <500,PANEL_Y+6>, + + ret +endp + + +quit: + mcall -1 + + +szZ window_title ,'ASCIIVju' +szZ string_000_127 ,'000-127' +szZ string_128_255 ,'128-255' +szZ string_ASCII_CODE ,'ASCII Code: ASCII Hex-Code:' + +button_x dd 2 +button_y dd 2 + +symbol_current db 0 +symbol_start db 0 + +symbol_unfocused db 0 +symbol_focused db 0 +i_end: +proc_info process_information +rb 0x400 ;stack +e_end: diff --git a/programs/system/icon_new/icon.asm b/programs/system/icon_new/icon.asm index 0da9a1684d..e2821f61fa 100644 --- a/programs/system/icon_new/icon.asm +++ b/programs/system/icon_new/icon.asm @@ -195,20 +195,27 @@ MSGMouse: mov [MouseY],ecx 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 - test eax,1b ; bit 0 is set = left button is held - jnz @f - jmp CheckRB +;check LMB is pressed + test eax, MOUSE_STATE_LMB_HOLD + jz @f + test eax, MOUSE_EVENT_LMB_DOWN + jz @f + jmp LButtonPress @@: - test eax,100000000b ; bit 8 is set = left button is pressed - jnz @f - jmp CheckRB +;check RMB is pressed + test eax, MOUSE_STATE_RMB_HOLD + jz @f + test eax, MOUSE_EVENT_RMB_DOWN + jz @f + jmp RButtonPress @@: - jnz LButtonPress -CheckRB: - jnz RButtonPress - jmp messages + jmp messages ErrLoadLibs: ;dps ' 㤠 㧨 室 ⥪'