Subversion Repositories Kolibri OS

Rev

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

Rev 2367 Rev 2383
Line 2109... Line 2109...
2109
	mov edi,[buf_destination]
2109
	mov edi,[buf_destination]
2110
	cmp buf2d_bits,24
2110
	cmp buf2d_bits,24
2111
	jne .copy_end ;ä®à¬ â ¡ãä¥à  ­¥ ¯®®¤¥à¦¨¢ ¥âáï
2111
	jne .copy_end ;ä®à¬ â ¡ãä¥à  ­¥ ¯®®¤¥à¦¨¢ ¥âáï
2112
		mov ebx,buf2d_h ;ebx - ¢ëá®â  ®á­®¢­®£® ¡ãä¥à 
2112
		mov ebx,buf2d_h ;ebx - ¢ëá®â  ®á­®¢­®£® ¡ãä¥à 
2113
		mov ecx,[coord_y]
2113
		mov ecx,[coord_y]
-
 
2114
		cmp ecx,0
-
 
2115
		jge @f
-
 
2116
			;¥á«¨ ª®®à¤¨­ â  coord_y<0 (1-ï ­ áâனª )
-
 
2117
			add edx,ecx ;㬥­ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨭ª¨
-
 
2118
			cmp edx,0
-
 
2119
			jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî ­ ¤ ¢¥àå­¥© £à ­¨æ¥© ¡ãä¥à  (coord_y<0 ¨ |coord_y|>buf_source.h)
-
 
2120
			neg ecx
-
 
2121
			;inc ecx
-
 
2122
			imul ecx,eax
-
 
2123
			shl ecx,2 ;¯® 4 ¡¨â  ­  ¯¨ªá¥«ì
-
 
2124
			add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ â¥«ì á ª®¯¨à㥬묨 ¤ ­­ë¬¨, á ãç¥â®¬ ¯à®¯ã襭®© ç áâ¨
-
 
2125
			xor ecx,ecx ;®¡­ã«ï¥¬ ª®®à¤¨­ âã coord_y
-
 
2126
		@@:
2114
		cmp ecx,ebx
2127
		cmp ecx,ebx
2115
		jge .copy_end ;¥á«¨ ª®®à¤¨­ â  'y' ¡®«ìè¥ ¢ëá®âë ¡ãä¥à 
2128
		jge .copy_end ;¥á«¨ ª®®à¤¨­ â  'y' ¡®«ìè¥ ¢ëá®âë ¡ãä¥à 
2116
		add ecx,edx ;ecx - ­¨¦­ïï ª®®à¤¨­ â  ª®¯¨à㥬®© ª à⨭ª¨
2129
		add ecx,edx ;ecx - ­¨¦­ïï ª®®à¤¨­ â  ª®¯¨à㥬®© ª à⨭ª¨
2117
		cmp ecx,ebx
2130
		cmp ecx,ebx
2118
		jle @f
2131
		jle @f
2119
			sub ecx,ebx
2132
			sub ecx,ebx
2120
			sub edx,ecx ;㬥­ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨭ª¨, ¢ á«ãç¥ ª®£¤  ®­  ¢ë« §¨â §  ­¨¦­îî £à ­¨æã
2133
			sub edx,ecx ;㬥­ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨭ª¨, ¢ á«ãç¥ ª®£¤  ®­  ¢ë« §¨â §  ­¨¦­îî £à ­¨æã
2121
		@@:
2134
		@@:
2122
		mov ebx,buf2d_w
2135
		mov ebx,buf2d_w
2123
		mov ecx,ebx ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥­­ëå 楫¥©
2136
		mov ecx,ebx ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥­­ëå 楫¥©
-
 
2137
		cmp [coord_y],0
-
 
2138
		jg .end_otr_c_y
-
 
2139
			;¥á«¨ ª®®à¤¨­ â  coord_y<=0 (2-ï ­ áâனª )
-
 
2140
			mov ecx,[coord_x]
-
 
2141
			jmp @f
-
 
2142
		.end_otr_c_y:
2124
		imul ecx,[coord_y]
2143
		imul ecx,[coord_y]
2125
		add ecx,[coord_x]
2144
		add ecx,[coord_x]
-
 
2145
		@@:
2126
		lea ecx,[ecx+ecx*2]
2146
		lea ecx,[ecx+ecx*2]
2127
		add ecx,buf2d_data
2147
		add ecx,buf2d_data
2128
		sub ebx,eax
2148
		sub ebx,eax
2129
		mov edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
2149
		mov edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
Line 2224... Line 2244...
2224
;äã­ªæ¨ï ª®¯¨àã¥â ¨§®¡à ¦¥­¨¥ ¨§ ¡ãä¥à  buf_source (8b) ¢ buf_destination (24b)
2244
;äã­ªæ¨ï ª®¯¨àã¥â ¨§®¡à ¦¥­¨¥ ¨§ ¡ãä¥à  buf_source (8b) ¢ buf_destination (24b)
2225
; 㪠§ë¢ îâáï ª®®à¤¨­ âë ¢áâ ¢ª¨ ¡ãä¥à  buf_source ®â­®á¨â¥«ì­® buf_destination
2245
; 㪠§ë¢ îâáï ª®®à¤¨­ âë ¢áâ ¢ª¨ ¡ãä¥à  buf_source ®â­®á¨â¥«ì­® buf_destination
2226
align 4
2246
align 4
2227
proc buf_bit_blt_alpha, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword, color:dword
2247
proc buf_bit_blt_alpha, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword, color:dword
2228
	locals
2248
	locals
2229
		right_bytes dd ?
-
 
-
 
2249
		lost_bytes dd ? ;ç¨á«® ¯®â¥àï­­ëå ¡ ©â®¢ ¢ áâப¥ ª®¯¨à㥬®£® ¨§®¡à ¦¥­ï (â¥å çâ® ­¥ ¢« §ïâ ¢ ¡ãä¥à)
2230
		dest_w_bytes dd ? ;ª®««¨ç¥á⢮ ¡ ©â ¢ ¡ãä¥à¥ ¯à¨¥¬­¨ª¥ ¯® è¨à¨­¥ - è¨à¨­  ¢áâ ¢«ï¥¬®© ª à⨭ª¨
2250
		dest_w_bytes dd ? ;ª®««¨ç¥á⢮ ¡ ©â ¢ ¡ãä¥à¥ ¯à¨¥¬­¨ª¥ ¯® è¨à¨­¥ - è¨à¨­  ¢áâ ¢«ï¥¬®© ª à⨭ª¨
2231
	endl
2251
	endl
2232
	pushad
2252
	pushad
Line 2233... Line 2253...
2233
 
2253
 
2234
	mov edi,[buf_source]
2254
	mov edi,[buf_source]
2235
	cmp buf2d_bits,8
2255
	cmp buf2d_bits,8
2236
	jne .error1 ;ä®à¬ â ¡ãä¥à  ­¥ ¯®®¤¥à¦¨¢ ¥âáï
2256
	jne .error1 ;ä®à¬ â ¡ãä¥à  ­¥ ¯®®¤¥à¦¨¢ ¥âáï
2237
	mov eax,buf2d_w
2257
	mov eax,buf2d_w ;è¨à¨­  ª®¯¨à㥬®© ª à⨭ª¨
2238
	mov edx,buf2d_h ;¢ëá®â  ª®¯¨à㥬®© ª à⨭ª¨
2258
	mov edx,buf2d_h ;¢ëá®â  ª®¯¨à㥬®© ª à⨭ª¨
Line 2239... Line 2259...
2239
	mov esi,buf2d_data ;¤ ­­ë¥ ª®¯¨à㥬®© ª à⨭ª¨
2259
	mov esi,buf2d_data ;¤ ­­ë¥ ª®¯¨à㥬®© ª à⨭ª¨
2240
 
2260
 
Line 2248... Line 2268...
2248
		mov ecx,[coord_y]
2268
		mov ecx,[coord_y]
2249
		cmp ecx,0
2269
		cmp ecx,0
2250
		jge @f
2270
		jge @f
2251
			;¥á«¨ ª®®à¤¨­ â  coord_y<0 (1-ï ­ áâனª )
2271
			;¥á«¨ ª®®à¤¨­ â  coord_y<0 (1-ï ­ áâனª )
2252
			add edx,ecx ;㬥­ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨭ª¨
2272
			add edx,ecx ;㬥­ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨭ª¨
-
 
2273
			cmp edx,0
-
 
2274
			jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî ­ ¤ ¢¥àå­¥© £à ­¨æ¥© ¡ãä¥à  (coord_y<0 ¨ |coord_y|>buf_source.h)
2253
			neg ecx
2275
			neg ecx
2254
			;inc ecx
2276
			;inc ecx
2255
			imul ecx,eax
2277
			imul ecx,eax
2256
			add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ â¥«ì á ª®¯¨à㥬묨 ¤ ­­ë¬¨, á ãç¥â®¬ ¯à®¯ã襭®© ç áâ¨
2278
			add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ â¥«ì á ª®¯¨à㥬묨 ¤ ­­ë¬¨, á ãç¥â®¬ ¯à®¯ã襭®© ç áâ¨
2257
			xor ecx,ecx ;®¡­ã«ï¥¬ ª®®à¤¨­ âã coord_y
2279
			xor ecx,ecx ;®¡­ã«ï¥¬ ª®®à¤¨­ âã coord_y
Line 2265... Line 2287...
2265
			sub edx,ecx ;㬥­ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨭ª¨, ¢ á«ãç¥ ª®£¤  ®­  ¢ë« §¨â §  ­¨¦­îî £à ­¨æã
2287
			sub edx,ecx ;㬥­ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨭ª¨, ¢ á«ãç¥ ª®£¤  ®­  ¢ë« §¨â §  ­¨¦­îî £à ­¨æã
2266
		@@:
2288
		@@:
2267
		mov ebx,buf2d_w
2289
		mov ebx,buf2d_w
2268
		mov ecx,[coord_y] ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥­­ëå 楫¥©
2290
		mov ecx,[coord_y] ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥­­ëå 楫¥©
2269
		cmp ecx,0
2291
		cmp ecx,0
2270
		jge .end_otr_c_y
2292
		jg .end_otr_c_y
2271
			;¥á«¨ ª®®à¤¨­ â  coord_y<0 (2-ï ­ áâனª )
2293
			;¥á«¨ ª®®à¤¨­ â  coord_y<=0 (2-ï ­ áâனª )
2272
			mov ecx,[coord_x]
2294
			mov ecx,[coord_x]
2273
			jmp @f
2295
			jmp @f
2274
		.end_otr_c_y:
2296
		.end_otr_c_y:
2275
		imul ecx,ebx
2297
		imul ecx,ebx
2276
		add ecx,[coord_x]
2298
		add ecx,[coord_x]
2277
		@@:
2299
		@@:
2278
		lea ecx,[ecx+ecx*2]
2300
		lea ecx,[ecx+ecx*2]
2279
		add ecx,buf2d_data
2301
		add ecx,buf2d_data ;buf2d_data ¤ ­­ë¥ ®á­®¢­®£® ¡ãä¥à 
2280
		sub ebx,eax
2302
		sub ebx,eax ;ebx - è¨à¨­  ®á­®¢­®£® ¡ãä¥à  ¬¨­ãá è¨à¨­  à¨á㥬®£® ¡ãä¥à 
2281
		mov edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
2303
		mov edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
Line 2282... Line 2304...
2282
 
2304
 
2283
	mov [right_bytes],0
2305
	mov dword[lost_bytes],0
-
 
2306
	mov ecx,[coord_x]
-
 
2307
	cmp ecx,0
-
 
2308
	jge @f
-
 
2309
		neg ecx
-
 
2310
		;inc ecx
-
 
2311
		cmp eax,ecx ;eax - è¨à¨­  ª®¯¨à㥬®© ª à⨭ª¨
-
 
2312
		jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥­¨¥ ­ å®¤¨âáï ¯®«­®áâìî §  «¥¢®© £à ­¨æ¥© ¡ãä¥à  (coord_x<0 ¨ |coord_x|>buf_source.w)
-
 
2313
		add [lost_bytes],ecx
-
 
2314
		sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
-
 
2315
		add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
-
 
2316
		add esi,ecx
-
 
2317
		lea ecx,[ecx+ecx*2]
-
 
2318
		add edi,ecx ;edi 㪠§ â¥«ì ­  ¤ ­­ë¥ ¡ãä¥à , ªã¤  ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ­¨¥
-
 
2319
		xor ecx,ecx
2284
	mov ecx,[coord_x]
2320
	@@:
2285
	cmp ecx,ebx
2321
	cmp ecx,ebx
2286
	jl @f
2322
	jle @f
2287
		sub ecx,ebx
2323
		sub ecx,ebx
2288
		sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
2324
		sub eax,ecx ;㪮à ç¨¢ ¥¬ ª®¯¨à㥬ãî áâபã
2289
		add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
2325
		add ebx,ecx ;㤫¨­­ï¥¬ áâப㠤«ï ᤢ¨£  £« ¢­®© ª à⨭ª¨ ¡ãä¥à 
2290
		;ecx - ç¨á«® ¯¨ªá¥«¥© ¢ 1-© áâப¥ ª à⨭ª¨, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî áâ®à®­ã
2326
		;ecx - ç¨á«® ¯¨ªá¥«¥© ¢ 1-© áâப¥ ª à⨭ª¨, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî áâ®à®­ã
2291
		mov [right_bytes],ecx
2327
		add [lost_bytes],ecx
Line 2292... Line 2328...
2292
	@@:
2328
	@@:
2293
 
2329
 
2294
	lea ebx,[ebx+ebx*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ¡ãä¥à  ¬¨­ãá ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨭ª¨
2330
	lea ebx,[ebx+ebx*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ¡ãä¥à  ¬¨­ãá ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨭ª¨
Line 2295... Line 2331...
2295
	mov [dest_w_bytes],ebx
2331
	mov [dest_w_bytes],ebx
2296
	mov ebx,[color]
2332
	mov ebx,[color]
2297
 
2333
 
2298
	cld
2334
	cld
2299
	cmp [right_bytes],0
2335
	cmp dword[lost_bytes],0
2300
	jg .copy_1
2336
	jg .copy_1
2301
	.copy_0: ;¯à®á⮥ ª®¯¨à®¢ ­¨¥
2337
	.copy_0: ;¯à®á⮥ ª®¯¨à®¢ ­¨¥
Line 2308... Line 2344...
2308
		add edi,[dest_w_bytes]
2344
		add edi,[dest_w_bytes]
2309
		dec edx
2345
		dec edx
2310
		cmp edx,0
2346
		cmp edx,0
2311
		jg .copy_0
2347
		jg .copy_0
2312
	jmp .copy_end
2348
	jmp .copy_end
2313
	.copy_1: ;­¥ ¯à®á⮥ ª®¯¨à®¢ ­¨¥ (ª à⨭ª  ¢ë« §¨â §  ¯à ¢ãî áâ®à®­ã)
2349
	.copy_1: ;­¥ ¯à®á⮥ ª®¯¨à®¢ ­¨¥ (ª à⨭ª  ¢ë« §¨â §  «¥¢ãî ¨/¨«¨ ¯à ¢ãî áâ®à®­ã)
2314
		mov ecx,eax
2350
		mov ecx,eax
2315
		@@:
2351
		@@:
2316
			call combine_colors_2
2352
			call combine_colors_2
2317
			add edi,3
2353
			add edi,3
2318
			inc esi
2354
			inc esi
2319
			loop @b
2355
			loop @b
2320
		add edi,[dest_w_bytes]
2356
		add edi,[dest_w_bytes]
2321
		add esi,[right_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî £à ­¨æã
2357
		add esi,[lost_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ §  ¯à ¢ãî £à ­¨æã
2322
		dec edx
2358
		dec edx
2323
		cmp edx,0
2359
		cmp edx,0
2324
		jg .copy_1
2360
		jg .copy_1
Line 2325... Line 2361...
2325
 
2361