Rev 2000 | Rev 2188 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2000 | mario79 | 1 | ;--------------------------------------------------------------------- |
2 | ; ÓÑÒÀÍÎÂÈÒÜ ÔÎÍ |
||
3 | background: |
||
4 | cmp [soi],0 |
||
5 | je .end |
||
2163 | mario79 | 6 | |
2000 | mario79 | 7 | cmp [bgrmode],dword 2 |
2163 | mario79 | 8 | ja .stretch_crop |
9 | |||
2000 | mario79 | 10 | mov ecx,[img_width] ; øèðèíà |
11 | test ecx,ecx |
||
12 | jz .end |
||
13 | mov edx,[img_high] ; âûñîòà |
||
14 | test edx,edx |
||
15 | jz .end |
||
16 | mcall 15,1 ; set size |
||
17 | |||
18 | mov esi,ecx |
||
19 | imul esi,edx |
||
20 | lea esi,[esi*3] |
||
21 | mov ecx,[soi] |
||
22 | |||
23 | xor edx,edx |
||
24 | |||
25 | cmp [img_resolution],24 |
||
26 | je @f |
||
2163 | mario79 | 27 | |
2000 | mario79 | 28 | push dword image_file |
29 | call [convert_Conv_24b] |
||
2163 | mario79 | 30 | |
2000 | mario79 | 31 | mov ecx,[raw_pointer_2] |
2163 | mario79 | 32 | add ecx,44 |
33 | mcall 15,5 ;15,5 set data |
||
34 | mcall 68,13,[raw_pointer_2] |
||
2000 | mario79 | 35 | jmp .set_mode |
36 | @@: |
||
2163 | mario79 | 37 | mcall 15,5 ; 15,5 set data |
2000 | mario79 | 38 | .set_mode: |
2163 | mario79 | 39 | mcall 15,4,[bgrmode] ; 15,4 set mode |
40 | dec ebx ; 15,3 redraw background |
||
2000 | mario79 | 41 | mcall |
42 | .end: |
||
43 | ret |
||
2163 | mario79 | 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: |
||
162 | xor ecx,ecx |
||
163 | inc ecx |
||
164 | ; mov ecx,[bgrmode] |
||
165 | mcall 15,4 ; 15,4 set mode |
||
166 | dec ebx ; 15,3 redraw background |
||
167 | mcall |
||
168 | .end: |
||
169 | mov ecx,[raw_pointer_2] |
||
170 | mcall 68,13 |
||
171 | ret |
||
2000 | mario79 | 172 | ;--------------------------------------------------------------------- |