forked from KolibriOS/kolibrios
bugfix.
git-svn-id: svn://kolibrios.org@1640 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e32fd4f0e3
commit
abbc09c677
@ -103,48 +103,49 @@ macro edit_boxes_set_sys_color start,end,color_table
|
|||||||
}
|
}
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;Basic macros for use CheckBox ;
|
;Basic macros for use CheckBox ;
|
||||||
;Last change 25.09.2010
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
ch_struc_size=36 ;à §¬¥à áâàãªâãàë
|
ch_struc_size=36
|
||||||
ch_flag_en=10b ;ä« £ ãáâ ®¢«¥®£® 祪 ¡®ªá .
|
ch_flag_en=10b ;í«¥¬¥â ¢ë¡à
|
||||||
|
|
||||||
ch_left equ [ebp] ;ª®à¤¨ â ç « à¨á®¢ ¨ï ¯® å
|
ch_left equ [edi] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® å
|
||||||
ch_top equ [ebp+2] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã
|
ch_top equ [edi+2] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã
|
||||||
ch_text_margin equ [ebp+4] ;=4 à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
ch_text_margin equ [edi+4] ;=4 à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||||
ch_size equ [ebp+8] ;12 à §¬¥à ª¢ ¤à â 祪 ¡®ªá
|
ch_size equ [edi+8] ;12 à §¬¥à ª¢ ¤à â 祪 ¡®ªá
|
||||||
ch_color equ [ebp+12] ;梥⠢ãâਠcheckbox
|
ch_color equ [edi+12] ;梥⠢ãâਠcheckbox
|
||||||
ch_border_color equ [ebp+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦® § ¤ âì á ¬®áâ®ï⥫ì®
|
ch_border_color equ [edi+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦® § ¤ âì á ¬®áâ®ï⥫ì®
|
||||||
ch_text_color equ [ebp+20] ;[edi+4] ;梥â ⥪áâ
|
ch_text_color equ [edi+20] ;[edi+4] ;梥â ⥪áâ
|
||||||
ch_text_ptr equ [ebp+24] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨
|
ch_text_ptr equ [edi+24] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨
|
||||||
ch_text_length equ [ebp+28] ;¤«¨ áâப¨
|
ch_text_length equ [edi+28]
|
||||||
ch_flags equ [ebp+32] ;ä« £¨
|
ch_flags equ [edi+32] ;ä« £¨
|
||||||
|
|
||||||
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
|
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
|
||||||
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá
|
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá
|
||||||
.left: dw left ;+0 ¯®«®¦¥¨¥ ¯® å
|
.left: dw left ;+0 ¯®«®¦¥¨¥ ¯® å
|
||||||
.top: dw top ;+2 ¯®«®¦¥¨¥ ¯® ã
|
.top: dw top ;+2 ¯®«®¦¥¨¥ ¯® ã
|
||||||
.ch_text_margin: dd ch_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
.ch_text_margin: dd ch_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||||
.ch_size: dd ch_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12
|
.ch_size: dd ch_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12
|
||||||
.color: dd color ;梥⠢ãâਠ祪¡®ªá
|
.color: dd color ;梥⠢ãâਠ祪¡®ªá
|
||||||
.border_color: dd border_color ;梥â à ¬ª¨
|
.border_color: dd border_color ;梥â à ¬ª¨
|
||||||
.text_color: dd text_color ;梥⠤¯¨á¨
|
.text_color: dd text_color ;梥⠤¯¨á¨
|
||||||
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ
|
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ
|
||||||
.ch_text_length: dd ch_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨
|
.ch_text_length: dd ch_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨
|
||||||
.flags: dd flags+0 ; ä« £¨
|
.flags: dd flags+0 ; ä« £¨
|
||||||
}
|
}
|
||||||
|
|
||||||
macro check_boxes_set_sys_color start,end,color_table
|
macro check_boxes_set_sys_color start,end,color_table
|
||||||
{
|
{
|
||||||
mov edi,start
|
mov edi,start
|
||||||
mov ecx,((end-start)/ch_struc_size)
|
mov ecx,((end-start)/ch_struc_size)
|
||||||
mov esi,color_table
|
mov esi,color_table
|
||||||
@@:
|
@@:
|
||||||
push dword [esi+32] ;梥â ⥪áâ ¢ à ¡®ç¥© ®¡« á⨠®ª
|
; push dword [esi+20] ;梥â à ¡®ç¥© ®¡« á⨠®ª
|
||||||
pop dword ch_text_color
|
; pop dword ch_color
|
||||||
push dword [esi+36] ;梥⠣à 䨪¨ ¢ ®ª¥ (à §¤¥«¨â¥«ìë¥ «¨¨¨ ¨ â.¯.)
|
push dword [esi+32] ;梥â ⥪áâ ¢ à ¡®ç¥© ®¡« á⨠®ª
|
||||||
pop dword ch_border_color
|
pop dword ch_text_color
|
||||||
add edi,ch_struc_size
|
push dword [esi+36] ;梥⠣à 䨪¨ ¢ ®ª¥ (à §¤¥«¨â¥«ìë¥ «¨¨¨ ¨ â.¯.)
|
||||||
loop @b
|
pop dword ch_border_color
|
||||||
|
add edi,ch_struc_size
|
||||||
|
loop @b
|
||||||
}
|
}
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@ -6,44 +6,45 @@ macro use_checkbox_draw
|
|||||||
{
|
{
|
||||||
check_box_draw:
|
check_box_draw:
|
||||||
pusha ;сохраним все регистры
|
pusha ;сохраним все регистры
|
||||||
mov edi,dword [esp+36]
|
mov edi,dword [esp+36]
|
||||||
mov eax,13
|
mov eax,13
|
||||||
movzx ebx,word ch_left
|
movzx ebx,word ch_left
|
||||||
shl ebx,16
|
shl ebx,16
|
||||||
add ebx,ch_size
|
add ebx,ch_size
|
||||||
mov ecx,ch_top
|
mov ecx,ch_top
|
||||||
shl ecx,16
|
shl ecx,16
|
||||||
add ecx,dword ch_size
|
add ecx,dword ch_size
|
||||||
mov edx,dword ch_border_color
|
mov edx,dword ch_border_color
|
||||||
mcall ;рисуем рамку
|
mcall ;рисуем рамку
|
||||||
|
|
||||||
mov edx,dword ch_color
|
mov edx,dword ch_color
|
||||||
add ebx,1 shl 16 - 2
|
add ebx,1 shl 16 - 2
|
||||||
add ecx,1 shl 16 - 2
|
add ecx,1 shl 16 - 2
|
||||||
mcall ;закрашиваем внутренности чекбокса
|
mcall ;закрашиваем внутренности чекбокса
|
||||||
|
|
||||||
test dword ch_flags,2 ;достать значение бита из переменной и поместить в флаг CF
|
test dword ch_flags,2 ;достать значение бита из переменной и поместить в флаг CF
|
||||||
jz @f ;в если CF=1, то выполним следующую процедуру иначе перейти на нижнюю @@
|
jz @f ;в если CF=1, то выполним следующую процедуру иначе перейти на нижнюю @@
|
||||||
call check_box_draw_ch ;нарисовать включенный чек бокс
|
call check_box_draw_ch ;нарисовать включенный чек бокс
|
||||||
@@:
|
@@:
|
||||||
;----------------------------
|
;----------------------------
|
||||||
;расчет куда будет произведен вывод текста
|
;расчет куда будет произведен вывод текста
|
||||||
;----------------------------
|
;----------------------------
|
||||||
movzx ebx,word ch_left ;загрузить значение х для чек бокса
|
movzx ebx,word ch_left ;загрузить значение х для чек бокса
|
||||||
add ebx,dword ch_size
|
add ebx,dword ch_size
|
||||||
add ebx,dword ch_text_margin ;добавить размер стороны и расстояние на котором начнется вывод текста
|
add ebx,dword ch_text_margin;добавить размер стороны и расстояние на котором начнется вывод текста
|
||||||
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
|
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
|
||||||
mov bx,word ch_top ;загрузим значение по y
|
mov bx,word ch_top ;загрузим значение по y
|
||||||
add ebx,ch_size
|
add ebx,ch_size
|
||||||
mov ecx,dword ch_text_color ;загрузим цвет надписи + flags
|
mov ecx,dword ch_text_color ;загрузим цвет надписи + flags
|
||||||
sub ebx,7 ;добавим значение длины стороны -9+2
|
sub ebx,7 ;добавим значение длины стороны -9+2
|
||||||
|
|
||||||
mov edx,dword ch_text_ptr ;укажем адрес от куда нужно выводить строку
|
mov edx,dword ch_text_ptr ;укажем адрес от куда нужно выводить строку
|
||||||
mov esi,dword ch_text_length
|
mov esi,dword ch_text_length
|
||||||
mov eax,4 ;внесем в eax значение вывода надписи на канву
|
;внесем в eax значение вывода надписи на канву
|
||||||
mcall ;Вывод
|
mov eax,4
|
||||||
popa ;восстановить значения регистров из стека
|
mcall ;Вывод
|
||||||
ret 4 ;выйдем из процедуры
|
popa ;восстановить значения регистров из стека
|
||||||
|
ret 4 ;выйдем из процедуры
|
||||||
|
|
||||||
check_box_clear_ch: ;очистка чек бокса
|
check_box_clear_ch: ;очистка чек бокса
|
||||||
mov edx,dword ch_color ;цвет внутри чек бокса
|
mov edx,dword ch_color ;цвет внутри чек бокса
|
||||||
@ -53,7 +54,7 @@ check_box_draw_ch: ;
|
|||||||
@@:
|
@@:
|
||||||
movzx ebx,word ch_left ;загрузить координату по х
|
movzx ebx,word ch_left ;загрузить координату по х
|
||||||
mov eax,dword ch_size
|
mov eax,dword ch_size
|
||||||
mov di,ax
|
mov bp,ax
|
||||||
shr eax,2
|
shr eax,2
|
||||||
push ax
|
push ax
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user