Changed: Implement CBitmap::setPixelColor

This commit is contained in:
kervala 2017-01-01 22:42:37 +01:00
parent 753b429950
commit cf788f098d
2 changed files with 21 additions and 1 deletions

View file

@ -636,11 +636,17 @@ public:
/** Get the pixel at the given coorrdinate.
/** Get the pixel at the given coordinate.
* Works in RGBA and DXTC modes.
* Outside of the bitmap it returns Black (or if mipmap is not found)
*/
CRGBA getPixelColor(sint x, sint y, uint32 numMipMap = 0) const;
/** Set the pixel at the given coordinate.
* Works in RGBA mode only.
*/
void setPixelColor(sint x, sint y, CRGBA c, uint32 numMipMap = 0);
/**
* Horizontal flip (all the columns are flipped)
* Works only with RGBA, and DXTC formats (only if w/h is a power of 2)

View file

@ -4510,6 +4510,20 @@ CRGBA CBitmap::getPixelColor(sint x, sint y, uint32 numMipMap /*=0*/) const
return CRGBA::Black;
}
//-----------------------------------------------
void CBitmap::setPixelColor(sint x, sint y, CRGBA c, uint32 numMipMap)
{
nlassert(PixelFormat == RGBA);
uint w = getWidth(numMipMap);
uint h = getHeight(numMipMap);
if (w == 0 || x < 0 || y < 0 || x >= (sint)w || y >= (sint)h) return;
uint8 *pix = &getPixels(numMipMap)[(x + y * w) << 2];
memcpy(pix, &c, sizeof(CRGBA));
}
//-----------------------------------------------
void CBitmap::swap(CBitmap &other)