Subversion Repositories Kolibri OS

Rev

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

Rev 7986 Rev 8036
Line 11... Line 11...
11
include '../../../programs/develop/libraries/TinyGL/asm_fork/opengl_const.inc'
11
include '../../../programs/develop/libraries/TinyGL/asm_fork/opengl_const.inc'
12
include '../../../programs/develop/libraries/libs-dev/libimg/libimg.inc'
12
include '../../../programs/develop/libraries/libs-dev/libimg/libimg.inc'
13
include '../../../programs/develop/info3ds/info_fun_float.inc'
13
include '../../../programs/develop/info3ds/info_fun_float.inc'
Line 14... Line 14...
14
 
14
 
15
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
15
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
Line 16... Line 16...
16
caption db 'Image transform 26.05.20',0 ;¯®¤¯¨áì ®ª­ 
16
caption db 'Image transform 10.06.20',0 ;¯®¤¯¨áì ®ª­ 
Line 17... Line 17...
17
 
17
 
18
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
18
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
Line 25... Line 25...
25
buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
25
buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
26
buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
26
buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
27
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
27
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
28
buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
28
buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
Line -... Line 29...
-
 
29
 
-
 
30
NAV_WND_L equ 145
-
 
31
NAV_WND_T equ 1
29
 
32
 
Line 30... Line 33...
30
include 'select_points.inc'
33
include 'select_points.inc'
31
 
34
 
Line 106... Line 109...
106
		mcall SF_SYSTEM_GET,SSF_TIME_COUNT
109
		mcall SF_SYSTEM_GET,SSF_TIME_COUNT
107
		mov [last_time],eax
110
		mov [last_time],eax
108
	pop ebx eax
111
	pop ebx eax
109
	cmp byte[calc],0
112
	cmp byte[calc],0
110
	je still
113
	je still
-
 
114
		call draw_nav_wnd
111
		call draw_buffers
115
		call draw_buffers
112
	jmp still
116
	jmp still
Line 113... Line 117...
113
 
117
 
114
align 16
118
align 16
Line 140... Line 144...
140
	jne @f
144
	jne @f
141
		jmp .end0
145
		jmp .end0
142
	@@:
146
	@@:
143
		stdcall [buf2d_resize],buf_0,ebx,eax,1
147
		stdcall [buf2d_resize],buf_0,ebx,eax,1
144
		call calc_nav_params
148
		call calc_nav_params
-
 
149
		mov eax,[nav_x]
-
 
150
		call nav_x_corect
-
 
151
		mov [nav_x],eax
-
 
152
		mov eax,[nav_y]
-
 
153
		call nav_y_corect
-
 
154
		mov [nav_y],eax
145
		mov byte[calc],1
155
		mov byte[calc],1
146
	.end0:
156
	.end0:
Line 147... Line 157...
147
 
157
 
148
	; *** ᮧ¤ ­¨¥ ª­®¯®ª ­  ¯ ­¥«ì ***
158
	; *** ᮧ¤ ­¨¥ ª­®¯®ª ­  ¯ ­¥«ì ***
Line 172... Line 182...
172
	int 0x40
182
	int 0x40
173
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
183
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
174
	add edx,(25 shl 16) ;
184
	add edx,(25 shl 16) ;
175
	int 0x40
185
	int 0x40
Line -... Line 186...
-
 
186
 
176
 
187
	call draw_nav_wnd
Line 177... Line 188...
177
	call draw_buffers
188
	call draw_buffers
178
 
189
 
179
	mcall SF_REDRAW,SSF_END_DRAW
190
	mcall SF_REDRAW,SSF_END_DRAW
Line -... Line 191...
-
 
191
popad
-
 
192
	ret
-
 
193
 
-
 
194
;à¨á®¢ ­¨¥ ­ ¢¨£ æ¨®­­®£® ®ª­ 
-
 
195
align 4
-
 
196
proc draw_nav_wnd
-
 
197
	cmp dword[buf_i0],0
-
 
198
	je .end0
-
 
199
	bt dword[nav_x_min],31
-
 
200
	jnc .end0
-
 
201
	bt dword[nav_y_min],31
-
 
202
	jnc .end0
-
 
203
pushad
-
 
204
		mov ebx,(NAV_WND_L shl 16)
-
 
205
		add ebx,[nav_wnd_w]
-
 
206
		mov ecx,(NAV_WND_T shl 16)
-
 
207
		add ecx,[nav_wnd_h]
-
 
208
		mcall SF_DRAW_RECT,,,0 ;¨§®¡à ¦¥­¨¥
-
 
209
		mov ecx,[nav_wnd_zoom]
-
 
210
		mov ebx,[nav_x]
-
 
211
		neg ebx
-
 
212
		sar ebx,cl
-
 
213
		add ebx,NAV_WND_L
-
 
214
		shl ebx,16
-
 
215
		add ebx,[buf_0.w]
-
 
216
		shr bx,cl
-
 
217
		mov edx,[nav_y]
-
 
218
		neg edx
-
 
219
		sar edx,cl
-
 
220
		add edx,NAV_WND_T
-
 
221
		shl edx,16
-
 
222
		add edx,[buf_0.h]
-
 
223
		shr dx,cl
-
 
224
		mov ecx,edx
-
 
225
		mcall ,,,0x404080 ;ç áâì ¨§®¡à ¦¥­¨ï ¯®¯ ¤ îé ï ¢ ®ª­®
-
 
226
		
-
 
227
		mov edi,sel_pt
-
 
228
		@@:
-
 
229
			mov ecx,[nav_wnd_zoom]
-
 
230
			mov ebx,[edi+point2d.x]
-
 
231
			shr ebx,cl
-
 
232
			add ebx,NAV_WND_L
-
 
233
			mov edx,[edi+point2d.y]
-
 
234
			shr edx,cl
-
 
235
			add edx,NAV_WND_T
-
 
236
			mov ecx,edx
-
 
237
			mcall SF_PUT_PIXEL,,,0xffff00
-
 
238
			add edi,sizeof.point2d
-
 
239
			cmp edi,sel_pt+4*sizeof.point2d
-
 
240
			jl @b
-
 
241
popad
-
 
242
	.end0:
180
popad
243
	ret
181
	ret
244
endp
182
 
245
 
183
align 4
246
align 4
184
proc draw_buffers
247
proc draw_buffers
Line 454... Line 517...
454
		not ebx
517
		not ebx
455
	.end_f:
518
	.end_f:
456
	ret
519
	ret
457
endp
520
endp
Line -... Line 521...
-
 
521
 
-
 
522
;output:
-
 
523
; eax - buffer coord X (¥á«¨ ªãàá®à §  ¡ãä¥à®¬ -1)
-
 
524
; ebx - buffer coord Y (¥á«¨ ªãàá®à §  ¡ãä¥à®¬ -1)
-
 
525
align 4
-
 
526
proc nav_wnd_get_mouse_coord
-
 
527
	mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
-
 
528
	cmp ax,NAV_WND_T
-
 
529
	jl .no_buf ;­¥ ¯®¯ «¨ ¢ ®ª­® ¡ãä¥à  ¯® ®á¨ y
-
 
530
	cmp eax,NAV_WND_L shl 16
-
 
531
	jl .no_buf ;­¥ ¯®¯ «¨ ¢ ®ª­® ¡ãä¥à  ¯® ®á¨ x
-
 
532
	mov ebx,eax
-
 
533
	shr ebx,16
-
 
534
 
-
 
535
	and eax,0xffff ;®áâ ¢«ï¥¬ ª®®à¤¨­ âã y
-
 
536
	sub ax,NAV_WND_T
-
 
537
	cmp eax,[nav_wnd_h]
-
 
538
	jg .no_buf
-
 
539
	sub bx,NAV_WND_L
-
 
540
	cmp ebx,[nav_wnd_w]
-
 
541
	jg .no_buf
-
 
542
	xchg eax,ebx
-
 
543
	jmp .end_f
-
 
544
	.no_buf:
-
 
545
		xor eax,eax
-
 
546
		not eax
-
 
547
		xor ebx,ebx
-
 
548
		not ebx
-
 
549
	.end_f:
-
 
550
	ret
-
 
551
endp
458
 
552
 
459
align 4
553
align 4
460
mouse_left_d:
554
mouse_left_d:
461
pushad
555
pushad
462
	call buf_get_mouse_coord
556
	call buf_get_mouse_coord
Line 492... Line 586...
492
			add edi,sizeof.point2d
586
			add edi,sizeof.point2d
493
			inc ecx
587
			inc ecx
494
			cmp ecx,4
588
			cmp ecx,4
495
			jl .cycle0
589
			jl .cycle0
496
			mov dword[sel_act],-1
590
			mov dword[sel_act],-1
-
 
591
		jmp .end2
497
	.end0:
592
	.end0:
-
 
593
	call nav_wnd_get_mouse_coord
-
 
594
	cmp eax,-1
-
 
595
	je .end2
-
 
596
		mov ecx,[nav_wnd_zoom]
-
 
597
		shl eax,cl
-
 
598
		shl ebx,cl
-
 
599
		stdcall nav_to_point, eax,ebx
-
 
600
		mov byte[calc],1
-
 
601
	.end2:
498
popad
602
popad
499
	ret
603
	ret
Line 500... Line 604...
500
 
604
 
501
align 4
605
align 4
Line 541... Line 645...
541
		.end1:
645
		.end1:
Line 542... Line 646...
542
 
646
 
543
		;¤¢¨£ ¥¬ ¨§®¡à ¦¥­¨¥
647
		;¤¢¨£ ¥¬ ¨§®¡à ¦¥­¨¥
544
		mov eax,[nav_y]
648
		mov eax,[nav_y]
545
		sub eax,[mouse_down_y]
649
		sub eax,[mouse_down_y]
546
		cmp eax,[nav_y_min]
-
 
547
		jge @f
-
 
548
			mov eax,[nav_y_min]
-
 
549
		@@:
-
 
550
		cmp eax,[nav_y_max]
-
 
551
		jle @f
-
 
552
			mov eax,[nav_y_max]
-
 
553
		@@:
650
		call nav_y_corect
Line 554... Line 651...
554
		mov [nav_y],eax
651
		mov [nav_y],eax
555
 
652
 
556
		mov eax,[nav_x]
653
		mov eax,[nav_x]
557
		sub eax,[mouse_down_x]
-
 
558
		cmp eax,[nav_x_min]
-
 
559
		jge @f
-
 
560
			mov eax,[nav_x_min]
-
 
561
		@@:
-
 
562
		cmp eax,[nav_x_max]
-
 
563
		jle @f
-
 
564
			mov eax,[nav_x_max]
654
		sub eax,[mouse_down_x]
565
		@@:
655
		call nav_x_corect
566
		mov [nav_x],eax
656
		mov [nav_x],eax
567
	.end2:
657
	.end2:
568
		mov byte[calc],1
658
		mov byte[calc],1
Line 583... Line 673...
583
open_file_img dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ⥪áâãà
673
open_file_img dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ⥪áâãà
584
open_file_size dd 0 ;à §¬¥à
674
open_file_size dd 0 ;à §¬¥à
Line 585... Line 675...
585
 
675
 
586
;¢ëç¨á«¥­¨¥ ¯ à ¬¥â஢ ¤«ï ­ ¢¨£ æ¨¨ ¯® ¨§®¡à ¦¥­¨î
676
;¢ëç¨á«¥­¨¥ ¯ à ¬¥â஢ ¤«ï ­ ¢¨£ æ¨¨ ¯® ¨§®¡à ¦¥­¨î
587
align 4
677
align 4
588
proc calc_nav_params uses eax edi
678
proc calc_nav_params uses eax ecx edi
589
	mov dword[nav_x_max],0
679
	mov dword[nav_x_max],0
590
	mov edi,buf_0
680
	mov edi,buf_0
591
	mov eax,buf2d_w
681
	mov eax,buf2d_w
592
	mov [nav_sx],eax
682
	mov [nav_sx],eax
Line 621... Line 711...
621
	cmp [nav_sy],edi
711
	cmp [nav_sy],edi
622
	jle @f
712
	jle @f
623
		mov [nav_sy],edi
713
		mov [nav_sy],edi
624
	@@:
714
	@@:
625
	shr dword[nav_sy],1
715
	shr dword[nav_sy],1
-
 
716
 
-
 
717
	xor ecx,ecx
-
 
718
	mov eax,[buf_i0.w]
-
 
719
	@@:
-
 
720
		inc ecx
-
 
721
		shr eax,1
-
 
722
		cmp eax,100
-
 
723
		jg @b
-
 
724
	mov [nav_wnd_zoom],ecx
-
 
725
	xor ecx,ecx
-
 
726
	mov eax,[buf_i0.h]
-
 
727
	@@:
-
 
728
		inc ecx
-
 
729
		shr eax,1
-
 
730
		cmp eax,32
-
 
731
		jg @b
-
 
732
	cmp [nav_wnd_zoom],ecx
-
 
733
	jg @f
-
 
734
		mov [nav_wnd_zoom],ecx
-
 
735
	@@:
-
 
736
	mov ecx,[nav_wnd_zoom]
-
 
737
	mov eax,[buf_i0.w]
-
 
738
	shr eax,cl
-
 
739
	mov [nav_wnd_w],eax
-
 
740
	mov eax,[buf_i0.h]
-
 
741
	shr eax,cl
-
 
742
	mov [nav_wnd_h],eax
626
	ret
743
	ret
627
endp
744
endp
Line 628... Line 745...
628
 
745
 
629
align 4
746
align 4
Line 697... Line 814...
697
		;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
814
		;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
698
		stdcall [img_to_rgb2], ebx,[open_file_img]
815
		stdcall [img_to_rgb2], ebx,[open_file_img]
699
		mov edi,buf_i0
816
		mov edi,buf_i0
700
		cmp buf2d_data,0
817
		cmp buf2d_data,0
701
		jne .end3
818
		jne .end3
-
 
819
			stdcall getNextPowerOfTwo,[ebx+8]
-
 
820
			mov buf2d_h,eax
-
 
821
			mov edx,eax
702
			stdcall getNextPowerOfTwo,[ebx+4]
822
			stdcall getNextPowerOfTwo,[ebx+4]
703
			mov buf2d_w,eax
823
			mov buf2d_w,eax
704
			m2m buf2d_h,dword[ebx+8] ;+8 = image height
824
			cmp edx,[ebx+8]
-
 
825
			jne @f
705
			cmp eax,[ebx+4]
826
			cmp eax,[ebx+4]
706
			jg @f
827
			jne @f
707
				m2m buf2d_w,dword[ebx+4]
828
				;ᮧ¤ ­¨¥ ­®¢®£® ¨§®¡à ¦¥­¨ï ¯® ¨á室­ë¬ à §¬¥à ¬
708
				stdcall [buf2d_create_f_img], edi,[open_file_img]
829
				stdcall [buf2d_create_f_img], edi,[open_file_img]
709
				jmp .end_1
830
				jmp .end_1
710
			@@:
831
			@@:
-
 
832
				;ᮧ¤ ­¨¥ ­®¢®£® ¨§®¡à ¦¥­¨ï ¯® ¯à¥®¡à §®¢ ­­ë¬ à §¬¥à ¬
-
 
833
				cmp eax,[ebx+4]
-
 
834
				jge @f
-
 
835
					mov eax,[ebx+4]
-
 
836
					mov buf2d_w,eax
-
 
837
				@@:
711
				sub eax,[ebx+4]
838
				sub eax,[ebx+4]
712
				shr eax,1
839
				shr eax,1
713
				mov esi,eax
840
				mov esi,eax
-
 
841
				cmp edx,[ebx+8]
-
 
842
				jge @f
-
 
843
					mov edx,[ebx+8]
-
 
844
					mov buf2d_h,edx
-
 
845
				@@:
-
 
846
				sub edx,[ebx+8]
-
 
847
				shr edx,1
714
				stdcall [buf2d_create], edi
848
				stdcall [buf2d_create], edi
715
				mov [buf_cop.l],si
849
				mov [buf_cop.l],si
-
 
850
				mov [buf_cop.t],dx
716
				stdcall [buf2d_bit_blt], edi, esi,0, buf_cop
851
				stdcall [buf2d_bit_blt], edi, esi,edx, buf_cop
717
				jmp .end_1
852
				jmp .end_1
718
		.end3:
853
		.end3:
-
 
854
			;¯à¥®¡à §®¢ ­¨¥ ᮧ¤ ­­®£® ¨§®¡à ¦¥­¨ï
719
			stdcall getNextPowerOfTwo,[ebx+4]
855
			stdcall getNextPowerOfTwo,[ebx+4]
720
			cmp eax,[ebx+4]
856
			cmp eax,[ebx+4]
721
			jg @f
857
			jg @f
722
				mov eax,[ebx+4]
858
				mov eax,[ebx+4]
723
			@@:
859
			@@:
Line 814... Line 950...
814
		jmp .end0
950
		jmp .end0
815
	@@:
951
	@@:
816
	mov eax,[buf_0.w]
952
	mov eax,[buf_0.w]
817
	shr eax,1
953
	shr eax,1
818
	sub eax,[coord_x]
954
	sub eax,[coord_x]
819
	cmp eax,[nav_x_min]
-
 
820
	jge @f
-
 
821
		mov eax,[nav_x_min]
-
 
822
	@@:
-
 
823
	cmp eax,[nav_x_max]
955
	call nav_x_corect
824
	jle .end0
-
 
825
		mov eax,[nav_x_max]
-
 
826
	.end0:
956
	.end0:
827
	mov [nav_x],eax
957
	mov [nav_x],eax
828
	;coord y
958
	;coord y
829
	mov eax,[nav_y_max]
959
	mov eax,[nav_y_max]
830
	cmp eax,0
960
	cmp eax,0
Line 834... Line 964...
834
		jmp .end1
964
		jmp .end1
835
	@@:
965
	@@:
836
	mov eax,[buf_0.h]
966
	mov eax,[buf_0.h]
837
	shr eax,1
967
	shr eax,1
838
	sub eax,[coord_y]
968
	sub eax,[coord_y]
-
 
969
	call nav_y_corect
-
 
970
	.end1:
-
 
971
	mov [nav_y],eax
-
 
972
	ret
-
 
973
endp
-
 
974
 
-
 
975
;input:
-
 
976
; eax - navigation coord x
-
 
977
;output:
-
 
978
; eax - valid coord x
-
 
979
align 4
-
 
980
nav_x_corect:
-
 
981
	cmp eax,[nav_x_min]
-
 
982
	jge @f
-
 
983
		mov eax,[nav_x_min]
-
 
984
	@@:
-
 
985
	cmp eax,[nav_x_max]
-
 
986
	jle @f
-
 
987
		mov eax,[nav_x_max]
-
 
988
	@@:
-
 
989
	ret
-
 
990
 
-
 
991
;input:
-
 
992
; eax - navigation coord y
-
 
993
;output:
-
 
994
; eax - valid coord y
-
 
995
align 4
-
 
996
nav_y_corect:
839
	cmp eax,[nav_y_min]
997
	cmp eax,[nav_y_min]
840
	jge @f
998
	jge @f
841
		mov eax,[nav_y_min]
999
		mov eax,[nav_y_min]
842
	@@:
1000
	@@:
843
	cmp eax,[nav_y_max]
1001
	cmp eax,[nav_y_max]
844
	jle .end1
1002
	jle @f
845
		mov eax,[nav_y_max]
1003
		mov eax,[nav_y_max]
846
	.end1:
1004
	@@:
847
	mov [nav_y],eax
-
 
848
	ret
1005
	ret
849
endp
-
 
Line 850... Line 1006...
850
 
1006
 
851
align 4
1007
align 4
852
proc getNextPowerOfTwo uses ebx, n:dword
1008
proc getNextPowerOfTwo uses ebx, n:dword
853
	mov ebx,[n]
1009
	mov ebx,[n]
Line 1410... Line 1566...
1410
nav_y_max dd 0 ;¬ ªá. ª®®à¤. y
1566
nav_y_max dd 0 ;¬ ªá. ª®®à¤. y
1411
nav_x dd 0 ;⥪ãé. ª®®à¤. x ¤«ï ­ ¢¨£ æ¨¨
1567
nav_x dd 0 ;⥪ãé. ª®®à¤. x ¤«ï ­ ¢¨£ æ¨¨
1412
nav_y dd 0 ;⥪ãé. ª®®à¤. y ¤«ï ­ ¢¨£ æ¨¨
1568
nav_y dd 0 ;⥪ãé. ª®®à¤. y ¤«ï ­ ¢¨£ æ¨¨
1413
nav_sx dd 0 ;áªà®« ¯® x
1569
nav_sx dd 0 ;áªà®« ¯® x
1414
nav_sy dd 0 ;áªà®« ¯® y
1570
nav_sy dd 0 ;áªà®« ¯® y
-
 
1571
nav_wnd_w dd 0 ;è¨à¨­  ®ª­  ­ ¢¨£ æ¨¨
-
 
1572
nav_wnd_h dd 0 ;¢ëá® â  ®ª­  ­ ¢¨£ æ¨¨
-
 
1573
nav_wnd_zoom dd 0
1415
mouse_down_x dd ?
1574
mouse_down_x dd ?
1416
mouse_down_y dd ?
1575
mouse_down_y dd ?
1417
sel_act dd ? ;â®çª  ¢ë¡à ­­ ï ¤«ï । ªâ¨à®¢ ­¨ï á ª« ¢¨ âãàë
1576
sel_act dd ? ;â®çª  ¢ë¡à ­­ ï ¤«ï । ªâ¨à®¢ ­¨ï á ª« ¢¨ âãàë
1418
sel_pt rb 8*sizeof.point2d ;â®çª¨ ¤«ï ¢ë¡®à  4-å 㣫®¢
1577
sel_pt rb 8*sizeof.point2d ;â®çª¨ ¤«ï ¢ë¡®à  4-å 㣫®¢
1419
last_time dd 0
1578
last_time dd 0