Subversion Repositories Kolibri OS

Rev

Rev 7579 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7579 Rev 7583
1
align 16
1
align 16
2
draw_window:
2
draw_window:
3
	mcall SF_REDRAW,SSF_BEGIN_DRAW
3
	mcall SF_REDRAW,SSF_BEGIN_DRAW
4
 
4
 
5
	mov edx,[sc.work]
5
	mov edx,[sc.work]
6
	or  edx,0x73000000
6
	or  edx,0x73000000
7
	mcall SF_CREATE_WINDOW,dword[wnd_s_pos],dword[wnd_s_pos+4],,,hed
7
	mcall SF_CREATE_WINDOW,dword[wnd_s_pos],dword[wnd_s_pos+4],,,hed
8
 
8
 
9
	mcall SF_THREAD_INFO,procinfo,-1
9
	mcall SF_THREAD_INFO,procinfo,-1
10
	mov edi,tedit0 ;çíà÷åíèå edi íóæíî äëÿ EvSize è ted_wnd_t
10
	mov edi,tedit0 ;çíà÷åíèå edi íóæíî äëÿ EvSize è ted_wnd_t
11
	call EvSize
11
	call EvSize
12
 
12
 
13
	movzx ebx,word[procinfo.client_box.width]
13
	movzx ebx,word[procinfo.client_box.width]
14
	inc bx
14
	inc bx
15
	mcall SF_DRAW_RECT,,ted_wnd_t ;âåðõíèé ïðÿìîóãîëüíèê, äëÿ î÷èñòêè âåðõíåé ïàíåëè
15
	mcall SF_DRAW_RECT,,ted_wnd_t ;âåðõíèé ïðÿìîóãîëüíèê, äëÿ î÷èñòêè âåðõíåé ïàíåëè
16
	call draw_but_toolbar
16
	call draw_but_toolbar
17
	stdcall [kmainmenu_draw], [main_menu]
17
	stdcall [kmainmenu_draw], [main_menu]
18
	stdcall [ted_draw], tedit0
18
	stdcall [ted_draw], tedit0
19
 
19
 
20
	mcall SF_REDRAW,SSF_END_DRAW
20
	mcall SF_REDRAW,SSF_END_DRAW
21
	ret
21
	ret
22
 
22
 
23
align 4
23
align 4
24
draw_but_toolbar: ;ôóíêöèÿ äëÿ ðèñîâàíèÿ ïàíåëè èíñòðóìåíòîâ
24
draw_but_toolbar: ;ôóíêöèÿ äëÿ ðèñîâàíèÿ ïàíåëè èíñòðóìåíòîâ
25
	pushad
25
	pushad
26
	mov edi,tedit0
26
	mov edi,tedit0
27
 
27
 
28
	mov ecx,0x40000000+ID_BUT_NEW
28
	mov ecx,0x40000000+ID_BUT_NEW
29
	mov edx,(5 shl 16)+25
29
	mov edx,(5 shl 16)+25
30
	bt word[panel_but],0
30
	bt word[panel_but],0
31
	jnc @f
31
	jnc @f
32
		call draw_but_icon ;New
32
		call draw_but_icon ;New
33
	@@:
33
	@@:
34
 
34
 
35
	mov cx,ID_BUT_OPEN
35
	mov cx,ID_BUT_OPEN
36
	bt word[panel_but+1],0
36
	bt word[panel_but+1],0
37
	jnc @f
37
	jnc @f
38
		add edx,25 shl 16
38
		add edx,25 shl 16
39
		call draw_but_icon ;Open
39
		call draw_but_icon ;Open
40
	@@:
40
	@@:
41
 
41
 
42
	stdcall [ted_can_save],edi
42
	stdcall [ted_can_save],edi
43
	cmp al,1
43
	cmp al,1
44
	je @f
44
	je @f
45
		and ecx,0xffff
45
		and ecx,0xffff
46
	@@:
46
	@@:
47
	mov cx,ID_BUT_SAVE
47
	mov cx,ID_BUT_SAVE
48
	bt word[panel_but+2],0
48
	bt word[panel_but+2],0
49
	jnc @f
49
	jnc @f
50
		add edx,25 shl 16
50
		add edx,25 shl 16
51
		call draw_but_icon ;Save
51
		call draw_but_icon ;Save
52
	@@:
52
	@@:
53
	or ecx,0x40000000
53
	or ecx,0x40000000
54
 
54
 
55
	mov cx,ID_BUT_SAVE_AS
55
	mov cx,ID_BUT_SAVE_AS
56
	bt word[panel_but+3],0
56
	bt word[panel_but+3],0
57
	jnc @f
57
	jnc @f
58
		add edx,25 shl 16
58
		add edx,25 shl 16
59
		call draw_but_icon ;Save as
59
		call draw_but_icon ;Save as
60
	@@:
60
	@@:
61
 
61
 
62
	mov cx,ID_BUT_SELECT
62
	mov cx,ID_BUT_SELECT
63
	bt word[panel_but+4],0
63
	bt word[panel_but+4],0
64
	jnc @f
64
	jnc @f
65
		add edx,30 shl 16
65
		add edx,30 shl 16
66
		call draw_but_icon ;Select word
66
		call draw_but_icon ;Select word
67
	@@:
67
	@@:
68
 
68
 
69
	call [ted_is_select]
69
	call [ted_is_select]
70
	or al,al
70
	or al,al
71
	jnz @f
71
	jnz @f
72
		and ecx,0xffff
72
		and ecx,0xffff
73
	@@:
73
	@@:
74
	mov cx,ID_BUT_CUT
74
	mov cx,ID_BUT_CUT
75
	bt word[panel_but+5],0
75
	bt word[panel_but+5],0
76
	jnc @f
76
	jnc @f
77
		add edx,25 shl 16
77
		add edx,25 shl 16
78
		call draw_but_icon ;Cut
78
		call draw_but_icon ;Cut
79
	@@:
79
	@@:
80
 
80
 
81
	mov cx,ID_BUT_COPY
81
	mov cx,ID_BUT_COPY
82
	bt word[panel_but+6],0
82
	bt word[panel_but+6],0
83
	jnc @f
83
	jnc @f
84
		add edx,25 shl 16
84
		add edx,25 shl 16
85
		call draw_but_icon ;Copy
85
		call draw_but_icon ;Copy
86
	@@:
86
	@@:
87
	or ecx,0x40000000
87
	or ecx,0x40000000
88
 
88
 
89
	cmp dword[buf],0
89
	cmp dword[buf],0
90
	jne @f
90
	jne @f
91
		and ecx,0xffff
91
		and ecx,0xffff
92
	@@:
92
	@@:
93
	mov cx,ID_BUT_PASTE
93
	mov cx,ID_BUT_PASTE
94
	bt word[panel_but+7],0
94
	bt word[panel_but+7],0
95
	jnc @f
95
	jnc @f
96
		add edx,25 shl 16
96
		add edx,25 shl 16
97
		call draw_but_icon ;Paste
97
		call draw_but_icon ;Paste
98
	@@:
98
	@@:
99
	or ecx,0x40000000
99
	or ecx,0x40000000
100
 
100
 
101
	mov cx,ID_BUT_FIND
101
	mov cx,ID_BUT_FIND
102
	bt word[panel_but+8],0
102
	bt word[panel_but+8],0
103
	jnc @f
103
	jnc @f
104
		add edx,25 shl 16
104
		add edx,25 shl 16
105
		call draw_but_icon ;Found
105
		call draw_but_icon ;Found
106
	@@:
106
	@@:
107
 
107
 
108
	mov cx,ID_BUT_REPLACE
108
	mov cx,ID_BUT_REPLACE
109
	bt word[panel_but+9],0
109
	bt word[panel_but+9],0
110
	jnc @f
110
	jnc @f
111
		add edx,25 shl 16
111
		add edx,25 shl 16
112
		call draw_but_icon ;Replace
112
		call draw_but_icon ;Replace
113
	@@:
113
	@@:
114
 
114
 
115
	mov cx,ID_BUT_KEY_WORDS
115
	mov cx,ID_BUT_KEY_WORDS
116
	bt word[panel_but+10],0
116
	bt word[panel_but+10],0
117
	jnc @f
117
	jnc @f
118
		add edx,25 shl 16
118
		add edx,25 shl 16
119
		call draw_but_icon ;Key words
119
		call draw_but_icon ;Key words
120
	@@:
120
	@@:
121
 
121
 
122
	call [ted_is_select]
122
	call [ted_is_select]
123
	or al,al
123
	or al,al
124
	jnz @f
124
	jnz @f
125
		and ecx,0xffff
125
		and ecx,0xffff
126
	@@:
126
	@@:
127
	mov cx,ID_BUT_UPPER
127
	mov cx,ID_BUT_UPPER
128
	bt word[panel_but+11],0
128
	bt word[panel_but+11],0
129
	jnc @f
129
	jnc @f
130
		add edx,30 shl 16
130
		add edx,30 shl 16
131
		call draw_but_icon ;Upper
131
		call draw_but_icon ;Upper
132
	@@:
132
	@@:
133
 
133
 
134
	mov cx,ID_BUT_LOWER
134
	mov cx,ID_BUT_LOWER
135
	bt word[panel_but+12],0
135
	bt word[panel_but+12],0
136
	jnc @f
136
	jnc @f
137
		add edx,25 shl 16
137
		add edx,25 shl 16
138
		call draw_but_icon ;Lower
138
		call draw_but_icon ;Lower
139
	@@:
139
	@@:
140
 
140
 
141
	mov cx,ID_BUT_REVERSE
141
	mov cx,ID_BUT_REVERSE
142
	bt word[panel_but+13],0
142
	bt word[panel_but+13],0
143
	jnc @f
143
	jnc @f
144
		add edx,25 shl 16
144
		add edx,25 shl 16
145
		call draw_but_icon ;Reverse
145
		call draw_but_icon ;Reverse
146
	@@:
146
	@@:
147
	or ecx,0x40000000
147
	or ecx,0x40000000
148
 
148
 
149
	mov ebx,ted_tim_undo
149
	mov ebx,ted_tim_undo
150
	cmp ted_tim_ch,ebx
150
	cmp ted_tim_ch,ebx
151
	jg @f
151
	jg @f
152
		and ecx,0xffff
152
		and ecx,0xffff
153
	@@:
153
	@@:
154
	mov cx,ID_BUT_UNDO
154
	mov cx,ID_BUT_UNDO
155
	bt word[panel_but+14],0
155
	bt word[panel_but+14],0
156
	jnc @f
156
	jnc @f
157
		add edx,30 shl 16
157
		add edx,30 shl 16
158
		call draw_but_icon ;Undo
158
		call draw_but_icon ;Undo
159
	@@:
159
	@@:
160
	or ecx,0x40000000
160
	or ecx,0x40000000
161
 
161
 
162
	cmp ted_tim_undo,1
162
	cmp ted_tim_undo,1
163
	jge @f
163
	jge @f
164
		and ecx,0xffff
164
		and ecx,0xffff
165
	@@:
165
	@@:
166
	mov cx,ID_BUT_REDO
166
	mov cx,ID_BUT_REDO
167
	bt word[panel_but+15],0
167
	bt word[panel_but+15],0
168
	jnc @f
168
	jnc @f
169
		add edx,25 shl 16
169
		add edx,25 shl 16
170
		call draw_but_icon ;Redo
170
		call draw_but_icon ;Redo
171
	@@:
171
	@@:
172
	or ecx,0x40000000
172
	or ecx,0x40000000
173
 
173
 
174
	mov cx,ID_BUT_INVISIBLE
174
	mov cx,ID_BUT_INVISIBLE
175
	bt word[panel_but+16],0
175
	bt word[panel_but+16],0
176
	jnc @f
176
	jnc @f
177
		add edx,30 shl 16
177
		add edx,30 shl 16
178
		call draw_but_icon ;Invisible on|off
178
		call draw_but_icon ;Invisible on|off
179
	@@:
179
	@@:
180
 
180
 
181
	mov cx,ID_BUT_SYNTAX_LIST
181
	mov cx,ID_BUT_SYNTAX_LIST
182
	bt word[panel_but+17],0
182
	bt word[panel_but+17],0
183
	jnc @f
183
	jnc @f
184
		add edx,25 shl 16
184
		add edx,25 shl 16
185
		call draw_but_icon ;Âûáîð ôàéëà ïîäñâåòêè
185
		call draw_but_icon ;Âûáîð ôàéëà ïîäñâåòêè
186
	@@:
186
	@@:
187
 
187
 
188
	mov cx,ID_BUT_SYNTAX_MODE
188
	mov cx,ID_BUT_SYNTAX_MODE
189
	bt word[panel_but+18],0
189
	bt word[panel_but+18],0
190
	jnc @f
190
	jnc @f
191
		add edx,25 shl 16
191
		add edx,25 shl 16
192
		call draw_but_icon ;Ïîäñâåòêà âêë|âûêë
192
		call draw_but_icon ;Ïîäñâåòêà âêë|âûêë
193
	@@:
193
	@@:
194
 
194
 
195
	mov cx,ID_BUT_CONVERT_1251_866
195
	mov cx,ID_BUT_CONVERT_1251_866
196
	bt word[panel_but+19],0
196
	bt word[panel_but+19],0
197
	jnc @f
197
	jnc @f
198
		add edx,30 shl 16
198
		add edx,30 shl 16
199
		call draw_but_icon ;cp 1251 -> 866
199
		call draw_but_icon ;cp 1251 -> 866
200
	@@:
200
	@@:
201
 
201
 
202
	mov cx,ID_BUT_CONVERT_866_1251
202
	mov cx,ID_BUT_CONVERT_866_1251
203
	bt word[panel_but+20],0
203
	bt word[panel_but+20],0
204
	jnc @f
204
	jnc @f
205
		add edx,25 shl 16
205
		add edx,25 shl 16
206
		call draw_but_icon ;cp 866 -> 1251
206
		call draw_but_icon ;cp 866 -> 1251
207
	@@:
207
	@@:
208
 
208
 
209
	popad
209
	popad
210
	ret
210
	ret
211
 
211
 
212
;txtBUp db 24
212
;txtBUp db 24
213
;txtBDn db 25
213
;txtBDn db 25
214
;txtBRi db 26
214
;txtBRi db 26
215
;txtBLe db 27
215
;txtBLe db 27
216
 
216
 
217
align 4
217
align 4
218
proc draw_panels uses edi, edit:dword
218
proc draw_panels uses eax edx edi, edit:dword
219
	mov edi,[edit]
219
	mov edi,[edit]
220
	cmp ted_panel_id,TED_PANEL_FIND
220
	cmp ted_panel_id,TED_PANEL_FIND
221
	jne @f
221
	jne @f
222
		call p_find
222
		mcall SF_DEFINE_BUTTON,,,0x80000000+200
223
		jmp .end_f
223
		mcall ,,,0x80000000+202
-
 
224
		mcall ,,,0x80000000+203
-
 
225
		mcall ,,,0x80000000+204
-
 
226
		call p_find
-
 
227
		jmp .end_f
224
	@@:
228
	@@:
225
	cmp ted_panel_id,TED_PANEL_REPLACE
229
	cmp ted_panel_id,TED_PANEL_REPLACE
226
	jne @f
230
	jne @f
227
		call p_replace
231
		mcall SF_DEFINE_BUTTON,,,0x80000000+200
228
		jmp .end_f
232
		mcall ,,,0x80000000+201
-
 
233
		mcall ,,,0x80000000+204
-
 
234
		call p_replace
-
 
235
		jmp .end_f
229
	@@:
236
	@@:
230
	cmp ted_panel_id,TED_PANEL_GOTO
237
	cmp ted_panel_id,TED_PANEL_GOTO
231
	jne @f
238
	jne @f
232
		call p_goto
239
		mcall SF_DEFINE_BUTTON,,,0x80000000+200
233
		jmp .end_f
240
		mcall ,,,0x80000000+201
-
 
241
		mcall ,,,0x80000000+202
-
 
242
		mcall ,,,0x80000000+203
-
 
243
		call p_goto
-
 
244
		jmp .end_f
234
	@@:
245
	@@:
235
	cmp ted_panel_id,TED_PANEL_SYNTAX
246
	cmp ted_panel_id,TED_PANEL_SYNTAX
236
	jne @f
247
	jne @f
237
		call p_syntax
248
		mcall SF_DEFINE_BUTTON,,,0x80000000+201
238
		jmp .end_f
249
		mcall ,,,0x80000000+202
239
	@@:
-
 
240
	push eax edx
-
 
241
		mcall SF_DEFINE_BUTTON,,,0x80000000+200
-
 
242
		mcall ,,,0x80000000+201
-
 
243
		mcall ,,,0x80000000+202
250
		mcall ,,,0x80000000+203
244
		mcall ,,,0x80000000+203
-
 
245
		mcall ,,,0x80000000+204
251
		mcall ,,,0x80000000+204
246
	pop edx eax
252
		call p_syntax
247
	.end_f:
253
		;jmp .end_f
248
	ret
254
	@@:
-
 
255
	.end_f:
-
 
256
	ret
249
endp
257
endp
250
 
258
 
251
align 4
259
align 4
252
p_find:
260
p_find:
253
	push eax ebx ecx edx
261
	push eax ebx ecx edx
254
		mov ecx,ted_wnd_t
262
		mov ecx,ted_wnd_t
255
		shl ecx,16
263
		shl ecx,16
256
		mov cx,20
264
		mov cx,20
257
		mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
265
		mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
258
 
266
 
259
		mov ecx,ted_wnd_t
267
		mov ecx,ted_wnd_t
260
		add cx,20+15 ; 15 - height text box
268
		add cx,20+15 ; 15 - height text box
261
		shl ecx,16
269
		shl ecx,16
262
		add ecx,ted_wnd_h
270
		add ecx,ted_wnd_h
263
		mov edx,ted_scr_h
271
		mov edx,ted_scr_h
264
		add cx,word[edx+sb_offs_size_y]
272
		add cx,word[edx+sb_offs_size_y]
265
		sub cx,20+15-1 ; 15 - height text box
273
		sub cx,20+15-1 ; 15 - height text box
266
		mcall ,,,[sc.work]
274
		mcall ,,,[sc.work]
267
 
275
 
268
		stdcall [edit_box_draw], edit_find
276
		stdcall [edit_box_draw], edit_find
269
 
277
 
270
		mov ecx,ted_wnd_t
278
		mov ecx,ted_wnd_t
271
		shl ecx,16
279
		shl ecx,16
272
		add ecx,(93 shl 16)+20
280
		add ecx,(111 shl 16)+20
273
		mcall SF_DEFINE_BUTTON,(5 shl 16)+85,,201,[sc.work_button] ;201 - button id
281
		mcall SF_DEFINE_BUTTON,(5 shl 16)+85,,201,[sc.work_button] ;201 - button id
274
 
282
 
275
		mov ebx,(23 shl 16)+7
283
		mov ebx,(23 shl 16)+7
276
		add ebx,ted_wnd_t
284
		add ebx,ted_wnd_t
277
		mov ecx,[sc.work_text]
285
		mov ecx,[sc.work_text]
278
		or ecx,0x80000000
286
		or ecx,0x80000000
279
		mcall SF_DRAW_TEXT,,,txtFindCapt
287
		mcall SF_DRAW_TEXT,,,txtFindCapt
280
 
288
 
281
		mov ecx,[sc.work_button_text]
289
		mov ecx,[sc.work_button_text]
282
		or ecx,0x80000000
290
		or ecx,0x80000000
283
		mov ebx,(15 shl 16)+100
291
		mov ebx,(15 shl 16)+118
284
		add ebx,ted_wnd_t
292
		add ebx,ted_wnd_t
285
		mcall ,,,txtFindNext
293
		mcall ,,,txtFindNext
286
 
294
 
287
		stdcall [option_box_draw], opt_grlist1
295
		stdcall [option_box_draw], opt_grlist1
288
	pop edx ecx ebx eax
296
		stdcall [check_box_draw], ch1
289
	ret
297
	pop edx ecx ebx eax
-
 
298
	ret
290
 
299
 
291
align 4
300
align 4
292
p_replace:
301
p_replace:
293
	push eax ebx ecx edx
302
	push eax ebx ecx edx
294
		mov ecx,ted_wnd_t
303
		mov ecx,ted_wnd_t
295
		shl ecx,16
304
		shl ecx,16
296
		mov cx,20
305
		mov cx,20
297
		mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
306
		mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
298
 
307
 
299
		mov ecx,ted_wnd_t
308
		mov ecx,ted_wnd_t
300
		add cx,20+15 ; 15 - height text box
309
		add cx,20+15 ; 15 - height text box
301
		shl ecx,16
310
		shl ecx,16
302
		add ecx,ted_wnd_h
311
		add ecx,ted_wnd_h
303
		mov edx,ted_scr_h
312
		mov edx,ted_scr_h
304
		add cx,word[edx+sb_offs_size_y]
313
		add cx,word[edx+sb_offs_size_y]
305
		sub cx,20+15-1 ; 15 - height text box
314
		sub cx,20+15-1 ; 15 - height text box
306
		mcall ,,,[sc.work]
315
		mcall ,,,[sc.work]
307
 
316
 
308
		stdcall [edit_box_draw], edit_replace
317
		stdcall [edit_box_draw], edit_replace
309
		stdcall [edit_box_draw], edit_find
318
		stdcall [edit_box_draw], edit_find
310
 
319
 
311
		mov ecx,ted_wnd_t
320
		mov ecx,ted_wnd_t
312
		shl ecx,16
321
		shl ecx,16
313
		add ecx,(133 shl 16)+20
322
		add ecx,(133 shl 16)+20
314
		mcall SF_DEFINE_BUTTON,(5 shl 16)+95,,202,[sc.work_button] ;replace next
323
		mcall SF_DEFINE_BUTTON,(5 shl 16)+95,,202,[sc.work_button] ;replace next
315
 
324
 
316
		add ecx,(26 shl 16)
325
		add ecx,(26 shl 16)
317
		mcall ,,,203 ;replace all
326
		mcall ,,,203 ;replace all
318
 
327
 
319
		mov ebx,ted_wnd_t
328
		mov ebx,ted_wnd_t
320
		add ebx,(23 shl 16)+7
329
		add ebx,(23 shl 16)+7
321
		mov ecx,[sc.work_text]
330
		mov ecx,[sc.work_text]
322
		or ecx,0x80000000
331
		or ecx,0x80000000
323
		mcall SF_DRAW_TEXT,,,txtFindCapt
332
		mcall SF_DRAW_TEXT,,,txtFindCapt
324
		add ebx,93
333
		add ebx,93
325
		mcall SF_DRAW_TEXT,,,txtRerlaceCapt
334
		mcall SF_DRAW_TEXT,,,txtRerlaceCapt
326
 
335
 
327
		mov ecx,[sc.work_button_text]
336
		mov ecx,[sc.work_button_text]
328
		or ecx,0x80000000
337
		or ecx,0x80000000
329
		mov ebx,ted_wnd_t
338
		mov ebx,ted_wnd_t
330
		add ebx,(15 shl 16)+140
339
		add ebx,(15 shl 16)+140
331
		mcall ,,,txtRerlace
340
		mcall ,,,txtRerlace
332
		add ebx,26
341
		add ebx,26
333
		mcall ,,,txtRerlaceAll
342
		mcall ,,,txtRerlaceAll
334
 
343
 
335
		stdcall [option_box_draw], opt_grlist1
344
		stdcall [option_box_draw], opt_grlist1
336
	pop edx ecx ebx eax
345
	pop edx ecx ebx eax
337
	ret
346
	ret
338
 
347
 
339
align 4
348
align 4
340
p_goto:
349
p_goto:
341
	push eax ebx ecx edx
350
	push eax ebx ecx edx
342
		mov ecx,ted_wnd_t
351
		mov ecx,ted_wnd_t
343
		shl ecx,16
352
		shl ecx,16
344
		mov cx,20
353
		mov cx,20
345
		mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
354
		mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
346
 
355
 
347
		mov ecx,ted_wnd_t
356
		mov ecx,ted_wnd_t
348
		add cx,20+15 ; 15 - height text box
357
		add cx,20+15 ; 15 - height text box
349
		shl ecx,16
358
		shl ecx,16
350
		add ecx,ted_wnd_h
359
		add ecx,ted_wnd_h
351
		mov edx,ted_scr_h
360
		mov edx,ted_scr_h
352
		add cx,word[edx+sb_offs_size_y]
361
		add cx,word[edx+sb_offs_size_y]
353
		sub cx,20+15-1 ; 15 - height text box
362
		sub cx,20+15-1 ; 15 - height text box
354
		mcall ,,,[sc.work]
363
		mcall ,,,[sc.work]
355
 
364
 
356
		stdcall [edit_box_draw], edit_goto
365
		stdcall [edit_box_draw], edit_goto
357
 
366
 
358
		mov ecx,ted_wnd_t
367
		mov ecx,ted_wnd_t
359
		shl ecx,16
368
		shl ecx,16
360
		add ecx,(40 shl 16)+20
369
		add ecx,(40 shl 16)+20
361
		mcall SF_DEFINE_BUTTON,(5 shl 16)+85,,204,[sc.work_button]
370
		mcall SF_DEFINE_BUTTON,(5 shl 16)+85,,204,[sc.work_button]
362
 
371
 
363
		mov ebx,(23 shl 16)+7
372
		mov ebx,(23 shl 16)+7
364
		add ebx,ted_wnd_t
373
		add ebx,ted_wnd_t
365
		mov ecx,[sc.work_text]
374
		mov ecx,[sc.work_text]
366
		or ecx,0x80000000
375
		or ecx,0x80000000
367
		mcall SF_DRAW_TEXT,,,txtGotoCapt
376
		mcall SF_DRAW_TEXT,,,txtGotoCapt
368
 
377
 
369
		mov ecx,[sc.work_button_text]
378
		mov ecx,[sc.work_button_text]
370
		or ecx,0x80000000
379
		or ecx,0x80000000
371
		mov ebx,(15 shl 16)+47
380
		mov ebx,(15 shl 16)+47
372
		add ebx,ted_wnd_t
381
		add ebx,ted_wnd_t
373
		mcall ,,,txtGoto
382
		mcall ,,,txtGoto
374
	pop edx ecx ebx eax
383
	pop edx ecx ebx eax
375
	ret
384
	ret
376
 
385
 
377
;input:
386
;input:
378
; edi = pointer to tedit struct
387
; edi = pointer to tedit struct
379
align 4
388
align 4
380
p_syntax:
389
p_syntax:
381
	pushad
390
	pushad
382
 
391
 
383
	mov ecx,ted_wnd_t
392
	mov ecx,ted_wnd_t
384
	shl ecx,16
393
	shl ecx,16
385
	mov cx,20
394
	mov cx,20
386
	mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work] ;ðèñîâàíèå âåðõíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
395
	mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work] ;ðèñîâàíèå âåðõíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
387
 
396
 
388
	stdcall [tl_draw], tree1
397
	stdcall [tl_draw], tree1
389
	mov [ws_dir_lbox.all_redraw],1 ;äëÿ ïîëíîé ïåðåðèñîâêè äî÷åðíåãî ñêðîëëèíãà
398
	mov [ws_dir_lbox.all_redraw],1 ;äëÿ ïîëíîé ïåðåðèñîâêè äî÷åðíåãî ñêðîëëèíãà
390
	stdcall [scrollbar_ver_draw], ws_dir_lbox
399
	stdcall [scrollbar_ver_draw], ws_dir_lbox
391
 
400
 
392
	ror ecx,16
401
	ror ecx,16
393
	add ecx,[tree1.box_height]
402
	add ecx,[tree1.box_height]
394
	add ecx,20
403
	add ecx,20
395
	and ecx,0xffff
404
	and ecx,0xffff
396
	ror ecx,16
405
	ror ecx,16
397
	add ecx,ted_wnd_h
406
	add ecx,ted_wnd_h
398
	mov esi,ted_scr_h
407
	mov esi,ted_scr_h
399
	add cx,word[esi+sb_offs_size_y]
408
	add cx,word[esi+sb_offs_size_y]
400
	sub cx,20
409
	sub cx,20
401
	sub ecx,[tree1.box_height]
410
	sub ecx,[tree1.box_height]
402
	inc cx
411
	inc cx
403
	int 0x40 ;ðèñîâàíèå íèæíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
412
	int 0x40 ;ðèñîâàíèå íèæíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
404
 
413
 
405
	mov ecx,ted_wnd_t
414
	mov ecx,ted_wnd_t
406
	add ecx,25
415
	add ecx,25
407
	add ecx,[tree1.box_height]
416
	add ecx,[tree1.box_height]
408
	shl ecx,16
417
	shl ecx,16
409
	mov cx,20
418
	mov cx,20
410
	mcall SF_DEFINE_BUTTON,(5 shl 16)+65,,200,[sc.work_button] ;200 - button id
419
	mcall SF_DEFINE_BUTTON,(5 shl 16)+65,,200,[sc.work_button] ;200 - button id
411
 
420
 
412
	mov ebx,(30 shl 16)+5
421
	mov ebx,(30 shl 16)+5
413
	add ebx,ted_wnd_t
422
	add ebx,ted_wnd_t
414
	mov ecx,[sc.work_text]
423
	mov ecx,[sc.work_text]
415
	or ecx,0x80000000
424
	or ecx,0x80000000
416
	mcall SF_DRAW_TEXT,,,txtFormatCapt
425
	mcall SF_DRAW_TEXT,,,txtFormatCapt
417
 
426
 
418
	mov ebx,(10 shl 16)+31
427
	mov ebx,(10 shl 16)+31
419
	add ebx,[tree1.box_height]
428
	add ebx,[tree1.box_height]
420
	add ebx,ted_wnd_t
429
	add ebx,ted_wnd_t
421
	mov ecx,[sc.work_button_text]
430
	mov ecx,[sc.work_button_text]
422
	or ecx,0x80000000
431
	or ecx,0x80000000
423
	mcall ,,,txtFormatApply
432
	mcall ,,,txtFormatApply
424
 
433
 
425
	popad
434
	popad
426
	ret
435
	ret
427
 
436
 
428
MIN_M_WND_H equ 100 ;ìèíèìàëüíàÿ âûñîòà ãëàâíîãî îêíà
437
MIN_M_WND_H equ 100 ;ìèíèìàëüíàÿ âûñîòà ãëàâíîãî îêíà
429
;input:
438
;input:
430
; edi = pointer to tedit struct
439
; edi = pointer to tedit struct
431
align 4
440
align 4
432
EvSize:
441
EvSize:
433
	pushad
442
	pushad
434
	mov ebx,ted_scr_h
443
	mov ebx,ted_scr_h
435
	mov esi,ted_scr_w
444
	mov esi,ted_scr_w
436
 
445
 
437
	m2m ted_wnd_w,[procinfo.client_box.width] ;ñòàâèì øèðèíó îêíà ðåäàêòîðà ðàâíîé øèðèíå âñåãî îêíà
446
	m2m ted_wnd_w,[procinfo.client_box.width] ;ñòàâèì øèðèíó îêíà ðåäàêòîðà ðàâíîé øèðèíå âñåãî îêíà
438
	mov eax,ted_wnd_l
447
	mov eax,ted_wnd_l
439
	sub ted_wnd_w,eax ;îòíèìàåì îòñòóï ñëåâà
448
	sub ted_wnd_w,eax ;îòíèìàåì îòñòóï ñëåâà
440
	movzx eax,word[esi+sb_offs_size_x]
449
	movzx eax,word[esi+sb_offs_size_x]
441
	sub ted_wnd_w,eax ;îòíèìàåì øèðèíó âåðò. ñêðîëëèíãà
450
	sub ted_wnd_w,eax ;îòíèìàåì øèðèíó âåðò. ñêðîëëèíãà
442
 
451
 
443
	m2m ted_wnd_h,[procinfo.client_box.height] ;ñòàâèì âûñîòó îêíà ðåäàêòîðà ðàâíîé âûñîòå âñåãî îêíà
452
	m2m ted_wnd_h,[procinfo.client_box.height] ;ñòàâèì âûñîòó îêíà ðåäàêòîðà ðàâíîé âûñîòå âñåãî îêíà
444
	cmp ted_wnd_h,MIN_M_WND_H
453
	cmp ted_wnd_h,MIN_M_WND_H
445
	jg @f
454
	jg @f
446
		mov ted_wnd_h,MIN_M_WND_H
455
		mov ted_wnd_h,MIN_M_WND_H
447
	@@:
456
	@@:
448
 
457
 
449
	movzx eax,word[ebx+sb_offs_size_y]
458
	movzx eax,word[ebx+sb_offs_size_y]
450
	sub ted_wnd_h,eax	      ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà
459
	sub ted_wnd_h,eax	      ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà
451
	mov eax,ted_wnd_t
460
	mov eax,ted_wnd_t
452
	sub ted_wnd_h,eax	      ;îòíèìàåì îòñòóï ñâåðõó
461
	sub ted_wnd_h,eax	      ;îòíèìàåì îòñòóï ñâåðõó
453
 
462
 
454
	stdcall [ted_init_scroll_bars], tedit0,2
463
	stdcall [ted_init_scroll_bars], tedit0,2
455
 
464
 
456
	mov eax,ted_wnd_t
465
	mov eax,ted_wnd_t
457
	mov edi,tree1
466
	mov edi,tree1
458
	mov tl_box_top,eax ;=ted_wnd_t
467
	mov tl_box_top,eax ;=ted_wnd_t
459
	add tl_box_top,20
468
	add tl_box_top,20
460
 
469
 
461
	mov [edit_find.top],eax ;=ted_wnd_t
470
	mov [edit_find.top],eax ;=ted_wnd_t
462
	add dword[edit_find.top],20
471
	add dword[edit_find.top],20
463
	mov [edit_replace.top],eax
472
	mov [edit_replace.top],eax
464
	add dword[edit_replace.top],113
473
	add dword[edit_replace.top],113
465
	mov [edit_goto.top],eax
474
	mov [edit_goto.top],eax
466
	add dword[edit_goto.top],20
475
	add dword[edit_goto.top],20
467
	popad
476
	popad
468
	ret
477
	ret
469
 
478
 
470
;input:
479
;input:
471
;  ecx = 0x4000____
480
;  ecx = 0x4000____
472
;   cx = ID button
481
;   cx = ID button
473
;  edx = x*2^16+y
482
;  edx = x*2^16+y
474
align 4
483
align 4
475
draw_but_icon:
484
draw_but_icon:
476
	push eax ebx
485
	push eax ebx
477
 
486
 
478
	mov eax,SF_DEFINE_BUTTON
487
	mov eax,SF_DEFINE_BUTTON
479
	push ecx edx esi
488
	push ecx edx esi
480
		mov ebx,edx
489
		mov ebx,edx
481
		mov edx,ecx
490
		mov edx,ecx
482
		mov cx,bx
491
		mov cx,bx
483
		shl ecx,16
492
		shl ecx,16
484
		mov cx,19 ;=20-1
493
		mov cx,19 ;=20-1
485
		mov bx,19 ;=20-1
494
		mov bx,19 ;=20-1
486
		mov esi,ebx
495
		mov esi,ebx
487
		shr esi,16
496
		shr esi,16
488
		add esi,20
497
		add esi,20
489
		cmp esi,[procinfo.client_box.width]
498
		cmp esi,[procinfo.client_box.width]
490
		jge @f ;êíîïêà íå âëåçëà â îêíî
499
		jge @f ;êíîïêà íå âëåçëà â îêíî
491
			mov esi,[sc.work_button]
500
			mov esi,[sc.work_button]
492
			int 0x40 ;ñòàâèì êíîïêó
501
			int 0x40 ;ñòàâèì êíîïêó
493
			mov eax,SF_PUT_IMAGE
502
			mov eax,SF_PUT_IMAGE
494
		@@:
503
		@@:
495
	pop esi edx ecx
504
	pop esi edx ecx
496
 
505
 
497
	cmp eax,SF_PUT_IMAGE
506
	cmp eax,SF_PUT_IMAGE
498
	jne @f ;êíîïêà íå âëåçëà â îêíî
507
	jne @f ;êíîïêà íå âëåçëà â îêíî
499
		mov ebx,[bmp_icon]
508
		mov ebx,[bmp_icon]
500
		bt ecx,30 ;if (ecx & 0x40000000)
509
		bt ecx,30 ;if (ecx & 0x40000000)
501
		jc .gray
510
		jc .gray
502
			add ebx,TOOLBAR_ICONS_SIZE ;ïåðåìåùàåìñÿ íà ñåðûå êíîïêè
511
			add ebx,TOOLBAR_ICONS_SIZE ;ïåðåìåùàåìñÿ íà ñåðûå êíîïêè
503
		.gray:
512
		.gray:
504
		push ecx
513
		push ecx
505
		sub ecx,ID_BUT_0
514
		sub ecx,ID_BUT_0
506
		and ecx,0xffff
515
		and ecx,0xffff
507
		imul ecx,1200
516
		imul ecx,1200
508
		add ebx,ecx
517
		add ebx,ecx
509
		mov ecx,(20 shl 16)+20
518
		mov ecx,(20 shl 16)+20
510
		int 0x40 ;ñòàâèì ðèñóíîê íà êíîïêó
519
		int 0x40 ;ñòàâèì ðèñóíîê íà êíîïêó
511
		pop ecx
520
		pop ecx
512
	@@:
521
	@@:
513
	pop ebx eax
522
	pop ebx eax
514
	ret
523
	ret
515
 
524
 
516
;descrition:
525
;descrition:
517
; ôóíêöèÿ äëÿ ãåíåðèðîâàíèÿ ñåðûõ èêîíîê
526
; ôóíêöèÿ äëÿ ãåíåðèðîâàíèÿ ñåðûõ èêîíîê
518
;input:
527
;input:
519
; buf_rgb - áóôåð ñ âõîäíûì 24 áèòíûì öâåòíûì èçîáðàæåíèåì
528
; buf_rgb - áóôåð ñ âõîäíûì 24 áèòíûì öâåòíûì èçîáðàæåíèåì
520
; buf_g24 - áóôåð ñ âûõîäíûì 24 áèòíûì ñåðûì èçîáðàæåíèåì
529
; buf_g24 - áóôåð ñ âûõîäíûì 24 áèòíûì ñåðûì èçîáðàæåíèåì
521
; pixels - ÷èñëî ïèêñåëåé â èçîáðàæåíèè
530
; pixels - ÷èñëî ïèêñåëåé â èçîáðàæåíèè
522
align 4
531
align 4
523
proc img_to_gray, buf_rgb:dword, buf_g24:dword, pixels:dword
532
proc img_to_gray, buf_rgb:dword, buf_g24:dword, pixels:dword
524
pushad
533
pushad
525
	mov esi,[buf_rgb]
534
	mov esi,[buf_rgb]
526
	mov edi,[buf_g24]
535
	mov edi,[buf_g24]
527
	mov ecx,[pixels]
536
	mov ecx,[pixels]
528
	mov ebx,3
537
	mov ebx,3
529
	@@:
538
	@@:
530
		movzx eax,byte[esi]
539
		movzx eax,byte[esi]
531
		movzx edx,byte[esi+1]
540
		movzx edx,byte[esi+1]
532
		add eax,edx
541
		add eax,edx
533
		movzx edx,byte[esi+2]
542
		movzx edx,byte[esi+2]
534
		add eax,edx
543
		add eax,edx
535
		xor edx,edx
544
		xor edx,edx
536
		div ebx ;shr eax,2
545
		div ebx ;shr eax,2
537
		mov ah,al
546
		mov ah,al
538
		mov word[edi],ax
547
		mov word[edi],ax
539
		mov byte[edi+2],al
548
		mov byte[edi+2],al
540
		add esi,3
549
		add esi,3
541
		add edi,3
550
		add edi,3
542
		loop @b
551
		loop @b
543
popad
552
popad
544
	ret
553
	ret
545
endp
554
endp