Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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