Added the much sought after horizontal gradient
This commit is contained in:
parent
2ffeaf1ecd
commit
296dacb023
2 changed files with 34 additions and 0 deletions
|
@ -232,6 +232,9 @@ void RenderControl::drawGradientBackground(
|
|||
case RenderTexture::Vertical:
|
||||
verticalGradient(sf, texture);
|
||||
break;
|
||||
case RenderTexture::Horizontal:
|
||||
horizontalGradient(sf, texture);
|
||||
break;
|
||||
case RenderTexture::Diagonal:
|
||||
diagonalGradient(sf, texture);
|
||||
break;
|
||||
|
@ -321,6 +324,36 @@ void RenderControl::verticalGradient(Surface &sf,
|
|||
}
|
||||
}
|
||||
|
||||
void RenderControl::horizontalGradient(Surface &sf,
|
||||
const RenderTexture &texture) const
|
||||
{
|
||||
pixel32 *data = sf.pixelData();
|
||||
pixel32 current;
|
||||
float dr, dg, db;
|
||||
unsigned int r,g,b;
|
||||
int w = sf.size().width(), h = sf.size().height();
|
||||
|
||||
dr = (float)(texture.secondary_color().red() - texture.color().red());
|
||||
dr/= (float)w;
|
||||
|
||||
dg = (float)(texture.secondary_color().green() - texture.color().green());
|
||||
dg/= (float)w;
|
||||
|
||||
db = (float)(texture.secondary_color().blue() - texture.color().blue());
|
||||
db/= (float)w;
|
||||
|
||||
for (int x = 0; x < w; ++x, ++data) {
|
||||
r = texture.color().red() + (int)(dr * x);
|
||||
g = texture.color().green() + (int)(dg * x);
|
||||
b = texture.color().blue() + (int)(db * x);
|
||||
current = (r << default_red_shift)
|
||||
+ (g << default_green_shift)
|
||||
+ (b << default_blue_shift);
|
||||
for (int y = 0; y < h; ++y)
|
||||
*(data + y*w) = current;
|
||||
}
|
||||
}
|
||||
|
||||
void RenderControl::diagonalGradient(Surface &sf,
|
||||
const RenderTexture &texture) const
|
||||
{
|
||||
|
|
|
@ -28,6 +28,7 @@ protected:
|
|||
|
||||
inline void highlight(pixel32 *x, pixel32 *y, bool raised) const;
|
||||
void verticalGradient(Surface &sf, const RenderTexture &texture) const;
|
||||
void horizontalGradient(Surface &sf, const RenderTexture &texture) const;
|
||||
void diagonalGradient(Surface &sf, const RenderTexture &texture) const;
|
||||
void crossDiagonalGradient(Surface &sf, const RenderTexture &texture) const;
|
||||
virtual void drawGradientBackground(Surface &sf,
|
||||
|
|
Loading…
Reference in a new issue