'voxel_editor' add new instrument and docs
git-svn-id: svn://kolibrios.org@2883 a494cfbc-eb01-0410-851d-a64ba20cac60
BIN
programs/media/voxel_editor/docs/about.png
Normal file
After Width: | Height: | Size: 28 KiB |
111
programs/media/voxel_editor/docs/readme.htm
Normal file
@ -0,0 +1,111 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Оглавление</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
|
||||
<style>
|
||||
body
|
||||
{
|
||||
font-size: 15px;
|
||||
font-family: "Bookman Old Style";
|
||||
color: black;
|
||||
text-align: justify;
|
||||
}
|
||||
h1 { color: green; font-size: 23px; }
|
||||
h2 { color: green; font-size: 21px; }
|
||||
h3 { color: green; font-size: 19px; }
|
||||
h4 { color: #803f00; font-size: 17px; }
|
||||
i { color: #0099cc; }
|
||||
b { color: #0099cc; }
|
||||
p {
|
||||
text-indent: 1em;
|
||||
margin-top: 3px;
|
||||
margin-bottom: 2px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
ol, ul, dl{
|
||||
margin-top: 3px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
pre
|
||||
{
|
||||
padding: 2px;
|
||||
padding-left: 20px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
font-family: "Courier New";
|
||||
font-size: 15px;
|
||||
color: #004000;
|
||||
background-color: #ffd0ff;
|
||||
}
|
||||
table
|
||||
{
|
||||
font-size: 15px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Редактор воксельной графики версия от 19.07.2012</h1>
|
||||
<p>Оглавление</p>
|
||||
<ul>
|
||||
<li><a href="#about">О программе</a></li>
|
||||
<li><a href="#algor">Работа с программой</a>
|
||||
<ul>
|
||||
<li>Описание панели инструментов</li>
|
||||
<li>Изменение текущего цвета карадаша</li>
|
||||
<li>Работа с кистью</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Автор</li>
|
||||
</ul>
|
||||
|
||||
<h2><a name="about">О программе</a></h2>
|
||||
<p>Программа для создания и редактирования 3-х мерной воксельной графики.</p>
|
||||
<p><img src="about.png"></p>
|
||||
<p>Внешний вид программы.</p>
|
||||
<p>Окно программы содержит панель инструментов, текстовые подписи, буфер с изображением 3-х мерного объекта и сечение этого объекта. Через буфер с сечением объекта можно редактировать изображение. В текстовых подписях указано: текущий цвет карандаша, позиция курсора, размер кисти, масштаб и номер сечения. Изображения сохраняются в бинарный файл с расширением <b>*.vox</b>.</p>
|
||||
<p>Лицензия свободная.</p>
|
||||
|
||||
<h2><a name="algor">Работа с программой</a></h2>
|
||||
|
||||
<h3>Описание панели инструментов</h3>
|
||||
<p><img src="tb_new.png"> - создание нового файла.</p>
|
||||
<p><img src="tb_open.png"> - открытие файлов с помощью диалогового окна.</p>
|
||||
<p><img src="tb_save.png"> - сохранение файлов.</p>
|
||||
<p><img src="tb_zoom_p.png">, <img src="tb_zoom_m.png"> - увеличение и уменьшение масштаба.</p>
|
||||
<p><img src="tb_rot_1.png">, <img src="tb_rot_2.png"> - повороты изображения.</p>
|
||||
<p><img src="tb_pl_p.png">, <img src="tb_pl_m.png"> - сдвиг плоскости сечения.</p>
|
||||
<p><img src="tb_pen.png"> - установка режима рисования вокселей.</p>
|
||||
<p><img src="tb_brush.png"> - установка режима рисования с использованием кисти.</p>
|
||||
<p><img src="tb_eraser.png"> - установка режима стирания вокселей.</p>
|
||||
<p><img src="tb_color.png"> - установка режима выбора цвета.</p>
|
||||
<p><img src="tb_light.png"> - включение и отключение режима освещения при прорисовке изображения.</p>
|
||||
<p><img src="tb_r_2_2.png"> - прорисовка изображения с улучшеным качеством.</p>
|
||||
<p><img src="tb_br_copy.png"> - создание кисти из выделенной области на изображении.</p>
|
||||
<p><img src="tb_br_paste.png"> - рисование кистью на изображении.</p>
|
||||
<p><img src="tb_br_size.png"> - определение размеров для инструмента кисть.</p>
|
||||
|
||||
<h3>Изменение текущего цвета карадаша</h3>
|
||||
<p>Цвет карандаша можно поменять вызвав для этого палитру стандартных цветов кнопкой <img src="tb_color.png">.</p>
|
||||
<p>Также цвет карандаша можно поменять и без палитры нажав на ПКМ в одном из 2-х буферов. Цвет будет определен в зависимости от места нажатия.</p>
|
||||
|
||||
<h3>Работа с кистью</h3>
|
||||
<p>Кисть может использоваться для создания изображений с повторяющимися похожими друг на друа частями. Для копирования определенной части изображения выполните такие действия:</p>
|
||||
<ul>
|
||||
<li>откройте или нарисуйте изображение, часть которого нужно копировать</li>
|
||||
<li>выберите инструмент кисть (кнопка <img src="tb_brush.png">)</li>
|
||||
<li>нажмите на плоскости сечения в область, которая будет использована как образец для создания кисти</li>
|
||||
<li>при необходимости измените размер области кнопками <img src="tb_br_size.png"> (максимальный размер кисти 32*32)</li>
|
||||
<li>нажмите кнопку <img src="tb_br_copy.png"> для запоминания выделенной области</li>
|
||||
<li>выберите на плоскости сечения новую позицию для вставки запомненного образца, нажмите <img src="tb_br_paste.png"></li>
|
||||
</ul>
|
||||
<p>Если необходимо создать несколько копий образца то последний шаг может повторятся много раз.</p>
|
||||
<p>Если при копировании в выделенной области цвет вокселей совпадет с текущим цветом карандаша, то при изменении цвета карандаша воксели с данным цветом при вставке будут также с измененным цветом. Потому кисть также можно использовать для замены цвета.</p>
|
||||
<h2>Автор</h2>
|
||||
<p>Игорь А. (IgorA) - разработка программы.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
BIN
programs/media/voxel_editor/docs/tb_br_copy.png
Normal file
After Width: | Height: | Size: 504 B |
BIN
programs/media/voxel_editor/docs/tb_br_paste.png
Normal file
After Width: | Height: | Size: 542 B |
BIN
programs/media/voxel_editor/docs/tb_br_size.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
programs/media/voxel_editor/docs/tb_brush.png
Normal file
After Width: | Height: | Size: 461 B |
BIN
programs/media/voxel_editor/docs/tb_color.png
Normal file
After Width: | Height: | Size: 734 B |
BIN
programs/media/voxel_editor/docs/tb_eraser.png
Normal file
After Width: | Height: | Size: 650 B |
BIN
programs/media/voxel_editor/docs/tb_light.png
Normal file
After Width: | Height: | Size: 618 B |
BIN
programs/media/voxel_editor/docs/tb_new.png
Normal file
After Width: | Height: | Size: 403 B |
BIN
programs/media/voxel_editor/docs/tb_open.png
Normal file
After Width: | Height: | Size: 707 B |
BIN
programs/media/voxel_editor/docs/tb_pen.png
Normal file
After Width: | Height: | Size: 513 B |
BIN
programs/media/voxel_editor/docs/tb_pl_m.png
Normal file
After Width: | Height: | Size: 448 B |
BIN
programs/media/voxel_editor/docs/tb_pl_p.png
Normal file
After Width: | Height: | Size: 453 B |
BIN
programs/media/voxel_editor/docs/tb_r_2_2.png
Normal file
After Width: | Height: | Size: 242 B |
BIN
programs/media/voxel_editor/docs/tb_rot_1.png
Normal file
After Width: | Height: | Size: 294 B |
BIN
programs/media/voxel_editor/docs/tb_rot_2.png
Normal file
After Width: | Height: | Size: 261 B |
BIN
programs/media/voxel_editor/docs/tb_save.png
Normal file
After Width: | Height: | Size: 536 B |
BIN
programs/media/voxel_editor/docs/tb_zoom_m.png
Normal file
After Width: | Height: | Size: 596 B |
BIN
programs/media/voxel_editor/docs/tb_zoom_p.png
Normal file
After Width: | Height: | Size: 565 B |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 5.7 KiB |
@ -321,6 +321,60 @@ popad
|
||||
ret
|
||||
endp
|
||||
|
||||
; ¢§ïâì 梥⠢®ªá¥«ï ¢ 2 íâ ¯ :
|
||||
; 1) ¨é¥¬ ¬¥áâ® ¢ áâàãªâãॠ¤¥à¥¢ , £¤¥ ¥áâì 㧥« (¥á«¨ ¢¥â¢ì ¥ áãé¥áâ¢ã¥â, ¢ë室¨¬ ¨§ äãªæ¨¨)
|
||||
; 2) ¡¥à¥¬ 梥⠢®ªá¥«ï
|
||||
;output:
|
||||
; eax - 梥⠢®ªá¥«ï
|
||||
align 4
|
||||
proc buf2d_vox_obj_node_get_color, v_obj:dword,coord_x:dword,coord_y:dword,\
|
||||
coord_z:dword,k_scale:dword
|
||||
push ebx ecx edi esi
|
||||
locals
|
||||
p_node dd 0 ;த¨â¥«ì᪨© 㧥«
|
||||
endl
|
||||
mov edi,[v_obj]
|
||||
add edi,vox_offs_data
|
||||
mov esi,[k_scale]
|
||||
cmp esi,1
|
||||
jl .end_2
|
||||
; *** (1) ***
|
||||
.found:
|
||||
stdcall vox_obj_get_node_position, [v_obj],[coord_x],[coord_y],[coord_z],esi
|
||||
movzx bx,byte[edi+3]
|
||||
mov [p_node],edi
|
||||
add edi,4
|
||||
cmp eax,0
|
||||
je .end_1
|
||||
mov ecx,eax
|
||||
cld
|
||||
@@: ;横« ¤«ï ¯à®¯ã᪠¯à¥¤ë¤ãé¨å ¯®¤¤¥à¥¢ì¥¢ ¢ 㧫¥
|
||||
bt bx,0 ;¯à®¢¥à塞 ¥áâì «¨ ¤®ç¥à¨¥ 㧫ë
|
||||
jnc .end_0
|
||||
xor eax,eax
|
||||
stdcall vox_obj_rec0 ;¢ eax ¢ëç¨á«ï¥âáï ç¨á«® ¤®ç¥à¨å 㧫®¢, ¢ ¤ ®© ¢¥â¢¨
|
||||
.end_0:
|
||||
shr bx,1
|
||||
loop @b
|
||||
.end_1:
|
||||
bt bx,0
|
||||
jnc .end_2 ;¥á«¨ ¯®¤¤¥à¥¢ ¥ áãé¥áâ¢ã¥â
|
||||
dec esi
|
||||
cmp esi,0
|
||||
jg .found
|
||||
|
||||
; *** (2) ***
|
||||
;get
|
||||
mov eax,dword[edi]
|
||||
and eax,0xffffff
|
||||
jmp .end_3
|
||||
.end_2:
|
||||
mov eax,1 shl 31
|
||||
.end_3:
|
||||
pop esi edi ecx ebx
|
||||
ret
|
||||
endp
|
||||
|
||||
; ᤢ¨£ ¥â ã§«ë ¤«ï ¤®¡ ¢«¥¨ï ®¢ëå 㧫®¢
|
||||
;input:
|
||||
; p_insert - ¯®§¨æ¨ï ¤«ï ¢áâ ¢ª¨
|
||||
|
@ -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 17.07.12',0 ;¯®¤¯¨áì ®ª
|
||||
caption db 'Voxel editor 19.07.12',0 ;¯®¤¯¨áì ®ª
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
@ -34,7 +34,7 @@ image_data dd 0 ;㪠
|
||||
|
||||
fn_toolbar db 'toolbar.png',0
|
||||
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
|
||||
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*14
|
||||
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*21
|
||||
image_data_toolbar dd 0
|
||||
|
||||
;§ ç¥¨ï § ¤ ¢ ¥¬ë¥ ¯® 㬮«ç ¨î, ¡¥§ ini ä ©«
|
||||
@ -105,6 +105,7 @@ OT_MAP_X equ 0
|
||||
OT_MAP_Y equ 0
|
||||
OT_CAPT_X_COLOR equ 5 ;®âáâ㯠¤«ï ¯®¤¯¨á¨ 梥â
|
||||
OT_CAPT_Y_COLOR equ 30
|
||||
PEN_MODE_SELECT_COLOR equ 2 ;०¨¬ ¢ë¡®à 梥â
|
||||
|
||||
align 4
|
||||
start:
|
||||
@ -221,7 +222,7 @@ mouse:
|
||||
shr ebx,16
|
||||
and eax,0xffff
|
||||
|
||||
cmp dword[v_pen_mode],2 ;select color
|
||||
cmp dword[v_pen_mode],PEN_MODE_SELECT_COLOR
|
||||
jne .end_2
|
||||
stdcall get_buf_color, buf_0
|
||||
stdcall get_buf_color, buf_pl
|
||||
@ -452,6 +453,27 @@ pushad
|
||||
add ebx,25 shl 16
|
||||
mov edx,16
|
||||
int 0x40
|
||||
add ebx,25 shl 16
|
||||
mov edx,17
|
||||
int 0x40
|
||||
add ebx,25 shl 16
|
||||
mov edx,18
|
||||
int 0x40
|
||||
add ebx,25 shl 16
|
||||
mov edx,19
|
||||
int 0x40
|
||||
add ebx,25 shl 16
|
||||
mov edx,20
|
||||
int 0x40
|
||||
add ebx,25 shl 16
|
||||
mov edx,21
|
||||
int 0x40
|
||||
add ebx,25 shl 16
|
||||
mov edx,22
|
||||
int 0x40
|
||||
add ebx,25 shl 16
|
||||
mov edx,23
|
||||
int 0x40
|
||||
|
||||
; *** à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å ***
|
||||
mov eax,7
|
||||
@ -468,37 +490,58 @@ pushad
|
||||
int 0x40
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(30 shl 16) ;
|
||||
add edx,(30 shl 16) ;㢥«¨ç. ¬ áèâ ¡
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;㬥ìè. ¬ áèâ ¡
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;¯®¢®à®â 1
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;¯®¢®à®â 2
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;ᤢ¨£ ¯«®áª®á⨠+
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;ᤢ¨£ ¯«®áª®á⨠-
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;¨áâà㬥⠪ à ¤ è
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;¨áâà㬥⠪¨áâì
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;¨áâà㬥⠧ â¨à çª
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;¢ë¡®à 梥â
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
add edx,(25 shl 16) ;®á¢¥é¥¨¥
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;।¥à 2*2
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;ᮧ¤ âì ª¨áâì
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ; à¨á®¢ âì ª¨áâì
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;è¨à¨ ª¨á⨠-1
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;è¨à¨ ª¨á⨠+1
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;¢ëá®â ª¨á⨠-1
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;¢ëá®â ª¨á⨠+1
|
||||
int 0x40
|
||||
|
||||
; *** à¨á®¢ ¨¥ ¡ãä¥à®¢ ***
|
||||
@ -511,41 +554,42 @@ popad
|
||||
|
||||
align 4
|
||||
draw_pok:
|
||||
mov eax,4 ;à¨á®¢ ¨¥ ⥪áâ
|
||||
mov ebx,(365 shl 16)+5
|
||||
mov ecx,[sc.work_text]
|
||||
or ecx,0x80000000 ;or (1 shl 30)
|
||||
mov edx,txt_zoom
|
||||
;mov edi,[sc.work]
|
||||
int 0x40
|
||||
add bx,9
|
||||
mov edx,txt_cur_x
|
||||
int 0x40
|
||||
add bx,9
|
||||
mov edx,txt_cur_y
|
||||
int 0x40
|
||||
add bx,9
|
||||
mov edx,txt_n_plane
|
||||
int 0x40
|
||||
|
||||
mov eax,47
|
||||
mov ecx,[v_zoom]
|
||||
mov ebx,(3 shl 16)+(1 shl 31)
|
||||
mov edx,((365+6*9) shl 16)+5
|
||||
mov edx,((350+6*9) shl 16)+OT_CAPT_Y_COLOR+2
|
||||
mov esi,[sc.work_button_text]
|
||||
or esi,(1 shl 30)
|
||||
mov edi,[sc.work_button]
|
||||
int 0x40 ;¬ áèâ ¡
|
||||
mov ecx,[v_cur_x]
|
||||
add edx,9
|
||||
int 0x40 ;ªãàá®à x
|
||||
mov ecx,[v_cur_y]
|
||||
add edx,9
|
||||
int 0x40 ;ªãàá®à y
|
||||
mov ecx,[n_plane]
|
||||
add edx,9
|
||||
add edx,115 shl 16 ;9
|
||||
int 0x40 ;®¬¥à á¥ç¥¨ï
|
||||
|
||||
;®¡®¢«¥¨¥ ¯ à ¬¥â஢ ªãàá®à
|
||||
mov dword[txt_curor.size],0
|
||||
mov eax,dword[v_cur_x]
|
||||
mov edi,txt_curor.size
|
||||
call convert_int_to_str
|
||||
stdcall str_cat, edi,txt_mull
|
||||
mov eax,dword[v_cur_y]
|
||||
mov edi,txt_buf
|
||||
call convert_int_to_str
|
||||
stdcall str_cat, txt_curor.size,edi
|
||||
stdcall str_cat, txt_curor.size,txt_space ;§ ¢¥àè î騩 ¯à®¡¥«
|
||||
|
||||
;®¡®¢«¥¨¥ ¯ à ¬¥â஢ ª¨áâ¨
|
||||
mov dword[txt_brush.size],0
|
||||
mov eax,dword[brush_w]
|
||||
mov edi,txt_brush.size
|
||||
call convert_int_to_str
|
||||
stdcall str_cat, edi,txt_mull
|
||||
mov eax,dword[brush_h]
|
||||
mov edi,txt_buf
|
||||
call convert_int_to_str
|
||||
stdcall str_cat, txt_brush.size,edi
|
||||
stdcall str_cat, txt_brush.size,txt_space ;§ ¢¥àè î騩 ¯à®¡¥«
|
||||
|
||||
mov eax,4 ;à¨á®¢ ¨¥ ⥪áâ
|
||||
mov ebx,(OT_CAPT_X_COLOR shl 16)+OT_CAPT_Y_COLOR+2
|
||||
mov ecx,[sc.work_text]
|
||||
@ -553,6 +597,24 @@ draw_pok:
|
||||
mov edx,txt_color
|
||||
int 0x40
|
||||
|
||||
mov edx,txt_curor
|
||||
add ebx,115 shl 16
|
||||
or ecx,(1 shl 30)
|
||||
mov edi,[sc.work]
|
||||
int 0x40
|
||||
|
||||
mov edx,txt_brush
|
||||
add ebx,115 shl 16
|
||||
int 0x40
|
||||
|
||||
mov edx,txt_zoom
|
||||
add ebx,115 shl 16
|
||||
int 0x40
|
||||
|
||||
mov edx,txt_n_plane
|
||||
add ebx,115 shl 16
|
||||
int 0x40
|
||||
|
||||
call on_change_color
|
||||
ret
|
||||
|
||||
@ -623,25 +685,53 @@ button:
|
||||
@@:
|
||||
cmp ah,12
|
||||
jne @f
|
||||
call but_7
|
||||
call but_mode_pen
|
||||
@@:
|
||||
cmp ah,13
|
||||
jne @f
|
||||
call but_8
|
||||
call but_mode_brush
|
||||
@@:
|
||||
cmp ah,14
|
||||
jne @f
|
||||
mov dword[v_pen_mode],2 ;select color
|
||||
call draw_palete
|
||||
call but_mode_clear
|
||||
@@:
|
||||
cmp ah,15
|
||||
jne @f
|
||||
call but_light
|
||||
mov dword[v_pen_mode],PEN_MODE_SELECT_COLOR
|
||||
call draw_palete
|
||||
@@:
|
||||
cmp ah,16
|
||||
jne @f
|
||||
call but_light
|
||||
@@:
|
||||
cmp ah,17
|
||||
jne @f
|
||||
call but_rend_2_2
|
||||
@@:
|
||||
cmp ah,18
|
||||
jne @f
|
||||
call but_brush_copy
|
||||
@@:
|
||||
cmp ah,19
|
||||
jne @f
|
||||
call but_brush_draw
|
||||
@@:
|
||||
cmp ah,20
|
||||
jne @f
|
||||
call but_bru_w_m
|
||||
@@:
|
||||
cmp ah,21
|
||||
jne @f
|
||||
call but_bru_w_p
|
||||
@@:
|
||||
cmp ah,22
|
||||
jne @f
|
||||
call but_bru_h_m
|
||||
@@:
|
||||
cmp ah,23
|
||||
jne @f
|
||||
call but_bru_h_p
|
||||
@@:
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
@ -907,11 +997,11 @@ pop ecx eax
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_7:
|
||||
but_mode_pen:
|
||||
push eax
|
||||
mov eax,dword[v_pen_mode]
|
||||
mov dword[v_pen_mode],1 ;draw
|
||||
cmp eax,2
|
||||
mov dword[v_pen_mode],1 ;pen
|
||||
cmp eax,PEN_MODE_SELECT_COLOR
|
||||
jne @f
|
||||
call draw_objects
|
||||
@@:
|
||||
@ -919,11 +1009,23 @@ but_7:
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_8:
|
||||
but_mode_brush:
|
||||
push eax
|
||||
mov eax,dword[v_pen_mode]
|
||||
mov dword[v_pen_mode],3 ;brush
|
||||
cmp eax,PEN_MODE_SELECT_COLOR
|
||||
jne @f
|
||||
call draw_objects
|
||||
@@:
|
||||
pop eax
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_mode_clear:
|
||||
push eax
|
||||
mov eax,dword[v_pen_mode]
|
||||
mov dword[v_pen_mode],0 ;clear
|
||||
cmp eax,2
|
||||
cmp eax,PEN_MODE_SELECT_COLOR
|
||||
jne @f
|
||||
call draw_objects
|
||||
@@:
|
||||
@ -1027,6 +1129,172 @@ pop edi
|
||||
stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
ret
|
||||
|
||||
;㬥ìè ¥¬ è¨à¨ã ª¨áâ¨
|
||||
align 4
|
||||
but_bru_w_m:
|
||||
cmp dword[brush_w],1
|
||||
jle @f
|
||||
dec dword[brush_w]
|
||||
pushad
|
||||
call draw_pok
|
||||
call draw_vox_cursor
|
||||
stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
popad
|
||||
@@:
|
||||
ret
|
||||
;㢥«¨ç¨¢ ¥¬ è¨à¨ã ª¨áâ¨
|
||||
align 4
|
||||
but_bru_w_p:
|
||||
cmp dword[brush_w],32
|
||||
jge @f
|
||||
inc dword[brush_w]
|
||||
pushad
|
||||
call draw_pok
|
||||
call draw_vox_cursor
|
||||
stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
popad
|
||||
@@:
|
||||
ret
|
||||
;㬥ìè ¥¬ ¢ëá®âã ª¨áâ¨
|
||||
align 4
|
||||
but_bru_h_m:
|
||||
cmp dword[brush_h],1
|
||||
jle @f
|
||||
dec dword[brush_h]
|
||||
pushad
|
||||
call draw_pok
|
||||
call draw_vox_cursor
|
||||
stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
popad
|
||||
@@:
|
||||
ret
|
||||
;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ª¨áâ¨
|
||||
align 4
|
||||
but_bru_h_p:
|
||||
cmp dword[brush_h],32
|
||||
jge @f
|
||||
inc dword[brush_h]
|
||||
pushad
|
||||
call draw_pok
|
||||
call draw_vox_cursor
|
||||
stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
popad
|
||||
@@:
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_brush_copy:
|
||||
cmp dword[v_pen_mode],3
|
||||
jne .end_f
|
||||
pushad
|
||||
mov eax,[v_cur_x]
|
||||
mov ebx,[n_plane]
|
||||
mov edx,[v_cur_y]
|
||||
|
||||
mov ecx,[v_zoom]
|
||||
cmp ecx,[scaled_zoom]
|
||||
jle @f
|
||||
;¯à¥®¡à §®¢ ¨¥ ª®®à¤¨ â, á ãç¥â®¬ 㢥«¨ç¥¨ï
|
||||
;sub ecx,[scaled_zoom] ;¢ ecx ¯à¨à®áâ ¬ áèâ ¡ (ecx>0)
|
||||
mov ecx,[scaled_zoom]
|
||||
|
||||
mov edi,[cam_x]
|
||||
shl edi,cl
|
||||
add eax,edi
|
||||
mov edi,[cam_y]
|
||||
shl edi,cl
|
||||
add ebx,edi
|
||||
mov edi,[cam_z]
|
||||
shl edi,cl
|
||||
add edx,edi
|
||||
@@:
|
||||
|
||||
cld
|
||||
mov edi,brush_data
|
||||
mov esi,edx
|
||||
sub esi,[brush_h]
|
||||
.cycle_0:
|
||||
mov ecx,[brush_w]
|
||||
@@:
|
||||
push eax
|
||||
stdcall buf2d_vox_obj_node_get_color, [open_file_vox], eax,ebx,edx, [v_zoom]
|
||||
cmp eax,[v_color]
|
||||
jne .end_0
|
||||
mov eax,1 shl 30
|
||||
.end_0:
|
||||
mov dword[edi],eax ;color
|
||||
pop eax
|
||||
inc eax
|
||||
add edi,4
|
||||
loop @b
|
||||
dec edx
|
||||
sub eax,[brush_w]
|
||||
cmp edx,esi
|
||||
jg .cycle_0
|
||||
|
||||
call draw_objects
|
||||
popad
|
||||
.end_f:
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_brush_draw:
|
||||
cmp dword[v_pen_mode],3
|
||||
jne .end_f
|
||||
pushad
|
||||
mov eax,[v_cur_x]
|
||||
mov ebx,[n_plane]
|
||||
mov edx,[v_cur_y]
|
||||
|
||||
mov ecx,[v_zoom]
|
||||
cmp ecx,[scaled_zoom]
|
||||
jle @f
|
||||
;¯à¥®¡à §®¢ ¨¥ ª®®à¤¨ â, á ãç¥â®¬ 㢥«¨ç¥¨ï
|
||||
;sub ecx,[scaled_zoom] ;¢ ecx ¯à¨à®áâ ¬ áèâ ¡ (ecx>0)
|
||||
mov ecx,[scaled_zoom]
|
||||
|
||||
mov edi,[cam_x]
|
||||
shl edi,cl
|
||||
add eax,edi
|
||||
mov edi,[cam_y]
|
||||
shl edi,cl
|
||||
add ebx,edi
|
||||
mov edi,[cam_z]
|
||||
shl edi,cl
|
||||
add edx,edi
|
||||
@@:
|
||||
|
||||
cld
|
||||
mov edi,brush_data
|
||||
mov esi,edx
|
||||
sub esi,[brush_h]
|
||||
.cycle_0:
|
||||
mov ecx,[brush_w]
|
||||
@@:
|
||||
bt dword[edi],31 ;¡¨â ¯à®§à ç®áâ¨
|
||||
jc .end_2
|
||||
bt dword[edi],30 ;¡¨â ⥪ã饣® 梥â
|
||||
jnc .end_0
|
||||
push dword[v_color]
|
||||
jmp .end_1
|
||||
.end_0:
|
||||
push dword[edi]
|
||||
.end_1:
|
||||
stdcall buf2d_vox_obj_create_node, [open_file_vox], eax,ebx,edx, [v_zoom] ;, color
|
||||
.end_2:
|
||||
inc eax
|
||||
add edi,4
|
||||
loop @b
|
||||
dec edx
|
||||
sub eax,[brush_w]
|
||||
cmp edx,esi
|
||||
jg .cycle_0
|
||||
|
||||
call draw_objects
|
||||
popad
|
||||
.end_f:
|
||||
ret
|
||||
|
||||
align 4
|
||||
draw_palete:
|
||||
stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
|
||||
@ -1034,6 +1302,7 @@ draw_palete:
|
||||
stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
ret
|
||||
|
||||
align 4
|
||||
v_zoom dd 3 ;⥪ã騩 ¬ áèâ ¡
|
||||
v_cur_x dd 0 ;ª®®à¤¨ â ªãàá®à x
|
||||
v_cur_y dd 0 ;ª®®à¤¨ â ªãàá®à y (® ®áì ¢ ®¡ê¥ªâ¥ z)
|
||||
@ -1047,12 +1316,25 @@ cam_z dd 0
|
||||
scaled_zoom dd 5 ;¬ áèâ ¡ ¯®á«¥ ª®â®à®£® ç¨ ¥âáï à¨á®¢ ¨¥ ç á⨠¨§®¡à ¦¥¨ï
|
||||
tile_size dd ? ;à §¬¥à ª¢ ¤à ⨪ ¯«®áª®á⨠á á¥ç¥¨¥¬
|
||||
max_open_file_size dd ?
|
||||
brush_w dd 5 ;è¨à¨ ª¨áâ¨
|
||||
brush_h dd 5 ;¢ëá®â ª¨áâ¨
|
||||
brush_data dd 1 shl 31,1 shl 30,1 shl 30,1 shl 30,1 shl 31
|
||||
dd 1 shl 30,1 shl 30,1 shl 30,1 shl 30,1 shl 30
|
||||
dd 1 shl 30,1 shl 30,1 shl 30,1 shl 30,1 shl 30
|
||||
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
|
||||
|
||||
txt_zoom db 'Œ áèâ ¡:',0
|
||||
txt_cur_x db 'x:',0
|
||||
txt_cur_y db 'y:',0
|
||||
txt_curor: db 'Šãàá®à: '
|
||||
.size: rb 10
|
||||
txt_n_plane db '‘¥ç¥¨¥:',0
|
||||
txt_color db '–¢¥â:',0
|
||||
txt_brush: db 'Š¨áâì: '
|
||||
.size: rb 10
|
||||
txt_mull db '*',0
|
||||
txt_space db ' ',0
|
||||
txt_buf rb 16
|
||||
|
||||
align 4
|
||||
draw_objects:
|
||||
@ -1060,7 +1342,7 @@ draw_objects:
|
||||
stdcall [buf2d_clear], buf_0z, 0 ;ç¨á⨬ ¡ãä¥à
|
||||
stdcall [buf2d_clear], buf_pl, [buf_pl.color] ;ç¨á⨬ ¡ãä¥à
|
||||
|
||||
cmp dword[v_pen_mode],2
|
||||
cmp dword[v_pen_mode],PEN_MODE_SELECT_COLOR
|
||||
jne @f
|
||||
call draw_palete
|
||||
jmp .end_f
|
||||
@ -1146,6 +1428,9 @@ pushad
|
||||
dec ebx
|
||||
add edi,2
|
||||
|
||||
cmp dword[v_pen_mode],3
|
||||
je .brush
|
||||
|
||||
;£®à¨§®â «ìë¥ «¨¨¨
|
||||
sub eax,2
|
||||
mov ecx,edi
|
||||
@ -1162,6 +1447,18 @@ pushad
|
||||
dec edi
|
||||
stdcall [buf2d_line], buf_pl, eax,ebx, edi,ebx,[sc.work_graph]
|
||||
@@:
|
||||
jmp .end_f
|
||||
|
||||
;à ¬ª ¤«ï ª¨áâ¨
|
||||
.brush:
|
||||
dec eax
|
||||
mov ecx,[brush_w]
|
||||
imul ecx,[tile_size]
|
||||
;mov edi,eax
|
||||
mov edi,ecx
|
||||
mov esi,[brush_h]
|
||||
imul esi,[tile_size]
|
||||
stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,esi,[sc.work_graph]
|
||||
|
||||
.end_f:
|
||||
popad
|
||||
@ -1242,6 +1539,67 @@ proc conv_str_to_int, buf:dword
|
||||
endp
|
||||
end if
|
||||
|
||||
;input:
|
||||
; eax = value
|
||||
; edi = string buffer
|
||||
;output:
|
||||
align 4
|
||||
convert_int_to_str:
|
||||
pushad
|
||||
mov dword[edi+1],0
|
||||
mov word[edi+5],0
|
||||
call .str
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
.str:
|
||||
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«®
|
||||
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®©
|
||||
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax
|
||||
jb @f
|
||||
xor edx,edx ;®ç¨áâ¨âì edx
|
||||
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx
|
||||
push edx ;¯®«®¦¨âì ¢ á⥪
|
||||
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨
|
||||
call .str ;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx
|
||||
pop eax
|
||||
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï))
|
||||
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
|
||||
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi
|
||||
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
|
||||
|
||||
align 4
|
||||
proc str_cat, str1:dword, str2:dword
|
||||
push eax ecx edi esi
|
||||
mov esi,dword[str2]
|
||||
stdcall str_len,esi
|
||||
mov ecx,eax
|
||||
inc ecx
|
||||
mov edi,dword[str1]
|
||||
stdcall str_len,edi
|
||||
add edi,eax
|
||||
cld
|
||||
repne movsb
|
||||
pop esi edi ecx eax
|
||||
ret
|
||||
endp
|
||||
|
||||
;output:
|
||||
; eax = strlen
|
||||
align 4
|
||||
proc str_len, str1:dword
|
||||
mov eax,[str1]
|
||||
@@:
|
||||
cmp byte[eax],0
|
||||
je @f
|
||||
inc eax
|
||||
jmp @b
|
||||
@@:
|
||||
sub eax,[str1]
|
||||
ret
|
||||
endp
|
||||
|
||||
;¤ ë¥ ¤«ï ¤¨ «®£ ®âªàëâ¨ï ä ©«®¢
|
||||
align 4
|
||||
OpenDialog_data:
|
||||
|