/programs/develop/libraries/box_lib/trunk/bl_sys.mac |
---|
6,4 → 6,5 |
include 'menubar.mac' ;macro implements menubar |
include 'filebrowser.mac' ;macro implements filebrowser |
include 'tree_list.mac' ;macro implements tree_list, image_list, list_box |
include 'pathshow.mac' ;macro implements pathshow |
include 'pathshow.mac' ;macro implements pathshow |
include 't_edit.mac' ;macro implements text_editor |
/programs/develop/libraries/box_lib/trunk/box_lib.asm |
---|
16,6 → 16,7 |
section '.flat' code readable align 16 |
include '../../../../macros.inc' |
include '../../../../proc32.inc' |
include 'bl_sys.mac' |
include 'box_lib.mac' ;macro which should make life easier :) |
88,7 → 89,13 |
align 16 |
use_path_show |
;-------------------------------------------------- |
;text editor |
;-------------------------------------------------- |
align 16 |
use_text_edit |
align 16 |
init: |
ret |
165,6 → 172,31 |
dd sz_PathShow_draw, path_show.draw |
dd szVersion_path_show, 0x00010001 |
dd sz_ted_but_save_file, ted_but_save_file |
dd sz_ted_but_sumb_upper, ted_but_sumb_upper |
dd sz_ted_but_sumb_lover, ted_but_sumb_lover |
dd sz_ted_can_save, ted_can_save |
dd sz_ted_clear, ted_clear |
dd sz_ted_delete, ted_delete |
dd sz_ted_draw, ted_draw |
dd sz_ted_init, ted_init |
dd sz_ted_init_syntax_file, ted_init_syntax_file |
dd sz_ted_is_select, ted_is_select |
dd sz_ted_key, ted_key |
dd sz_ted_mouse, ted_mouse |
dd sz_ted_open_file, ted_open_file |
dd sz_ted_text_add, ted_text_add |
dd sz_ted_but_select_word, ted_but_select_word |
dd sz_ted_but_cut, ted_but_cut |
dd sz_ted_but_copy, ted_but_copy |
dd sz_ted_but_paste, ted_but_paste |
dd sz_ted_but_undo, ted_but_undo |
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 0,0 |
235,3 → 267,28 |
sz_PathShow_prepare db 'PathShow_prepare',0 |
sz_PathShow_draw db 'PathShow_draw',0 |
szVersion_path_show db 'version_PathShow',0 |
sz_ted_but_save_file db 'ted_but_save_file',0 |
sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0 |
sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0 |
sz_ted_can_save db 'ted_can_save',0 |
sz_ted_clear db 'ted_clear',0 |
sz_ted_delete db 'ted_delete',0 |
sz_ted_draw db 'ted_draw',0 |
sz_ted_init db 'ted_init',0 |
sz_ted_init_syntax_file db 'ted_init_syntax_file',0 |
sz_ted_is_select db 'ted_is_select',0 |
sz_ted_key db 'ted_key',0 |
sz_ted_mouse db 'ted_mouse',0 |
sz_ted_open_file db 'ted_open_file',0 |
sz_ted_text_add db 'ted_text_add',0 |
sz_ted_but_select_word db 'ted_but_select_word',0 |
sz_ted_but_cut db 'ted_but_cut',0 |
sz_ted_but_copy db 'ted_but_copy',0 |
sz_ted_but_paste db 'ted_but_paste',0 |
sz_ted_but_undo db 'ted_but_undo',0 |
sz_ted_but_redo db 'ted_but_redo',0 |
sz_ted_but_reverse db 'ted_but_reverse',0 |
sz_ted_but_find_next db 'ted_but_find_next',0 |
sz_ted_text_colored db 'ted_text_colored',0 |
sz_ted_version db 'version_text_edit',0 |
/programs/develop/libraries/box_lib/trunk/box_lib.mac |
---|
168,6 → 168,10 |
.flags: dd flags+0 ; ä« £¨ |
} |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Basic macros for use TreeList ; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
info_capt_len,el_focus, p_scrol,on_press { |
201,10 → 205,6 |
.on_press dd on_press |
} |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Basic macros for use TreeList ; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
tl_info_size equ word[edi +4] ;à §¬¥à ¤ ëå ¢ë¤¥«ï¥¬ëå ¤«ï ª ¦¤®£® 㧫 (¯®«ì§®¢ ⥫ìá쪨¥ ¤ ë¥ + ⥪áâ ¤«ï ¯®¤¯¨á¨) |
tl_info_max_count equ dword[edi+6] ;¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 㧫®¢, ª®â®àë¥ ¬®¦® ¤®¡ ¢¨âì ¢ í«¥¬¥â |
tl_style equ dword[edi+10] ;á⨫¨ í«¥¬¥â |
245,3 → 245,102 |
tl_err_load_info_size equ 100b ;¥ ᮢ¯ ¤ ¥â à §¬¥à ¨ä®à¬ 樮®© áâàãªâãàë ¯à¨ ®âªàë⨨ |
tl_load_mode_add equ 0x20000 ;®¯æ¨ï áç¨âë¢ ¨ï ¢ ०¨¬¥ ¤®¡ ¢«¥¨ï ¨ä®à¬ 樨 |
tl_save_load_heder_size equ 26 ;à §¬¥à § £®«®¢ª ¤«ï § ¯¨á¨/ç⥨ï í«¥¬¥â®¢ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Basic macros for use TextEditor ; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ted_wnd_l equ dword[edi+ 0] ;®ª® । ªâ®à : ®âáâ㯠᫥¢ |
ted_wnd_t equ dword[edi+ 4] ;®ª® । ªâ®à : ®âáâ㯠ᢥàåã |
ted_wnd_w equ dword[edi+ 8] ;®ª® । ªâ®à : è¨à¨ |
ted_wnd_h equ dword[edi+12] ;®ª® । ªâ®à : ¢ëá®â |
ted_rec_l equ dword[edi+16] ;è¨à¨ ¯ ¥«¨ ¢ ®ª¥ |
ted_rec_t equ dword[edi+20] ;¢ëá®â ¯ ¥«¨ ¢ ®ª¥ |
ted_rec_w equ dword[edi+24] ;è¨à¨ ᨬ¢®« (§ ª®¬¥áâ ) ¢ ®ª¥ |
ted_rec_h equ dword[edi+28] ;¢ëá®â ᨬ¢®« (§ ª®¬¥áâ ) ¢ ®ª¥ |
ted_drag_m equ byte[edi+32] ;¢ë¤¥«¥¨¥ ®â ¬ëè¨ |
ted_drag_k equ byte[edi+33] ;¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
ted_sel_x0 equ dword[edi+34] ;ª®®à¤¨ ⠢뤥«¥¨ï x0 |
ted_sel_y0 equ dword[edi+38] ;ª®®à¤¨ ⠢뤥«¥¨ï y0 |
ted_sel_x1 equ dword[edi+42] ;ª®®à¤¨ ⠢뤥«¥¨ï x1 |
ted_sel_y1 equ dword[edi+46] ;ª®®à¤¨ ⠢뤥«¥¨ï y1 |
;§ ¯ áë¥ ª®®à¤¨ âë ¢ë¤¥«¥¨ï |
ted_seln_x0 equ dword[edi+50] |
ted_seln_y0 equ dword[edi+54] |
ted_seln_x1 equ dword[edi+58] |
ted_seln_y1 equ dword[edi+62] |
ted_tex equ dword[edi+66] ;㪠§ â¥«ì ¯ ¬ïâì ¤«ï åà ¥¨ï ⥪áâ |
ted_tex_1 equ dword[edi+70] ;㪠§ ⥫ì 1-î áâàªãâàã ᨬ¢®« |
ted_tex_end equ dword[edi+74] ;㪠§ â¥«ì ¯®á«¥¤îî áâàãªâãàã ᨬ¢®« |
ted_cur_x equ dword[edi+78] ;ª®®à¤¨ â x ªãàá®à |
ted_cur_y equ dword[edi+82] ;ª®®à¤¨ â y ªãàá®à |
ted_max_chars equ dword[edi+86] ;¬ ªá¨¬ «ì®¥ ç¨á«® ᨬ¢®«®¢ ¢ ®¤®¬ ¤®ªã¬¥â¥ |
ted_colors_text_count equ dword[edi+90] ;ª®««¨ç¥á⢮ 梥⮢ ⥪áâ |
ted_key_words_count equ dword[edi+94] ;ª®««¨ç¥á⢮ ª«î祢ëå á«®¢ |
ted_color_cursor equ dword[edi+98] ;梥⠪ãàá®à |
ted_color_wnd_capt equ dword[edi+102] ;梥⠯®«¥© ¢®ªà㣠®ª |
ted_color_wnd_work equ dword[edi+106] ;梥â ä® ®ª |
ted_color_wnd_bord equ dword[edi+110] ;梥â ⥪áâ ¯®«ïå |
ted_color_select equ dword[edi+114] ;梥⠢뤥«¥¨ï |
ted_color_cur_text equ dword[edi+118] ;梥â ᨬ¢®« ¯®¤ ªãàá®à®¬ |
ted_color_wnd_text equ dword[edi+122] ;梥â ⥪áâ ¢ ®ª¥ |
ted_syntax_file equ dword[edi+126] ;㪠§ ⥫ì ç «® ä ©« á¨â ªá¨á |
ted_syntax_file_size equ dword[edi+130] ;¬ ªá¨¬ «ìë© à §¬¥à ä ©« á¨â ªá¨á |
ted_text_colors equ dword[edi+134] ;㪠§ â¥«ì ¬ áᨢ 梥⮢ ⥪áâ |
ted_help_text_f1 equ dword[edi+138] ;㪠§ ⥫ì ⥪áâ á¯à ¢ª¨ (¯® ¦ ⨨ F1) |
ted_help_id equ dword[edi+142] ;¨¤¥â¨ä¨ª â®à ¤«ï á¯à ¢ª¨ |
ted_key_words_data equ dword[edi+146] ;㪠§ ⥫ì áâàãªâãàë ª«î祢ëå á«®¢ TexColViv |
ted_tim_ch equ dword[edi+150] ;ª®««¨ç¥á⢮ ¨§¬¥¥¨© ¢ ä ©«¥ |
ted_tim_undo equ dword[edi+154] ;ª®««¨ç¥á⢮ ®â¬¥¥ëå ¤¥©á⢨© |
ted_tim_ls equ dword[edi+158] ;¢à¥¬ï ¯®á«¥¤¥£® á®åà ¥¨ï |
ted_tim_co equ dword[edi+162] ;¢à¥¬ï ¯®á«¥¤¥© 梥⮢®© à §¬¥âª¨ |
ted_el_focus equ dword[edi+166] ;㪠§ â¥«ì ¯¥à¥¬¥ãî í«¥¬¥â ¢ 䮪ãᥠ|
ted_err_save equ byte[edi+170] ;®è¨¡ª á®åà ¥¨ï ä ©« |
ted_panel_id equ byte[edi+171] ;®¬¥à ®âªàë⮩ ¯ ¥«¨ |
ted_key_new equ byte[edi+172] ;ᨬ¢®«, ª®â®àë© ¡ã¤¥â ¤®¡ ¢«ïâáï á ª« ¢¨ âãàë |
ted_symbol_new_line equ byte[edi+173] ;ᨬ¢®« § ¢¥à襨ï áâப¨ |
ted_scr_w equ dword[edi+174] ;¢¥à⨪ «ìë© áªà®««¨£ |
ted_scr_h equ dword[edi+178] ;£®à¨§®â «ìë© áªà®««¨£ |
ted_arr_key_pos equ dword[edi+182] ;㪠§ â¥«ì ¬ áᨢ ¯®§¨æ¨© ª«î祢ëå á«®¢ |
ted_buffer equ dword[edi+186] ;㪠§ â¥«ì ¡ãä¥à ª®¯¨à®¢ ¨ï/¢áâ ¢ª¨ |
ted_buffer_find equ dword[edi+190] ;㪠§ â¥«ì ¡ãä¥à ¤«ï ¯®¨áª |
ted_cur_ins equ byte[edi+194] ;०¨¬ à ¡®âë ªãàá®à (®¡ëçë© ¨«¨ § ¬¥ ) |
ted_mode_color equ byte[edi+195] ;०¨¬ ¢ë¤¥«¥¨ï á«®¢ 梥⮬ (0-¢ëª«. 1-¢ª«.) |
ted_mode_invis equ byte[edi+196] ;०¨¬ ¯®ª § ¥¯¥ç â ¥¬ëå ᨬ¢®«®¢ |
ted_gp_opt equ byte[edi+197] ;®¯æ¨¨ ¢®§¢à é ¥¬ë¥ äãªæ¨¥© ted_get_pos_by_cursor |
ted_fun_on_key_ctrl_o equ dword[edi+198] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+O (®âªàë⨥ ä ©« ) |
ted_fun_on_key_ctrl_f equ dword[edi+202] ;... Ctrl+F (¢ë§®¢ /áªàëâ¨ï ¯ ¥«¨ ¯®¨áª ) |
ted_fun_on_key_ctrl_n equ dword[edi+206] ;... Ctrl+N (ᮧ¤ ¨¥ ®¢®£® ¤®ªã¬¥â ) |
ted_fun_on_key_ctrl_s equ dword[edi+210] ;... Ctrl+S |
ted_buffer_size equ dword[edi+214] ;à §¬¥à ¡ãä¥à ª®¯¨à®¢ ¨ï/¢áâ ¢ª¨ |
ted_fun_find_err equ dword[edi+218] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ ¯®¨áª § ª®ç¨«áï ¥ã¤ ç® |
ted_fun_init_synt_err equ dword[edi+222] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ®è¨¡®ç®¬ ®âªàë⨨ ä ©« á¨â ªá¨á |
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_opt_ed_move_cursor equ 1 ;¤¢¨£ âì ªãàá®à ¯®á«¥ ¤®¡ ¢«¥¨ï ⥪áâ |
ted_opt_ed_change_time equ 2 ;¤®¡ ¢«ïâì ¨§¬¥¥¨ï ¯à¨ । ªâ¨à®¢ ¨¨ ⥪áâ |
ted_offs_sel equ 34 ;ᬥ饨¥ áâàãªâãàë sel |
ted_offs_seln equ 50 ;ᬥ饨¥ áâàãªâãàë seln |
ted_offs_count_colors equ 90 ;ᬥ饨¥ ¯¥à¥¬¥®© ª®««¨ç¥á⢠梥⮢ |
ted_offs_key_new equ 172 |
ted_offs_symbol_new_line equ 173 ;ᬥ饨¥ ᨬ¢®« ®¢®© áâப¨ |
;------------------------------------------------------------------------------ |
; *** scroll bar constant *** |
sb_offs_size_x equ 0 |
sb_offs_start_x equ 2 |
sb_offs_size_y equ 4 |
sb_offs_start_y equ 6 |
sb_offs_max_area equ 16 |
sb_offs_cur_area equ 20 |
sb_offs_position equ 24 |
sb_offs_redraw equ 40 |
sb_offs_delta2 equ 46 |
sb_offs_all_redraw equ 80 |
;------------------------------------------------------------------------------ |
/programs/develop/libraries/box_lib/trunk/doc/box_lib.htm |
---|
24,7 → 24,9 |
<li>d_button</li> |
<li>menubar</li> |
<li>filebrowser</li> |
<li>filepath</li> |
<li><a href="tree_list\info_treelist.htm">tree_list</a></li> |
<li><a href="t_edit\t_edit.htm">text_editor</a></li> |
</ul> |
<h1><a name="autors">Àâòîðñêèé ñîñòàâ</a></h1> |
36,6 → 38,6 |
<p>Èãîðü Àôàíàñüåâ aka IgorA</p> |
<hr> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 05.02.10.</p> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 29.04.10.</p> |
</body> |
</html> |
/programs/develop/libraries/box_lib/trunk/doc/style.css |
---|
36,16 → 36,6 |
color: #004000; |
background: #ffd0ff; |
} |
pre font.f0 { color: #ffff00; } |
pre font.f1 { color: #ffffff; } |
pre font.f2 { color: #00ff00; } |
pre font.f3 { color: #00ffff; } |
pre font.f4 { color: #808080; } |
pre font.f5 { color: #ff40ff; } |
pre font.f6 { color: #4080ff; } |
pre font.f7 { color: #ff0000; } |
pre font.f8 { color: #ffcc00; } |
pre font.f9 { color: #00ccff; } |
caption |
{ |
57,15 → 47,12 |
} |
table |
{ |
font-size: 10px; |
border-collapse: collapse; |
border: #000000 1px solid; |
background-color: #c0e7fb; |
} |
table td |
{ |
border: none; |
text-align: center; |
} |
table th |
{ |
/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm |
---|
0,0 → 1,138 |
<html> |
<head> |
<title>ýëåìåíò Text Editor</title> |
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251"> |
<link href="../style.css" type=text/css rel=stylesheet> |
</head> |
<body> |
<p><a href="../box_lib.htm">Íà ãëàâíóþ ↑</a></p> |
<h1>Îãëàâëåíèå</h1> |
<p><a href="#vveden">Ââåäåíèå</a></p> |
<p><a href="#funct">Ôóíêöèè</a></p> |
<ul> |
<li><a href="#fun_but_copy">ted_but_copy</a></li> |
</ul> |
<h1><a name="vveden">Ââåäåíèå</a></h1> |
<p>Ýëåìåíò text_editor ïîçâîëÿåò ðàáîòàòü ñ òåêñòîâûìè ôàéëàìè, ñîäåðæèò ìíîãî ôóíêöèÿ äëÿ ðåäàêòèðîâàíèÿ òåêñòà.</p> |
<p><img src="../../../../../../other/t_edit/t_edit.png"></p> |
<p>Âíåøíèé âèä ïðîãðàììû, ñ ýëåìåíòîì text_editor.</p> |
<h2>Âîçìîæíîñòè</h2> |
<ul> |
<li>Îòêðûòèå (Ctrl+O)/Ñîõðàíåíèå ôàéëà.</li> |
<li>Ðåäàêòèðîâàíèå: Ïîâòîð/Îòìåíà äåéñòâèÿ (Ctrl+Z), Âûðåçàòü/Êîïèðîâàòü (Ctrl+C)/Âñòàâèòü (Ctrl+V), Ïîèñê (Ctrl+F, F3).</li> |
<li>Âûäåëåíèå öâåòîì ñëîâ, çàäàííûõ â ôàéëå ñèíòàêñèñà. Âûâîä ñïðàâêè ïî íèì, åñëè îíà åñòü (íàæàòèåì F1 êîãäà êóðñîð íà ñëîâå).</li> |
</ul> |
<h2>Íåêîòîðûå íåäîðàáîòêè</h2> |
<ul> |
<li>Åñëè îòêðûòü áîëüøîé ôàéë, ðàçìåð êîòîðîãî áîëüøå ÷åì: |
maxChars equ 100002 ;(...+2) |
îí îòêðîåòñÿ íå âåñü, à ïåðâûå maxChars-2 ñèìâîëîâ èç ôàéëà |
(î ÷åì âûäàåòñÿ ñîîáùåíèå).</li> |
<li>Ïðè ñîõðàíåíèè ïðîãðàììà íå ñïðàøèâàåò î çàìåíå ñóùåñòâ. ôàéëà.</li> |
</ul> |
<h2>Î ðàáîòå ïðîãðàììû</h2> |
<p>Ðàçäåë äëÿ ïðîãðàììèñòîâ (è èíòåðåñóþùèõñÿ ëþäåé), â êîòîðîì ðàñêàçàíû |
íåêîòîðûå èäåè, íà êîòîðûõ ïîñòðîåíà äàííàÿ ïðîãðàììà.</p> |
<p>Äëÿ ðàáîòû ñ òåêñòîì ïðîãðàììà èñïîëüçóåò ñòðóêòóðû:</p> |
<pre>struct symbol |
c db ? ; +0 ñèìâîë |
col db ? ; +1 öâåò |
perv dd ? ; +2 |
next dd ? ; +6 óêàçàòåëè |
tc dd ? ; +10 âðåì. ñîçäàíèÿ |
td dd ? ; +14 âðåì. óäàëåíèÿ |
ends</pre> |
<p>Êàæäàÿ èç òàêèõ ñòðóêòóð ñîõðàíÿåò îäèí ñèìâîë â ïåðåìåííîé 'c'. Ïåðåìåííûå |
'perv' è 'next' õðàíÿò èíäåêñû ïåðâîãî è ñëåäóþùåãî ñèìâîëîâ. Áëàãîäàðÿ ÷åìó |
òåêñò ñîçäàåòñÿ â âèäå öåïî÷êè ñèìâîëîâ (äâóíàïðàâëåííûé ñïèñîê).</p> |
<p><b>'tc'</b> - âðåìÿ ñîçäàíèÿ ñèìâîëà, ïðè îòìåíå äåéñòâèÿ òåêñòîâûé ðåäàêòîð "çíàåò" |
êàêèå ñèìâîëû îòîáðàæàòü, à êàêèå íåò (õîòÿ âñå ñèìâîëû "âèñÿò" â ïàìÿòè).</p> |
<p><b>'td'</b> - âðåìÿ óäàëåíèÿ ñèìâîëà, çàïîëíÿåòñÿ ïðè óäàëåíèè, ïðè îòìåíå äåéñòâèÿ |
óäàëåíèÿ ñèìâîëîâ, òåêñò ìîæåò áûòü âîññòàíîâëåí.</p> |
<p><b>'col'</b> - èñïîëüçóåòñÿ äëÿ öâåòîâîé ðàçìåòêè.</p> |
<h1><a name="funct">Ôóíêöèè</a></h1> |
<p>Ôóíêöèè íà ýêñïîðò:</p> |
<h4><a name="fun_but_copy">ted_but_copy</a></h4> |
<p>Ôóíêöèÿ êîòîðàÿ áóäåò âûçûâàòüñÿ ïðè íàæàòèè íà êíîïêó êîïèðîâàíèÿ â áóôåð èëè íà <b>Ctrl+C</b>.</p> |
<p>Ïðèìåð èñïîëüçîâàíèÿ:</p> |
<pre>stdcall [ted_but_copy], tedit0</pre> |
<h4>ted_but_cut</h4><p></p> |
<h4>ted_but_find_next</h4><p></p> |
<h4>ted_but_paste</h4><p></p> |
<h4>ted_but_redo</h4><p></p> |
<h4>ted_but_reverse</h4><p></p> |
<h4>ted_but_save_file</h4><p></p> |
<h4>ted_but_select_word</h4><p></p> |
<h4>ted_but_sumb_lover</h4><p></p> |
<h4>ted_but_sumb_upper</h4><p></p> |
<h4>ted_but_undo</h4><p></p> |
<h4>ted_can_save</h4><p></p> |
<h4>ted_clear</h4><p></p> |
<h4>ted_delete</h4><p></p> |
<h4>ted_draw</h4><p></p> |
<h4>ted_init</h4><p></p> |
<h4>ted_init_syntax_file</h4><p></p> |
<h4>ted_is_select</h4><p></p> |
<h4>ted_key</h4><p></p> |
<h4>ted_mouse</h4><p></p> |
<h4>ted_open_file</h4><p></p> |
<h4>ted_text_add</h4><p></p> |
<h4>ted_text_colored</h4><p></p> |
<p>Âíóòðåííèå ôóíêöèè:</p> |
<p><b>ted_get_text_perv_pos</b> - ïåðåõîä íà ïðåäûäóùèé ñèìâîë â öåïè (÷åðåç óêàçàòåëü 'perv')</p> |
<p><b>ted_get_text_next_pos</b> - ïåðåõîä íà ñëåäóþùèé ñèìâîë â öåïè (÷åðåç óêàçàòåëü 'next')</p> |
<p><b>ted_symbol_not_vis</b> - îïðåäåëÿåò âèäèìûé ëè óêàçàííûé ñèìâîë íà ýêðàíå (â çàâèñèìîñòè |
îò çíà÷åíèé 'tc' è 'td')</p> |
<p><b>ted_iterat_next</b> - ïåðåõîä íà ñëåäóþùèé âèäèìûé ñèìâîë â öåïè. Èñïîëüçóåò äëÿ |
ðàáîòû ôóíêöèè ted_get_text_next_pos è ted_symbol_not_vis.</p> |
<p><b>ted_iterat_perv</b> - ïåðåõîä íà ïðåäåäóùèé âèäèìûé ñèìâîë â öåïè.</p> |
<p><b>ted_iterat_next_pos_char</b> - íàéòè ñëåäóþùóþ ïîçèöèþ óêàçàííîãî ñèìâîëà (edx-ïîç. íà÷àëà |
ïîèñêà, bl->êîä èñêîìîãî ñèìâîëà)</p> |
<p><b>ted_get_pos_by_coords</b> - áåðåò ïîçèöèþ ñèìâîëà ïî êîîðäèíàòàì (esi->êîîðä. x, çíàê; |
ecx->êîîðä. y, ñòðîêà)</p> |
<p><b>ted_go_to_pos</b> - ïåðåñòàâëÿåò êóðñîð â óêàçàííóþ ïîçèöèþ, åñëè óêàçàííàÿ ïîçèöèÿ |
íàõîäèòñÿ âíå ýêðàíà, òî òàêæå ïåðåñòàâëÿþòñÿ ñêðîëèíãè (ecx->êîîðä. x, çíàê; edx->êîîðä. y, ñòðîêà)</p> |
<h1>Ôîðìàò ôàéëà ïîäñâåòêè *.syn</h1> |
<table> |
<tr><th>Ýëåìåíò</th><th>Ðàçìåð (áàéò)</th></tr> |
<tr><td>Êîëè÷åñòâî öâåòîâ òåêñòà</td> |
<td><pre>4</pre></td></tr> |
<tr><td>Êîëè÷åñòâî ïîäñâå÷èâàåìûõ ñëîâ</td> |
<td><pre>4</pre></td></tr> |
<tr><td>Öâåòà èíòåðôåéñà</td> |
<td><pre>4*6</pre></td></tr> |
<tr><td>Öâåòà äëÿ òåêñòà</td> |
<td><pre>4*(êîë. öâ. òåêñòà)</pre></td></tr> |
<tr><td>Ñòðóêòóðû ñî ñâîéñòâàìè è îïèñàíèÿìè ñëîâ</td> |
<td><pre>sizeof(TexColViv)*(êîë. ñëîâ)</pre></td></tr> |
<tr><td>Ðàçäåëèòåëüíûé ñèìâîë, îçíà÷àþùèé íà÷àëî îïèñàíèé ñëîâ (âñåãäà ðàâåí 0)</td> |
<td><pre>1 áàéò</pre></td></tr> |
<tr><td>Îïèñàíèÿ ñëîâ (ñòðîêè òåêñòà ñ 0-ìè â êîíöå)</td> |
<td><pre>(äëèííà ñïðàâî÷íîãî òåêñòà + 1)</pre></td></tr> |
</table> |
<h4>Çàìå÷àíèÿ.</h4> |
<ul> |
<li>Âñå ñëîâà äîëæíû áûòü ðàñïîëîæåíû â ïîðÿäêå ñëåäîâàíèÿ èõ ASCII êîäîâ. |
Âîçìîæíî â áóäóùèõ âåðñèÿõ ôîðìàò ôàéëîâ ïîäñâåòêè áóäåò èçìåíåí.</li> |
</ul> |
<hr> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 29.04.10.</p> |
</body> |
</html> |
/programs/develop/libraries/box_lib/trunk/t_edit.mac |
---|
0,0 → 1,3867 |
; ¬ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj |
; í«¥¬¥â TextEditor ¤«ï Kolibri OS |
; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 29.04.2010 IgorA |
; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï |
;input: |
; edi = pointer to tedit struct |
; reg = index |
;output: |
; reg = pointer to 'tex' struct |
macro ConvertIndexToPointer reg { |
imul reg,sizeof.symbol |
add reg,ted_tex |
} |
;--- out_reg = ted_key_words_data[ind_reg].Text[0] --- |
macro ColToIndexOffset ind_reg,out_reg { |
mov out_reg,ind_reg |
imul out_reg,sizeof.TexColViv |
add out_reg,ted_key_words_data |
} |
macro use_text_edit |
{ |
TED_PANEL_NULL equ 0 ;¥â ®âªàë⮩ ¯ ¥«¨ |
TED_PANEL_FIND equ 1 ;¯ ¥«ì ¯®¨áª |
TED_PANEL_SYNTAX equ 2 ;¯ ¥«ì ¢ë¡®à ä ©«®¢ ¯®¤á¢¥âª¨ |
TED_PANEL_WIDTH equ 150 ;è¨à¨ ¯ ¥«¨ |
MAX_COLOR_WORD_LEN equ 40 |
;------------------------------------------------------------------------------ |
struct TexSelect |
x0 dd ? |
y0 dd ? |
x1 dd ? |
y1 dd ? |
ends |
struct TexColViv |
Text rb MAX_COLOR_WORD_LEN ; á«®¢® ¤«ï ¯®¤á¢¥âª¨ |
f1 dd 0 ; á¯à ¢ª ¯® á«®¢ã |
wwo db ? ; whole words only |
endc db ? ; ᨬ¢®« ª®æ ¢ë¤¥«¥¨ï (wwo&4) |
color db ? ; ®¬¥à 梥â |
ends |
struct symbol |
c db ? ; +0 ᨬ¢®« |
col db ? ; +1 梥â |
perv dd ? ; +2 |
next dd ? ; +6 㪠§ ⥫¨ |
tc dd ? ; +10 ¢à¥¬. ᮧ¤ ¨ï |
td dd ? ; +14 ¢à¥¬. 㤠«¥¨ï |
ends |
;------------------------------------------------------------------------------ |
if lang eq ru |
txtFindCapt db '®¨áª',0 |
txtFindNext db ' ©â¨ ¤ «¥¥',0 |
txtFormatCapt db '®à¬ â',0 |
txtFormatApply db 'ਬ¥¨âì',0 |
txtRow db 'âப ',0 |
txtCol db ' ª',0 |
txtOtm db '⬥ë',0 |
txtBuf db 'ãä¥à:',0 |
else |
txtFindCapt db 'Search',0 |
txtFindNext db 'Find next',0 |
txtFormatCapt db 'Format',0 |
txtFormatApply db 'Apply',0 |
txtRow db 'Rows',0 |
txtCol db 'Cols',0 |
txtOtm db 'Undo',0 |
txtBuf db 'Buffer:',0 |
end if |
;------ |
align 4 |
EvChar db 0,0,0,0,0,0,0,0,0,0,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 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
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 |
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 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 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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79 |
db 80,81,82,83,84,85,86,87,88,89,90,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 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 |
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 |
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 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
db 0,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111 |
db 112,113,114,115,116,117,118,119,120,121,122,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 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 |
conv_table dd 0 |
KM_SHIFT equ 0x00010000 |
KM_CTRL equ 0x00020000 |
KM_ALT equ 0x00040000 |
KM_NUMLOCK equ 0x00080000 |
; KEY CODES |
KEY_F1 equ 0x0000003B |
KEY_F2 equ 0x0000003C |
KEY_F3 equ 0x0000003D |
align 4 |
proc ted_init, edit:dword |
push eax ecx edi |
mov edi,dword[edit] |
mov ecx,sizeof.symbol |
imul ecx,ted_max_chars |
call mem_Alloc ;¢ë¤¥«ï¥¬ ¯ ¬ïâì |
mov ted_tex,eax |
mov ted_tex_1,eax |
add ted_tex_1,sizeof.symbol |
add eax,ecx |
mov ted_tex_end,eax |
stdcall ted_clear, edi,1 |
;------------------------------------------------- |
mov ecx,1024 ;1024 - ¤«ï ¬ áᨢ ted_arr_key_pos |
add ecx,ted_syntax_file_size |
call mem_Alloc |
mov ted_arr_key_pos,eax |
add eax,1024 |
mov ted_syntax_file,eax |
pop edi ecx eax |
ret |
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 |
endp |
;input: |
; eax = key kodes |
align 4 |
proc ted_key, edit:dword, table:dword, control:dword |
pushad |
mov edi,dword[edit] |
mov esi,dword[control] |
cmp ah,KEY_F1 ;[F1] |
jne @f |
stdcall ted_show_help_f1,edi |
jmp .end_key_fun |
@@: |
cmp ah,KEY_F3 ;[F3] |
jne @f |
stdcall ted_but_find_next,edi |
jmp .end_key_fun |
@@: |
test esi,KM_CTRL ;Ctrl+... |
jz .key_Ctrl |
cmp ah,24 ;Ctrl+O |
jne @f |
cmp ted_fun_on_key_ctrl_o,0 |
je @f |
call ted_fun_on_key_ctrl_o |
@@: |
cmp ah,33 ;Ctrl+F |
jne @f |
cmp ted_panel_id,TED_PANEL_FIND |
je @f |
cmp ted_fun_on_key_ctrl_f,0 |
je @f |
call ted_fun_on_key_ctrl_f |
@@: |
cmp ah,44 ;Ctrl+Z |
jne @f |
stdcall ted_but_undo,edi |
@@: |
cmp ah,46 ;Ctrl+C |
jne @f |
stdcall ted_but_copy,edi |
@@: |
cmp ah,47 ;Ctrl+V |
jne @f |
stdcall ted_but_paste,edi |
@@: |
cmp ah,49 ;Ctrl+N |
jne @f |
cmp ted_fun_on_key_ctrl_n,0 |
je @f |
call ted_fun_on_key_ctrl_n |
@@: |
cmp ah,199 ;Ctrl+Home |
jne @f |
call ted_key_ctrl_home |
@@: |
jmp .end_key_fun |
.key_Ctrl: |
test esi,KM_SHIFT ;Shift+... |
jz .key_Shift |
cmp ah,72 ;Shift+Up |
jne @f |
call ted_sel_key_up |
@@: |
cmp ah,75 ;Shift+Left |
jne @f |
call ted_sel_key_left |
@@: |
cmp ah,77 ;Shift+Right |
jne @f |
call ted_sel_key_right |
@@: |
cmp ah,80 ;Shift+Down |
jne @f |
call ted_sel_key_down |
@@: |
;mov ted_drag_k,1 ; ç¨ ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
jmp .key_MoveCur |
.key_Shift: |
;------------------------------------------------- |
cmp ah,72 ;178 ;Up |
jne @f |
call ted_draw_cursor_sumb |
call ted_cur_move_up |
cmp dl,8 |
jne .no_red_0 |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
jmp @f |
.no_red_0: |
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 |
call ted_cur_move_left |
cmp dl,8 |
jne .no_red_2 |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
jmp @f |
.no_red_2: |
call ted_draw_main_cursor |
mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
@@: |
cmp ah,77 ;179 ;Right |
jne @f |
call ted_draw_cursor_sumb |
call ted_cur_move_right |
cmp dl,8 |
jne .no_red_3 |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
jmp @f |
.no_red_3: |
call ted_draw_main_cursor |
mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
@@: |
cmp ah,71 ;180 ;Home |
jne @f |
call ted_draw_cursor_sumb |
call ted_cur_move_x_first_char |
cmp dl,8 |
jne .no_red_4 |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
jmp @f |
.no_red_4: |
call ted_draw_main_cursor |
mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
@@: |
cmp ah,79 ;181 ;End |
jne @f |
call ted_draw_cursor_sumb |
call ted_cur_move_x_last_char |
cmp dl,8 |
jne .no_red_5 |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
jmp @f |
.no_red_5: |
call ted_draw_main_cursor |
mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
@@: |
cmp ah,73 ;184 ;PageUp |
jne @f |
call ted_cur_move_page_up |
cmp dl,0 |
je @f |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
@@: |
cmp ah,81 ;183 ;PageDown |
jne @f |
call ted_cur_move_page_down |
cmp dl,0 |
je @f |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
@@: |
;------------------------------------------------- |
; cmp esi,0 |
; jne .end_key_fun |
.key_MoveCur: |
cmp ah,69 ;[Pause Break] |
je .end_key_fun |
cmp ah,120 ;[Fn] |
je .end_key_fun |
cmp ah,0x80 ;if key up |
ja .end_key_fun |
cmp dword[table],0 |
je @f |
stdcall KeyConvertToASCII, dword[table] |
@@: |
;mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
lea edx,[EvChar] ;¡¥à¥¬ ¤à¥á â ¡«¨æë á ¤®¯ãá⨬묨 ᨬ¢®« ¬¨ |
add dl,ah |
jae @f |
add edx,0x100 ;¥á«¨ ¡ë«® ¯¥à¥¯®«¥¨¥ ¯à¨ ¤®¡ ¢«¥¨¨ ª®¤ ᨬ¢®« |
@@: |
cmp byte [edx],1 |
jne @f |
mov ted_key_new,ah |
call ted_set_undo |
mov edx,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
stdcall ted_sel_text_del,edx |
cmp al,1 |
jne .del |
mov edx,ted_opt_ed_move_cursor |
.del: |
cmp ted_cur_ins,1 |
je .no_ins_mod |
stdcall ted_text_del,edi,ted_opt_ed_change_time |
mov edx,ted_opt_ed_move_cursor |
.no_ins_mod: |
mov ecx,edi |
add ecx,ted_offs_key_new |
stdcall ted_text_add,edi,ecx,1,edx ;¤®¡ ¢«ï¥¬ ᨬ¢®« ¢¢¥¤¥ë© á ª« ¢¨ âãàë |
cmp ted_key_new,13 |
jne .dr_m_win |
stdcall ted_draw,edi |
jmp .dr_cur_l |
.dr_m_win: |
stdcall ted_draw_cur_line,edi |
.dr_cur_l: |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
cmp ah,8 ;[<-] |
jne @f |
call ted_set_undo |
stdcall ted_sel_text_del,ted_opt_ed_change_time |
cmp al,1 |
je .del_one_b |
stdcall ted_text_del,edi,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
.del_one_b: |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je .end_key_fun |
call ted_fun_draw_panel_buttons |
jmp .end_key_fun |
@@: |
cmp ah,182 ;Delete |
jne @f |
call ted_set_undo |
stdcall ted_sel_text_del,ted_opt_ed_change_time |
cmp al,1 |
je .del_one_d |
stdcall ted_text_del,edi,ted_opt_ed_change_time |
.del_one_d: |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je .end_key_fun |
call ted_fun_draw_panel_buttons |
jmp .end_key_fun |
@@: |
cmp ah,185 ;Ins |
jne @f |
call ted_draw_cursor_sumb |
xor ted_cur_ins,1 |
call ted_draw_main_cursor |
@@: |
.end_key_fun: |
popad |
ret |
endp |
;output: |
; al = 1 - can save |
align 4 |
proc ted_can_save, edit:dword |
push ecx edi |
mov edi,dword[edit] |
mov ecx,ted_tim_ch |
sub ecx,ted_tim_undo |
mov al,1 |
cmp ted_tim_ls,ecx |
jne @f |
dec al |
@@: |
pop edi ecx |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
;output: |
; al = 1 - selected |
align 4 |
proc ted_is_select |
push ebx |
xor al,al |
cmp ted_drag_m,1 |
je @f |
mov al,1 |
mov ebx,ted_sel_x0 |
cmp ebx,ted_sel_x1 |
jne @f |
mov ebx,ted_sel_y0 |
cmp ebx,ted_sel_y1 |
jne @f |
xor al,al |
@@: |
pop ebx |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_sel_normalize |
push ecx esi |
push edi |
mov esi,edi |
add esi,ted_offs_sel |
add edi,ted_offs_seln |
mov ecx,sizeof.TexSelect |
rep movsb |
pop edi |
jmp @f |
.swp_f: |
mov ecx,ted_seln_x0 |
m2m ted_seln_x0,ted_seln_x1 |
mov ted_seln_x1,ecx |
mov ecx,ted_seln_y0 |
cmp ecx,ted_seln_y1 ;(sel_y0>sel_y1) |
jle .end_f |
m2m ted_seln_y0,ted_seln_y1 |
mov ted_seln_y1,ecx |
jmp .end_f |
@@: |
mov ecx,ted_seln_y0 |
cmp ecx,ted_seln_y1 ;(sel_y0>sel_y1) |
jg .swp_f |
cmp ecx,ted_seln_y1 ;(sel_y0==sel_y1) |
jne .end_f |
mov ecx,ted_seln_x0 |
cmp ecx,ted_seln_x1 ;(sel_x0>sel_x1) |
jg .swp_f |
.end_f: |
pop esi ecx |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
;description: |
; ãªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ç «¥ ¢ë¤¥«¥¨ï |
align 4 |
proc ted_sel_start |
push eax ecx |
mov eax,ted_scr_h |
mov ecx,ted_cur_x |
add ecx,dword[eax+sb_offs_position] |
mov ted_sel_x0,ecx |
mov ted_sel_x1,ecx |
mov eax,ted_scr_w |
mov ecx,ted_cur_y |
add ecx,dword[eax+sb_offs_position] |
mov ted_sel_y0,ecx |
mov ted_sel_y1,ecx |
pop ecx eax |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
;description: |
; ãªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ¯¥à¥¬¥é¥¨¨ ¢ë¤¥«¥¨ï |
align 4 |
proc ted_sel_move |
push eax ecx |
mov ecx,ted_cur_x |
mov eax,ted_scr_h |
add ecx,dword[eax+sb_offs_position] |
mov ted_sel_x1,ecx |
mov eax,ted_scr_w |
mov ecx,ted_cur_y |
add ecx,dword[eax+sb_offs_position] |
mov ted_sel_y1,ecx |
pop ecx eax |
cmp ted_fun_draw_panel_buttons,0 ;redraw toolbar (need to button Copy) |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
ret |
endp |
;input: |
; 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] |
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,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 |
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 |
.exit: |
pop edi ecx |
ret |
endp |
align 4 |
proc ted_init_syntax_file, edit:dword, file:dword, f_name:dword |
pushad |
mov edi,dword[edit] |
mov eax,70 |
mov ebx,dword[file] |
mov dword[ebx], 0 |
mov dword[ebx+4], 0 |
mov dword[ebx+8], 0 |
mov ecx,ted_syntax_file_size |
mov dword[ebx+12], ecx |
m2m dword[ebx+16], ted_syntax_file |
mov byte[ebx+20], 0 |
m2m dword[ebx+21], dword[f_name] |
int 0x40 |
mov ecx,0x100 |
mov edx,ted_arr_key_pos |
@@: |
mov dword[edx],-1 |
add edx,4 |
loop @b |
;init: ted_colors_text_count, ted_key_words_count, ... |
mov ted_colors_text_count,1 |
mov ted_key_words_count,0 |
mov ted_help_text_f1,0 |
mov ted_help_id,-1 ;¨¤¥â¨ä¨ª â®à á«®¢ ¤«ï á¯à ¢ª¨ |
cmp eax,6 |
je @f |
cmp eax,0 |
je @f |
cmp ax,10 |
jl .zifra_0_9 |
mov al,'?' |
sub ax,48 |
.zifra_0_9: |
add ax,48 |
cmp ted_fun_init_synt_err,0 |
je .no_colors |
call ted_fun_init_synt_err |
jmp .no_colors |
@@: |
mov eax,edi ;á®åà 塞 § 票¥ edi |
mov esi,ted_syntax_file |
add edi,ted_offs_count_colors |
mov ecx,9*4 |
rep movsb |
mov edi,eax ;¢®áâ ¢«¨¢ ¥¬ § 票¥ edi |
mov eax,ted_syntax_file |
add eax,32 |
mov ted_text_colors,eax |
mov eax,ted_colors_text_count ;init: count_colors_text (offset to key words) |
add eax,8 |
shl eax,2 |
add eax,ted_syntax_file |
mov ted_key_words_data,eax |
mov ecx,ted_key_words_count ;init: ted_arr_key_pos (first key positions) |
xor eax,eax |
@@: |
ColToIndexOffset eax,edx |
xor ebx,ebx |
mov bl,byte[edx] |
shl bx,2 |
mov esi,ted_arr_key_pos |
add esi,ebx |
cmp dword[esi],-1 |
jne .no_ch_key |
mov dword[esi],eax |
.no_ch_key: |
inc eax |
loop @b |
;init: ted_help_text_f1 |
mov ecx,ted_key_words_count |
imul ecx,sizeof.TexColViv |
add ecx,ted_key_words_data |
mov ted_help_text_f1,ecx |
.no_colors: |
popad |
ret |
endp |
;input: |
; ebx = file size |
; edi = pointer to tedit struct |
;description: |
; ãªæ¨ï ¢ë§ë¢ ¥âáï ¯à¨ ®âªàë⨨ ä ©« |
align 4 |
proc ted_on_open_file |
push eax ;destination |
push ecx ;for cycle |
push edx ;source |
push esi |
stdcall ted_clear,edi,0 ;ç¨á⨬ ¥ ¢áî ¯ ¬ïâì, ¯®â®¬ã çâ® ¨¦¥ ¡ã¤¥¬ ¥¥ § ¯®«ïâì ®¢ë¬¨ ¤ 묨 |
mov eax,ebx |
mov ecx,ebx |
add eax,2 |
ConvertIndexToPointer eax |
mov edx,ted_tex |
add edx,ebx |
push ebx |
@@: |
mov ebx,[edx] |
mov byte [eax],bl |
mov dword [eax+2],ecx |
inc dword [eax+2] |
mov dword [eax+6],ecx |
add dword [eax+6],3 |
;mov byte[eax+1],0 ;col=0 |
mov dword [eax+10],-1 ;tc=-1 |
mov dword [eax+14],0 ;td=0 |
cmp ecx,0 |
je @f |
dec ecx |
dec edx |
sub eax,sizeof.symbol |
jmp @b |
@@: |
pop ebx |
add eax,2 |
mov dword [eax],0 ; first sumbol 'perv=0' |
mov edx,ted_tex |
; begining sumbol 'perv=0' 'next=2' |
mov dword [edx+2],0 |
mov dword [edx+6],2 |
add edx,sizeof.symbol |
mov dword [edx+6],0 ; last sumbol 'next=0' |
mov dword [edx+2],ebx ; last sumbol 'perv=last' |
inc dword [edx+2] |
mov edx,ebx |
inc edx ;2 = rezerv sumbols |
imul edx,sizeof.symbol |
add edx,ted_tex |
mov dword [edx+6],1 ; last sumbol 'next=1' |
@@: ;clear memory, need if before was open big file |
add edx,sizeof.symbol |
cmp edx,ted_tex_end |
jge @f |
mov dword[edx+10],0 |
mov dword[edx+14],0 |
jmp @b |
@@: |
call ted_get_num_lines |
cmp eax,100 |
jge @f |
mov eax,100 |
@@: |
mov esi,ted_scr_w |
mov dword[esi+sb_offs_max_area],eax |
pop esi edx ecx eax |
call ted_text_colored |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
ret |
endp |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
;output: |
; edx = pointer to 'perv' visible symbol struct |
align 4 |
ted_iterat_perv: |
cmp ted_tim_undo,0 |
je .else |
push ebx |
@@: |
call ted_get_text_perv_pos |
cmp edx,ted_tex |
je @f |
call ted_symbol_not_vis |
cmp bl,1 |
je @b |
cmp byte[edx],10 ;¯à®¯ã᪠ᨬ¢®« á ª®¤®¬ 10 |
je @b |
@@: |
pop ebx |
ret |
.else: |
call ted_get_text_perv_pos |
cmp edx,ted_tex |
je .endif |
cmp dword [edx+14],0 |
jne .else |
cmp byte[edx],10 ;¯à®¯ã᪠ᨬ¢®« á ª®¤®¬ 10 |
je .else |
.endif: |
ret |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
;output: |
; edx = pointer to 'next' visible symbol struct |
align 4 |
ted_iterat_next: |
cmp ted_tim_undo,0 |
je .else |
push ebx |
@@: |
call ted_get_text_next_pos |
cmp edx,ted_tex_1 |
jle @f |
call ted_symbol_not_vis |
cmp bl,1 |
je @b |
cmp byte[edx],10 ;¯à®¯ã᪠ᨬ¢®« á ª®¤®¬ 10 |
je @b |
@@: |
pop ebx |
ret |
.else: |
call ted_get_text_next_pos |
cmp edx,ted_tex_1 |
jle .endif |
cmp dword [edx+14],0 |
jne .else |
cmp byte[edx],10 ;¯à®¯ã᪠ᨬ¢®« á ª®¤®¬ 10 |
je .else |
.endif: |
ret |
;input: |
; bl = symbol end of select |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
;description: |
; ©â¨ á«¥¤ãîéãî ¯®§¨æ¨î 㪠§ ®£® ᨬ¢®« |
align 4 |
ted_iterat_next_pos_char: |
@@: |
cmp bl,byte[edx] |
je @f |
cmp edx,ted_tex_1 |
jle @f |
call ted_iterat_next |
jmp @b |
@@: |
call ted_iterat_next |
ret |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
align 4 |
ted_iterat_perv_color_tag: |
@@: |
cmp byte[edx+1],0 |
jne @f |
call ted_iterat_perv |
cmp edx,ted_tex_1 |
jle @f |
jmp @b |
@@: |
ret |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
align 4 |
ted_iterat_next_color_tag: |
@@: |
call ted_iterat_next |
cmp byte[edx+1],0 |
jne @f |
cmp edx,ted_tex_1 |
jle @f |
jmp @b |
@@: |
;call ted_iterat_next |
ret |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
;output: |
; bl = 1 if sumbol not visible |
; (tex[i].td+ted_tim_undo<=ted_tim_ch && tex[i].td) || (tex[i].tc>ted_tim_ch-ted_tim_undo) |
align 4 |
ted_symbol_not_vis: |
push eax |
xor bl,bl |
cmp dword [edx+14],0 |
je @f |
mov eax,[edx+14] ;eax=tex[i].td |
add eax,ted_tim_undo |
cmp eax,ted_tim_ch |
jg @f |
mov bl,1 |
pop eax |
ret |
@@: |
mov eax,ted_tim_ch |
sub eax,ted_tim_undo |
cmp [edx+10],eax |
jle @f |
or bl,1 |
@@: |
pop eax |
ret |
;input: |
; text:dword - pointer to text string |
; add_opt:dword - options |
align 4 |
proc ted_text_add, edit:dword, text:dword, t_len:dword, add_opt:dword |
locals |
new_spc dd ? ;count new spaces |
new_lin dd ? ;count new lines |
endl |
;¨á¯®«ì§®¢ ¨¥ ॣ¨áâ஢ ¢ãâਠäãªæ¨¨: |
;eax - ¯®§¨æ¨ï ¤«ï ¢áâ ¢ª¨ ⥪áâ |
;ebx - ¤«ï ¢à¥¬¥ëå 㦤, ¤«¨ ¢áâ ¢«ï¥¬®£® ⥪áâ |
;ecx - ¤«ï ¢à¥¬¥ëå 㦤 |
;edx - 㪠§ ⥫ì áâàãªâãàã ᨬ¢®« |
pushad |
mov edi,dword[edit] |
mov esi,dword[text] |
call ted_get_pos_by_cursor |
call ted_get_text_perv_pos |
call ted_get_text_arr_index ;eax=po_t |
mov dword[new_spc],0 |
cmp ted_gp_opt,2 |
je @f |
push eax ;c_sp=cur[cn].x+Scroller->XPos-StrLen(cur[cn].y+Scroller->YPos); |
mov eax,ted_scr_h |
mov eax,dword[eax+sb_offs_position] |
add eax,ted_cur_x ;eax - ®¬¥à ᨬ¢®« |
mov dword[new_spc],eax |
mov eax,ted_scr_w |
mov eax,dword[eax+sb_offs_position] |
add eax,ted_cur_y ;eax - ®¬¥à áâப¨ |
call ted_strlen ;ebx = line len |
sub dword[new_spc],ebx ;®â ¯®§¨æ¨¨ ªãàá®à ®â¨¬ ¥¬ ¤«¨ã áâப¨, 㧠¥¬ ª®««¨ç¥á⢮ ¤®¡ ¢«ï¥¬ëå ¯à®¡¥«®¢ |
pop eax |
@@: |
mov ebx,dword[t_len] |
mov dword[new_lin],0 |
cmp ted_gp_opt,0 |
jne @f |
push eax |
mov eax,ted_scr_w |
mov eax,dword[eax+sb_offs_position] |
add eax,ted_cur_y |
inc eax |
mov dword[new_lin],eax |
call ted_get_num_lines |
sub dword[new_lin],eax |
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 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 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; |
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 |
@@: |
call ted_text_colored |
popad |
ret |
endp |
;input: |
; ecx = position to free insert cell |
; edx = pointer to sumbol, when insert |
; esi = pointer to added symbol |
; edi = pointer to tedit struct |
;output: |
; ecx = position to inserted cell |
align 4 |
ted_char_add: |
.loop_b: |
cmp ecx,ted_tex_end |
jge .end_f |
cmp dword[ecx+10],0 |
jne @f |
cmp dword[ecx+14],0 |
je .loop_e |
@@: |
add ecx,sizeof.symbol |
jmp .loop_b |
.loop_e: |
push eax ebx |
mov eax,ted_tim_ch |
mov dword[ecx+10],eax |
mov al,byte[esi] |
mov byte[ecx],al |
call ted_get_text_arr_index ; *** eax=pos *** |
mov [ecx+2],eax ;tex[i].perv=pos; |
m2m dword[ecx+6],dword[edx+6] ;tex[i].next=tex[pos].next; |
push edx |
mov edx,ecx |
call ted_get_text_arr_index ; *** eax=i *** |
pop edx |
mov [edx+6],eax ;tex[pos].next=i; // áá뫪¨ ¯¥à¥ ¯à ¢«ï¥¬ |
mov ebx,[ecx+6] |
ConvertIndexToPointer ebx |
mov [ebx+2],eax ;tex[tex[i].next].perv=i; // ... |
pop ebx eax |
.end_f: |
call ted_text_colored |
ret |
;input: |
; conv_table = pointert to convert table |
; edi = pointer to tedit struct |
;output: |
; esi = count converted symbols |
;description: |
; ãªæ¨ï ¨á¯®«ì§ã¥âáï ¤«ï ᬥë ॣ¨áâà ¢ë¡à ëå ᨬ¢®«®¢ |
align 4 |
proc ted_convert_sel_text |
locals |
conv_cou dd ? |
endl |
mov dword[conv_cou],0 |
pushad |
call ted_is_select |
cmp al,0 |
je .end_f |
call ted_set_undo |
call ted_sel_normalize |
mov esi,ted_seln_x0 |
mov ecx,ted_seln_y0 |
call ted_get_pos_by_coords |
mov eax,edx |
mov esi,ted_seln_x1 |
mov ecx,ted_seln_y1 |
call ted_get_pos_by_coords |
;call ted_get_text_perv_pos |
mov ebx,edx |
cmp eax,ebx |
je .end_f |
inc ted_tim_ch |
mov edx,eax ;i=p0; |
mov ecx,2 |
ConvertIndexToPointer ecx |
@@: |
mov esi,[edx] |
and esi,0xff |
add esi,[conv_table] ;EvUpper |
cmp byte [esi],0 |
je .no_change |
m2m dword [edx+14],ted_tim_ch |
call ted_char_add ;b_pos=ted_char_add(tex[i].c^32,i,false,b_pos); |
call ted_get_text_next_pos ;go to added symbol |
inc dword[conv_cou] |
.no_change: |
call ted_iterat_next |
cmp edx,ted_tex |
je @f |
cmp edx,ebx |
je @f |
jmp @b |
@@: |
cmp dword[conv_cou],0 |
jne @f |
dec ted_tim_ch |
@@: |
.end_f: |
popad |
mov esi,dword[conv_cou] |
ret |
endp |
;output: |
; bl = 0 - no delete |
; bl = 1 - delete |
align 4 |
proc ted_text_del, edit:dword, del_opt:dword |
push cx edx edi |
mov edi,dword[edit] |
mov ebx,dword[del_opt] |
xor cl,cl |
test ebx,ted_opt_ed_move_cursor |
jz @f |
call ted_cur_move_left |
cmp dl,0 |
je .no_del |
@@: |
call ted_get_pos_by_cursor |
cmp ted_gp_opt,1 |
je .no_del |
test ebx,ted_opt_ed_change_time |
jz @f |
inc ted_tim_ch |
@@: |
m2m dword [edx+14], ted_tim_ch |
mov cl,1 |
.no_del: |
mov bl,cl |
pop edi edx cx |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
;output: |
; al = 1 if delete |
;description: |
; ãªæ¨ï 㤠«ï¥â ¢ë¤¥«¥ë© ⥪áâ |
align 4 |
proc ted_sel_text_del, del_opt:dword |
push ebx ecx edx esi |
call ted_is_select |
cmp al,0 |
je .end_f |
call ted_sel_normalize |
mov esi,ted_seln_x1 |
mov ecx,ted_seln_y1 |
call ted_get_pos_by_coords |
mov ebx,edx |
mov esi,ted_seln_x0 |
mov ecx,ted_seln_y0 |
call ted_get_pos_by_coords |
test dword[del_opt],ted_opt_ed_change_time |
jz @f |
inc ted_tim_ch |
@@: |
cmp edx,ted_tex |
je @f |
cmp edx,ebx ;if(i==te)break; |
je @f |
m2m dword[edx+14],ted_tim_ch |
mov esi,ted_opt_ed_change_time |
not esi |
and dword[del_opt],esi ;n_tim=false; |
call ted_iterat_next |
jmp @b |
@@: |
test dword[del_opt],ted_opt_ed_change_time |
jz @f |
dec ted_tim_ch |
xor al,al |
@@: |
test dword[del_opt],ted_opt_ed_change_time |
jnz @f |
mov ecx,ted_seln_x0 |
mov edx,ted_seln_y0 |
call ted_go_to_pos |
mov ted_sel_x0,0 |
mov ted_sel_y0,0 |
mov ted_sel_x1,0 |
mov ted_sel_y1,0 |
@@: |
.end_f: |
pop esi edx ecx ebx |
ret |
endp |
;input: |
; eax = pointer to begin select |
; ebx = pointer to end select |
; edi = pointer to tedit struct |
align 4 |
ted_revers: |
cmp eax,ebx |
jne @f |
ret |
@@: |
push ecx edx |
mov edx,ted_tex_1 |
cmp edx,ebx ;if(p1==1)p1=tex[1].perv; |
jne @f |
call ted_get_text_perv_pos |
mov ebx,edx |
@@: |
push esi |
mov edx,[eax+2] ; *** edx = tex[p0].perv *** |
ConvertIndexToPointer edx |
add edx,6 |
mov ecx,[edx] ;tmp = tex[tex[p0].perv].next; |
mov esi,[ebx+6] ; *** esi = tex[p1].next *** |
ConvertIndexToPointer esi |
add esi,2 |
m2m dword[edx],dword[esi] ;tex[tex[p0].perv].next = tex[tex[p1].next].perv; |
mov [esi],ecx ;tex[tex[p1].next].perv = tmp; |
pop esi |
mov ecx,[eax+2] ;tmp = tex[p0].perv; |
m2m dword[eax+2],dword[ebx+6] ;tex[p0].perv = tex[p1].next; |
mov [ebx+6],ecx ;tex[p1].next = tmp; |
mov edx,eax ;i=p0; |
@@: |
mov ecx,[edx+6] ;tmp = tex[i].next; |
m2m dword[edx+6],dword[edx+2] ;tex[i].next = tex[i].perv; |
mov [edx+2],ecx ;tex[i].perv = tmp; |
cmp edx,ebx ;if(i==p1)break; |
je @f |
; --- |
;cmp edx,ted_tex |
;je @f |
; --- |
mov edx,ecx ;i = tmp; |
ConvertIndexToPointer edx |
jmp @b |
@@: |
pop edx ecx |
call ted_text_colored |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; dl = 0 not move |
; dl = 2 if move up |
; dl = 8 if scroll move up |
align 4 |
ted_cur_move_up: |
cmp ted_cur_y,0 |
je @f |
dec ted_cur_y |
mov dl,2 |
ret |
@@: |
push eax |
mov eax,ted_scr_w |
cmp dword[eax+sb_offs_position],0 |
je @f |
dec dword[eax+sb_offs_position] |
mov dl,8 |
jmp .ret_f |
@@: |
mov dl,0 |
.ret_f: |
pop eax |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; dl = 0 not move |
; dl = 2 if move down |
; dl = 8 if scroll move down |
align 4 |
ted_cur_move_down: |
push eax ebx |
mov ebx,ted_scr_w |
mov dl,0 |
mov eax,dword[ebx+sb_offs_cur_area] |
dec eax |
cmp ted_cur_y,eax |
jge @f |
inc ted_cur_y |
mov dl,2 |
jmp .ret_f |
@@: |
mov eax,ted_cur_y |
add eax,dword[ebx+sb_offs_position] |
inc eax |
cmp dword[ebx+sb_offs_max_area],eax |
jle @f |
inc dword[ebx+sb_offs_position] |
mov dl,8 |
@@: |
.ret_f: |
pop ebx eax |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; dl = 0 not move |
; dl = 1 if move up |
align 4 |
ted_cur_move_page_up: |
push eax ebx |
mov ebx,ted_scr_w |
mov eax,dword[ebx+sb_offs_cur_area] |
xor dl,dl |
cmp eax,dword[ebx+sb_offs_position] |
jg @f |
sub dword[ebx+sb_offs_position],eax |
mov dl,1 |
@@: |
cmp dword[ebx+sb_offs_position],0 |
je @f |
cmp dl,1 |
je @f |
mov dword[ebx+sb_offs_position],0 |
mov dl,1 |
@@: |
pop ebx eax |
ret |
;input: |
; edi = pointer to tedit struct |
align 4 |
ted_cur_move_page_down: |
push eax ebx ecx |
mov ecx,ted_scr_w |
xor dl,dl |
mov eax,dword[ecx+sb_offs_max_area] |
sub eax,dword[ecx+sb_offs_cur_area] |
cmp dword[ecx+sb_offs_position],eax |
jge @f |
mov ebx,dword[ecx+sb_offs_cur_area] |
add dword[ecx+sb_offs_position],ebx |
mov dl,1 |
mov dword[ecx+sb_offs_redraw],1 |
cmp dword[ecx+sb_offs_position],eax |
jle @f |
mov dword[ecx+sb_offs_position],eax |
@@: |
pop ecx ebx eax |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; dl = 0 not move |
; dl = 1 if move left |
; dl = 3 if move left and up |
; dl = 8 if scroll move up |
align 4 |
ted_cur_move_left: |
cmp ted_cur_x,0 |
je @f |
dec ted_cur_x |
mov dl,1 |
ret |
@@: |
push eax |
mov eax,ted_scr_h |
cmp dword[eax+sb_offs_position],0 |
je @f |
dec dword[eax+sb_offs_position] |
mov dl,8 |
jmp .ret_f |
@@: |
cmp ted_cur_y,0 |
jne @f |
mov eax,ted_scr_w |
mov dl,0 |
cmp dword[eax+sb_offs_position],0 |
je .ret_f |
dec dword[eax+sb_offs_position] |
call ted_scroll_set_redraw |
call ted_cur_move_x_last_char |
mov dl,8 |
jmp .ret_f |
@@: |
cmp ted_cur_y,0 |
je @f |
dec ted_cur_y |
call ted_cur_move_x_last_char |
cmp dl,8 |
je .ret_f |
mov dl,3 |
jmp .ret_f |
@@: |
mov dl,0 |
.ret_f: |
pop eax |
ret |
;input: |
; edi = pointer to tedit struct |
align 4 |
ted_cur_move_right: |
push eax ebx |
mov eax,ted_scr_h |
xor dl,dl |
mov ebx,dword[eax+sb_offs_cur_area] |
cmp ted_cur_x,ebx |
jge @f |
inc ted_cur_x |
mov dl,1 |
jmp .ret_f |
@@: |
inc dword[eax+sb_offs_position] |
mov dl,8 |
.ret_f: |
pop ebx eax |
ret |
;input: |
; edi = pointer to tedit struct |
align 4 |
ted_cur_move_x_last_char: |
;[hScr.position] |
;[hScr.cur_area] |
;dl-??? |
push eax ebx ecx |
mov eax,ted_cur_y |
mov ecx,ted_scr_w |
add eax,dword[ecx+sb_offs_position] |
call ted_strlen |
xor dl,dl |
mov ecx,ted_scr_h |
cmp ebx,dword[ecx+sb_offs_position] |
jge @f |
mov dl,8 |
mov dword[ecx+sb_offs_position],ebx |
@@: |
sub ebx,dword[ecx+sb_offs_position] |
cmp ebx,dword[ecx+sb_offs_cur_area] |
jle @f ; b---[---]---e |
add dword[ecx+sb_offs_position],ebx |
mov ebx,dword[ecx+sb_offs_cur_area] |
sub dword[ecx+sb_offs_position],ebx |
mov dl,8 |
@@: |
mov ted_cur_x,ebx |
pop ecx ebx eax |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; dl = 0 not move |
; dl = 1 move cursor |
; dl = 8 move cursor and scroll |
align 4 |
ted_cur_move_x_first_char: |
xor dl,dl |
cmp ted_cur_x,0 |
je @f |
mov ted_cur_x,0 |
mov dl,1 |
@@: |
push eax |
mov eax,ted_scr_h |
cmp dword[eax+sb_offs_position],0 |
je @f |
mov dword[eax+sb_offs_position],0 |
mov dl,8 |
@@: |
pop eax |
ret |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
;output: |
; eax = array index |
align 4 |
ted_get_text_arr_index: |
push ecx edx |
mov eax,edx |
sub eax,ted_tex |
xor edx,edx |
mov ecx,sizeof.symbol |
div ecx |
pop edx ecx |
ret |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to tedit struct |
;output: |
; edx = pointer to 'perv' struct |
align 4 |
ted_get_text_perv_pos: |
mov edx,dword[edx+2] |
imul edx,sizeof.symbol |
add edx,ted_tex |
ret |
;input: |
; edx = pointer to symbol struct |
;output: |
; edx = pointer to 'next' symbol struct |
align 4 |
ted_get_text_next_pos: |
mov edx,dword[edx+6] |
imul edx,sizeof.symbol |
add edx,ted_tex |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; edx = symbol under cursor |
; ted_gp_opt = 1,2 |
; edx = tex[1].perv if error |
; ted_gp_opt = 0 |
align 4 |
ted_get_pos_by_cursor: |
push eax ecx esi |
mov esi,ted_cur_x |
mov eax,ted_scr_h |
add esi,dword[eax+sb_offs_position] |
mov ecx,ted_cur_y |
mov eax,ted_scr_w |
add ecx,dword[eax+sb_offs_position] |
call ted_get_pos_by_coords |
pop esi ecx eax |
ret |
;input: |
; esi = XPos |
; ecx = YPos |
; edi = pointer to tedit struct |
;output: |
; edx = symbol under cursor |
; ted_gp_opt = 1 if found text line |
; ted_gp_opt = 2 if found text line and column |
; edx = tex[1] if error |
; ted_gp_opt = 0 if text no found |
align 4 |
ted_get_pos_by_coords: |
push eax ;Row |
push ebx ;Col |
xor eax,eax |
xor ebx,ebx |
mov ted_gp_opt,0 |
mov edx,ted_tex |
@@: |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f |
cmp ebx,esi |
jne .u1_0 ;Col <> ted_cur_x |
mov ted_gp_opt,1 |
cmp eax,ecx |
jge @f ; Row >= ted_cur_y |
.u1_0: |
mov ted_gp_opt,0 |
inc ebx |
cmp byte [edx],13 |
jne @b |
cmp eax,ecx |
jge @f ; Row >= ted_cur_y |
inc eax |
xor ebx,ebx |
jmp @b |
@@: |
cmp eax,ecx |
jne @f ; Row = ted_cur_y |
inc ted_gp_opt |
@@: |
cmp ted_gp_opt,0 |
jne @f |
mov edx,ted_tex_1 |
;call ted_get_text_perv_pos |
@@: |
pop ebx eax |
ret |
;input: |
; eax = Row |
; edi = pointer to tedit struct |
;output: |
; ebx = str len |
align 4 |
ted_strlen: |
push edx ecx |
;ecx = Row, from cycle |
xor ebx,ebx |
xor ecx,ecx |
mov edx,ted_tex |
@@: |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f |
inc ebx |
cmp byte [edx],13 |
jne @b |
dec ebx ;lenght minus 1 sumbol to paragraph |
cmp eax,ecx |
je @f |
xor ebx,ebx |
inc ecx |
jmp @b |
@@: |
cmp eax,ecx |
je @f |
xor ebx,ebx |
@@: |
pop ecx edx |
ret |
;input: |
; edx = symbol position |
; edi = pointer to tedit struct |
;output: |
; eax = number of line |
; ebx = symbol position in line |
align 4 |
ted_get_text_coords: |
push edx |
xor eax,eax |
xor ebx,ebx |
@@: |
call ted_iterat_perv |
cmp eax,0 |
jne .no_col_mov |
inc ebx |
.no_col_mov: |
cmp edx,ted_tex_1 |
jle @f |
cmp byte [edx],13 |
jne @b |
inc eax |
jmp @b |
@@: |
dec ebx |
pop edx |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; eax = num lines |
align 4 |
ted_get_num_lines: |
push edx |
mov eax,1 |
mov edx,ted_tex |
@@: |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f |
cmp byte [edx],13 |
jne @b |
inc eax |
jmp @b |
@@: |
;... |
;dec eax |
pop edx |
ret |
;input: |
; edi = pointer to tedit struct |
;description: |
; ®â¬¥ï¥â ®â¬¥¥ë¥ ¤¥©á⢨ï, ¯¥à¥¤ ¨§¬¥¥¨¥¬ ¤®ªã¬¥â |
align 4 |
proc ted_set_undo |
mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
cmp ted_tim_undo,1 |
jl .no_work |
push eax ebx edx |
mov edx,ted_tex |
call ted_get_text_next_pos ;long i=tex[0].next; |
mov eax,ted_tim_undo |
sub ted_tim_ch,eax ;ted_tim_ch-=ted_tim_undo; |
mov eax,ted_tim_ch |
cmp ted_tim_ls,eax ;if(ted_tim_ls>ted_tim_ch) |
jle @f |
mov ted_tim_ls,0 |
@@: |
cmp edx,ted_tex |
je @f |
;if(tex[i].tc>ted_tim_ch){ // ¥á«¨ ᮧ¤ ¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
cmp [edx+10],eax |
jle .no_u1 |
mov dword [edx+10],0 |
mov dword [edx+14],0 |
mov ebx,[edx+2] |
imul ebx,sizeof.symbol |
add ebx,ted_tex;.next |
m2m dword [ebx+6],dword [edx+6] ;tex[tex[i].perv].next=tex[i].next; |
mov ebx,[edx+6] |
imul ebx,sizeof.symbol |
add ebx,ted_tex;.perv |
m2m dword [ebx+2],dword [edx+2] ;tex[tex[i].next].perv=tex[i].perv; |
.no_u1: |
;else if(tex[i].td>ted_tim_ch) tex[i].td=0; // ¥á«¨ 㤠«¥¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
cmp [edx+14],eax |
jle .no_u2 |
mov dword [edx+14],0 |
.no_u2: |
call ted_get_text_next_pos |
jmp @b |
@@: |
mov ted_tim_undo,0 |
mov eax,ted_tim_co |
cmp ted_tim_ch,eax |
jge @f |
mov ted_tim_co,0 |
@@: |
pop edx ebx eax |
.no_work: |
ret |
endp |
;input: |
; ecx = Col |
; edx = Row |
; edi = pointer to tedit struct |
align 4 |
ted_go_to_pos: |
push eax |
mov eax,ted_scr_w |
mov ted_cur_x,ecx |
sub edx,dword[eax+sb_offs_position] |
cmp edx,dword[eax+sb_offs_cur_area] ;ted_cur_y > [.cur_area] |
jl @f |
push ebx |
mov ebx,edx |
sub ebx,dword[eax+sb_offs_cur_area] |
inc ebx |
add dword[eax+sb_offs_position],ebx |
sub edx,ebx |
pop ebx |
; ??? redrav |
@@: |
mov ted_cur_y,edx |
pop eax |
ret |
;input: |
; edi = pointer to tedit struct |
align 4 |
ted_text_colored: |
push eax edx |
mov eax,ted_tim_ch |
sub eax,ted_tim_undo |
mov ted_tim_co,eax |
mov edx,ted_tex |
@@: |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f |
mov byte[edx+1],0 |
jmp @b |
@@: |
cmp ted_key_words_count,1 |
jl .no_colors |
mov edx,ted_tex |
@@: |
call ted_text_find_sel_color |
cmp edx,ted_tex_1 |
jle .no_colors |
jmp @b |
.no_colors: |
pop edx eax |
ret |
;input: |
; edx = pointer to start symbol |
; edi = pointer to tedit struct |
;output: |
; edx = pointer to next symbol |
;description: |
; ãªæ¨ï ¤«ï ¯®¨áª ¨ ¢ë¤¥«¥¨ï ¯®¤á¢¥ç¥ëå á«®¢ |
align 4 |
proc ted_text_find_sel_color |
locals |
begPos dd ? ; ç «ì ï ¯®§¨æ¨ï |
endPos dd ? ;ª®¥ç ï ¯®§¨æ¨ï |
find db ? ; ©¤¥® / ¥ ©¤¥® |
f_color db ? ;¨¤¥ªá 梥⠩¤¥®£® á«®¢ |
endl |
push eax ebx ecx esi |
;eax = word_n ⥪ã騩 ®¬¥à (¯®§¨æ¨ï) ¯à®¢¥à塞®£® á«®¢ ¢ ᯨ᪥ |
;ebx = ¤«ï à §ëå 楫¥© |
;ecx = l_pos ¯®á«¥¤¨© ®¬¥à (¯®§¨æ¨ï) ¯®¤å®¤ï饣® á«®¢ ¢ ᯨ᪥ |
;esi = ¤«ï à §ëå 楫¥©, ®¬¥à ¯à®¢¥à塞®£® ᨬ¢®« ¢ á«®¢¥ |
mov dword[begPos],1 |
mov dword[endPos],1 |
mov byte[find],0 |
mov byte[f_color],1 |
@@: |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f |
xor eax,eax |
mov al,byte[edx] |
shl ax,2 ;eax*=4 |
add eax,ted_arr_key_pos |
mov eax,dword[eax] |
cmp eax,0 |
jl @b ;if( (word_n=ted_arr_key_pos[(unsigned char)tex[i].c])>-1 ){ |
mov ecx,eax |
;while(l_pos<ted_key_words_count && Col[l_pos].Text[0]==Col[word_n].Text[0]) |
.wh_1b: |
cmp ecx,ted_key_words_count |
jge .wh_1e |
ColToIndexOffset ecx,esi |
mov bl,byte[esi] |
ColToIndexOffset eax,esi |
cmp bl,byte[esi] |
jne .wh_1e |
inc ecx |
jmp .wh_1b |
.wh_1e: |
mov dword[begPos],edx ;bP=i; |
mov esi,1 |
.wh_2b: ;while(1){ |
call ted_iterat_next |
;while(l_pos>word_n && Col[l_pos-1].Text[pos]!=tex[i].c) |
.wh_3b: |
cmp ecx,eax |
jle .wh_3e |
dec ecx |
ColToIndexOffset ecx,ebx |
inc ecx |
;cmp byte[ebx+esi],byte[edx] |
mov bl,byte[ebx+esi] |
cmp bl,byte[edx] |
je .wh_3e |
dec ecx |
jmp .wh_3b |
.wh_3e: |
ColToIndexOffset eax,ebx |
cmp byte[ebx+esi],0 |
jne .if_0 ;if(Col[word_n].Text[pos]==0){ |
mov dword[endPos],edx ;eP=i; |
ColToIndexOffset eax,ebx |
mov bl,byte[ebx+MAX_COLOR_WORD_LEN+6] |
mov byte[f_color],bl ;f_color=Col[word_n].color; |
mov byte[find],1 |
ColToIndexOffset eax,ebx ;... ebx = Col[word_n] |
mov bl,byte[ebx+MAX_COLOR_WORD_LEN+4] |
cmp bl,0 ;if(Col[word_n].wwo) |
je .if_2n |
push edx |
mov edx,dword[begPos] |
call ted_iterat_perv |
btr bx,0 ;1-1 |
jae .if_3e ;if(Col[word_n].wwo&1) |
;u1= !(isalnum(cont_s)||cont_s=='_') |
call isalnum |
jae .if_3e |
mov byte[find],0 |
.if_3e: |
btr bx,3 ;4-1 |
jae .if_4e ;if(Col[word_n].wwo&8) |
;u1= !isalpha(cont_s); |
call isalpha |
jae .if_4e |
mov byte[find],0 |
.if_4e: |
mov edx,dword[endPos] |
; call ted_iterat_next |
btr bx,1 ;2-1 |
jae .if_5e ;if(Col[word_n].wwo&2) |
;u1= !(isalnum(cont_s)||cont_s=='_') |
call isalnum |
jae .if_5e |
mov byte[find],0 |
.if_5e: |
btr bx,4 ;5-1 |
jae .if_6e ;if(Col[word_n].wwo&16) |
;u1= !isalpha(cont_s); |
call isalpha |
jae .if_6e |
mov byte[find],0 |
.if_6e: |
btr bx,2 ;3-1 |
jae .if_7e ;if(Col[word_n].wwo&4) |
ColToIndexOffset eax,ebx |
mov bl,byte[ebx+MAX_COLOR_WORD_LEN+5] |
call ted_iterat_next_pos_char |
cmp edx,ted_tex_1 |
jle .if_7e |
mov dword[endPos],edx |
.if_7e: |
pop edx |
.if_2n: |
; if(i!=1){ // ¥ ª®¥æ ¤®ªã¬¥â |
; cont_s=tex[eP].c; |
; if(Col[word_n].wwo&2) u2= !(isalnum(cont_s)||cont_s=='_'); // ¥ ¡ãª¢.-ç¨á«. ᨬ¢®« |
; if(u2 && Col[word_n].wwo&16) u2= !isalpha(cont_s); // ¥ ç¨á«. ᨬ¢®« |
; if(Col[word_n].wwo&4) eP=ted_iterat_next_pos_char(eP,Col[word_n].endc); |
cmp eax,ecx |
je .wh_2e ;if(word_n==l_pos) break; // do double - ¥á«¨ á«®¢® â®ç® ¯®á«¥¤¥¥ |
.if_0: |
cmp edx,ted_tex_1 |
jle .wh_2e ;if(i==1) break; |
;while(l_pos>word_n && Col[word_n].Text[pos]!=tex[i].c) |
.wh_4b: |
cmp ecx,eax |
jle .wh_4e |
ColToIndexOffset eax,ebx |
;cmp byte[ebx+esi],byte[edx] |
mov bl,byte[ebx+esi] |
cmp bl,byte[edx] |
je .wh_4e |
inc eax |
jmp .wh_4b |
.wh_4e: |
cmp eax,ecx |
je .wh_2e;if(word_n==l_pos) break; |
inc esi ;pos++; |
jmp .wh_2b |
.wh_2e: |
cmp byte[find],1 ;if(fnd)break; |
je @f |
mov edx,dword[begPos];i=bP; |
jmp @b |
@@: |
cmp byte[find],1 |
jne .if_1e ;if(fnd){ // ¢ë¤¥«¥¨¥ ©¤¥®£® ⥪áâ |
; if(!mode_sf1 || (mode_sf1 && strlen(Col[word_n].f1->c_str())>0)){ |
mov eax,dword[begPos] |
mov bl,byte[f_color] |
mov byte[eax+1],bl ;tex[bP].col=f_color; |
mov eax,dword[endPos] |
mov byte[eax+1],0xff ;tex[eP].col=255; |
; return ItPoPerv(eP); // ¢®§¢à é ¥¬ ¯®§¨æ¨î ª®æ ¢å®¦¤¥¨ï |
mov edx,dword[endPos] |
call ted_get_text_perv_pos |
jmp @f |
.if_1e: |
mov edx,ted_tex |
@@: |
pop esi ecx ebx eax |
ret |
endp |
;input: |
; edx = pointer to char (byte) |
;output: |
; cf=1 if symbol is... |
align 4 |
tab_all_num db 0,0,0,0,0,0,11111111b,11b,11111110b,0xff,0xff,111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0;,0,0,0,0,0,0,0,0 - tab_alpha_0,0,0,0,0,0,0,0 |
tab_alpha db 0,0,0,0,0,0,0,0,11111110b,0xff,0xff,111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
align 4 |
isalnum: |
push eax ebx |
mov al,byte[edx] ;al=offset |
shr al,3 |
and eax,11111b |
lea ebx,[tab_all_num] |
add ebx,eax |
mov ah,byte[ebx] |
mov al,byte[edx] ;al=bit |
and ax,111b |
mov bx,word[ebx] |
btr bx,ax |
pop ebx eax |
ret |
align 4 |
isalpha: |
push eax ebx |
mov al,byte[edx] ;al=offset |
shr al,3 |
and eax,11111b |
lea ebx,[tab_alpha] |
add ebx,eax |
mov ah,byte[ebx] |
mov al,byte[edx] ;al=bit |
and ax,111b |
mov bx,word[ebx] |
btr bx,ax |
pop ebx eax |
ret |
align 4 |
proc ted_show_help_f1, edit:dword |
push eax edx edi |
mov edi,dword[edit] |
call ted_get_pos_by_cursor |
push edx |
call ted_iterat_next_color_tag |
mov eax,edx |
pop edx |
call ted_iterat_perv_color_tag |
cmp eax,ted_tex |
jle @f |
cmp edx,ted_tex_1 |
jle @f |
stdcall ted_find_help_id,eax |
@@: |
;call ted_draw_main_cursor |
call ted_draw_help_f1 |
pop edi edx eax |
ret |
endp |
;input: |
; edx = position begin 'symbol' struct |
; edi = pointer to tedit struct |
; end_pos = position end 'symbol' struct |
align 4 |
proc ted_find_help_id, end_pos:dword |
; ecx = word_n |
; ebx = l_pos |
mov ted_help_id,-1 |
push ebx ecx |
xor ebx,ebx |
mov bl,byte[edx] |
shl bx,2 ;ebx*=4 |
add ebx,ted_arr_key_pos |
mov ecx,dword[ebx] |
cmp ecx,0 |
jl .if_0e ;if( (word_n=ted_arr_key_pos[(unsigned char)tf[0]])>-1 ){ |
push esi eax |
mov ebx,ecx ;l_pos=word_n; |
ColToIndexOffset ecx,esi |
push cx |
mov cl,byte[esi] |
@@: |
cmp ebx,ted_key_words_count ;while(l_pos<ted_key_words_count) |
jge @f |
;ColToIndexOffset ecx,esi |
ColToIndexOffset ebx,eax |
cmp cl,byte[eax] ;&& Col[l_pos].Text[0]==Col[word_n].Text[0]) |
jne @f |
inc ebx ;l_pos++; |
jmp @b |
@@: |
pop cx |
call ted_iterat_next ;pos=1; |
mov esi,1 |
@@: |
push dx |
push word[edx] |
pop dx |
.wh_0b: |
cmp ebx,ecx ;while(l_pos>word_n |
jle .wh_0e |
dec ebx |
ColToIndexOffset ebx,eax |
inc ebx |
cmp byte[eax+esi],dl ;&& Col[l_pos-1].Text[pos]!=tf[i]) |
je .wh_0e |
dec ebx ;l_pos--; |
jmp .wh_0b |
.wh_0e: |
.wh_1b: |
cmp ebx,ecx ;while(l_pos>word_n |
jle .wh_1e |
ColToIndexOffset ecx,eax |
cmp byte[eax+esi],dl |
je .wh_1e |
inc ecx ;word_n++; |
jmp .wh_1b |
.wh_1e: |
pop dx |
cmp ecx,ebx ;if(word_n==l_pos) break; |
je @f |
call ted_iterat_next ;pos++; |
cmp edx,dword[end_pos] ;for(...;i<strlen;...) |
je @f ;jge |
inc esi |
jmp @b |
@@: |
pop eax esi |
mov ted_help_id,ecx |
;return word_n; |
.if_0e: |
pop ecx ebx |
ret |
endp |
;output: |
; eax = ª®¤ ®è¨¡ª¨ |
; ebx = ª®««¨ç¥á⢮ ¯à®ç¨â ëå ¡ ©â |
align 4 |
proc ted_open_file, edit:dword, file:dword, f_name:dword ;äãªæ¨ï ®âªàëâ¨ï ä ©« |
push edi |
mov edi,dword[edit] |
mov eax,70 |
mov ebx,dword[file] |
mov dword[ebx], 0 |
mov dword[ebx+4], 0 |
mov dword[ebx+8], 0 |
m2m dword[ebx+12], ted_max_chars ;ç¨á«® ¡ ©â, ª®â®àë¥ ¬®£ãâ ¡ëâì áç¨â ë á ä ©« |
m2m dword[ebx+16], ted_tex |
mov byte[ebx+20], 0 |
push dword[f_name] |
pop dword[ebx+21] |
int 0x40 |
cmp eax,0 |
je @f |
cmp eax,6 |
je @f |
jmp .ret_f |
@@: |
cmp ebx,-1 |
je .ret_f |
;if open file |
call ted_on_open_file |
.ret_f: |
pop edi |
ret |
endp |
align 4 |
proc ted_but_select_word, edit:dword |
pushad |
mov edi,dword[edit] |
call ted_get_pos_by_cursor |
push edx |
call ted_iterat_perv_color_tag |
cmp edx,ted_tex_1 |
jle @f |
call ted_get_text_coords |
mov ted_sel_x0,ebx |
mov ted_sel_y0,eax |
@@: |
pop edx |
call ted_iterat_next_color_tag |
cmp edx,ted_tex_1 |
jle @f |
call ted_get_text_coords |
mov ted_sel_x1,ebx |
mov ted_sel_y1,eax |
@@: |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
stdcall ted_draw,edi |
popad |
ret |
endp |
align 4 |
proc ted_but_cut, edit:dword |
push edi |
mov edi,dword[edit] |
stdcall ted_but_copy,edi |
call ted_set_undo |
stdcall ted_sel_text_del,ted_opt_ed_change_time |
cmp al,1 |
jne @f |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
pop edi |
ret |
endp |
;output: |
; al = 1 if copy text |
align 4 |
proc ted_but_copy, edit:dword |
pushad |
mov edi,dword[edit] |
call ted_is_select |
cmp al,0 |
je .end_f ;if not selected text |
call ted_sel_normalize |
mov esi,ted_seln_x1 |
mov ecx,ted_seln_y1 |
call ted_get_pos_by_coords |
mov ebx,edx |
mov esi,ted_seln_x0 |
mov ecx,ted_seln_y0 |
call ted_get_pos_by_coords |
mov esi,ebx |
xor ecx,ecx |
mov ebx,ted_buffer |
;mov edx,ted_tex |
@@: |
cmp edx,ted_tex_1 ;end of file |
jle @f |
cmp edx,esi ;end of select |
je @f |
inc ecx |
cmp ecx,ted_buffer_size ;owerflow bufer |
je @f |
mov al,byte[edx] |
mov byte[ebx],al |
inc ebx |
call ted_iterat_next |
jmp @b |
@@: |
add ecx,ted_buffer |
mov byte[ebx],0 |
cmp ecx,0 |
je .end_f |
call ted_draw_buffer |
cmp ted_fun_draw_panel_buttons,0 |
je .end_f |
call ted_fun_draw_panel_buttons |
.end_f: |
popad |
ret |
endp |
align 4 |
proc ted_but_paste, edit:dword |
push eax ebx esi edi |
mov edi,dword[edit] |
mov esi,ted_buffer |
call tl_strlen |
cmp eax,1 |
jl @f |
mov esi,eax |
call ted_set_undo |
mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
stdcall ted_sel_text_del,ebx |
cmp al,1 |
jne .del |
mov ebx,ted_opt_ed_move_cursor |
.del: |
stdcall ted_text_add,edi,ted_buffer,esi,ebx |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
pop edi esi ebx eax |
ret |
endp |
align 4 |
proc ted_but_sumb_upper, edit:dword |
push edi esi |
mov edi,dword[edit] |
mov [conv_table],EvUpper |
call ted_convert_sel_text |
cmp esi,0 |
je @f |
stdcall ted_draw,edi |
@@: |
pop esi edi |
ret |
endp |
align 4 |
proc ted_but_sumb_lover, edit:dword |
push edi esi |
mov edi,dword[edit] |
mov [conv_table],EvLover |
call ted_convert_sel_text |
cmp esi,0 |
je @f |
stdcall ted_draw,edi |
@@: |
pop esi edi |
ret |
endp |
align 4 |
proc ted_but_reverse, edit:dword |
push eax ebx edi |
mov edi,dword[edit] |
call ted_is_select |
cmp al,0 |
je @f |
call ted_sel_normalize |
push esi ecx edx |
mov esi,ted_seln_x0 |
mov ecx,ted_seln_y0 |
call ted_get_pos_by_coords |
mov eax,edx |
mov esi,ted_seln_x1 |
cmp esi,0 |
je .beg_str |
dec esi |
.beg_str: |
mov ecx,ted_seln_y1 |
call ted_get_pos_by_coords |
;call ted_get_text_perv_pos |
mov ebx,edx |
pop edx ecx esi |
;cmp eax,... |
;je @f |
call ted_revers |
@@: |
stdcall ted_draw,edi |
pop edi ebx eax |
ret |
endp |
align 4 |
proc ted_but_undo, edit:dword |
push eax edi |
mov edi,dword[edit] |
mov eax,ted_tim_undo |
cmp ted_tim_ch,eax |
jbe @f |
inc ted_tim_undo |
;call ted_text_colored |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
pop edi eax |
ret |
endp |
align 4 |
proc ted_but_redo, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_tim_undo,1 |
jb @f |
dec ted_tim_undo |
;call ted_text_colored |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
pop edi |
ret |
endp |
align 4 |
proc ted_but_find_next, edit:dword |
pushad |
mov edi,dword[edit] |
call ted_get_pos_by_cursor |
mov eax,ted_buffer_find |
mov bl,byte[eax] |
@@: |
call ted_get_find_rezult |
cmp bh,1 |
je @f ; find |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f |
jmp @b |
@@: |
cmp bh,0 |
je @f |
call ted_get_text_coords |
inc ebx ;move cursor right |
mov ted_sel_x1,ebx |
mov ted_sel_y1,eax |
mov edx,eax |
mov ecx,ebx |
call ted_go_to_pos |
mov edx,esi ;esi ¡ë«® ãáâ ®¢«¥® ¢ ted_get_find_rezult |
call ted_get_text_coords |
mov ted_sel_x0,ebx |
mov ted_sel_y0,eax |
stdcall ted_draw,edi |
jmp .end_find |
@@: |
;¯®¯ ¤ ¥¬ áî¤ ¥á«¨ ⥪áâ ¥ ©¤¥ |
cmp ted_fun_find_err,0 |
je .end_find |
call ted_fun_find_err ;¯®«ì§®¢ ⥫ì᪠ï äãªæ¨ï |
.end_find: |
popad |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
ted_key_ctrl_home: |
mov ted_cur_x,0 |
mov ted_cur_y,0 |
push eax |
mov eax,ted_scr_w |
mov dword[eax+sb_offs_position],0 |
mov eax,ted_scr_h |
mov dword[eax+sb_offs_position],0 |
pop eax |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je @f |
call ted_fun_draw_panel_buttons |
@@: |
ret |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_sel_key_up |
cmp ted_drag_k,1 |
je @f |
call ted_sel_start |
mov ted_drag_k,1 |
@@: |
push dx |
call ted_cur_move_up |
cmp dl,8 |
jne @f |
call ted_scroll_set_redraw |
@@: |
pop dx |
call ted_sel_move |
stdcall ted_draw,edi |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_sel_key_down |
cmp ted_drag_k,1 |
je @f |
call ted_sel_start |
mov ted_drag_k,1 |
@@: |
push dx |
call ted_cur_move_down |
cmp dl,8 |
jne @f |
call ted_scroll_set_redraw |
@@: |
pop dx |
call ted_sel_move |
stdcall ted_draw,edi |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_sel_key_left |
cmp ted_drag_k,1 |
je @f |
call ted_sel_start |
@@: |
push dx |
call ted_cur_move_left |
call ted_sel_move |
cmp ted_drag_k,1 |
je @f |
mov ted_drag_k,1 |
mov dl,8 |
@@: |
cmp dl,8 |
jne @f |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
jmp .end_f |
@@: |
stdcall ted_draw_cur_line,edi |
.end_f: |
pop dx |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_sel_key_right |
cmp ted_drag_k,1 |
je @f |
call ted_sel_start |
@@: |
push dx |
call ted_cur_move_right |
call ted_sel_move |
cmp ted_drag_k,1 |
je @f |
mov ted_drag_k,1 |
mov dl,8 |
@@: |
cmp dl,8 |
jne @f |
call ted_scroll_set_redraw |
stdcall ted_draw,edi |
jmp .end_f |
@@: |
stdcall ted_draw_cur_line,edi |
.end_f: |
pop dx |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
;description: |
; this function need to optimize output |
align 4 |
proc ted_draw_cursor_sumb |
pushad |
mov eax,13 ;rect |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
mov edx,ted_cur_x |
imul edx,ted_rec_w |
add ebx,edx |
shl ebx,16 |
add ebx,ted_rec_w |
mov ecx,ted_wnd_t ;calc rect -> y0,y1 |
add ecx,ted_rec_t |
mov edx,ted_cur_y |
imul edx,ted_rec_h |
add ecx,edx |
shl ecx,16 |
add ecx,ted_rec_h |
mov edx,ted_color_wnd_work |
push ecx |
call ted_sel_normalize |
mov esi,ted_scr_w |
mov ecx,dword[esi+sb_offs_position] |
sub ted_seln_y0,ecx |
sub ted_seln_y1,ecx |
mov ecx,ted_cur_y |
cmp ecx,ted_seln_y0 |
jl .no_cur_sel |
cmp ecx,ted_seln_y1 |
jg .no_cur_sel |
mov edx,ted_color_select ;¬¥ï¥¬ 梥â ä® æ¢¥â ¢ë¤¥«¥¨ï |
mov esi,ted_scr_h |
cmp ecx,ted_seln_y0 |
jne @f |
mov ecx,ted_cur_x |
add ecx,dword[esi+sb_offs_position] |
cmp ecx,ted_seln_x0 |
jge @f |
mov edx,ted_color_wnd_work |
@@: |
mov ecx,ted_cur_y |
cmp ecx,ted_seln_y1 |
jne .no_cur_sel |
mov ecx,ted_cur_x |
add ecx,dword[esi+sb_offs_position] |
cmp ecx,ted_seln_x1 |
jl .no_cur_sel |
mov edx,ted_color_wnd_work |
.no_cur_sel: |
pop ecx |
int 0x40 ;à¨á®¢ ¨¥ ¯àאַ㣮«ì¨ª |
call ted_get_pos_by_cursor ;¡¥à¥¬ ¯®§¨æ¨î ᨬ¢®« |
cmp ted_gp_opt,2 |
jne @f |
mov eax,4 |
mov esi,1 |
ror ecx,16 |
mov bx,cx |
add ebx,0x10001 |
call ted_get_symb_color |
call ted_convert_invis_symb |
int 0x40 ;à¨á®¢ ¨¥ ᨬ¢®« |
@@: |
popad |
ret |
endp |
;input: |
; edx -> pointer to text |
; edi -> 㪠§ ⥫ì áâàãªâãàã tedit |
;output: |
; ecx = color |
; if ted_mode_color=0 then ecx=ted_color_wnd_text |
align 4 |
ted_get_symb_color: |
mov ecx,ted_color_wnd_text ;§ ¤ ¥¬ 梥â ⥪áâ ¯® 㬮«ç ¨î |
push eax edx |
cmp ted_mode_color,0 |
je .exit |
jmp .on_first |
@@: |
call ted_iterat_perv |
cmp edx,ted_tex_1 |
jle .exit |
.on_first: |
xor eax,eax |
mov al,byte[edx+1] |
cmp al,0 ;¥á«¨ al=0 ⮠梥⠥ ¬¥ï¥âáï |
je @b |
cmp eax,ted_colors_text_count |
jge .exit |
shl ax,2 ;㬮¦ ¥¬ ¨¤¥ªá 梥â 4 ¡ ©â |
mov ecx,ted_text_colors ;¯à¨¡ ¢«ï¥¬ ᬥ饨¥ 1-£® 梥â |
add ecx,eax |
mov ecx,dword[ecx] ;ãáâ ¢«¨¢ ¥¬ ⥪ã騩 梥â ⥪áâ ¯® ᬥ饨î |
.exit: |
pop edx eax |
ret |
;input: |
; edx = pointer to text |
; edi = pointer to tedit struct |
;description: |
; ãªæ¨ï ¯à¥®¡à §ã¥â ¥¢¨¤¨¬ë¥ ᨬ¢®«ë ¢ ¯¥ç â ¥¬ë¥ íªà ¥ |
align 4 |
ted_convert_invis_symb: |
cmp ted_mode_invis,1 |
jne @f |
cmp byte[edx],13 |
jne @f |
mov edx,edi |
add edx,ted_offs_symbol_new_line |
@@: |
ret |
;input: |
; edi = pointer to tedit struct |
align 4 |
ted_scroll_set_redraw: |
push eax |
mov eax,ted_scr_w |
mov dword[eax+sb_offs_redraw],1 |
mov eax,ted_scr_h |
mov dword[eax+sb_offs_redraw],1 |
pop eax |
ret |
align 4 |
proc ted_draw, edit:dword |
locals |
line_num dd ? |
endl |
pushad |
mov edi,dword[edit] |
mov eax,4 ;draw text |
mov ecx,ted_text_colors |
mov ecx,dword[ecx] |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,ted_rec_t |
add ebx,0x10001 ;¤®¡ ¢«ï¥¬ ®âáâã¯ë ¤«ï ¢ëà ¢¨¢ ¨ï ¡ãª¢ë ¯® æ¥âàã |
call ted_sel_normalize ;need before draw select |
mov esi,ted_scr_w |
mov esi,dword[esi+sb_offs_position] |
mov dword[line_num],esi |
stdcall ted_clear_line_before_draw, edi,ebx,1,esi |
call ted_get_first_visible_pos |
cmp edx,0 |
je .no_draw_text |
mov esi,1 ;¤«¨ ¢ë¢®¤¨¬®£® ⥪áâ ¯® 1-¬ã ᨬ¢®«ã |
@@: |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle .no_draw_text |
; *** 梥⮢ ï à §¬¥âª |
cmp ted_mode_color,0 |
je .no_col_change |
cmp byte[edx+1],0 |
je .no_col_change |
call ted_get_symb_color |
.no_col_change: |
cmp byte [edx],13 |
jne .no_13 |
cmp ted_mode_invis,1 |
jne .no_invis |
push edx |
mov edx,edi |
add edx,ted_offs_symbol_new_line |
int 0x40 |
pop edx |
.no_invis: |
add ebx,ted_rec_h |
;optimized output \/ |
mov eax,ted_wnd_h |
add eax,ted_wnd_t |
cmp bx,ax |
jg .no_draw_text |
mov eax,4 |
;optimized output /\ |
and ebx,0xffff |
ror ebx,16 |
add ebx,ted_wnd_l |
add ebx,ted_rec_l |
inc ebx |
ror ebx,16 |
inc dword[line_num] ;increment line number |
stdcall ted_clear_line_before_draw,edi,ebx,1,dword[line_num] |
call ted_opt_draw_line_left |
jmp @b |
.no_13: |
int 0x40 |
ror ebx,16 |
add ebx,ted_rec_w |
mov esi,ted_wnd_l |
add esi,ted_wnd_w |
cmp bx,si |
jl .no_opt |
call ted_opt_draw_line_right |
.no_opt: |
mov si,1 |
ror ebx,16 |
jmp @b |
.no_draw_text: |
stdcall ted_clear_line_before_draw,edi,ebx,0,dword[line_num] |
call ted_draw_line_numbers |
call ted_draw_main_cursor |
;--------------------------------------------- |
; set all_redraw flag for draw all ScrollBar |
; In some cases it is necessity to draw only the area |
; of moving of a "runner", for acceleration of output - |
; in this case the flag needs to be reset to 0 (zero). |
mov eax,ted_scr_h |
mov esi,ted_scr_w |
mov dword[eax+sb_offs_all_redraw],1 |
mov dword[esi+sb_offs_all_redraw],1 |
; à¨á®¢ ¨¥ ¯®«®á ¯à®ªàã⪨ |
stdcall scroll_bar_horizontal.draw,eax ;[scrollbar_hor_draw] |
stdcall scroll_bar_vertical.draw,esi ;[scrollbar_ver_draw] |
; reset all_redraw flag |
mov dword[eax+sb_offs_all_redraw],0 |
mov dword[esi+sb_offs_all_redraw],0 |
;--------------------------------------------- |
;left-bottom square |
mov ebx,ted_wnd_l |
shl ebx,16 |
add ebx,ted_rec_l |
mov ecx,ted_wnd_t |
add ecx,ted_wnd_h |
shl ecx,16 |
mov cx,word[eax+sb_offs_size_y] |
inc cx |
mov edx,ted_color_wnd_capt ;[sc.work] |
mov eax,13 |
int 0x40 |
;right-bottom square |
mov ebx,ted_wnd_l |
add ebx,ted_wnd_w |
shl ebx,16 |
mov bx,word[esi+sb_offs_size_x] |
inc bx |
int 0x40 |
cmp ted_fun_draw_panel_find,0 |
je @f |
call ted_fun_draw_panel_find |
@@: |
cmp ted_fun_draw_panel_syntax,0 |
je @f |
call ted_fun_draw_panel_syntax |
@@: |
popad |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_draw_main_cursor |
pushad |
mov eax,13 ;draw cursor |
mov ecx,ted_wnd_t ;calc rect -> y0,y1 |
add ecx,ted_rec_t |
mov edx,ted_cur_y |
imul edx,ted_rec_h |
add ecx,edx |
cmp ted_cur_ins,1 ;¯à®¢¥àª ०¨¬ à ¡®âë ªãàá®à (®¡ëçë© ¨«¨ ¢áâ ¢ª ) |
jne @f |
mov edx,ted_rec_h |
inc edx ;1->1, 3->2, 5->3, ... |
shr edx,1 ;edx = ¢ëá®â áâப¨ ¤¥«¥ ï 2 (ª®£¤ ªãàá®à ¥ ¯®«ë©) |
add ecx,edx |
@@: |
shl ecx,16 |
add ecx,ted_rec_h |
cmp ted_cur_ins,1 |
jne @f |
shr cx,1 ;¤¥«¨¬ ¢ëá®âã ªãàá®à 2 |
@@: |
mov ebx,ted_wnd_l ;calc rect -> x0,x1 |
add ebx,ted_rec_l |
mov edx,ted_cur_x |
imul edx,ted_rec_w |
add ebx,edx |
shl ebx,16 |
add ebx,ted_rec_w |
mov edx,ted_color_cursor |
int 0x40 ;¢ë¢®¤ ªãàá®à |
call ted_get_pos_by_cursor |
cmp ted_gp_opt,2 |
jne @f |
mov eax,4 ;draw text |
mov esi,1 |
ror ecx,16 |
mov bx,cx |
add ebx,0x10001 |
cmp ted_cur_ins,1 |
jne .no_up_tetx |
mov ecx,ted_rec_h |
inc cx ; 1->1, 3->2, 5->3, ... |
shr cx,1 |
sub bx,cx |
.no_up_tetx: |
mov ecx,ted_color_cur_text |
call ted_convert_invis_symb |
int 0x40 |
@@: |
mov eax,4 |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,3 |
mov ecx,ted_color_wnd_bord |
or ecx,0x80000000 |
lea edx,[txtRow] |
int 0x40 ;¢ë¢®¤ ¯®¤¯¨á¨ 'âப ' |
add ebx,0x500000 |
lea edx,[txtCol] |
int 0x40 ;¢ë¢®¤ ¯®¤¯¨á¨ ' ª' |
cmp ted_tim_undo,0 |
je @f |
add ebx,0x500000 |
lea edx,[txtOtm] |
int 0x40 |
sub ebx,0x500000 |
@@: |
call ted_draw_buffer |
call ted_draw_help_f1 |
mov eax,47 ;draw cursor coords |
mov esi,ted_color_wnd_bord |
or esi,0x40000000 |
mov edx,ebx |
ror edx,16 |
sub edx,35 |
ror edx,16 |
;add edx,3 |
mov ebx,0x40000 ;Row=... |
mov ecx,ted_scr_w |
mov ecx,dword[ecx+sb_offs_position] |
add ecx,ted_cur_y |
inc ecx |
push edi |
mov edi,ted_color_wnd_work |
int 0x40 ;¢ë¢®¤ ç¨á« ⥪ã饩 áâப¨ |
pop edi |
;mov ebx,0x40000 ;Col=... |
mov ecx,ted_scr_h |
mov ecx,dword[ecx+sb_offs_position] |
add ecx,ted_cur_x |
inc ecx |
add edx,0x500000 |
push edi |
mov edi,ted_color_wnd_work |
int 0x40 ;¢ë¢®¤ ç¨á« § ª®¢ |
pop edi |
cmp ted_tim_undo,0 |
je @f |
mov ecx,ted_tim_undo |
add edx,0x500000 |
int 0x40 |
@@: |
popad |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
proc ted_draw_buffer |
pushad |
mov eax,ted_buffer |
cmp byte[eax],0 ;ᬮâਬ 1-© ᨬ¢®« ¨§ ¡ãä¥à |
je @f |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
add bx,300 |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,3 |
mov ecx,ted_color_wnd_bord |
or ecx,0x40000000 |
mov edx,ted_buffer |
mov esi,edx |
mov edi,ted_color_wnd_work ;edi - destroy not pointer to tedit |
call tl_strlen |
;cmp eax,0 ;¡ãä¥à ¯ãáâ |
;je @f |
cmp eax,20 |
jle .crop_buf |
mov eax,20 ;®¡à¥§ª ¯®¤¯¨á¨ ¤® 20 ᨬ¢®«®¢ |
.crop_buf: |
mov esi,eax |
mov eax,4 |
int 0x40 ;¢ë¢®¤ ᮤ¥à¦¨¬®£® ¡ãä¥à |
sub ebx,50 shl 16 |
lea edx,[txtBuf] |
mov esi,edx |
call tl_strlen |
mov esi,eax |
mov eax,4 |
xor ecx,0x40000000 ;ã¡¨à ¥¬ 梥â ä® |
int 0x40 ;¢ë¢®¤ ¯®¤¯¨á¨ ¤«ï ¡ãä¥à |
@@: |
popad |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_draw_help_f1 |
pushad |
mov eax,13 ;clear place before draw help |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_w |
sub ebx,ted_rec_l |
mov ecx,ted_wnd_t |
add ecx,13 |
shl ecx,16 |
add ecx,ted_rec_h |
mov edx,ted_color_wnd_capt |
int 0x40 |
cmp ted_help_id,-1 |
je @f |
mov eax,ted_help_id |
ColToIndexOffset eax,edx |
;SetCoordinates |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,13 ;=3+10 |
;SetTextColor |
xor eax,eax |
mov al,byte[edx+MAX_COLOR_WORD_LEN+6] |
shl ax,2 |
mov ecx,ted_text_colors |
add ecx,eax |
mov ecx,dword[ecx] |
or ecx,0xc0000000 ;SetTextStyles |
mov esi,edi |
mov edi,ted_color_wnd_work |
mov eax,4 |
int 0x40 |
mov edi,esi |
;*** draw help string *** |
mov ecx,ted_color_wnd_bord |
or ecx,0x80000000 |
mov edx,dword[edx+MAX_COLOR_WORD_LEN] |
cmp edx,0 |
je @f |
add edx,ted_help_text_f1 |
add ebx,0x500000 |
int 0x40 |
@@: |
popad |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc ted_draw_line_numbers |
pushad |
;top panel with caption |
mov ebx,ted_wnd_l |
; add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_w |
; sub ebx,ted_rec_l |
mov edx,ted_color_wnd_work |
mov ecx,ted_wnd_t |
shl ecx,16 |
add ecx,ted_rec_t |
mov eax,13 |
mov edx,ted_color_wnd_capt |
int 0x40 |
;line numbers |
mov ebx,0x40000 ;format |
mov ecx,ted_scr_w |
mov ecx,dword[ecx+sb_offs_position] |
inc ecx |
mov edx,3 |
add edx,ted_wnd_l |
rol edx,16 |
add edx,ted_wnd_t |
add edx,ted_rec_t |
@@: |
push ebx ecx edx |
;left panel with numbers |
mov ebx,ted_wnd_l |
shl ebx,16 |
add ebx,ted_rec_l |
mov ecx,ted_rec_h |
rol ecx,16 |
mov cx,dx |
rol ecx,16 |
mov eax,13 |
mov edx,ted_color_wnd_capt |
int 0x40 ;à¨á㥬 ¯àאַ㣮«ì¨ª ¯®¤ ®¬¥à®¬ áâப¨ |
pop edx ecx ebx |
mov eax,47 |
mov esi,ted_color_wnd_bord |
int 0x40 ;à¨á㥬 ®¬¥à áâப¨ |
inc ecx |
add edx,ted_rec_h |
sub edx,ted_wnd_t |
mov esi,edx |
and esi,0xffff |
cmp esi,ted_wnd_h |
jge @f |
add edx,ted_wnd_t |
jmp @b |
@@: |
popad |
ret |
endp |
;output: |
; 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 |
endp |
align 4 |
proc ted_draw_cur_line, edit:dword |
pushad |
mov edi,dword[edit] |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
mov eax,ted_cur_y |
imul eax,ted_rec_h |
mov bx,ax |
add ebx,ted_wnd_t |
add ebx,ted_rec_t ;ebx - ª®®à¤¨ âë ¤«ï ¯àאַ㣮«ì¨ª ®ç¨á⪨ «¨¨¨ |
add ebx,0x10001 ;¤®¡ ¢«ï¥¬ ®âáâã¯ë ¤«ï ¢ëà ¢¨¢ ¨ï ¡ãª¢ë ¯® æ¥âàã |
call ted_sel_normalize ;need before draw select |
mov ecx,ted_cur_y |
mov eax,ted_scr_w |
add ecx,dword[eax+sb_offs_position] |
stdcall ted_clear_line_before_draw,edi,ebx,1,ecx |
mov eax,ted_scr_h |
mov esi,dword[eax+sb_offs_position] |
call ted_get_pos_by_coords |
cmp ted_gp_opt,2 |
jne .no_draw_text |
; mov eax,4 ;draw text |
call ted_get_symb_color |
mov esi,1 ;draw 1 symbol |
@@: |
;call ted_iterat_next |
cmp edx,ted_tex_1 |
jle .no_draw_text |
; *** 梥⮢ ï à §¬¥âª |
cmp ted_mode_color,0 |
je .no_col_change |
cmp byte[edx+1],0 |
je .no_col_change |
call ted_get_symb_color |
.no_col_change: |
mov eax,4 ;draw text |
cmp byte [edx],13 |
jne .no_13 |
cmp ted_mode_invis,1 |
jne .no_draw_text |
push edx |
mov edx,edi |
add edx,ted_offs_symbol_new_line |
int 0x40 |
pop edx |
jmp .no_draw_text |
.no_13: |
int 0x40 |
ror ebx,16 |
add ebx,ted_rec_w |
mov eax,ted_wnd_w |
add eax,ted_wnd_l ;ax = ®âáâ㯠¯® ®á¨ x |
cmp bx,ax |
jge .no_draw_text ;Opt |
ror ebx,16 |
call ted_iterat_next |
jmp @b |
.no_draw_text: |
call ted_draw_main_cursor |
popad |
ret |
endp |
;input: |
; eax - text need find |
; bl - first symbol to find |
; edx - first symbol pointer |
; edi - pointer to tedit struct |
;output: |
; bh - rezult |
; edx - last text position (if find sucess) |
; esi - first symbol pointer |
;description: |
; ãªæ¨ï ¯à®¢¥àï¥â ᮢ¯ ¤ ¥â «¨ ⥪áâ ¢ ¡ãä¥à¥ eax |
; á ⥪á⮬ । ªâ®à ¯® 㪠§ ⥫î edx. |
; â ¤ àâë¥ äãªæ¨¨ ( ¯à. strcmp) âãâ ¥ ¯®¤®©¤ãâ, ¯®â®¬ã çâ® |
; ¢ ¯ ¬ï⨠। ªâ®à ⥪áâ ᮤ¥à¦¨âáï ¥ ¢ ¢¨¤¥ ascii áâப. |
align 4 |
ted_get_find_rezult: |
push eax |
mov bh,1 |
mov esi,edx ;copy edx |
@@: |
cmp byte[edx],bl |
jne .no_text |
inc eax ;*** get next symbol (in find text) *** |
mov bl,byte[eax] |
cmp bl,0 |
je @f ;end of find text |
call ted_iterat_next ;*** get next symbol (in editor text) *** |
cmp edx,ted_tex_1 |
jle @f ;end of editor text |
jmp @b |
.no_text: |
xor bh,bh |
mov edx,esi ;restore edx |
@@: |
pop eax |
mov bl,byte[eax] ;restore bl |
ret |
;input: |
; clear_o - ¥á«¨ =1 ®ç¨áâ¨âì ®¤ã áâபã, =0 ®ç¨áâ¨âì ¢á¥ áâப¨ ®ª ¤® ¨§ã |
align 4 |
proc ted_clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_lin:dword |
pushad |
mov edi,dword[edit] |
mov ebx,dword[coords] ;ebx = x*2^16+y coords to left up point clear line |
mov esi,dword[numb_lin] ;esi - number text line |
sub ebx,0x10001 ;®â¨¬ ¥¬ ®âáâã¯ë ¤«ï ¢ëà ¢¨¢ ¨ï ¡ãª¢ë ¯® æ¥âàã |
cmp dword[clear_o],0 |
jne @f |
add ebx,ted_rec_h |
inc esi |
ror ebx,16 |
xor bx,bx |
add ebx,ted_wnd_l |
add ebx,ted_rec_l ;bx = ted_wnd_l+ted_rec_l |
ror ebx,16 |
@@: |
mov eax,ted_wnd_h |
add eax,ted_wnd_t |
cmp ax,bx |
jl .no_clear |
sub ax,bx |
mov cx,bx |
shl ecx,16 |
xor bx,bx |
add ebx,ted_wnd_w |
sub ebx,ted_rec_l |
xor cx,cx |
add ecx,ted_rec_h |
mov edx,ted_color_wnd_work |
cmp dword[clear_o],0 |
je .pusto |
cmp ax,cx |
jge @f |
.pusto: |
mov cx,ax |
@@: |
call ted_is_select |
cmp al,0 |
je @f |
cmp ted_seln_y0,esi |
jg @f |
cmp ted_seln_y1,esi |
jl @f |
mov edx,ted_color_select ;draw selected line |
@@: |
mov eax,13 ;rect |
int 0x40 |
call ted_is_select |
cmp al,0 |
je .no_clear |
mov al,13 ;rect |
xor cx,cx |
add ecx,ted_rec_h |
cmp ted_seln_y0,esi |
jne @f |
push bx esi |
mov edx,ted_seln_x0 ; ¢¥àåïï ¯®«®á (§ â¨à ¥â á«¥¢ ) |
mov esi,ted_scr_h |
cmp edx,dword[esi+sb_offs_position] |
jle .in_wnd |
sub edx,dword[esi+sb_offs_position] |
imul edx,ted_rec_w |
mov bx,dx |
jmp .no_wnd |
.in_wnd: |
mov bx,0 |
.no_wnd: |
mov edx,ted_color_wnd_work |
int 0x40 |
pop esi bx |
@@: |
cmp ted_seln_y1,esi |
jne @f |
push esi |
mov edx,ted_seln_x1 ; ¨¦ïï ¯®«®á (§ â¨à ¥â á¯à ¢ ) |
mov esi,ted_scr_h |
cmp edx,dword[esi+sb_offs_position] |
jle .in_wnd2 |
sub edx,dword[esi+sb_offs_position] |
imul edx,ted_rec_w |
sub bx,dx |
shl edx,16 |
add ebx,edx |
.in_wnd2: |
mov edx,ted_color_wnd_work |
int 0x40 |
pop esi |
@@: |
.no_clear: |
popad |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
;output: |
; ecx = ®¢ë© 梥â ᨬ¢®« |
; edx = pointer to symbol |
; edx = 0 if text not in screen |
align 4 |
ted_get_first_visible_pos: |
push eax ecx |
mov eax,ted_scr_w |
mov edx,ted_tex |
xor ecx,ecx |
@@: |
cmp ecx,dword[eax+sb_offs_position] |
je @f |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f |
cmp byte [edx],13 |
jne @b |
inc ecx |
jmp @b |
@@: |
cmp ecx,dword[eax+sb_offs_position] |
je @f |
xor edx,edx |
@@: |
cmp ecx,dword[eax+sb_offs_max_area] |
jle @f |
mov dword[eax+sb_offs_max_area],ecx |
@@: |
pop ecx eax |
call ted_opt_draw_line_left |
ret |
;input: |
; edx = pointer to symbol |
; edi = pointer to tedit struct |
;output: |
; ecx = 梥â ᨬ¢®« |
; edx = 㪠§ â¥«ì ¯¥à¢ë© «¥¢ë© ᨬ¢®« |
;description: |
; äãªæ¨ï 㦠¤«ï ®¯â¨¬¨§ 樨 ¢ë¢®¤ ⥪áâ |
align 4 |
proc ted_opt_draw_line_left |
push ebx |
mov ebx,ted_scr_h |
mov ebx,dword[ebx+sb_offs_position] |
cmp ebx,0 |
je .ret_f |
push eax |
mov eax,edx |
cmp edx,ted_tex |
jne @f |
call ted_iterat_next |
jmp .beg_cycle |
@@: |
cmp ebx,0 |
je @f |
cmp byte[edx],13 |
jne @f |
call ted_iterat_next |
.beg_cycle: |
@@: |
cmp edx,ted_tex_1 |
jle @f |
cmp byte[edx],13 |
je @f |
cmp ebx,0 |
je @f |
;-------------------------------------- |
xor eax,eax ;eax ¡ã¤¥â ¬¥ïâìáï |
mov al,byte[edx+1] |
cmp al,0 |
je .no_color |
cmp eax,ted_colors_text_count |
jge .no_color |
xor ecx,ecx |
mov cl,byte[edx+1] |
shl cx,2 |
add ecx,ted_text_colors |
mov ecx,dword[ecx] |
.no_color: |
;-------------------------------------- |
mov eax,edx |
call ted_iterat_next |
dec ebx |
jmp @b |
@@: |
mov edx,eax |
pop eax |
.ret_f: |
call ted_get_symb_color |
pop ebx |
ret |
endp |
;input: |
; edx = pointer to symbol |
; edi = pointer to tedit struct |
;output: |
; ecx = symbol color |
; edx = pointer to 13 symbol |
;description: |
; äãªæ¨ï 㦠¤«ï ®¯â¨¬¨§ 樨 ¢ë¢®¤ ⥪áâ |
align 4 |
proc ted_opt_draw_line_right |
push eax |
mov eax,edx |
@@: |
cmp edx,ted_tex_1 |
jle @f |
cmp byte[edx],13 |
je @f |
mov eax,edx |
call ted_iterat_next |
jmp @b |
@@: |
mov edx,eax ;perv sumbol |
call ted_get_symb_color |
pop eax |
ret |
endp |
align 4 |
proc ted_mouse, edit:dword |
pushad |
mov edi,dword[edit] |
;®¡à ¡ âë¢ ¥¬ áªà®««¨£¨ |
mov edx,ted_scr_h |
mov ecx,ted_scr_w |
cmp word[edx+sb_offs_delta2],0 |
jne .horizontal |
mov eax,dword[ecx+sb_offs_max_area] |
cmp eax,dword[ecx+sb_offs_cur_area] |
jbe .horizontal |
; mouse event for Vertical ScrollBar |
stdcall scroll_bar_vertical.mouse,ecx ;[scrollbar_ver_mouse] |
cmp dword[ecx+sb_offs_redraw],0 |
je @f |
mov dword[ecx+sb_offs_redraw],0 |
stdcall ted_draw,edi |
jmp .no_in_wnd |
@@: |
cmp word[ecx+sb_offs_delta2],0 |
jne .no_in_wnd |
.horizontal: |
mov eax,dword[edx+sb_offs_max_area] |
cmp eax,dword[edx+sb_offs_cur_area] |
jbe .other |
; mouse event for Horizontal ScrollBar |
stdcall scroll_bar_horizontal.mouse,edx ;[scrollbar_hor_mouse] |
cmp dword[edx+sb_offs_redraw],0 |
je .other |
mov dword[edx+sb_offs_redraw],0 |
stdcall ted_draw,edi |
jmp .no_in_wnd |
.other: |
cmp word[ecx+sb_offs_delta2],0 |
jne .no_in_wnd |
cmp word[edx+sb_offs_delta2],0 |
jne .no_in_wnd |
;®¡à ¡ âë¢ ¥¬ ®ª® । ªâ®à |
mcall 37,2 ;get mouse buttons |
cmp al,1 |
jne @f |
mcall 37,1 ;get mouse coords |
mov ebx,ted_wnd_t |
add ebx,ted_rec_t |
cmp ax,bx |
jl @f ;y_mouse<y_wnd |
sub ebx,ted_rec_t |
add ebx,ted_wnd_h |
cmp bx,ax |
jl @f ;y_mouse>y_wnd |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
mov ecx,eax |
shr ecx,16 |
cmp cx,bx |
jl @f ;x_mouse<x_wnd |
sub ebx,ted_rec_l |
add ebx,ted_wnd_w |
cmp bx,cx |
jl @f ;x_mouse>x_wnd |
call ted_draw_cursor_sumb |
call ted_wnd_main_click |
jmp .no_in_wnd |
@@: |
call ted_wnd_main_mouse_scroll |
cmp ted_drag_m,0 |
je .no_in_wnd |
mov ted_drag_m,0 |
stdcall ted_draw,edi |
cmp ted_fun_draw_panel_buttons,0 |
je .no_in_wnd |
call ted_fun_draw_panel_buttons |
.no_in_wnd: |
popad |
ret |
endp |
;input: |
; eax -> (x,y) |
; edi -> 㪠§ ⥫ì áâàãªâãàã tedit |
;description: |
; äãªæ¨ï ¢ë§ë¢¥âáï ¯à¨ ¦ ⨨ ª®¯ª®© ¬ëè¨ ¨ ¯®¯ ¤¥¨¨ ªãàá®à®¬ ¢ ®ª® । ªâ®à |
align 4 |
ted_wnd_main_click: |
push ebx ecx edx |
push eax |
shr eax,16 |
and eax,0xffff |
sub eax,ted_wnd_l |
sub eax,ted_rec_l |
xor edx,edx |
mov ecx,ted_rec_w |
div cx |
;inc eax |
mov ebx,ted_scr_h |
cmp eax,dword[ebx+sb_offs_cur_area] |
jle @f |
mov eax,dword[ebx+sb_offs_cur_area] |
@@: |
;dec eax |
mov ted_cur_x,eax |
pop eax |
push eax |
and eax,0xffff |
sub eax,ted_wnd_t |
sub eax,ted_rec_t |
xor edx,edx |
mov ecx,ted_rec_h |
div cx |
inc eax |
mov ebx,ted_scr_w |
cmp eax,dword[ebx+sb_offs_cur_area] |
jle @f |
mov eax,dword[ebx+sb_offs_cur_area] |
@@: |
dec eax |
mov ted_cur_y,eax |
pop eax |
cmp ted_drag_m,0 |
je @f |
call ted_sel_move |
jmp .sel_move |
@@: |
mov ted_drag_m,1 |
call ted_sel_start |
.sel_move: |
pop edx ecx ebx |
ret |
;input: |
; edi = pointer to tedit struct |
align 4 |
ted_wnd_main_mouse_scroll: |
push eax ebx ecx |
mcall 37,7 |
cmp ax,0 |
je .no_scroll |
mov ecx,ted_scr_w |
mov ebx,dword[ecx+sb_offs_position] ;copy old scroll position |
and eax,0xffff |
btr ax,15 |
jae @f |
or eax,0xffff8000 |
@@: |
add dword[ecx+sb_offs_position],eax |
mov eax,[ecx+sb_offs_position] |
cmp eax,[ecx+sb_offs_max_area] |
jb @f |
mov dword[ecx+sb_offs_position],ebx ;if scroll position out of range |
jmp .no_scroll |
@@: |
stdcall ted_draw,edi |
.no_scroll: |
pop ecx ebx eax |
ret |
align 4 |
proc ted_but_save_file, edit:dword, file:dword, f_name:dword |
pushad |
mov edi,dword[edit] |
stdcall ted_can_save,edi |
cmp al,0 |
je .no_save |
mov ecx,ted_max_chars |
call mem_Alloc |
push eax ;§ ¯®¬¨ ¥¬ 㪠§ â¥«ì ¢ë¤¥«¥ãî ¯ ¬ïâì |
mov edx,ted_tex |
xor ecx,ecx |
@@: |
call ted_iterat_next |
cmp edx,ted_tex_1 |
jle @f ;edx = ted_tex or edx = ted_tex+sizeof.symbol |
mov bl,[edx] |
mov byte[eax],bl |
inc eax |
inc ecx |
jmp @b |
@@: |
cmp ecx,0 |
je @f |
mov ebx,dword[file] |
pop eax ;§ ¯¨áë¢ ¥¬ 㪠§ â¥«ì ¢ë¤¥«¥ãî ¯ ¬ïâì |
mov dword[ebx+16],eax |
push eax ;®¡à â® § ¯®¬¨ ¥¬ 㪠§ â¥«ì ¢ë¤¥«¥ãî ¯ ¬ïâì |
mov eax,70 |
mov dword[ebx], 2 |
mov dword[ebx+4], 0 |
mov dword[ebx+8], 0 |
mov dword[ebx+12], ecx |
mov byte[ebx+20], 0 |
push dword[f_name] |
pop dword[ebx+21] |
int 0x40 |
mov ted_err_save,al |
cmp eax,0 |
je .no_msg |
; cmp eax,6 |
; je @f |
cmp ax,10 |
jl .zifra_0_9 |
mov al,'?' |
sub ax,48 |
.zifra_0_9: |
add ax,48 |
cmp ted_fun_save_err,0 |
je @f |
call ted_fun_save_err |
jmp @f |
.no_msg: |
m2m ted_tim_ls,ted_tim_ch |
@@: |
pop ecx ;§ ¯¨áë¢ ¥¬ 㪠§ â¥«ì ¢ë¤¥«¥ãî ¯ ¬ïâì |
call mem_Free |
.no_save: |
popad |
ret |
endp |
} |
/programs/develop/libraries/box_lib/trunk/tree_list.mac |
---|
1,6 → 1,6 |
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
; ýëåìåíò TreeList äëÿ Kolibri OS |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 14.04.2010 IgorA |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 29.04.2010 IgorA |
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
1303,7 → 1303,7 |
cmp byte[eax],0 |
je @f |
inc eax |
loop @b |
jmp @b |
@@: |
sub eax,esi |
ret |
/programs/other/t_edit/t_work.inc |
---|
File deleted |
/programs/other/t_edit/build_en.bat |
---|
6,7 → 6,7 |
if not exist bin\info mkdir bin\info |
copy info\* bin\info\* |
@fasm.exe -m 16384 ..\..\develop\libraries\box_lib\trunk\box_lib.asm bin\box_lib.obj |
if not exist bin\box_lib.obj @fasm.exe -m 16384 ..\..\develop\libraries\box_lib\trunk\box_lib.asm bin\box_lib.obj |
@kpack bin\box_lib.obj |
@erase lang.inc |
/programs/other/t_edit/build_ru.bat |
---|
6,7 → 6,7 |
if not exist bin\info mkdir bin\info |
copy info\* bin\info\* |
@fasm.exe -m 16384 ..\..\develop\libraries\box_lib\trunk\box_lib.asm bin\box_lib.obj |
if not exist bin\box_lib.obj @fasm.exe -m 16384 ..\..\develop\libraries\box_lib\trunk\box_lib.asm bin\box_lib.obj |
@kpack bin\box_lib.obj |
@erase lang.inc |
/programs/other/t_edit/readme.htm |
---|
48,7 → 48,7 |
</head> |
<body> |
<h1>TextEditor âåðñèÿ îò 22.04.2010</h1> |
<h1>TextEditor âåðñèÿ îò 29.04.2010</h1> |
<h2>Î ïðîãðàììå</h2> |
<p>Ïðîãðàììà äëÿ ðàáîòû ñ òåêñòîâûìè ôàéëàìè. |
Ëèöåíçèÿ ñâîáîäíàÿ.</p> |
73,11 → 73,11 |
<tr><td>Ïîääåðæêà êîäèðîâîê KOI8M, OEM</td> |
<td>åñòü</td><td>íåò</td></tr> |
<tr><td>Ïîäñâåòêà ñèíòàêñèñà</td> |
<td>ïîäñâåòêà çàðàíåå çàøèòà â ïðîãðàììó</td><td>ïîäñâåòêà áåðåòñÿ èç ôàéëîâ, êîòîðûå ìîæåò óêàçàòü ïîëüçîâàòåëü. Òàêæå åñòü âîçìîæíîñòü ïîëó÷àòü ñïðàâêó ïî ïîäñâå÷èâàåìûì ñëîâàì (åñëè îíà åñòü â ôàéëàõ ïîäñâåòêè, íàâåñòè êóðñîð íà ñëîâî è íàæàòü F1).</td><td></td></tr> |
<td>ïîäñâåòêà çàðàíåå çàøèòà â ïðîãðàììó</td><td>ïîäñâåòêà áåðåòñÿ èç ôàéëîâ, êîòîðûå ìîæåò óêàçàòü ïîëüçîâàòåëü. Òàêæå åñòü âîçìîæíîñòü ïîëó÷àòü ñïðàâêó ïî ïîäñâå÷èâàåìûì ñëîâàì (åñëè îíà åñòü â ôàéëàõ ïîäñâåòêè, íàâåñòè êóðñîð íà ñëîâî è íàæàòü F1).</td></tr> |
<tr><td>Ìíîãîêðàòíàÿ îòìåíà/ïîâòîð äåéñòâèé</td> |
<td>íåò</td><td>åñòü</td><td></td></tr> |
<td>íåò</td><td>åñòü</td></tr> |
<tr><td>Îãðàíè÷åíèÿ íà ðàçìåð ôàéëîâ</td> |
<td>íåò</td><td>åñòü</td><td></td></tr> |
<td>íåò</td><td>åñòü</td></tr> |
</table> |
<h2>Íåêîòîðûå íåäîðàáîòêè</h2> |
112,22 → 112,9 |
óäàëåíèÿ ñèìâîëîâ, òåêñò ìîæåò áûòü âîññòàíîâëåí.</p> |
<p><b>'col'</b> - èñïîëüçóåòñÿ äëÿ öâåòîâîé ðàçìåòêè.</p> |
<p>Òåïåðü íåìíîãî î ôóíêöèÿõ:</p> |
<p><b>GetTexPervPos</b> - ïåðåõîä íà ïðåäûäóùèé ñèìâîë â öåïè (÷åðåç óêàçàòåëü 'perv')</p> |
<p><b>GetTexNextPos</b> - ïåðåõîä íà ñëåäóþùèé ñèìâîë â öåïè (÷åðåç óêàçàòåëü 'next')</p> |
<p><b>SymbNotVis</b> - îïðåäåëÿåò âèäèìûé ëè óêàçàííûé ñèìâîë íà ýêðàíå (â çàâèñèìîñòè |
îò çíà÷åíèé 'tc' è 'td')</p> |
<p><b>IteratNext</b> - ïåðåõîä íà ñëåäóþùèé âèäèìûé ñèìâîë â öåïè. Èñïîëüçóåò äëÿ |
ðàáîòû ôóíêöèè GetTexNextPos è SymbNotVis.</p> |
<p><b>IteratPerv</b> - ïåðåõîä íà ïðåäåäóùèé âèäèìûé ñèìâîë â öåïè.</p> |
<h3>Ôóíêöèè</h3> |
<p>Èíôîðìàöèþ ïî ôóíêöèÿì ñìîòðèòå â äîêóìåíòàöèè ïî ýëåìåíòó t_edit â áèáëèîòåêå box_lib.obj.</p> |
<p><b>ItPoNextUc</b> - íàéòè ñëåäóþùóþ ïîçèöèþ óêàçàííîãî ñèìâîëà (edx-ïîç. íà÷àëà |
ïîèñêà, bl->êîä èñêîìîãî ñèìâîëà)</p> |
<p><b>GetPosByParam</b> - áåðåò ïîçèöèþ ñèìâîëà ïî êîîðäèíàòàì (esi->êîîðä. x, çíàê; |
ecx->êîîðä. y, ñòðîêà)</p> |
<p><b>GoToPos</b> - ïåðåñòàâëÿåò êóðñîð â óêàçàííóþ ïîçèöèþ, åñëè óêàçàííàÿ ïîçèöèÿ |
íàõîäèòñÿ âíå ýêðàíà, òî òàêæå ïåðåñòàâëÿþòñÿ ñêðîëèíãè (ecx->êîîðä. x, çíàê; edx->êîîðä. y, ñòðîêà)</p> |
<h3>Ôîðìàò ôàéëà ïîäñâåòêè *.syn</h3> |
<table> |
<tr><th>Ýëåìåíò</th><th>Ðàçìåð (áàéò)</th></tr> |
/programs/other/t_edit/t_button.inc |
---|
1,7 → 1,83 |
struct f70 |
func_n dd ? |
param1 dd ? |
param2 dd ? |
param3 dd ? |
param4 dd ? |
rezerv db ? |
name dd ? |
ends |
struct TexColViv |
Text rb MAX_COLOR_WORD_LEN ; á«®¢® ¤«ï ¯®¤á¢¥âª¨ |
f1 dd 0 ; á¯à ¢ª ¯® á«®¢ã |
wwo db ? ; whole words only |
endc db ? ; ᨬ¢®« ª®æ ¢ë¤¥«¥¨ï (wwo&4) |
color db ? ; ®¬¥à 梥â |
ends |
struct symbol |
c db ? ; +0 ᨬ¢®« |
col db ? ; +1 梥â |
perv dd ? ; +2 |
next dd ? ; +6 㪠§ ⥫¨ |
tc dd ? ; +10 ¢à¥¬. ᮧ¤ ¨ï |
td dd ? ; +14 ¢à¥¬. 㤠«¥¨ï |
ends |
hed db 'TextEditor 29.04.10',0 ;¯®¤¯¨áì ®ª |
sc system_colors |
fn_icon db 'te_icon.bmp',0 |
bmp_icon dd 0 |
run_file_70 f70 |
;input: |
; al = ª®¤ ®è¨¡ª¨ |
align 4 |
but_NewFile: |
ted_on_init_synt_err: |
mov byte[msgbox_3.err],al |
stdcall [mb_create],msgbox_3,thread ;message: Can-t open color options file! |
ret |
;----------------------------------------------------------------------------- |
;äãªæ¨ï ¤«ï ¢ë¤¥«¥¨ï ¯ ¬ï⨠|
;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 |
stdcall ted_can_save, tedit0 |
cmp ecx,0 |
jz @f |
mov eax,68 |
mov ebx,13 |
int 0x40 |
@@: |
pop ebx eax |
ret |
align 4 |
ted_but_new_file: |
push eax ebx |
stdcall [ted_can_save], tedit0 |
cmp al,1 |
jne @f |
stdcall [mb_create],msgbox_2,thread ;message: save changes in file? |
18,9 → 94,9 |
align 4 |
On_NewFile: |
stdcall ted_clear, tedit0,1 |
stdcall [ted_clear], tedit0,1 |
call draw_but_toolbar |
stdcall draw_main_win, tedit0 |
stdcall [ted_draw], tedit0 |
ret |
align 4 |
28,7 → 104,7 |
push edi |
mov edi, tedit0 |
stdcall but_SaveFile,edi |
stdcall [ted_but_save_file],edi,run_file_70,[edit1.text] |
cmp ted_err_save,0 |
jne @f |
call On_NewFile |
36,17 → 112,22 |
pop edi |
ret |
;description: |
; äãªæ¨ï ®âªàëâ¨ï ä ©« ¡¥§ ®ª® á®®¡é¥¨ï |
align 4 |
but_no_msg_OpenFile: ;äãªæ¨ï ®âªàëâ¨ï ä ©« ç¥à¥§ ¡¥§ ®ª® á®®¡é¥¨ï |
stdcall ted_on_open_file, tedit0 |
but_no_msg_OpenFile: |
push eax ebx |
stdcall [ted_open_file], tedit0,run_file_70,[edit1.text] |
call ted_messages_after_open_file |
pop ebx eax |
ret |
;description: |
;äãªæ¨ï ®âªàëâ¨ï ä ©« á ¢®§¬®¦ë¬ ®ª®¬ á®®¡é¥¨ï (® ¢®§¬®¦®á⨠®â¬¥¨âì ®âªàë⨥) |
align 4 |
but_OpenFile: |
push eax |
stdcall ted_can_save, tedit0 |
ted_but_open_file: |
push eax ebx |
stdcall [ted_can_save], tedit0 |
cmp al,1 |
jne @f |
stdcall [mb_create],msgbox_5,thread ;message: save changes in file? |
53,28 → 134,19 |
stdcall [mb_setfunctions],msgbox_5_funct |
jmp .ret_f |
@@: |
stdcall ted_on_open_file, tedit0 |
stdcall [ted_open_file], tedit0,run_file_70,[edit1.text] |
call ted_messages_after_open_file |
.ret_f: |
pop eax |
pop ebx eax |
ret |
;input: |
; eax = ª®¤ ®è¨¡ª¨ |
; ebx = ª®««¨ç¥á⢮ ¯à®ç¨â ëå ¡ ©â |
; edi = pointer to tedit struct |
align 4 |
proc ted_on_open_file, edit:dword ;äãªæ¨ï ®âªàëâ¨ï ä ©« |
push eax ebx edi |
mov edi,dword[edit] |
mov eax,70 |
mov [run_file_70.func_n], 0 |
mov [run_file_70.param1], 0 |
mov [run_file_70.param2], 0 |
mov [run_file_70.param3], maxChars-2 ;sizeof.symbol |
m2m [run_file_70.param4], ted_tex |
mov [run_file_70.rezerv], 0 |
push dword[edit1.text] |
pop dword[run_file_70.name] |
mov ebx,run_file_70 |
int 0x40 |
ted_messages_after_open_file: |
push ecx |
cmp eax,0 |
je @f |
cmp eax,6 |
93,435 → 165,75 |
cmp ebx,-1 |
je .ret_f |
;if open file |
call OpenFile |
cmp ebx,maxChars-2 |
mov ecx,ted_max_chars |
sub ecx,2 ;ecx = ¬ ªá¨¬ «ì®¥ ç¨á«® ¡ ©â, ¤«ï ª®â®àëå ¡ë« ¢ë¤¥«¥ ¯ ¬ïâì |
cmp ebx,ecx |
jl .ret_f |
stdcall [mb_create],msgbox_1,thread |
.ret_f: |
pop edi ebx eax |
pop ecx |
ret |
endp |
align 4 |
proc but_SaveFile, edit:dword |
pushad |
stdcall ted_can_save,edi |
cmp al,0 |
je .no_save |
mov edi,dword[edit] |
mov ecx,maxChars |
call mem_Alloc |
push eax |
mov edx,ted_tex |
xor ecx,ecx |
@@: |
call IteratNext |
cmp edx,ted_tex_1 |
jle @f ;edx = ted_tex or edx = ted_tex+sizeof.symbol |
mov bl,[edx] |
mov byte[eax],bl |
inc eax |
inc ecx |
jmp @b |
@@: |
cmp ecx,0 |
je @f |
pop eax |
mov [run_file_70.param4],eax |
push eax |
mov eax,70 |
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 |
push [edit1.text] |
pop [run_file_70.name] |
mov ebx,run_file_70 |
int 0x40 |
mov ted_err_save,ax |
cmp eax,0 |
je .no_msg |
; cmp eax,6 |
; je @f |
cmp ax,10 |
jl .zifra_0_9 |
mov al,'?' |
sub ax,48 |
.zifra_0_9: |
add ax,48 |
ted_save_err_msg: |
mov byte[msgbox_6.err],al |
stdcall [mb_create],msgbox_6,thread ;message: Can-t save text file! |
jmp @f |
.no_msg: |
m2m ted_tim_ls,ted_tim_ch |
@@: |
pop ecx |
call mem_Free |
.no_save: |
popad |
ret |
endp |
align 4 |
proc but_FindText, edit:dword |
pushad |
mov edi,dword[edit] |
call GetPos |
mov eax,[edit2.text] |
mov bl,byte[eax] |
@@: |
call GetFindRezult |
cmp bh,1 |
je @f ; find |
call IteratNext |
cmp edx,ted_tex_1 |
jle @f |
jmp @b |
@@: |
cmp bh,0 |
je @f |
call GetTexCoords |
inc ebx ;move cursor right |
mov ted_sel_x1,ebx |
mov ted_sel_y1,eax |
mov edx,eax |
mov ecx,ebx |
call GoToPos |
mov edx,esi ;esi ¡ë«® ãáâ ®¢«¥® ¢ GetFindRezult |
call GetTexCoords |
mov ted_sel_x0,ebx |
mov ted_sel_y0,eax |
stdcall draw_main_win,edi |
jmp .end_find |
@@: |
stdcall [mb_create],msgbox_7,thread ;message: Can not find text |
.end_find: |
popad |
ret |
endp |
;input: |
; eax - text need find |
; bl - first symbol to find |
; edx - first symbol pointer |
; edi - pointer to tedit struct |
;output: |
; bh - rezult |
; edx - last text position (if find sucess) |
; esi - first symbol pointer |
;description: |
; ãªæ¨ï ¯à®¢¥àï¥â ᮢ¯ ¤ ¥â «¨ ⥪áâ ¢ ¡ãä¥à¥ eax |
; á ⥪á⮬ । ªâ®à ¯® 㪠§ ⥫î edx. |
; â ¤ àâë¥ äãªæ¨¨ ( ¯à. strcmp) âãâ ¥ ¯®¤®©¤ãâ, ¯®â®¬ã çâ® |
; ¢ ¯ ¬ï⨠। ªâ®à ⥪áâ ᮤ¥à¦¨âáï ¥ ¢ ¢¨¤¥ ascii áâப. |
align 4 |
GetFindRezult: |
push eax |
mov bh,1 |
mov esi,edx ;copy edx |
@@: |
cmp byte[edx],bl |
jne .no_text |
inc eax ;*** get next symbol (in find text) *** |
mov bl,byte[eax] |
cmp bl,0 |
je @f ;end of find text |
call IteratNext ;*** get next symbol (in editor text) *** |
cmp edx,ted_tex_1 |
jle @f ;end of editor text |
jmp @b |
.no_text: |
xor bh,bh |
mov edx,esi ;restore edx |
@@: |
pop eax |
mov bl,byte[eax] ;restore bl |
ret |
align 4 |
proc ted_but_open_syntax, edit:dword |
push edi |
push ebx edi |
mov edi,dword[edit] |
cmp ted_panel_id,TE_PANEL_SYNTAX |
cmp ted_panel_id,TED_PANEL_SYNTAX |
jne @f |
stdcall dword[tl_node_get_data], tree1 |
pop dword[fn_col_option] |
stdcall InitColText,edi |
call CmColored |
stdcall draw_main_win,edi |
mov ebx,dword[fn_col_option] |
copy_path ebx,fn_syntax_dir,file_name_rez,0x0 |
copy_path file_name_rez,sys_path,file_name,0x0 |
stdcall [ted_init_syntax_file],edi,run_file_70,file_name |
call [ted_text_colored] |
stdcall [ted_draw],edi |
@@: |
pop edi |
pop edi ebx |
ret |
endp |
align 4 |
proc ted_but_select_word, edit:dword |
pushad |
mov edi,dword[edit] |
call GetPos |
push edx |
call ItPervColorTag |
cmp edx,ted_tex_1 |
jle @f |
call GetTexCoords |
mov ted_sel_x0,ebx |
mov ted_sel_y0,eax |
@@: |
pop edx |
call ItNextColorTag |
cmp edx,ted_tex_1 |
jle @f |
call GetTexCoords |
mov ted_sel_x1,ebx |
mov ted_sel_y1,eax |
@@: |
call draw_but_toolbar |
stdcall draw_main_win,edi |
popad |
ret |
endp |
align 4 |
proc ted_but_cut, edit:dword |
proc ted_but_find ;¢ë§®¢/áªàë⨥ ¯ ¥«¨ ¯®¨áª |
push edi |
mov edi,dword[edit] |
mov edi,tedit0 |
stdcall ted_but_copy,edi |
stdcall ted_set_undo,edi |
stdcall SelTextDel,ted_opt_ed_change_time |
cmp al,1 |
jne @f |
call draw_but_toolbar |
stdcall draw_main_win,edi |
@@: |
pop edi |
ret |
endp |
;output: |
; al = 1 if copy text |
align 4 |
proc ted_but_copy, edit:dword |
pushad |
mov edi,dword[edit] |
stdcall IsSel,edi |
cmp al,0 |
je .end_f ;if not selected text |
stdcall SelNormalize,edi |
mov esi,ted_seln_x1 |
mov ecx,ted_seln_y1 |
call GetPosByParam |
mov ebx,edx |
mov esi,ted_seln_x0 |
mov ecx,ted_seln_y0 |
call GetPosByParam |
mov esi,ebx |
xor ecx,ecx |
mov ebx,buf |
;mov edx,ted_tex |
@@: |
cmp edx,ted_tex_1 ;end of file |
jle @f |
cmp edx,esi ;end of select |
cmp ted_panel_id,TED_PANEL_NULL |
je @f |
inc ecx |
cmp ecx,BUF_SIZE ;owerflow bufer |
je @f |
mov al,byte[edx] |
mov byte[ebx],al |
inc ebx |
call IteratNext |
jmp @b |
@@: |
add ecx,buf |
mov byte[ebx],0 |
cmp ecx,0 |
je .end_f |
call draw_but_toolbar |
stdcall draw_bufer,edi |
.end_f: |
popad |
ret |
endp |
align 4 |
proc ted_but_paste, edit:dword |
push eax ebx esi edi |
mov edi,dword[edit] |
mov esi,buf |
call strlen |
cmp eax,1 |
jl @f |
stdcall ted_set_undo,edi |
mov esi,eax |
mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
stdcall SelTextDel,ebx |
cmp al,1 |
jne .del |
mov ebx,ted_opt_ed_move_cursor |
.del: |
stdcall ted_text_add,edi,buf,esi,ebx |
call draw_but_toolbar |
stdcall draw_main_win,edi |
@@: |
pop edi esi ebx eax |
ret |
endp |
align 4 |
proc but_find, edit:dword ;¢ë§®¢/áªàë⨥ ¯ ¥«¨ ¯®¨áª |
push edi |
mov edi,dword[edit] |
cmp ted_panel_id,TE_PANEL_NULL |
je @f |
mov ted_panel_id,TE_PANEL_NULL |
mov ted_panel_id,TED_PANEL_NULL |
mov ted_wnd_l,0 |
jmp .e_if |
@@: |
mov ted_panel_id,TE_PANEL_FIND |
mov ted_wnd_l,TE_PANEL_WIDTH |
mov ted_panel_id,TED_PANEL_FIND |
mov ted_wnd_l,TED_PANEL_WIDTH |
.e_if: |
stdcall EvSize,edi |
stdcall draw_main_win,edi |
stdcall [ted_draw],edi |
pop edi |
ret |
endp |
align 4 |
but_replace: |
ted_on_find_err: |
stdcall [mb_create],msgbox_7,thread ;message: Can not find text |
ret |
align 4 |
but_find_key_w: |
but_replace: |
ret |
align 4 |
proc but_sumb_upper, edit:dword |
push edi esi |
mov edi,dword[edit] |
mov [conv_table],EvUpper |
call ConvertSelText |
cmp esi,0 |
je @f |
stdcall draw_main_win,edi |
@@: |
pop esi edi |
but_find_key_w: |
ret |
endp |
align 4 |
proc but_sumb_lover, edit:dword |
push edi esi |
mov edi,dword[edit] |
mov [conv_table],EvLover |
call ConvertSelText |
cmp esi,0 |
je @f |
stdcall draw_main_win,edi |
@@: |
pop esi edi |
ret |
endp |
align 4 |
proc but_reverse, edit:dword |
push eax ebx edi |
mov edi,dword[edit] |
stdcall IsSel,edi |
cmp al,0 |
je @f |
stdcall SelNormalize,edi |
push esi ecx edx |
mov esi,ted_seln_x0 |
mov ecx,ted_seln_y0 |
call GetPosByParam |
mov eax,edx |
mov esi,ted_seln_x1 |
cmp esi,0 |
je .beg_str |
dec esi |
.beg_str: |
mov ecx,ted_seln_y1 |
call GetPosByParam |
;call GetTexPervPos |
mov ebx,edx |
pop edx ecx esi |
;cmp eax,... |
;je @f |
call Revers |
@@: |
stdcall draw_main_win,edi |
pop edi ebx eax |
ret |
endp |
align 4 |
proc ted_but_undo, edit:dword |
push eax edi |
mov edi,dword[edit] |
mov eax,ted_tim_undo |
cmp ted_tim_ch,eax |
jbe @f |
inc ted_tim_undo |
;call CmColored |
stdcall draw_main_win,edi |
call draw_but_toolbar |
@@: |
pop edi eax |
ret |
endp |
align 4 |
proc ted_but_redo, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_tim_undo,1 |
jb @f |
dec ted_tim_undo |
;call CmColored |
stdcall draw_main_win,edi |
call draw_but_toolbar |
@@: |
pop edi |
ret |
endp |
align 4 |
proc but_sumb_invis, edit:dword |
push edi |
mov edi,dword[edit] |
528,7 → 240,7 |
xor ted_mode_invis,1 |
call draw_but_toolbar |
stdcall draw_main_win,edi |
stdcall [ted_draw],edi |
pop edi |
ret |
endp |
541,153 → 253,30 |
xor ted_mode_color,1 |
cmp ted_mode_color,0 |
je @f |
call CmColored |
call [ted_text_colored] |
@@: |
call draw_but_toolbar |
stdcall draw_main_win,edi |
stdcall [ted_draw],edi |
pop edi |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
but_CtrlHome: |
mov ted_cur_x,0 |
mov ted_cur_y,0 |
push eax |
mov eax,ted_scr_w |
mov dword[eax+sb_offs_position],0 |
mov eax,ted_scr_h |
mov dword[eax+sb_offs_position],0 |
pop eax |
call draw_but_toolbar |
stdcall draw_main_win,edi |
ret |
align 4 |
proc but_synt_show, edit:dword |
push edi |
mov edi,[edit] |
cmp ted_panel_id,TE_PANEL_NULL |
cmp ted_panel_id,TED_PANEL_NULL |
je @f |
mov ted_panel_id,TE_PANEL_NULL |
mov ted_panel_id,TED_PANEL_NULL |
mov ted_wnd_l,0 |
jmp .e_if |
@@: |
mov ted_panel_id,TE_PANEL_SYNTAX |
mov ted_wnd_l,TE_PANEL_WIDTH |
mov ted_panel_id,TED_PANEL_SYNTAX |
mov ted_wnd_l,TED_PANEL_WIDTH |
.e_if: |
stdcall EvSize,edi |
stdcall draw_main_win,edi |
stdcall [ted_draw],edi |
pop edi |
ret |
endp |
align 4 |
proc ted_sel_key_up, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_drag_k,1 |
je @f |
stdcall SelStart,edi |
mov ted_drag_k,1 |
@@: |
push dx |
call CurMoveUp |
cmp dl,8 |
jne @f |
call OnInitialUpdate |
@@: |
pop dx |
stdcall SelMove,edi |
stdcall draw_main_win,edi |
pop edi |
ret |
endp |
align 4 |
proc ted_sel_key_down, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_drag_k,1 |
je @f |
stdcall SelStart,edi |
mov ted_drag_k,1 |
@@: |
push dx |
call CurMoveDown |
cmp dl,8 |
jne @f |
call OnInitialUpdate |
@@: |
pop dx |
stdcall SelMove,edi |
stdcall draw_main_win,edi |
pop edi |
ret |
endp |
align 4 |
proc ted_sel_key_left, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_drag_k,1 |
je @f |
stdcall SelStart,edi |
@@: |
push dx |
call CurMoveLeft |
stdcall SelMove,edi |
cmp ted_drag_k,1 |
je @f |
mov ted_drag_k,1 |
mov dl,8 |
@@: |
cmp dl,8 |
jne @f |
call OnInitialUpdate |
stdcall draw_main_win,edi |
jmp .end_f |
@@: |
stdcall draw_cur_line,edi |
.end_f: |
pop dx |
pop edi |
ret |
endp |
align 4 |
proc ted_sel_key_right, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_drag_k,1 |
je @f |
stdcall SelStart,edi |
@@: |
push dx |
call CurMoveRight |
stdcall SelMove,edi |
cmp ted_drag_k,1 |
je @f |
mov ted_drag_k,1 |
mov dl,8 |
@@: |
cmp dl,8 |
jne @f |
call OnInitialUpdate |
stdcall draw_main_win,edi |
jmp .end_f |
@@: |
stdcall draw_cur_line,edi |
.end_f: |
pop dx |
pop edi |
ret |
endp |
/programs/other/t_edit/t_data.inc |
---|
72,6 → 72,32 |
tl_node_close_open dd sz_tl_node_close_open |
tl_node_lev_inc dd sz_tl_node_lev_inc |
tl_node_lev_dec dd sz_tl_node_lev_dec |
ted_but_save_file dd sz_ted_but_save_file |
ted_but_sumb_upper dd sz_ted_but_sumb_upper |
ted_but_sumb_lover dd sz_ted_but_sumb_lover |
ted_can_save dd sz_ted_can_save |
ted_clear dd sz_ted_clear |
ted_delete dd sz_ted_delete |
ted_draw dd sz_ted_draw |
ted_init dd sz_ted_init |
ted_init_syntax_file dd sz_ted_init_syntax_file |
ted_is_select dd sz_ted_is_select |
ted_key dd sz_ted_key |
ted_mouse dd sz_ted_mouse |
ted_open_file dd sz_ted_open_file |
ted_text_add dd sz_ted_text_add |
ted_but_select_word dd sz_ted_but_select_word |
ted_but_cut dd sz_ted_but_cut |
ted_but_copy dd sz_ted_but_copy |
ted_but_paste dd sz_ted_but_paste |
ted_but_undo dd sz_ted_but_undo |
ted_but_redo dd sz_ted_but_redo |
ted_but_reverse dd sz_ted_but_reverse |
ted_but_find_next dd sz_ted_but_find_next |
ted_text_colored dd sz_ted_text_colored |
;;;version_text_edit dd sz_ted_version |
dd 0,0 |
aEdit_box_draw db 'edit_box',0 |
119,6 → 145,31 |
sz_tl_node_close_open db 'tl_node_close_open',0 |
sz_tl_node_lev_inc db 'tl_node_lev_inc',0 |
sz_tl_node_lev_dec db 'tl_node_lev_dec',0 |
sz_ted_but_save_file db 'ted_but_save_file',0 |
sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0 |
sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0 |
sz_ted_can_save db 'ted_can_save',0 |
sz_ted_clear db 'ted_clear',0 |
sz_ted_delete db 'ted_delete',0 |
sz_ted_draw db 'ted_draw',0 |
sz_ted_init db 'ted_init',0 |
sz_ted_init_syntax_file db 'ted_init_syntax_file',0 |
sz_ted_is_select db 'ted_is_select',0 |
sz_ted_key db 'ted_key',0 |
sz_ted_mouse db 'ted_mouse',0 |
sz_ted_open_file db 'ted_open_file',0 |
sz_ted_text_add db 'ted_text_add',0 |
sz_ted_but_select_word db 'ted_but_select_word',0 |
sz_ted_but_cut db 'ted_but_cut',0 |
sz_ted_but_copy db 'ted_but_copy',0 |
sz_ted_but_paste db 'ted_but_paste',0 |
sz_ted_but_undo db 'ted_but_undo',0 |
sz_ted_but_redo db 'ted_but_redo',0 |
sz_ted_but_reverse db 'ted_but_reverse',0 |
sz_ted_but_find_next db 'ted_but_find_next',0 |
sz_ted_text_colored db 'ted_text_colored',0 |
;;;sz_ted_version db 'version_text_edit',0 |
;-------------------------------------------------- |
align 4 |
msgbox_lib_import: |
275,10 → 326,10 |
.get_mouse_flag dd 0 ;+116 |
;------------------------- |
TE_PANEL_NULL equ 0 |
TE_PANEL_FIND equ 1 |
TE_PANEL_SYNTAX equ 2 |
TE_PANEL_WIDTH equ 150 ;øèðèíà ïàíåëè |
TED_PANEL_NULL equ 0 ;¥â ®âªàë⮩ ¯ ¥«¨ |
TED_PANEL_FIND equ 1 ;¯ ¥«ì ¯®¨áª |
TED_PANEL_SYNTAX equ 2 ;¯ ¥«ì ¢ë¡®à ä ©«®¢ ¯®¤á¢¥âª¨ |
TED_PANEL_WIDTH equ 150 ;è¨à¨ ¯ ¥«¨ |
count_of_dir_list_files equ 15 |
290,75 → 341,6 |
y1 dd ? |
ends |
;------------------------------------------------------------------------------ |
ted_wnd_l equ dword[edi+ 0] ;®ª® । ªâ®à : ®âáâ㯠᫥¢ |
ted_wnd_t equ dword[edi+ 4] ;®ª® । ªâ®à : ®âáâ㯠ᢥàåã |
ted_wnd_w equ dword[edi+ 8] ;®ª® । ªâ®à : è¨à¨ |
ted_wnd_h equ dword[edi+12] ;®ª® । ªâ®à : ¢ëá®â |
ted_rec_l equ dword[edi+16] ;è¨à¨ ¯ ¥«¨ ¢ ®ª¥ |
ted_rec_t equ dword[edi+20] ;¢ëá®â ¯ ¥«¨ ¢ ®ª¥ |
ted_rec_w equ dword[edi+24] ;è¨à¨ ᨬ¢®« (§ ª®¬¥áâ ) ¢ ®ª¥ |
ted_rec_h equ dword[edi+28] ;¢ëá®â ᨬ¢®« (§ ª®¬¥áâ ) ¢ ®ª¥ |
ted_drag_m equ byte[edi+32] ;¢ë¤¥«¥¨¥ ®â ¬ëè¨ |
ted_drag_k equ byte[edi+33] ;¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë |
ted_sel_x0 equ dword[edi+34] ;ª®®à¤¨ ⠢뤥«¥¨ï x0 |
ted_sel_y0 equ dword[edi+38] ;ª®®à¤¨ ⠢뤥«¥¨ï y0 |
ted_sel_x1 equ dword[edi+42] ;ª®®à¤¨ ⠢뤥«¥¨ï x1 |
ted_sel_y1 equ dword[edi+46] ;ª®®à¤¨ ⠢뤥«¥¨ï y1 |
;§ ¯ áë¥ ª®®à¤¨ âë ¢ë¤¥«¥¨ï |
ted_seln_x0 equ dword[edi+50] |
ted_seln_y0 equ dword[edi+54] |
ted_seln_x1 equ dword[edi+58] |
ted_seln_y1 equ dword[edi+62] |
ted_tex equ dword[edi+66] ;㪠§ â¥«ì ¯ ¬ïâì ¤«ï åà ¥¨ï ⥪áâ |
ted_tex_1 equ dword[edi+70] ;㪠§ ⥫ì 1-î áâàªãâàã ᨬ¢®« |
ted_tex_end equ dword[edi+74] ;㪠§ â¥«ì ¯®á«¥¤îî áâàãªâãàã ᨬ¢®« |
ted_cur_x equ dword[edi+78] ;ª®®à¤¨ â x ªãàá®à |
ted_cur_y equ dword[edi+82] ;ª®®à¤¨ â y ªãàá®à |
ted_cur_ins equ byte[edi+86] ;०¨¬ à ¡®âë ªãàá®à (®¡ëçë© ¨«¨ § ¬¥ ) |
ted_mode_color equ byte[edi+87] ;०¨¬ ¢ë¤¥«¥¨ï á«®¢ 梥⮬ (0-¢ëª«. 1-¢ª«.) |
ted_mode_invis equ byte[edi+88] ;०¨¬ ¯®ª § ¥¯¥ç â ¥¬ëå ᨬ¢®«®¢ |
ted_gp_opt equ byte[edi+89] ;®¯æ¨¨ ¢®§¢à é ¥¬ë¥ äãªæ¨¥© GetPos |
ted_colors_text_count equ dword[edi+90] ;ª®««¨ç¥á⢮ 梥⮢ ⥪áâ |
ted_key_words_count equ dword[edi+94] ;ª®««¨ç¥á⢮ ª«î祢ëå á«®¢ |
ted_color_cursor equ dword[edi+98] ;梥⠪ãàá®à |
ted_color_wnd_capt equ dword[edi+102] ;梥⠯®«¥© ¢®ªà㣠®ª |
ted_color_wnd_work equ dword[edi+106] ;梥â ä® ®ª |
ted_color_wnd_bord equ dword[edi+110] ;梥â ⥪áâ ¯®«ïå |
ted_color_select equ dword[edi+114] ;梥⠢뤥«¥¨ï |
ted_color_cur_text equ dword[edi+118] ;梥â ᨬ¢®« ¯®¤ ªãàá®à®¬ |
ted_color_wnd_text equ dword[edi+122] ;梥â ⥪áâ ¢ ®ª¥ |
ted_syntax_file equ dword[edi+126] ;㪠§ ⥫ì ç «® ä ©« á¨â ªá¨á |
ted_syntax_file_end equ dword[edi+130] ;㪠§ â¥«ì ª®¥æ ä ©« á¨â ªá¨á |
ted_text_colors equ dword[edi+134] ;㪠§ â¥«ì ¬ áᨢ 梥⮢ ⥪áâ |
ted_help_text_f1 equ dword[edi+138] ;㪠§ ⥫ì ⥪áâ á¯à ¢ª¨ (¯® ¦ ⨨ F1) |
ted_help_id equ dword[edi+142] ;¨¤¥â¨ä¨ª â®à ¤«ï á¯à ¢ª¨ |
ted_key_words_data equ dword[edi+146] ;㪠§ ⥫ì áâàãªâãàë ª«î祢ëå á«®¢ TexColViv |
ted_tim_ch equ dword[edi+150] ;ª®««¨ç¥á⢮ ¨§¬¥¥¨© ¢ ä ©«¥ |
ted_tim_undo equ dword[edi+154] ;ª®««¨ç¥á⢮ ®â¬¥¥ëå ¤¥©á⢨© |
ted_tim_ls equ dword[edi+158] ;¢à¥¬ï ¯®á«¥¤¥£® á®åà ¥¨ï |
ted_tim_co equ dword[edi+162] ;¢à¥¬ï ¯®á«¥¤¥© 梥⮢®© à §¬¥âª¨ |
ted_el_focus equ dword[edi+166] ;㪠§ â¥«ì ¯¥à¥¬¥ãî í«¥¬¥â ¢ 䮪ãᥠ|
ted_err_save equ word[edi+170] ;®è¨¡ª á®åà ¥¨ï ä ©« |
ted_key_new equ byte[edi+172] ;ᨬ¢®«, ª®â®àë© ¡ã¤¥â ¤®¡ ¢«ïâáï á ª« ¢¨ âãàë |
ted_symbol_new_line equ byte[edi+173] ;ᨬ¢®« § ¢¥à襨ï áâப¨ |
ted_scr_w equ dword[edi+174] ;¢¥à⨪ «ìë© áªà®««¨£ |
ted_scr_h equ dword[edi+178] ;£®à¨§®â «ìë© áªà®««¨£ |
ted_panel_id equ byte[edi+182] ;®¬¥à ®âªàë⮩ ¯ ¥«¨ |
;------------------------------------------------------------------------------ |
sb_offs_max_area equ 16 |
sb_offs_cur_area equ 20 |
sb_offs_position equ 24 |
sb_offs_redraw equ 40 |
;------------------------------------------------------------------------------ |
ted_opt_ed_move_cursor equ 1 ;¤¢¨£ âì ªãàá®à ¯®á«¥ ¤®¡ ¢«¥¨ï ⥪áâ |
ted_opt_ed_change_time equ 2 ;¤®¡ ¢«ïâì ¨§¬¥¥¨ï ¯à¨ । ªâ¨à®¢ ¨¨ ⥪áâ |
ted_offs_sel equ 34 ;ᬥ饨¥ áâàãªâãàë sel |
ted_offs_seln equ 50 ;ᬥ饨¥ áâàãªâãàë seln |
ted_offs_count_colors equ 90 ;ᬥ饨¥ ¯¥à¥¬¥®© ª®««¨ç¥á⢠梥⮢ |
ted_offs_key_new equ 172 |
ted_offs_symbol_new_line equ 173 ;ᬥ饨¥ ᨬ¢®« ®¢®© áâப¨ |
;------------------------------------------------------------------------------ |
align 4 |
tedit0: ;áâàãªâãà ⥪á⮢®£® । ªâ®à |
.wnd BOX 0,50,440,150 ;+ 0 |
370,12 → 352,9 |
.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 |
.cur_y dd 0 ;+82 |
.cur_ins db 1 ;+86 |
.mode_color db 1 ;+87 ०¨¬ ¢ë¤¥«¥¨ï á«®¢ 梥⮬ (0-¢ëª«. 1-¢ª«.) |
.mode_invis db 0 ;+88 ०¨¬ ¯®ª § ¥¯¥ç â ¥¬ëå ᨬ¢®«®¢ |
.gp_opt db 0 ;+89 ®¯æ¨¨ ¢®§¢à é ¥¬ë¥ äãªæ¨¥© GetPos |
.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 ª®««¨ç¥á⢮ ª«î祢ëå á«®¢ |
388,7 → 367,7 |
.color_wnd_text dd 0xffff00 ;+122 梥â ⥪áâ ¢ ®ª¥ |
; /\ ¤à㣨¥, ¨¤ã騥 ¨¦¥ ¬®¦® à §àë¢ âì. |
.syntax_file dd 0 ;+126 㪠§ ⥫ì ç «® ä ©« á¨â ªá¨á |
.syntax_file_end dd 0 ;+130 㪠§ â¥«ì ª®¥æ ä ©« á¨â ªá¨á |
.syntax_file_size dd maxSyntaxFileSize ;+130 ¬ ªá¨¬ «ìë© à §¬¥à ä ©« á¨â ªá¨á |
.text_colors dd 0 ;+134 㪠§ â¥«ì ¬ áᨢ 梥⮢ ⥪áâ |
.help_text_f1 dd 0 ;+138 㪠§ ⥫ì ⥪áâ á¯à ¢ª¨ (¯® ¦ ⨨ F1) |
.help_id dd -1 ;+142 ¨¤¥â¨ä¨ª â®à ¤«ï á¯à ¢ª¨ |
398,22 → 377,39 |
.tim_ls dd ? ;+158 ¢à¥¬ï ¯®á«¥¤¥£® á®åà ¥¨ï |
.tim_co dd ? ;+162 ¢à¥¬ï ¯®á«¥¤¥© 梥⮢®© à §¬¥âª¨ |
.el_focus dd el_focus ;+166 㪠§ â¥«ì ¯¥à¥¬¥ãî í«¥¬¥â ¢ 䮪ãᥠ|
.err_save dw 0 ;+170 ®è¨¡ª á®åà ¥¨ï ä ©« |
.err_save db 0 ;+170 ®è¨¡ª á®åà ¥¨ï ä ©« |
.panel_id db 0 ;+171 ®¬¥à ®âªàë⮩ ¯ ¥«¨ |
.key_new db 0 ;+172 ᨬ¢®«, ª®â®àë© ¡ã¤¥â ¤®¡ ¢«ïâáï á ª« ¢¨ âãàë |
.symbol_new_line db 20 ;+173 ᨬ¢®« § ¢¥à襨ï áâப¨ |
.scr_w dd wScr ;+174 ¢¥à⨪ «ìë© áªà®««¨£ |
.scr_h dd hScr ;+178 £®à¨§®â «ìë© áªà®««¨£ |
.panel_id db 0 ;+182 ®¬¥à ®âªàë⮩ ¯ ¥«¨ |
.arr_key_pos dd 0 ;+182 㪠§ â¥«ì ¬ áᨢ ¯®§¨æ¨© ª«î祢ëå á«®¢ |
.buffer dd buf ;+186 㪠§ â¥«ì ¡ãä¥à ª®¯¨à®¢ ¨ï/¢áâ ¢ª¨ |
.buffer_find dd buf_find ;+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 ted_but_open_file ;+198 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+O (®âªàë⨥ ä ©« ) |
.fun_on_key_ctrl_f dd ted_but_find ;+202 ... Ctrl+F (¢ë§®¢ /áªàëâ¨ï ¯ ¥«¨ ¯®¨áª ) |
.fun_on_key_ctrl_n dd ted_but_new_file ;+206 ... Ctrl+N (ᮧ¤ ¨¥ ®¢®£® ¤®ªã¬¥â ) |
.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S |
.buffer_size dd BUF_SIZE ;+214 à §¬¥à ¡ãä¥à ª®¯¨à®¢ ¨ï/¢áâ ¢ª¨ |
.fun_find_err dd ted_on_find_err ;+218 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ ¯®¨áª § ª®ç¨«áï ¥ã¤ ç® |
.fun_init_synt_err dd ted_on_init_synt_err ;+222 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ®è¨¡®ç®¬ ®âªàë⨨ ä ©« á¨â ªá¨á |
.fun_draw_panel_buttons dd draw_but_toolbar ;+226 㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ á ª®¯ª ¬¨ |
.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 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ á®åà ¥¨¥ ä ©« § ª®ç¨«®áì ¥ã¤ ç® |
;------------------------------------------------------------------------------ |
FkPos: rd 256 |
conv_tabl rb 128 ; â ¡«¨æ ¤«ï ª®¢¥àâ¨à®¢ ¨ï scan-ª®¤ ¢ ascii-ª®¤ |
buf db BUF_SIZE dup(0) |
el_focus dd 0 |
mouse_dd dd 0 |
tree1 tree_list 264,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ |
16,16, 0x8080ff,0x0000ff,0xffffff, 0,70,TE_PANEL_WIDTH-17,120, 0,0,0, el_focus,\ |
16,16, 0x8080ff,0x0000ff,0xffffff, 0,70,TED_PANEL_WIDTH-17,120, 0,0,0, el_focus,\ |
ws_dir_lbox,0 |
;dir_list memory |
426,7 → 422,6 |
dir_mem rb 32+304*count_of_dir_list_files |
if lang eq ru |
menu_text_area: |
525,11 → 520,6 |
txtFindNext db ' ©â¨ ¤ «¥¥',0 |
txtFormatCapt db '®à¬ â',0 |
txtFormatApply db 'ਬ¥¨âì',0 |
txtRow db 'âப ',0 |
txtCol db ' ª',0 |
txtOtm db '⬥ë',0 |
txtBuf db 'ãä¥à: ' |
buf db BUF_SIZE dup(0) ;buf âñåãäà ïîñëå txtBuf |
else |
629,67 → 619,10 |
txtFindNext db 'Find next',0 |
txtFormatCapt db 'Format',0 |
txtFormatApply db 'Apply',0 |
txtRow db 'Rows',0 |
txtCol db 'Cols',0 |
txtOtm db 'Undo',0 |
txtBuf db 'Buffer: ' |
buf db BUF_SIZE dup(0) ;buf always after txtBuf |
end if |
;------ |
align 4 |
EvChar db 0,0,0,0,0,0,0,0,0,0,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 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
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 |
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 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 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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79 |
db 80,81,82,83,84,85,86,87,88,89,90,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 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 |
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 |
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 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
db 0,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111 |
db 112,113,114,115,116,117,118,119,120,121,122,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 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 |
conv_table dd 0 |
KM_SHIFT equ 0x00010000 |
KM_CTRL equ 0x00020000 |
KM_ALT equ 0x00040000 |
/programs/other/t_edit/t_draw.inc |
---|
1,133 → 1,6 |
align 4 |
proc mouse_wnd_main, edit:dword |
push eax ebx ecx edi |
mcall 37,2 ;get mouse buttons |
mov edi,dword[edit] |
cmp al,1 |
jne @f |
mcall 37,1 ;get mouse coords |
mov ebx,ted_wnd_t |
add ebx,ted_rec_t |
cmp ax,bx |
jl @f ;y_mouse<y_wnd |
sub ebx,ted_rec_t |
add ebx,ted_wnd_h |
cmp bx,ax |
jl @f ;y_mouse>y_wnd |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
mov ecx,eax |
shr ecx,16 |
cmp cx,bx |
jl @f ;x_mouse<x_wnd |
sub ebx,ted_rec_l |
add ebx,ted_wnd_w |
cmp bx,cx |
jl @f ;x_mouse>x_wnd |
stdcall draw_cursor_sumb, tedit0 |
call wnd_main_click |
jmp .no_in_wnd |
@@: |
call wnd_main_mouse_scroll |
cmp ted_drag_m,0 |
je .no_in_wnd |
mov ted_drag_m,0 |
call draw_but_toolbar |
stdcall draw_main_win, tedit0 |
.no_in_wnd: |
pop edi ecx ebx eax |
ret |
endp |
;input: |
; eax -> (x,y) |
; edi -> óêàçàòåëü íà ñòðóêòóðó tedit |
;description: |
; ôóíêöèÿ âûçûâåòñÿ ïðè íàæàòèè êíîïêîé ìûøè è ïîïàäåíèè êóðñîðîì â îêíî ðåäàêòîðà |
align 4 |
wnd_main_click: |
push ecx edx |
push eax |
shr eax,16 |
and eax,0xffff |
sub eax,ted_wnd_l |
sub eax,ted_rec_l |
xor edx,edx |
mov ecx,ted_rec_w |
div cx |
;inc eax |
cmp eax,[hScr.cur_area] |
jle @f |
mov eax,[hScr.cur_area] |
@@: |
;dec eax |
mov ted_cur_x,eax |
pop eax |
push eax |
and eax,0xffff |
sub eax,ted_wnd_t |
sub eax,ted_rec_t |
xor edx,edx |
mov ecx,ted_rec_h |
div cx |
inc eax |
cmp eax,[wScr.cur_area] |
jle @f |
mov eax,[wScr.cur_area] |
@@: |
dec eax |
mov ted_cur_y,eax |
pop eax |
cmp ted_drag_m,0 |
je @f |
stdcall SelMove,edi |
jmp .sel_move |
@@: |
mov ted_drag_m,1 |
stdcall SelStart,edi |
.sel_move: |
pop edx ecx |
ret |
align 4 |
wnd_main_mouse_scroll: |
push eax ebx |
mcall 37,7 |
cmp ax,0 |
je .no_scroll |
mov ebx,dword[wScr.position] ;copy old scroll position |
and eax,0xffff |
btr ax,15 |
jae @f |
or eax,0xffff8000 |
@@: |
add dword[wScr.position],eax |
mov eax,[wScr.position] |
cmp eax,[wScr.max_area] |
jb @f |
mov dword[wScr.position],ebx ;if scroll position out of range |
jmp .no_scroll |
@@: |
stdcall draw_main_win, tedit0 |
.no_scroll: |
pop ebx eax |
ret |
align 4 |
draw_but_toolbar: ;âíåøíÿÿ ôóíêöèÿ äëÿ ðèñîâàíèÿ ïàíåëè èíñòðóìåíòîâ |
push ebx ecx edx edi |
draw_but_toolbar: ;ôóíêöèÿ äëÿ ðèñîâàíèÿ ïàíåëè èíñòðóìåíòîâ |
pushad |
mov edi,tedit0 |
mov ecx,0x40000000 |
140,7 → 13,7 |
mov edx,110*65536+2 |
call draw_but_icon |
stdcall ted_can_save,edi |
stdcall [ted_can_save],edi |
cmp al,1 |
je @f |
and ecx,0xffff |
155,7 → 28,7 |
mov edx,85*65536+25 |
call draw_but_icon |
stdcall IsSel,edi |
call [ted_is_select] |
cmp al,0 |
jne @f |
and ecx,0xffff |
176,7 → 49,7 |
mov edx,290*65536+25 |
call draw_but_icon |
inc cx ; Reverse |
inc cx ; reverse |
mov edx,315*65536+25 |
call draw_but_icon |
or ecx,0x40000000 |
233,262 → 106,26 |
mov edx,450*65536+25 |
call draw_but_icon |
pop edi edx ecx ebx |
ret |
;input: |
; clear_o - åñëè =1 î÷èñòèòü îäíó ñòðîêó, =0 î÷èñòèòü âñå ñòðîêè îêíà äî íèçó |
align 4 |
proc clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_lin:dword |
pushad |
mov edi,dword[edit] |
mov ebx,dword[coords] ;ebx = x*2^16+y coords to left up point clear line |
mov esi,dword[numb_lin] ;esi - number text line |
sub ebx,0x10001 ;îòíèìàåì îòñòóïû äëÿ âûðàâíèâàíèÿ áóêâû ïî öåíòðó |
cmp dword[clear_o],0 |
jne @f |
add ebx,ted_rec_h |
inc esi |
ror ebx,16 |
xor bx,bx |
add ebx,ted_wnd_l |
add ebx,ted_rec_l ;bx = ted_wnd_l+ted_rec_l |
ror ebx,16 |
@@: |
mov eax,ted_wnd_h |
add eax,ted_wnd_t |
cmp ax,bx |
jl .no_clear |
sub ax,bx |
mov cx,bx |
shl ecx,16 |
xor bx,bx |
add ebx,ted_wnd_w |
sub ebx,ted_rec_l |
xor cx,cx |
add ecx,ted_rec_h |
mov edx,ted_color_wnd_work |
cmp dword[clear_o],0 |
je .pusto |
cmp ax,cx |
jge @f |
.pusto: |
mov cx,ax |
@@: |
stdcall IsSel,edi |
cmp al,0 |
je @f |
cmp ted_seln_y0,esi |
jg @f |
cmp ted_seln_y1,esi |
jl @f |
mov edx,ted_color_select ;draw selected line |
@@: |
mov eax,13 ;rect |
int 0x40 |
stdcall IsSel,edi |
cmp al,0 |
je .no_clear |
mov al,13 ;rect |
xor cx,cx |
add ecx,ted_rec_h |
cmp ted_seln_y0,esi |
jne @f |
push bx |
mov edx,ted_seln_x0 ; âåðõíÿÿ ïîëîñà (çàòèðàåò ñëåâà) |
cmp edx,[hScr.position] |
jle .in_wnd |
sub edx,[hScr.position] |
imul edx,ted_rec_w |
mov bx,dx |
jmp .no_wnd |
.in_wnd: |
mov bx,0 |
.no_wnd: |
mov edx,ted_color_wnd_work |
int 0x40 |
pop bx |
@@: |
cmp ted_seln_y1,esi |
jne @f |
mov edx,ted_seln_x1 ; íèæíÿÿ ïîëîñà (çàòèðàåò ñïðàâà) |
cmp edx,[hScr.position] |
jle .in_wnd2 |
sub edx,[hScr.position] |
imul edx,ted_rec_w |
sub bx,dx |
shl edx,16 |
add ebx,edx |
.in_wnd2: |
mov edx,ted_color_wnd_work |
int 0x40 |
@@: |
.no_clear: |
popad |
ret |
endp |
align 4 |
proc draw_main_win, edit:dword |
locals |
line_num dd ? |
endl |
pushad |
mov edi,dword[edit] |
mov eax,4 ;draw text |
mov ecx,ted_text_colors |
mov ecx,dword[ecx] |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,ted_rec_t |
add ebx,0x10001 ;äîáàâëÿåì îòñòóïû äëÿ âûðàâíèâàíèÿ áóêâû ïî öåíòðó |
stdcall SelNormalize,edi ;need before draw select |
mov esi,[wScr.position] |
mov dword[line_num],esi |
stdcall clear_line_before_draw, edi,ebx,1,esi |
call GetFirstVisiblePos |
cmp edx,0 |
je .no_draw_text |
mov esi,1 ;äëèííà âûâîäèìîãî òåêñòà ïî 1-ìó ñèìâîëó |
@@: |
call IteratNext |
cmp edx,ted_tex_1 |
jle .no_draw_text |
; *** öâåòîâàÿ ðàçìåòêà |
cmp ted_mode_color,0 |
je .no_col_change |
cmp byte[edx+1],0 |
je .no_col_change |
call GetSymbColor |
.no_col_change: |
cmp byte [edx],13 |
jne .no_13 |
cmp ted_mode_invis,1 |
jne .no_invis |
push edx |
mov edx,edi |
add edx,ted_offs_symbol_new_line |
int 0x40 |
pop edx |
.no_invis: |
add ebx,ted_rec_h |
;optimized output \/ |
mov eax,ted_wnd_h |
add eax,ted_wnd_t |
cmp bx,ax |
jg .no_draw_text |
mov eax,4 |
;optimized output /\ |
and ebx,0xffff |
ror ebx,16 |
add ebx,ted_wnd_l |
add ebx,ted_rec_l |
inc ebx |
ror ebx,16 |
inc dword[line_num] ;increment line number |
stdcall clear_line_before_draw,edi,ebx,1,dword[line_num] |
call OptDrawLineLeft |
jmp @b |
.no_13: |
int 0x40 |
ror ebx,16 |
add ebx,ted_rec_w |
mov esi,ted_wnd_l |
add esi,ted_wnd_w |
cmp bx,si |
jl .no_opt |
call OptDrawLineRight |
.no_opt: |
mov si,1 |
ror ebx,16 |
jmp @b |
.no_draw_text: |
stdcall clear_line_before_draw,edi,ebx,0,dword[line_num] |
stdcall draw_line_numbers,edi |
stdcall draw_main_cursor,edi |
;--------------------------------------------- |
; set all_redraw flag for draw all ScrollBar |
; In some cases it is necessity to draw only the area |
; of moving of a "runner", for acceleration of output - |
; in this case the flag needs to be reset to 0 (zero). |
xor eax,eax |
inc eax |
mov [wScr.all_redraw],eax |
mov [hScr.all_redraw],eax |
; draw for Vertical ScrollBar |
stdcall [scrollbar_ver_draw], dword wScr |
stdcall [scrollbar_hor_draw], dword hScr |
; reset all_redraw flag |
xor eax,eax |
mov [wScr.all_redraw],eax |
mov [hScr.all_redraw],eax |
;--------------------------------------------- |
mov eax,13 |
;left-bottom square |
mov ebx,ted_wnd_l |
shl ebx,16 |
add ebx,ted_rec_l |
mov ecx,ted_wnd_t |
add ecx,ted_wnd_h |
shl ecx,16 |
mov cx,word[hScr.size_y] |
inc cx |
mov edx,[sc.work] |
int 0x40 |
;right-bottom square |
mov ebx,ted_wnd_l |
add ebx,ted_wnd_w |
shl ebx,16 |
mov bx,word[wScr.size_x] |
inc bx |
int 0x40 |
stdcall draw_panel_find, edi |
stdcall draw_panel_syntax, edi |
popad |
ret |
endp |
;txtBUp db 24 |
;txtBDn db 25 |
;txtBRi db 26 |
;txtBLe db 27 |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc draw_panel_find, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_panel_id,TE_PANEL_FIND ;if not panel |
proc draw_panel_find |
;push edi |
;mov edi,dword[edit] |
cmp ted_panel_id,TED_PANEL_FIND ;if not panel |
jne @f |
push eax ebx ecx edx |
mov eax,13 ;ðèñîâàíèå ïðÿìîóãîëüíèêà |
mov ebx,TE_PANEL_WIDTH |
mov ebx,TED_PANEL_WIDTH |
mov ecx,ted_wnd_t |
shl ecx,16 |
mov cx,20 |
506,12 → 143,13 |
stdcall [edit_box_draw], dword edit2 |
mov eax,13 ;ðèñîâàíèå ïðÿìîóãîëüíèêà |
mov ebx,TE_PANEL_WIDTH |
mov ebx,TED_PANEL_WIDTH |
mov ecx,ted_wnd_t |
add cx,20+15 ; 15 - height text box |
shl ecx,16 |
add ecx,ted_wnd_h |
add cx,word[hScr.size_y] |
mov edx,ted_scr_h |
add cx,word[edx+sb_offs_size_y] |
sub cx,20+15-1 ; 15 - height text box |
mov edx,[sc.work] |
int 0x40 |
544,22 → 182,22 |
int 0x40 |
pop edx eax |
.end_f: |
pop edi |
;pop edi |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc draw_panel_syntax, edit:dword |
push edi |
mov edi,dword[edit] |
cmp ted_panel_id,TE_PANEL_SYNTAX ;if not panel |
proc draw_panel_syntax |
;push edi |
;mov edi,dword[edit] |
cmp ted_panel_id,TED_PANEL_SYNTAX ;if not panel |
jne @f |
push eax ebx ecx edx |
pushad |
mov eax,13 ;ðèñîâàíèå ïðÿìîóãîëüíèêà |
mov ebx,TE_PANEL_WIDTH |
mov ebx,TED_PANEL_WIDTH |
mov ecx,ted_wnd_t |
shl ecx,16 |
mov cx,20 |
576,7 → 214,8 |
and ecx,0xffff |
ror ecx,16 |
add ecx,ted_wnd_h |
add cx,word[hScr.size_y] |
mov esi,ted_scr_h |
add cx,word[esi+sb_offs_size_y] |
sub cx,20 |
sub ecx,dword[tree1.box_height] |
inc cx |
607,7 → 246,7 |
mov edx,txtFormatApply |
int 0x40 |
pop edx ecx ebx eax |
popad |
jmp .end_f |
@@: |
push eax edx |
617,94 → 256,24 |
int 0x40 ;åñëè íåò ïàíåëè òî óäàëÿåì êíîïêó |
pop edx eax |
.end_f: |
pop edi |
;pop edi |
ret |
endp |
align 4 |
proc draw_cur_line, edit:dword |
pushad |
mov edi,dword[edit] |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
mov eax,ted_cur_y |
imul eax,ted_rec_h |
mov bx,ax |
add ebx,ted_wnd_t |
add ebx,ted_rec_t ;ebx - êîîðäèíàòû äëÿ ïðÿìîóãîëüíèêà î÷èñòêè ëèíèè |
add ebx,0x10001 ;äîáàâëÿåì îòñòóïû äëÿ âûðàâíèâàíèÿ áóêâû ïî öåíòðó |
stdcall SelNormalize,edi ;need before draw select |
mov ecx,ted_cur_y |
add ecx,[wScr.position] |
stdcall clear_line_before_draw, tedit0, ebx,1,ecx |
mov esi,[hScr.position] |
call GetPosByParam |
cmp ted_gp_opt,2 |
jne .no_draw_text |
; mov eax,4 ;draw text |
call GetSymbColor |
mov esi,1 ;draw 1 symbol |
@@: |
;call IteratNext |
cmp edx,ted_tex_1 |
jle .no_draw_text |
; *** öâåòîâàÿ ðàçìåòêà |
cmp ted_mode_color,0 |
je .no_col_change |
cmp byte[edx+1],0 |
je .no_col_change |
call GetSymbColor |
.no_col_change: |
mov eax,4 ;draw text |
cmp byte [edx],13 |
jne .no_13 |
cmp ted_mode_invis,1 |
jne .no_draw_text |
push edx |
mov edx,edi |
add edx,ted_offs_symbol_new_line |
int 0x40 |
pop edx |
jmp .no_draw_text |
.no_13: |
int 0x40 |
ror ebx,16 |
add ebx,ted_rec_w |
mov eax,ted_wnd_w |
add eax,ted_wnd_l ;ax = îòñòóï ïî îñè x |
cmp bx,ax |
jge .no_draw_text ;Opt |
ror ebx,16 |
call IteratNext |
jmp @b |
.no_draw_text: |
stdcall draw_main_cursor,edi |
popad |
ret |
endp |
MIN_M_WND_H equ 100 |
MIN_W_SCRL_ARE equ 3 |
MIN_H_SCRL_ARE equ 3 |
align 4 |
proc EvSize, edit:dword |
push eax ecx edx edi |
pushad |
mov edi,dword[edit] |
mov ebx,ted_scr_h |
mov esi,ted_scr_w |
m2m ted_wnd_w,[procinfo.client_box.width] ;ñòàâèì øèðèíó îêíà ðåäàêòîðà ðàâíîé øèðèíå âñåãî îêíà |
mov eax,ted_wnd_l |
sub ted_wnd_w,eax ;îòíèìàåì îòñòóï ñëåâà |
mov eax,[wScr] ;+0 size_x |
mov eax,dword[esi+sb_offs_size_x] |
and eax,0xffff |
sub ted_wnd_w,eax ;îòíèìàåì øèðèíó âåðò. ñêðîëëèíãà |
714,11 → 283,11 |
mov ted_wnd_h,MIN_M_WND_H |
@@: |
mov ax,word[hScr.size_y] |
mov ax,word[ebx+sb_offs_size_y] |
and eax,0xffff |
sub ted_wnd_h,eax ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà |
mov eax,ted_wnd_h ;eax = âûñîòà îêíà - âûñîòà ãîðèç. ñêðîëëèíãà |
mov word[hScr.start_y],ax ;ïåðåäâèãàåì ãîðèç. ñêðîëëèíã |
mov word[ebx+sb_offs_start_y],ax ;ïåðåäâèãàåì ãîðèç. ñêðîëëèíã |
mov eax,ted_wnd_t |
sub ted_wnd_h,eax ;îòíèìàåì îòñòóï ñâåðõó |
725,15 → 294,15 |
mov eax,ted_wnd_w |
mov ecx,ted_wnd_l |
add eax,ecx |
mov word[wScr.start_x],ax ;ïåðåäâèãàåì âåðò. ñêðîëëèíã |
mov word[esi+sb_offs_start_x],ax ;ïåðåäâèãàåì âåðò. ñêðîëëèíã |
mov eax,ted_wnd_h |
mov word[wScr.size_y],ax ;çàäàåì âûñîòó âåðò. ñêðîëëèíãà |
mov word[esi+sb_offs_size_y],ax ;çàäàåì âûñîòó âåðò. ñêðîëëèíãà |
add ecx,ted_rec_l ;ecx=ted_wnd_l+ted_rec_l |
mov [hScr.start_x],cx ;ñäâèãàåì ãîðèç. ñêðîëëèíã ïî ðàçìåðó ëåâîãî îòñòóïà äëÿ öèôð |
mov word[ebx+sb_offs_start_x],cx ;ñäâèãàåì ãîðèç. ñêðîëëèíã ïî ðàçìåðó ëåâîãî îòñòóïà äëÿ öèôð |
mov eax,ted_wnd_w |
sub eax,ted_rec_l |
mov word[hScr.size_x],ax ;çàäàåì øèðèíó ãîðèç. ñêðîëëèíãà |
mov word[ebx+sb_offs_size_x],ax ;çàäàåì øèðèíó ãîðèç. ñêðîëëèíãà |
mov eax,ted_wnd_h ;calculate lines in page |
sub eax,ted_rec_t |
744,7 → 313,7 |
jg @f |
mov eax,MIN_W_SCRL_ARE |
@@: |
mov [wScr.cur_area],eax |
mov dword[esi+sb_offs_cur_area],eax |
mov eax,ted_wnd_w ;calculate cols in page |
sub eax,ted_rec_l |
756,7 → 325,7 |
mov eax,MIN_H_SCRL_ARE |
@@: |
dec eax ; ??? |
mov [hScr.cur_area],eax |
mov dword[ebx+sb_offs_cur_area],eax |
mov eax,ted_wnd_t |
mov edi,dword tree1 |
766,558 → 335,11 |
mov dword[edit2.top],eax ;=ted_wnd_t |
add dword[edit2.top],20 |
pop edi edx ecx eax |
call OnInitialUpdate |
ret |
endp |
align 4 |
OnInitialUpdate: |
mov [wScr.redraw],1 |
mov [hScr.redraw],1 |
ret |
;input: |
; edi = pointer to tedit struct |
;output: |
; ecx = íîâûé öâåò ñèìâîëà |
; edx = pointer to symbol |
; edx = 0 if text not in screen |
align 4 |
GetFirstVisiblePos: |
push ecx |
mov edx,ted_tex |
xor ecx,ecx |
@@: |
cmp ecx,[wScr.position] |
je @f |
call IteratNext |
cmp edx,ted_tex_1 |
jle @f |
cmp byte [edx],13 |
jne @b |
inc ecx |
jmp @b |
@@: |
cmp ecx,[wScr.position] |
je @f |
xor edx,edx |
@@: |
cmp ecx,[wScr.max_area] |
jle @f |
mov [wScr.max_area],ecx |
@@: |
pop ecx |
call OptDrawLineLeft |
ret |
;input: |
; edx = pointer to symbol |
; edi = pointer to tedit struct |
;output: |
; ecx = íîâûé öâåò ñèìâîëà |
; edx = óêàçàòåëü íà ïåðâûé ëåâûé ñèìâîë |
align 4 |
proc OptDrawLineLeft |
push ebx |
mov ebx,[hScr.position] |
cmp ebx,0 |
je .ret_f |
push eax |
mov eax,edx |
cmp edx,ted_tex |
jne @f |
call IteratNext |
jmp .beg_cycle |
@@: |
cmp ebx,0 |
je @f |
cmp byte[edx],13 |
jne @f |
call IteratNext |
.beg_cycle: |
@@: |
cmp edx,ted_tex_1 |
jle @f |
cmp byte[edx],13 |
je @f |
cmp ebx,0 |
je @f |
;-------------------------------------- |
xor eax,eax ;eax áóäåò ìåíÿòüñÿ |
mov al,byte[edx+1] |
cmp al,0 |
je .no_color |
cmp eax,ted_colors_text_count |
jge .no_color |
xor ecx,ecx |
mov cl,byte[edx+1] |
shl cx,2 |
add ecx,ted_text_colors |
mov ecx,dword[ecx] |
.no_color: |
;-------------------------------------- |
mov eax,edx |
call IteratNext |
dec ebx |
jmp @b |
@@: |
mov edx,eax |
pop eax |
.ret_f: |
call GetSymbColor |
pop ebx |
ret |
endp |
;input: |
; edx = pointer to symbol |
; edi = pointer to tedit struct |
;output: |
; edx = pointer to 13 symbol |
align 4 |
proc OptDrawLineRight |
push eax |
mov eax,edx |
@@: |
cmp edx,ted_tex_1 |
jle @f |
cmp byte[edx],13 |
je @f |
mov eax,edx |
call IteratNext |
jmp @b |
@@: |
mov edx,eax ;perv sumbol |
call GetSymbColor |
pop eax |
ret |
endp |
align 4 |
proc draw_main_cursor, edit:dword |
pushad |
mov edi,dword[edit] |
mov eax,13 ;draw cursor |
mov ecx,ted_wnd_t ;calc rect -> y0,y1 |
add ecx,ted_rec_t |
mov edx,ted_cur_y |
imul edx,ted_rec_h |
add ecx,edx |
cmp ted_cur_ins,1 ;ïðîâåðêà ðåæèìà ðàáîòû êóðñîðà (îáû÷íûé èëè âñòàâêà) |
jne @f |
mov edx,ted_rec_h |
inc edx ;1->1, 3->2, 5->3, ... |
shr edx,1 ;edx = âûñîòà ñòðîêè äåëåííàÿ íà 2 (êîãäà êóðñîð íå ïîëíûé) |
add ecx,edx |
@@: |
shl ecx,16 |
add ecx,ted_rec_h |
cmp ted_cur_ins,1 |
jne @f |
shr cx,1 ;äåëèì âûñîòó êóðñîðà íà 2 |
@@: |
mov ebx,ted_wnd_l ;calc rect -> x0,x1 |
add ebx,ted_rec_l |
mov edx,ted_cur_x |
imul edx,ted_rec_w |
add ebx,edx |
shl ebx,16 |
add ebx,ted_rec_w |
mov edx,ted_color_cursor |
int 0x40 ;âûâîä êóðñîðà |
call GetPos |
cmp ted_gp_opt,2 |
jne @f |
mov eax,4 ;draw text |
mov esi,1 |
ror ecx,16 |
mov bx,cx |
add ebx,0x10001 |
cmp ted_cur_ins,1 |
jne .no_up_tetx |
mov ecx,ted_rec_h |
inc cx ; 1->1, 3->2, 5->3, ... |
shr cx,1 |
sub bx,cx |
.no_up_tetx: |
mov ecx,ted_color_cur_text |
call ConvertInvisSymb |
int 0x40 |
@@: |
mov eax,4 |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,3 |
mov ecx,ted_color_wnd_bord |
or ecx,0x80000000 |
mov edx,txtRow |
int 0x40 ;âûâîä ïîäïèñè 'Ñòðîêà' |
add ebx,0x500000 |
mov edx,txtCol |
int 0x40 ;âûâîä ïîäïèñè 'Çíàê' |
cmp ted_tim_undo,0 |
je @f |
add ebx,0x500000 |
mov edx,txtOtm |
int 0x40 |
sub ebx,0x500000 |
@@: |
stdcall draw_bufer,edi |
stdcall draw_help_f1 |
mov eax,47 ;draw cursor coords |
mov esi,ted_color_wnd_bord |
or esi,0x40000000 |
mov edx,ebx |
ror edx,16 |
sub edx,35 |
ror edx,16 |
;add edx,3 |
mov ebx,0x40000 ;Row=... |
mov ecx,ted_cur_y |
inc ecx |
add ecx,[wScr.position] |
push edi |
mov edi,ted_color_wnd_work |
int 0x40 ;âûâîä ÷èñëà òåêóùåé ñòðîêè |
pop edi |
;mov ebx,0x40000 ;Col=... |
mov ecx,ted_cur_x |
inc ecx |
add ecx,[hScr.position] |
add edx,0x500000 |
push edi |
mov edi,ted_color_wnd_work |
int 0x40 ;âûâîä ÷èñëà çíàêîâ |
pop edi |
cmp ted_tim_undo,0 |
je @f |
mov ecx,ted_tim_undo |
add edx,0x500000 |
int 0x40 |
@@: |
popad |
ret |
endp |
align 4 |
proc draw_bufer, edit:dword |
pushad |
mov edi,dword[edit] |
cmp byte[buf],0 |
je @f |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
add bx,250 |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,3 |
mov ecx,ted_color_wnd_bord |
or ecx,0x40000000 |
mov edi,ted_color_wnd_work |
mov edx,txtBuf |
mov esi,buf |
call strlen |
if lang eq ru |
cmp eax,15 |
jle .crop_buf |
mov eax,15 |
.crop_buf: |
mov esi,7 ;7=len(txtBuf) |
else |
cmp eax,14 |
jle .crop_buf |
mov eax,14 |
.crop_buf: |
mov esi,8 ;8=len(txtBuf) |
end if |
add esi,eax |
mov eax,4 |
int 0x40 |
@@: |
popad |
ret |
endp |
;input: |
; edi = pointer to tedit struct |
align 4 |
proc draw_help_f1 |
pushad |
mov eax,13 ;clear place before draw help |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_w |
sub ebx,ted_rec_l |
mov ecx,ted_wnd_t |
add ecx,13 |
shl ecx,16 |
add ecx,ted_rec_h |
mov edx,ted_color_wnd_capt |
int 0x40 |
cmp ted_help_id,-1 |
je @f |
mov eax,ted_help_id |
ColToIndexOffset eax,edx |
;SetCoordinates |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_t |
add ebx,13 ;=3+10 |
;SetTextColor |
xor eax,eax |
mov al,byte[edx+MAX_COLOR_WORD_LEN+6] |
shl ax,2 |
mov ecx,ted_text_colors |
add ecx,eax |
mov ecx,dword[ecx] |
or ecx,0xc0000000 ;SetTextStyles |
mov esi,edi |
mov edi,ted_color_wnd_work |
mov eax,4 |
int 0x40 |
mov edi,esi |
;*** draw help string *** |
mov ecx,ted_color_wnd_bord |
or ecx,0x80000000 |
mov edx,dword[edx+MAX_COLOR_WORD_LEN] |
cmp edx,0 |
je @f |
add edx,ted_help_text_f1 |
add ebx,0x500000 |
int 0x40 |
@@: |
popad |
ret |
endp |
align 4 |
proc draw_line_numbers, edit:dword |
pushad |
mov edi,dword[edit] |
;top panel with caption |
mov ebx,ted_wnd_l |
; add ebx,ted_rec_l |
shl ebx,16 |
add ebx,ted_wnd_w |
; sub ebx,ted_rec_l |
mov edx,ted_color_wnd_work |
mov ecx,ted_wnd_t |
shl ecx,16 |
add ecx,ted_rec_t |
mov eax,13 |
mov edx,ted_color_wnd_capt |
int 0x40 |
;line numbers |
mov ebx,0x40000 ;format |
mov ecx,[wScr.position] |
inc ecx |
mov edx,3 |
add edx,ted_wnd_l |
rol edx,16 |
add edx,ted_wnd_t |
add edx,ted_rec_t |
@@: |
push ebx ecx edx |
;left panel with numbers |
mov ebx,ted_wnd_l |
shl ebx,16 |
add ebx,ted_rec_l |
mov ecx,ted_rec_h |
rol ecx,16 |
mov cx,dx |
rol ecx,16 |
mov eax,13 |
mov edx,ted_color_wnd_capt |
int 0x40 ;ðèñóåì ïðÿìîóãîëüíèê ïîä íîìåðîì ñòðîêè |
pop edx ecx ebx |
mov eax,47 |
mov esi,ted_color_wnd_bord |
int 0x40 ;ðèñóåì íîìåð ñòðîêè |
inc ecx |
add edx,ted_rec_h |
sub edx,ted_wnd_t |
mov esi,edx |
and esi,0xffff |
cmp esi,ted_wnd_h |
jge @f |
add edx,ted_wnd_t |
jmp @b |
@@: |
popad |
ret |
endp |
;this function need to optimize output |
align 4 |
proc draw_cursor_sumb, edit:dword |
push eax ecx edx edi |
mov edi,dword[edit] |
mov eax,13 ;rect |
mov ebx,ted_wnd_l |
add ebx,ted_rec_l |
mov edx,ted_cur_x |
imul edx,ted_rec_w |
add ebx,edx |
shl ebx,16 |
add ebx,ted_rec_w |
mov ecx,ted_wnd_t ;calc rect -> y0,y1 |
add ecx,ted_rec_t |
mov edx,ted_cur_y |
imul edx,ted_rec_h |
add ecx,edx |
shl ecx,16 |
add ecx,ted_rec_h |
mov edx,ted_color_wnd_work |
push ecx |
stdcall SelNormalize,edi |
mov ecx,[wScr.position] |
sub ted_seln_y0,ecx |
sub ted_seln_y1,ecx |
mov ecx,ted_cur_y |
cmp ecx,ted_seln_y0 |
jl .no_cur_sel |
cmp ecx,ted_seln_y1 |
jg .no_cur_sel |
mov edx,ted_color_select |
cmp ecx,ted_seln_y0 |
jne @f |
mov ecx,ted_cur_x |
add ecx,[hScr.position] |
cmp ecx,ted_seln_x0 |
jge @f |
mov edx,ted_color_wnd_work |
@@: |
mov ecx,ted_cur_y |
cmp ecx,ted_seln_y1 |
jne .no_cur_sel |
mov ecx,ted_cur_x |
add ecx,[hScr.position] |
cmp ecx,ted_seln_x1 |
jl .no_cur_sel |
mov edx,ted_color_wnd_work |
.no_cur_sel: |
pop ecx |
int 0x40 |
call GetPos |
cmp ted_gp_opt,2 |
jne @f |
push esi |
mov eax,4 ;draw text |
mov esi,1 |
ror ecx,16 |
mov bx,cx |
add ebx,0x10001 |
call GetSymbColor |
call ConvertInvisSymb |
int 0x40 |
pop esi |
@@: |
pop edi edx ecx eax |
ret |
endp |
;input: |
; edx -> pointer to text |
; edi -> óêàçàòåëü íà ñòðóêòóðó tedit |
;output: |
; ecx = color |
; if ted_mode_color=0 then ecx=ted_color_wnd_text |
align 4 |
GetSymbColor: |
mov ecx,ted_color_wnd_text ;çàäàåì öâåò òåêñòà ïî óìîë÷àíèþ |
push eax edx |
cmp ted_mode_color,0 |
je .exit |
jmp .on_first |
@@: |
call IteratPerv |
cmp edx,ted_tex_1 |
jle .exit |
.on_first: |
xor eax,eax |
mov al,byte[edx+1] |
cmp al,0 ;åñëè al=0 òî öâåò íå ìåíÿåòñÿ |
je @b |
cmp eax,ted_colors_text_count |
jge .exit |
shl ax,2 ;óìíîæàåì èíäåêñ öâåòà íà 4 áàéòà |
mov ecx,ted_text_colors ;ïðèáàâëÿåì ñìåùåíèå 1-ãî öâåòà |
add ecx,eax |
mov ecx,dword[ecx] ;óñòàíàâëèâàåì òåêóùèé öâåò òåêñòà ïî ñìåùåíèþ |
.exit: |
pop edx eax |
ret |
;input: |
; edx = pointer to text |
; edi = pointer to tedit struct |
align 4 |
ConvertInvisSymb: |
cmp ted_mode_invis,1 |
jne @f |
cmp byte [edx],13 |
jne @f |
mov edx,edi |
add edx,ted_offs_symbol_new_line |
@@: |
ret |
;input: |
; ecx = 0x4000____ |
; cx = icon index |
; edx = x*2^16+y |
1334,16 → 356,23 |
shl ecx,16 |
mov cx,19 ;=20-1 |
mov bx,19 ;=20-1 |
mov esi,ebx |
shr esi,16 |
add esi,20 |
cmp esi,[procinfo.client_box.width] |
jge @f ;êíîïêà íå âëåçëà â ýêðàí |
mov esi,[sc.work_button] |
int 0x40 |
int 0x40 ;ñòàâèì êíîïêó |
mov eax,7 ;bmp |
@@: |
pop esi edx ecx |
cmp eax,7 |
jne @f ;êíîïêà íå âëåçëà â ýêðàí |
mov ebx,ecx |
ror ebx,16 |
cmp bx,0x4000 |
jne @f |
mov eax,7 ;bmp |
mov ebx,[bmp_icon] |
push ecx |
and ecx,0xffff |
1352,9 → 381,8 |
mov ecx,20 |
shl ecx,16 |
add ecx,20 |
int 0x40 |
int 0x40 ;ñòàâèì ðèñóíîê íà êíîïêó |
pop ecx |
@@: |
pop ebx eax |
ret |
/programs/other/t_edit/t_edit.asm |
---|
16,8 → 16,8 |
MAX_COLOR_WORD_LEN equ 40 |
maxChars equ 100002 ;(...+2) |
BUF_SIZE equ 1000 ;bufer for copy|paste |
maxColWords equ 10000 |
BUF_SIZE equ 1000 ;buffer for copy|paste |
maxSyntaxFileSize equ 410000 |
include '../../proc32.inc' |
include '../../macros.inc' |
27,9 → 27,8 |
include 'lang.inc' |
include 't_data.inc' |
include 'strlen.inc' |
include 't_work.inc' ;text work functions |
include 't_draw.inc' ;draw main window functions |
include 't_button.inc' |
include 't_button.inc' ;text work functions |
@use_library |
37,15 → 36,16 |
start: |
mcall 48,3,sc,sizeof.system_colors |
m2m [wScr.bckg_col],[sc.work] |
m2m [wScr.frnt_col],[sc.work_button] |
m2m [wScr.line_col],[sc.work_button_text] |
mov eax,[sc.work] |
mov [wScr.bckg_col],eax |
mov [hScr.bckg_col],eax |
mov eax,[sc.work_button] |
mov [wScr.frnt_col],eax |
mov [hScr.frnt_col],eax |
mov eax,[sc.work_button_text] |
mov [wScr.line_col],eax |
mov [hScr.line_col],eax |
m2m [hScr.bckg_col],[sc.work] |
m2m [hScr.frnt_col],[sc.work_button] |
m2m [hScr.line_col],[sc.work_button_text] |
mcall 68,11 |
or eax,eax |
jz button.exit |
75,7 → 75,7 |
@@: |
;--------------------------------------------------------------------- |
stdcall ted_init, tedit0 |
stdcall [ted_init], tedit0 |
stdcall dword[tl_data_init], tree1 |
;--------------------------------------------------------------------- |
174,7 → 174,10 |
.end_dir_init: |
;--- load color option file --- |
stdcall InitColText, tedit0 |
mov ebx,dword[fn_col_option] |
copy_path ebx,fn_syntax_dir,file_name_rez,0x0 |
copy_path file_name_rez,sys_path,file_name,0x0 |
stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name |
;--- get cmd line --- |
cmp byte[buf_cmd_lin+3],0 ;buf_cmd_lin |
202,7 → 205,7 |
mcall 9,procinfo,-1 |
stdcall EvSize,edi |
mov eax,13 ;âåðõíèé ïðÿìîóãîëüíèê, äëÿ î÷èñòêè âåðõíåé ïàíåëè |
mov eax,13 ;¢¥à娩 ¯àאַ㣮«ì¨ª, ¤«ï ®ç¨á⪨ ¢¥à奩 ¯ ¥«¨ |
xor ebx,ebx |
mov ecx,ted_wnd_t |
mov bx,word [procinfo.client_box.width] |
234,7 → 237,7 |
cmp [err_ini0],1 |
je @f |
stdcall draw_main_win, tedit0 |
stdcall [ted_draw], tedit0 |
@@: |
mcall 12,2 |
263,53 → 266,13 |
test word [edit1.flags],10b;ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
jne still |
;----------------------------------------------- |
cmp [hScr.delta2],0 |
jne .horizontal |
.vertical: |
mov eax,[wScr.max_area] |
cmp eax,[wScr.cur_area] |
jbe .horizontal |
; mouse event for Vertical ScrollBar |
stdcall [scrollbar_ver_mouse], dword wScr |
mov eax,wScr.redraw |
xor ebx,ebx |
cmp [eax],ebx |
je @f |
mov [eax],ebx |
stdcall [ted_mouse], tedit0 |
stdcall draw_main_win, tedit0 |
jmp still |
@@: |
cmp [wScr.delta2],0 |
jne still |
.horizontal: |
mov eax,[hScr.max_area] |
cmp eax,[hScr.cur_area] |
jbe .other |
; mouse event for Horizontal ScrollBar |
push dword hScr |
call [scrollbar_hor_mouse] |
mov eax,hScr.redraw |
xor ebx,ebx |
cmp [eax],ebx |
je .other |
mov [eax],ebx |
stdcall draw_main_win, tedit0 |
jmp still |
.other: |
cmp [wScr.delta2],0 |
jne still |
cmp [hScr.delta2],0 |
jne still |
stdcall mouse_wnd_main, tedit0 |
cmp byte[tedit0.panel_id],TE_PANEL_FIND ;if not panel |
cmp byte[tedit0.panel_id],TED_PANEL_FIND ;if not panel |
jne @f |
stdcall [edit_box_mouse], dword edit2 |
@@: |
cmp byte[tedit0.panel_id],TE_PANEL_SYNTAX ;if not panel |
cmp byte[tedit0.panel_id],TED_PANEL_SYNTAX ;if not panel |
jne .menu_bar_1 ;@f |
stdcall [tl_mouse], tree1 |
;----------------------------------------------- |
324,15 → 287,15 |
je button.exit |
cmp [menu_data_1.cursor_out],dword 3 |
jne @f |
stdcall but_SaveFile, tedit0 |
stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text] |
@@: |
cmp [menu_data_1.cursor_out],dword 2 |
jne @f |
call but_OpenFile |
call ted_but_open_file |
@@: |
cmp [menu_data_1.cursor_out],dword 1 |
jne @f |
call but_NewFile |
call ted_but_new_file |
@@: |
;cmp [menu_data_1.cursor_out],dword 0 |
;jne @f |
357,29 → 320,30 |
align 4 |
key: |
mcall 66,3 ;66.3 ¯®«ãç¨âì á®áâ®ï¨¥ ã¯à ¢«ïîé¨å ª« ¢¨è |
xor ebx,ebx |
xor esi,esi |
mov ecx,1 |
test al,0x03 ;[Shift] |
jz @f |
mov cl,2 |
or ebx,KM_SHIFT |
or esi,KM_SHIFT |
@@: |
test al,0x0c ;[Ctrl] |
jz @f |
or ebx,KM_CTRL |
or esi,KM_CTRL |
@@: |
test al,0x30 ;[Alt] |
jz @f |
mov cl,3 |
or ebx,KM_ALT |
or esi,KM_ALT |
@@: |
test al,0x80 ;[NumLock] |
jz @f |
or ebx,KM_NUMLOCK |
or esi,KM_NUMLOCK |
@@: |
mcall 26,2,,conv_tabl ;26.2 ¯®«ãç¨âì à ᪫ ¤ªã ª« ¢¨ âãàë |
mcall 2 ;¯®«ãç ¥¬ ª®¤ ¦ ⮩ ª« ¢¨è¨ |
;stdcall [tl_key], tree1 ;??? |
;stdcall [tl_key], tree1 |
test word [edit1.flags],10b;ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
je @f |
421,9 → 385,10 |
jmp still |
@@: |
stdcall ted_key, tedit0, conv_tabl |
stdcall [ted_key], tedit0, conv_tabl,esi |
jmp still |
align 4 |
button: |
; cmp [menu_active],1 ;¥á«¨ ¦ «¨ ¬¥î, â® á ç « ॠªæ¨ï ¬¥î |
; jne @f ;mouse.menu_bar_1 |
434,35 → 399,35 |
mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ |
cmp ah,3 |
jne @f |
call but_NewFile |
call ted_but_new_file |
@@: |
cmp ah,4 |
jne @f |
call but_OpenFile |
call ted_but_open_file |
@@: |
cmp ah,5 |
jne @f |
stdcall but_SaveFile, tedit0 |
stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text] |
@@: |
cmp ah,6 |
jne @f |
stdcall ted_but_select_word, tedit0 |
stdcall [ted_but_select_word], tedit0 |
@@: |
cmp ah,7 |
jne @f |
stdcall ted_but_cut, tedit0 |
stdcall [ted_but_cut], tedit0 |
@@: |
cmp ah,8 |
jne @f |
stdcall ted_but_copy, tedit0 |
stdcall [ted_but_copy], tedit0 |
@@: |
cmp ah,9 |
jne @f |
stdcall ted_but_paste, tedit0 |
stdcall [ted_but_paste], tedit0 |
@@: |
cmp ah,10 |
jne @f |
stdcall but_find, tedit0 |
call ted_but_find |
@@: |
cmp ah,11 |
jne @f |
474,23 → 439,23 |
@@: |
cmp ah,13 |
jne @f |
stdcall but_sumb_upper, tedit0 |
stdcall [ted_but_sumb_upper], tedit0 |
@@: |
cmp ah,14 |
jne @f |
stdcall but_sumb_lover, tedit0 |
stdcall [ted_but_sumb_lover], tedit0 |
@@: |
cmp ah,15 |
jne @f |
stdcall but_reverse, tedit0 |
stdcall [ted_but_reverse], tedit0 |
@@: |
cmp ah,16 |
jne @f |
stdcall ted_but_undo, tedit0 |
stdcall [ted_but_undo], tedit0 |
@@: |
cmp ah,17 |
jne @f |
stdcall ted_but_redo, tedit0 |
stdcall [ted_but_redo], tedit0 |
@@: |
cmp ah,18 |
jne @f |
511,13 → 476,13 |
@@: |
cmp ah,201 |
jne @f |
stdcall but_FindText, tedit0 |
stdcall [ted_but_find_next], tedit0 |
@@: |
cmp ah,1 |
jne still |
.exit: |
stdcall ted_can_save, tedit0 |
stdcall [ted_can_save], tedit0 |
cmp al,1 |
jne @f |
stdcall [mb_create],msgbox_8,thread ;message: save changes in file? |
526,7 → 491,7 |
mov ecx,[bmp_icon] |
call mem_Free |
stdcall ted_delete, tedit0 |
stdcall [ted_delete], tedit0 |
stdcall dword[tl_data_clear], tree1 |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
536,7 → 501,7 |
err_ini0 db 0 |
edit1 edit_box 250, 220, 5, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_cmd_lin, mouse_dd, 0 |
edit2 edit_box TE_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0 |
edit2 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0 |
buf_cmd_lin db 302 dup(0) |
buf_find db 302 dup(0) |