Rev 1921 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1921 | Rev 2388 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | proc blend_rgb |
1 | proc xcf._.blend_rgb |
Line 2... | Line 2... | ||
2 | 2 | ||
3 | xchg al, bh |
3 | xchg al, bh |
4 | mov ah, bh |
4 | mov ah, bh |
5 | neg ax |
5 | neg ax |
Line 15... | Line 15... | ||
15 | not al |
15 | not al |
16 | div bh |
16 | div bh |
17 | @@: |
17 | @@: |
Line 18... | Line 18... | ||
18 | 18 | ||
- | 19 | mov ah, al |
|
19 | mov ah, al |
20 | |
20 | movd mm1, eax |
- | |
21 | ; pxor mm0, mm0 ; already xor'ed in composite function |
21 | movd mm1, eax |
22 | punpcklbw mm1, mm1 |
22 | punpcklbw mm1, mm1 |
23 | punpcklbw mm1, mm0 |
- | |
Line 24... | Line 23... | ||
24 | ; punpcklbw mm3, mm0 |
23 | punpcklbw mm1, mm0 |
25 | 24 | ||
26 | movq mm7, mm1 |
25 | movq mm7, mm1 |
Line 38... | Line 37... | ||
38 | 37 | ||
39 | ret |
38 | ret |
Line 40... | Line 39... | ||
40 | endp |
39 | endp |
Line 41... | Line 40... | ||
41 | 40 | ||
42 | 41 | ||
43 | proc blend_gray |
42 | proc xcf._.blend_gray |
44 | 43 | ||
Line 57... | Line 56... | ||
57 | not al |
56 | not al |
58 | div bh |
57 | div bh |
59 | @@: |
58 | @@: |
Line 60... | Line 59... | ||
60 | 59 | ||
- | 60 | mov ah, al |
|
61 | mov ah, al |
61 | |
62 | movd mm1, eax |
- | |
63 | ; pxor mm0, mm0 ; already xor'ed in composite function |
62 | movd mm1, eax |
64 | punpcklbw mm1, mm1 |
63 | punpcklbw mm1, mm1 |
65 | punpcklbw mm1, mm0 |
- | |
Line 66... | Line 64... | ||
66 | ; punpcklbw mm3, mm0 |
64 | punpcklbw mm1, mm0 |
67 | 65 | ||
68 | movq mm7, mm1 |
66 | movq mm7, mm1 |
Line 80... | Line 78... | ||
80 | 78 | ||
81 | ret |
79 | ret |
Line 82... | Line 80... | ||
82 | endp |
80 | endp |
83 | 81 | ||
84 | 82 | ||
85 | proc merge_32 _copy_width, _copy_height, _img_total_bpl, _bottom_total_bpl |
83 | proc xcf._.merge_32 _copy_width, _copy_height, _img_total_bpl, _bottom_total_bpl |
86 | .rgb_line: |
84 | .rgb_line: |
87 | mov ecx, [_copy_width] |
85 | mov ecx, [_copy_width] |
Line 94... | Line 92... | ||
94 | shr eax, 24 |
92 | shr eax, 24 |
95 | shr ebx, 16 |
93 | shr ebx, 16 |
96 | cmp al, bh |
94 | cmp al, bh |
97 | jna @f |
95 | jna @f |
98 | mov al, bh |
96 | mov al, bh |
- | 97 | @@: |
|
99 | @@: pxor mm0, mm0 |
98 | pxor mm0, mm0 |
100 | call edx |
99 | call edx |
101 | call blend_rgb |
100 | call xcf._.blend_rgb |
102 | stosd |
101 | stosd |
103 | dec ecx |
102 | dec ecx |
104 | jnz .rgb_pixel |
103 | jnz .rgb_pixel |
105 | add esi, [_img_total_bpl] |
104 | add esi, [_img_total_bpl] |
106 | add edi, [_bottom_total_bpl] |
105 | add edi, [_bottom_total_bpl] |
Line 109... | Line 108... | ||
109 | emms |
108 | emms |
110 | ret |
109 | ret |
111 | endp |
110 | endp |
Line 112... | Line 111... | ||
112 | 111 | ||
113 | 112 | ||
114 | proc merge_8a _copy_width, _copy_height, _img_total_bpl, _bottom_total_bpl |
113 | proc xcf._.merge_8a _copy_width, _copy_height, _img_total_bpl, _bottom_total_bpl |
115 | .gray_line: |
114 | .gray_line: |
116 | mov ecx, [_copy_width] |
115 | mov ecx, [_copy_width] |
117 | .gray_pixel: |
116 | .gray_pixel: |
Line 121... | Line 120... | ||
121 | movd mm3, eax |
120 | movd mm3, eax |
122 | shr eax, 8 |
121 | shr eax, 8 |
123 | cmp al, bh |
122 | cmp al, bh |
124 | jna @f |
123 | jna @f |
125 | mov al, bh |
124 | mov al, bh |
- | 125 | @@: |
|
126 | @@: pxor mm0, mm0 |
126 | pxor mm0, mm0 |
127 | call edx |
127 | call edx |
128 | call blend_gray |
128 | call xcf._.blend_gray |
129 | stosw |
129 | stosw |
130 | dec ecx |
130 | dec ecx |
131 | jnz .gray_pixel |
131 | jnz .gray_pixel |
132 | add esi, [_img_total_bpl] |
132 | add esi, [_img_total_bpl] |
133 | add edi, [_bottom_total_bpl] |
133 | add edi, [_bottom_total_bpl] |
Line 136... | Line 136... | ||
136 | emms |
136 | emms |
137 | ret |
137 | ret |
138 | endp |
138 | endp |
Line 139... | Line 139... | ||
139 | 139 | ||
Line -... | Line 140... | ||
- | 140 | ||
140 | 141 | proc xcf._.composite_rgb_00 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
|
- | 142 | ||
141 | proc composite_rgb_00 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
143 | .line: |
142 | 144 | mov ecx, [_copy_width] |
|
143 | .line: mov ecx, [_copy_width] |
145 | .pixel: |
144 | .pixel: mov ebx, [edi] |
146 | mov ebx, [edi] |
Line 145... | Line 147... | ||
145 | lodsd |
147 | lodsd |
Line 164... | Line 166... | ||
164 | not al |
166 | not al |
165 | div bh |
167 | div bh |
166 | @@: |
168 | @@: |
Line 167... | Line 169... | ||
167 | 169 | ||
- | 170 | mov ah, al |
|
168 | mov ah, al |
171 | |
169 | movd mm1, eax |
172 | movd mm1, eax |
170 | pxor mm0, mm0 |
173 | pxor mm0, mm0 |
171 | punpcklbw mm1, mm1 |
174 | punpcklbw mm1, mm1 |
172 | punpcklbw mm1, mm0 |
175 | punpcklbw mm1, mm0 |
Line 192... | Line 195... | ||
192 | 195 | ||
193 | ret |
196 | ret |
Line 194... | Line 197... | ||
194 | endp |
197 | endp |
Line -... | Line 198... | ||
- | 198 | ||
195 | 199 | ||
- | 200 | proc xcf._.composite_gray_00 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
|
196 | 201 | ||
197 | proc composite_gray_00 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
202 | .line: |
198 | 203 | mov ecx, [_copy_width] |
|
199 | .line: mov ecx, [_copy_width] |
204 | .pixel: |
Line 200... | Line 205... | ||
200 | .pixel: mov bx, [edi] |
205 | mov bx, [edi] |
Line 219... | Line 224... | ||
219 | not al |
224 | not al |
220 | div bh |
225 | div bh |
221 | @@: |
226 | @@: |
Line 222... | Line 227... | ||
222 | 227 | ||
- | 228 | mov ah, al |
|
223 | mov ah, al |
229 | |
224 | movd mm1, eax |
230 | movd mm1, eax |
225 | pxor mm0, mm0 |
231 | pxor mm0, mm0 |
226 | punpcklbw mm1, mm1 |
232 | punpcklbw mm1, mm1 |
227 | punpcklbw mm1, mm0 |
233 | punpcklbw mm1, mm0 |
Line 247... | Line 253... | ||
247 | 253 | ||
248 | ret |
254 | ret |
Line 249... | Line 255... | ||
249 | endp |
255 | endp |
Line -... | Line 256... | ||
- | 256 | ||
250 | 257 | ||
- | 258 | proc xcf._.composite_indexed_00 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
|
251 | 259 | ||
252 | proc composite_indexed_00 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
260 | .line: |
Line 253... | Line 261... | ||
253 | 261 | mov ecx, [_copy_width] |
|
254 | .line: mov ecx, [_copy_width] |
262 | .pixel: |
255 | .pixel: mov bx, [edi] |
263 | mov bx, [edi] |
256 | lodsw |
264 | lodsw |
- | 265 | ||
257 | 266 | or ah, 0x7f |
|
Line 258... | Line 267... | ||
258 | or ah, 0x7f |
267 | test ah, 0x80 |
259 | test ah, 0x80 |
268 | jnz @f |
260 | jnz @f |
269 | mov ax, bx |
261 | mov ax, bx |
270 | @@: |
Line 269... | Line 278... | ||
269 | jnz .line |
278 | jnz .line |
270 | ret |
279 | ret |
271 | endp |
280 | endp |
Line 272... | Line 281... | ||
272 | 281 | ||
273 | 282 | ||
Line 274... | Line 283... | ||
274 | proc composite_rgb_01 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
283 | proc xcf._.composite_rgb_01 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
275 | pushad |
284 | pushad |
276 | 285 | ||
277 | pxor mm4, mm4 |
286 | pxor mm4, mm4 |
Line -... | Line 287... | ||
- | 287 | movd mm4, [xcf._.random_b] |
|
278 | movd mm4, [random_b] |
288 | movd mm1, [xcf._.random_a] |
- | 289 | movd mm2, [xcf._.random_c] |
|
279 | movd mm1, [random_a] |
290 | |
280 | movd mm2, [random_c] |
291 | .line: |
Line 281... | Line 292... | ||
281 | 292 | mov ecx, [_copy_width] |
|
282 | .line: mov ecx, [_copy_width] |
293 | .pixel: |
283 | .pixel: mov ebx, [edi] |
294 | mov ebx, [edi] |
Line 297... | Line 308... | ||
297 | cmp dl, al |
308 | cmp dl, al |
298 | ja @f |
309 | ja @f |
299 | ror eax, 8 |
310 | ror eax, 8 |
300 | or eax, 0xff000000 |
311 | or eax, 0xff000000 |
301 | jmp .done |
312 | jmp .done |
- | 313 | @@: |
|
302 | @@: mov eax, ebx |
314 | mov eax, ebx |
- | 315 | .done: |
|
303 | .done: stosd |
316 | stosd |
304 | dec ecx |
317 | dec ecx |
305 | jnz .pixel |
318 | jnz .pixel |
306 | add esi, [_img_total_bpl] |
319 | add esi, [_img_total_bpl] |
307 | add edi, [_bottom_total_bpl] |
320 | add edi, [_bottom_total_bpl] |
308 | dec [_copy_height] |
321 | dec [_copy_height] |
309 | jnz .line |
322 | jnz .line |
Line -... | Line 323... | ||
- | 323 | ||
310 | 324 | .quit: |
|
311 | .quit: popad |
325 | popad |
312 | ret |
326 | ret |
Line 313... | Line 327... | ||
313 | endp |
327 | endp |
314 | 328 | ||
Line 315... | Line 329... | ||
315 | 329 | ||
316 | proc composite_gray_01 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
330 | proc xcf._.composite_gray_01 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
317 | pushad |
331 | pushad |
318 | 332 | ||
Line -... | Line 333... | ||
- | 333 | pxor mm4, mm4 |
|
319 | pxor mm4, mm4 |
334 | movd mm4, [xcf._.random_b] |
- | 335 | movd mm1, [xcf._.random_a] |
|
320 | movd mm4, [random_b] |
336 | movd mm2, [xcf._.random_c] |
321 | movd mm1, [random_a] |
337 | |
Line 322... | Line 338... | ||
322 | movd mm2, [random_c] |
338 | .line: |
323 | 339 | mov ecx, [_copy_width] |
|
324 | .line: mov ecx, [_copy_width] |
340 | .pixel: |
Line 337... | Line 353... | ||
337 | shr edx, 17 |
353 | shr edx, 17 |
338 | cmp dl, ah |
354 | cmp dl, ah |
339 | ja @f |
355 | ja @f |
340 | or ax, 0xff00 |
356 | or ax, 0xff00 |
341 | jmp .done |
357 | jmp .done |
- | 358 | @@: |
|
342 | @@: mov eax, ebx |
359 | mov eax, ebx |
- | 360 | .done: |
|
343 | .done: stosw |
361 | stosw |
344 | dec ecx |
362 | dec ecx |
345 | jnz .pixel |
363 | jnz .pixel |
346 | add esi, [_img_total_bpl] |
364 | add esi, [_img_total_bpl] |
347 | add edi, [_bottom_total_bpl] |
365 | add edi, [_bottom_total_bpl] |
348 | dec [_copy_height] |
366 | dec [_copy_height] |
349 | jnz .line |
367 | jnz .line |
Line -... | Line 368... | ||
- | 368 | ||
350 | 369 | .quit: |
|
351 | .quit: popad |
370 | popad |
352 | ret |
371 | ret |
Line 353... | Line -... | ||
353 | endp |
- | |
354 | - | ||
355 | - | ||
356 | ;proc composite_indexed_01 _copy_width, _copy_height, _bottom_total_bpl, _img_total_bpl |
- | |
357 | ; pushad |
- | |
358 | ; |
- | |
359 | ; pxor mm4, mm4 |
- | |
360 | ; movd mm4, [random_b] |
- | |
361 | ; movd mm1, [random_a] |
- | |
362 | ; movd mm2, [random_c] |
- | |
363 | ; |
- | |
364 | ;.line: mov ecx, [_copy_width] |
- | |
365 | ;.pixel: mov ebx, [edi] |
- | |
366 | ; lodsw |
- | |
367 | ; |
- | |
368 | ; movq mm0, mm4 |
- | |
369 | ; pmuludq mm0, mm1 |
- | |
370 | ; paddq mm0, mm2 |
- | |
371 | ; movd edx, mm0 |
- | |
372 | ; movd mm4, edx |
- | |
373 | ; pxor mm0, mm0 |
- | |
374 | ; |
- | |
375 | ; test ah, ah |
- | |
376 | ; jz @f |
- | |
377 | ; shr edx, 17 |
- | |
378 | ; cmp dl, ah |
- | |
379 | ; ja @f |
- | |
380 | ; or ax, 0xff00 |
- | |
381 | ; jmp .done |
- | |
382 | ;@@: mov eax, ebx |
- | |
383 | ;.done: stosw |
- | |
384 | ; dec ecx |
- | |
385 | ; jnz .pixel |
- | |
386 | ; add esi, [_img_total_bpl] |
- | |
387 | ; add edi, [_bottom_total_bpl] |
- | |
388 | ; dec [_copy_height] |
- | |
389 | ; jnz .line |
- | |
390 | ; |
- | |
391 | ;.quit: popad |
- | |
392 | ; ret |
- | |
393 | ;endp |
372 | endp |
Line 394... | Line 373... | ||
394 | 373 | ||
395 | 374 | ||
396 | proc composite_rgb_03 ; Multiply |
375 | proc xcf._.composite_rgb_03 ; Multiply |
397 | 376 | ||
Line 398... | Line 377... | ||
398 | punpcklbw mm2, mm0 |
377 | punpcklbw mm2, mm0 |
399 | punpcklbw mm3, mm0 |
378 | punpcklbw mm3, mm0 |
Line 400... | Line 379... | ||
400 | pmullw mm3, mm2 |
379 | pmullw mm3, mm2 |
Line 401... | Line 380... | ||
401 | psrlw mm3, 8 |
380 | psrlw mm3, 8 |
402 | 381 | ||
403 | ret |
382 | ret |
404 | endp |
383 | endp |
405 | 384 | ||
406 | 385 | ||
407 | proc composite_rgb_04 ; Screen |
386 | proc xcf._.composite_rgb_04 ; Screen |
408 | 387 | ||
409 | punpcklbw mm2, mm0 |
- | |
410 | punpcklbw mm3, mm0 |
388 | punpcklbw mm2, mm0 |
411 | movq mm4, [mmx_00ff] |
- | |
412 | movq mm5, mm4 |
389 | punpcklbw mm3, mm0 |
413 | psubw mm4, mm2 |
390 | movq mm5, [xcf._.mmx_00ff] |
Line 414... | Line 391... | ||
414 | psubw mm5, mm3 |
391 | movq mm4, mm5 |
Line 415... | Line 392... | ||
415 | pmullw mm4, mm5 |
392 | psubw mm4, mm2 |
416 | psrlw mm4, 8 |
393 | psubw mm3, mm5 |
417 | movq mm3, [mmx_00ff] |
394 | pmullw mm3, mm4 |
418 | psubw mm3, mm4 |
395 | psrlw mm3, 8 |
419 | 396 | paddw mm3, mm5 |
|
420 | ret |
397 | ret |
421 | endp |
398 | endp |
422 | 399 | ||
Line 435... | Line 412... | ||
435 | 412 | ||
436 | ret |
413 | ret |
Line 437... | Line 414... | ||
437 | endp |
414 | endp |
Line 438... | Line 415... | ||
438 | 415 | ||
439 | 416 | ||
440 | proc composite_rgb_06 ; Difference |
417 | proc xcf._.composite_rgb_06 ; Difference |
441 | 418 | ||
Line 448... | Line 425... | ||
448 | 425 | ||
449 | ret |
426 | ret |
Line 450... | Line 427... | ||
450 | endp |
427 | endp |
Line 451... | Line 428... | ||
451 | 428 | ||
452 | 429 | ||
453 | proc composite_rgb_07 ; Addition |
430 | proc xcf._.composite_rgb_07 ; Addition |
Line 454... | Line 431... | ||
454 | 431 | ||
455 | paddusb mm3, mm2 |
432 | paddusb mm3, mm2 |
Line 456... | Line 433... | ||
456 | punpcklbw mm2, mm0 |
433 | punpcklbw mm2, mm0 |
Line 457... | Line 434... | ||
457 | punpcklbw mm3, mm0 |
434 | punpcklbw mm3, mm0 |
458 | 435 | ||
459 | ret |
436 | ret |
460 | endp |
437 | endp |
Line 470... | Line 447... | ||
470 | 447 | ||
471 | ret |
448 | ret |
Line 472... | Line 449... | ||
472 | endp |
449 | endp |
Line 473... | Line 450... | ||
473 | 450 | ||
474 | 451 | ||
475 | proc composite_rgb_09 ; Darken Only |
452 | proc xcf._.composite_rgb_09 ; Darken Only |
Line 476... | Line 453... | ||
476 | 453 | ||
477 | pminub mm3, mm2 |
454 | pminub mm3, mm2 |
Line 478... | Line 455... | ||
478 | punpcklbw mm2, mm0 |
455 | punpcklbw mm2, mm0 |
Line 479... | Line 456... | ||
479 | punpcklbw mm3, mm0 |
456 | punpcklbw mm3, mm0 |
480 | 457 | ||
481 | ret |
458 | ret |
Line 482... | Line 459... | ||
482 | endp |
459 | endp |
483 | 460 | ||
Line 484... | Line 461... | ||
484 | 461 | ||
485 | proc composite_rgb_10 ; Lighten Only |
462 | proc xcf._.composite_rgb_10 ; Lighten Only |
Line 486... | Line 463... | ||
486 | 463 | ||
487 | pmaxub mm3, mm2 |
464 | pmaxub mm3, mm2 |
Line 488... | Line 465... | ||
488 | punpcklbw mm2, mm0 |
465 | punpcklbw mm2, mm0 |
489 | punpcklbw mm3, mm0 |
466 | punpcklbw mm3, mm0 |
490 | 467 | ||
491 | ret |
468 | ret |
Line 492... | Line 469... | ||
492 | endp |
469 | endp |
493 | 470 | ||
494 | 471 | ||
Line 511... | Line 488... | ||
511 | rol eax, 8 |
488 | rol eax, 8 |
512 | rol ebx, 8 |
489 | rol ebx, 8 |
513 | @@: |
490 | @@: |
514 | mov ax, bx |
491 | mov ax, bx |
Line 515... | Line 492... | ||
515 | 492 | ||
516 | call pixel_hsv2rgb |
- | |
Line 517... | Line 493... | ||
517 | 493 | call xcf._.hsv2rgb |
|
Line 518... | Line 494... | ||
518 | 494 | ||
519 | movd mm3, eax |
495 | movd mm3, eax |
Line 525... | Line 501... | ||
525 | pop edx ecx ebx eax |
501 | pop edx ecx ebx eax |
526 | ret |
502 | ret |
527 | endp |
503 | endp |
Line 528... | Line 504... | ||
528 | 504 | ||
529 | 505 | ||
Line 530... | Line 506... | ||
530 | proc composite_rgb_12 ; Saturation (S of HSV) |
506 | proc xcf._.composite_rgb_12 ; Saturation (S of HSV) |
531 | push eax ebx ecx edx |
507 | push eax ebx ecx edx |
Line 532... | Line 508... | ||
532 | 508 | ||
533 | movd eax, mm3 |
509 | movd eax, mm3 |
534 | movd ebx, mm2 |
510 | movd ebx, mm2 |
535 | 511 | ||
Line 536... | Line 512... | ||
536 | call pixel_rgb2hsv |
512 | call xcf._.rgb2hsv |
537 | xchg eax, ebx |
513 | xchg eax, ebx |
538 | call pixel_rgb2hsv |
514 | call xcf._.rgb2hsv |
539 | xchg eax, ebx |
515 | xchg eax, ebx |
540 | 516 | ||
541 | ror eax, 8 |
517 | ror eax, 8 |
Line 542... | Line 518... | ||
542 | ror ebx, 8 |
518 | ror ebx, 8 |
Line 543... | Line 519... | ||
543 | mov ah, bh |
519 | mov ah, bh |
Line 544... | Line 520... | ||
544 | rol eax, 8 |
520 | rol eax, 8 |
Line 557... | Line 533... | ||
557 | pop edx ecx ebx eax |
533 | pop edx ecx ebx eax |
558 | ret |
534 | ret |
559 | endp |
535 | endp |
Line 560... | Line 536... | ||
560 | 536 | ||
561 | 537 | ||
Line 562... | Line 538... | ||
562 | proc composite_rgb_13 ; Color (H and S of HSL) |
538 | proc xcf._.composite_rgb_13 ; Color (H and S of HSL) |
563 | push eax ebx ecx edx |
539 | push eax ebx ecx edx |
Line 564... | Line 540... | ||
564 | 540 | ||
565 | movd eax, mm3 |
541 | movd eax, mm3 |
566 | movd ebx, mm2 |
542 | movd ebx, mm2 |
567 | 543 | ||
Line 568... | Line 544... | ||
568 | call pixel_rgb2hsl |
544 | call xcf._.rgb2hsl |
Line 569... | Line 545... | ||
569 | xchg eax, ebx |
545 | xchg eax, ebx |
Line 570... | Line 546... | ||
570 | call pixel_rgb2hsl |
546 | call xcf._.rgb2hsl |
Line 571... | Line 547... | ||
571 | xchg eax, ebx |
547 | xchg eax, ebx |
Line 584... | Line 560... | ||
584 | pop edx ecx ebx eax |
560 | pop edx ecx ebx eax |
585 | ret |
561 | ret |
586 | endp |
562 | endp |
Line 587... | Line 563... | ||
587 | 563 | ||
588 | 564 | ||
Line 589... | Line 565... | ||
589 | proc composite_rgb_14 ; Value (V of HSV) |
565 | proc xcf._.composite_rgb_14 ; Value (V of HSV) |
590 | push eax ebx ecx edx |
566 | push eax ebx ecx edx |
Line 591... | Line 567... | ||
591 | 567 | ||
592 | movd eax, mm3 |
568 | movd eax, mm3 |
593 | movd ebx, mm2 |
569 | movd ebx, mm2 |
594 | 570 | ||
Line 595... | Line 571... | ||
595 | call pixel_rgb2hsv |
571 | call xcf._.rgb2hsv |
596 | xchg eax, ebx |
572 | xchg eax, ebx |
597 | call pixel_rgb2hsv |
573 | call xcf._.rgb2hsv |
598 | xchg eax, ebx |
574 | xchg eax, ebx |
599 | 575 | ||
Line 600... | Line 576... | ||
600 | ror eax, 8 |
576 | ror eax, 8 |
Line 601... | Line 577... | ||
601 | ror ebx, 8 |
577 | ror ebx, 8 |
Line 602... | Line 578... | ||
602 | mov ax, bx |
578 | mov ax, bx |
Line 615... | Line 591... | ||
615 | pop edx ecx ebx eax |
591 | pop edx ecx ebx eax |
616 | ret |
592 | ret |
617 | endp |
593 | endp |
Line 618... | Line 594... | ||
618 | 594 | ||
619 | 595 | ||
Line 620... | Line 596... | ||
620 | proc composite_rgb_15 ; Divide |
596 | proc xcf._.composite_rgb_15 ; Divide |
621 | push eax ebx ecx |
597 | push eax ebx ecx |
Line 628... | Line 604... | ||
628 | 604 | ||
Line 629... | Line 605... | ||
629 | xchg eax, ebx |
605 | xchg eax, ebx |
Line -... | Line 606... | ||
- | 606 | ||
630 | 607 | mov ecx, 3 |
|
631 | mov ecx, 3 |
608 | |
632 | 609 | .color: |
|
633 | .color: rol eax, 8 |
610 | rol eax, 8 |
634 | rol ebx, 8 |
611 | rol ebx, 8 |
635 | shl ax, 8 |
612 | shl ax, 8 |
636 | test bl, bl |
613 | test bl, bl |
637 | jz .clamp1 |
614 | jz .clamp1 |
638 | cmp ah, bl |
615 | cmp ah, bl |
- | 616 | jae .clamp2 |
|
639 | jae .clamp2 |
617 | div bl |
640 | div bl |
618 | jmp .done |
641 | jmp .done |
619 | .clamp1: |
642 | .clamp1:mov al, 0xff |
620 | mov al, 0xff |
643 | test ah, ah |
621 | test ah, ah |
644 | jnz @f |
- | |
645 | not al |
622 | jnz @f |
- | 623 | not al |
|
- | 624 | @@: |
|
- | 625 | jmp .done |
|
- | 626 | .clamp2: |
|
646 | @@: jmp .done |
627 | mov al, 0xff |
647 | .clamp2:mov al, 0xff |
628 | jmp .done |
Line 648... | Line 629... | ||
648 | jmp .done |
629 | .done: |
649 | .done: mov ah, al |
630 | mov ah, al |
Line 658... | Line 639... | ||
658 | pop ecx ebx eax |
639 | pop ecx ebx eax |
659 | ret |
640 | ret |
660 | endp |
641 | endp |
Line 661... | Line 642... | ||
661 | 642 | ||
662 | 643 | ||
Line 663... | Line 644... | ||
663 | proc composite_rgb_16 ; Dodge |
644 | proc xcf._.composite_rgb_16 ; Dodge |
664 | push eax ebx ecx |
645 | push eax ebx ecx |
Line 671... | Line 652... | ||
671 | 652 | ||
Line 672... | Line 653... | ||
672 | xchg eax, ebx |
653 | xchg eax, ebx |
Line -... | Line 654... | ||
- | 654 | ||
673 | 655 | mov ecx, 3 |
|
674 | mov ecx, 3 |
656 | |
675 | 657 | .color: |
|
676 | .color: rol eax, 8 |
658 | rol eax, 8 |
677 | rol ebx, 8 |
659 | rol ebx, 8 |
678 | shl ax, 8 |
660 | shl ax, 8 |
679 | neg bl |
661 | neg bl |
680 | add bl, 0xff |
662 | add bl, 0xff |
681 | test bl, bl |
663 | test bl, bl |
682 | jz .clamp1 |
664 | jz .clamp1 |
683 | cmp ah, bl |
665 | cmp ah, bl |
- | 666 | jae .clamp2 |
|
684 | jae .clamp2 |
667 | div bl |
685 | div bl |
668 | jmp .done |
686 | jmp .done |
669 | .clamp1: |
687 | .clamp1:mov al, 0xff |
670 | mov al, 0xff |
688 | test ah, ah |
671 | test ah, ah |
689 | jnz @f |
- | |
690 | not al |
672 | jnz @f |
- | 673 | not al |
|
- | 674 | @@: |
|
- | 675 | jmp .done |
|
- | 676 | .clamp2: |
|
691 | @@: jmp .done |
677 | mov al, 0xff |
692 | .clamp2:mov al, 0xff |
678 | jmp .done |
Line 693... | Line 679... | ||
693 | jmp .done |
679 | .done: |
694 | .done: mov ah, al |
680 | mov ah, al |
Line 703... | Line 689... | ||
703 | pop ecx ebx eax |
689 | pop ecx ebx eax |
704 | ret |
690 | ret |
705 | endp |
691 | endp |
Line 706... | Line 692... | ||
706 | 692 | ||
707 | 693 | ||
Line 708... | Line 694... | ||
708 | proc composite_rgb_17 ; Burn |
694 | proc xcf._.composite_rgb_17 ; Burn |
709 | push eax ebx ecx |
695 | push eax ebx ecx |
Line 716... | Line 702... | ||
716 | 702 | ||
Line 717... | Line 703... | ||
717 | xchg eax, ebx |
703 | xchg eax, ebx |
Line -... | Line 704... | ||
- | 704 | ||
718 | 705 | mov ecx, 3 |
|
719 | mov ecx, 3 |
706 | |
720 | 707 | .color: |
|
721 | .color: rol eax, 8 |
708 | rol eax, 8 |
722 | rol ebx, 8 |
709 | rol ebx, 8 |
723 | shl ax, 8 |
710 | shl ax, 8 |
724 | neg ah |
711 | neg ah |
725 | add ah, 0xff |
712 | add ah, 0xff |
726 | test bl, bl |
713 | test bl, bl |
727 | jz .clamp1 |
714 | jz .clamp1 |
728 | cmp ah, bl |
715 | cmp ah, bl |
- | 716 | jae .clamp2 |
|
729 | jae .clamp2 |
717 | div bl |
730 | div bl |
718 | jmp .done |
731 | jmp .done |
719 | .clamp1: |
732 | .clamp1:mov al, 0xff |
720 | mov al, 0xff |
- | 721 | test ah, ah |
|
733 | test ah, ah |
722 | jnz @f |
- | 723 | not al |
|
734 | jnz @f |
724 | @@: |
735 | not al |
725 | jmp .done |
- | 726 | .clamp2: |
|
736 | @@: jmp .done |
727 | mov al, 0xff |
737 | .clamp2:mov al, 0xff |
728 | jmp .done |
738 | jmp .done |
729 | .done: |
739 | .done: mov ah, al |
730 | mov ah, al |
Line 740... | Line 731... | ||
740 | neg ah |
731 | neg ah |
Line 750... | Line 741... | ||
750 | pop ecx ebx eax |
741 | pop ecx ebx eax |
751 | ret |
742 | ret |
752 | endp |
743 | endp |
Line 753... | Line 744... | ||
753 | 744 | ||
754 | 745 | ||
Line 755... | Line 746... | ||
755 | proc composite_rgb_18 ; Hard Light |
746 | proc xcf._.composite_rgb_18 ; Hard Light |
756 | push eax ebx ecx |
747 | push eax ebx ecx |
Line 757... | Line 748... | ||
757 | 748 | ||
758 | movd eax, mm3 |
749 | movd eax, mm3 |
Line 759... | Line 750... | ||
759 | movd ebx, mm2 |
750 | movd ebx, mm2 |
Line -... | Line 751... | ||
- | 751 | ||
760 | 752 | rol eax, 8 |
|
761 | rol eax, 8 |
753 | rol ebx, 8 |
762 | rol ebx, 8 |
754 | |
763 | 755 | mov ecx, 3 |
|
764 | mov ecx, 3 |
756 | |
765 | 757 | .color: |
|
Line 777... | Line 769... | ||
777 | add ah, 0xff |
769 | add ah, 0xff |
778 | jmp .done |
770 | jmp .done |
779 | .part1: |
771 | .part1: |
780 | mul bl |
772 | mul bl |
781 | shl ax, 1 |
773 | shl ax, 1 |
- | 774 | .done: |
|
782 | .done: loop .color |
775 | loop .color |
Line 783... | Line 776... | ||
783 | 776 | ||
784 | ror eax, 8 |
777 | ror eax, 8 |
Line 785... | Line 778... | ||
785 | movd mm3, eax |
778 | movd mm3, eax |
Line 790... | Line 783... | ||
790 | pop ecx ebx eax |
783 | pop ecx ebx eax |
791 | ret |
784 | ret |
792 | endp |
785 | endp |
Line 793... | Line 786... | ||
793 | 786 | ||
Line 794... | Line -... | ||
794 | - | ||
795 | proc composite_rgb_20 ; Grain Extract |
787 | |
796 | 788 | proc xcf._.composite_rgb_20 ; Grain Extract |
|
797 | movq mm4, [mmx_0080] |
789 | |
798 | punpcklbw mm2, mm0 |
790 | punpcklbw mm2, mm0 |
799 | punpcklbw mm3, mm0 |
791 | punpcklbw mm3, mm0 |
800 | movq mm5, mm2 |
792 | movq mm4, mm2 |
801 | psubw mm3, mm4 |
793 | psubw mm3, [xcf._.mmx_0080] |
802 | psubsw mm5, mm3 |
794 | psubw mm4, mm3 |
803 | packuswb mm5, mm0 |
- | |
804 | punpcklbw mm5, mm0 |
795 | movq mm3, mm4 |
805 | movq mm3, mm5 |
796 | packuswb mm3, mm0 |
Line 806... | Line 797... | ||
806 | 797 | punpcklbw mm3, mm0 |
|
Line 807... | Line -... | ||
807 | ret |
- | |
808 | endp |
798 | ret |
809 | 799 | endp |
|
810 | - | ||
811 | proc composite_rgb_21 ; Grain Merge |
800 | |
812 | 801 | ||
813 | movq mm4, [mmx_0080] |
802 | proc xcf._.composite_rgb_21 ; Grain Merge |
814 | punpcklbw mm2, mm0 |
803 | |
815 | punpcklbw mm3, mm0 |
- | |
816 | movq mm5, mm2 |
804 | punpcklbw mm2, mm0 |
817 | psubw mm5, mm4 |
805 | punpcklbw mm3, mm0 |
Line 818... | Line -... | ||
818 | paddsw mm3, mm5 |
- | |
819 | packuswb mm3, mm0 |
- | |
820 | punpcklbw mm3, mm0 |
- | |
821 | 806 | paddw mm3, mm2 |
|
- | 807 | psubusw mm3, [xcf._.mmx_0080] |
|
- | 808 | packuswb mm3, mm0 |
|
- | 809 | punpcklbw mm3, mm0 |
|
- | 810 | ret |
|
- | 811 | endp |
|
- | 812 | ||
- | 813 | ||
- | 814 | ; starting numbers for pseudo-random number generator |