From 195ca7828639115be732113eb0f35221e3005f7a Mon Sep 17 00:00:00 2001 From: IgorA Date: Tue, 19 Jun 2012 12:20:54 +0000 Subject: [PATCH] '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 --- .../libraries/box_lib/trunk/t_edit.mac | 53 +++++++++++++- programs/media/voxel_editor/trunk/vaz2106.vox | Bin 7464 -> 26744 bytes .../media/voxel_editor/trunk/voxel_editor.asm | 69 ++++++++++++++++-- programs/other/t_edit/readme.htm | 6 -- 4 files changed, 110 insertions(+), 18 deletions(-) diff --git a/programs/develop/libraries/box_lib/trunk/t_edit.mac b/programs/develop/libraries/box_lib/trunk/t_edit.mac index a3039e2a1..546f129ce 100644 --- a/programs/develop/libraries/box_lib/trunk/t_edit.mac +++ b/programs/develop/libraries/box_lib/trunk/t_edit.mac @@ -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 diff --git a/programs/media/voxel_editor/trunk/vaz2106.vox b/programs/media/voxel_editor/trunk/vaz2106.vox index c92cfa43f2fb7cbe7aba3971196381ab70309e0b..6df5b8cca7581e76fc27b7732e5ba2ec4ef206a4 100644 GIT binary patch literal 26744 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 H;0^3QQYEzW literal 7464 zcmdUzzi!+`5XaB|AOZ_J;sMSI50HS7pgR{Sk>Vx|%{@XQMM@i&DUk9ANkfyybQBa9 z5Cw%%XpxZ23jo(dks?LM=eyZi#=qa}@AiC2f#mVb&d&ec+28K%j7Fo4tpS#gZVAVWVzlvx)HDE zGl~P=3n1k=o6S;=!r}>gfY+4U3UZ3EHO^K!N}Fs(HR5LQMB$D z?tSMXKb%|TJEd@Rj$v=85AH}N%cVXNt-7LD>ygta#;g2ikYn|vWhRvuKaQH@E``OX8UW;tB@&;|nx5ZG2HTm&!ME<>B3yUAzs{?YExl4WL zY^pxLN4DYp(2+~E%=gA#EXYRZyWSFI4Kn=%EHJ*OU%@Z$hU`mnh3E8I{k6&|)}Mi^ z&c~0ARvgdVSZ|<%JofyboQ!l{(5t22pzWI)#kDSPU46ytLErnEz{de!lH0&-;Fx|q zQcnV+g*7kwzpLtsi<#SdA0qU^vN^zOU6~3UQV&HpWgZXOM6xj-M~F~^KH{q7dP}_{ znGW>Ujr-<-?w-g!$zVDf8-3xe=J@5FD_*`YMQ3pIHf)k3g1^YO+==j0>fqw&<;C2e zZeDprG7;}SvVVJBcMq)DY09M%gKDF9WAy!w?5@jOSKs!8;ZKQQ??xMc?r8CDxUt?k vCwc7oUpg7-=-aHf`Bwp7o;Cn`i-vDb=DY9F{k+eQvFYEOp5A9J{qFrQswID3 diff --git a/programs/media/voxel_editor/trunk/voxel_editor.asm b/programs/media/voxel_editor/trunk/voxel_editor.asm index 90b8b4e96..69b339bf2 100644 --- a/programs/media/voxel_editor/trunk/voxel_editor.asm +++ b/programs/media/voxel_editor/trunk/voxel_editor.asm @@ -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 ричном виде diff --git a/programs/other/t_edit/readme.htm b/programs/other/t_edit/readme.htm index b3c6afb4e..9ee3c8dee 100644 --- a/programs/other/t_edit/readme.htm +++ b/programs/other/t_edit/readme.htm @@ -76,16 +76,10 @@ table яюфётхЄър чрЁрэхх чр°шЄр т яЁюуЁрььєяюфётхЄър схЁхЄё  шч Їрщыют, ъюЄюЁ√х ьюцхЄ єърчрЄ№ яюы№чютрЄхы№. ╥ръцх хёЄ№ тючьюцэюёЄ№ яюыєўрЄ№ ёяЁртъє яю яюфётхўштрхь√ь ёыютрь (хёыш юэр хёЄ№ т Їрщырї яюфётхЄъш, эртхёЄш ъєЁёюЁ эр ёыютю ш эрцрЄ№ F1). ╠эюуюъЁрЄэр  юЄьхэр/яютЄюЁ фхщёЄтшщ эхЄхёЄ№ -╬уЁрэшўхэш  эр ЁрчьхЁ Їрщыют - эхЄхёЄ№ яЁш юЄъЁ√Єшш Їрщыют, яЁш ЁхфръЄшЁютрэшш эхЄ

═хъюЄюЁ√х эхфюЁрсюЄъш

    -
  • ┼ёыш юЄъЁ√Є№ сюы№°ющ Їрщы, ЁрчьхЁ ъюЄюЁюую сюы№°х ўхь: - maxChars equ 100002 ;(...+2) - юэ юЄъЁюхЄё  эх тхё№, р яхЁт√х maxChars-2 ёшьтюыют шч Їрщыр - (ю ўхь т√фрхЄё  ёююс∙хэшх).
  • ╧Ёш ёюїЁрэхэшш яЁюуЁрььр эх ёяЁр°штрхЄ ю чрьхэх ёє∙хёЄт. Їрщыр.
  • ╤ЁрсрЄ√трыш ъэюяъш яюф ьхэ■, яюЄюьє   шї ёфтшэєы тыхтю.