forked from KolibriOS/kolibrios
- Move source code from `trunk` into program root directory. - Fix build and ASM files. - Translated a few RU comments to en_US. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden. (Work towards #75, point 3) Reviewed-on: KolibriOS/kolibrios#244 Reviewed-by: Gleb Zaharov <risdeveau@codrs.ru> Reviewed-by: Burer <burer@kolibrios.org> Co-authored-by: Andrew <dent.ace@gmail.com> Co-committed-by: Andrew <dent.ace@gmail.com>
195 lines
7.6 KiB
Plaintext
195 lines
7.6 KiB
Plaintext
|
|
ch_struc_size=36
|
|
ed_struc_size=76
|
|
ch_flag_en=10b
|
|
|
|
ch_left equ [edi] ;координата начала рисования по х
|
|
ch_top equ [edi+2] ;координата начала рисования по у
|
|
ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи
|
|
ch_size equ [edi+8] ;12 размер квадрата чек бокса
|
|
ch_color equ [edi+12] ;цвет внутри checkbox
|
|
ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
|
|
ch_text_color equ [edi+20];[edi+4] ;цвет текста
|
|
ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки
|
|
ch_text_length equ [edi+28]
|
|
ch_flags equ [edi+32] ;флаги
|
|
|
|
ed_width equ [edi] ;ширина компонента
|
|
ed_left equ [edi+4] ;положение по оси х
|
|
ed_top equ [edi+8] ;положение по оси у
|
|
ed_color equ [edi+12] ;цвет фона компонента
|
|
shift_color equ [edi+16] ;=0x6a9480 для примера возьем желеный цвет бокса
|
|
ed_focus_border_color equ [edi+20] ;цвет рамки компонента
|
|
ed_blur_border_color equ [edi+24] ;цвет не активного компонента
|
|
ed_text_color equ [edi+28] ;цвет текста
|
|
ed_max equ [edi+32] ;кол-во символов которые можно максимально ввести
|
|
ed_text equ [edi+36] ;указатель на буфер
|
|
ed_mouse_variable equ [edi+40] ; указатель на переменную для бокса/группы
|
|
ed_flags equ [edi+44] ;флаги
|
|
bp_flags equ [ebp+44] ;в некоторых процедурах edi используется, взамен указатель храниться в ebp
|
|
ed_size equ [edi+48] ;кол-во символов
|
|
bp_size equ [ebp+48] ;кол-во симвполов, для адресации испльзуется ebpб edi занят
|
|
ed_pos equ [edi+52] ;позиция курсора
|
|
ed_offset equ [edi+56] ;смещение
|
|
cl_curs_x equ [edi+60] ;предыдущее координата курсора по х
|
|
cl_curs_y equ [edi+64] ;предыдущее координата курсора по у
|
|
ed_shift_pos equ [edi+68] ;положение курсора
|
|
ed_shift_pos_old equ [edi+72] ;старое положение курсора
|
|
|
|
ed_struc_size=76
|
|
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
|
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
|
|
{
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;Bit mask from editbox
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
ed_figure_only= 1000000000000000b ;одни символы
|
|
ed_always_focus= 100000000000000b
|
|
ed_focus= 10b ;фокус приложения
|
|
ed_shift_on= 1000b ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift
|
|
ed_shift_on_off=1111111111110111b
|
|
ed_shift= 100b ;включается при нажатии на shift т.е. если нажимаю
|
|
ed_shift_off= 1111111111111011b
|
|
ed_shift_bac= 10000b ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение
|
|
ed_shift_bac_cl=1111111111101111b ;очистка при удалении выделения
|
|
ed_shift_cl= 1111111111100011b
|
|
ed_shift_mcl= 1111111111111011b
|
|
ed_left_fl= 100000b
|
|
ed_right_fl= 1111111111011111b
|
|
ed_offset_fl= 1000000b
|
|
ed_offset_cl= 1111111110111111b
|
|
ed_insert= 10000000b
|
|
ed_insert_cl= 1111111101111111b
|
|
ed_mouse_on = 100000000b
|
|
ed_mous_adn_b= 100011000b
|
|
ed_mouse_on_off=1111111011111111b
|
|
ed_height=14 ; высота
|
|
|
|
.width dd width
|
|
.left dd left
|
|
.top dd top
|
|
.color dd color
|
|
.shift_color dd shift_color
|
|
.focus_border_color dd focus_border_color
|
|
.blur_border_color dd blur_border_color
|
|
.text_color dd text_color
|
|
.max dd max
|
|
.text dd text
|
|
.mouse_variable dd mouse_variable
|
|
.flags dd flags+0
|
|
.size dd size+0
|
|
.pos dd pos+0
|
|
.offset dd 0
|
|
.cl_curs_x dd 0
|
|
.cl_curs_y dd 0
|
|
.shift dd 0
|
|
.shift_old dd 0
|
|
}
|
|
macro edit_boxes_set_sys_color start,end,color_table
|
|
{
|
|
mov edi,start
|
|
mov ecx,((end-start)/ed_struc_size)
|
|
mov esi,color_table
|
|
@@:
|
|
mov eax,dword [esi+36]
|
|
mov ebx,dword [esi+20]
|
|
push dword eax
|
|
pop dword ed_focus_border_color
|
|
shr bh,1
|
|
shr bl,1
|
|
shr ah,1
|
|
shr al,1
|
|
add ah,bh
|
|
add al,bl
|
|
ror eax,16
|
|
ror ebx,16
|
|
shr bl,1
|
|
shr al,1
|
|
add al,bl
|
|
ror eax,16
|
|
mov dword ed_blur_border_color,eax
|
|
mov dword shift_color,eax
|
|
add edi,ed_struc_size
|
|
loop @b
|
|
}
|
|
macro get_sys_colors col_buf
|
|
{
|
|
;mov eax,48
|
|
push 48
|
|
pop eax
|
|
;mov ebx,3
|
|
push 3
|
|
pop ebx
|
|
;mov ecx,col_buf
|
|
push col_buf
|
|
pop ecx
|
|
;mov edx,40
|
|
push 40
|
|
pop edx
|
|
mcall
|
|
}
|
|
macro check_boxes_set_sys_color start,end,color_table
|
|
{
|
|
ch_left equ [edi] ;координата начала рисования по х
|
|
ch_top equ [edi+2] ;координата начала рисования по у
|
|
ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи
|
|
ch_size equ [edi+8] ;12 размер квадрата чек бокса
|
|
ch_color equ [edi+12] ;цвет внутри checkbox
|
|
ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
|
|
ch_text_color equ [edi+20];[edi+4] ;цвет текста
|
|
ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки
|
|
ch_text_length equ [edi+28]
|
|
ch_flags equ [edi+32] ;флаги
|
|
|
|
|
|
;ch_left equ [edi] ;координата начала рисования по х
|
|
;ch_top equ [edi+2] ;координата начала рисования по у
|
|
;ch_color equ [edi+4] ;цвет внутри checkbox
|
|
;ch_border_color equ [edi+8] ;цвет рамки checkbox
|
|
;ch_text_color equ [edi+12] ;цвет текста
|
|
;ch_text_ptr equ [edi+16] ;указатель на начало текстовой строки
|
|
;ch_text_length equ [edi+20] ;длина надписи (2^64 такой длины может быть текст)
|
|
;ch_flags equ [edi+24] ;флаги
|
|
|
|
mov edi,start
|
|
mov ecx,((end-start)/ch_struc_size)
|
|
mov esi,color_table
|
|
@@:
|
|
push dword [esi+32]
|
|
pop dword ch_text_color
|
|
push dword [esi+36]
|
|
pop dword ch_border_color
|
|
add edi,ch_struc_size
|
|
loop @b
|
|
}
|
|
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
|
|
{ ;структура параметров для чек бокса
|
|
ch_flag_en=10b
|
|
.left: dw left ;+0 ;положение по х
|
|
.top: dw top ;положение по у
|
|
.ch_text_margin: dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи
|
|
.ch_size: dd ch_size ;размер квадрата чек бокса, для примера 12
|
|
.color: dd color ;цвет внутри чекбокса
|
|
.border_color: dd border_color ;цвет рамки
|
|
.text_color: dd text_color ;цвет надписи
|
|
.text: dd text ;адрес в коде программы где расположен текст
|
|
.ch_text_length: dd ch_text_length ;длинна строки с символами
|
|
.flags: dd flags+0 ; флаги
|
|
}
|
|
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
|
|
{ ;структура параметров для чек бокса
|
|
op_flag_en=10b
|
|
.option_group: dd point_gr
|
|
.left: dw left ;+0 ;положение по х
|
|
.top: dw top ;положение по у
|
|
.ch_text_margin: dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи
|
|
.ch_size: dd op_size ;размер квадрата чек бокса, для примера 12
|
|
.color: dd color ;цвет внутри чекбокса
|
|
.border_color: dd border_color ;цвет рамки
|
|
.text_color: dd text_color ;цвет надписи
|
|
.text: dd text ;адрес в коде программы где расположен текст
|
|
.ch_text_length: dd op_text_length ;длинна строки с символами
|
|
.flags: dd flags+0 ; флаги
|
|
}
|
|
|