all repos — openbox @ 296dacb0237503216b4f2b62081bd8eafa7e5628

openbox fork - make it a bit more like ryudo

Added the much sought after horizontal gradient
Derek Foreman manmower@gmail.com
commit

296dacb0237503216b4f2b62081bd8eafa7e5628

parent

2ffeaf1ecdcfc47281de6e5b9d9ce3262e7cf6c8

2 files changed, 34 insertions(+), 0 deletions(-)

jump to
M otk/rendercontrol.ccotk/rendercontrol.cc

@@ -232,6 +232,9 @@ switch (texture.gradient()) {

case RenderTexture::Vertical: verticalGradient(sf, texture); break; + case RenderTexture::Horizontal: + horizontalGradient(sf, texture); + break; case RenderTexture::Diagonal: diagonalGradient(sf, texture); break;

@@ -318,6 +321,36 @@ + (g << default_green_shift)

+ (b << default_blue_shift); for (int x = 0; x < w; ++x, ++data) *data = current; + } +} + +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; } }
M otk/rendercontrol.hhotk/rendercontrol.hh

@@ -28,6 +28,7 @@ RenderControl(int screen);

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,