checkbox: clean code

picdev: fix names

git-svn-id: svn://kolibrios.org@6789 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2016-12-07 11:06:54 +00:00
parent f097bebc8f
commit 4f831a4d79
4 changed files with 78 additions and 92 deletions
@@ -1,4 +1,3 @@
include 'checkbox2.mac' ;macro implements checkbox version 2
include 'optionbox.mac' ;macro implements optionbox
include 'scrollbar.mac' ;macro implements scrollbar
include 'd_button.mac' ;macro implements dinamic_button
@@ -34,14 +34,8 @@ dll.load dd ?
include 'editbox.asm' ;editbox
;----------------------------------------------------
;CheckBox2
;----------------------------------------------------
align 16
_init_checkbox2 ;macro for init checkbox
align 16
use_checkbox_draw2 ;macro reveals the function of the display.
align 16
use_checkbox_mouse2 ;macro reveals processing function of the mouse.
;CheckBox
include 'checkbox.asm' ;checkbox
;--------------------------------------------------
;radiobutton Group
@@ -1,11 +1,9 @@
;Последная модификация 03.10.2010
;Последная модификация 07.12.2016
;файл создан 13.02.2009 <Lrz> На код применена GPL2 лицензия
;Макрос для системной библиотеки box_lib.obj
;Checkbox
;Инициализация checkbox
macro _init_checkbox2
{
align 16
init_checkbox2:
;подсчитаем кол-во символов в длинне выводимой строки.
pushad
@@ -27,19 +25,18 @@ init_checkbox2:
;на случай если пользователь забыл его самостоятельно поставить в структуре
popad
ret 4
}
macro use_checkbox_draw2
{
align 16
check_box_draw2:
pushad ;сохраним все регистры
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mcall 13,2ch_left_s,2ch_top_s,2ch_border_color ;рисуем рамку чек бокса, фактически рисуем прямоугольник и закрашиваем фон внутри цветом рамки бокса
mcall SF_DRAW_RECT,2ch_left_s,2ch_top_s,2ch_border_color ;рисуем рамку чек бокса, фактически рисуем прямоугольник и закрашиваем фон внутри цветом рамки бокса
mov edx,dword 2ch_color ;загружаем цвет фона
add ebx,1 shl 16 - 2
add ecx,1 shl 16 - 2
mcall ;закрашиваем внутренности чекбокса фоном
mov edx,dword 2ch_color ;загружаем цвет фона
add ebx,1 shl 16 - 2
add ecx,1 shl 16 - 2
mcall ;закрашиваем внутренности чекбокса фоном
test dword 2ch_flags,2 ;достать значение бита из переменной и поместить в флаг CF
jz @f ;в если CF=1, то выполним следующую процедуру иначе перейти на нижнюю @@
@@ -58,7 +55,7 @@ check_box_draw2:
; add eax,dword ch_top_s ;cкорректируем позицию Х. Т.е. сейчас в верхней части ebx у нас точка начала вывода текста по Y
; Оптимизация для ЦП
mov ebx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov ebx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov eax,dword 2ch_top_s ;загрузим значение по (y shl 16 + длинна) для чек бокса
mov ecx,eax
add ebx,dword 2ch_text_margin ;добавим размер стороны и расстояние на котором начнется вывод текста
@@ -82,43 +79,40 @@ check_box_draw2:
;ebx х shl 16 +y координаты вывода строчки
mov ecx,dword 2ch_text_color ;загрузим цвет надписи + flags
mov edx,dword 2ch_text_ptr ;укажем адрес от куда нужно выводить строку
mcall 4 ;Вывод
mov edx,dword 2ch_text_ptr ;укажем адрес от куда нужно выводить строку
mcall SF_DRAW_TEXT
popad ;восстановить значения регистров из стека
ret 4 ;выйдем из процедуры и удалим из стека указатель на структуру (4 байта)
check_box_clear_ch2: ;очистка чек бокса
mov edx,dword 2ch_color ;цвет внутри чек бокса
jmp @f ;безусловный прыжок на нижнюю метку @@
mov edx,dword 2ch_color ;цвет внутри чек бокса
jmp @f ;безусловный прыжок на нижнюю метку @@
check_box_draw_ch2: ;нарисовать включенный чек бокс
mov edx,dword 2ch_border_color ;загрузить цвет
@@:
;Отобразить включеный checkbox
mov ebx,dword 2ch_left_s ;загружаем х shl 16 + длинна по Х
mov ecx,dword 2ch_top_s ;загружаем Y shl 16 + длинна по Y
add ebx,2 shl 16 - 4 ;после этих изменений (X+2) shl 16 +длинна по (Х-2)
add ecx,2 shl 16 - 4 ;после этих изменений (Y+2) shl 16 +длинна по (Y-2)
mcall 13 ;отобразить квадрат внутри checkbox
add ebx,2 shl 16 - 4 ;после этих изменений (X+2) shl 16 +длинна по (Х-2)
add ecx,2 shl 16 - 4 ;после этих изменений (Y+2) shl 16 +длинна по (Y-2)
mcall SF_DRAW_RECT ;отобразить квадрат внутри checkbox
ret
}
macro use_checkbox_mouse2
{
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Обработчик mouse
;При попадании мышки + нажата клавиша в область checkbox состояние бокса должно менятся активный - не активный.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
align 16
check_box_mouse2: ;обработка мыши
pushad
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mcall 37,2 ;проверяем состояние клавиш мышки. Было ли событие нажатая клавиша на мышке.
mcall SF_MOUSE_GET,SSF_BUTTON ;проверяем состояние клавиш мышки. Было ли событие нажатая клавиша на мышке.
test eax,eax ;проверка если у нас в eax=0, выйдем
jz .check_box_mouse_end ;обработка закончилась
; Да событие: нажатие клавиши мышки произошло.
@@:
mcall 37,1 ;получить координаты курсора относительно окна
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;получить координаты курсора относительно окна
;на выходе в eax x shl 16 + y
;сравнение верхней точки по Y
mov ecx,dword 2ch_top_s ;y shl 16 +длинна по y
@@ -133,7 +127,7 @@ pushad
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
shr eax,16 ;сместим координату по Х в нижную часть регистра т.е. в ax
;сравнение по начальной точке Х
mov ecx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov ecx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov ebx,ecx
shr ebx,16 ;bx = координата по X
cmp ax,bx
@@ -153,5 +147,4 @@ pushad
call check_box_draw_ch2 ;отобразить включенный чек бокс
.check_box_mouse_end:
popad ;восстановить регистры из стека
ret 4 ;выйти и восстановим стек
}
ret 4 ;выйти и восстановим стек