Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. ch_struc_size=36
  3. ed_struc_size=76
  4. ch_flag_en=10b
  5.  
  6. ch_left equ [edi]    ;координата начала рисования по х
  7. ch_top equ [edi+2]   ;координата начала рисования по у
  8. ch_text_margin equ [edi+4]      ;=4 расстояние от прямоугольника чек бокса до надписи
  9. ch_size equ [edi+8]             ;12 размер квадрата чек бокса
  10. ch_color equ [edi+12]           ;цвет внутри checkbox
  11. ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
  12. ch_text_color equ   [edi+20];[edi+4]  ;цвет текста
  13. ch_text_ptr equ [edi+24]    ;указатель на начало текстовой строки
  14. ch_text_length equ [edi+28]
  15. ch_flags equ [edi+32]       ;флаги
  16.  
  17. ed_width        equ [edi]               ;ширина компонента
  18. ed_left         equ [edi+4]             ;положение по оси х
  19. ed_top          equ [edi+8]             ;положение по оси у
  20. ed_color        equ [edi+12]            ;цвет фона компонента
  21. shift_color     equ [edi+16]            ;=0x6a9480 для примера возьем желеный цвет бокса
  22. ed_focus_border_color   equ [edi+20]    ;цвет рамки компонента
  23. ed_blur_border_color    equ [edi+24]    ;цвет не активного компонента
  24. ed_text_color   equ [edi+28]            ;цвет текста
  25. ed_max          equ [edi+32]                    ;кол-во символов которые можно максимально ввести
  26. ed_text         equ [edi+36]                    ;указатель на буфер
  27. ed_mouse_variable       equ [edi+40]    ; указатель на переменную для бокса/группы
  28. ed_flags        equ [edi+44]            ;флаги
  29. bp_flags        equ [ebp+44]            ;в некоторых процедурах edi используется, взамен указатель храниться в ebp
  30. ed_size equ [edi+48]                    ;кол-во символов
  31. bp_size equ [ebp+48]                    ;кол-во симвполов, для адресации испльзуется ebpб edi занят
  32. ed_pos  equ [edi+52]                    ;позиция курсора
  33. ed_offset       equ [edi+56]            ;смещение
  34. cl_curs_x       equ [edi+60]            ;предыдущее координата курсора по х
  35. cl_curs_y       equ [edi+64]            ;предыдущее координата курсора по у
  36. ed_shift_pos    equ [edi+68]            ;положение курсора
  37. ed_shift_pos_old equ [edi+72]           ;старое положение курсора
  38.  
  39. ed_struc_size=76
  40. struc  edit_box width,left,top,color,shift_color,focus_border_color,\
  41.        blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
  42. {
  43. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  44. ;Bit mask from editbox
  45. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  46. ed_figure_only= 1000000000000000b   ;одни символы
  47. ed_always_focus= 100000000000000b
  48. ed_focus=                     10b   ;фокус приложения
  49. ed_shift_on=                1000b   ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift
  50. ed_shift_on_off=1111111111110111b
  51. ed_shift=                    100b   ;включается при нажатии на shift т.е. если нажимаю
  52. ed_shift_off=   1111111111111011b
  53. ed_shift_bac=              10000b   ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение
  54. ed_shift_bac_cl=1111111111101111b   ;очистка при удалении выделения
  55. ed_shift_cl=    1111111111100011b
  56. ed_shift_mcl=   1111111111111011b
  57. ed_left_fl=               100000b
  58. ed_right_fl=    1111111111011111b
  59. ed_offset_fl=            1000000b
  60. ed_offset_cl=   1111111110111111b
  61. ed_insert=              10000000b
  62. ed_insert_cl=   1111111101111111b
  63. ed_mouse_on =          100000000b
  64. ed_mous_adn_b=         100011000b
  65. ed_mouse_on_off=1111111011111111b
  66. ed_height=14 ; высота
  67.  
  68. .width dd width
  69. .left dd left
  70. .top dd top
  71. .color dd color
  72. .shift_color dd shift_color
  73. .focus_border_color dd focus_border_color
  74. .blur_border_color dd blur_border_color
  75. .text_color dd text_color
  76. .max dd max
  77. .text dd text
  78. .mouse_variable dd mouse_variable
  79. .flags dd flags+0
  80. .size dd size+0
  81. .pos dd pos+0
  82. .offset dd 0
  83. .cl_curs_x dd 0
  84. .cl_curs_y dd 0
  85. .shift   dd 0
  86. .shift_old   dd 0
  87. }
  88. macro edit_boxes_set_sys_color start,end,color_table
  89. {
  90.         mov     edi,start
  91.         mov     ecx,((end-start)/ed_struc_size)
  92.         mov     esi,color_table
  93. @@:
  94.         mov     eax,dword [esi+36]
  95.         mov     ebx,dword [esi+20]
  96.         push    dword eax
  97.         pop     dword ed_focus_border_color
  98.         shr     bh,1
  99.         shr     bl,1
  100.         shr     ah,1
  101.         shr     al,1
  102.         add     ah,bh
  103.         add     al,bl
  104.         ror     eax,16
  105.         ror     ebx,16
  106.         shr     bl,1
  107.         shr     al,1
  108.         add     al,bl
  109.         ror     eax,16
  110.         mov     dword ed_blur_border_color,eax
  111.         mov     dword shift_color,eax
  112.         add     edi,ed_struc_size
  113.         loop    @b
  114. }
  115. macro get_sys_colors col_buf
  116. {
  117.         ;mov     eax,48
  118.         push    48
  119.         pop     eax
  120.         ;mov     ebx,3
  121.         push    3
  122.         pop     ebx
  123.         ;mov     ecx,col_buf
  124.         push    col_buf
  125.         pop     ecx
  126.         ;mov     edx,40
  127.         push    40
  128.         pop     edx
  129.         mcall
  130. }
  131. macro check_boxes_set_sys_color start,end,color_table
  132. {
  133. ch_left equ [edi]    ;координата начала рисования по х
  134. ch_top equ [edi+2]   ;координата начала рисования по у
  135. ch_text_margin equ [edi+4]      ;=4 расстояние от прямоугольника чек бокса до надписи
  136. ch_size equ [edi+8]             ;12 размер квадрата чек бокса
  137. ch_color equ [edi+12]           ;цвет внутри checkbox
  138. ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
  139. ch_text_color equ   [edi+20];[edi+4]  ;цвет текста
  140. ch_text_ptr equ [edi+24]    ;указатель на начало текстовой строки
  141. ch_text_length equ [edi+28]
  142. ch_flags equ [edi+32]       ;флаги
  143.  
  144.  
  145. ;ch_left equ [edi]    ;координата начала рисования по х
  146. ;ch_top equ [edi+2]   ;координата начала рисования по у
  147. ;ch_color equ [edi+4] ;цвет внутри checkbox
  148. ;ch_border_color equ [edi+8] ;цвет рамки checkbox
  149. ;ch_text_color equ [edi+12]  ;цвет текста
  150. ;ch_text_ptr equ [edi+16]    ;указатель на начало текстовой строки
  151. ;ch_text_length equ [edi+20] ;длина надписи (2^64 такой длины может быть текст)
  152. ;ch_flags equ [edi+24]       ;флаги
  153.  
  154.         mov     edi,start
  155.         mov     ecx,((end-start)/ch_struc_size)
  156.         mov     esi,color_table
  157. @@:
  158.         push    dword [esi+32]
  159.         pop     dword ch_text_color
  160.         push    dword [esi+36]
  161.         pop     dword ch_border_color
  162.         add     edi,ch_struc_size
  163.         loop    @b
  164. }
  165. struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
  166. {        ;структура параметров для чек бокса
  167. ch_flag_en=10b
  168. .left: dw left      ;+0        ;положение по х
  169. .top: dw top        ;положение по у
  170. .ch_text_margin:  dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи
  171. .ch_size: dd ch_size ;размер квадрата чек бокса, для примера 12
  172. .color: dd color    ;цвет внутри чекбокса
  173. .border_color: dd border_color ;цвет рамки
  174. .text_color: dd text_color     ;цвет надписи
  175. .text: dd text                 ;адрес в коде программы где расположен текст
  176. .ch_text_length: dd ch_text_length ;длинна строки с символами
  177. .flags: dd flags+0   ; флаги        
  178. }
  179. struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
  180. {        ;структура параметров для чек бокса
  181. op_flag_en=10b
  182. .option_group: dd point_gr
  183. .left: dw left      ;+0        ;положение по х
  184. .top: dw top        ;положение по у
  185. .ch_text_margin:  dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи
  186. .ch_size: dd op_size ;размер квадрата чек бокса, для примера 12
  187. .color: dd color    ;цвет внутри чекбокса
  188. .border_color: dd border_color ;цвет рамки
  189. .text_color: dd text_color     ;цвет надписи
  190. .text: dd text                 ;адрес в коде программы где расположен текст
  191. .ch_text_length: dd op_text_length ;длинна строки с символами
  192. .flags: dd flags+0   ; флаги        
  193. }
  194.  
  195.