Subversion Repositories Kolibri OS

Rev

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

Rev 485 Rev 1643
Line 1... Line 1...
1
;----------------------------------------------------------
1
;----------------------------------------------------------
2
;--------Move picture from array to work screeen-----------
2
;--------Move picture from array to work screeen-----------
3
;----------------------------------------------------------
3
;----------------------------------------------------------
4
MovePictureToWorkScreen:
4
MovePictureToWorkScreen:
5
 
-
 
6
	call cleare_screen
5
	call	cleare_screen
7
 
-
 
8
	mov eax,[Picture_SizeX]
6
	mov	eax,[Picture_SizeX]
9
	mov ebx,[Picture_SizeY]
7
	mov	ebx,[Picture_SizeY]
10
	mov ecx,[MaxWorkScreen_SizeX]
8
	mov	ecx,[MaxWorkScreen_SizeX]
11
	mov edx,[MaxWorkScreen_SizeY]
9
	mov	edx,[MaxWorkScreen_SizeY]
12
	mov esi,[k]
10
	mov	esi,[k]
13
	imul eax,esi
11
	imul	eax,esi
14
	imul ebx,esi
12
	imul	ebx,esi
15
 
-
 
16
	cmp eax,ecx
13
	cmp	eax,ecx
17
	jle lab1
14
	jle	lab1
-
 
15
 
18
	mov eax,[MaxWorkScreen_SizeX]
16
	mov	eax,[MaxWorkScreen_SizeX]
19
	mov [WorkScreen_SizeX],eax
17
	mov	[WorkScreen_SizeX],eax
20
	jmp lab2
18
	jmp	lab2
-
 
19
 
21
	lab1:
20
lab1:
22
	mov [WorkScreen_SizeX],eax
21
	mov	[WorkScreen_SizeX],eax
23
	lab2:
-
 
Line -... Line 22...
-
 
22
 
24
 
23
lab2:
25
	cmp ebx,edx
24
	cmp	ebx,edx
26
	jle lab3
25
	jle	lab3
27
	mov ebx,[MaxWorkScreen_SizeY]
26
	mov	ebx,[MaxWorkScreen_SizeY]
28
	mov [WorkScreen_SizeY],ebx
27
	mov	[WorkScreen_SizeY],ebx
-
 
28
	jmp	lab4
29
	jmp lab4
29
 
30
	lab3:
30
lab3:
31
	mov [WorkScreen_SizeY],ebx
-
 
Line -... Line 31...
-
 
31
	mov	[WorkScreen_SizeY],ebx
32
	lab4:
32
 
33
 
33
lab4:
34
	mov eax,[WorkScreen_SizeX]
34
	mov	eax,[WorkScreen_SizeX]
35
	mov ebx,[k]
35
	mov	ebx,[k]
36
	cdq
36
	cdq
Line 47... Line 47...
47
	cdq
47
	cdq
48
	idiv ebx
48
	idiv	ebx
49
	imul eax,ebx
49
	imul	eax,ebx
50
	sub ecx,eax
50
	sub	ecx,eax
51
	lea ecx,[ecx+ecx*2]
51
	lea	ecx,[ecx+ecx*2]
52
	;
52
 
53
	mov eax,[WorkScreen_SizeX]
53
	mov	eax,[WorkScreen_SizeX]
54
	mov ebx,[k]
54
	mov	ebx,[k]
55
	dec ebx
55
	dec	ebx
56
	imul eax,ebx
56
	imul	eax,ebx
57
	lea eax,[eax+eax*2]
57
	lea	eax,[eax+eax*2]
58
	add eax,ecx
58
	add	eax,ecx
59
	mov [OffsetYWorkScreen],eax
59
	mov	[OffsetYWorkScreen],eax
Line 60... Line -...
60
 
-
 
61
 
60
 
62
	mov ebx,[Picture_SizeX]
61
	mov	ebx,[Picture_SizeX]
63
	mov eax,[CounterX]
62
	mov	eax,[CounterX]
64
	sub ebx,eax
63
	sub	ebx,eax
65
	lea ebx,[ebx+ebx*2]
64
	lea	ebx,[ebx+ebx*2]
Line 77... Line 76...
77
	imul ecx,ebx
76
	imul	ecx,ebx
78
	add eax,ecx
77
	add	eax,ecx
79
	lea eax,[eax+eax*2]
78
	lea	eax,[eax+eax*2]
80
	add eax,[PointerToPicture]
79
	add	eax,[PointerToPicture]
Line 81... Line -...
81
 
-
 
82
 
80
 
83
	mov ebx,[ScreenPointer]
-
 
84
 
81
	mov	ebx,[ScreenPointer]
Line 85... Line 82...
85
	mov edi,[CounterY]
82
	mov	edi,[CounterY]
86
 
83
 
87
	;if size of picture natural(mastab is 1) than move picture to work screen
84
;if size of picture natural(mastab is 1) than move picture to work screen
-
 
85
	cmp	[k],1
88
	cmp [k],1
86
	jne	no_zoom_1_
89
	jne no_zoom_1_
87
 
-
 
88
screen_y_1:
90
	screen_y_1:
89
	mov	esi,[CounterX]
91
	    mov esi,[CounterX]
90
 
92
	    screen_x_1:
91
screen_x_1:
93
	      mov ecx,[eax]
92
	mov	ecx,[eax]
94
	      and ecx,0xffffff
93
	and	ecx,0xffffff
Line 103... Line 102...
103
	    add eax,[OffsetYPicture]
102
	add	eax,[OffsetYPicture]
104
	    add ebx,[OffsetYWorkScreen]
103
	add	ebx,[OffsetYWorkScreen]
105
	dec edi
104
	dec	edi
106
	jnz screen_y_1
105
	jnz	screen_y_1
107
	jmp fps
106
	jmp	fps
108
	no_zoom_1_:
-
 
Line -... Line 107...
-
 
107
 
109
 
108
no_zoom_1_:
110
	cmp [k],2
109
	cmp	[k],2
Line 111... Line 110...
111
	jne no_zoom_2
110
	jne	no_zoom_2
112
 
111
 
-
 
112
screen_y_2:
113
	screen_y_2:
113
	mov	esi,[CounterX]
114
	    mov esi,[CounterX]
114
 
115
	    screen_x_2:
115
screen_x_2:
116
	      mov ecx,[eax]
116
	mov	ecx,[eax]
117
	      and ecx,0xffffff
117
	and	ecx,0xffffff
Line 137... Line 137...
137
	    add eax,[OffsetYPicture]
137
	add	eax,[OffsetYPicture]
138
	    add ebx,[OffsetYWorkScreen]
138
	add	ebx,[OffsetYWorkScreen]
139
	dec edi
139
	dec	edi
140
	jnz screen_y_2
140
	jnz	screen_y_2
141
	jmp fps
141
	jmp	fps
142
	no_zoom_2:
-
 
Line -... Line 142...
-
 
142
 
143
 
143
no_zoom_2:
144
	cmp [k],4
144
	cmp	[k],4
-
 
145
	jne	no_zoom_4
145
	jne no_zoom_4
146
 
146
	screen_y_4:
147
screen_y_4:
-
 
148
	mov	esi,[CounterX]
147
	    mov esi,[CounterX]
149
 
148
	    screen_x_4:
150
screen_x_4:
149
	      mov ecx,[eax]
151
	mov	ecx,[eax]
150
	      and ecx,0xffffff
152
	and	ecx,0xffffff
151
	      mov ebp,ecx
153
	mov	ebp,ecx
Line 198... Line 200...
198
	    add eax,[OffsetYPicture]
200
	add	eax,[OffsetYPicture]
199
	    add ebx,[OffsetYWorkScreen]
201
	add	ebx,[OffsetYWorkScreen]
200
	dec edi
202
	dec	edi
201
	jnz screen_y_4
203
	jnz	screen_y_4
202
	jmp fps
204
	jmp	fps
-
 
205
 
203
	no_zoom_4:
206
no_zoom_4:
204
	;if zoom more than 4
207
;if zoom more than 4
205
	screen_y:
208
screen_y:
206
	    mov esi,[CounterX]
209
	mov	esi,[CounterX]
-
 
210
 
207
	    screen_x:
211
screen_x:
208
	      mov ecx,[eax]
212
	mov	ecx,[eax]
209
	      and ecx,0xffffff
213
	and	ecx,0xffffff
210
	      mov ebp,ecx
214
	mov	ebp,ecx
211
	      shr ecx,16
215
	shr	ecx,16
212
	      push ebx
216
;---------------------------------------------------------
213
	      push eax
217
	push	ebx eax
214
	      mov edx,[k]
218
	mov	edx,[k]
-
 
219
 
215
	      big_pixel_y:
220
big_pixel_y:
216
		 mov eax,[k]
221
	mov	eax,[k]
-
 
222
 
217
		 big_pixel_x:
223
big_pixel_x:
218
		   mov [ebx],bp
224
	mov	[ebx],bp
219
		   mov [ebx+2],cl
225
	mov	[ebx+2],cl
220
		   add ebx,3
226
	add	ebx,3
221
		 dec eax
227
	dec	eax
222
		 jnz big_pixel_x
228
	jnz	big_pixel_x
223
		 add ebx,[OffsetYBigPixel]
229
	add	ebx,[OffsetYBigPixel]
224
	      dec edx
230
	dec	edx
225
	      jnz big_pixel_y
231
	jnz	big_pixel_y
226
	      pop eax
232
	pop	eax ebx
227
	      pop ebx
233
;---------------------------------------------------------
228
	      mov edx,[k]
234
	mov	edx,[k]
229
	      lea edx,[edx+edx*2]
235
	lea	edx,[edx+edx*2]
230
	      add ebx,edx
236
	add	ebx,edx
231
	      add eax,3
237
	add	eax,3
232
	    dec esi
238
	dec	esi
Line 235... Line 241...
235
	    add ebx,[OffsetYWorkScreen]
241
	add	ebx,[OffsetYWorkScreen]
236
	dec edi
242
	dec	edi
237
	jnz screen_y
243
	jnz	screen_y
Line 238... Line 244...
238
 
244
 
239
	 fps:
-
 
240
	 ;mov eax,18
245
fps:
241
	 ;mov ebx,14
-
 
242
	 ;mcall
-
 
243
 
-
 
244
	 mov eax,7
246
	;mcall	18,14
245
	 mov ebx,[ScreenPointer]
247
	mov	ebx,[ScreenPointer]
246
	 mov ecx,[WorkScreen_SizeX]
248
	mov	ecx,[WorkScreen_SizeX]
247
	 mov edx,[WorkScreen_SizeY]
249
	mov	edx,[WorkScreen_SizeY]
248
	 shl ecx,16
250
	shl	ecx,16
249
	 add ecx,edx
251
	add	ecx,edx
250
	 mov edx,8*65536+20+15+49+5+1
-
 
Line -... Line 252...
-
 
252
	mov	edx,8*65536+20+15+49+5+1
251
	 mcall
253
 
252
 
254
	mcall	7
253
	 ret
255
	ret
254
;----------------------------------------------------------
256
;----------------------------------------------------------
255
;--------------------clear screen--------------------------
257
;--------------------clear screen--------------------------
256
;----------------------------------------------------------
-
 
257
cleare_screen:
258
;----------------------------------------------------------
258
 
259
cleare_screen:
259
	mov eax,[ScreenPointer]
260
	mov	eax,[ScreenPointer]
260
	mov ebx,[WorkScreen_SizeX]
261
	mov	ebx,[WorkScreen_SizeX]
261
	imul ebx,[WorkScreen_SizeY]
262
	imul	ebx,[WorkScreen_SizeY]
262
	lea ebx,[ebx+ebx*2]
263
	lea	ebx,[ebx+ebx*2]
263
	shr ebx,3
264
	shr	ebx,3
Line 264... Line 265...
264
	inc ebx
265
	inc	ebx
265
	mov esi,0xffffff
-
 
266
 
266
	mov	esi,0xffffff
267
	clear_screen_loop:
267
 
268
 
268
clear_screen_loop:
269
	  mov [eax],esi
269
	mov	[eax],esi
270
	  mov [eax+3],esi
-
 
271
	  mov [eax+6],si
270
	mov	[eax+3],esi
272
	  add eax,4+4
271
	mov	[eax+6],si
273
 
272
	add	eax,4+4
274
	dec ebx
273
	dec	ebx
275
	jnz clear_screen_loop
274
	jnz	clear_screen_loop
276
	ret
275
	ret
277
;----------------------------------------------------------
276
;----------------------------------------------------------
278
;-------------cleare work arrea(work screen)---------------
-
 
279
;----------------------------------------------------------
277
;-------------cleare work arrea(work screen)---------------
280
cleare_work_arrea:
278
;----------------------------------------------------------
281
 
279
cleare_work_arrea:
282
	mov eax,[PointerToPicture]
280
	mov	eax,[PointerToPicture]
283
	mov ebx,[Picture_SizeX]
281
	mov	ebx,[Picture_SizeX]
284
	imul ebx,[Picture_SizeY]
282
	imul	ebx,[Picture_SizeY]
285
	lea ebx,[ebx+ebx*2]
283
	lea	ebx,[ebx+ebx*2]
Line 286... Line 284...
286
	shr ebx,3
284
	shr	ebx,3
287
	inc ebx
-
 
288
	mov esi,0xffffff
285
	inc	ebx
289
 
286
	mov	esi,0xffffff
290
	clear_work_arrea_loop:
287
 
291
 
288
clear_work_arrea_loop:
292
	  mov [eax],esi
-
 
293
	  mov [eax+3],esi
289
	mov	[eax],esi
294
	  mov [eax+6],si
290
	mov	[eax+3],esi
295
	  add eax,4+4
291
	mov	[eax+6],si
296
 
292
	add	eax,4+4
297
	dec ebx
293
	dec	ebx
298
	jnz clear_work_arrea_loop
294
	jnz	clear_work_arrea_loop
299
	ret
295
	ret
300
;-----------------------------------------------------------
-
 
301
;calculate position work screen on a picture
296
;-----------------------------------------------------------
302
;-----------------------------------------------------------
297
;calculate position work screen on a picture
303
CalculatePositionScreen:
298
;-----------------------------------------------------------
304
 
299
CalculatePositionScreen:
305
	 mov eax,[Picture_SizeX]
300
	mov	eax,[Picture_SizeX]
306
	 mov ebx,[Picture_SizeY]
301
	mov	ebx,[Picture_SizeY]
307
	 mov ecx,[CounterX]
-
 
308
	 mov edx,[CounterY]
302
	mov	ecx,[CounterX]
309
	 sub eax,ecx
303
	mov	edx,[CounterY]
310
	 sub ebx,edx
304
	sub	eax,ecx
311
 
-
 
Line -... Line 305...
-
 
305
	sub	ebx,edx
312
	 cmp [PosX],eax
306
	cmp	[PosX],eax
313
	 jle no_limit_screen_x
307
	jle	no_limit_screen_x
314
	 mov [PosX],eax
308
	mov	[PosX],eax
315
	 no_limit_screen_x:
-
 
Line -... Line 309...
-
 
309
 
316
 
310
no_limit_screen_x:
317
	 cmp [PosY],ebx
311
	cmp	[PosY],ebx
318
	 jle no_limit_screen_y
312
	jle	no_limit_screen_y
319
	 mov [PosY],ebx
-
 
Line -... Line 313...
-
 
313
	mov	[PosY],ebx
320
	 no_limit_screen_y:
314
 
321
 
315
no_limit_screen_y:
322
	 cmp [PosX],0
316
	cmp	[PosX],0
323
	 jns no_minimum_screen_x
-
 
Line -... Line 317...
-
 
317
	jns	no_minimum_screen_x
324
	 mov [PosX],0
318
	mov	[PosX],0
325
	 no_minimum_screen_x:
319
 
326
 
320
no_minimum_screen_x:
327
	 cmp [PosY],0
321
	cmp	[PosY],0
328
	 jns no_minimum_screen_y
322
	jns	no_minimum_screen_y
329
	 mov [PosY],0
-
 
330
	 no_minimum_screen_y:
323
	mov	[PosY],0
331
 
324
 
332
	 ret
325
no_minimum_screen_y:
333
;-----------------------------------------------------------
326
	ret
334
;-----------calculate cordinats on work picture--------------
-
 
335
;-----------------------------------------------------------
327
;-----------------------------------------------------------
336
GetScreenCordinats:
328
;-----------calculate cordinats on work picture--------------
337
 
329
;-----------------------------------------------------------
338
	mov eax,[MouseX]
330
GetScreenCordinats:
339
	mov ebx,[MouseY]
331
	mov	eax,[MouseX]
340
	sub eax,9
332
	mov	ebx,[MouseY]
341
	sub ebx,87
333
	sub	eax,9
342
 
334
	sub	ebx,87
343
	mov ecx,[k]
-
 
344
	cdq
335
	mov	ecx,[k]
345
	idiv ecx
336
	cdq