Subversion Repositories Kolibri OS

Rev

Rev 1639 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1639 Lrz 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                            ;
1652 lrz 106
;Last change 11.10.2010					  ;
1639 Lrz 107
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1652 lrz 108
ch_struc_size=32		;размер структуры
1639 Lrz 109
ch_flag_en=10b 			;флаг установленного чек бокса.
110
 
111
ch_left_s	equ [ebp]	;кордината начала рисования по х
112
ch_top_s	equ [ebp+4]	;координата начала рисования по у
113
ch_text_margin 	equ [ebp+8] 	;=4 расстояние от прямоугольника чек бокса до надписи
114
ch_color 	equ [ebp+12]	;цвет внутри checkbox
115
ch_border_color equ [ebp+16] 	; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
116
ch_text_color   equ [ebp+20] 	;[edi+4]  ;цвет текста
117
ch_text_ptr     equ [ebp+24] 	;указатель на начало текстовой строки
1652 lrz 118
ch_flags 	equ [ebp+28]	;флаги
1639 Lrz 119
 
1652 lrz 120
struc check_box left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags
1639 Lrz 121
{				;структура параметров для чек бокса
122
.left_s: 	dd left_s	;+0 положение по х dw + размер dw
123
.top_s:  	dd top_s	;+4 положение по у dw + размер dw
124
.ch_text_margin: dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи
125
.color:   	dd color	;цвет внутри чекбокса
126
.border_color: 	dd border_color	;цвет рамки
127
.text_color:	dd text_color	;цвет надписи
128
.text: 		dd text		;адрес в коде программы где расположен текст
129
.flags:		dd flags+0	; флаги
130
}
131
 
132
macro check_boxes_set_sys_color start,end,color_table
133
{
134
	mov     ebp,start
135
	mov     ecx,((end-start)/ch_struc_size)
136
	mov     esi,color_table
137
@@:
138
	push    dword [esi+32] 		;цвет текста в рабочей области окна
139
	pop     dword ch_text_color
140
	push    dword [esi+36] 		;цвет графики в окне (разделительные линии и т.п.)
141
	pop     dword ch_border_color
142
	add     ebp,ch_struc_size
143
	loop    @b
144
}
145
 
146
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
147
;Basic macros for use OptionBox                           ;
148
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
149
 
150
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
151
{        ;структура параметров для чек бокса
152
op_flag_en=10b
153
.option_group: dd point_gr
154
.left: dw left       ;+0 ;положение по х
155
.top:  dw top        ;положение по у
156
.ch_text_margin:  dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи
157
.ch_size: dd op_size ;размер квадрата чек бокса, для примера 12
158
.color:   dd color   ;цвет внутри чекбокса
159
.border_color: dd border_color ;цвет рамки
160
.text_color:   dd text_color   ;цвет надписи
161
.text: dd text                 ;адрес в коде программы где расположен текст
162
.ch_text_length: dd op_text_length ;длинна строки с символами
163
.flags: dd flags+0   ; флаги
164
}
165
 
166
option_group equ [edi]
167
op_left equ [edi+4]    ;координата начала рисования по х
168
op_top equ [edi+6]     ;координата начала рисования по у
169
op_text_margin equ [edi+8]      ;=4 расстояние от прямоугольника чек бокса до надписи
170
op_size equ [edi+12]             ;12 размер квадрата чек бокса
171
op_color equ [edi+16]
172
op_border_color equ [edi+20] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
173
op_text_color equ   [edi+24];[edi+4]  ;цвет текста
174
op_text_ptr equ [edi+28]    ;указатель на начало текстовой строки
175
op_text_length equ [edi+32]
176
op_flags equ [edi+36]       ;флаги
177
 
178
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
179
;Basic macros for use TreeList                            ;
180
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
181
 
182
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
183
    col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
184
    info_capt_len,el_focus, p_scrol,on_press {
185
  .data_info	dd 0
186
  .info_size	dw info_size
187
  .info_max_count dd info_max_count
188
  .style	    dd style
189
  .data_nodes	dd 0
190
  .data_img	 dd 0
191
  .img_cx	   dw img_cx
192
  .img_cy	   dw img_cy
193
  .data_img_sys	 dd 0
194
  .ch_tim		  dd 0
195
  .ls_tim		  dd 0
196
  .tim_undo	 dd 0
197
  .cur_pos	  dd 0
198
  .col_bkg	  dd col_bkg
199
  .col_zag	  dd col_zag
200
  .col_txt	  dd col_txt
201
  .box_left   dd box_l
202
  .box_top    dd box_t
203
  .box_width  dd box_w
204
  .box_height dd box_h
205
  .capt_cy	   dw capt_cy
206
  .info_capt_offs dw info_capt_offs
207
  .info_capt_len dw info_capt_len
208
  .el_focus dd el_focus
209
  .p_scrol  dd p_scrol
210
  rb 4
211
  .on_activate dd 0
212
  .on_press dd on_press
213
}
214
 
215
tl_info_size  equ  word[edi +4] ;размер данных выделяемых для каждого узла (пользовательськие данные + текст для подписи)
216
tl_info_max_count equ dword[edi+6] ;максимальное количество узлов, которые можно добавить в элемент
217
tl_style      equ dword[edi+10] ;стили элемента
218
tl_data_nodes equ dword[edi+14] ;указатель на структуры узлов
219
tl_data_img   equ dword[edi+18] ;указатель на изображения с иконками узлов
220
tl_img_cx     equ  word[edi+22] ;ширина иконок
221
tl_img_cy     equ  word[edi+24] ;высота иконок
222
tl_data_img_sys equ dword[edi+26] ;указатель на системные изображения (стрелки, плюсики)
223
tl_ch_tim     equ dword[edi+30] ;количество изменений в файле
224
tl_tim_undo   equ dword[edi+38] ;количество отмененных действий
225
tl_cur_pos    equ dword[edi+42] ;позиция курсора
226
tl_col_bkg    equ dword[edi+46] ;цвет фона
227
tl_col_zag    equ dword[edi+50] ;цвет заголовка
228
tl_col_txt    equ dword[edi+54] ;цвет текста
229
tl_box_left   equ dword[edi+58]
230
tl_box_top    equ dword[edi+62]
231
tl_box_width  equ dword[edi+66]
232
tl_box_height equ dword[edi+70]
233
tl_capt_cy    equ  word[edi+74] ;высота подписи
234
tl_info_capt_offs equ word[edi+76] ;сдвиг для начала текста (подписи узла)
235
tl_info_capt_len equ word[edi+78] ;длинна текста подписи узла (если = 0 то до конца структуры)
236
tl_el_focus   equ dword[edi+80] ;указатель на структуру элемента в фокусе
237
tl_p_scrol    equ dword[edi+84] ;указатель на структуру скроллинга
238
tl_on_press   equ dword[edi+96] ;указатель на функцию, которая вызывается при нажатии Enter
239
 
240
;data_info	 dd ? ;+ 0 указатель на основные даные
241
;ls_tim		dd ? ;+34 время последнего сохранения
242
;on_activate dd ? ;+92 указатель на функцию при активировании узла
243
 
244
;константы стиля
245
tl_key_no_edit   equ   1b ;элемент нельзя редактировать на клавиатуре (изменять уровни, удалять)
246
tl_draw_par_line equ  10b ;рисовать линии к родительскому узлу
247
tl_list_box_mode equ 100b ;стиль не отображает уровни (как в ListBox все одного уровня)
248
 
249
;константы для функций
250
tl_err_save_memory_size equ  10b ;не хватает памяти для сохранения элемента
251
tl_err_load_caption     equ   1b ;в памяти нет заголовка 'tree'
252
tl_err_load_info_size   equ 100b ;не совпадает размер информационной структуры при открытии
253
tl_load_mode_add        equ 0x20000 ;опция считывания в режиме добавления информации
254
tl_save_load_heder_size equ 26 ;размер заголовка для записи/чтения элементов
255
tl_offs_box equ 58 ;начало BOX структуры для tree_list
256
 
257
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
258
;Basic macros for use TextEditor                          ;
259
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
260
 
261
ted_wnd_l equ dword[edi+ 0] ;окно редактора: отступ слева
262
ted_wnd_t equ dword[edi+ 4] ;окно редактора: отступ сверху
263
ted_wnd_w equ dword[edi+ 8] ;окно редактора: ширина
264
ted_wnd_h equ dword[edi+12] ;окно редактора: высота
265
ted_rec_l equ dword[edi+16] ;ширина панели в окне
266
ted_rec_t equ dword[edi+20] ;высота панели в окне
267
ted_rec_w equ dword[edi+24] ;ширина символа (знакоместа) в окне
268
ted_rec_h equ dword[edi+28] ;высота символа (знакоместа) в окне
269
ted_drag_m equ byte[edi+32] ;выделение от мыши
270
ted_drag_k equ byte[edi+33] ;выделение от клавиатуры
271
ted_sel_x0 equ dword[edi+34] ;координата выделения x0
272
ted_sel_y0 equ dword[edi+38] ;координата выделения y0
273
ted_sel_x1 equ dword[edi+42] ;координата выделения x1
274
ted_sel_y1 equ dword[edi+46] ;координата выделения y1
275
;запасные координаты выделения
276
ted_seln_x0 equ dword[edi+50]
277
ted_seln_y0 equ dword[edi+54]
278
ted_seln_x1 equ dword[edi+58]
279
ted_seln_y1 equ dword[edi+62]
280
 
281
ted_tex     equ dword[edi+66] ;указатель на память для хранения текста
282
ted_tex_1   equ dword[edi+70] ;указатель на 1-ю стркутру символа
283
ted_tex_end equ dword[edi+74] ;указатель на последнюю структуру символа
284
ted_cur_x   equ dword[edi+78] ;координата x курсора
285
ted_cur_y   equ dword[edi+82] ;координата y курсора
286
ted_max_chars equ dword[edi+86] ;максимальное число символов в одном документе
287
ted_colors_text_count equ dword[edi+90] ;колличество цветов текста
288
ted_key_words_count   equ dword[edi+94] ;колличество ключевых слов
289
ted_color_cursor   equ dword[edi+98] ;цвет курсора
290
ted_color_wnd_capt equ dword[edi+102] ;цвет полей вокруг окна
291
ted_color_wnd_work equ dword[edi+106] ;цвет фона окна
292
ted_color_wnd_bord equ dword[edi+110] ;цвет текста на полях
293
ted_color_select   equ dword[edi+114] ;цвет выделения
294
ted_color_cur_text equ dword[edi+118] ;цвет символа под курсором
295
ted_color_wnd_text equ dword[edi+122] ;цвет текста в окне
296
ted_syntax_file    equ dword[edi+126] ;указатель на начало файла синтаксиса
297
ted_syntax_file_size equ dword[edi+130] ;максимальный размер файла синтаксиса
298
ted_text_colors     equ dword[edi+134] ;указатель на массив цветов текста
299
ted_help_text_f1    equ dword[edi+138] ;указатель на текст справки (по нажатии F1)
300
ted_help_id         equ dword[edi+142] ;идентификатор для справки
301
ted_key_words_data  equ dword[edi+146] ;указатель на структуры ключевых слов TexColViv
302
ted_tim_ch          equ dword[edi+150] ;колличество изменений в файле
303
ted_tim_undo        equ dword[edi+154] ;колличество отмененных действий
304
ted_tim_ls          equ dword[edi+158] ;время последнего сохранения
305
ted_tim_co          equ dword[edi+162] ;время последней цветовой разметки
306
ted_el_focus        equ dword[edi+166] ;указатель на переменную элемента в фокусе
307
ted_err_save        equ  byte[edi+170] ;ошибка сохранения файла
308
ted_panel_id        equ  byte[edi+171] ;номер открытой панели
309
ted_key_new         equ  byte[edi+172] ;символ, который будет добавлятся с клавиатуры
310
ted_symbol_new_line equ  byte[edi+173] ;символ завершения строки
311
ted_scr_w           equ dword[edi+174] ;вертикальный скроллинг
312
ted_scr_h           equ dword[edi+178] ;горизонтальный скроллинг
313
ted_arr_key_pos     equ dword[edi+182] ;указатель на массив позиций ключевых слов
314
ted_buffer          equ dword[edi+186] ;указатель на буфер копирования/вставки
315
ted_buffer_find     equ dword[edi+190] ;указатель на буфер для поиска
316
ted_cur_ins         equ  byte[edi+194] ;режим работы курсора (обычный или замена)
317
ted_mode_color      equ  byte[edi+195] ;режим выделения слов цветом (0-выкл. 1-вкл.)
318
ted_mode_invis      equ  byte[edi+196] ;режим показа непечатаемых символов
319
ted_gp_opt          equ  byte[edi+197] ;опции возвращаемые функцией ted_get_pos_by_cursor
320
ted_fun_on_key_ctrl_o equ dword[edi+198] ;указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла)
321
ted_fun_on_key_ctrl_f equ dword[edi+202] ;... Ctrl+F (вызова/скрытия панели поиска)
322
ted_fun_on_key_ctrl_n equ dword[edi+206] ;... Ctrl+N (создание нового документа)
323
ted_fun_on_key_ctrl_s equ dword[edi+210] ;... Ctrl+S
324
ted_buffer_size       equ dword[edi+214] ;размер буфера копирования/вставки
325
ted_fun_find_err      equ dword[edi+218] ;указатель на функцию вызываемую если поиск закончился неудачно
326
ted_fun_init_synt_err equ dword[edi+222] ;указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
327
ted_fun_draw_panel_buttons equ dword[edi+226] ;указатель на функцию рисования панели с кнопками
328
ted_fun_draw_panel_find    equ dword[edi+230] ;указатель на функцию рисования панели поиска
329
ted_fun_draw_panel_syntax  equ dword[edi+234] ;указатель на функцию рисования панели синтаксиса
330
ted_fun_save_err      equ dword[edi+238] ;указатель на функцию вызываемую если сохранение файла закончилось неудачно
331
ted_increase_size     equ dword[edi+242] ;число символов на которые будет увечиваться память при нехватке
332
ted_ptr_free_symb     equ dword[edi+246] ;указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
333
;------------------------------------------------------------------------------
334
ted_opt_ed_move_cursor equ 1 ;двигать курсор после добавления текста
335
ted_opt_ed_change_time equ 2 ;добавлять изменения при редактировании текста
336
ted_offs_sel  equ 34 ;смещение структуры sel
337
ted_offs_seln equ 50 ;смещение структуры seln
338
ted_offs_count_colors equ 90 ;смещение переменной колличества цветов
339
ted_offs_key_new equ 172
340
ted_offs_symbol_new_line equ 173 ;смещение символа новой строки
341
;------------------------------------------------------------------------------
342
 
343
 
344
 
345
; *** scroll bar constant ***
346
sb_offs_size_x   equ  0
347
sb_offs_start_x  equ  2
348
sb_offs_size_y   equ  4
349
sb_offs_start_y  equ  6
350
sb_offs_max_area equ 16
351
sb_offs_cur_area equ 20
352
sb_offs_position equ 24
353
sb_offs_bckg_col equ 28
354
sb_offs_frnt_col equ 32
355
sb_offs_line_col equ 36
356
sb_offs_redraw   equ 40
357
sb_offs_delta2   equ 46
358
sb_offs_all_redraw equ 80
359
;------------------------------------------------------------------------------