Add unary complement operator to PNMImage (ability to do ~image)

This commit is contained in:
rdb 2010-05-16 09:46:19 +00:00
parent 1a7653d146
commit 76f2f2b0ba
2 changed files with 34 additions and 0 deletions

View File

@ -1317,6 +1317,38 @@ setup_rc() {
}
}
////////////////////////////////////////////////////////////////////
// Function: PNMImage::operator ~
// Access: Published
// Description: Returns a new PNMImage that is the
// complement of the current PNMImage.
////////////////////////////////////////////////////////////////////
PNMImage PNMImage::
operator ~ () const {
PNMImage target (*this);
size_t array_size = _x_size * _y_size;
if (_array != NULL && _alpha != NULL) {
for (size_t i = 0; i < array_size; ++i) {
target._array[i].r = _maxval - _array[i].r;
target._array[i].g = _maxval - _array[i].g;
target._array[i].b = _maxval - _array[i].b;
target._alpha[i] = _maxval - _alpha[i];
}
} else if (_array != NULL) {
for (size_t i = 0; i < array_size; ++i) {
target._array[i].r = _maxval - _array[i].r;
target._array[i].g = _maxval - _array[i].g;
target._array[i].b = _maxval - _array[i].b;
}
} else if (_alpha != NULL) {
for (size_t i = 0; i < array_size; ++i) {
target._alpha[i] = _maxval - _alpha[i];
}
}
return target;
}
////////////////////////////////////////////////////////////////////
// Function: PNMImage::operator +=
// Access: Published

View File

@ -254,6 +254,8 @@ private:
void setup_rc();
PUBLISHED:
PNMImage operator ~() const;
INLINE PNMImage operator + (const PNMImage &other) const;
INLINE PNMImage operator + (const Colord &other) const;
INLINE PNMImage operator - (const PNMImage &other) const;