Public Member Functions | |
void | append (DD::Image::Hash &hash) const |
ChannelSet (const ChannelSet &source) | |
ChannelSet (ChannelSetInit v) | |
ChannelSet (Channel v) | |
ChannelSet (const Channel *array, int n) | |
const ChannelSet & | operator= (const ChannelSet &source) |
const ChannelSet & | operator= (ChannelSetInit source) |
const ChannelSet & | operator= (Channel z) |
void | swap (ChannelSet &x) |
void | clear () |
operator bool () const | |
bool | empty () const |
bool | all () const |
bool | operator== (const ChannelSet &source) const |
bool | operator!= (const ChannelSet &source) const |
bool | operator< (const ChannelSet &source) const |
bool | operator== (ChannelSetInit v) const |
bool | operator!= (ChannelSetInit v) const |
bool | operator== (Channel z) const |
bool | operator!= (Channel z) const |
void | operator+= (const ChannelSet &source) |
void | operator+= (ChannelSetInit source) |
void | operator+= (Channel z) |
void | insert (Channel z) |
void | insert (const Channel *array, int n) |
void | operator-= (const ChannelSet &source) |
void | operator-= (ChannelSetInit source) |
void | operator-= (Channel z) |
void | erase (Channel z) |
void | erase (const Channel *array, int n) |
void | operator&= (const ChannelSet &source) |
void | operator&= (ChannelSetInit source) |
void | operator&= (Channel z) |
template<class Type > | |
ChannelSet | operator+ (Type z) const |
template<class Type > | |
ChannelSet | operator- (Type z) const |
template<class Type > | |
ChannelSet | intersection (Type z) const |
return the intersection of this ChannelSet with another as a ChannelSet | |
bool | operator& (const ChannelSet &c) const |
bool | operator& (ChannelSetInit c) const |
bool | operator& (Channel z) const |
unsigned | count (Channel z) const |
ChannelSetInit | bitwiseAnd (ChannelSetInit lOther) |
bool | contains (const ChannelSet &source) const |
bool | contains (ChannelSetInit source) const |
bool | contains (Channel z) const |
void | addBrothers (Channel, unsigned n) |
unsigned | size () const |
Channel | first () const |
Channel | next (Channel k) const |
Channel | last () const |
Channel | previous (Channel k) const |
bool | operator& (int c) const |
unsigned | value () const |
Related Functions | |
(Note that these are not member functions.) | |
typedef const ChannelSet & | ChannelMask |
const int | Chan_Last |
foreach(VAR, CHANNELS) | |
std::ostream & | operator<< (std::ostream &, const ChannelSet &) |
A set of zero or more DD::Image::Channel numbers. This set cannot contains Chan_Black (zero). As these sets are used in many places in Nuke, they are designed to be as fast and small as possible.
bool DD::Image::ChannelSet::all | ( | ) | const [inline] |
A ChannelSet can store an infinite number of channels, where all channels after the last one that has been turned off are considered "on". This allows a set to be inverted, and to make a set that can be intersected with any other set and not change it.
The only way to get a ChannelSet into this state is to assign or initialize with the Mask_All constant, or if you += an all() set. It will stay in this state until you intersect with a non-all() set or you -= an all() set.
Some functions, in particular first(), next(), last(), and size(), do not work when all() is true and return undefined results.
Referenced by DD::Image::Write::_request(), DD::Image::Write::_validate(), DD::Image::Iop::_validate(), contains(), DD::Image::Write::engine(), last(), operator&(), operator&=(), operator+=(), operator-=(), and size().
bool ChannelSet::operator< | ( | const ChannelSet & | source | ) | const |
This is an arbitrary sorting that is used so that a ChannelSet can be put into an stl set.
void ChannelSet::operator+= | ( | const ChannelSet & | source | ) |
void ChannelSet::operator-= | ( | const ChannelSet & | source | ) |
void ChannelSet::operator&= | ( | const ChannelSet & | source | ) |
bool ChannelSet::operator& | ( | const ChannelSet & | c | ) | const |
Returns true if the intersection is not empty. This returns a bool, not a ChannelSet, because almost all uses of this are in if statements conditions.
bool ChannelSet::contains | ( | const ChannelSet & | source | ) | const |
Returns true if all the channels in source are in this. I.e. true if this is a superset of source.
References all().
Referenced by DD::Image::DrawIop::_validate(), DD::Image::Iop::doFetchPlane(), DD::Image::Iop::get(), DD::Image::Read::getPlaneFromChannel(), DD::Image::PlanarI::getRequestedPlaneFromChannel(), DD::Image::DrawIop::pixel_engine(), DD::Image::Read::renderStripe(), and DD::Image::VertexContext::sample().
bool ChannelSet::contains | ( | Channel | z | ) | const |
This is the same as *this&z except it returns true for Chan_Black.
void ChannelSet::addBrothers | ( | Channel | channel, |
unsigned | n | ||
) |
Same as "for (i=0; i<n; i++) *this += DD::Image::brother(channel,i);" but it may be more efficient.
Referenced by DD::Image::PlanarI::GetPlaneFromChannel().
unsigned ChannelSet::size | ( | ) | const |
Return the number of channels in the set. The answer is meaningless if all() is true.
References all().
Referenced by DD::Image::ImagePlane::copyIntersectionFrom(), DD::Image::Write::depth(), DD::Image::PlanarIop::doFetchPlane(), DD::Image::GeneralTile::GeneralTile(), DD::Image::BufferIopTile::makeTile(), and DD::Image::PlanarIop::renderStripe().
Channel DD::Image::ChannelSet::first | ( | ) | const [inline] |
Returns the first channel in the set. Returns Chan_Black if the set is empty. Does not work if all() is true.
Returns the first channel in the set that is greater than k. Returns Chan_Black if there is none. Does not work if all() is true.
Channel ChannelSet::last | ( | ) | const |
Returns the last channel in the set. Returns Chan_Black if it is empty. Does not work if all() is true.
References all().
Referenced by DD::Image::ChannelMap::ChannelMap(), and previous().
typedef const ChannelSet& ChannelMask [related] |
This typedef makes most method prototypes source-code compatible:
const int Chan_Last [related] |
Constant for the highest Channel number that will be produced by Nuke. This can be used to declare a fixed-size array that will be indexed by channel. You can either declare the array to have a size of Chan_Last+1, or of a size Chan_Last and subtract 1 from the Channel to index it (thus removing the Chan_Black entry at 0).
This is quite large and you should try to make a variable-sized array if possible (use ChannelSet::last() to find the last channel number instead).
foreach | ( | VAR, | |
CHANNELS | |||
) | [related] |
Runs the body of the loop with the local variable named VAR set to each channel in the ChannelSet.
You should use the foreach() macro to go through all the channels in a set, as in this example:
foreach(z, row.channels) process(row[z]+x, r-x);
std::ostream & operator<< | ( | std::ostream & | , |
const ChannelSet & | |||
) | [related] |
Prints which channels are in the set as the smallest possible list of layer names and channel names. If all the channels in a layer are on, it prints that layer, else it prints the channel names.
Prints "none" for the empty set, and "all except ..." for a set with the "all" bit set.