'box_lib.obj': update function open file in element 't_edit'

'voxel_editor': small update

git-svn-id: svn://kolibrios.org@2808 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2012-06-19 12:20:54 +00:00
parent 7af0b1d2b1
commit 195ca78286
4 changed files with 110 additions and 18 deletions

View File

@ -1,6 +1,6 @@
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
; í«¥¬¥­â TextEditor ¤«ï Kolibri OS
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 22.08.2011 IgorA
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 19.06.2012 IgorA
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
;input:
@ -2339,15 +2339,60 @@ endp
; ebx = ª®««¨ç¥á⢮ ¯à®ç¨â ­­ëå ¡ ©â
align 4
proc ted_open_file, edit:dword, file:dword, f_name:dword ;äã­ªæ¨ï ®âªàëâ¨ï ä ©« 
push edi
push ecx edx edi
mov edi,dword[edit]
; *** ¯à®¢¥à塞 à §¬¥à ¯ ¬ï⨠¨ ¥á«¨ ­¥ 墠⠥â ⮠㢥«¨ç¨¢ ¥¬ ***
;¯à®¡ã¥¬ ¯®«ãç¨âì ¨­ä®à¬ æ¨î ® ä ©«¥
mov eax,70
mov ebx,dword[file]
mov dword[ebx], 5
mov dword[ebx+4], 0
mov dword[ebx+8], 0
mov dword[ebx+12], 0
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 .end_0
mov edx,ted_max_chars
cmp eax,2 ;äã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë
je @f
jmp .ret_f
.end_0:
;¯à®¢¥à塞 墠â¨â «¨ ¯ ¬ï⨠¤«ï § £à㧪¨ ä ©« 
mov ecx,ted_max_chars
sub ecx,2 ;ecx = ¬ ªá¨¬ «ì­®¥ ç¨á«® ¡ ©â, ¤«ï ª®â®àëå ¡ë«  ¢ë¤¥«¥­  ¯ ¬ïâì
mov edx,ted_tex
mov edx,dword[edx+32] ;+32 = +0x20: qword: à §¬¥à ä ©«  ¢ ¡ ©â å
cmp edx,ecx
jl @f
;㢥«¨ç¨¢ ¥¬ ¯ ¬ïâì ¥á«¨ ­¥ 墠⨫®
mov ecx,edx ;¯ ¬ïâì ­¥®¡å®¤¨¬ ï ¤«ï ®âªàëâ¨ï ä ©« 
add ecx,2 ;¯ ¬ïâì ¤«ï á«ã¦¥¡­ëå ­ ç «ì­®£® ¨ ª®­¥ç­®£® ᨬ¢®«®¢
add ecx,ted_increase_size ;¯ ¬ïâì ¤«ï । ªâ¨à®¢ ­¨ï ä ©« 
mov ted_max_chars,ecx
imul ecx,sizeof.symbol
invoke mem.realloc, ted_tex,ecx
mov ted_tex,eax
mov ted_tex_1,eax
add ted_tex_1,sizeof.symbol
add eax,ecx
mov ted_tex_end,eax
mov ecx,ted_tex_1
add ecx,sizeof.symbol
mov ted_ptr_free_symb,ecx
@@:
; *** ¯à®¡ã¥¬ ®âªàëâì ä ©« ***
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+12], edx ;ç¨á«® ¡ ©â, ª®â®àë¥ ¬®£ãâ ¡ëâì áç¨â ­ë á ä ©«  (­¥ ¡®«ìè¥ ç¥¬ ted_max_chars)
m2m dword[ebx+16], ted_tex
mov byte[ebx+20], 0
push dword[f_name]
@ -2365,7 +2410,7 @@ proc ted_open_file, edit:dword, file:dword, f_name:dword ;
;if open file
call ted_on_open_file
.ret_f:
pop edi
pop edi edx ecx
ret
endp

View File

@ -17,7 +17,7 @@ include 'dll.inc'
include 'vox_draw.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Voxel editor 12.06.12',0 ;¯®¤¯¨áì ®ª­ 
caption db 'Voxel editor 19.06.12',0 ;¯®¤¯¨áì ®ª­ 
struct FileInfoBlock
Function dd ?
@ -474,13 +474,13 @@ draw_pok:
mov edi,[sc.work_button]
int 0x40 ;¬ áèâ ¡
mov ecx,[v_cur_x]
add edx,(6*2)*65536+9
int 0x40 ;
add edx,9
int 0x40 ;ªãàá®à x
mov ecx,[v_cur_y]
add edx,(6*0)*65536+9
int 0x40 ;
add edx,9
int 0x40 ;ªãàá®à y
mov ecx,[n_plane]
add edx,(6*0)*65536+9
add edx,9
int 0x40 ;­®¬¥à á¥ç¥­¨ï
mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
@ -914,7 +914,8 @@ push edi
mov ebx,[scaled_zoom]
sub eax,ebx
inc ebx
stdcall [buf2d_vox_obj_draw_3g_scaled], buf_r_img, buf_r_z, buf_vox, [open_file_vox], 0,0, 0, ebx, [cam_x],[cam_y],[cam_z],eax, 0xd080d0
stdcall [buf2d_vox_obj_draw_3g_scaled], buf_r_img, buf_r_z, buf_vox,\
[open_file_vox], 0,0, 0, ebx, [cam_x],[cam_y],[cam_z],eax, [sc.work_graph]
bt dword[mode_light],0
jnc @f
stdcall [buf2d_vox_obj_draw_3g_shadows], buf_r_img, buf_r_z, buf_vox, 0,0, 0, ebx, 3
@ -1038,14 +1039,66 @@ draw_objects:
stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, buf_vox, 0,0, 0, [scaled_zoom], 3
.end_2:
.end_0:
pop ecx ebx eax
call draw_vox_cursor
stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
.end_f:
ret
;à¨á®¢ ­¨¥ ªãàá®à 
align 4
draw_vox_cursor:
pushad
mov ecx,[v_zoom]
cmp ecx,[scaled_zoom]
jle @f
mov ecx,[scaled_zoom]
@@:
xor edx,edx
inc edx
shl edx,cl
mov eax,[v_cur_x]
cmp eax,edx
jge .end_f ;ªãàá®à §  ¯à¥¤¥« ¬¨ ¯®«ï
mov edi,TILE_SIZE
imul eax,edi
add eax,OT_MAP_X
mov ebx,edx
dec ebx
sub ebx,[v_cur_y]
imul ebx,edi
add ebx,OT_MAP_Y
inc eax
inc ebx
sub edi,2
stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,edi,[sc.work_graph]
dec ebx
add edi,2
;£®à¨§®­â «ì­ë¥ «¨­¨¨
sub eax,2
mov ecx,edi
imul edi,edx
shr ecx,1
add ebx,ecx ;業â஢ª  ¯® á¥à¥¤¨­¥ ª«¥âª¨
mov ecx,OT_MAP_X
add edi,ecx
stdcall [buf2d_line], buf_pl, ecx,ebx, eax,ebx,[sc.work_graph]
add eax,TILE_SIZE
inc eax
cmp eax,edi
jge @f ;¥á«¨ ªãàá®à ­  ªà î ¯®«ï
dec edi
stdcall [buf2d_line], buf_pl, eax,ebx, edi,ebx,[sc.work_graph]
@@:
.end_f:
popad
ret
if 0
;input:
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥

View File

@ -76,16 +76,10 @@ table
<td>подсветка заранее зашита в программу</td><td>подсветка берется из файлов, которые может указать пользователь. Также есть возможность получать справку по подсвечиваемым словам (если она есть в файлах подсветки, навести курсор на слово и нажать F1).</td></tr>
<tr><td>Многократная отмена/повтор действий</td>
<td>нет</td><td>есть</td></tr>
<tr><td>Ограничения на размер файлов</td>
<td>нет</td><td>есть при открытии файлов, при редактировании нет</td></tr>
</table>
<h2>Некоторые недоработки</h2>
<ul>
<li>Если открыть большой файл, размер которого больше чем:
maxChars equ 100002 ;(...+2)
он откроется не весь, а первые maxChars-2 символов из файла
(о чем выдается сообщение).</li>
<li>При сохранении программа не спрашивает о замене существ. файла.</li>
<li>Срабатывали кнопки под меню, потому я их сдвинул влево.</li>
</ul>