@teh_KaiN,
post #2
Sięgnąłem po Asm-One i zagłębiłem się w implementację funkcji BltMaskBitMapRastPort().
Okazuje się, że ta funkcja robi 3 blity BltBitMap(), które, jak obliczyłem, sumują się do operacji wycinania
cookie-cut (0xca).
Pierwszy i ostatni
minterm: 0x90.
Środkowy
minterm to ten podany jako argument funkcji.
W pierwsze i trzeciej operacji źródłem jest obrazek, a celem - tło.
W drugiej operacji używa jako źródło bitmapy, której każdy bitplan to maska, a jako cel - tło.
Czyli problem rozwiązany. W tak ogólnej postaci trzeba sięgnąć po więcej blitów.
Jednakże ja w swoim silniku będę stosował sytuację bardziej szczególną i blitował tylko raz.
Ale w artykule oczywiście opiszę tą metodę.
@Teh_KaiN
Kiedyś zastanawiałeś się dlaczego argument
minterm funkcji BltBitMap() to 0xc0, a nie 0xca. Zobacz opis tej funkcji to dowiesz się dlaczego tak jest.
Otóż ten
minterm mówi co ma funkcja robić, gdy kanał A jest niezerowy (czyli w obrębie prostokąta, który obejmuje operacja).