forked from KolibriOS/kolibrios
palitra 0.4+bg
git-svn-id: svn://kolibrios.org@3088 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b5071acd7b
commit
be21989975
@ -2,6 +2,8 @@
|
|||||||
;****************************************************************************************************|
|
;****************************************************************************************************|
|
||||||
; Program Palitra (c) Sergei Steshin (Akyltist) |
|
; Program Palitra (c) Sergei Steshin (Akyltist) |
|
||||||
;----------------------------------------------------------------------------------------------------|
|
;----------------------------------------------------------------------------------------------------|
|
||||||
|
;; Charset:WIN-1251 Font:Courier New Size:9pt |
|
||||||
|
;.....................................................................................................
|
||||||
;; compiler: FASM 1.69.31 |
|
;; compiler: FASM 1.69.31 |
|
||||||
;; version: 0.3.0 |
|
;; version: 0.3.0 |
|
||||||
;; last update: 08/11/2012 |
|
;; last update: 08/11/2012 |
|
||||||
@ -17,6 +19,11 @@
|
|||||||
;; - Улучшены ползунки, производится обработка нажатия рядом с ползунком. |
|
;; - Улучшены ползунки, производится обработка нажатия рядом с ползунком. |
|
||||||
;; - Число сеток в цветовой схеме уменьшено с 6 до 4 (кратность 256, иначе дублирование цвета).|
|
;; - Число сеток в цветовой схеме уменьшено с 6 до 4 (кратность 256, иначе дублирование цвета).|
|
||||||
;; - Мелкая косметика. |
|
;; - Мелкая косметика. |
|
||||||
|
;; 0.4.0 - Добавлено переключение между двумя цветами |
|
||||||
|
;; - Добавлен ползунок регулирования прозрачности (без визуализации). |
|
||||||
|
;; - Добавлено выравнивание значений rgba по центру, в зависимости от длинны. |
|
||||||
|
;; - Косметические правки. |
|
||||||
|
;; - Небольшая оптимизация. |
|
||||||
;.....................................................................................................
|
;.....................................................................................................
|
||||||
;; All rights reserved. |
|
;; All rights reserved. |
|
||||||
;; |
|
;; |
|
||||||
@ -59,7 +66,10 @@
|
|||||||
dd 0x0
|
dd 0x0
|
||||||
|
|
||||||
include '../../../macros.inc'
|
include '../../../macros.inc'
|
||||||
|
WIN_W equ 271 ; ширина окна
|
||||||
|
WIN_H equ 192 ; высота окна
|
||||||
|
WIN_X equ 250 ; координата х окна
|
||||||
|
WIN_Y equ 190 ; координата у окна
|
||||||
|
|
||||||
START:
|
START:
|
||||||
;#___________________________________________________________________________________________________
|
;#___________________________________________________________________________________________________
|
||||||
@ -90,63 +100,71 @@ button:
|
|||||||
cmp ah, 1 ; если нажата кнопка с номером 1,
|
cmp ah, 1 ; если нажата кнопка с номером 1,
|
||||||
jz bexit ; выходим
|
jz bexit ; выходим
|
||||||
;обработка кнопки Next
|
;обработка кнопки Next
|
||||||
cmp ah, 11 ; если нажата кнопка NEXT
|
cmp ah, 12 ; если нажата кнопка NEXT
|
||||||
jne next_bg ; выходим
|
jne set_bg ; выходим
|
||||||
inc [pnext] ; увеличиваем при нажатии номер палитры
|
inc [pnext] ; увеличиваем при нажатии номер палитры
|
||||||
mov eax,[pnext]
|
mov eax,[pnext] ; заносим значение в еах
|
||||||
cmp al,6
|
cmp al,6 ; сравниваем с заявленным количеством палитр
|
||||||
jne next_redraw
|
jne next_redraw ; если не больше максимума то на вызов отрисовки
|
||||||
xor eax,eax
|
xor eax,eax ; иначе зануляем палитру на default
|
||||||
mov [pnext],eax
|
mov [pnext],eax ; и запоминаем что сбросили палитру на default
|
||||||
next_redraw:
|
next_redraw:
|
||||||
call draw_palitra ; РИСУЕМ ПАЛИТРУ
|
call draw_palitra ; РИСУЕМ ПАЛИТРУ
|
||||||
;call draw_result ; РИСУЕМ РЕЗУЛЬТАТ
|
jmp still ; Уходим на ожидание другого события
|
||||||
jmp still
|
set_bg:
|
||||||
|
cmp ah, 14 ; если нажата кнопка BACKGROUND
|
||||||
next_bg:
|
|
||||||
cmp ah, 12 ; если нажата кнопка BACKGROUND
|
|
||||||
jne next_end ; выходим
|
jne next_end ; выходим
|
||||||
mcall 15,4,1
|
mcall 15,4,1
|
||||||
mcall 15,1,1,1
|
mcall 15,1,1,1
|
||||||
mcall 15,5,color,0,3*1*1
|
mcall 15,5,color,0,3*1*1
|
||||||
mcall 15,3
|
mcall 15,3
|
||||||
jne next_redraw
|
jmp still
|
||||||
next_end:
|
next_end:
|
||||||
cmp ah, 7
|
cmp ah,13 ; COLOR SWAP
|
||||||
jne color_button
|
jne color_swap_end
|
||||||
call mouse_get
|
push [color2]
|
||||||
jmp still
|
push [color]
|
||||||
color_button:
|
pop [color2]
|
||||||
push eax
|
pop [color]
|
||||||
call mouse_local ; получил локальные координаты
|
call draw_result
|
||||||
mov ebx,129
|
color_swap_end:
|
||||||
mov ecx,[mouse_y]
|
cmp ah, 7 ; Проверяем нажата кнопка с ID=7
|
||||||
sub ebx,ecx
|
jne color_button ; Если не нажата, то идём дальше
|
||||||
mov ecx,3
|
call mouse_get ; Иначе включаем обработчик мыши, чтобы считать значение цвета с палитры
|
||||||
imul ecx,ebx
|
jmp still ; И уходим на ожидание другого события
|
||||||
|
color_button: ; РАСЧЁТ координат для ползунков RGBA
|
||||||
;push ecx
|
push eax ; запоминаем еах
|
||||||
|
call mouse_local ; получаем локальные координаты
|
||||||
|
mov ebx,137 ; нижняя граница ползунка по У
|
||||||
pop eax
|
mov ecx,[mouse_y] ; занисим в есх значение курсора по У
|
||||||
red_button:
|
sub ebx,ecx ; находим разность (т.е. куда смещается ползунок)
|
||||||
cmp ah, 8
|
mov ecx,3 ; заносим в есх цифру 3 (256/3=85, где 85-высота ползунков)
|
||||||
jne green_button
|
imul ecx,ebx ; находим истинный параметр цвета с учётом масштаба ползунка---+
|
||||||
mov [cred],cl
|
pop eax ; восстанавливаем еах :
|
||||||
call set_spectr
|
;red_button: ; Красный Трекбар :
|
||||||
jmp still
|
cmp ah, 8 ; ID=8 :
|
||||||
|
jne green_button ; если нет, то проверяем зелёный трекбар :
|
||||||
|
mov [cred],cl ; иначе присваиваем значение, красному цвету спектра <------+
|
||||||
|
call set_spectr ; устанавливаем спектр
|
||||||
|
jmp still ; Уходим на ожидание другого события
|
||||||
green_button:
|
green_button:
|
||||||
cmp ah, 9
|
cmp ah, 9
|
||||||
jne blue_button
|
jne blue_button
|
||||||
mov [cgreen],cl
|
mov [cgreen],cl
|
||||||
call set_spectr
|
call set_spectr
|
||||||
jmp still
|
jmp still ; Уходим на ожидание другого события
|
||||||
blue_button:
|
blue_button:
|
||||||
cmp ah, 10
|
cmp ah, 10
|
||||||
jne still
|
jne alpha_button
|
||||||
mov [cblue],cl
|
mov [cblue],cl
|
||||||
call set_spectr
|
call set_spectr
|
||||||
jmp still
|
jmp still ; Уходим на ожидание другого события
|
||||||
|
alpha_button:
|
||||||
|
cmp ah, 11
|
||||||
|
jne still
|
||||||
|
mov [calpha],cl
|
||||||
|
call set_spectr
|
||||||
|
jmp still ; Уходим на ожидание другого события
|
||||||
bexit:
|
bexit:
|
||||||
mcall -1 ; иначе конец программы
|
mcall -1 ; иначе конец программы
|
||||||
;end_button
|
;end_button
|
||||||
@ -172,8 +190,8 @@ draw_window:
|
|||||||
mov ecx,eax ; Запоминаем высоту скина
|
mov ecx,eax ; Запоминаем высоту скина
|
||||||
|
|
||||||
xor eax,eax ; Очищаем eax (mov eax,0) (Функция 0)
|
xor eax,eax ; Очищаем eax (mov eax,0) (Функция 0)
|
||||||
mov ebx,200 shl 16+250 ; [координата по оси x]*65536 + [размер по оси x]
|
mov ebx,WIN_X shl 16+WIN_W ; [координата по оси x]*65536 + [размер по оси x]
|
||||||
add ecx,200 shl 16+195 ; Высота скина + [координата по y]*65536 + [размер по y] (168 для версии 0.2)
|
add ecx,WIN_Y shl 16+WIN_H ; Высота скина + [координата по y]*65536 + [размер по y] (168 для версии 0.2)
|
||||||
mov edx,[sc.work] ; Видимо стиль окна по дефолту
|
mov edx,[sc.work] ; Видимо стиль окна по дефолту
|
||||||
or edx,0x34000000 ; Или окно со скином фиксированных размеров
|
or edx,0x34000000 ; Или окно со скином фиксированных размеров
|
||||||
mov edi,title ; Заголовок окна
|
mov edi,title ; Заголовок окна
|
||||||
@ -183,21 +201,30 @@ draw_window:
|
|||||||
call draw_result ; РИСУЕМ РЕЗУЛЬТАТ
|
call draw_result ; РИСУЕМ РЕЗУЛЬТАТ
|
||||||
|
|
||||||
mov eax,8 ; Функция 8 - определить/удалить кнопку
|
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 ecx,9 shl 16+147 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
||||||
mov edx,0x60000007 ; Начальное ID кнопок - 0xXYnnnnnn
|
mov edx,0x60000007 ; Начальное ID кнопок - 0xXYnnnnnn
|
||||||
int 0x40
|
int 0x40
|
||||||
|
|
||||||
mov ebx,9 shl 16+12 ; Начальные координаты по х [к-та x]*65536 + [размер]
|
mov ebx,13 shl 16+12 ; Начальные координаты по х [к-та x]*65536 + [размер]
|
||||||
mov edx,0x60000008 ; ID = 8
|
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
|
int 0x40 ; Рисуем невидимую кнопку под слайдером red
|
||||||
add ebx,26 shl 16 ; Добавляем
|
add ebx,23 shl 16 ; Добавляем
|
||||||
inc edx ; ID = 9
|
inc edx ; ID = 9
|
||||||
int 0x40 ; Рисуем невидимую кнопку под слайдером green
|
int 0x40 ; Рисуем невидимую кнопку под слайдером green
|
||||||
add ebx,26 shl 16 ; Добавляем
|
add ebx,23 shl 16 ; Добавляем
|
||||||
inc edx ; ID = 10
|
inc edx ; ID = 10
|
||||||
int 0x40 ; Рисуем невидимую кнопку под слайдером blue
|
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 eax,12 ; функция 12: означает, что будет рисоваться окно
|
||||||
mov ebx,2 ; 2 - конец рисования
|
mov ebx,2 ; 2 - конец рисования
|
||||||
@ -209,15 +236,15 @@ draw_window:
|
|||||||
mov eax,8 ; Функция 8 - определить/удалить кнопку
|
mov eax,8 ; Функция 8 - определить/удалить кнопку
|
||||||
mov ebx,4 shl 16+64 ; Начальные координаты по х [к-та x]*65536 + [размер]
|
mov ebx,4 shl 16+64 ; Начальные координаты по х [к-та x]*65536 + [размер]
|
||||||
mov ecx,169 shl 16+16 ; Начальные координаты по y [к-та y]*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] ; цвет
|
mov esi,[sc.work_button] ; цвет
|
||||||
int 0x40
|
int 0x40
|
||||||
|
|
||||||
mov ebx,80 shl 16+102 ; Начальные координаты по х [к-та x]*65536 + [размер]
|
mov ebx,80 shl 16+102 ; Начальные координаты по х [к-та x]*65536 + [размер]
|
||||||
mov edx,12 ; ID = 11
|
mov edx,14 ; BACKGROUND button
|
||||||
int 0x40
|
int 0x40
|
||||||
|
|
||||||
|
|
||||||
mov eax,4 ; 4 - вывести строку текста в окно
|
mov eax,4 ; 4 - вывести строку текста в окно
|
||||||
mov ebx,25 shl 16+174 ; [координата по оси x]*65536 + [координата по оси y]
|
mov ebx,25 shl 16+174 ; [координата по оси x]*65536 + [координата по оси y]
|
||||||
mov ecx,[sc.work_button_text] ; 0xX0RRGGBB (RR, GG, BB задают цвет текста)
|
mov ecx,[sc.work_button_text] ; 0xX0RRGGBB (RR, GG, BB задают цвет текста)
|
||||||
@ -230,7 +257,7 @@ draw_window:
|
|||||||
;int 0x40
|
;int 0x40
|
||||||
|
|
||||||
mov eax,38 ; Функция 38 - нарисовать отрезок.
|
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 ecx,163 shl 16+163 ;[координата начала по оси y]*65536 + [координата конца по оси y]
|
||||||
mov edx,0x00666666 ;0x00RRGGBB - цвет
|
mov edx,0x00666666 ;0x00RRGGBB - цвет
|
||||||
int 0x40
|
int 0x40
|
||||||
@ -335,7 +362,7 @@ draw_palitra:
|
|||||||
mov ecx,9 shl 16+73 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
mov ecx,9 shl 16+73 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
||||||
mov esi,2 ; Счетчик линий подложек
|
mov esi,2 ; Счетчик линий подложек
|
||||||
re_draw:
|
re_draw:
|
||||||
mov ebx,89 shl 16+73 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
mov ebx,110 shl 16+73 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
||||||
mov edi,2 ; Счетчик количества подложек
|
mov edi,2 ; Счетчик количества подложек
|
||||||
for_fon_loop:
|
for_fon_loop:
|
||||||
int 0x40 ; Прерывание
|
int 0x40 ; Прерывание
|
||||||
@ -354,12 +381,12 @@ draw_palitra:
|
|||||||
mov eax,13 ; Функция 13 - нарисовать прямоугольник
|
mov eax,13 ; Функция 13 - нарисовать прямоугольник
|
||||||
mov edx,0x0FFFFFFF ; цвет
|
mov edx,0x0FFFFFFF ; цвет
|
||||||
mov esi,4 ; Счетчик количества абзацев (#4,8)
|
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:
|
for_abz:
|
||||||
;;push esi ; Сохраняем значение счетчика линий в стек
|
;;push esi ; Сохраняем значение счетчика линий в стек
|
||||||
cmp esi,2
|
cmp esi,2
|
||||||
jne x2_line
|
jne x2_line
|
||||||
mov ebx,78 shl 16+8
|
mov ebx,99 shl 16+8
|
||||||
x2_line:
|
x2_line:
|
||||||
add ebx,3 shl 16 ; Смещаем положение линии по x
|
add ebx,3 shl 16 ; Смещаем положение линии по x
|
||||||
mov edi,8 ; Счетчик количества кнопок в строке
|
mov edi,8 ; Счетчик количества кнопок в строке
|
||||||
@ -479,115 +506,99 @@ sub_blue:
|
|||||||
|
|
||||||
draw_result:
|
draw_result:
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
; Отрисовка результата цвета в hex
|
; Большая рамка вывода результата
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
mov eax,13 ; Функция 13 - нарисовать прямоугольник
|
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 edx,0x222222 ; цвет-обводки
|
||||||
mov ebx,4 shl 16+15 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
mov ebx,16 shl 16+15 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
||||||
mov ecx,9 shl 16+15 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
mov ecx,16 shl 16+15 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
||||||
int 0x40 ; Прерывание (ос рисует прямоугольник)
|
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 ; Прерывание (ос рисует прямоугольник)
|
int 0x40 ; Прерывание (ос рисует прямоугольник)
|
||||||
|
|
||||||
|
; color 2 - draw color
|
||||||
mov edx,[color] ; цвет
|
mov edx,[color] ; цвет
|
||||||
mov ebx,5 shl 16+13 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
mov ebx,12 shl 16+13 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
||||||
mov ecx,10 shl 16+13 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
mov ecx,13 shl 16+13 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
||||||
int 0x40 ; Прерывание (ос рисует прямоугольник)
|
int 0x40 ; Прерывание (ос рисует прямоугольник)
|
||||||
|
; value - draw background
|
||||||
mov edx,0xFFFFFF ; цвет-фона
|
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 ; Прерывание (ос рисует прямоугольник)
|
int 0x40 ; Прерывание (ос рисует прямоугольник)
|
||||||
|
|
||||||
mov eax,47 ; Функция 47 - вывод числа в окно
|
mov eax,47 ; Функция 47 - вывод числа в окно
|
||||||
mov ecx,[color] ; число (при bl=0) или указатель (при bl=1)
|
mov ecx,[color] ; число (при bl=0) или указатель (при bl=1)
|
||||||
mov esi,0x0 ; 0xX0RRGGBB
|
mov esi,0x0 ; 0xX0RRGGBB
|
||||||
mov ebx,256+8 shl 16 ; параметры преобразования числа в текст (HEX)
|
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)
|
int 0x40 ; Прерывание - выводим результат в окно (HEX)
|
||||||
|
|
||||||
mov eax,4 ; функция 4: написать текст в окне
|
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 ecx,0x0 ; цвет текста RRGGBB
|
||||||
mov edx,hex ; рисуем '#'
|
mov edx,hex ; рисуем '#'
|
||||||
mov esi,1 ; длина текста в байтах
|
mov esi,1 ; длина текста в байтах
|
||||||
int 0x40
|
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 значений
|
; Отрисовка r g b значений
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
|
call get_spectr
|
||||||
|
|
||||||
movzx eax,[cred] ; красный
|
movzx eax,[cred] ; красный
|
||||||
mov ebx,7*65536+146 ; [x начальный] *65536 + [y начальный]
|
mov ebx,9*65536+142 ; [x начальный] *65536 + [y начальный]
|
||||||
call draw_value ; выводим результат
|
call draw_value ; выводим результат
|
||||||
|
|
||||||
movzx eax,[cgreen] ; зеленый
|
movzx eax,[cgreen] ; зеленый
|
||||||
mov ebx,36*65536+146 ; [x начальный] *65536 + [y начальный]
|
mov ebx,32*65536+142 ; [x начальный] *65536 + [y начальный]
|
||||||
call draw_value ; выводим результат
|
call draw_value ; выводим результат
|
||||||
|
|
||||||
movzx eax,[cblue] ; синий
|
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 ; выводим результат
|
call draw_value ; выводим результат
|
||||||
|
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
; Обнуляем фон
|
; Выводим буквы r g b a
|
||||||
;.................................................................................................
|
|
||||||
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
|
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
mov eax,4 ; 4 - вывести строку текста в окно
|
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 ecx,0x0 ; 0xX0RRGGBB (RR, GG, BB задают цвет текста)
|
||||||
mov edx,cname ; указатель на начало строки
|
mov edx,cname ; указатель на начало строки
|
||||||
mov esi,1 ; выводить esi символов
|
mov esi,1 ; выводить esi символов
|
||||||
newline: ; цикл
|
newline: ; цикл
|
||||||
int 0x40 ; Прерывание
|
int 0x40 ; Прерывание
|
||||||
add ebx,29 shl 16 ; Добавляем
|
add ebx,23 shl 16 ; Добавляем
|
||||||
add edx,1 ; Добавляем
|
add edx,1 ; Добавляем
|
||||||
cmp [edx],byte 'x' ; Сравнение с байтом х
|
cmp [edx],byte 'x' ; Сравнение с байтом х
|
||||||
jne newline ; Если не нуль или не равно
|
jne newline ; Если не нуль или не равно
|
||||||
@ -597,38 +608,46 @@ draw_result:
|
|||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
mov eax,13 ; Функция 13 - нарисовать прямоугольник
|
mov eax,13 ; Функция 13 - нарисовать прямоугольник
|
||||||
mov edx,0x222222 ; цвет-обводки
|
mov edx,0x222222 ; цвет-обводки
|
||||||
mov ebx,12 shl 16+4 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
mov ebx,16 shl 16+4 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
||||||
mov ecx,45 shl 16+85 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
mov ecx,51 shl 16+86 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
||||||
int 0x40
|
int 0x40
|
||||||
add ebx,29 shl 16 ; Начальные координаты по x [к-та y]*65536 + [размер]
|
add ebx,23 shl 16 ; Начальные координаты по x [к-та y]*65536 + [размер]
|
||||||
int 0x40
|
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
|
int 0x40
|
||||||
|
|
||||||
mov edx,0xFA0919 ; цвет-обводки
|
mov edx,0xFA0919 ; цвет-обводки
|
||||||
mov ebx,13 shl 16+2 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
mov ebx,17 shl 16+2 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
||||||
mov ecx,46 shl 16+83 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
mov ecx,52 shl 16+84 ; Начальные координаты по y [к-та y]*65536 + [размер]
|
||||||
int 0x40
|
int 0x40
|
||||||
mov edx,0x08CE19 ; цвет-обводки
|
mov edx,0x08CE19 ; цвет-обводки
|
||||||
add ebx,29 shl 16 ; Начальные координаты по x [к-та y]*65536 + [размер]
|
add ebx,23 shl 16 ; Начальные координаты по x [к-та y]*65536 + [размер]
|
||||||
int 0x40
|
int 0x40
|
||||||
mov edx,0x0909FF ; цвет-обводки
|
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
|
int 0x40
|
||||||
|
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
; Отрисовка ползунков
|
; Отрисовка ползунков
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
mov edx,0x0 ; цвет-ползунков
|
mov edx,0x0 ; цвет-ползунков
|
||||||
mov ebx,10 shl 16+8 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
mov ebx,17 shl 16+11 ; Начальные координаты по x [к-та x]*65536 + [размер]
|
||||||
movzx eax,[cred] ; берем значение цвета
|
movzx eax,[cred] ; берем значение цвета
|
||||||
call draw_slider
|
call draw_slider
|
||||||
add ebx,29 shl 16
|
add ebx,23 shl 16
|
||||||
movzx eax,[cgreen] ; берем значение цвета
|
movzx eax,[cgreen] ; берем значение цвета
|
||||||
call draw_slider
|
call draw_slider
|
||||||
add ebx,29 shl 16
|
add ebx,23 shl 16
|
||||||
movzx eax,[cblue] ; берем значение цвета
|
movzx eax,[cblue] ; берем значение цвета
|
||||||
call draw_slider
|
call draw_slider
|
||||||
|
add ebx,23 shl 16
|
||||||
|
movzx eax,[calpha] ; берем значение цвета
|
||||||
|
call draw_slider
|
||||||
|
|
||||||
ret ; Возвращаем управление
|
ret ; Возвращаем управление
|
||||||
;end_draw_result
|
;end_draw_result
|
||||||
@ -637,12 +656,19 @@ draw_slider:
|
|||||||
xor ecx,ecx
|
xor ecx,ecx
|
||||||
mov cl,0x3 ; будем делить его на 3 так как ползунки длинной 85 пикселей
|
mov cl,0x3 ; будем делить его на 3 так как ползунки длинной 85 пикселей
|
||||||
div cl ; делим - целое в al остаток в ah
|
div cl ; делим - целое в al остаток в ah
|
||||||
mov cl,128 ; нижняя точка ползунка
|
mov cl,136 ; нижняя точка ползунка
|
||||||
sub cl,al ; cl=cl-al
|
sub cl,al ; cl=cl-al
|
||||||
shl ecx,16
|
shl ecx,16
|
||||||
add ecx,4 ; задаем начальное положение
|
add ecx,1 ; задаем начальное положение
|
||||||
mov eax,13 ; Функция 13 - нарисовать прямоугольник
|
mov eax,13 ; Функция 13 - нарисовать прямоугольник
|
||||||
int 0x40
|
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 ; Возвращаем управление
|
ret ; Возвращаем управление
|
||||||
|
|
||||||
;end_slider
|
;end_slider
|
||||||
@ -657,9 +683,18 @@ draw_value:
|
|||||||
call int2ascii ; конвертируем число и ложим как строку в буфер + esi длина
|
call int2ascii ; конвертируем число и ложим как строку в буфер + esi длина
|
||||||
mov eax,4 ; функция 4: написать текст в окне
|
mov eax,4 ; функция 4: написать текст в окне
|
||||||
pop ebx ; достаем из стека присланные координаты
|
pop ebx ; достаем из стека присланные координаты
|
||||||
mov ecx,0x0 ; цвет текста RRGGBB
|
cmp esi,2 ; ЦЕНТРИРОВАНИЕ ТЕКСТА
|
||||||
mov edx,buff ; указатель на начало текста
|
jne draw_value_1
|
||||||
int 0x40
|
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 ; Возвращаем управление
|
ret ; Возвращаем управление
|
||||||
;end_draw_value
|
;end_draw_value
|
||||||
|
|
||||||
@ -714,19 +749,28 @@ get_spectr:
|
|||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
; возвращает r,g,b состовляющие цвета
|
; возвращает 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]
|
mov ecx,[color]
|
||||||
movzx eax,cl
|
mov [cblue],cl
|
||||||
mov [cblue],al
|
shr ecx,8
|
||||||
; get red
|
mov [cgreen],cl
|
||||||
mov eax,ecx
|
shr ecx,8
|
||||||
xor ax,ax
|
mov [cred],cl
|
||||||
shr eax,16
|
shr ecx,8
|
||||||
mov [cred],al
|
mov [calpha],cl
|
||||||
; get green
|
|
||||||
shl ecx,16
|
|
||||||
shr ecx,24
|
|
||||||
mov [cgreen],cl
|
|
||||||
ret ; и возвращаем управление
|
ret ; и возвращаем управление
|
||||||
;end_get_spectr
|
;end_get_spectr
|
||||||
|
|
||||||
@ -734,8 +778,9 @@ set_spectr:
|
|||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
; устанавливает из r,g,b цвет
|
; устанавливает из r,g,b цвет
|
||||||
;.................................................................................................
|
;.................................................................................................
|
||||||
; get blue
|
movzx eax,[calpha]
|
||||||
movzx eax,[cred]
|
shl eax,8
|
||||||
|
mov al,[cred]
|
||||||
shl eax,8
|
shl eax,8
|
||||||
mov al,[cgreen]
|
mov al,[cgreen]
|
||||||
shl eax,8
|
shl eax,8
|
||||||
@ -774,19 +819,23 @@ str_len:
|
|||||||
;----------------------------------------------------------------------------------------------------/
|
;----------------------------------------------------------------------------------------------------/
|
||||||
|
|
||||||
color dd 00000000h ; хранит значение выбранного цвета
|
color dd 00000000h ; хранит значение выбранного цвета
|
||||||
|
color2 dd 00FFFFFFh ; хранит значение второго выбранного цвета
|
||||||
mouse_x dd 0 ; хранит глобальную х координату мыши
|
mouse_x dd 0 ; хранит глобальную х координату мыши
|
||||||
mouse_y dd 0 ; хранит глобальную у координату мыши
|
mouse_y dd 0 ; хранит глобальную у координату мыши
|
||||||
desctop_w dd 0 ; хранит ширину экрана
|
desctop_w dd 0 ; хранит ширину экрана
|
||||||
sc system_colors ; хранит структуру системных цветов скина
|
sc system_colors ; хранит структуру системных цветов скина
|
||||||
title db 'Palitra v0.3',0 ; хранит имя программы
|
title db 'Palitra v0.4',0 ; хранит имя программы
|
||||||
hex db '#',0 ; для вывода решётки как текста
|
hex db '#',0 ; для вывода решётки как текста
|
||||||
cname db 'RGBx' ; хранит разряды цветов (red,green,blue) x-метка конца
|
cname db 'RGBAx' ; хранит разряды цветов (red,green,blue) x-метка конца
|
||||||
cred db 0 ; храним красный спекрт
|
cred db 0 ; храним красный спекрт
|
||||||
cgreen db 0 ; храним зеленый спектр
|
cgreen db 0 ; храним зеленый спектр
|
||||||
cblue db 0 ; храним синий спектр
|
cblue db 0 ; храним синий спектр
|
||||||
|
calpha db 0 ; храним прозрачность
|
||||||
buff db '000',0
|
buff db '000',0
|
||||||
bnext db 'NEXT BACKGROUND',0; имя кнопки
|
bnext db 'NEXT BACKGROUND',0; имя кнопки
|
||||||
pnext dd 0 ; счетчик переключения палитры
|
pnext dd 0 ; счетчик переключения палитры
|
||||||
|
|
||||||
|
|
||||||
I_END:
|
I_END:
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user