buf2d.obj: update function 'buf2d_bit_blt'

git-svn-id: svn://kolibrios.org@7861 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2020-05-04 11:55:42 +00:00
parent 5a520e0752
commit e74d295b71
11 changed files with 321 additions and 147 deletions

View File

@ -1,7 +1,7 @@
<html>
<head>
<title>библиотека для работы с 2d буферами</title>
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
<meta charset="WINDOWS-1251">
<style>
body
{
@ -53,26 +53,47 @@ table { font-size: 15px; }
<li><a href="#fun">Функции</a><br>
<ul>
<li><a href="#f_init">lib_init</a></li>
<li><a href="#f_b_create">buf2d_create</a></li>
<li><a href="#f_b_create_f">buf2d_create_f_img</a></li>
<li><a href="#f_b_clear">buf2d_clear</a></li>
<li><a href="#f_b_draw">buf2d_draw</a></li>
<li><a href="#f_b_delete">buf2d_delete</a></li>
<li><a href="#f_b_rotate">buf2d_rotate</a></li>
<li><a href="#f_b_resize">buf2d_resize</a></li>
<li><a href="#f_b_line">buf2d_line</a></li>
<li><a href="#f_b_line_sm">buf2d_line_sm</a></li>
<li><a href="#f_b_rect">buf2d_rect_by_size</a></li>
<li><a href="#f_b_fil_rect">buf2d_filled_rect_by_size</a></li>
<li><a href="#f_b_circle">buf2d_circle</a></li>
<li><a href="#f_b_hdiv2">buf2d_img_hdiv2</a></li>
<li><a href="#f_b_wdiv2">buf2d_img_wdiv2</a></li>
<li><a href="#f_create">buf2d_create</a></li>
<li><a href="#f_create_f">buf2d_create_f_img</a></li>
<li><a href="#f_clear">buf2d_clear</a></li>
<li><a href="#f_draw">buf2d_draw</a></li>
<li><a href="#f_delete">buf2d_delete</a></li>
<li><a href="#f_rotate">buf2d_rotate</a></li>
<li><a href="#f_resize">buf2d_resize</a></li>
<li><a href="#f_line">buf2d_line</a></li>
<li><a href="#f_line_sm">buf2d_line_sm</a></li>
<li><a href="#f_rect">buf2d_rect_by_size</a></li>
<li><a href="#f_fil_rect">buf2d_filled_rect_by_size</a></li>
<li><a href="#f_circle">buf2d_circle</a></li>
<li><a href="#f_hdiv2">buf2d_img_hdiv2</a></li>
<li><a href="#f_wdiv2">buf2d_img_wdiv2</a></li>
<li>buf2d_conv_24_to_8</li>
<li>buf2d_conv_24_to_32</li>
<li><a href="#f_bit_blt">buf2d_bit_blt</a></li>
<li>buf2d_bit_blt_transp</li>
<li>buf2d_bit_blt_alpha</li>
<li>buf2d_curve_bezier</li>
<li>buf2d_convert_text_matrix</li>
<li>buf2d_draw_text</li>
<li><a href="#f_c_color">buf2d_crop_color</a></li>
<li>buf2d_offset_h</li>
<li>buf2d_flood_fill</li>
<li>buf2d_set_pixel</li>
<li>buf2d_get_pixel</li>
<li><a href="#f_flip_h">buf2d_flip_h</a></li>
<li><a href="#f_flip_v">buf2d_flip_v</a></li>
<li><a href="#f_filter_d">buf2d_filter_dither</a></li>
<li><a href="#f_v_brush_c">buf2d_vox_brush_create</a></li>
<li>buf2d_vox_brush_delete</li>
<li>buf2d_vox_obj_draw_1g</li>
<li>buf2d_vox_obj_get_img_w_3g</li>
<li>buf2d_vox_obj_get_img_h_3g</li>
<li>buf2d_vox_obj_draw_3g</li>
<li>buf2d_vox_obj_draw_3g_scaled</li>
<li>buf2d_vox_obj_draw_3g_shadows</li>
<li>buf2d_vox_obj_draw_pl</li>
<li>buf2d_vox_obj_draw_pl_scaled</li>
</ul>
</li>
<li><a href="#const">Константы</a></li>
@ -119,34 +140,41 @@ buf_0:
<h4><a name="f_init">lib_init</a></h4>
<p>Эта функция получает указатели на функции работы с памятью, вызыватся должна при загрузке библиотеки. Можете использовать макрос <b>@use_library_mem</b>, для ее автоматической настройки.</p>
<h4><a name="f_b_create">buf2d_create</a></h4>
<h4><a name="f_create">buf2d_create</a></h4>
<p>Создает буфер и чистит его фоновым цветом. Пример:</p>
<pre>stdcall [buf2d_create], buf_0</pre>
<p>где buf_0 - структура буфера.</p>
<p>Параметры для создания буфера берутся из структуры.</p>
<h4><a name="f_b_create_f">buf2d_create_f_img</a></h4>
<h4><a name="f_create_f">buf2d_create_f_img</a></h4>
<p>Создает буфер на основе изображения в формате <b>rgb</b>.</p>
<pre>buf2d_w equ dword[edi+8] ;øèðèíà áóôåðà
buf2d_h equ dword[edi+12] ;âûñîòà áóôåðà
mov edi,buf_i0
mov buf2d_w,320
mov buf2d_h,240
stdcall [buf2d_create_f_img], edi,[open_file_img]</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà, open_file_img - óêàçàòåëü íà äàííûå èçîáðàæåíèÿ â ôîðìàòå <b>rgb</b>, 320 - øèðèíà èçîáðàæåíèÿ â ïèêñåëÿõ, 240 - âûñîòà èçîáðàæåíèÿ â ïèêñåëÿõ.</p>
<h4><a name="f_b_clear">buf2d_clear</a></h4>
<h4><a name="f_clear">buf2d_clear</a></h4>
<p>Чистит буфер указаным цветом. Пример:</p>
<pre>buf2d_color equ dword[edi+16] ;цвет фона буфера
mov edi,buf_0
stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран фоновым цветом</pre>
<p>где buf_0 - структура буфера.</p>
<h4><a name="f_b_draw">buf2d_draw</a></h4>
<h4><a name="f_draw">buf2d_draw</a></h4>
<p>Рисует буфер на экране (работает через системную ф. 7). Рисуются только буфера с глубиной цвета 24 бита.</p>
<h4><a name="f_b_delete">buf2d_delete</a></h4>
<h4><a name="f_delete">buf2d_delete</a></h4>
<p>Освобождает память занятую изображением буфера.</p>
<h4><a name="f_b_rotate">buf2d_rotate</a></h4>
<h4><a name="f_rotate">buf2d_rotate</a></h4>
<p>Поворачивает буфер на 90 или 180 градусов. Пример:</p>
<pre>stdcall [buf2d_rotate], buf_0, 90</pre>
<p>где buf_0 - структура буфера (может быть 8, 24 или 32 битным); 90 - угол поворота.</p>
<h4><a name="f_b_resize">buf2d_resize</a></h4>
<h4><a name="f_resize">buf2d_resize</a></h4>
<p>Изменяет размеры буфера или изображения в буфере. Пока поддерживаются буфера с глубиной цвета 24 бита.</p>
<p>Пример 1:</p>
<pre>stdcall [buf2d_resize], buf_0, 0,300, 1 ;изменяем высоту буфера</pre>
@ -156,34 +184,34 @@ stdcall [buf2d_clear], edi, buf2d_color ;
<p>где 250 - новая ширина буфера; 0 - новая высота буфера (0 означает не изменять размер); 2 - параметр указывающий что изменяем изображение в буфере.</p>
<p>Если последний параметр равен 2 то размер буфера остается неизменным и функция работает аналогично так как и функции <b>buf2d_img_hdiv2</b>, <b>buf2d_img_wdiv2</b>. Разница в том, что buf2d_resize может сжимать изображения до заданного размера, а не ровно в 2 раза.</p>
<h4><a name="f_b_line">buf2d_line</a></h4>
<h4><a name="f_line">buf2d_line</a></h4>
<p>Рисует в буфере линию с заданным цветом и координатами. Пример:</p>
<pre>stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;рисуем линию</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться линия; 30, 10, 110, 70 - координаты линии; 0xffff00 - цвет линии.</p>
<p>Для рисования сглаженной линии используйте <b>buf2d_line_sm</b>.</p>
<h4><a name="f_b_line_sm">buf2d_line_sm</a></h4>
<h4><a name="f_line_sm">buf2d_line_sm</a></h4>
<p>Рисует в буфере линию принимает такиже параметры как и функция <b>buf2d_line</b>. Данная функция рисует сглаженную линию более красивую чем <b>buf2d_line</b>, но работает медленнее неё за счет вычисления смешанных цветов фона и самой линии.</p>
<h4><a name="f_b_rect">buf2d_rect_by_size</a></h4>
<h4><a name="f_rect">buf2d_rect_by_size</a></h4>
<p>Рисует прямоугольную рамку, по двум координатам, 2-я координата задана по размеру. Если размеры отрицательные рамка рисуется в обратном направлении.</p>
<pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла (при отрицательных размерах координата правого нижнего); 150, 100 - размер прямоугольника; 0x8080 - цвет линии.</p>
<h4><a name="f_b_fil_rect">buf2d_filled_rect_by_size</a></h4>
<h4><a name="f_fil_rect">buf2d_filled_rect_by_size</a></h4>
<p>Рисует закрашенный прямоугольник, по двум координатам, 2-я координата задана по размеру. Если размер задать 1*1, то будет нарисована точка размером в 1 пиксель, т.е. размер прямоугольника в пикселях будет равен указанному. Если размеры отрицательные прямоугольник рисуется в обратном направлении.</p>
<pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла (при отрицательных размерах координата правого нижнего); 150, 100 - размер прямоугольника; 0x8080 - цвет прямоуголика.</p>
<h4><a name="f_b_circle">buf2d_circle</a></h4>
<h4><a name="f_circle">buf2d_circle</a></h4>
<p>Рисует в буфере окружность с заданным цветом и радиусом. Пример:</p>
<pre>stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться окружность; 25, 70 - координаты центра; 15 - радиус; 0xff0000 - цвет.</p>
<h4><a name="f_b_hdiv2">buf2d_img_hdiv2</a></h4>
<h4><a name="f_hdiv2">buf2d_img_hdiv2</a></h4>
<p>Сжимает изображение в буфере по высоте в 2 раза, при этом размер самого буфера не уменьшается.</p>
<h4><a name="f_b_wdiv2">buf2d_img_wdiv2</a></h4>
<h4><a name="f_wdiv2">buf2d_img_wdiv2</a></h4>
<p>Сжимает изображение в буфере по ширине в 2 раза, при этом размер самого буфера не уменьшается.</p>
<h4>buf2d_conv_24_to_8</h4>
@ -198,7 +226,7 @@ stdcall [buf2d_clear], edi, buf2d_color ;
<p>До выполнения функции буфер buf_a должен быть 24 битным, а буфер buf_b - 8 битным.
После выполнения функции буфер buf_a станет 32 битным, буфер buf_b не изменится.</p>
<h4>buf2d_bit_blt</h4>
<h4><a name="f_bit_blt">buf2d_bit_blt</a></h4>
<p>Рисует в буфере изображение из другого буфера в указанных координатах. Буфер в котором рисут (приемник) должен быть 24 битным, а тот который рисуется (источник) 24 или 32 битным. Если буфер источник 32 битный, то его прозрачность при рисовании не учитывается, для учета прозрачности используется функция <i>buf2d_bit_blt_transp</i>. Пример:</p>
<pre>stdcall [buf2d_bit_blt], buf_0, 50,30, buf_1 ;прорисовка среднего скина</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться изображение (приемник);
@ -446,8 +474,8 @@ import_buf2d_lib:
<p>29.07.10 - добавлены функции buf2d_crop_color и buf2d_offset_h;
исправления в функции buf2d_delete.</p>
<p>30.09.10 - добавлена функция buf2d_rect_by_size.</p>
<p>04.10.10 - äîáŕâëĺíŕ ôóíęöč˙ buf2d_filled_rect_by_size, äîđŕáîňŕíŕ ôóíęöč˙ buf_bit_blt_alpha.</p>
<p>07.10.10 - äîđŕáîňŕíŕ ôóíęöč˙ buf_bit_blt (ďđč ďîďűňęĺ íŕđčńîâŕňü čçîáđŕćĺíčĺ çŕ ďđĺäĺëŕěč ďđŕâîăî ęđŕ˙ áóôĺđŕ ďđčëîćĺíčĺ âűçâŕâřĺĺ ôóíęöčţ ďŕäŕëî).</p>
<p>04.10.10 - äîáàâëåíà ôóíêöèÿ buf2d_filled_rect_by_size, äîðàáîòàíà ôóíêöèÿ buf2d_bit_blt_alpha.</p>
<p>07.10.10 - äîðàáîòàíà ôóíêöèÿ buf2d_bit_blt (ïðè ïîïûòêå íàðèñîâàòü èçîáðàæåíèå çà ïðåäåëàìè ïðàâîãî êðàÿ áóôåðà ïðèëîæåíèå âûçâàâøåå ôóíêöèþ ïàäàëî).</p>
<p>11.10.10 - исправлено задание цветов в некоторых функциях, красный и синий цвета поменял местами. Теперь цвета совпадают с сисемными функциями.</p>
<p>02.11.10 - добавлена функция buf2d_flood_fill.</p>
<p>22.12.10 - изменено имя функции buf2d_cruve_bezier на buf2d_curve_bezier.</p>
@ -461,10 +489,11 @@ import_buf2d_lib:
<p>12.06.12 - добавлены функции для рисования воксельной графики.</p>
<p>11.08.12 - функции для сжатия изображений buf2d_img_hdiv2 и buf2d_img_wdiv2 работают с 32 битными буферами.</p>
<p>01.10.12 - добавлена функция поворота изображений на 90 и 180 градусов buf2d_rotate.</p>
<p>15.11.12 - äîáŕâëĺíŕ ôóíęöč˙ îňđŕćĺíč˙ 24 áčňíűő čçîáđŕćĺíčé ďî âĺđňčęŕëč buf_flip_v, čńďđŕâëĺíč˙ â ôóíęöčč buf2d_img_hdiv2.</p>
<p>15.11.12 - äîáàâëåíà ôóíêöèÿ îòðàæåíèÿ 24 áèòíûõ èçîáðàæåíèé ïî âåðòèêàëè buf2d_flip_v, èñïðàâëåíèÿ â ôóíêöèè buf2d_img_hdiv2.</p>
<p>14.12.12 - добавлена функция наложения фильтра buf2d_filter_dither.</p>
<p>24.12.12 - добавлены 2 новых алгоритма в функцию наложения фильтра buf2d_filter_dither.</p>
<p>30.01.15 - äîáŕâëĺíŕ ďîääĺđćęŕ 32 áčňíűő áóôĺđîâ â ôóíęöčţ buf_flip_v, äîáŕâëĺíŕ ôóíęöč˙ îňđŕćĺíč˙ ďî ăîđčçîíňŕëč buf_flip_h.</p>
<p>30.01.15 - äîáàâëåíà ïîääåðæêà 32 áèòíûõ áóôåðîâ â ôóíêöèþ buf2d_flip_v, äîáàâëåíà ôóíêöèÿ îòðàæåíèÿ ïî ãîðèçîíòàëè buf2d_flip_h.</p>
<p>09.02.16 - изменена функция buf2d_resize добавлен дополнительный параметр, который указывает менять ли изображение или размеры буфера.</p>
<p>04.05.20 - ôóíêöèÿ buf2d_bit_blt ìîæåò ïðèíèìàòü îòðèöàòåëüíûå êîîðäèíàòû â ïîçèöèè êîïèðóåìîãî áóôåðà.</p>
</body>
</html>

View File

@ -2050,7 +2050,7 @@ endp
align 4
proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword
locals
right_bytes dd ?
lost_bytes dd ? ;ç¨á«® ¯®â¥àï­­ëå ¡ ©â®¢ ¢ áâப¥ ª®¯¨à㥬®£® ¨§®¡à ¦¥­ï (â¥å çâ® ­¥ ¢« §ïâ ¢ ¡ãä¥à)
endl
pushad
@ -2081,7 +2081,6 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc
cmp edx,0
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî ­ ¤ ¢¥àå­¥© £à ­¨æ¥© ¡ãä¥à  (coord_y<0 ¨ |coord_y|>buf_source.h)
neg ecx
;inc ecx
imul ecx,eax
lea ecx,[ecx+ecx*2] ;¯® 3 ¡ ©â  ­  ¯¨ªá¥«ì
add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ â¥«ì á ª®¯¨à㥬묨 ¤ ­­ë¬¨, á ãç¥â®¬ ¯à®¯ã襭®© ç áâ¨
@ -2111,22 +2110,35 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc
sub ebx,eax
mov edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
mov [right_bytes],0
mov dword[lost_bytes],0
mov ecx,[coord_x]
cmp ecx,0
jge @f
neg ecx
cmp eax,ecx ;eax - è¨à¨­  ª®¯¨à㥬®© ª à⨭ª¨
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî §  «¥¢®© £à ­¨æ¥© ¡ãä¥à  (coord_x<0 ¨ |coord_x|>buf_source.w)
sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
lea ecx,[ecx+ecx*2]
mov [lost_bytes],ecx
add esi,ecx
add edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
xor ecx,ecx
@@:
cmp ecx,ebx
jl @f
jle @f
sub ecx,ebx
sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
lea ecx,[ecx+ecx*2] ;ecx - ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª à⨭ª¨, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî áâ®à®­ã
mov [right_bytes],ecx
lea ecx,[ecx+ecx*2] ;ecx - ç¨á«® ¯¨ªá¥«¥© ¢ 1-© áâப¥ ª à⨭ª¨, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî áâ®à®­ã
add [lost_bytes],ecx
@@:
lea eax,[eax+eax*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨭ª¨
lea ebx,[ebx+ebx*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ¡ãä¥à  ¬¨­ãá ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨭ª¨
cld
cmp [right_bytes],0
cmp [lost_bytes],0
jg .copy_1
.copy_0: ;¯à®á⮥ ª®¯¨à®¢ ­¨¥
mov ecx,eax
@ -2140,7 +2152,7 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc
mov ecx,eax
rep movsb
add edi,ebx
add esi,[right_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî £à ­¨æã
add esi,[lost_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî £à ­¨æã
dec edx
cmp edx,0
jg .copy_1
@ -2166,7 +2178,6 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc
cmp edx,0
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî ­ ¤ ¢¥àå­¥© £à ­¨æ¥© ¡ãä¥à  (coord_y<0 ¨ |coord_y|>buf_source.h)
neg ecx
;inc ecx
imul ecx,eax
shl ecx,2 ;¯® 4 ¡ ©â  ­  ¯¨ªá¥«ì
add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ â¥«ì á ª®¯¨à㥬묨 ¤ ­­ë¬¨, á ãç¥â®¬ ¯à®¯ã襭®© ç áâ¨
@ -2199,22 +2210,35 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc
sub ebx,eax
mov edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
mov [right_bytes],0
mov dword[lost_bytes],0
mov ecx,[coord_x]
cmp ecx,0
jge @f
neg ecx
cmp eax,ecx ;eax - è¨à¨­  ª®¯¨à㥬®© ª à⨭ª¨
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî §  «¥¢®© £à ­¨æ¥© ¡ãä¥à  (coord_x<0 ¨ |coord_x|>buf_source.w)
sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
shl ecx,2
mov [lost_bytes],ecx
add esi,ecx
add edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
xor ecx,ecx
@@:
cmp ecx,ebx
jl @f
jle @f
sub ecx,ebx
sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
shl ecx,2 ;ecx - ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª à⨭ª¨, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî áâ®à®­ã
mov [right_bytes],ecx
shl ecx,2 ;ecx - ç¨á«® ¯¨ªá¥«¥© ¢ 1-© áâப¥ ª à⨭ª¨, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî áâ®à®­ã
add [lost_bytes],ecx
@@:
;eax - ª®««¨ç¥á⢮ ¯¨ªá¥«¥© ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨭ª¨
lea ebx,[ebx+ebx*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ¡ãä¥à  ¬¨­ãá ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨭ª¨
cld
cmp [right_bytes],0
cmp [lost_bytes],0
jg .copy_3
.copy_2: ;¯à®á⮥ ª®¯¨à®¢ ­¨¥
mov ecx,eax
@ -2236,7 +2260,7 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc
inc esi
loop @b
add edi,ebx
add esi,[right_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî £à ­¨æã
add esi,[lost_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî £à ­¨æã
dec edx
cmp edx,0
jg .copy_3
@ -2288,7 +2312,7 @@ combine_colors_0:
align 4
proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword
locals
lost_bytes dd ?
lost_bytes dd ? ;ç¨á«® ¯®â¥àï­­ëå ¡ ©â®¢ ¢ áâப¥ ª®¯¨à㥬®£® ¨§®¡à ¦¥­ï (â¥å çâ® ­¥ ¢« §ïâ ¢ ¡ãä¥à)
endl
pushad
@ -2311,7 +2335,6 @@ proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, bu
cmp edx,0
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî ­ ¤ ¢¥àå­¥© £à ­¨æ¥© ¡ãä¥à  (coord_y<0 ¨ |coord_y|>buf_source.h)
neg ecx
;inc ecx
imul ecx,eax
shl ecx,2 ;¯® 4 ¡ ©â  ­  ¯¨ªá¥«ì
add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ â¥«ì á ª®¯¨à㥬묨 ¤ ­­ë¬¨, á ãç¥â®¬ ¯à®¯ã襭®© ç áâ¨
@ -2346,15 +2369,14 @@ proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, bu
cmp ecx,0
jge @f
neg ecx
;inc ecx
cmp eax,ecx ;eax - è¨à¨­  ª®¯¨à㥬®© ª à⨭ª¨
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî §  «¥¢®© £à ­¨æ¥© ¡ãä¥à  (coord_x<0 ¨ |coord_x|>buf_source.w)
sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
shl ecx,2
mov [lost_bytes],ecx
add esi,ecx
shr ecx,2
sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
lea ecx,[ecx+ecx*2]
add edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
xor ecx,ecx
@ -2368,17 +2390,6 @@ proc buf_bit_blt_transp, buf_destination:dword, coord_x:dword, coord_y:dword, bu
add [lost_bytes],ecx
@@:
; mov [right_bytes],0
; mov ecx,[coord_x]
; cmp ecx,ebx
; jl @f
; sub ecx,ebx
; sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
; add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
; shl ecx,2 ;ecx - ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª à⨭ª¨, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî áâ®à®­ã
; mov [right_bytes],ecx
; @@:
lea ebx,[ebx+ebx*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ¡ãä¥à  ¬¨­ãá ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨭ª¨
cld
@ -2487,7 +2498,6 @@ proc buf_bit_blt_alpha, buf_destination:dword, coord_x:dword, coord_y:dword, buf
cmp edx,0
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî ­ ¤ ¢¥àå­¥© £à ­¨æ¥© ¡ãä¥à  (coord_y<0 ¨ |coord_y|>buf_source.h)
neg ecx
;inc ecx
imul ecx,eax
add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ â¥«ì á ª®¯¨à㥬묨 ¤ ­­ë¬¨, á ãç¥â®¬ ¯à®¯ã襭®© ç áâ¨
xor ecx,ecx ;®¡­ã«ï¥¬ ª®®à¤¨­ âã coord_y
@ -2521,12 +2531,11 @@ proc buf_bit_blt_alpha, buf_destination:dword, coord_x:dword, coord_y:dword, buf
cmp ecx,0
jge @f
neg ecx
;inc ecx
cmp eax,ecx ;eax - è¨à¨­  ª®¯¨à㥬®© ª à⨭ª¨
jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî §  «¥¢®© £à ­¨æ¥© ¡ãä¥à  (coord_x<0 ¨ |coord_x|>buf_source.w)
mov [lost_bytes],ecx
sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
mov [lost_bytes],ecx
add esi,ecx
lea ecx,[ecx+ecx*2]
add edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥

View File

@ -1,2 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.foreach_rule({"vox_creator.asm", "vox_mover.asm", "vox_tgl.asm"}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "%B")
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.foreach_rule({"vox_creator.asm", "vox_mover.asm", "vox_tgl.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "%B")

View File

@ -0,0 +1,10 @@
if not exist bin mkdir bin
@erase lang.inc
@echo lang fix en >lang.inc
@fasm.exe -m 16384 vox_creator.asm bin\vox_creator.kex
@kpack bin\vox_creator.kex
@fasm.exe -m 16384 vox_mover.asm bin\vox_mover.kex
@kpack bin\vox_mover.kex
@fasm.exe -m 16384 vox_tgl.asm bin\vox_tgl.kex
@kpack bin\vox_tgl.kex
pause

View File

@ -1,6 +1,6 @@
if not exist bin mkdir bin
if not exist bin\buf2d.obj @fasm.exe -m 16384 ..\..\..\develop\libraries\TinyGL\asm_fork\tinygl.asm bin\tinygl.obj
@kpack bin\tinygl.obj
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm.exe -m 16384 vox_creator.asm bin\vox_creator.kex
@kpack bin\vox_creator.kex
@fasm.exe -m 16384 vox_mover.asm bin\vox_mover.kex

View File

@ -8,6 +8,7 @@ include '../../../../programs/proc32.inc'
include '../../../../programs/KOSfuncs.inc'
include '../../../../programs/load_img.inc'
include '../trunk/str.inc'
include 'lang.inc'
vox_offs_tree_table equ 4
vox_offs_data equ 12
@ -15,7 +16,11 @@ txt_buf rb 8
include '../trunk/vox_rotate.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Voxel creator 22.03.18',0 ;¯®¤¯¨áì ®ª­ 
if lang eq ru
caption db '‘®§¤ â¥«ì ¢®ªá¥«¥© 04.05.20',0 ;¯®¤¯¨áì ®ª­ 
else
caption db 'Voxel creator 04.05.20',0
end if
BUF_STRUCT_SIZE equ 21
buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
@ -27,14 +32,16 @@ buf2d_size_lt equ dword[edi+4] ;
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
vox_offs_tree_table equ 4
vox_offs_data equ 12
run_file_70 FileInfoBlock
vox_obj_size dd 0 ;à §¬¥à ¢®ªá¥«ì­®£® ®¡ê¥ªâ  (¤«ï ã᪮७¨ï ¢áâ ¢ª¨)
txt_space db ' ',0
if lang eq ru
txt_pref db ' ¡ ',0,' Š¡',0,' Œ¡',0,' ƒ¡',0 ;¯à¨áâ ¢ª¨: ª¨«®, ¬¥£ , £¨£ 
txt_f_size: db '<27> §¬¥à: '
else
txt_pref db ' b ',0,' Kb',0,' Mb',0,' Gb',0 ;¯à¨áâ ¢ª¨: ª¨«®, ¬¥£ , £¨£ 
txt_f_size: db 'Size: '
end if
.size: rb 16
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
@ -469,42 +476,52 @@ button:
cmp ah,3
jne @f
call but_new_file
jmp still
@@:
cmp ah,4
jne @f
call but_open_file
call but_open_file ;®âªàë⨥ ¢®ªá¥«ì­®£® ä ©« 
jmp still
@@:
cmp ah,5
jne @f
call but_save_file
jmp still
@@:
cmp ah,6
jne @f
call but_1
jmp still
@@:
cmp ah,7
jne @f
call but_2
jmp still
@@:
cmp ah,8
jne @f
call but_3
jmp still
@@:
cmp ah,9
jne @f
stdcall but_run, 0
jmp still
@@:
cmp ah,10
jne @f
stdcall but_run, 1
jmp still
@@:
cmp ah,11
jne @f
call but_5
call but_stop
jmp still
@@:
cmp ah,12
jne @f
call but_rot_z
jmp still
@@:
cmp ah,1
jne still
@ -769,7 +786,7 @@ bby_max dd 0
k_scale dd 0
n_plane dd 0
calc db 0
calc db 0 ;¥á«¨ =1, â® ¨¤¥â ᮧ¤ ­¨¥ ®¡ê¥ªâ 
; ᮧ¤ ­¨¥ ¢®ªá¥«ï ¢ 3 íâ ¯ :
; 1) ¨é¥¬ ¬¥áâ® ¢ áâàãªâãॠ¤¥à¥¢ , ªã¤  ­ ¤® ¢áâ ¢¨âì (¥á«¨ ¢¥â¢ì áãé¥áâ¢ã¥â, 2-© íâ ¯ ¯à®¯ã᪠¥¬)
@ -988,7 +1005,6 @@ coord_x:dword,coord_y:dword,coord_z:dword,k_scale:dword
ret
endp
;
;output:
; eax - à §¬¥à ¢ ¡ ©â å § ­¨¬ ¥¬ë© ®¡ê¥ªâ®¬ v_obj
align 4
@ -1080,8 +1096,9 @@ proc but_run uses eax ebx edi, mode_add:dword
ret
endp
;¯à¥ªà â¨âì ᮧ¤ ­¨¥ ®¡ê¥ªâ 
align 4
but_5:
but_stop:
cmp byte[calc],0
je @f
call draw_object
@ -1131,6 +1148,9 @@ proc open_image_in_buf, buf:dword
stdcall dword[img_decode], dword[open_file_img],ebx,0
or eax,eax
jz .end_0 ;¥á«¨ ­ àã襭 ä®à¬ â ä ©« 
mov ebx,[eax+4] ;+4 = image width
cmp ebx,[eax+8] ;+8 = image height
jne .err_s0
mov ebx,eax
;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
stdcall dword[img_to_rgb2], ebx,dword[open_file_img]
@ -1139,11 +1159,11 @@ proc open_image_in_buf, buf:dword
cmp buf2d_data,0
jne @f
m2m buf2d_w,dword[ebx+4] ;+4 = image width
m2m buf2d_h,dword[ebx+8] ;+8 = image heihht
m2m buf2d_h,dword[ebx+8] ;+8 = image height
stdcall [buf2d_create_f_img], edi,[open_file_img]
jmp .end_1
@@:
mov ecx,dword[ebx+8]
mov ecx,[ebx+8]
stdcall [buf2d_resize], edi, [ebx+4],ecx,1 ;¨§¬¥­ï¥¬ à §¬¥àë ¡ãä¥à 
imul ecx,[ebx+4]
lea ecx,[ecx+ecx*2]
@ -1151,8 +1171,11 @@ proc open_image_in_buf, buf:dword
mov esi,[open_file_img]
cld
rep movsb ;copy image
jmp .end_1
.err_s0: ;®è¨¡ª , ¨§®¡à ¦¥­¨¥ ¤«ï ¯à¥®¡à §®¢ ­¨ï ­¥ ¯®¤å®¤¨â (­¥ ª¢ ¤à â­®¥)
mov ebx,eax
notify_window_run txt_img_not_square
.end_1:
;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à ¢ ebx
stdcall dword[img_destroy], ebx
.end_0:
@ -1199,6 +1222,8 @@ msgbox_4:
db '‡ ªàëâì',0
db 0
txt_img_not_square db '"‚­¨¬ ­¨¥',13,10,'Žâªà뢠¥¬®¥ ¨§®¡à ¦¥­¨¥ ­¥ ª¢ ¤à â­®¥" -tW',0
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
align 4
OpenDialog_data:
@ -1244,29 +1269,40 @@ db 0
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
system_dir_0 db '/sys/lib/'
lib_name_0 db 'proc_lib.obj',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
system_dir_1 db '/sys/lib/'
lib_name_1 db 'libimg.obj',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
system_dir_2 db '/sys/lib/'
lib_name_2 db 'buf2d.obj',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
system_dir_3 db '/sys/lib/'
lib_name_3 db 'msgbox.obj',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'msgbox.obj',39,0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'msgbox',39,0
align 4
head_f_i:
if lang eq ru
head_f_l db '"‘¨á⥬­ ï ®è¨¡ª ',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'msgbox.obj',39,'" -tE',0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'msgbox',39,'" -tE',0
else
head_f_l db '"System error',0
err_message_found_lib_0 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Error on load import library ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db 'Sorry I cannot found library ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Error on load import library ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db 'Sorry I cannot found library ',39,'msgbox.obj',39,'" -tE',0
err_msg_import_3 db 'Error on load import library ',39,'msgbox',39,'" -tE',0
end if
align 4
l_libs_start:
lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
@ -1419,7 +1455,7 @@ dd 0,0
; amb_reinit db 'mb_reinit',0
; amb_setfunctions db 'mb_setfunctions',0
mouse_dd dd 0x0
mouse_dd dd 0
sc system_colors
last_time dd 0
@ -1444,6 +1480,7 @@ buf_0z: dd 0
.color: dd 0 ;+16 color
db 32 ;+20 bit in pixel
;⥪áâãà  1 (¢¥àå­ïï)
align 4
buf_i0: dd 0
dw 5 ;+4 left
@ -1453,6 +1490,7 @@ buf_i0: dd 0
.color: dd 0 ;+16 color
db 24 ;+20 bit in pixel
;⥪áâãà  2
align 4
buf_i1: dd 0
dw 105 ;+4 left
@ -1462,6 +1500,7 @@ buf_i1: dd 0
.color: dd 0 ;+16 color
db 24 ;+20 bit in pixel
;⥪áâãà  3
align 4
buf_i2: dd 0
dw 205 ;+4 left
@ -1471,6 +1510,10 @@ buf_i2: dd 0
.color: dd 0 ;+16 color
db 24 ;+20 bit in pixel
; «£®à¨â¬ ᮧ¤ ­¨ï ¬®¤¥«¨ ¨á¯®«ì§ã¥â 3 á¥ç¥­¨ï:
; ¯à¥¤ë¤ã饥, ⥪ã饥, ¯®á«¥¤ãî饥 (íâ® ­¥®¡å®¤¨¬® ¤«ï ®âᥨ¢ ­¨ï ¢®ªá¥«¥© ¢­ãâਠ®¡ê¥ªâ )
;¯à¥¤ë¤ã饥 á¥ç¥­¨¥
align 4
buf_npl_p: dd 0
dw 0 ;+4 left
@ -1480,6 +1523,7 @@ buf_npl_p: dd 0
.color: dd 0 ;+16 color
db 24 ;+20 bit in pixel
;⥪ã饥 á¥ç¥­¨¥
align 4
buf_npl: dd 0
dw 5 ;+4 left
@ -1489,6 +1533,7 @@ buf_npl: dd 0
.color: dd 0 ;+16 color
db 24 ;+20 bit in pixel
;¯®á«¥¤ãî饥 á¥ç¥­¨¥
align 4
buf_npl_n: dd 0
dw 0 ;+4 left

View File

@ -10,9 +10,14 @@ include '../../../../programs/load_img.inc'
include '../trunk/vox_draw.inc'
include '../trunk/vox_rotate.inc'
include '../trunk/str.inc'
include 'lang.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Voxel mover 22.03.18',0 ;¯®¤¯¨áì ®ª­ 
if lang eq ru
caption db '<27>¥à¥¬¥é¥­¨¥ ¢®ªá¥«¥© 04.05.20',0 ;¯®¤¯¨áì ®ª­ 
else
caption db 'Voxel mover 04.05.20',0
end if
run_file_70 FileInfoBlock
@ -518,80 +523,98 @@ button:
stdcall but_new_file, [open_file_vox]
call draw_objects
call draw_pok
jmp still
@@:
cmp ah,4
jne @f
call but_open_file
jmp still
@@:
cmp ah,5
jne @f
call but_save_file
jmp still
@@:
cmp ah,6
jne @f
call but_zoom_p
jmp still
@@:
cmp ah,7
jne @f
call but_zoom_m
jmp still
@@:
cmp ah,8
jne @f
call but_3
jmp still
@@:
cmp ah,9
jne @f
call but_4
jmp still
@@:
cmp ah,10
jne @f
call but_plane_inc
jmp still
@@:
cmp ah,11
jne @f
call but_plane_dec
jmp still
@@:
cmp ah,12
jne @f
call but_light
jmp still
@@:
cmp ah,13
jne @f
call but_rend_2_2
jmp still
@@:
cmp ah,14
jne @f
call but_move
jmp still
@@:
cmp ah,15
jne @f
dec dword[mov_x]
call draw_pok
jmp still
@@:
cmp ah,16
jne @f
inc dword[mov_x]
call draw_pok
jmp still
@@:
cmp ah,17
jne @f
dec dword[mov_y]
call draw_pok
jmp still
@@:
cmp ah,18
jne @f
inc dword[mov_y]
call draw_pok
jmp still
@@:
cmp ah,19
jne @f
dec dword[mov_z]
call draw_pok
jmp still
@@:
cmp ah,20
jne @f
inc dword[mov_z]
call draw_pok
jmp still
@@:
cmp ah,1
jne still
@ -633,8 +656,8 @@ moved_file_vox dd 0
align 4
but_open_file:
pushad
copy_path open_dialog_name,communication_area_default_path,file_name,0
pushad
mov [OpenDialog_data.type],0
stdcall [OpenDialog_Start],OpenDialog_data
cmp [OpenDialog_data.status],2
@ -676,8 +699,8 @@ popad
align 4
but_save_file:
pushad
copy_path open_dialog_name,communication_area_default_path,file_name,0
pushad
mov [OpenDialog_data.type],1
stdcall [OpenDialog_Start],OpenDialog_data
cmp [OpenDialog_data.status],2
@ -1133,12 +1156,21 @@ dd 1 shl 30,1 shl 30,1 shl 30,1 shl 30,1 shl 30
dd 1 shl 31,1 shl 30,1 shl 30,1 shl 30,1 shl 31
rd 999 ;32*32-25
if lang eq ru
txt_zoom db 'Ś áčâ ˇ:',0
txt_curor: db 'Šăŕá®ŕ: '
.size: rb 10
txt_n_plane db '‘ĄçĄ­¨Ą:',0
txt_color db '–˘Ąâ:',0
txt_mov_offs: db '‘¬ĄéĄ­¨Ą: '
else
txt_zoom db 'Scale:',0
txt_curor: db 'Cursor: '
.size: rb 10
txt_n_plane db 'Section:',0
txt_color db 'Color:',0
txt_mov_offs: db 'Offset: '
end if
.size: rb 30
txt_mull db '*',0
txt_space db ' ',0
@ -1292,29 +1324,38 @@ db 'VOX',0
db 0
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
system_dir_0 db '/sys/lib/'
lib_name_0 db 'proc_lib.obj',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
system_dir_1 db '/sys/lib/'
lib_name_1 db 'libimg.obj',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
system_dir_2 db '/sys/lib/'
lib_name_2 db 'buf2d.obj',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
system_dir_3 db '/sys/lib/'
lib_name_3 db 'libini.obj',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libini.obj',39,0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libini',39,0
align 4
head_f_i:
if lang eq ru
head_f_l db '"‘¨á⥬­ ï ®è¨¡ª ',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libini.obj',39,'" -tE',0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libini',39,'" -tE',0
else
head_f_l db '"System error',0
err_message_found_lib_0 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Error on load import library ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db 'Sorry I cannot found library ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Error on load import library ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db 'Sorry I cannot found library ',39,'libini.obj',39,'" -tE',0
err_msg_import_3 db 'Error on load import library ',39,'libini',39,'" -tE',0
end if
l_libs_start:
lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
@ -1469,7 +1510,7 @@ dd 0,0
aini_get_int db 'ini_get_int',0
aini_get_color db 'ini_get_color',0
mouse_dd dd 0x0
mouse_dd dd 0
sc system_colors
align 16

View File

@ -10,9 +10,14 @@ include '../../../../programs/load_img.inc'
include '../../../../programs/develop/libraries/TinyGL/asm_fork/opengl_const.inc'
include 'vox_3d.inc'
include '../trunk/str.inc'
include 'lang.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Voxel viewer 22.03.18',0 ;¯®¤¯¨áì ®ª­ 
if lang eq ru
caption db '<27>à®á¬®âà ¢®ªá¥«¥© 04.05.20',0 ;¯®¤¯¨áì ®ª­ 
else
caption db 'Voxel viewer 04.05.20',0
end if
3d_wnd_l equ 5 ;®âáâ㯠¤«ï tinygl ¡ãä¥à  á«¥¢ 
3d_wnd_t equ 30 ;®âáâ㯠¤«ï tinygl ¡ãä¥à  ᢥàåã
@ -355,42 +360,52 @@ button:
cmp ah,3
jne @f
call but_new_file
jmp still
@@:
cmp ah,4
jne @f
call but_open_file
jmp still
@@:
cmp ah,5
jne @f
call but_save_file
jmp still
@@:
cmp ah,6
jne @f
call but_zoom_p
jmp still
@@:
cmp ah,7
jne @f
call but_zoom_m
jmp still
@@:
cmp ah,8
jne @f
call but_3
call but_light
jmp still
@@:
cmp ah,9
jne @f
call but_4
jmp still
@@:
cmp ah,10
jne @f
call but_5
jmp still
@@:
cmp ah,11
jne @f
call but_6
call but_info
jmp still
@@:
cmp ah,12
jne @f
call but_draw_cadr
jmp still
@@:
cmp ah,1
jne still
@ -417,8 +432,8 @@ v_zoom dd 0
align 4
but_open_file:
pushad
copy_path open_dialog_name,communication_area_default_path,file_name,0
pushad
mov [OpenDialog_data.type],0
stdcall [OpenDialog_Start],OpenDialog_data
cmp [OpenDialog_data.status],2
@ -564,8 +579,8 @@ draw_cadr:
align 4
but_save_file:
pushad
copy_path open_dialog_name,communication_area_default_path,file_name,0
pushad
mov [OpenDialog_data.type],1
stdcall [OpenDialog_Start],OpenDialog_data
cmp [OpenDialog_data.status],2
@ -618,7 +633,7 @@ proc but_zoom_m uses eax
endp
align 4
proc but_3 uses eax ebx ecx edx
proc but_light uses eax ebx ecx edx
xor word[opt_light],1
cmp word[opt_light],0
je @f
@ -652,7 +667,7 @@ proc but_5 uses eax ebx ecx edx
endp
align 4
proc but_6 uses eax ebx ecx edx edi
proc but_info uses eax ebx ecx edx edi
;¢ëç¨á«¥­¨¥ áâ â¨á⨪¨ ¯® ¢®ªá¥«ï¬
mov eax,[open_file_ogl]
or eax,eax
@ -707,10 +722,17 @@ endp
align 4
txt_stat_m1:
if lang eq ru
db '‘â â¨á⨪ ',13,10,'‚®ªá¥«¥©: '
.v: rb 70
txt_stat_m2:
db 13,10,'Žâ®¡à ¦ ¥¬ëå £à ­¥©: '
else
db 'Statistics',13,10,'Voxels: '
.v: rb 70
txt_stat_m2:
db 13,10,'Facets displayed: '
end if
.v: rb 20
align 4
@ -842,28 +864,38 @@ db 0
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
system_dir_0 db '/sys/lib/'
lib_name_0 db 'proc_lib.obj',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
system_dir_1 db '/sys/lib/'
lib_name_1 db 'libimg.obj',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
system_dir_2 db '/sys/lib/'
lib_name_2 db 'buf2d.obj',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
system_dir_3 db '/sys/lib/'
lib_name_3 db 'tinygl.obj',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'tinygl.obj',39,0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'tinygl',39,0
align 4
head_f_i:
if lang eq ru
head_f_l db '"‘¨á⥬­ ï ®è¨¡ª ',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'tinygl.obj',39,'" -tE',0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'tinygl',39,'" -tE',0
else
head_f_l db '"System error',0
err_message_found_lib_0 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Error on load import library ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db 'Sorry I cannot found library ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Error on load import library ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db 'Sorry I cannot found library ',39,'tinygl.obj',39,'" -tE',0
err_msg_import_3 db 'Error on load import library ',39,'tinygl',39,'" -tE',0
end if
l_libs_start:
lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\

View File

@ -267,8 +267,12 @@ align 4
;conv_tabl rb 128 ;â ¡«¨æ  ¤«ï ª®­¢¥àâ¨à®¢ ­¨ï scan-ª®¤  ¢ ascii-ª®¤
buf db BUF_SIZE dup(0) ;¡ãä¥à ¤«ï ª®¯¨à®¢ ­¨ï | ¢áâ ¢ª¨
capt_header db 'macro wo txt,f1,p1,p2,p3{',13
db '@@: db txt',13,'rb @b+40-$',13,'dd f1+0',13,'db p1',13,'dw p2+0',13,'db p3',13,'}',13
capt_header db 'macro wo txt,lf1,p1,p2,p3{',13
db '@@: db txt',13,'rb @b+40-$',13
db 'if lf1 eq',13,'dd 0',13 ;¥á«¨ áá뫪  f1 ¯ãáâ ï
db 'else if lf1 eq 0',13,'dd 0',13 ;¥á«¨ áá뫪  f1 à ¢­  0
db 'else',13,'dd f1.#lf1-f1',13,'end if',13 ;¥á«¨ áá뫪  f1 § ¤ ­  ¬¥âª®©
db 'db p1',13,'dw p2+0',13,'db p3',13,'}',13
db 'count_colors_text dd (text-color_wnd_text)/4',13
db 'count_key_words dd (f1-text)/48',13,0
col_1 db 'color_cursor dd ',0 ;+ 98 梥⠪ãàá®à 
@ -286,9 +290,7 @@ capt_end_word db 39,'>,',0
capt_type_dd db 9,'dd ',0
capt_lbl_f1 db 'f1: db 0',13,0
capt_end_word_f1 db 39,',0',13,0
capt_calc_f1 db 'f1'
capt_point db '.',0
capt_lbl_f1_use db '-f1',0
capt_null db '0',0
KM_SHIFT equ 0x00010000

View File

@ -56,8 +56,13 @@ start:
copy_path fn_syntax_dir,sys_path,file_name,0 ;¡¥à¥¬ ¯ãâì ª ¯ ¯ª¥ á ä ©« ¬¨ ᨭ⠪á¨á 
mcall SF_FILE,tree_file_struct
cmp ebx,0
jle .end_dir_init
cmp ebx,2
jg @f
notify_window_run file_name ;á®®¡é¥­¨¥ ¥á«¨ ­¥ 㤠«®áì ®âªàëâì ä ©«ë
jmp .end_dir_init
@@:
;cmp ebx,0
;jle .end_dir_init
mov eax,dir_mem+32+40
mov ecx,ebx
@@:
@ -353,7 +358,7 @@ get_wnd_in_focus:
;@@:
ret
hed db 'TextEditor syntax file converter 29.01.19',0 ;¯®¤¯¨áì ®ª­ 
hed db 'TextEditor syntax file converter 06.02.20',0 ;¯®¤¯¨áì ®ª­ 
conv_tabl rb 128 ; â ¡«¨æ  ¤«ï ª®­¢¥àâ¨à®¢ ­¨ï scan-ª®¤  ¢ ascii-ª®¤
txt_load_f db '‡ £à. ä ©«',0

View File

@ -246,9 +246,7 @@ proc print_word, text:dword, index:dword
cmp dword[ecx+TexColViv.f1],0
je @f
stdcall str_cat,edi,capt_calc_f1
stdcall str_cat_value,edi,[index]
stdcall str_cat,edi,capt_lbl_f1_use
@@:
stdcall str_len,edi
@ -322,6 +320,8 @@ proc code_string, text:dword, out_text:dword
stdcall str_len,esi
mov ecx,eax
mov edi,[out_text]
or ecx,ecx
jz .end_copy ;если строка со справкой пустаЯ
.copy:
mov al,byte[esi]