Subversion Repositories Kolibri OS

Rev

Rev 3014 | Rev 3969 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3014 Rev 3047
Line 14... Line 14...
14
include '../../../../programs/develop/libraries/box_lib/load_lib.mac'
14
include '../../../../programs/develop/libraries/box_lib/load_lib.mac'
15
include '../../../dll.inc'
15
include '../../../dll.inc'
16
include 'vox_draw.inc'
16
include 'vox_draw.inc'
Line 17... Line 17...
17
 
17
 
18
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
18
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
Line 19... Line 19...
19
caption db 'Voxel editor 01.10.12',0 ;¯®¤¯¨áì ®ª­ 
19
caption db 'Voxel editor 16.11.12',0 ;¯®¤¯¨áì ®ª­ 
20
 
20
 
21
struct FileInfoBlock
21
struct FileInfoBlock
22
	Function dd ?
22
	Function dd ?
Line 107... Line 107...
107
OT_CAPT_X_COLOR equ  5 ;®âáâ㯠¤«ï ¯®¤¯¨á¨ 梥â 
107
OT_CAPT_X_COLOR equ  5 ;®âáâ㯠¤«ï ¯®¤¯¨á¨ 梥â 
108
OT_CAPT_Y_COLOR equ 30
108
OT_CAPT_Y_COLOR equ 30
109
PEN_MODE_NONE equ -1
109
PEN_MODE_NONE equ -1
110
PEN_MODE_CLEAR equ 0 ;०¨¬ áâ¨à ­¨ï
110
PEN_MODE_CLEAR equ 0 ;०¨¬ áâ¨à ­¨ï
111
PEN_MODE_SELECT_COLOR equ 2 ;०¨¬ ¢ë¡®à  梥â 
111
PEN_MODE_SELECT_COLOR equ 2 ;०¨¬ ¢ë¡®à  梥â 
-
 
112
PEN_MODE_BRUSH equ 3 ;०¨¬ à ¡®âë á ª¨áâìî
Line 112... Line 113...
112
 
113
 
113
align 4
114
align 4
114
start:
115
start:
115
	load_libraries l_libs_start,l_libs_end
116
	load_libraries l_libs_start,l_libs_end
Line 344... Line 345...
344
				cmp dword[v_pen_mode],1
345
				cmp dword[v_pen_mode],1
345
				jne @f
346
				jne @f
346
					push dword[v_color]
347
					push dword[v_color]
347
				@@:
348
				@@:
Line -... Line 349...
-
 
349
 
-
 
350
				mov ecx,dword[v_zoom]
-
 
351
				mov edi,eax
-
 
352
				mov esi,ebx
-
 
353
				mcall 66,3
-
 
354
				and eax,3 ;3 -> ¡¨â 0 «¥¢ë© Shift ­ ¦ â, ¡¨â 1 ¯à ¢ë© Shift ­ ¦ â
-
 
355
                jz .shift_end
-
 
356
                    ;¥á«¨ ­ ¦ â Shift, ⮠। ªâ¨à㥬 ­  ¢¥àå­¥¬ ã஢­¥
-
 
357
                    ;¤«ï í⮣® ¢á¥ ª®®à¤¨­ âë ¤¥«¨¬ ­  2   ®â ¬ áâ ¡  ®â­¨¬ ¥¬ 1
-
 
358
                    shr edx,1
-
 
359
                    shr esi,1
-
 
360
                    shr edi,1
-
 
361
                    dec ecx
-
 
362
                .shift_end:
348
 
363
                
349
				;¢ë§®¢ ®¡é¨å ¯ à ¬¥â஢ ¤«ï ä㭪権
364
                ;¢ë§®¢ ®¡é¨å ¯ à ¬¥â஢ ¤«ï ä㭪権
350
				push dword[v_zoom]
-
 
351
				push edx
-
 
352
				push ebx
-
 
353
				push eax
365
				push ecx edx esi edi
Line 354... Line 366...
354
				push dword[open_file_vox]
366
				push dword[open_file_vox]
355
 
367
 
356
				;¢ë§®¢ ä㭪権
368
				;¢ë§®¢ ä㭪権
357
				cmp dword[v_pen_mode],1
369
				cmp dword[v_pen_mode],1
358
				jne @f
370
				jne @f
359
					call buf2d_vox_obj_create_node
371
					call buf2d_vox_obj_create_node
360
					;stdcall buf2d_vox_obj_create_node, [open_file_vox], eax,ebx,edx, [v_zoom], [v_color]
372
					;stdcall buf2d_vox_obj_create_node, [open_file_vox], edi,esi,edx, [v_zoom], [v_color]
361
					jmp .end_1
373
					jmp .end_1
362
				@@:
374
				@@:
Line 363... Line 375...
363
					call buf2d_vox_obj_delete_node
375
					call buf2d_vox_obj_delete_node
364
					;stdcall buf2d_vox_obj_delete_node, [open_file_vox], eax,ebx,edx, [v_zoom]
376
					;stdcall buf2d_vox_obj_delete_node, [open_file_vox], edi,esi,edx, [v_zoom]
365
 
377
 
366
			.end_1:
378
			.end_1:
Line 1193... Line 1205...
1193
	cmp dword[brush_w],1
1205
	cmp dword[brush_w],1
1194
	jle @f
1206
	jle @f
1195
		dec dword[brush_w]
1207
		dec dword[brush_w]
1196
		pushad
1208
		pushad
1197
		call draw_pok
1209
		call draw_pok
1198
		call draw_vox_cursor
1210
		call draw_plane
1199
		stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
-
 
1200
		popad
1211
		popad
1201
	@@:
1212
	@@:
1202
	ret
1213
	ret
1203
;㢥«¨ç¨¢ ¥¬ è¨à¨­ã ª¨áâ¨
1214
;㢥«¨ç¨¢ ¥¬ è¨à¨­ã ª¨áâ¨
1204
align 4
1215
align 4
Line 1206... Line 1217...
1206
	cmp dword[brush_w],32
1217
	cmp dword[brush_w],32
1207
	jge @f
1218
	jge @f
1208
		inc dword[brush_w]
1219
		inc dword[brush_w]
1209
		pushad
1220
		pushad
1210
		call draw_pok
1221
		call draw_pok
1211
		call draw_vox_cursor
1222
		call draw_plane
1212
		stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
-
 
1213
		popad
1223
		popad
1214
	@@:
1224
	@@:
1215
	ret
1225
	ret
1216
;㬥­ìè ¥¬ ¢ëá®âã ª¨áâ¨
1226
;㬥­ìè ¥¬ ¢ëá®âã ª¨áâ¨
1217
align 4
1227
align 4
Line 1219... Line 1229...
1219
	cmp dword[brush_h],1
1229
	cmp dword[brush_h],1
1220
	jle @f
1230
	jle @f
1221
		dec dword[brush_h]
1231
		dec dword[brush_h]
1222
		pushad
1232
		pushad
1223
		call draw_pok
1233
		call draw_pok
1224
		call draw_vox_cursor
1234
		call draw_plane
1225
		stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
-
 
1226
		popad
1235
		popad
1227
	@@:
1236
	@@:
1228
	ret
1237
	ret
1229
;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ª¨áâ¨
1238
;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ª¨áâ¨
1230
align 4
1239
align 4
Line 1232... Line 1241...
1232
	cmp dword[brush_h],32
1241
	cmp dword[brush_h],32
1233
	jge @f
1242
	jge @f
1234
		inc dword[brush_h]
1243
		inc dword[brush_h]
1235
		pushad
1244
		pushad
1236
		call draw_pok
1245
		call draw_pok
1237
		call draw_vox_cursor
1246
		call draw_plane
1238
		stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
-
 
1239
		popad
1247
		popad
1240
	@@:
1248
	@@:
1241
	ret
1249
	ret
Line 1242... Line 1250...
1242
 
1250
 
1243
align 4
1251
align 4
1244
but_brush_copy:
1252
but_brush_copy:
1245
	cmp dword[v_pen_mode],3
1253
	cmp dword[v_pen_mode],PEN_MODE_BRUSH
1246
	jne .end_f
1254
	jne .end_f
1247
pushad
1255
pushad
1248
	mov eax,[v_cur_x]
1256
	mov eax,[v_cur_x]
1249
	mov ebx,[n_plane]
1257
	mov ebx,[n_plane]
Line 1295... Line 1303...
1295
	.end_f:
1303
	.end_f:
1296
	ret
1304
	ret
Line 1297... Line 1305...
1297
 
1305
 
1298
align 4
1306
align 4
1299
but_brush_draw:
1307
but_brush_draw:
1300
	cmp dword[v_pen_mode],3
1308
	cmp dword[v_pen_mode],PEN_MODE_BRUSH
1301
	jne .end_f
1309
	jne .end_f
1302
pushad
1310
pushad
1303
	mov eax,[v_cur_x]
1311
	mov eax,[v_cur_x]
1304
	mov ebx,[n_plane]
1312
	mov ebx,[n_plane]
Line 1353... Line 1361...
1353
	.end_f:
1361
	.end_f:
1354
	ret
1362
	ret
Line 1355... Line 1363...
1355
 
1363
 
1356
align 4
1364
align 4
1357
but_brush_clear:
1365
but_brush_clear:
1358
	cmp dword[v_pen_mode],3
1366
	cmp dword[v_pen_mode],PEN_MODE_BRUSH
1359
	jne .end_f
1367
	jne .end_f
1360
pushad
1368
pushad
1361
	mov eax,[v_cur_x]
1369
	mov eax,[v_cur_x]
1362
	mov ebx,[n_plane]
1370
	mov ebx,[n_plane]
Line 1443... Line 1451...
1443
.size: rb 10
1451
.size: rb 10
1444
txt_mull db '*',0
1452
txt_mull db '*',0
1445
txt_space db ' ',0
1453
txt_space db ' ',0
1446
txt_buf rb 16
1454
txt_buf rb 16
Line -... Line 1455...
-
 
1455
 
1447
 
1456
;à¨á®¢ ­¨¥ ¡ãä¥à  á ¢®ªá¥«ì­ë¬¨ ®¡ê¥ªâ ¬¨
1448
align 4
1457
align 4
1449
draw_objects:
1458
draw_objects:
1450
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
1459
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
1451
	stdcall [buf2d_clear], buf_0z, 0 ;ç¨á⨬ ¡ãä¥à
-
 
Line 1452... Line 1460...
1452
	stdcall [buf2d_clear], buf_pl, [buf_pl.color] ;ç¨á⨬ ¡ãä¥à
1460
	stdcall [buf2d_clear], buf_0z, 0 ;ç¨á⨬ ¡ãä¥à
1453
 
1461
 
1454
	cmp dword[v_pen_mode],PEN_MODE_SELECT_COLOR
1462
	cmp dword[v_pen_mode],PEN_MODE_SELECT_COLOR
1455
	jne @f
1463
	jne @f
Line 1475... Line 1483...
1475
	cmp eax,[scaled_zoom]
1483
	cmp eax,[scaled_zoom]
1476
	jg @f
1484
	jg @f
1477
		;®¡ëç­ë© ०¨¬ ¨§®¡à ¦¥­¨ï
1485
		;®¡ëç­ë© ०¨¬ ¨§®¡à ¦¥­¨ï
1478
		stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, [buf_vox],\
1486
		stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, [buf_vox],\
1479
			[open_file_vox], ebx,ecx, 0, eax
1487
			[open_file_vox], ebx,ecx, 0, eax
1480
		stdcall [buf2d_vox_obj_draw_pl], buf_pl, [open_file_vox],\
-
 
1481
			OT_MAP_X,OT_MAP_Y,[tile_size], eax, [n_plane], [sc.work_graph]
-
 
1482
		stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_0z,\
1488
		stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_0z,\
1483
			[open_file_vox], 0,0, eax
1489
			[open_file_vox], 0,0, eax
1484
		bt dword[mode_light],0
1490
		bt dword[mode_light],0
1485
		jnc .end_1
1491
		jnc .end_1
1486
			stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], ebx,ecx, 0, eax, 3
1492
			stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], ebx,ecx, 0, eax, 3
Line 1489... Line 1495...
1489
	@@:
1495
	@@:
1490
		;०¨¬ ¬ áèâ ¡¨à®¢ ­¨ï ¨§®¡à ¦¥­¨ï
1496
		;०¨¬ ¬ áèâ ¡¨à®¢ ­¨ï ¨§®¡à ¦¥­¨ï
1491
		sub eax,[scaled_zoom]
1497
		sub eax,[scaled_zoom]
1492
		stdcall [buf2d_vox_obj_draw_3g_scaled], buf_0, buf_0z, [buf_vox],\
1498
		stdcall [buf2d_vox_obj_draw_3g_scaled], buf_0, buf_0z, [buf_vox],\
1493
			[open_file_vox], 0,0, 0, [scaled_zoom], [cam_x],[cam_y],[cam_z],eax, [sc.work_graph] ;scroll -> 2^eax
1499
			[open_file_vox], 0,0, 0, [scaled_zoom], [cam_x],[cam_y],[cam_z],eax, [sc.work_graph] ;scroll -> 2^eax
1494
		stdcall [buf2d_vox_obj_draw_pl_scaled], buf_pl, [open_file_vox],\
-
 
1495
			OT_MAP_X,OT_MAP_Y,[tile_size], [scaled_zoom], [n_plane], [sc.work_graph],[cam_x],[cam_y],[cam_z],eax
-
 
1496
		bt dword[mode_light],0
1500
		bt dword[mode_light],0
1497
		jnc .end_2
1501
		jnc .end_2
1498
			stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], 0,0, 0, [scaled_zoom], 3
1502
			stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], 0,0, 0, [scaled_zoom], 3
1499
		.end_2:
1503
		.end_2:
1500
	.end_0:
1504
	.end_0:
1501
	pop ecx ebx eax
1505
	pop ecx ebx eax
Line 1502... Line 1506...
1502
 
1506
 
1503
	call draw_vox_cursor
1507
	call draw_plane
-
 
1508
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
-
 
1509
	.end_f:
-
 
1510
	ret
-
 
1511
 
-
 
1512
;à¨á®¢ ­¨¥ ¯«®áª®á⨠á á¥ç¥­¨¥¬ ®¡ê¥ªâ 
-
 
1513
align 4
-
 
1514
proc draw_plane uses eax
-
 
1515
	stdcall [buf2d_clear], buf_pl, [buf_pl.color] ;ç¨á⨬ ¡ãä¥à
-
 
1516
 
-
 
1517
	mov eax,[v_zoom]
-
 
1518
	cmp eax,[scaled_zoom]
-
 
1519
	jg @f
-
 
1520
		;®¡ëç­ë© ०¨¬ ¨§®¡à ¦¥­¨ï
-
 
1521
		stdcall [buf2d_vox_obj_draw_pl], buf_pl, [open_file_vox],\
-
 
1522
			OT_MAP_X,OT_MAP_Y,[tile_size], eax, [n_plane], [sc.work_graph]
-
 
1523
		jmp .end_0
-
 
1524
	@@:
-
 
1525
		;०¨¬ ¬ áèâ ¡¨à®¢ ­¨ï ¨§®¡à ¦¥­¨ï
-
 
1526
		sub eax,[scaled_zoom]
-
 
1527
		stdcall [buf2d_vox_obj_draw_pl_scaled], buf_pl, [open_file_vox],\
-
 
1528
			OT_MAP_X,OT_MAP_Y,[tile_size], [scaled_zoom], [n_plane], [sc.work_graph],[cam_x],[cam_y],[cam_z],eax
-
 
1529
	.end_0:
-
 
1530
 
1504
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
1531
	call draw_vox_cursor
1505
	stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
1532
	stdcall [buf2d_draw], buf_pl ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
1506
	.end_f:
1533
	.end_f:
-
 
1534
	ret
Line 1507... Line 1535...
1507
	ret
1535
endp
1508
 
1536
 
1509
;à¨á®¢ ­¨¥ ªãàá®à 
1537
;à¨á®¢ ­¨¥ ªãàá®à 
1510
align 4
1538
align 4
Line 1529... Line 1557...
1529
	dec ebx
1557
	dec ebx
1530
	sub ebx,[v_cur_y]
1558
	sub ebx,[v_cur_y]
1531
	imul ebx,edi
1559
	imul ebx,edi
1532
	add ebx,OT_MAP_Y
1560
	add ebx,OT_MAP_Y
1533
	inc eax
1561
	inc eax
-
 
1562
	cmp dword[v_pen_mode],PEN_MODE_BRUSH
-
 
1563
	je .brush
1534
	inc ebx
1564
	inc ebx
1535
	sub edi,2
1565
    sub edi,2
1536
	stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,edi,[sc.work_graph]
1566
	stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,edi,[sc.work_graph]
1537
	dec ebx
1567
	dec ebx
1538
	add edi,2
1568
	add edi,2
Line 1539... Line -...
1539
 
-
 
1540
	cmp dword[v_pen_mode],3
-
 
1541
	je .brush
-
 
1542
 
1569
 
1543
	;£®à¨§®­â «ì­ë¥ «¨­¨¨
1570
	;£®à¨§®­â «ì­ë¥ «¨­¨¨
1544
	sub eax,2
1571
	sub eax,2
1545
	mov ecx,edi
1572
	mov ecx,edi
1546
	imul edi,edx
1573
	imul edi,edx
Line 1567... Line 1594...
1567
	mov edi,ecx
1594
	mov edi,ecx
1568
	mov esi,[brush_h]
1595
	mov esi,[brush_h]
1569
	imul esi,[tile_size]
1596
	imul esi,[tile_size]
1570
	stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,esi,[sc.work_graph]
1597
	stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,esi,[sc.work_graph]
Line -... Line 1598...
-
 
1598
 
-
 
1599
    ;à¨á®¢ ­¨¥ â®ç¥ª ¤«ï ª¨áâ¨
-
 
1600
    mov ecx,[brush_w]
-
 
1601
    mov edx,[tile_size]
-
 
1602
    sub eax,edx ;eax-=tile_size
-
 
1603
    shr edx,2
-
 
1604
    add eax,edx ;eax+=tile_size/4
-
 
1605
    add ebx,edx ;ebx+=tile_size/4
-
 
1606
    mov edx,eax
-
 
1607
    mov esi,[tile_size]
-
 
1608
    imul esi,ecx
-
 
1609
    imul ecx,[brush_h]
-
 
1610
    add esi,edx
-
 
1611
    ;eax = from edx to esi
-
 
1612
    mov edi,brush_data
-
 
1613
    cld
-
 
1614
    @@:
-
 
1615
        add eax,[tile_size]
-
 
1616
        bt dword[edi],31
-
 
1617
        jc .no_pixel
-
 
1618
            bt dword[edi],30
-
 
1619
            jc .sel_color
-
 
1620
                push dword[edi]
-
 
1621
                jmp .set_pixel
-
 
1622
            .sel_color:
-
 
1623
                push [v_color]
-
 
1624
            .set_pixel:
-
 
1625
            stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, 3,3 ;, [edi]
-
 
1626
        .no_pixel:
-
 
1627
        add edi,4
-
 
1628
        cmp eax,esi
-
 
1629
        jl .end_line        
-
 
1630
            mov eax,edx
-
 
1631
            add ebx,[tile_size]
-
 
1632
        .end_line:
-
 
1633
    loop @b
1571
 
1634
 
1572
	.end_f:
1635
	.end_f:
1573
popad
1636
popad
Line 1574... Line 1637...
1574
	ret
1637
	ret