Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3026 → Rev 3088

/programs/media/palitra/trunk/palitra.asm
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,12 → 236,12
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
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,6 → 683,15
call int2ascii ; êîíâåðòèðóåì ÷èñëî è ëîæèì êàê ñòðîêó â áóôåð + esi äëèíà
mov eax,4 ; ôóíêöèÿ 4: íàïèñàòü òåêñò â îêíå
pop ebx ; äîñòàåì èç ñòåêà ïðèñëàííûå êîîðäèíàòû
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
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 [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: