Subversion Repositories Kolibri OS

Rev

Rev 485 | Rev 6357 | Go to most recent revision | Show entire file | Ignore 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:
-
 
24
 
22
 
-
 
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
29
	jmp lab4
28
	jmp	lab4
-
 
29
 
30
	lab3:
30
lab3:
31
	mov [WorkScreen_SizeY],ebx
31
	mov	[WorkScreen_SizeY],ebx
32
	lab4:
-
 
33
 
32
 
-
 
33
lab4:
34
	mov eax,[WorkScreen_SizeX]
34
	mov	eax,[WorkScreen_SizeX]
35
	mov ebx,[k]
35
	mov	ebx,[k]
36
	cdq
36
	cdq
37
	idiv ebx
37
	idiv	ebx
38
	mov [CounterX],eax
38
	mov	[CounterX],eax
39
	mov eax,[WorkScreen_SizeY]
39
	mov	eax,[WorkScreen_SizeY]
40
	cdq
40
	cdq
41
	idiv ebx
41
	idiv	ebx
42
	mov [CounterY],eax
42
	mov	[CounterY],eax
Line 43... Line 43...
43
 
43
 
44
	mov eax,[WorkScreen_SizeX]
44
	mov	eax,[WorkScreen_SizeX]
45
	mov ecx,eax
45
	mov	ecx,eax
46
	mov ebx,[k]
46
	mov	ebx,[k]
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
264
	inc ebx
265
	inc	ebx
265
	mov esi,0xffffff
266
	mov	esi,0xffffff
266
 
-
 
267
	clear_screen_loop:
267
 
268
 
268
clear_screen_loop:
269
	  mov [eax],esi
269
	mov	[eax],esi
270
	  mov [eax+3],esi
270
	mov	[eax+3],esi
271
	  mov [eax+6],si
-
 
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)---------------
277
;-------------cleare work arrea(work screen)---------------
279
;----------------------------------------------------------
-
 
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]
286
	shr ebx,3
284
	shr	ebx,3
287
	inc ebx
285
	inc	ebx
288
	mov esi,0xffffff
286
	mov	esi,0xffffff
289
 
-
 
290
	clear_work_arrea_loop:
287
 
291
 
288
clear_work_arrea_loop:
292
	  mov [eax],esi
289
	mov	[eax],esi
293
	  mov [eax+3],esi
290
	mov	[eax+3],esi
294
	  mov [eax+6],si
-
 
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
;-----------------------------------------------------------
296
;-----------------------------------------------------------
301
;calculate position work screen on a picture
297
;calculate position work screen on a picture
-
 
298
;-----------------------------------------------------------
-
 
299
CalculatePositionScreen:
-
 
300
	mov	eax,[Picture_SizeX]
-
 
301
	mov	ebx,[Picture_SizeY]
-
 
302
	mov	ecx,[CounterX]
-
 
303
	mov	edx,[CounterY]
-
 
304
	sub	eax,ecx
-
 
305
	sub	ebx,edx
-
 
306
	cmp	[PosX],eax
-
 
307
	jle	no_limit_screen_x
-
 
308
	mov	[PosX],eax
-
 
309
 
-
 
310
no_limit_screen_x:
-
 
311
	cmp	[PosY],ebx
-
 
312
	jle	no_limit_screen_y
-
 
313
	mov	[PosY],ebx
-
 
314
 
-
 
315
no_limit_screen_y:
-
 
316
	cmp	[PosX],0
-
 
317
	jns	no_minimum_screen_x
-
 
318
	mov	[PosX],0
-
 
319
 
-
 
320
no_minimum_screen_x:
-
 
321
	cmp	[PosY],0
Line 302... Line -...
302
;-----------------------------------------------------------
-
 
303
CalculatePositionScreen:
-
 
304
 
-
 
305
	 mov eax,[Picture_SizeX]
-
 
306
	 mov ebx,[Picture_SizeY]
-
 
307
	 mov ecx,[CounterX]
-
 
308
	 mov edx,[CounterY]
-
 
309
	 sub eax,ecx
-
 
310
	 sub ebx,edx
-
 
311
 
-
 
312
	 cmp [PosX],eax
-
 
313
	 jle no_limit_screen_x
-
 
314
	 mov [PosX],eax
-
 
315
	 no_limit_screen_x:
-
 
316
 
-
 
317
	 cmp [PosY],ebx
-
 
318
	 jle no_limit_screen_y
-
 
319
	 mov [PosY],ebx
-
 
320
	 no_limit_screen_y:
-
 
321
 
-
 
322
	 cmp [PosX],0
-
 
323
	 jns no_minimum_screen_x
-
 
324
	 mov [PosX],0
-
 
325
	 no_minimum_screen_x:
-
 
326
 
-
 
327
	 cmp [PosY],0
322
	jns	no_minimum_screen_y
328
	 jns no_minimum_screen_y
-
 
329
	 mov [PosY],0
323
	mov	[PosY],0
330
	 no_minimum_screen_y:
324
 
331
 
325
no_minimum_screen_y:
332
	 ret
326
	ret
333
;-----------------------------------------------------------
327
;-----------------------------------------------------------
334
;-----------calculate cordinats on work picture--------------
-
 
335
;-----------------------------------------------------------
328
;-----------calculate cordinats on work picture--------------
336
GetScreenCordinats:
329
;-----------------------------------------------------------
337
 
330
GetScreenCordinats:
338
	mov eax,[MouseX]
331
	mov	eax,[MouseX]
339
	mov ebx,[MouseY]
-
 
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]
335
	mov	ecx,[k]
344
	cdq
336
	cdq
345
	idiv ecx
337
	idiv	ecx
346
	mov [ScreenX],eax
338
	mov	[ScreenX],eax
347
	mov eax,ebx
339
	mov	eax,ebx
348
	cdq
-
 
349
	idiv ecx
340
	cdq
350
	mov [ScreenY],eax
341
	idiv	ecx