Subversion Repositories Kolibri OS

Rev

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

Rev 2000 Rev 2163
Line 1... Line 1...
1
;---------------------------------------------------------------------
1
;---------------------------------------------------------------------
2
; ÓÑÒÀÍÎÂÈÒÜ ÔÎÍ
2
; ÓÑÒÀÍÎÂÈÒÜ ÔÎÍ
3
background:
3
background:
4
	cmp	[soi],0
4
	cmp	[soi],0
5
	je	.end
5
	je	.end
-
 
6
 
6
	cmp	[bgrmode],dword 2
7
	cmp	[bgrmode],dword 2
7
	jbe	@f
-
 
8
	jmp	.end
8
	ja	.stretch_crop
9
@@:
9
 
10
	mov	ecx,[img_width]	;	øèðèíà
10
	mov	ecx,[img_width]	;	øèðèíà
11
	test	ecx,ecx
11
	test	ecx,ecx
12
	jz	.end
12
	jz	.end
13
	mov	edx,[img_high]	; âûñîòà 
13
	mov	edx,[img_high]	; âûñîòà 
14
	test	edx,edx
14
	test	edx,edx
Line 22... Line 22...
22
 
22
 
Line 23... Line 23...
23
	xor	edx,edx
23
	xor	edx,edx
24
 
24
 
-
 
25
	cmp	[img_resolution],24
25
	cmp	[img_resolution],24
26
	je	@f
26
	je	@f
27
	
-
 
28
	push	dword image_file
27
	push	dword image_file
29
	call	[convert_Conv_24b]
-
 
30
	
28
	call	[convert_Conv_24b]
31
	mov	ecx,[raw_pointer_2]
29
	mov	ecx,[raw_pointer_2]
32
	add	ecx,44
30
	mcall	15,5	;15,5 set data
-
 
31
	mov	ecx,[raw_pointer_2]
33
	mcall	15,5		;15,5 set data
32
	mcall	68,13
34
	mcall	68,13,[raw_pointer_2]
33
	jmp	.set_mode
35
	jmp	.set_mode
34
@@:
36
@@:
-
 
37
	mcall	15,5		; 15,5 set data
-
 
38
.set_mode:
-
 
39
	mcall	15,4,[bgrmode]	; 15,4 set mode
-
 
40
	dec	ebx		; 15,3 redraw background
-
 
41
	mcall
-
 
42
.end:
-
 
43
	ret
-
 
44
;---------------------------------------------------------------------
-
 
45
.stretch_crop:
-
 
46
;	cmp	[bgrmode],dword 3
-
 
47
;	jne	.stretch_inscribe
-
 
48
	xor	eax,eax
-
 
49
	mov	[stretch_start_coordinates],eax
-
 
50
    
-
 
51
	mcall	14
-
 
52
 
-
 
53
	mov	ebx,eax
-
 
54
	and	eax,0xffff
-
 
55
	inc	eax
-
 
56
	mov	[screen_high],eax
-
 
57
	shr	ebx,16
-
 
58
	inc	ebx
-
 
59
	mov	[screen_width],ebx
-
 
60
	
-
 
61
	xchg	eax,ebx
-
 
62
	call	calculate_relation
-
 
63
	mov	[screen_relation],eax
-
 
64
	
-
 
65
	mov	eax,[img_width]
-
 
66
	mov	ebx,[img_high]
-
 
67
	call	calculate_relation
-
 
68
	mov	[picture_relation],eax
-
 
69
	
-
 
70
	cmp	eax,[screen_relation]
-
 
71
	jb	@f
-
 
72
; Y = Yimg
-
 
73
; X = Yimg*Xscreen/Yscreen
-
 
74
	mov	eax,[img_high]
-
 
75
	mov	[stretch_img_high],eax
-
 
76
	mov	eax,[img_high]
-
 
77
	imul	eax,dword [screen_width]
-
 
78
	mov	ebx,[screen_high]
-
 
79
	call	integer_division	
-
 
80
	mov	[stretch_img_width],eax
-
 
81
	mov	ebx,[img_width]
-
 
82
	sub	ebx,eax
-
 
83
	shr	ebx,1
-
 
84
	mov	[stretch_start_coordinates.x],bx
-
 
85
	jmp	.continue
-
 
86
@@:
-
 
87
; X = Ximg
-
 
88
; Y = Ximg*Yscreen/Xscreen
-
 
89
	mov	eax,[img_width]
-
 
90
	mov	[stretch_img_width],eax
-
 
91
	mov	eax,[img_width]
-
 
92
	imul	eax,dword [screen_high]
-
 
93
	mov	ebx,[screen_width]
-
 
94
	call	integer_division
-
 
95
	mov	[stretch_img_high],eax
-
 
96
	mov	ebx,[img_high]
-
 
97
	sub	ebx,eax
-
 
98
	shr	ebx,1
-
 
99
	mov	[stretch_start_coordinates.y],bx
-
 
100
.continue:
-
 
101
	mov	ebx,[screen_width]
-
 
102
	shl	ebx,16
-
 
103
	add	ebx,[screen_high]
-
 
104
	
-
 
105
	mov	eax,[stretch_img_width]
-
 
106
	shl	eax,16
-
 
107
	add	eax,[stretch_img_high]	
-
 
108
	
-
 
109
	push	dword eax			; eax - crop size
-
 
110
	push	dword 0				; edi - background color
-
 
111
	push	dword 1				; esi - filtering
-
 
112
	push	dword 0				; edx - scaling mode
-
 
113
	push	dword [stretch_start_coordinates]	; ecx - start_coordinates
-
 
114
	push	ebx				; ebx - new_size
-
 
115
	push	dword image_file		; eax -  convert data table
-
 
116
 
-
 
117
	call	[Scaling_Start]
-
 
118
	call	background_1
-
 
119
	ret
-
 
120
	
-
 
121
;---------------------------------------------------------------------
-
 
122
;.stretch_inscribe:
-
 
123
;	ret
-
 
124
;---------------------------------------------------------------------
-
 
125
background_1:
-
 
126
	mov	ecx,[screen_width]	;[crop_img_width]	; øèðèíà
-
 
127
	test	ecx,ecx
-
 
128
	jz	.end
-
 
129
	mov	edx,[screen_high]	;[crop_img_high]	; âûñîòà 
-
 
130
	test	edx,edx
-
 
131
	jz	.end
-
 
132
	mcall	15,1	; set size
-
 
133
 
-
 
134
	mov	esi,ecx
-
 
135
	imul	esi,edx
-
 
136
	lea	esi,[esi*3]
-
 
137
	mov	ecx,[raw_pointer_2]	;[soi]
-
 
138
	mov	eax,[ecx+28]
-
 
139
	add	ecx,eax
-
 
140
 
-
 
141
	xor	edx,edx
-
 
142
 
-
 
143
	mov	eax,[raw_pointer_2]
-
 
144
	mov	eax,[eax+12]		;overall depth of the pixel
-
 
145
	cmp	al,24
-
 
146
	je	@f
-
 
147
 
-
 
148
	mov	eax,[raw_pointer_2]
-
 
149
	mov	[crop_raw_pointer],eax
-
 
150
	
-
 
151
	push	dword crop_image_file
-
 
152
	call	[convert_Conv_24b]
-
 
153
	
-
 
154
	mov	ecx,[crop_raw_pointer_2]
-
 
155
	add	ecx,44
-
 
156
	mcall	15,5		;15,5 set data
-
 
157
	mcall	68,13,[crop_raw_pointer_2]
-
 
158
	jmp	.set_mode
-
 
159
@@:
-
 
160
	mcall	15,5		; 15,5 set data
-
 
161
.set_mode:
35
	mcall	15,5	; 15,5 set data
162
	xor	ecx,ecx
36
.set_mode:
163
	inc	ecx
37
	mov	ecx,[bgrmode]
164
;	mov	ecx,[bgrmode]
38
	mcall	15,4 ; 15,4 set mode
165
	mcall	15,4		; 15,4 set mode
39
	dec	ebx ; 15,3 redraw background
166
	dec	ebx		; 15,3 redraw background
-
 
167
	mcall
-
 
168
.end:
40
	mcall
169
	mov	ecx,[raw_pointer_2]
41
.end:
170
	mcall	68,13
42
	ret
171
	ret