![]() |
digiKam Developer Documentation
Professional Photo Management with the Power of Open Source
|
Public Types | |
enum | CompositingOperation { PorterDuffNone , PorterDuffClear , PorterDuffSrc , PorterDuffSrcOver , PorterDuffDstOver , PorterDuffSrcIn , PorterDuffDstIn , PorterDuffSrcOut , PorterDuffDstOut , PorterDuffSrcAtop , PorterDuffDstAtop , PorterDuffXor } |
The available rules to combine src and destination color. More... | |
enum | MultiplicationFlags { NoMultiplication = 0x00 , PremultiplySrc = 0x01 , PremultiplyDst = 0x02 , DemultiplyDst = 0x04 , MultiplicationFlagsDImg = PremultiplySrc | PremultiplyDst | DemultiplyDst , MultiplicationFlagsPremultipliedColorOnDImg = PremultiplyDst | DemultiplyDst } |
Public Member Functions | |
virtual void | compose (DColor &dest, DColor &src)=0 |
Carry out the actual composition process. | |
virtual void | compose (DColor &dest, DColor &src, MultiplicationFlags multiplicationFlags) |
Compose the two colors by calling compose(dest, src). | |
Static Public Member Functions | |
static DColorComposer * | getComposer (CompositingOperation rule) |
Retrieve a DColorComposer object for one of the predefined rules. | |
For the Porter-Duff rules, the formula is component = (source * fs + destination * fd) where fs, fd according to the following table with sa = source alpha, da = destination alpha:
None fs: sa fd: 1.0-sa Clear fs: 0.0 fd: 0.0 Src fs: 1.0 fd: 0.0 Src Over fs: 1.0 fd: 1.0-sa Dst Over fs: 1.0-da fd: 1.0 Src In fs: da fd: 0.0 Dst In fs: 0.0 fd: sa Src Out fs: 1.0-da fd: 0.0 Dst Out fs: 0.0 fd: 1.0-sa
Src Atop fs: da fd: 1.0-sa Dst Atop fs: 1.0-da fd: sa Xor fs: 1.0-da fd: 1.0-sa
None is the default, classical blending mode, a "Src over" simplification: Blend non-premultiplied RGBA data "src over" a fully opaque background. Src is the painter's algorithm. All other operations require premultiplied colors. The documentation of java.awt.AlphaComposite (Java 1.5) provides a good introduction and documentation on Porter Duff.
Src and Dest are composed and the result is written to dest. No pre-/demultiplication is done by this method, use the other overloaded methods, which call this method, if you need pre- or demultiplication (you need it if any of the colors are read from or written to a DImg).
If you just pass the object to a DImg method, you do not need to call this. Call this function if you want to compose two colors. Implement this function if you create a custom DColorComposer.
The bit depth of source and destination color must be identical.
|
virtual |
Pre- and demultiplication operations are done as specified. For PorterDuff operations except PorterDuffNone, you need
|
static |
The object needs to be deleted by the caller.