Rev 1458 | Rev 1476 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1432 | mario79 | 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 | |||
1457 | IgorA | 171 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
172 | ;Basic macros for use TreeList ; |
||
173 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
174 | |||
1432 | mario79 | 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 | |||
1449 | IgorA | 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 | |||
1432 | mario79 | 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 ;размер заголовка для записи/чтения элементов |
||
1457 | IgorA | 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] ;указатель на функцию вызываемую если сохранение файла закончилось неудачно |
||
1464 | IgorA | 323 | ted_increase_size equ dword[edi+242] ;число символов на которые будет увечиваться память при нехватке |
324 | ted_ptr_free_symb equ dword[edi+246] ;указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста) |
||
1457 | IgorA | 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 |
||
1458 | IgorA | 345 | sb_offs_bckg_col equ 28 |
346 | sb_offs_frnt_col equ 32 |
||
347 | sb_offs_line_col equ 36 |
||
1457 | IgorA | 348 | sb_offs_redraw equ 40 |
349 | sb_offs_delta2 equ 46 |
||
350 | sb_offs_all_redraw equ 80 |
||
351 | ;------------------------------------------------------------------------------ |