2,6 → 2,8 |
;****************************************************************************************************| |
; Program Palitra (c) Sergei Steshin (Akyltist) | |
;----------------------------------------------------------------------------------------------------| |
;; Charset:WIN-1251 Font:Courier New Size:9pt | |
;..................................................................................................... |
;; compiler: FASM 1.69.31 | |
;; version: 0.3.0 | |
;; last update: 08/11/2012 | |
17,6 → 19,11 |
;; - Óëó÷øåíû ïîëçóíêè, ïðîèçâîäèòñÿ îáðàáîòêà íàæàòèÿ ðÿäîì ñ ïîëçóíêîì. | |
;; - ×èñëî ñåòîê â öâåòîâîé ñõåìå óìåíüøåíî ñ 6 äî 4 (êðàòíîñòü 256, èíà÷å äóáëèðîâàíèå öâåòà).| |
;; - Ìåëêàÿ êîñìåòèêà. | |
;; 0.4.0 - Äîáàâëåíî ïåðåêëþ÷åíèå ìåæäó äâóìÿ öâåòàìè | |
;; - Äîáàâëåí ïîëçóíîê ðåãóëèðîâàíèÿ ïðîçðà÷íîñòè (áåç âèçóàëèçàöèè). | |
;; - Äîáàâëåíî âûðàâíèâàíèå çíà÷åíèé rgba ïî öåíòðó, â çàâèñèìîñòè îò äëèííû. | |
;; - Êîñìåòè÷åñêèå ïðàâêè. | |
;; - Íåáîëüøàÿ îïòèìèçàöèÿ. | |
;..................................................................................................... |
;; All rights reserved. | |
;; | |
59,8 → 66,11 |
dd 0x0 |
|
include '../../../macros.inc' |
WIN_W equ 271 ; øèðèíà îêíà |
WIN_H equ 192 ; âûñîòà îêíà |
WIN_X equ 250 ; êîîðäèíàòà õ îêíà |
WIN_Y equ 190 ; êîîðäèíàòà ó îêíà |
|
|
START: |
;#___________________________________________________________________________________________________ |
;****************************************************************************************************| |
90,63 → 100,71 |
cmp ah, 1 ; åñëè íàæàòà êíîïêà ñ íîìåðîì 1, |
jz bexit ; âûõîäèì |
;îáðàáîòêà êíîïêè Next |
cmp ah, 11 ; åñëè íàæàòà êíîïêà NEXT |
jne next_bg ; âûõîäèì |
cmp ah, 12 ; åñëè íàæàòà êíîïêà NEXT |
jne set_bg ; âûõîäèì |
inc [pnext] ; óâåëè÷èâàåì ïðè íàæàòèè íîìåð ïàëèòðû |
mov eax,[pnext] |
cmp al,6 |
jne next_redraw |
xor eax,eax |
mov [pnext],eax |
mov eax,[pnext] ; çàíîñèì çíà÷åíèå â åàõ |
cmp al,6 ; ñðàâíèâàåì ñ çàÿâëåííûì êîëè÷åñòâîì ïàëèòð |
jne next_redraw ; åñëè íå áîëüøå ìàêñèìóìà òî íà âûçîâ îòðèñîâêè |
xor eax,eax ; èíà÷å çàíóëÿåì ïàëèòðó íà default |
mov [pnext],eax ; è çàïîìèíàåì ÷òî ñáðîñèëè ïàëèòðó íà default |
next_redraw: |
call draw_palitra ; ÐÈÑÓÅÌ ÏÀËÈÒÐÓ |
;call draw_result ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ |
jmp still |
|
next_bg: |
cmp ah, 12 ; åñëè íàæàòà êíîïêà BACKGROUND |
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
set_bg: |
cmp ah, 14 ; åñëè íàæàòà êíîïêà BACKGROUND |
jne next_end ; âûõîäèì |
mcall 15,4,1 |
mcall 15,1,1,1 |
mcall 15,5,color,0,3*1*1 |
mcall 15,3 |
jne next_redraw |
jmp still |
next_end: |
cmp ah, 7 |
jne color_button |
call mouse_get |
jmp still |
color_button: |
push eax |
call mouse_local ; ïîëó÷èë ëîêàëüíûå êîîðäèíàòû |
mov ebx,129 |
mov ecx,[mouse_y] |
sub ebx,ecx |
mov ecx,3 |
imul ecx,ebx |
|
;push ecx |
|
|
pop eax |
red_button: |
cmp ah, 8 |
jne green_button |
mov [cred],cl |
call set_spectr |
jmp still |
cmp ah,13 ; COLOR SWAP |
jne color_swap_end |
push [color2] |
push [color] |
pop [color2] |
pop [color] |
call draw_result |
color_swap_end: |
cmp ah, 7 ; Ïðîâåðÿåì íàæàòà êíîïêà ñ ID=7 |
jne color_button ; Åñëè íå íàæàòà, òî èä¸ì äàëüøå |
call mouse_get ; Èíà÷å âêëþ÷àåì îáðàáîò÷èê ìûøè, ÷òîáû ñ÷èòàòü çíà÷åíèå öâåòà ñ ïàëèòðû |
jmp still ; È óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
color_button: ; ÐÀÑ×¨Ò êîîðäèíàò äëÿ ïîëçóíêîâ RGBA |
push eax ; çàïîìèíàåì åàõ |
call mouse_local ; ïîëó÷àåì ëîêàëüíûå êîîðäèíàòû |
mov ebx,137 ; íèæíÿÿ ãðàíèöà ïîëçóíêà ïî Ó |
mov ecx,[mouse_y] ; çàíèñèì â åñõ çíà÷åíèå êóðñîðà ïî Ó |
sub ebx,ecx ; íàõîäèì ðàçíîñòü (ò.å. êóäà ñìåùàåòñÿ ïîëçóíîê) |
mov ecx,3 ; çàíîñèì â åñõ öèôðó 3 (256/3=85, ãäå 85-âûñîòà ïîëçóíêîâ) |
imul ecx,ebx ; íàõîäèì èñòèííûé ïàðàìåòð öâåòà ñ ó÷¸òîì ìàñøòàáà ïîëçóíêà---+ |
pop eax ; âîññòàíàâëèâàåì åàõ : |
;red_button: ; Êðàñíûé Òðåêáàð : |
cmp ah, 8 ; ID=8 : |
jne green_button ; åñëè íåò, òî ïðîâåðÿåì çåë¸íûé òðåêáàð : |
mov [cred],cl ; èíà÷å ïðèñâàèâàåì çíà÷åíèå, êðàñíîìó öâåòó ñïåêòðà <------+ |
call set_spectr ; óñòàíàâëèâàåì ñïåêòð |
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
green_button: |
cmp ah, 9 |
jne blue_button |
mov [cgreen],cl |
call set_spectr |
jmp still |
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
blue_button: |
cmp ah, 10 |
jne still |
jne alpha_button |
mov [cblue],cl |
call set_spectr |
jmp still |
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
alpha_button: |
cmp ah, 11 |
jne still |
mov [calpha],cl |
call set_spectr |
jmp still ; Óõîäèì íà îæèäàíèå äðóãîãî ñîáûòèÿ |
bexit: |
mcall -1 ; èíà÷å êîíåö ïðîãðàììû |
;end_button |
172,8 → 190,8 |
mov ecx,eax ; Çàïîìèíàåì âûñîòó ñêèíà |
|
xor eax,eax ; Î÷èùàåì eax (mov eax,0) (Ôóíêöèÿ 0) |
mov ebx,200 shl 16+250 ; [êîîðäèíàòà ïî îñè x]*65536 + [ðàçìåð ïî îñè x] |
add ecx,200 shl 16+195 ; Âûñîòà ñêèíà + [êîîðäèíàòà ïî y]*65536 + [ðàçìåð ïî y] (168 äëÿ âåðñèè 0.2) |
mov ebx,WIN_X shl 16+WIN_W ; [êîîðäèíàòà ïî îñè x]*65536 + [ðàçìåð ïî îñè x] |
add ecx,WIN_Y shl 16+WIN_H ; Âûñîòà ñêèíà + [êîîðäèíàòà ïî y]*65536 + [ðàçìåð ïî y] (168 äëÿ âåðñèè 0.2) |
mov edx,[sc.work] ; Âèäèìî ñòèëü îêíà ïî äåôîëòó |
or edx,0x34000000 ; Èëè îêíî ñî ñêèíîì ôèêñèðîâàííûõ ðàçìåðîâ |
mov edi,title ; Çàãîëîâîê îêíà |
183,22 → 201,31 |
call draw_result ; ÐÈÑÓÅÌ ÐÅÇÓËÜÒÀÒ |
|
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó |
mov ebx,89 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
mov ebx,110 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,9 shl 16+147 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov edx,0x60000007 ; Íà÷àëüíîå ID êíîïîê - 0xXYnnnnnn |
int 0x40 |
|
mov ebx,9 shl 16+12 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
mov ebx,13 shl 16+12 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
mov edx,0x60000008 ; ID = 8 |
mov ecx,45 shl 16+85 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov ecx,51 shl 16+85 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì red |
add ebx,26 shl 16 ; Äîáàâëÿåì |
add ebx,23 shl 16 ; Äîáàâëÿåì |
inc edx ; ID = 9 |
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì green |
add ebx,26 shl 16 ; Äîáàâëÿåì |
add ebx,23 shl 16 ; Äîáàâëÿåì |
inc edx ; ID = 10 |
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì blue |
add ebx,23 shl 16 ; Äîáàâëÿåì |
inc edx ; ID = 11 |
int 0x40 ; Ðèñóåì íåâèäèìóþ êíîïêó ïîä ñëàéäåðîì alpha |
|
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó (ÑÌÅÍÀ ÖÂÅÒÀ) |
mov ebx,11 shl 16+20 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,12 shl 16+20 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov edx,0x6000000D ; ID = 13 |
int 0x40 |
|
mov eax,12 ; ôóíêöèÿ 12: îçíà÷àåò, ÷òî áóäåò ðèñîâàòüñÿ îêíî |
mov ebx,2 ; 2 - êîíåö ðèñîâàíèÿ |
int 0x40 ; Ïðåðûâàíèå |
209,15 → 236,15 |
mov eax,8 ; Ôóíêöèÿ 8 - îïðåäåëèòü/óäàëèòü êíîïêó |
mov ebx,4 shl 16+64 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,169 shl 16+16 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov edx,11 ; ID = 11 |
mov edx,12 ; ID = 12 |
mov esi,[sc.work_button] ; öâåò |
int 0x40 |
|
|
mov ebx,80 shl 16+102 ; Íà÷àëüíûå êîîðäèíàòû ïî õ [ê-òà x]*65536 + [ðàçìåð] |
mov edx,12 ; ID = 11 |
mov edx,14 ; BACKGROUND button |
int 0x40 |
|
|
|
|
mov eax,4 ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî |
mov ebx,25 shl 16+174 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
mov ecx,[sc.work_button_text] ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà) |
230,7 → 257,7 |
;int 0x40 |
|
mov eax,38 ; Ôóíêöèÿ 38 - íàðèñîâàòü îòðåçîê. |
mov ebx,4 shl 16+236 ;[êîîðäèíàòà íà÷àëà ïî îñè x]*65536 + [êîîðäèíàòà êîíöà ïî îñè x] |
mov ebx,4 shl 16+257 ;[êîîðäèíàòà íà÷àëà ïî îñè x]*65536 + [êîîðäèíàòà êîíöà ïî îñè x] |
mov ecx,163 shl 16+163 ;[êîîðäèíàòà íà÷àëà ïî îñè y]*65536 + [êîîðäèíàòà êîíöà ïî îñè y] |
mov edx,0x00666666 ;0x00RRGGBB - öâåò |
int 0x40 |
335,7 → 362,7 |
mov ecx,9 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov esi,2 ; Ñ÷åò÷èê ëèíèé ïîäëîæåê |
re_draw: |
mov ebx,89 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ebx,110 shl 16+73 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov edi,2 ; Ñ÷åò÷èê êîëè÷åñòâà ïîäëîæåê |
for_fon_loop: |
int 0x40 ; Ïðåðûâàíèå |
354,12 → 381,12 |
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
mov edx,0x0FFFFFFF ; öâåò |
mov esi,4 ; Ñ÷åò÷èê êîëè÷åñòâà àáçàöåâ (#4,8) |
mov ebx,78 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ebx,99 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
for_abz: |
;;push esi ; Ñîõðàíÿåì çíà÷åíèå ñ÷åò÷èêà ëèíèé â ñòåê |
cmp esi,2 |
jne x2_line |
mov ebx,78 shl 16+8 |
mov ebx,99 shl 16+8 |
x2_line: |
add ebx,3 shl 16 ; Ñìåùàåì ïîëîæåíèå ëèíèè ïî x |
mov edi,8 ; Ñ÷åò÷èê êîëè÷åñòâà êíîïîê â ñòðîêå |
479,22 → 506,51 |
|
draw_result: |
;................................................................................................. |
; Îòðèñîâêà ðåçóëüòàòà öâåòà â hex |
; Áîëüøàÿ ðàìêà âûâîäà ðåçóëüòàòà |
;................................................................................................. |
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
mov edx,0x00666666 ; öâåò-îáâîäêè |
mov ebx,4 shl 16+98 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,9 shl 16+148 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
mov edx,0x00F3F3F3 ; öâåò-ôîíà |
mov ebx,5 shl 16+96 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,10 shl 16+146 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
|
;................................................................................................. |
; Îòðèñîâêà ðåçóëüòàòà öâåòà â hex color2 |
;................................................................................................. |
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
; color 2 - draw fringle |
mov edx,0x222222 ; öâåò-îáâîäêè |
mov ebx,4 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,9 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov ebx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
mov ebx,23 shl 16+62 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
; color 2 - draw color |
mov edx,[color2] ; öâåò |
mov ebx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
; color 1 - draw fringle |
mov edx,0x222222 ; öâåò-îáâîäêè |
mov ebx,11 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,12 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
; value - draw fringle |
mov ebx,34 shl 16+62 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,16 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
|
; color 2 - draw color |
mov edx,[color] ; öâåò |
mov ebx,5 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,10 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov ebx,12 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,13 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
; value - draw background |
mov edx,0xFFFFFF ; öâåò-ôîíà |
mov ebx,24 shl 16+60 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ebx,35 shl 16+60 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,17 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 ; Ïðåðûâàíèå (îñ ðèñóåò ïðÿìîóãîëüíèê) |
|
mov eax,47 ; Ôóíêöèÿ 47 - âûâîä ÷èñëà â îêíî |
501,11 → 557,11 |
mov ecx,[color] ; ÷èñëî (ïðè bl=0) èëè óêàçàòåëü (ïðè bl=1) |
mov esi,0x0 ; 0xX0RRGGBB |
mov ebx,256+8 shl 16 ; ïàðàìåòðû ïðåîáðàçîâàíèÿ ÷èñëà â òåêñò (HEX) |
mov edx,34 shl 16+13 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
mov edx,45 shl 16+20 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
int 0x40 ; Ïðåðûâàíèå - âûâîäèì ðåçóëüòàò â îêíî (HEX) |
|
mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå |
mov ebx,27*65536+13 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
mov ebx,38*65536+20 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
mov ecx,0x0 ; öâåò òåêñòà RRGGBB |
mov edx,hex ; ðèñóåì '#' |
mov esi,1 ; äëèíà òåêñòà â áàéòàõ |
512,82 → 568,37 |
int 0x40 |
|
;................................................................................................. |
; Îòðèñîâêà ïîëåé äëÿ r g b çíà÷åíèé |
; Îòðèñîâêà r g b çíà÷åíèé |
;................................................................................................. |
call get_spectr |
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê Leency{ |
mov edx,0x222222 ; öâåò-îáâîäêè |
mov ebx,4 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,142 shl 16+15 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
mov ebx,33 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
int 0x40 |
mov ebx,62 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
int 0x40 |
mov edx,0xFFFFFF ; öâåò-îáâîäêè |
mov ebx,5 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,143 shl 16+13 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
mov ebx,34 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
int 0x40 |
mov ebx,63 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
int 0x40 |
|
;................................................................................................. |
; Îòðèñîâêà r g b çíà÷åíèé |
;................................................................................................. |
movzx eax,[cred] ; êðàñíûé |
mov ebx,7*65536+146 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
mov ebx,9*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
call draw_value ; âûâîäèì ðåçóëüòàò |
|
movzx eax,[cgreen] ; çåëåíûé |
mov ebx,36*65536+146 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
mov ebx,32*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
call draw_value ; âûâîäèì ðåçóëüòàò |
|
movzx eax,[cblue] ; ñèíèé |
mov ebx,65*65536+146 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
mov ebx,55*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
call draw_value ; âûâîäèì ðåçóëüòàò |
|
;................................................................................................. |
; Îáíóëÿåì ôîí |
;................................................................................................. |
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
mov edx,[sc.work] ; öâåò-îáâîäêè |
mov ebx,8 shl 16+66 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,40 shl 16+87 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
movzx eax,[calpha] ; àëüôà |
mov ebx,78*65536+142 ; [x íà÷àëüíûé] *65536 + [y íà÷àëüíûé] |
call draw_value ; âûâîäèì ðåçóëüòàò |
|
; mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
; mov edx,0x222222 ; öâåò-îáâîäêè |
; mov ebx,4 shl 16+24 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
; mov ecx,30 shl 16+105 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
; int 0x40 |
; add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
; int 0x40 |
; add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
; int 0x40 |
|
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
mov edx,[sc.work] ; öâåò-îáâîäêè |
mov ebx,5 shl 16+22 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,31 shl 16+103 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
|
;................................................................................................. |
; Âûâîäèì áóêâû r g b |
; Âûâîäèì áóêâû r g b a |
;................................................................................................. |
mov eax,4 ; 4 - âûâåñòè ñòðîêó òåêñòà â îêíî |
mov ebx,12 shl 16+34 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
mov ebx,16 shl 16+40 ; [êîîðäèíàòà ïî îñè x]*65536 + [êîîðäèíàòà ïî îñè y] |
mov ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB çàäàþò öâåò òåêñòà) |
mov edx,cname ; óêàçàòåëü íà íà÷àëî ñòðîêè |
mov esi,1 ; âûâîäèòü esi ñèìâîëîâ |
newline: ; öèêë |
int 0x40 ; Ïðåðûâàíèå |
add ebx,29 shl 16 ; Äîáàâëÿåì |
add ebx,23 shl 16 ; Äîáàâëÿåì |
add edx,1 ; Äîáàâëÿåì |
cmp [edx],byte 'x' ; Ñðàâíåíèå ñ áàéòîì õ |
jne newline ; Åñëè íå íóëü èëè íå ðàâíî |
597,38 → 608,46 |
;................................................................................................. |
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
mov edx,0x222222 ; öâåò-îáâîäêè |
mov ebx,12 shl 16+4 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,45 shl 16+85 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov ebx,16 shl 16+4 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,51 shl 16+86 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
|
mov edx,0xFA0919 ; öâåò-îáâîäêè |
mov ebx,13 shl 16+2 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,46 shl 16+83 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
mov ebx,17 shl 16+2 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ecx,52 shl 16+84 ; Íà÷àëüíûå êîîðäèíàòû ïî y [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
mov edx,0x08CE19 ; öâåò-îáâîäêè |
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
mov edx,0x0909FF ; öâåò-îáâîäêè |
add ebx,29 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
mov edx,0xE4E4E4 ; öâåò-îáâîäêè |
add ebx,23 shl 16 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà y]*65536 + [ðàçìåð] |
int 0x40 |
|
;................................................................................................. |
; Îòðèñîâêà ïîëçóíêîâ |
;................................................................................................. |
mov edx,0x0 ; öâåò-ïîëçóíêîâ |
mov ebx,10 shl 16+8 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
mov ebx,17 shl 16+11 ; Íà÷àëüíûå êîîðäèíàòû ïî x [ê-òà x]*65536 + [ðàçìåð] |
movzx eax,[cred] ; áåðåì çíà÷åíèå öâåòà |
call draw_slider |
add ebx,29 shl 16 |
add ebx,23 shl 16 |
movzx eax,[cgreen] ; áåðåì çíà÷åíèå öâåòà |
call draw_slider |
add ebx,29 shl 16 |
add ebx,23 shl 16 |
movzx eax,[cblue] ; áåðåì çíà÷åíèå öâåòà |
call draw_slider |
add ebx,23 shl 16 |
movzx eax,[calpha] ; áåðåì çíà÷åíèå öâåòà |
call draw_slider |
|
ret ; Âîçâðàùàåì óïðàâëåíèå |
;end_draw_result |
637,12 → 656,19 |
xor ecx,ecx |
mov cl,0x3 ; áóäåì äåëèòü åãî íà 3 òàê êàê ïîëçóíêè äëèííîé 85 ïèêñåëåé |
div cl ; äåëèì - öåëîå â al îñòàòîê â ah |
mov cl,128 ; íèæíÿÿ òî÷êà ïîëçóíêà |
mov cl,136 ; íèæíÿÿ òî÷êà ïîëçóíêà |
sub cl,al ; cl=cl-al |
shl ecx,16 |
add ecx,4 ; çàäàåì íà÷àëüíîå ïîëîæåíèå |
add ecx,1 ; çàäàåì íà÷àëüíîå ïîëîæåíèå |
mov eax,13 ; Ôóíêöèÿ 13 - íàðèñîâàòü ïðÿìîóãîëüíèê |
int 0x40 |
push ebx ; ñîõðàíÿåì äëÿ ñëåäóþùåãî ïîëçóíêà x+w |
sub ebx,8 ; òàê êàê øèðèíà ëèíèè 11 òî îòíèìàåì 8 ÷òîáû êóáèê ñòàë øèðèíîé 3 |
add ebx,8 shl 16 ; Êîîðäèíàòû ïî x äëÿ êâàäðàòà íà ïîëçóíêå ñìåùàåì íà 8 â ïðàâî |
inc ecx ; áûäëîêîäèì âûñîòó ïîëçóíêà äî 3-õ (1+1=2) |
inc ecx ; (2+1=3) íó âîò ó íàñ áóäåò êóáèê 3õ3 íà 8 â ïðàâî îò ëèíèè |
int 0x40 ; ðèñóåì |
pop ebx ; âîññòàíàâëèâàåì íîðìàëüíûå êîîðäèíàòû |
ret ; Âîçâðàùàåì óïðàâëåíèå |
|
;end_slider |
657,9 → 683,18 |
call int2ascii ; êîíâåðòèðóåì ÷èñëî è ëîæèì êàê ñòðîêó â áóôåð + esi äëèíà |
mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå |
pop ebx ; äîñòàåì èç ñòåêà ïðèñëàííûå êîîðäèíàòû |
mov ecx,0x0 ; öâåò òåêñòà RRGGBB |
mov edx,buff ; óêàçàòåëü íà íà÷àëî òåêñòà |
int 0x40 |
cmp esi,2 ; ÖÅÍÒÐÈÐÎÂÀÍÈÅ ÒÅÊÑÒÀ |
jne draw_value_1 |
add ebx,4 shl 16 |
jmp draw_value_e |
draw_value_1: |
cmp esi,1 |
jne draw_value_e |
add ebx,7 shl 16 |
draw_value_e: |
mov ecx,0x0 ; öâåò òåêñòà RRGGBB |
mov edx,buff ; óêàçàòåëü íà íà÷àëî òåêñòà |
int 0x40 |
ret ; Âîçâðàùàåì óïðàâëåíèå |
;end_draw_value |
|
714,19 → 749,28 |
;................................................................................................. |
; âîçâðàùàåò r,g,b ñîñòîâëÿþùèå öâåòà |
;................................................................................................. |
; get blue |
;; get blue |
;mov ecx,[color] |
;movzx eax,cl |
;mov [cblue],al |
;; get red |
;mov eax,ecx |
;xor ax,ax ; à íàäî ëè???? |
;shr eax,16 |
;mov [cred],al |
;; get green |
;shl ecx,16 |
;shr ecx,24 |
;mov [cgreen],cl |
|
mov ecx,[color] |
movzx eax,cl |
mov [cblue],al |
; get red |
mov eax,ecx |
xor ax,ax |
shr eax,16 |
mov [cred],al |
; get green |
shl ecx,16 |
shr ecx,24 |
mov [cgreen],cl |
mov [cblue],cl |
shr ecx,8 |
mov [cgreen],cl |
shr ecx,8 |
mov [cred],cl |
shr ecx,8 |
mov [calpha],cl |
ret ; è âîçâðàùàåì óïðàâëåíèå |
;end_get_spectr |
|
734,9 → 778,10 |
;................................................................................................. |
; óñòàíàâëèâàåò èç r,g,b öâåò |
;................................................................................................. |
; get blue |
movzx eax,[cred] |
movzx eax,[calpha] |
shl eax,8 |
mov al,[cred] |
shl eax,8 |
mov al,[cgreen] |
shl eax,8 |
mov al,[cblue] |
774,19 → 819,23 |
;----------------------------------------------------------------------------------------------------/ |
|
color dd 00000000h ; õðàíèò çíà÷åíèå âûáðàííîãî öâåòà |
color2 dd 00FFFFFFh ; õðàíèò çíà÷åíèå âòîðîãî âûáðàííîãî öâåòà |
mouse_x dd 0 ; õðàíèò ãëîáàëüíóþ õ êîîðäèíàòó ìûøè |
mouse_y dd 0 ; õðàíèò ãëîáàëüíóþ ó êîîðäèíàòó ìûøè |
desctop_w dd 0 ; õðàíèò øèðèíó ýêðàíà |
sc system_colors ; õðàíèò ñòðóêòóðó ñèñòåìíûõ öâåòîâ ñêèíà |
title db 'Palitra v0.3',0 ; õðàíèò èìÿ ïðîãðàììû |
title db 'Palitra v0.4',0 ; õðàíèò èìÿ ïðîãðàììû |
hex db '#',0 ; äëÿ âûâîäà ðåø¸òêè êàê òåêñòà |
cname db 'RGBx' ; õðàíèò ðàçðÿäû öâåòîâ (red,green,blue) x-ìåòêà êîíöà |
cname db 'RGBAx' ; õðàíèò ðàçðÿäû öâåòîâ (red,green,blue) x-ìåòêà êîíöà |
cred db 0 ; õðàíèì êðàñíûé ñïåêðò |
cgreen db 0 ; õðàíèì çåëåíûé ñïåêòð |
cblue db 0 ; õðàíèì ñèíèé ñïåêòð |
calpha db 0 ; õðàíèì ïðîçðà÷íîñòü |
buff db '000',0 |
bnext db 'NEXT BACKGROUND',0; èìÿ êíîïêè |
pnext dd 0 ; ñ÷åò÷èê ïåðåêëþ÷åíèÿ ïàëèòðû |
|
|
I_END: |
|
|