Changed: Implement CBitmap::setPixelColor

--HG--
branch : develop
This commit is contained in:
kervala 2017-01-01 22:42:37 +01:00
parent 1bd7e18ba7
commit 534630bdcc
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. * Works in RGBA and DXTC modes.
* Outside of the bitmap it returns Black (or if mipmap is not found) * Outside of the bitmap it returns Black (or if mipmap is not found)
*/ */
CRGBA getPixelColor(sint x, sint y, uint32 numMipMap = 0) const; 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) * Horizontal flip (all the columns are flipped)
* Works only with RGBA, and DXTC formats (only if w/h is a power of 2) * 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; 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) void CBitmap::swap(CBitmap &other)