DD::Image::DeepAccumPixelOp Class Reference

Inherits DD::Image::DeepPixelOp.

List of all members.

Public Member Functions

ChannelSet channels () const
 DeepAccumPixelOp (Node *node)
bool doDeepEngine (DD::Image::Box box, const ChannelSet &channels, DeepOutputPlane &plane)
virtual void processSample (int y, int x, const DD::Image::DeepPixel &deepPixel, size_t sampleNo, const DD::Image::ChannelSet &channels, DeepOutPixel &output) const
virtual void processPixel (const Pixel &in, const DD::Image::ChannelSet &channels, Pixel &output) const =0
void knobs (Knob_Callback f)
void in_channels (int, ChannelSet &channels) const

Protected Attributes

bool _deoverlap

Detailed Description

Helper class for Deep operators. The DeepAccumPixelOp is intended for operators that want to work on the accumlated deep samples rather than the individual samples like in DeepPixelOp.

This is useful for operators such as a color correct which should not act on individual samples but rather act on the accumulated result and then spread that result over the deep samples.

processPixel gets passed the current accumulated sample with the accumulated color unpremultiplied

the result of the operation should be put into output ( unpremultipied )

The results of these operations will then be unaccumulated and put back into the deep samples.

If the alpha was affected then all the deep samples will be reweighted by the new accumulated alpha


Member Function Documentation

void DeepAccumPixelOp::knobs ( Knob_Callback  f) [virtual]

Adds a channel selector knob, these channels will be processed by processSample

Note that this *doesn't* call the DeepPixelOp base class knobs method.

In a derived class if you want access to the DeepPixelOp knobs such as mix and limitz as well as the channel selector call DeepPixelOp::knobs as well as DeepAccumPixelOp::knobs.

Reimplemented from DD::Image::Op.

void DeepAccumPixelOp::in_channels ( int  i,
ChannelSet channels 
) const

always requests alpha and the deep channels