Subversion Repositories Kolibri OS

Rev

Rev 1458 | Rev 1476 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;Basic macros for use EditBox                             ;
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4. ed_width        equ [edi]               ;ширина компонента
  5. ed_left         equ [edi+4]             ;положение по оси х
  6. ed_top          equ [edi+8]             ;положение по оси у
  7. ed_color        equ [edi+12]            ;цвет фона компонента
  8. shift_color     equ [edi+16]            ;=0x6a9480 для примера возьем желеный цвет бокса
  9. ed_focus_border_color   equ [edi+20]    ;цвет рамки компонента
  10. ed_blur_border_color    equ [edi+24]    ;цвет не активного компонента
  11. ed_text_color   equ [edi+28]            ;цвет текста
  12. ed_max          equ [edi+32]                    ;кол-во символов которые можно максимально ввести
  13. ed_text         equ [edi+36]                    ;указатель на буфер
  14. ed_mouse_variable       equ [edi+40]    ; указатель на переменную для бокса/группы
  15. ed_flags        equ [edi+44]            ;флаги
  16. bp_flags        equ [ebp+44]            ;в некоторых процедурах edi используется, взамен указатель храниться в ebp
  17. ed_size equ [edi+48]                    ;кол-во символов
  18. bp_size equ [ebp+48]                    ;кол-во симвполов, для адресации испльзуется ebpб edi занят
  19. ed_pos  equ [edi+52]                    ;позиция курсора
  20. ed_offset       equ [edi+56]            ;смещение
  21. cl_curs_x       equ [edi+60]            ;предыдущее координата курсора по х
  22. cl_curs_y       equ [edi+64]            ;предыдущее координата курсора по у
  23. ed_shift_pos    equ [edi+68]            ;положение курсора
  24. ed_shift_pos_old equ [edi+72]           ;старое положение курсора
  25.  
  26. ed_struc_size=76
  27.  
  28. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  29. ;Bit mask from editbox
  30. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  31. ed_figure_only= 1000000000000000b   ;одни символы
  32. ed_always_focus= 100000000000000b
  33. ed_focus=                     10b   ;фокус приложения
  34. ed_shift_on=                1000b   ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift
  35. ed_shift_on_off=1111111111110111b
  36. ed_shift=                    100b   ;включается при нажатии на shift т.е. если нажимаю
  37. ed_shift_off=   1111111111111011b
  38. ed_shift_bac=              10000b   ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение
  39. ed_shift_bac_cl=1111111111101111b   ;очистка при удалении выделения
  40. ed_shift_cl=    1111111111100011b
  41. ed_shift_mcl=   1111111111111011b
  42. ed_left_fl=               100000b
  43. ed_right_fl=    1111111111011111b
  44. ed_offset_fl=            1000000b
  45. ed_offset_cl=   1111111110111111b
  46. ed_insert=              10000000b
  47. ed_insert_cl=   1111111101111111b
  48. ed_mouse_on =          100000000b
  49. ed_mous_adn_b=         100011000b
  50. ed_mouse_on_off=1111111011111111b
  51. ed_height=14 ; высота
  52.  
  53. struc  edit_box width,left,top,color,shift_color,focus_border_color,\
  54.        blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
  55. {
  56. .width dd width
  57. .left  dd left
  58. .top   dd top
  59. .color dd color
  60. .shift_color dd shift_color
  61. .focus_border_color dd focus_border_color
  62. .blur_border_color  dd blur_border_color
  63. .text_color dd text_color
  64. .max  dd max
  65. .text dd text
  66. .mouse_variable dd mouse_variable
  67. .flags  dd flags+0
  68. .size   dd size+0
  69. .pos    dd pos+0
  70. .offset dd 0
  71. .cl_curs_x dd 0
  72. .cl_curs_y dd 0
  73. .shift     dd 0
  74. .shift_old dd 0
  75. }
  76.  
  77. macro edit_boxes_set_sys_color start,end,color_table
  78. {
  79.         mov     edi,start
  80.         mov     ecx,((end-start)/ed_struc_size)
  81.         mov     esi,color_table
  82. @@:
  83.         mov     eax,dword [esi+36]
  84.         mov     ebx,dword [esi+20]
  85.         push    dword eax
  86.         pop     dword ed_focus_border_color
  87.         shr     bh,1
  88.         shr     bl,1
  89.         shr     ah,1
  90.         shr     al,1
  91.         add     ah,bh
  92.         add     al,bl
  93.         ror     eax,16
  94.         ror     ebx,16
  95.         shr     bl,1
  96.         shr     al,1
  97.         add     al,bl
  98.         ror     eax,16
  99.         mov     dword ed_blur_border_color,eax
  100.         mov     dword shift_color,eax
  101.         add     edi,ed_struc_size
  102.         loop    @b
  103. }
  104. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  105. ;Basic macros for use CheckBox                            ;
  106. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  107. ch_struc_size=36
  108. ch_flag_en=10b ;элемент выбран
  109.  
  110. ch_left  equ [edi]         ;координата начала рисования по х
  111. ch_top   equ [edi+2]       ;координата начала рисования по у
  112. ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи
  113. ch_size  equ [edi+8]       ;12 размер квадрата чек бокса
  114. ch_color equ [edi+12]      ;цвет внутри checkbox
  115. ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
  116. ch_text_color   equ [edi+20] ;[edi+4]  ;цвет текста
  117. ch_text_ptr     equ [edi+24] ;указатель на начало текстовой строки
  118. ch_text_length  equ [edi+28]
  119. ch_flags equ [edi+32]      ;флаги
  120.  
  121. struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
  122. {        ;структура параметров для чек бокса
  123. .left: dw left      ;+0 положение по х
  124. .top:  dw top       ;+2 положение по у
  125. .ch_text_margin:  dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи
  126. .ch_size: dd ch_size ;размер квадрата чек бокса, для примера 12
  127. .color:   dd color   ;цвет внутри чекбокса
  128. .border_color: dd border_color ;цвет рамки
  129. .text_color:   dd text_color   ;цвет надписи
  130. .text: dd text                 ;адрес в коде программы где расположен текст
  131. .ch_text_length: dd ch_text_length ;длинна строки с символами
  132. .flags: dd flags+0   ; флаги        
  133. }
  134.  
  135. macro check_boxes_set_sys_color start,end,color_table
  136. {
  137.     mov     edi,start
  138.     mov     ecx,((end-start)/ch_struc_size)
  139.     mov     esi,color_table
  140. @@:
  141. ;    push    dword [esi+20] ;цвет рабочей области окна
  142. ;    pop     dword ch_color
  143.     push    dword [esi+32] ;цвет текста в рабочей области окна
  144.     pop     dword ch_text_color
  145.     push    dword [esi+36] ;цвет графики в окне (разделительные линии и т.п.)
  146.     pop     dword ch_border_color
  147.     add     edi,ch_struc_size
  148.     loop    @b
  149. }
  150.  
  151. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  152. ;Basic macros for use OptionBox                           ;
  153. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  154.  
  155. struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
  156. {        ;структура параметров для чек бокса
  157. op_flag_en=10b
  158. .option_group: dd point_gr
  159. .left: dw left       ;+0 ;положение по х
  160. .top:  dw top        ;положение по у
  161. .ch_text_margin:  dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи
  162. .ch_size: dd op_size ;размер квадрата чек бокса, для примера 12
  163. .color:   dd color   ;цвет внутри чекбокса
  164. .border_color: dd border_color ;цвет рамки
  165. .text_color:   dd text_color   ;цвет надписи
  166. .text: dd text                 ;адрес в коде программы где расположен текст
  167. .ch_text_length: dd op_text_length ;длинна строки с символами
  168. .flags: dd flags+0   ; флаги
  169. }
  170.  
  171. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  172. ;Basic macros for use TreeList                            ;
  173. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  174.  
  175. struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
  176.     col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
  177.     info_capt_len,el_focus, p_scrol,on_press {
  178.   .data_info    dd 0
  179.   .info_size    dw info_size
  180.   .info_max_count dd info_max_count
  181.   .style            dd style
  182.   .data_nodes   dd 0
  183.   .data_img      dd 0
  184.   .img_cx          dw img_cx
  185.   .img_cy          dw img_cy
  186.   .data_img_sys  dd 0
  187.   .ch_tim                 dd 0
  188.   .ls_tim                 dd 0
  189.   .tim_undo      dd 0
  190.   .cur_pos        dd 0
  191.   .col_bkg        dd col_bkg
  192.   .col_zag        dd col_zag
  193.   .col_txt        dd col_txt
  194.   .box_left   dd box_l
  195.   .box_top    dd box_t
  196.   .box_width  dd box_w
  197.   .box_height dd box_h
  198.   .capt_cy         dw capt_cy
  199.   .info_capt_offs dw info_capt_offs
  200.   .info_capt_len dw info_capt_len
  201.   .el_focus dd el_focus
  202.   .p_scrol  dd p_scrol
  203.   rb 4
  204.   .on_activate dd 0
  205.   .on_press dd on_press
  206. }
  207.  
  208. tl_info_size  equ  word[edi +4] ;размер данных выделяемых для каждого узла (пользовательськие данные + текст для подписи)
  209. tl_info_max_count equ dword[edi+6] ;максимальное количество узлов, которые можно добавить в элемент
  210. tl_style      equ dword[edi+10] ;стили элемента
  211. tl_data_nodes equ dword[edi+14] ;указатель на структуры узлов
  212. tl_data_img   equ dword[edi+18] ;указатель на изображения с иконками узлов
  213. tl_img_cx     equ  word[edi+22] ;ширина иконок
  214. tl_img_cy     equ  word[edi+24] ;высота иконок
  215. tl_data_img_sys equ dword[edi+26] ;указатель на системные изображения (стрелки, плюсики)
  216. tl_ch_tim     equ dword[edi+30] ;количество изменений в файле
  217. tl_tim_undo   equ dword[edi+38] ;количество отмененных действий
  218. tl_cur_pos    equ dword[edi+42] ;позиция курсора
  219. tl_col_bkg    equ dword[edi+46] ;цвет фона
  220. tl_col_zag    equ dword[edi+50] ;цвет заголовка
  221. tl_col_txt    equ dword[edi+54] ;цвет текста
  222. tl_box_left   equ dword[edi+58]
  223. tl_box_top    equ dword[edi+62]
  224. tl_box_width  equ dword[edi+66]
  225. tl_box_height equ dword[edi+70]
  226. tl_capt_cy    equ  word[edi+74] ;высота подписи
  227. tl_info_capt_offs equ word[edi+76] ;сдвиг для начала текста (подписи узла)
  228. tl_info_capt_len equ word[edi+78] ;длинна текста подписи узла (если = 0 то до конца структуры)
  229. tl_el_focus   equ dword[edi+80] ;указатель на структуру элемента в фокусе
  230. tl_p_scrol    equ dword[edi+84] ;указатель на структуру скроллинга
  231. tl_on_press   equ dword[edi+96] ;указатель на функцию, которая вызывается при нажатии Enter
  232.  
  233. ;data_info       dd ? ;+ 0 указатель на основные даные
  234. ;ls_tim         dd ? ;+34 время последнего сохранения
  235. ;on_activate dd ? ;+92 указатель на функцию при активировании узла
  236.  
  237. ;константы стиля
  238. tl_key_no_edit   equ   1b ;элемент нельзя редактировать на клавиатуре (изменять уровни, удалять)
  239. tl_draw_par_line equ  10b ;рисовать линии к родительскому узлу
  240. tl_list_box_mode equ 100b ;стиль не отображает уровни (как в ListBox все одного уровня)
  241.  
  242. ;константы для функций
  243. tl_err_save_memory_size equ  10b ;не хватает памяти для сохранения элемента
  244. tl_err_load_caption     equ   1b ;в памяти нет заголовка 'tree'
  245. tl_err_load_info_size   equ 100b ;не совпадает размер информационной структуры при открытии
  246. tl_load_mode_add        equ 0x20000 ;опция считывания в режиме добавления информации
  247. tl_save_load_heder_size equ 26 ;размер заголовка для записи/чтения элементов
  248.  
  249. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  250. ;Basic macros for use TextEditor                          ;
  251. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  252.  
  253. ted_wnd_l equ dword[edi+ 0] ;окно редактора: отступ слева
  254. ted_wnd_t equ dword[edi+ 4] ;окно редактора: отступ сверху
  255. ted_wnd_w equ dword[edi+ 8] ;окно редактора: ширина
  256. ted_wnd_h equ dword[edi+12] ;окно редактора: высота
  257. ted_rec_l equ dword[edi+16] ;ширина панели в окне
  258. ted_rec_t equ dword[edi+20] ;высота панели в окне
  259. ted_rec_w equ dword[edi+24] ;ширина символа (знакоместа) в окне
  260. ted_rec_h equ dword[edi+28] ;высота символа (знакоместа) в окне
  261. ted_drag_m equ byte[edi+32] ;выделение от мыши
  262. ted_drag_k equ byte[edi+33] ;выделение от клавиатуры
  263. ted_sel_x0 equ dword[edi+34] ;координата выделения x0
  264. ted_sel_y0 equ dword[edi+38] ;координата выделения y0
  265. ted_sel_x1 equ dword[edi+42] ;координата выделения x1
  266. ted_sel_y1 equ dword[edi+46] ;координата выделения y1
  267. ;запасные координаты выделения
  268. ted_seln_x0 equ dword[edi+50]
  269. ted_seln_y0 equ dword[edi+54]
  270. ted_seln_x1 equ dword[edi+58]
  271. ted_seln_y1 equ dword[edi+62]
  272.  
  273. ted_tex     equ dword[edi+66] ;указатель на память для хранения текста
  274. ted_tex_1   equ dword[edi+70] ;указатель на 1-ю стркутру символа
  275. ted_tex_end equ dword[edi+74] ;указатель на последнюю структуру символа
  276. ted_cur_x   equ dword[edi+78] ;координата x курсора
  277. ted_cur_y   equ dword[edi+82] ;координата y курсора
  278. ted_max_chars equ dword[edi+86] ;максимальное число символов в одном документе
  279. ted_colors_text_count equ dword[edi+90] ;колличество цветов текста
  280. ted_key_words_count   equ dword[edi+94] ;колличество ключевых слов
  281. ted_color_cursor   equ dword[edi+98] ;цвет курсора
  282. ted_color_wnd_capt equ dword[edi+102] ;цвет полей вокруг окна
  283. ted_color_wnd_work equ dword[edi+106] ;цвет фона окна
  284. ted_color_wnd_bord equ dword[edi+110] ;цвет текста на полях
  285. ted_color_select   equ dword[edi+114] ;цвет выделения
  286. ted_color_cur_text equ dword[edi+118] ;цвет символа под курсором
  287. ted_color_wnd_text equ dword[edi+122] ;цвет текста в окне
  288. ted_syntax_file    equ dword[edi+126] ;указатель на начало файла синтаксиса
  289. ted_syntax_file_size equ dword[edi+130] ;максимальный размер файла синтаксиса
  290. ted_text_colors     equ dword[edi+134] ;указатель на массив цветов текста
  291. ted_help_text_f1    equ dword[edi+138] ;указатель на текст справки (по нажатии F1)
  292. ted_help_id         equ dword[edi+142] ;идентификатор для справки
  293. ted_key_words_data  equ dword[edi+146] ;указатель на структуры ключевых слов TexColViv
  294. ted_tim_ch          equ dword[edi+150] ;колличество изменений в файле
  295. ted_tim_undo        equ dword[edi+154] ;колличество отмененных действий
  296. ted_tim_ls          equ dword[edi+158] ;время последнего сохранения
  297. ted_tim_co          equ dword[edi+162] ;время последней цветовой разметки
  298. ted_el_focus        equ dword[edi+166] ;указатель на переменную элемента в фокусе
  299. ted_err_save        equ  byte[edi+170] ;ошибка сохранения файла
  300. ted_panel_id        equ  byte[edi+171] ;номер открытой панели
  301. ted_key_new         equ  byte[edi+172] ;символ, который будет добавлятся с клавиатуры
  302. ted_symbol_new_line equ  byte[edi+173] ;символ завершения строки
  303. ted_scr_w           equ dword[edi+174] ;вертикальный скроллинг
  304. ted_scr_h           equ dword[edi+178] ;горизонтальный скроллинг
  305. ted_arr_key_pos     equ dword[edi+182] ;указатель на массив позиций ключевых слов
  306. ted_buffer          equ dword[edi+186] ;указатель на буфер копирования/вставки
  307. ted_buffer_find     equ dword[edi+190] ;указатель на буфер для поиска
  308. ted_cur_ins         equ  byte[edi+194] ;режим работы курсора (обычный или замена)
  309. ted_mode_color      equ  byte[edi+195] ;режим выделения слов цветом (0-выкл. 1-вкл.)
  310. ted_mode_invis      equ  byte[edi+196] ;режим показа непечатаемых символов
  311. ted_gp_opt          equ  byte[edi+197] ;опции возвращаемые функцией ted_get_pos_by_cursor
  312. ted_fun_on_key_ctrl_o equ dword[edi+198] ;указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла)
  313. ted_fun_on_key_ctrl_f equ dword[edi+202] ;... Ctrl+F (вызова/скрытия панели поиска)
  314. ted_fun_on_key_ctrl_n equ dword[edi+206] ;... Ctrl+N (создание нового документа)
  315. ted_fun_on_key_ctrl_s equ dword[edi+210] ;... Ctrl+S
  316. ted_buffer_size       equ dword[edi+214] ;размер буфера копирования/вставки
  317. ted_fun_find_err      equ dword[edi+218] ;указатель на функцию вызываемую если поиск закончился неудачно
  318. ted_fun_init_synt_err equ dword[edi+222] ;указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
  319. ted_fun_draw_panel_buttons equ dword[edi+226] ;указатель на функцию рисования панели с кнопками
  320. ted_fun_draw_panel_find    equ dword[edi+230] ;указатель на функцию рисования панели поиска
  321. ted_fun_draw_panel_syntax  equ dword[edi+234] ;указатель на функцию рисования панели синтаксиса
  322. ted_fun_save_err      equ dword[edi+238] ;указатель на функцию вызываемую если сохранение файла закончилось неудачно
  323. ted_increase_size     equ dword[edi+242] ;число символов на которые будет увечиваться память при нехватке
  324. ted_ptr_free_symb     equ dword[edi+246] ;указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
  325. ;------------------------------------------------------------------------------
  326. ted_opt_ed_move_cursor equ 1 ;двигать курсор после добавления текста
  327. ted_opt_ed_change_time equ 2 ;добавлять изменения при редактировании текста
  328. ted_offs_sel  equ 34 ;смещение структуры sel
  329. ted_offs_seln equ 50 ;смещение структуры seln
  330. ted_offs_count_colors equ 90 ;смещение переменной колличества цветов
  331. ted_offs_key_new equ 172
  332. ted_offs_symbol_new_line equ 173 ;смещение символа новой строки
  333. ;------------------------------------------------------------------------------
  334.  
  335.  
  336.  
  337. ; *** scroll bar constant ***
  338. sb_offs_size_x   equ  0
  339. sb_offs_start_x  equ  2
  340. sb_offs_size_y   equ  4
  341. sb_offs_start_y  equ  6
  342. sb_offs_max_area equ 16
  343. sb_offs_cur_area equ 20
  344. sb_offs_position equ 24
  345. sb_offs_bckg_col equ 28
  346. sb_offs_frnt_col equ 32
  347. sb_offs_line_col equ 36
  348. sb_offs_redraw   equ 40
  349. sb_offs_delta2   equ 46
  350. sb_offs_all_redraw equ 80
  351. ;------------------------------------------------------------------------------