Subversion Repositories Kolibri OS

Rev

Rev 1432 | Rev 1457 | 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
 
171
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
172
    col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
173
    info_capt_len,el_focus, p_scrol,on_press {
174
  .data_info	dd 0
175
  .info_size	dw info_size
176
  .info_max_count dd info_max_count
177
  .style	    dd style
178
  .data_nodes	dd 0
179
  .data_img	 dd 0
180
  .img_cx	   dw img_cx
181
  .img_cy	   dw img_cy
182
  .data_img_sys	 dd 0
183
  .ch_tim		  dd 0
184
  .ls_tim		  dd 0
185
  .tim_undo	 dd 0
186
  .cur_pos	  dd 0
187
  .col_bkg	  dd col_bkg
188
  .col_zag	  dd col_zag
189
  .col_txt	  dd col_txt
190
  .box_left   dd box_l
191
  .box_top    dd box_t
192
  .box_width  dd box_w
193
  .box_height dd box_h
194
  .capt_cy	   dw capt_cy
195
  .info_capt_offs dw info_capt_offs
196
  .info_capt_len dw info_capt_len
197
  .el_focus dd el_focus
198
  .p_scrol  dd p_scrol
199
  rb 4
200
  .on_activate dd 0
201
  .on_press dd on_press
202
}
203
 
204
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
205
;Basic macros for use TreeList                           ;
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 ;размер заголовка для записи/чтения элементов