1) 'box_lib.obj' update 'text_edititor'

2) modify code 't_edit' and 'planet_v'

git-svn-id: svn://kolibrios.org@1464 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA committed 2010-05-17 16:49:58 +00:00
1 parent 298c1a755b
commit b062f4354f
11 files changed
+396 -288

No files matched your search

@@ -20,6 +20,49 @@ include '../../../../proc32.inc'
include 'bl_sys.mac'
include 'box_lib.mac' ;macro which should make life easier :)
;-----------------------------------------------------------------------------
;ЇєэъЎш  фы  т√фхыхэш  ярь Єш
;input:
; ecx = size data
;otput:
; eax = pointer to memory
align 4
mem_Alloc:
push ebx
mov eax,68
mov ebx,12
int 0x40
pop ebx
ret
;ЇєэъЎш  фы  юётюсюцфхэш  ярь Єш
;input:
; ecx = pointer to memory
align 4
proc mem_Free, mptr:dword
push eax ebx ecx
mov ecx,[mptr]
cmp ecx,0
jz @f
mov eax,68
mov ebx,13
int 0x40
@@:
pop ecx ebx eax
ret
endp
;ЇєэъЎш  фы  яхЁхЁрёяЁхфхыхэш  ярь Єш
;otput:
; eax = pointer to memory
align 4
proc mem_ReAlloc, mptr:dword, size:dword
push ebx ecx edx
mov edx, [mptr]
mov ecx, [size]
mcall 68, 20
pop edx ecx ebx
ret
endp
;----------------------------------------------------
;EditBox
;----------------------------------------------------
@@ -196,7 +239,7 @@ dd sz_ted_but_redo, ted_but_redo
dd sz_ted_but_reverse, ted_but_reverse
dd sz_ted_but_find_next, ted_but_find_next
dd sz_ted_text_colored, ted_text_colored
dd sz_ted_version, 0x00000001
dd sz_ted_version, 0x00000002
dd 0,0
@@ -320,6 +320,8 @@ ted_fun_draw_panel_buttons equ dword[edi+226] ;㪠
ted_fun_draw_panel_find equ dword[edi+230] ;указатель на функцию рисования панели поиска
ted_fun_draw_panel_syntax equ dword[edi+234] ;указатель на функцию рисования панели синтаксиса
ted_fun_save_err equ dword[edi+238] ;указатель на функцию вызываемую если сохранение файла закончилось неудачно
ted_increase_size equ dword[edi+242] ;число символов на которые будет увечиваться память при нехватке
ted_ptr_free_symb equ dword[edi+246] ;указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
;------------------------------------------------------------------------------
ted_opt_ed_move_cursor equ 1 ;двигать курсор после добавления текста
ted_opt_ed_change_time equ 2 ;добавлять изменения при редактировании текста
@@ -39,7 +39,7 @@
<p>┬хЁёш  ¤ыхьхэЄр</p>
<h1><a name="struc_scrollbar">╤ЄЁєъЄєЁр scrollbar</a></h1>
<p>╠ръЁюёр фы  ёючфрэш  ёЄЁєъЄєЁ√ фы  ёъЁюыысрЁр эхЄ. ╧юЄюьє фрээ√х фы  эхх чрфр■Єё  тЁєўэє■.
<p>╠ръЁюёр фы  ёючфрэш  ёЄЁєъЄєЁ√ ёъЁюыысрЁр эхЄ. ╧юЄюьє фрээ√х фы  эхх чрфр■Єё  тЁєўэє■.
┼ёЄ№ ьръЁюё use_scroll_bar юэ фрхЄ тючьюцэюёЄ№ яюэ Є№ ъръшх фрээ√х эєцэ√ фы  ёъЁюыышэур.</p>
<pre>macro use_scroll_bar
{
@@ -38,6 +38,7 @@
<li><a href="#fun_text_colored">ted_text_colored</a></li>
</ul>
<p><a href="#syn_file">╘юЁьрЄ Їрщыр яюфётхЄъш *.syn</a></p>
<p><a href="#struc_tedit">╤ЄЁєъЄєЁр tedit</a></p>
<h1><a name="vveden">┬тхфхэшх</a></h1>
<p>▌ыхьхэЄ text_editor яючтюы хЄ ЁрсюЄрЄ№ ё ЄхъёЄют√ьш Їрщырьш, ёюфхЁцшЄ ьэюую ЇєэъЎш  фы  ЁхфръЄшЁютрэш  ЄхъёЄр.</p>
@@ -319,8 +320,70 @@ pop edi</pre>
┬ючьюцэю т сєфє∙шї тхЁёш ї ЇюЁьрЄ Їрщыют яюфётхЄъш сєфхЄ шчьхэхэ.</li>
</ul>
<h1><a name="struc_tedit">╤ЄЁєъЄєЁр tedit</a></h1>
<p>╠ръЁюёр фы  ёючфрэш  ёЄЁєъЄєЁ√ ЄхъёЄютюую ЁхфръЄюЁр эхЄ. ╧юЄюьє фрээ√х фы  эхую чрфр■Єё  тЁєўэє■. ╧ЁшьхЁ ёЄЁєъЄєЁ√ фы  ЄхъёЄютюую ЁхфръЄюЁр:</p>
<pre>align 4
tedit0: ;ёЄЁєъЄєЁр ЄхъёЄютюую ЁхфръЄюЁр
.wnd BOX 195,5+20,325,260 ;+ 0
.rec BOX 30,13,7,10 ;+16
.drag_m db 0 ;+32 т√фхыхэшх юЄ ь√°ш
.drag_k db 0 ;+33 т√фхыхэшх юЄ ъыртшрЄєЁ√
.sel TexSelect 0,0,0,0 ;+34 ёЄЁєъЄєЁр т√фхыхэш 
.seln TexSelect ;+50 фюяюыэшЄхы№эр  ёЄЁєъЄєЁр т√фхыхэш 
.tex dd 0 ;+66 text memory pointer
.tex_1 dd 0 ;+70 text first symbol pointer
.tex_end dd 0 ;+74 text end memory pointer
.cur_x dd 0 ;+78 ъююЁфшэрЄр x ъєЁёюЁр
.cur_y dd 0 ;+82 ъююЁфшэрЄр y ъєЁёюЁр
.max_chars dd 5002 ;+86 ьръёшьры№эюх ўшёыю ёшьтюыют т юфэюь фюъєьхэЄх
.count_colors_text dd 1 ;+90 ъюыышўхёЄтю ЎтхЄют ЄхъёЄр
.count_key_words dd 0 ;+94 ъюыышўхёЄтю ъы■ўхт√ї ёыют
.color_cursor dd 0xff0000 ;+98 ЎтхЄ ъєЁёюЁр
.color_wnd_capt dd 0x0080c0 ;+102 ЎтхЄ яюыхщ тюъЁєу юъэр
.color_wnd_work dd 0x0 ;+106 ЎтхЄ Їюэр юъэр
.color_wnd_bord dd 0xffffff ;+110 ЎтхЄ ЄхъёЄр эр яюы ї
.color_select dd 0x0000ff ;+114 ЎтхЄ т√фхыхэш 
.color_cur_text dd 0xffff00 ;+118 ЎтхЄ ёшьтюыр яюф ъєЁёюЁюь
.color_wnd_text dd 0x80ffff ;+122 ЎтхЄ ЄхъёЄр т юъэх
.syntax_file dd 0 ;+126 єърчрЄхы№ эр эрўрыю Їрщыр ёшэЄръёшёр
.syntax_file_size dd 500 ;+130 ьръёшьры№э√щ ЁрчьхЁ Їрщыр ёшэЄръёшёр
.text_colors dd 0 ;+134 єърчрЄхы№ эр ьрёёшт ЎтхЄют ЄхъёЄр
.help_text_f1 dd 0 ;+138 єърчрЄхы№ эр ЄхъёЄ ёяЁртъш (яю эрцрЄшш F1)
.help_id dd -1 ;+142 шфхэЄшЇшърЄюЁ фы  ёяЁртъш
.key_words_data dd 0 ;+146 єърчрЄхы№ эр ёЄЁєъЄєЁ√ ъы■ўхт√ї ёыют TexColViv
.tim_ch dd ? ;+150 ъюышўхёЄтю шчьхэхэшщ т Їрщых
.tim_undo dd ? ;+154 ъюышўхёЄтю юЄьхэхээ√ї фхщёЄтшщ
.tim_ls dd ? ;+158 тЁхь  яюёыхфэхую ёюїЁрэхэш 
.tim_co dd ? ;+162 тЁхь  яюёыхфэхщ ЎтхЄютющ ЁрчьхЄъш
.el_focus dd el_focus ;+166 єърчрЄхы№ эр яхЁхьхээє■ ¤ыхьхэЄр т Їюъєёх
.err_save db 0 ;+170 ю°шсър ёюїЁрэхэш  Їрщыр
.panel_id db 0 ;+171 эюьхЁ юЄъЁ√Єющ ярэхыш
.key_new db 0 ;+172 ёшьтюы, ъюЄюЁ√щ сєфхЄ фюсрты Єё  ё ъыртшрЄєЁ√
.symbol_new_line db 20 ;+173 ёшьтюы чртхЁ°хэш  ёЄЁюъш
.scr_w dd scrol_w1 ;+174 тхЁЄшъры№э√щ ёъЁюыышэу
.scr_h dd scrol_h1 ;+178 уюЁшчюэЄры№э√щ ёъЁюыышэу
.arr_key_pos dd 0 ;+182 єърчрЄхы№ эр ьрёёшт яючшЎшщ ъы■ўхт√ї ёыют
.buffer dd buf ;+186 єърчрЄхы№ эр сєЇхЁ ъюяшЁютрэш /тёЄртъш
.buffer_find dd 0 ;+190 єърчрЄхы№ эр сєЇхЁ фы  яюшёър
.cur_ins db 1 ;+194 Ёхцшь ЁрсюЄ√ ъєЁёюЁр (юс√ўэ√щ шыш чрьхэр)
.mode_color db 1 ;+195 Ёхцшь т√фхыхэш  ёыют ЎтхЄюь (0-т√ъы. 1-тъы.)
.mode_invis db 0 ;+196 Ёхцшь яюърчр эхяхўрЄрхь√ї ёшьтюыют
.gp_opt db 0 ;+197 юяЎшш тючтЁр∙рхь√х ЇєэъЎшхщ ted_get_pos_by_cursor
.fun_on_key_ctrl_o dd but_ctrl_o ;+198 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ яЁш эрцрЄшш Ctrl+O (юЄъЁ√Єшх Їрщыр)
.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (т√чютр/ёъЁ√Єш  ярэхыш яюшёър)
.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (ёючфрэшх эютюую фюъєьхэЄр)
.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
.buffer_size dd BUF_SIZE ;+214 ЁрчьхЁ сєЇхЁр ъюяшЁютрэш /тёЄртъш
.fun_find_err dd 0 ;+218 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ хёыш яюшёъ чръюэўшыё  эхєфрўэю
.fun_init_synt_err dd 0 ;+222 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ яЁш ю°шсюўэюь юЄъЁ√Єшш Їрщыр ёшэЄръёшёр
.fun_draw_panel_buttons dd 0 ;+226 єърчрЄхы№ эр ЇєэъЎш■ Ёшёютрэш  ярэхыш ё ъэюяърьш
.fun_draw_panel_find dd 0 ;+230 єърчрЄхы№ эр ЇєэъЎш■ Ёшёютрэш  ярэхыш яюшёър
.fun_draw_panel_syntax dd 0 ;+234 єърчрЄхы№ эр ЇєэъЎш■ Ёшёютрэш  ярэхыш ёшэЄръёшёр
.fun_save_err dd 0 ;+238 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ хёыш ёюїЁрэхэшх Їрщыр чръюэўшыюё№ эхєфрўэю
.increase_size dd 225 ;+242 ўшёыю ёшьтюыют эр ъюЄюЁ√х сєфхЄ єтхўштрЄ№ё  ярь Є№ яЁш эхїтрЄъх
.ptr_free_symb dd ? ;+246 єърчрЄхы№ эр ётюсюфэє■ ярь Є№, т ъюЄюЁє■ ьюцэю фюсрты Є№ ёшьтюы (шёяюы№чєхЄё  тэєЄЁш ¤ыхьхэЄр фы  єёъюЁхэш  тёЄртъш ЄхъёЄр)</pre>
<hr>
<p>─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 05.05.10.</p>
<p>─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 17.05.10.</p>
</body>
</html>
@@ -1,6 +1,6 @@
; макрос для системной библиотеки box_lib.obj
; элемент TextEditor для Kolibri OS
; файл последний раз изменялся 05.05.2010 IgorA
; файл последний раз изменялся 17.05.2010 IgorA
; на код применена GPL2 лицензия
;input:
@@ -54,7 +54,7 @@ struct symbol
ends
;------------------------------------------------------------------------------
ted_symbol_tab db 26
ted_symbol_tab db 26 ;ascii код стрелки вправо, используется для рисования табуляции в режиме показа невидимых символов
if lang eq ru
@@ -80,7 +80,7 @@ txtBuf db 'Buffer:',0
end if
;------
;EvChar - таблица для фильтрования добавляемых символов, что-бы не попали лишние знаки
align 4
EvChar db 0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -98,7 +98,7 @@ EvChar db 0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;EvUpper - таблица для преобразования символов к верхнему регистру
EvUpper db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -113,8 +113,9 @@ EvUpper db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159
db 0,240,0,242,0,244,0,246,0,0,0,0,0,0,0,0
;EvLover - таблица для преобразования символов к нижнему регистру
EvLover db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -124,13 +125,13 @@ EvLover db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175
db 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 241,0,243,0,245,0,247,0,0,0,0,0,0,0,0,0
conv_table dd 0
@@ -252,16 +253,12 @@ endp
align 4
proc ted_delete, edit:dword
push ecx edi
mov edi,dword[edit]
mov ecx,ted_tex
call mem_Free
mov ecx,ted_arr_key_pos ;ted_syntax_file
call mem_Free
pop edi ecx
ret
push edi
mov edi,dword[edit]
stdcall mem_Free,ted_tex
stdcall mem_Free,ted_arr_key_pos ;ted_syntax_file
pop edi
ret
endp
@@ -369,19 +366,19 @@ proc ted_key, edit:dword, table:dword, control:dword
call ted_draw_main_cursor
mov ted_drag_k,0 ;заканчиваем выделение от клавиатуры
@@:
cmp ah,80 ;177 ;Down
jne @f
call ted_draw_cursor_sumb
call ted_cur_move_down
cmp dl,8
jne .no_red_1
call ted_scroll_set_redraw
stdcall ted_draw,edi
jmp @f
.no_red_1:
call ted_draw_main_cursor
mov ted_drag_k,0 ;заканчиваем выделение от клавиатуры
@@:
cmp ah,80 ;177 ;Down
jne @f
call ted_draw_cursor_sumb
call ted_cur_move_down
cmp dl,8
jne .no_red_1
call ted_scroll_set_redraw
stdcall ted_draw,edi
jmp @f
.no_red_1:
call ted_draw_main_cursor
mov ted_drag_k,0 ;заканчиваем выделение от клавиатуры
@@:
cmp ah,75 ;176 ;Left
jne @f
call ted_draw_cursor_sumb
@@ -681,48 +678,52 @@ endp
; cl_al_mem = 1 - clear all memory
align 4
proc ted_clear, edit:dword, cl_al_mem:dword
push ecx edi
mov edi,dword[edit]
push ecx edi
mov edi,dword[edit]
mov ted_cur_x,0
mov ted_cur_y,0
mov ted_tim_ch,0
mov ted_tim_ls,0
mov ted_tim_co,0
mov ted_tim_undo,0
mov ted_help_id,-1
mov ted_cur_x,0
mov ted_cur_y,0
mov ted_tim_ch,0
mov ted_tim_ls,0
mov ted_tim_co,0
mov ted_tim_undo,0
mov ted_help_id,-1
mov ecx,sizeof.symbol
shl ecx,1
add ecx,ted_tex
mov ted_ptr_free_symb,ecx
mov ecx,ted_scr_w
mov dword[ecx+sb_offs_position],0
mov dword[ecx+sb_offs_max_area],100 ;число строк видимых в новом документе
mov dword[ecx+sb_offs_redraw],1
mov ecx,ted_scr_h
mov dword[ecx+sb_offs_position],0
mov dword[ecx+sb_offs_max_area],100 ;число символов видимых в новом документе
mov ecx,ted_scr_w
mov dword[ecx+sb_offs_position],0
mov dword[ecx+sb_offs_max_area],100 ;число строк видимых в новом документе
mov dword[ecx+sb_offs_redraw],1
mov ecx,ted_scr_h
mov dword[ecx+sb_offs_position],0
mov dword[ecx+sb_offs_max_area],100 ;число символов видимых в новом документе
mov ted_sel_x0,0
mov ted_sel_y0,0
mov ted_sel_x1,0
mov ted_sel_y1,0
mov ted_sel_x0,0
mov ted_sel_y0,0
mov ted_sel_x1,0
mov ted_sel_y1,0
cmp dword[cl_al_mem],0
je .exit
cmp dword[cl_al_mem],0
je .exit
push edx
mov ecx,sizeof.symbol
imul ecx,ted_max_chars
mov edx,ted_tex
@@:
mov byte [edx],0
inc edx
loop @b
mov edx,ted_tex
mov dword [edx+6],1
pop edx
push edx
mov ecx,sizeof.symbol
imul ecx,ted_max_chars
mov edx,ted_tex
@@:
mov byte [edx],0
inc edx
loop @b
mov edx,ted_tex
mov dword [edx+6],1
pop edx
.exit:
pop edi ecx
ret
.exit:
pop edi ecx
ret
endp
@@ -1108,81 +1109,114 @@ proc ted_text_add, edit:dword, text:dword, t_len:dword, add_opt:dword
pop eax
@@:
mov edx,sizeof.symbol
shl edx,1
add edx,ted_tex
@@: ;for(i=2;i<texMax;i++)
cmp dword [edx+10],0 ;if(!tex[i].tc && !tex[i].td)
jne .u1f
cmp dword [edx+14],0
jne .u1f
test dword[add_opt],ted_opt_ed_change_time ;if(n_tim) ted_tim_ch++;
jz .no_tim
inc ted_tim_ch
.no_tim:
test dword[add_opt],ted_opt_ed_move_cursor
jz .no_cur_mov
cmp dword[new_lin],0 ;если есть добавочные строки, то курсор еще не двигаем
jg .no_cur_mov
cmp dword[new_spc],0 ;если нет добавочных пробелов, то курсор тоже не двигаем
jg .no_cur_mov
inc ted_cur_x ;move cursor
;call ted_go_to_pos
cmp byte [esi],13
jne .no_cur_mov
mov ted_cur_x,0
inc ted_cur_y
.no_cur_mov:
mov edx,ted_ptr_free_symb
.beg_cycle: ;for(i=...;i<ted_max_chars;i++)
cmp dword [edx+10],0 ;if(!tex[i].tc && !tex[i].td)
jne .u1f
cmp dword [edx+14],0
jne .u1f
test dword[add_opt],ted_opt_ed_change_time ;if(n_tim) ted_tim_ch++;
jz .no_tim
inc ted_tim_ch
.no_tim:
test dword[add_opt],ted_opt_ed_move_cursor
jz .no_cur_mov
cmp dword[new_lin],0 ;если есть добавочные строки, то курсор еще не двигаем
jg .no_cur_mov
cmp dword[new_spc],0 ;если нет добавочных пробелов, то курсор тоже не двигаем
jg .no_cur_mov
inc ted_cur_x ;move cursor
;call ted_go_to_pos
cmp byte [esi],13
jne .no_cur_mov
mov ted_cur_x,0
inc ted_cur_y
.no_cur_mov:
mov ecx,ted_opt_ed_change_time
not ecx
and dword[add_opt],ecx ;n_tim=false;
mov ecx,ted_opt_ed_change_time
not ecx
and dword[add_opt],ecx ;n_tim=false;
mov cl,byte [esi] ;tex[i].c=ta[ns];
mov byte [edx],cl
m2m dword [edx+10],ted_tim_ch ;tex[i].tc=ted_tim_ch;
mov [edx+2],eax ;tex[i].perv=po_t;
mov cl,byte [esi] ;tex[i].c=ta[ns];
mov byte [edx],cl
m2m dword [edx+10],ted_tim_ch ;tex[i].tc=ted_tim_ch;
mov [edx+2],eax ;tex[i].perv=po_t;
mov ecx,eax
imul ecx,sizeof.symbol
add ecx,ted_tex ; *** ecx = tex[po_t] ***
add ecx,6 ; *** ecx = tex[po_t].next ***
m2m dword [edx+6],dword [ecx] ;tex[i].next=tex[po_t].next;
mov ecx,eax
imul ecx,sizeof.symbol
add ecx,ted_tex ; *** ecx = tex[po_t] ***
add ecx,6 ; *** ecx = tex[po_t].next ***
m2m dword [edx+6],dword [ecx] ;tex[i].next=tex[po_t].next;
call ted_get_text_arr_index ;*** eax = i ***
cmp eax,ted_max_chars
jge @f
mov [ecx],eax ;tex[po_t].next=i; // ссылки перенаправляем
mov ecx,[edx+6] ; *** ecx = tex[i].next ***
imul ecx,sizeof.symbol
add ecx,ted_tex ; *** ecx = tex[tex[i].next] ***
mov [ecx+2],eax ;tex[tex[i].next].perv=i;
call ted_get_text_arr_index ;*** eax = i ***
mov [ecx],eax ;tex[po_t].next=i; // ссылки перенаправляем
mov ecx,[edx+6] ; *** ecx = tex[i].next ***
imul ecx,sizeof.symbol
add ecx,ted_tex ; *** ecx = tex[tex[i].next] ***
mov [ecx+2],eax ;tex[tex[i].next].perv=i;
cmp dword[new_lin],0 ;add lines or text
jle .spc_add
dec dword[new_lin]
mov byte [edx],13
jmp .u1f
.spc_add:
cmp dword[new_spc],0 ;add spaces or text
jle .tex_add
dec dword[new_spc]
mov byte [edx],' '
jmp .u1f
.tex_add:
inc esi
dec ebx
.u1f:
add edx,sizeof.symbol
cmp edx,ted_tex_end
jge @f ;out of memory
cmp ebx,0
jne @b
@@:
cmp dword[new_lin],0 ;add lines or text
jle .spc_add
dec dword[new_lin]
mov byte [edx],13
jmp .u1f
.spc_add:
cmp dword[new_spc],0 ;add spaces or text
jle .tex_add
dec dword[new_spc]
mov byte [edx],' '
jmp .u1f
.tex_add:
inc esi
dec ebx
.u1f:
add edx,sizeof.symbol
cmp edx,ted_tex_end
jge @f ;out of memory
cmp ebx,0
jne .beg_cycle
mov ted_ptr_free_symb,edx ;меняем указатель на свободный символ, для более быстрого поиска памяти
jmp .add_all
@@:
cmp ted_increase_size,0
je .add_all
call ted_memory_increase
cmp ebx,0
jne .beg_cycle
.add_all: ;все символы добавлены
call ted_text_colored
popad
ret
call ted_text_colored
popad
ret
endp
;input:
; edx = pointer to sumbol, when insert
; edi = pointer to tedit struct
;output:
; edx = new pointer to sumbol, when insert
align 4
proc ted_memory_increase
cmp ted_increase_size,0
je @f
push eax ebx ecx
mov ecx,ted_increase_size
add ecx,ted_max_chars
mov ted_max_chars,ecx
imul ecx,sizeof.symbol
stdcall mem_ReAlloc, ted_tex,ecx
mov ebx,ted_tex
mov ted_tex,eax
mov ted_tex_1,eax
add ted_tex_1,sizeof.symbol
sub edx,ebx
add edx,eax
mov ted_ptr_free_symb,edx
add eax,ecx
mov ted_tex_end,eax
pop ecx ebx eax
@@:
ret
endp
;input:
@@ -1269,8 +1303,7 @@ proc ted_convert_sel_text
inc ted_tim_ch
mov edx,eax ;i=p0;
mov ecx,2
ConvertIndexToPointer ecx
mov ecx,ted_ptr_free_symb
@@:
mov esi,[edx]
and esi,0xff
@@ -1926,6 +1959,9 @@ proc ted_set_undo
add ebx,ted_tex;.perv
m2m dword [ebx+2],dword [edx+2] ;tex[tex[i].next].perv=tex[i].perv;
cmp ted_ptr_free_symb,edx
jle .no_u1
mov ted_ptr_free_symb,edx ;меняем указатель на свободный символ, для более быстрого поиска памяти
.no_u1:
;else if(tex[i].td>ted_tim_ch) tex[i].td=0; // если удаление символа было отменено
@@ -3362,14 +3398,14 @@ endp
; ah = symbol
align 4
proc KeyConvertToASCII, table:dword
push ebx
mov ebx,dword[table] ;convert scan to ascii
ror ax,8
xor ah,ah
add bx,ax
mov ah,byte[ebx]
pop ebx
ret
push ebx
mov ebx,dword[table] ;convert scan to ascii
ror ax,8
xor ah,ah
add bx,ax ;? ebx,eax
mov ah,byte[ebx]
pop ebx
ret
endp
align 4
@@ -3963,7 +3999,7 @@ call ted_fun_save_err
@@:
pop ecx ;записываем указатель на выделенную память
call mem_Free
stdcall mem_Free,ecx
.no_save:
popad
ret
@@ -1,6 +1,6 @@
; ьръЁюё фы  ёшёЄхьэющ сшсышюЄхъш box_lib.obj
; ¤ыхьхэЄ TreeList фы  Kolibri OS
; Їрщы яюёыхфэшщ Ёрч шчьхэ ыё  29.04.2010 IgorA
; Їрщы яюёыхфэшщ Ёрч шчьхэ ыё  15.05.2010 IgorA
; эр ъюф яЁшьхэхэр GPL2 ышЎхэчш 
@@ -17,36 +17,6 @@ sizeof.TreeList equ 20
macro use_tree_list
{
;-----------------------------------------------------------------------------
;ЇєэъЎш  фы  т√фхыхэш  ярь Єш
;input:
; ecx = size data
;otput:
; eax = pointer to memory
align 4
mem_Alloc:
push ebx
mov eax,68
mov ebx,12
int 0x40
pop ebx
ret
;-----------------------------------------------------------------------------
;ЇєэъЎш  фы  юётюсюцфхэш  ярь Єш
;input:
; ecx = pointer to memory
align 4
mem_Free:
push eax ebx
cmp ecx,0
jz @f
mov eax,68
mov ebx,13
int 0x40
@@:
pop ebx eax
ret
align 4
tl_data_init: ;т√фхыэшх ярь Єш фы  ёЄЁєъЄєЁ ёяшёър ш юёэютэющ шэЇюЁьрЎшш (ъюэёЄЁєъЄюЁ)
push ebp
@@ -95,29 +65,23 @@ tl_data_init: ;
ret 4
align 4
tl_data_clear: ;юўшёЄър ярь Єш ¤ыхьхэЄр (фхёЄЁєъЄюЁ)
push ebp
mov ebp,esp
push ecx edi
mov edi,dword[ebp+8]
cmp tl_data_img,0
je @f
mov ecx,tl_data_img
call mem_Free ;ўшёЄър ёшёЄхьэ√ї шъюэюъ
@@:
cmp tl_data_img_sys,0
je @f
mov ecx,tl_data_img_sys
call mem_Free ;ўшёЄър ёшёЄхьэ√ї шъюэюъ
@@:
mov ecx,dword[edi]
call mem_Free
proc tl_data_clear, tlist:dword ;юўшёЄър ярь Єш ¤ыхьхэЄр (фхёЄЁєъЄюЁ)
push edi
mov edi,dword[tlist]
cmp tl_data_img,0
je @f
stdcall mem_Free,tl_data_img ;ўшёЄър ёшёЄхьэ√ї шъюэюъ
@@:
cmp tl_data_img_sys,0
je @f
stdcall mem_Free,tl_data_img_sys ;ўшёЄър ёшёЄхьэ√ї шъюэюъ
@@:
stdcall mem_Free,dword[edi]
mov ecx,tl_data_nodes
call mem_Free
pop edi ecx
pop ebp
ret 4
stdcall mem_Free,tl_data_nodes
pop edi
ret
endp
align 4
tl_info_clear: ;юўшёЄър ёяшёър (шэЇюЁьрЎшш)
+18 -18
View File
@@ -29,14 +29,14 @@ include 'pl_import.inc'
@use_library
struct f70
func_n dd ?
param1 dd ?
param2 dd ?
param3 dd ?
param4 dd ?
rezerv db ?
name dd ?
struct FileInfoBlock
Function dd ?
Position dd ?
Flags dd ?
Count dd ?
Buffer dd ?
db ?
FileName dd ?
ends
fn_metki db 'pl_metki.lst',0
@@ -126,13 +126,13 @@ start:
copy_path fn_icon1,sys_path,file_name,0x0
mov eax,70 ;load icon file
mov [run_file_70.func_n], 0
mov [run_file_70.param1], 0
mov [run_file_70.param2], 0
mov [run_file_70.param3], TREE_ICON_SYS16_BMP_SIZE
m2m [run_file_70.param4], [tree_sys_icon]
mov [run_file_70.rezerv], 0
mov [run_file_70.name], file_name
mov [run_file_70.Function], 0
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], TREE_ICON_SYS16_BMP_SIZE
m2m [run_file_70.Buffer], [tree_sys_icon]
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
int 0x40
cmp ebx,0xffffffff
@@ -149,8 +149,8 @@ start:
copy_path fn_icon2,sys_path,file_name,0x0
mov eax,70 ;load icon file
mov [run_file_70.param3], TREE_ICON_NOD16_BMP_SIZE
m2m [run_file_70.param4], [tree_nod_icon]
mov [run_file_70.Count], TREE_ICON_NOD16_BMP_SIZE
m2m [run_file_70.Buffer], [tree_nod_icon]
mov ebx,run_file_70
int 0x40
cmp ebx,0xffffffff
@@ -912,7 +912,7 @@ tree_nod_icon dd 0
bmp_icon dd 0 ;память для загрузки изображения
data_icon dd 0 ;память для преобразования картинки функциями libimg
run_file_70 f70
run_file_70 FileInfoBlock
txt_tile_path db 'tile path',0
+34 -34
View File
@@ -48,19 +48,19 @@ tile_delta_y equ byte[edi+31] ;ᤢ
; *** порядок вызова функций при загрузке тайлов ***
;load_tile
; get_tile_path
; load_new_tile (текущая картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_parent_tiles (циклический просмотр родительских тайлов)
; get_tile_path
; load_new_tile (верхняя картинка)
; get_tile_path
; load_new_tile (текущая картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_tile_path
; load_new_tile (нижняя картинка)
; get_parent_tiles (циклический просмотр родительских тайлов)
; get_tile_path
; load_new_tile (верхняя картинка)
;???
@@ -479,13 +479,13 @@ but_MetSave: ;
inc ecx ;для записи в файл завершающего нуля
mov eax,70
m2m [run_file_70.param4], [bmp_icon]
mov [run_file_70.func_n], 2
mov [run_file_70.param1], 0
mov [run_file_70.param2], 0
mov [run_file_70.param3], ecx
mov [run_file_70.rezerv], 0
mov [run_file_70.name], file_name
m2m [run_file_70.Buffer], [bmp_icon]
mov [run_file_70.Function], 2
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], ecx
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
int 0x40
pop edi ecx ebx eax
@@ -500,13 +500,13 @@ but_MetLoad: ;
mov byte[met_fr_opn],1
copy_path fn_metki,sys_path,file_name,0x0
mov eax,70 ;load icon file
mov [run_file_70.func_n], 0
mov [run_file_70.param1], 0
mov [run_file_70.param2], 0
mov [run_file_70.param3], TREE_ICON_SYS16_BMP_SIZE
mov [run_file_70.rezerv], 0
mov [run_file_70.name], file_name
m2m [run_file_70.param4], [bmp_icon]
mov [run_file_70.Function], 0
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], TREE_ICON_SYS16_BMP_SIZE
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
m2m [run_file_70.Buffer], [bmp_icon]
mov eax,70
mov ebx,run_file_70
int 0x40
@@ -801,13 +801,13 @@ proc load_new_tile, tile:dword
pushad
mov eax,70 ;load icon file
mov [run_file_70.func_n], 0
mov [run_file_70.param1], 0
mov [run_file_70.param2], 0
mov [run_file_70.param3], RGB_TILE_SIZE+300 ;+54
m2m [run_file_70.param4], [bmp_icon]
mov [run_file_70.rezerv], 0
mov [run_file_70.name], file_name
mov [run_file_70.Function], 0
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], RGB_TILE_SIZE+300 ;+54
m2m [run_file_70.Buffer], [bmp_icon]
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
int 0x40
mov edi,[tile]
+10 -10
View File
@@ -1,11 +1,11 @@
struct f70
func_n dd ?
param1 dd ?
param2 dd ?
param3 dd ?
param4 dd ?
rezerv db ?
name dd ?
struct FileInfoBlock
Function dd ?
Position dd ?
Flags dd ?
Count dd ?
Buffer dd ?
db ?
FileName dd ?
ends
struct TexColViv
@@ -26,12 +26,12 @@ struct symbol
ends
hed db 'TextEditor 03.05.10',0 ;подпись окна
hed db 'TextEditor 17.05.10',0 ;подпись окна
sc system_colors
fn_icon db 'te_icon.bmp',0
bmp_icon dd 0
run_file_70 f70
run_file_70 FileInfoBlock
;input:
+2 -2
View File
@@ -357,7 +357,6 @@ tedit0: ;
.cur_x dd 0 ;+78 координата x курсора
.cur_y dd 0 ;+82 координата y курсора
.max_chars dd maxChars ;+86 максимальное число символов в одном документе
; \/ не разрывать следующие переменные:
.count_colors_text dd 1 ;+90 колличество цветов текста
.count_key_words dd 0 ;+94 колличество ключевых слов
.color_cursor dd 0x808080 ;+98 цвет курсора
@@ -367,7 +366,6 @@ tedit0: ;
.color_select dd 0x208080 ;+114 цвет выделения
.color_cur_text dd 0xff0000 ;+118 цвет символа под курсором
.color_wnd_text dd 0xffff00 ;+122 цвет текста в окне
; /\ другие, идущие ниже можно разрывать.
.syntax_file dd 0 ;+126 указатель на начало файла синтаксиса
.syntax_file_size dd maxSyntaxFileSize ;+130 максимальный размер файла синтаксиса
.text_colors dd 0 ;+134 указатель на массив цветов текста
@@ -403,6 +401,8 @@ tedit0: ;
.fun_draw_panel_find dd draw_panel_find ;+230 указатель на функцию рисования панели поиска
.fun_draw_panel_syntax dd draw_panel_syntax ;+234 указатель на функцию рисования панели синтаксиса
.fun_save_err dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно
.increase_size dd 200 ;+242 число символов на которые будет увечиваться память при нехватке
.ptr_free_symb dd ? ;+246 используется внутри элемента для ускорения вставки текста
;------------------------------------------------------------------------------
conv_tabl rb 128 ; таблица для конвертирования scan-кода в ascii-код
+21 -21
View File
@@ -77,13 +77,13 @@ load_libraries l_libs_start,load_lib_end
copy_path fn_icon,sys_path,file_name,0x0
mov eax,70 ;load icon file
mov [run_file_70.func_n], 0
mov [run_file_70.param1], 54
mov [run_file_70.param2], 0
mov [run_file_70.param3], 1200*18
m2m [run_file_70.param4], [bmp_icon]
mov [run_file_70.rezerv], 0
mov [run_file_70.name], file_name
mov [run_file_70.Function], 0
mov [run_file_70.Position], 54
mov [run_file_70.Flags], 0
mov [run_file_70.Count], 1200*18
m2m [run_file_70.Buffer], [bmp_icon]
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
int 0x40
@@ -101,13 +101,13 @@ load_libraries l_libs_start,load_lib_end
call mem_Alloc
mov dword[tree1.data_img_sys],eax
;mov [run_file_70.func_n], 0
;mov [run_file_70.param1], 54
;mov [run_file_70.param2], 0
mov [run_file_70.param3], 3*256*13
mov [run_file_70.param4], eax
;mov [run_file_70.rezerv], 0
;mov [run_file_70.name], file_name
;mov [run_file_70.Function], 0
;mov [run_file_70.Position], 54
;mov [run_file_70.Flags], 0
mov [run_file_70.Count], 3*256*13
mov [run_file_70.Buffer], eax
;mov byte[run_file_70+20], 0
;mov [run_file_70.FileName], file_name
mov eax,70 ;load icon file
mov ebx,run_file_70
@@ -124,13 +124,13 @@ load_libraries l_libs_start,load_lib_end
call mem_Alloc
mov dword[tree1.data_img],eax
; mov [run_file_70.func_n], 0
; mov [run_file_70.param1], 54
; mov [run_file_70.param2], 0
mov [run_file_70.param3], 3*256*2
mov [run_file_70.param4], eax
; mov [run_file_70.rezerv], 0
; mov [run_file_70.name], file_name
; mov [run_file_70.Function], 0
; mov [run_file_70.Position], 54
; mov [run_file_70.Flags], 0
mov [run_file_70.Count], 3*256*2
mov [run_file_70.Buffer], eax
; mov byte[run_file_70+20], 0
; mov [run_file_70.FileName], file_name
mov eax,70 ;load icon file
mov ebx,run_file_70