palitra 0.4+bg

git-svn-id: svn://kolibrios.org@3088 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2012-12-07 03:41:42 +00:00
parent b5071acd7b
commit be21989975

View File

@ -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,7 +66,10 @@
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 @@ button:
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 @@ draw_window:
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,21 +201,30 @@ draw_window:
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 - конец рисования
@ -209,15 +236,15 @@ draw_window:
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 @@ draw_window:
;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 @@ draw_palitra:
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 @@ draw_palitra:
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,115 +506,99 @@ sub_blue:
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 - вывод числа в окно
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 ; длина текста в байтах
int 0x40
;.................................................................................................
; Отрисовка полей для 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 значений
;.................................................................................................
call get_spectr
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 ; выводим результат
movzx eax,[calpha] ; альфа
mov ebx,78*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
; 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 @@ draw_result:
;.................................................................................................
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 @@ draw_slider:
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 @@ draw_value:
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 @@ get_spectr:
;.................................................................................................
; возвращает 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,8 +778,9 @@ set_spectr:
;.................................................................................................
; устанавливает из 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
@ -774,19 +819,23 @@ str_len:
;----------------------------------------------------------------------------------------------------/
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: