std::string toHtml(const RGB &rgb) { char buf[32]; // Microsoft doesn't define round(double) in <cmath> unsigned r = boost::numeric::converter<unsigned, double>::convert(clip(rgb.r())*255); unsigned g = boost::numeric::converter<unsigned, double>::convert(clip(rgb.g())*255); unsigned b = boost::numeric::converter<unsigned, double>::convert(clip(rgb.b())*255); sprintf(buf, "#%02x%02x%02x", r, g, b); return buf; }
void Image::gammaCorrect(float dGamma) { RGB rgbTemp; float fPower = 1.0 / dGamma; for(int x = 0; x < m_nWidth; x++) { for(int y = 0; y < m_nHeight; y++) { rgbTemp.set(m_rgbImage[x][y]); rgbTemp.clamp(0.0, 1.0); m_rgbImage[x][y].R = pow(rgbTemp.r(), fPower); m_rgbImage[x][y].G = pow(rgbTemp.g(), fPower); m_rgbImage[x][y].B = pow(rgbTemp.b(), fPower); } } }