2,7 → 2,7 |
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; Compile with FASM |
; Version 0.3.6: Oct 9, 2018 |
; Version 0.3.7: Oct 14, 2018 |
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
; All rights reserved. |
115,6 → 115,7 |
invoke edit_box_mouse, editRU |
invoke edit_box_mouse, editRD |
;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;ïðîâåðêà ìûøè äëÿ êîìáîáîêñà |
invoke edit_box_mouse, editRadius |
|
jmp event_wait |
|
127,10 → 128,66 |
mov eax, 2 ; The key is returned in ah. The key must be |
mcall ; read and cleared from the system queue. |
|
;push eax |
invoke edit_box_key, editLU |
invoke edit_box_key, editLD |
invoke edit_box_key, editRU |
invoke edit_box_key, editRD |
invoke edit_box_key, editRadius |
;pop eax |
|
cmp eax, 1 |
je event_wait ;.end ;@f |
cmp word[hkSymbol], 0 |
jne event_wait ;.end ;@f |
cmp al, 0 |
jne .next |
mov byte[hkSymbol], ah |
|
push eax ecx esi ;ñîõðàíÿåì ñêàíêîä êëàâèøè |
shr eax, 16 |
mov byte[keyscan], al |
mov ecx, 0 |
mov cl, al ;byte[keyscan] |
mov esi, keystr.data |
call IntToStr |
|
;ñ÷èòàåì ïîëó÷åííûé ðàçìåð ñòðîêè |
xor ecx, ecx |
mov esi, keystr.data |
@@: |
cmp byte[esi], 0 |
je @f |
inc esi |
inc ecx |
;cmp ecx, 4 |
;je @f |
jmp @b |
@@: |
;è ñîõðàíÿåì åãî |
mov dword[keystr.size], ecx |
|
; cmp ecx, 3 |
; jbe @f |
; mcall -1 |
; @@: |
|
pop esi ecx eax |
|
jmp red |
.next: |
;cmp al, 2 |
;jne @f |
;cmp ah, 0 |
;jne @f |
;ñ÷èòûâàåì óïðàâëÿþùèå êëàâèøè |
;shr eax, 16 |
;bt eax, 0 ;left shift |
;jne @f |
;mov byte[hkSymbol], 2 |
;jmp red |
@@: |
;.end: |
jmp event_wait ; Just read the key, ignore it and jump to event_wait. |
|
button: ; Buttonpress event handler |
182,7 → 239,7 |
mov word[coordModeMenu.x], ax |
|
mov eax, dword[pi+38] |
add eax, buttonModeY + 17 ;20 ;42 |
add eax, buttonModeY + 13 ;17 |
mov word[coordModeMenu.y], ax |
|
stdcall [ksubmenu_draw], [modeMenu], coordModeMenu |
189,6 → 246,11 |
pop ecx ebx eax |
jmp event_wait |
@@: |
cmp ah, 9 |
jne @f |
mov word[hkSymbol], 0 |
jmp red ;event_wait |
@@: |
cmp ah, 110 |
jne @f |
mov byte[mode], 48 ;'0' |
227,8 → 289,8 |
.path_adr dd fileName ;ïóòü |
|
;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è å¸ ðàçìåð |
defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10 |
defaultDataSize = 48+19 |
defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'Space',13,10,'57',13,10,'10',13,10,'s',13,10 |
defaultDataSize = 85 ;48+19+4 |
|
|
copyParam: ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå) |
271,12 → 333,22 |
;mov dword[createFile.size], defaultDataSize |
|
;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ |
mov ecx, 5*2+1 ;1 áàéò íà ñîñòîÿíèå àêòèâíîñòè è 5 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10) |
mov ecx, 9*2+1 ;1 áàéò íà ñîñòîÿíèå àêòèâíîñòè è 9 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10) |
add ecx, dword[editLU.size] ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ |
add ecx, dword[editLD.size] |
add ecx, dword[editRU.size] |
add ecx, dword[editRD.size] ;dataBuffer.size4] |
add ecx, dword[editRadius.size] |
add ecx, dword[hkSize] ;ðàçìåð èìåíè àêòèâàöèîííîé êíîïêè |
add ecx, dword[keystr.size] ;ðàçìåð ñêàíêîäà àêòèâàöèîííîé êíîïêè |
inc ecx ; åù¸ 1 áàéò äëÿ õðàíåíèÿ ðàçìåðà ýëåìåíòîâ |
;mov ecx, 85 |
|
cmp dword[keystr.size], 3 |
jbe @f |
;mcall -1 |
@@: |
|
;åñëè çàäàíû ïóñòûå ñòðîêè, òî ìû àâòîìàòè÷åñêè äîáàâëÿåì çíàê ìèíóñ, çíà÷èò ðàçìåð +1 áàéò |
cmp dword[editLU.size], 0 |
jne @f |
304,7 → 376,6 |
;cmp byte[mode], 0 |
;jne @f |
;@@: |
; |
|
push ebx ;ñîõðàíÿåì âûáðàííûé ðåæèì |
mov bl, byte[mode] |
337,6 → 408,41 |
call copyParam |
call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
|
;ñîõðàíÿåì êíîïêó àêòèâàöèè |
call saveKey |
call addPerenos |
|
;ñîõðàíÿåì ñêàíêîä êíîïêè |
mov esi, keystr.data ;çàïèñûâàåì ñòðîêó keystr â ôàéë |
xor ebx, ebx |
@@: |
cmp byte[esi], 0 |
je @f |
mov bl, byte[esi] |
mov byte[eax], bl |
inc eax |
inc esi |
cmp esi, keystr.size-1 |
jae @f |
jmp @b |
@@: |
call addPerenos |
|
;ñîõðàíÿåì ðàäèóñ |
;!!! åñëè ðàäèóñ îñòàâëåí ïóñòûì, òî íóæíî ñîõðàíÿòü çíà÷åíèå ïî óìîë÷àíèþ (ñåé÷àñ ïèøåòñÿ '-') |
mov esi, radiusBuffer.data |
mov ebx, editRadius.size ;radiusBuffer.size |
call copyParam |
call addPerenos |
|
;äîáàâëÿåì ðàçìåð ýëåìåíòîâ |
push ebx ;ñîõðàíÿåì âûáðàííûé ðåæèì |
mov bl, byte[sizeStyle] |
mov byte[eax], bl |
pop ebx |
inc eax |
call addPerenos |
|
pop ebx esi |
|
|
440,6 → 546,9 |
mov eax, dword[editRD.size] |
mov dword[dataBuffer.size4], eax |
|
mov eax, dword[editRadius.size] |
mov dword[radiusBuffer.size], eax |
|
pop eax |
ret |
|
474,7 → 583,13 |
mov byte[mode], 48 ;'0' |
jmp loadConfig.modeEnd |
@@: |
mov byte[mode], 49 ;'1' èíà÷å ïî óìîë÷àíèþ âêëþ÷¸í êëàññè÷åñêèé ðåæèì ðàáîòû |
cmp bl, 'y' ;åñëè y - òî êëàññè÷åñêèé ðåæèì |
jne @f |
mov byte[mode], 49 ;'1' |
jmp loadConfig.modeEnd |
@@: |
mov byte[mode], 48 ;'0' èíà÷å ïî óìîë÷àíèþ îòêëþ÷åíî |
;mov byte[mode], 49 ;'1' èíà÷å ïî óìîë÷àíèþ âêëþ÷¸í êëàññè÷åñêèé ðåæèì ðàáîòû |
.modeEnd: |
pop ebx |
;jmp loadConfig.end ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê |
530,6 → 645,18 |
cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì |
jb loadConfig.block |
|
call readOptKey ;ñ÷èòûâàåì êëàâèøó |
call gotoEndString |
|
;ñ÷èòûâàåì ñêàíêîä êëàâèøè |
call readScanKey |
call gotoEndString |
|
call readOptRadius ;ñ÷èòûâàåì çíà÷åíèå ðàäèóñà äëÿ mode 3 |
call gotoEndString |
call readOptSize ;ñ÷èòûâàåì ðàçìåð ýëåìåíòîâ |
call gotoEndString |
|
pop eax ebx ecx esi edi |
|
jmp loadConfig.end |
544,10 → 671,333 |
mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìÿòè |
@@: |
call updateParams ;ïðèìåíÿåì íàñòðîéêè êàæäîãî áóôåðà |
call setMySize ;ïðèìåíÿåì íàñòðîéêè ðàçìåðà ýëåìåíòîâ |
pop edx ecx ebx eax |
ret |
|
|
setMySize: |
push eax |
;âûñòàâëÿåì mysize â çàâèñèìîñòè îò çíà÷åíèÿ sizeStyle |
cmp byte[sizeStyle], '0' |
jb @f |
cmp byte[sizeStyle], '7' |
ja @f |
mov eax, 0 ;åñëè çíà÷åíèå ðàçìåðà çàäàíî, òî åãî è âûñòàâëÿåì |
mov al, byte[sizeStyle] |
sub al, '0' |
jmp .end |
@@: |
cmp byte[sizeStyle], 'a' |
je .auto |
;cmp byte[sizeStyle], 's' |
;je .system |
.system: ;èíà÷å çíà÷åíèå ïî óìîë÷àíèþ: s - ñèñòåìíàÿ |
; push ebx ecx |
;!!! |
; mov eax, 9 |
; mcall 48, 11 ;ïîëó÷àåì ñèñòåìíûé ðàçìåð øðèôòà |
;eax - âûñîòà øðèôòà â ïèêñåëÿõ |
; mov ecx, eax |
; push eax |
; mcall 48, 12, ecx ;ïðèìåíÿåì ðàçìåð øðèôòà |
; pop eax |
; pop ecx ebx |
;temp fix - äåëèì íà òåêóùèé ðàçìåð øðèôòà and -1 |
; push ebx edx |
; mov ebx, 9 |
;div ebx |
; pop edx ebx |
;cmp eax, 0 |
;je .end |
;dec eax |
mov eax, 0 ;xor eax, eax ;test temp |
jmp .end |
.auto: ;a - âûñòàâëÿåì â çàâèñèìîñòè îò ðàçðåøåíèÿ ýêðàíà |
;!!! |
mcall 14 |
push ebx |
xor ebx, ebx |
mov bx, ax |
shr eax, 16 |
cmp ax, bx ;ïîëó÷àåì áîëüøèé ðàçìåð ñòîðîíû |
jae .a |
mov ax, bx |
.a: |
pop ebx |
cmp ax, 1919 ;ðàçìåðû ïîëó÷åííûå âûøå îò 0 è íà 1 ìåíüøå |
jb .size0 |
cmp ax, 2047 |
jb .size1 |
cmp ax, 4095 |
jb .size2 |
cmp ax, 8191 |
jb .size3 |
|
jmp .size4 |
|
.size0: |
mov eax, 0 |
jmp .end |
.size1: |
mov eax, 1 |
jmp .end |
.size2: |
mov eax, 2 |
jmp .end |
.size3: |
mov eax, 3 |
jmp .end |
.size4: |
mov eax, 4 |
jmp .end |
.size5: |
mov eax, 5 |
jmp .end |
.size6: |
mov eax, 6 |
jmp .end |
.size7: |
mov eax, 7 |
jmp .end |
|
;.default: |
; mov eax, 1 |
.end: |
mov byte[mysize], al ;mov dword[mysize], eax |
pop eax |
ret |
|
|
readScanKey: |
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
cmp byte[eax], 10 |
je @f |
cmp byte[eax], 0 |
je @f |
cmp byte[eax], 13 |
je @f |
|
push ecx ebx esi |
mov ecx, 0 ;xor ecx, ecx |
mov esi, keystr.data |
.copy: |
mov bl, byte[eax] |
cmp bl, 0 |
je .copyEnd |
cmp bl, 10 |
je .copyEnd |
cmp bl, 13 |
je .copyEnd |
cmp esi, keystr.size-1 |
jae .copyEnd |
mov byte[esi], bl |
inc esi |
inc eax |
inc ecx |
jmp .copy |
.copyEnd: |
mov byte[esi], 0 |
mov dword[keystr.size], ecx |
pop esi ebx ecx |
|
jmp .end |
@@: |
inc eax |
jmp readScanKey |
.default: |
mov byte[keyscan], 57 |
mov word[keystr.data], '57' |
mov byte[keystr.data+2], 0 |
mov dword[keystr.size], 2 |
.end: |
ret |
|
readOptKey: ;1;3;4;5 - space or shift |
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
cmp byte[eax], 10 |
je @f |
cmp byte[eax], 0 |
je @f |
cmp byte[eax], 13 |
je @f |
;èíà÷å ÷èòàåì êëàâèøó è âûõîäèì |
cmp dword[eax], 'Ctrl' |
jne .notCtrl |
mov byte[hkSymbol], 3 |
mov dword[hkSize], 4 |
jmp .end |
.notCtrl: |
cmp dword[eax], 'Shif' |
jne .notShift |
mov byte[hkSymbol], 2 |
mov dword[hkSize], 5 |
jmp .end |
.notShift: |
cmp dword[eax], 'Spac' |
jne .notSpace |
mov byte[hkSymbol], 32 |
mov dword[hkSize], 5 |
jmp .end |
.notSpace: |
cmp word[eax], 'Al' |
jne .notAlt |
mov byte[hkSymbol], 1 |
mov dword[hkSize], 3 |
jmp .end |
.notAlt: |
;óáåäèìñÿ, ÷òî òàì 1 ñèìâîë, à íå ñòðîêà |
cmp byte[eax+1], 10 |
je .oneSymb |
cmp byte[eax+1], 0 |
je .oneSymb |
cmp byte[eax+1], 13 |
je .oneSymb |
jmp .default |
.oneSymb: |
;ïðîâåðÿåì, ÷òî ñèìâîë ðàçðåø¸ííûé !!! |
|
;äîáàâëÿåì ñèìâîë êàê åñòü |
push ebx |
;xor ebx, ebx |
mov bl, byte[eax] |
mov byte[hkSymbol], bl |
mov dword[hkSize], 1 |
pop ebx |
|
jmp .end |
@@: |
inc eax |
jmp readOptKey |
|
.default: |
mov byte[hkSymbol], 32 |
mov dword[hkSize], 5 |
.end: |
mov byte[hkSymbol+1], 0 |
ret |
|
;ïðîõîäèì äî êîíöà òåêóùåé ñòðîêè |
gotoEndString: |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
ja @f ;âûõîäèì |
cmp byte[eax], 10 |
je @f |
cmp byte[eax], 0 |
je @f |
cmp byte[eax], 13 |
je @f |
;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
inc eax |
jmp gotoEndString |
@@: |
ret |
|
readOptRadius: |
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
cmp byte[eax], 10 |
je @f |
cmp byte[eax], 0 |
je @f |
cmp byte[eax], 13 |
je @f |
|
;èíà÷å ñ÷èòûâàåì çíà÷åíèå |
push ebx ecx |
xor ecx, ecx |
.readValue: |
mov bl, byte[eax] |
mov byte[radiusBuffer.data+ecx], bl |
inc ecx |
inc eax |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî âûõîä |
ja .readEnd |
cmp byte[eax], 10 |
je .readEnd |
cmp byte[eax], 0 |
je .readEnd |
cmp byte[eax], 13 |
je .readEnd |
cmp ecx, 6 |
jae .readEnd |
jmp .readValue |
.readEnd: |
mov byte[radiusBuffer.data+ecx], 0 |
mov dword[radiusBuffer.size], ecx |
pop ecx ebx |
|
jmp .end |
@@: |
inc eax |
jmp readOptRadius |
.default: |
mov byte[radiusBuffer.data], '0' |
mov byte[radiusBuffer.data+1], 0 |
mov dword[radiusBuffer.size], 1 |
.end: |
|
ret |
|
|
readOptSize: |
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
cmp byte[eax], 10 |
je @f |
cmp byte[eax], 0 |
je @f |
cmp byte[eax], 13 |
je @f |
|
;ïðîâåðÿåì, ÷òî ýòî äîïóñòèìîå çíà÷åíèå: 1-7, a, s |
cmp byte[eax], 'a' |
je .setValue |
cmp byte[eax], 's' |
je .setValue |
cmp byte[eax], '0' |
je .setValue |
cmp byte[eax], '1' |
je .setValue |
cmp byte[eax], '2' |
je .setValue |
cmp byte[eax], '3' |
je .setValue |
cmp byte[eax], '4' |
je .setValue |
cmp byte[eax], '5' |
je .setValue |
cmp byte[eax], '6' |
je .setValue |
cmp byte[eax], '7' |
je .setValue |
|
jmp .default ;èíà÷å ñòàâèì çíà÷åíèå ïî óìîë÷àíèþ |
|
.setValue: |
push ebx |
mov bl, byte[eax] |
mov byte[sizeStyle], bl |
pop ebx |
|
jmp .end |
@@: |
inc eax |
jmp readOptSize |
.default: |
mov byte[sizeStyle], 's' ;ñèñòåìíûé |
.end: |
ret |
|
|
|
|
updateParams: ;max, size, pos |
push eax |
mov eax, dword[dataBuffer.size1] |
565,6 → 1015,10 |
mov eax, dword[dataBuffer.size4] |
mov dword[editRD.size], eax |
mov dword[editRD.pos], eax |
|
mov eax, dword[radiusBuffer.size] |
mov dword[editRadius.size], eax |
mov dword[editRadius.pos], eax |
pop eax |
ret |
|
639,7 → 1093,7 |
ret |
|
WindowsWidth = 450 |
WindowsHeight = 195 |
WindowsHeight = 195 + 35 - 5 |
coord: ;êîîðäèíàòû îêíà ïðèëîæåíèÿ |
.y dw 0 |
.x dw 0 |
697,13 → 1151,14 |
invoke edit_box_draw, editRD |
|
;ðèñóåì êíîïêó |
buttonAppleY = WindowsHeight-35 ;160 |
mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè |
mov ecx, 160*65536 + 20 ;êîîðäèíàòà Y, âûñîòà êíîïêè |
mov ecx, buttonAppleY*65536 + 20 ;êîîðäèíàòà Y, âûñîòà êíîïêè |
mov edx, 0x00000002 ;2 ;íîìåð êíîïêè |
mov esi, 0x00AABBCC ;öâåò êíîïêè |
mcall 8 |
;ðèñóåì òåêñò êíîïêè |
mov ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + 166 ;êîîðäèíàòû òåêñòà (x, y) |
mov ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + (buttonAppleY+6) ;êîîðäèíàòû òåêñòà (x, y) |
mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà |
mov edx, buttonText |
mov esi, buttonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ |
761,7 → 1216,8 |
buttonModeX = 30 ;433 |
buttonModeY = 160 ;50 |
buttonModeWidth = 221 |
buttonModeHeight = 20 |
buttonModeHeight = 14 ;20 |
buttonModeTextYoffset = 3;6 |
buttonModeTextXoffset = 5 |
mov ebx, buttonModeX*65536 + buttonModeWidth ;X + Width |
mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height |
773,21 → 1229,73 |
mov edx, 0xAABBCC |
mcall 13 |
;draw text for button Mode |
mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+6) ;(x, y) |
mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y) |
mov ecx, 0x000000 |
call setTextModeMenu |
mov esi, valueModeMenuSize |
mcall 4 |
mov ebx, (buttonModeX+buttonModeWidth-12) * 65536 + (buttonModeY+6) |
mov ebx, (buttonModeX+buttonModeWidth-12) * 65536 + (buttonModeY+buttonModeTextYoffset) |
mov ecx, 0x80FFFFFF |
mov edx, symbolDownArrow |
mcall 4 |
|
;êíîïêà âûáîðà ãîðÿ÷åé êëàâèøè |
buttonHotKeyX = 280-10 |
buttonHotKeyWidth = 90 |
mov edx, 0x80000009 ;óäàëÿåì |
mcall 8 |
cmp byte[mode], 49 ;ðèñóåì âûáîð êëàâèøè, òîëüêî åñëè mode > 1 |
jbe @f |
;ðèñóåì íîâóþ |
push eax ebx ecx edx esi |
mov ebx, buttonHotKeyX*65536 + buttonHotKeyWidth ;X + Width |
mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height |
mov edx, 0x00000009 ;button id |
mov esi, 0x00FFFFFF ;color button |
mcall 8 |
pop esi edx ecx ebx eax |
;òåêñò ïîäñêàçêè äëÿ ãîðÿ÷åé êëàâèøè |
mov ebx, (buttonHotKeyX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y) |
mov ecx, 0x80224466 |
call setTextForHotKey |
mov esi, valueModeMenuSize |
mcall 4 |
;çàãîëîâîê |
push eax ebx ecx edx edi esi |
mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11) |
mov ecx, 0x80224466 |
mov edx, hkCaption |
mov esi, 3 |
mcall 4 |
pop esi edi edx ecx ebx eax |
@@: |
|
;îòîáðàæàåì íàñòðîéêó ðàäèóñà äåéñòâèÿ æåñòà, òîëüêî åñëè âûáðàí ðåæèì 3 |
cmp byte[mode], 51 |
jne @f |
;çàãîëîâîê |
push eax ebx ecx edx edi esi |
mov ebx, (buttonHotKeyX + buttonHotKeyWidth + 20) * 65536 + (buttonModeY-11) |
mov ecx, 0x80224466 |
mov edx, radiusCaption |
mov esi, 3 |
mcall 4 |
pop esi edi edx ecx ebx eax |
invoke edit_box_draw, editRadius |
@@: |
|
call draw_super_text |
|
LineLength = 62 |
mov ebx, 40 * 65536 + 36 ; draw info text with function 4 (x, y) |
|
;xor ecx, ecx |
;mov cl, 1 ;byte[mysize] |
;shl ecx, 24 |
;add ecx, 0x224466 |
;or ecx, 0x00224466 ;80224466 |
mov ecx, 0x224466 |
|
mov edx, text |
mov esi, LineLength |
mov eax, 4 |
805,7 → 1313,80 |
|
ret |
|
hkSymbol: db 0, 0 |
|
setTextForHotKey: |
push eax |
mov al, byte[hkSymbol] |
cmp al, 0 |
jne @f |
mov edx, hkHint |
mov dword[hkSize], 5 ;çíà÷åíèå ïî óìîë÷àíèþ SPACE ;shift |
jmp setTextForHotKey.end |
@@: |
cmp al, 1 |
jne @f |
mov edx, hkAlt |
mov dword[hkSize], 3 |
jmp setTextForHotKey.end |
@@: |
cmp al, 2 |
jne @f |
mov edx, hkShift |
mov dword[hkSize], 5 |
jmp setTextForHotKey.end |
@@: |
cmp al, 3 |
jne @f |
mov edx, hkCtrl |
mov dword[hkSize], 4 |
jmp setTextForHotKey.end |
@@: |
cmp al, 32 |
jne @f |
mov edx, hkSpace |
mov dword[hkSize], 5 |
jmp setTextForHotKey.end |
@@: |
cmp al, 96 ;'`' |
je setTextForHotKey.symb |
cmp al, 126 ;'~' |
je setTextForHotKey.symb |
cmp al, 48 ;'0' |
jb @f |
cmp al, 57 ;'9' |
ja @f |
.symb: |
mov edx, hkSymbol |
mov dword[hkSize], 1 |
jmp setTextForHotKey.end |
@@: |
cmp al, 97 ;'a' |
jb @f |
cmp al, 122 ;'z' |
ja @f |
;jmp setTextForHotKey.symb |
mov edx, hkSymbol |
mov dword[hkSize], 1 |
jmp setTextForHotKey.end |
@@: |
cmp al, 65 ;'A' |
jb @f |
cmp al, 90 ;'Z' |
ja @f |
;jmp setTextForHotKey.symb |
mov edx, hkSymbol |
mov dword[hkSize], 1 |
jmp setTextForHotKey.end |
@@: |
mov word[hkSymbol], 0 ;åñëè æå ïîïàëî ÷òî-òî íåèçâåñòíîå, òî ñîòð¸ì åãî |
mov edx, hkHint |
mov dword[hkSize], 5 ;shift or space - çíà÷åíèå ïî óìîë÷àíèþ |
.end: |
pop eax |
ret |
|
|
setTextModeMenu: |
cmp byte[mode], 48 |
jne @f |
831,6 → 1412,49 |
ret |
|
|
|
|
saveKey: |
cmp word[hkSymbol], 0 |
je .default |
cmp byte[hkSymbol], 1 |
je .alt |
cmp byte[hkSymbol], 2 |
je .shift |
cmp byte[hkSymbol], 3 |
je .ctrl |
cmp byte[hkSymbol], 32 |
je .space |
.other: |
mov esi, hkSymbol |
mov byte[esi+1], 0 |
mov dword[hkSize], 1 |
jmp .end |
.space: |
mov esi, hkSpace |
mov dword[hkSize], 5 |
jmp .end |
.ctrl: |
mov esi, hkCtrl |
mov dword[hkSize], 4 |
jmp .end |
.alt: |
mov esi, hkAlt |
mov dword[hkSize], 3 |
jmp .end |
.default: |
.shift: |
mov esi, hkShift |
mov dword[hkSize], 5 |
.end: |
mov ebx, hkSize ;óêàçàòåëü íà dword[hkSize] |
call copyParam |
ret |
|
|
|
|
|
align 16 |
@IMPORT: |
|
883,6 → 1507,10 |
err_message_found_lib1 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'kmenu.obj',39,0 |
err_message_import1 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,0 |
|
hkCaption: db '« ¢¨è :',0 |
;hkHint: db ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã',0 |
radiusCaption: db ' ¤¨ãá:',0 |
|
else ;èíà÷å àíãëèéñêèé òåêñò |
|
text db "This is a Hot Angles Configurator. " |
917,13 → 1545,29 |
err_message_found_lib1 db 'Could not find library ',39,'kmenu.obj',39,0 |
err_message_import1 db 'Error importing library ',39,'kmenu',39,0 |
|
hkCaption: db 'Key:',0 |
;hkHint: db 'press any key',0 |
radiusCaption: db 'Radius:',0 |
|
end if |
|
hkAlt: db 'Alt',0 |
hkShift: db 'Shift',0 |
hkCtrl: db 'Ctrl',0 |
hkSpace: db 'Space',0 |
hkHint: db '?',0 |
hkSize: rd 1 ;ðàçìåð ñòðîêè ñ èìåíåì êëàâèøè |
|
draw_super_text: |
push eax ebx ecx edx edi esi |
|
mov ecx, 0 |
mov ch, byte[mysize] |
shl ecx, 16 |
add ecx, 0x224466 |
|
mov ebx, Otstup * 65536 + 74 ; draw info text with function 4 (x, y) |
mov ecx, 0x224466 |
;mov ecx, 0x224466 |
mov eax, superText.lu |
mov edx, eax |
mov esi, superTextSize |
950,6 → 1594,12 |
mov esi, 3 |
mcall 4 |
|
; mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11) |
; or ecx, 0x80000000 |
; mov edx, hkCaption |
; mov esi, 3 |
; mcall 4 |
|
pop esi edi edx ecx ebx eax |
ret |
|
1027,6 → 1677,72 |
ret |
|
|
IntToStr: ;in esi - ñòðîêà; eñx - ÷èñëî |
push eax ecx edx esi |
cmp ecx, 0 |
jne @f |
mov byte[esi], 48 ; '0' |
inc esi |
jmp .end |
@@: |
mov eax, ecx |
mov ecx, 10 |
.next: |
mov edx, 0 |
div ecx |
add edx, 48 |
|
mov byte[esi], dl |
|
inc esi |
cmp eax, 0 |
je .end |
jmp .next |
.end: |
mov byte[esi], 0 ;êëàä¸ì çàâåðøàþùèé íîëü |
pop esi edx ecx eax |
call reverseString ;äåëàåì ðåâåðñ ñòðîêè |
ret |
|
;âõîä: esi - óêàçàòåëü íà ñòðîêó |
reverseString: |
push eax esi edi |
|
mov al, byte[esi] ;åñëè ñòðîêà ïóñòàÿ òî âûõîäèì ðåâåðñ äåëàòü íå íàäî |
cmp al, 0 |
je reverseString.end |
|
mov edi, esi ;èíà÷å íàéä¸ì ïîçèöèþ ïîñëåäíåãî ñèìâîëà ñòðîêè è ïîëîæèì å¸ â edi |
.go_last_symbol: |
mov al, byte[edi+1] |
cmp al, 0 |
je @f |
|
inc edi |
jmp reverseString.go_last_symbol |
@@: |
push ebx |
.rev: |
cmp esi, edi |
jae @f |
|
;ìåíÿåì ìåñòàìè ñèìâîëû â öèêëå |
mov al, byte[edi] |
mov bl, byte[esi] |
mov byte[edi], bl |
mov byte[esi], al |
|
inc esi |
dec edi |
jmp reverseString.rev |
@@: |
pop ebx |
.end: |
pop edi esi eax |
ret |
|
|
|
align 4 |
but_open_dlg: |
pushad |
1117,6 → 1833,7 |
editLD edit_box 180-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax |
editRU edit_box 180-buttonW,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax |
editRD edit_box 180-buttonW,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax |
editRadius edit_box 40,(buttonHotKeyX + buttonHotKeyWidth + 20),buttonModeY, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, 4, radiusBuffer.data, mouse_dd, ed_figure_only, edMax, edMax |
|
align 4 |
import_libkmenu: |
1142,9 → 1859,17 |
akmenuitem_delete db 'kmenuitem_delete',0 |
akmenuitem_draw db 'kmenuitem_draw',0 |
|
mouse_dd dd ? |
;mouse_dd dd ? |
sc system_colors |
mouse_dd rd 1 |
|
sizeStyle: rb 1 ;ðàçìåð òåêñòà è îñòàëüíûõ ýëåìåíòîâ îêíà |
mysize: rb 1 ;rd 1 |
radiusBuffer: ;áóôåð äëÿ ïîëÿ ðàäèóñà æåñòà |
.data: rb 6 |
.size: rd 1 |
radiusBufferEnd: |
|
button_press rd 0 ;for kmenu |
|
sys_path: rb 4096 |
1156,6 → 1881,10 |
procinfo process_information |
pi rb 1024 |
|
keyscan: rb 1 |
keystr: |
.data: rb 4 ;ñòðîêà ñî çíà÷åíèåì ñêàíêîäà àêòèâàöèîííîé êëàâèøè |
.size: rd 1 ;ðàçìåð ñîäåðæèìîãî ñòðîêè áåç ïîñëåäíåãî íóëÿ |
|
dataBuffer: |
.1: rb 512 |