134 lines
4.8 KiB
C++
134 lines
4.8 KiB
C++
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
|
|
#ifndef __rendertexture_hh
|
|
#define __rendertexture_hh
|
|
|
|
#include "rendercolor.hh"
|
|
|
|
namespace otk {
|
|
|
|
//! Superclass for all the Textures
|
|
class RenderTexture {
|
|
public:
|
|
enum ReliefType {
|
|
Flat,
|
|
Raised,
|
|
Sunken
|
|
};
|
|
enum BevelType {
|
|
Bevel1,
|
|
Bevel2
|
|
};
|
|
enum GradientType {
|
|
Solid,
|
|
Horizontal,
|
|
Vertical,
|
|
Diagonal,
|
|
CrossDiagonal,
|
|
PipeCross,
|
|
Rectangle,
|
|
Pyramid,
|
|
Elliptic
|
|
};
|
|
|
|
private:
|
|
//! If true, the texture is not rendered at all, so all options are ignored
|
|
bool _parent_relative;
|
|
//! The relief type of the texture
|
|
ReliefType _relief;
|
|
//! The way the bevel should be drawn
|
|
BevelType _bevel;
|
|
//! If a flat border is drawn on the outside, ignored for all ReliefType
|
|
//! values except ReliefType::Flat
|
|
bool _border;
|
|
//! The type of gradient to fill the texture with (if any)
|
|
GradientType _gradient;
|
|
//! If interlace lines should be drawn over the texture
|
|
bool _interlaced;
|
|
|
|
//! The base color for the texture, the only color when the texture is solid.
|
|
//! This must always be defined
|
|
const RenderColor *_color;
|
|
//! The secondary color for a gradient texture.
|
|
//! This is only defined for gradients
|
|
const RenderColor *_secondary_color;
|
|
//! The shadow color for the bevel. This must be defined if
|
|
//! RenderTexture::_relief is not RenderTexture::ReliefType::Flat
|
|
const RenderColor *_bevel_dark_color;
|
|
//! The light color for the bevel. This must be defined if
|
|
//! RenderTexture::_relief is not RenderTexture::ReliefType::Flat
|
|
const RenderColor *_bevel_light_color;
|
|
//! The color for the flat border if RenderTexture::_border is true. This
|
|
//! must be defined if it is true
|
|
const RenderColor *_border_color;
|
|
//! The color for the interlace lines if RenderTexture. This must be defined
|
|
//! if it is true
|
|
const RenderColor *_interlace_color;
|
|
|
|
public:
|
|
RenderTexture(bool parent_relative, ReliefType relief, BevelType bevel,
|
|
bool border, GradientType gradient, bool interlaced,
|
|
const RenderColor *color, const RenderColor *secondary_color,
|
|
const RenderColor *bevel_dark_color,
|
|
const RenderColor *bevel_light_color,
|
|
const RenderColor *border_color,
|
|
const RenderColor *interlace_color)
|
|
: _parent_relative(parent_relative),
|
|
_relief(relief),
|
|
_bevel(bevel),
|
|
_border(border),
|
|
_gradient(gradient),
|
|
_interlaced(interlaced),
|
|
_color(color),
|
|
_secondary_color(secondary_color),
|
|
_bevel_dark_color(bevel_dark_color),
|
|
_bevel_light_color(bevel_light_color),
|
|
_border_color(border_color),
|
|
_interlace_color(interlace_color)
|
|
{
|
|
assert(_relief == Flat || (_bevel_dark_color && _bevel_light_color));
|
|
assert(!_border || _border_color);
|
|
assert(!_interlaced || _interlace_color);
|
|
assert(_color);
|
|
}
|
|
|
|
//! If true, the texture is not rendered at all, so all options are ignored
|
|
inline bool parentRelative() const { return _parent_relative; }
|
|
//! The relief type of the texture
|
|
inline ReliefType relief() const { return _relief; }
|
|
//! The way the bevel should be drawn
|
|
inline BevelType bevel() const { return _bevel; }
|
|
//! If a flat border is drawn on the outside, ignored for all ReliefType
|
|
//! values except ReliefType::Flat
|
|
inline bool border() const { return _border; }
|
|
//! The type of gradient to fill the texture with (if any)
|
|
inline GradientType gradient() const { return _gradient; }
|
|
//! If interlace lines should be drawn over the texture
|
|
inline bool interlaced() const { return _interlaced; }
|
|
|
|
//! The base color for the texture, the only color when the texture is solid.
|
|
//! This must always be defined
|
|
inline const RenderColor& color() const { return *_color; }
|
|
//! The secondary color for gradient textures.
|
|
//! This is only defined for gradients
|
|
inline const RenderColor& secondary_color() const
|
|
{ return *_secondary_color; }
|
|
//! The shadow color for the bevel. This must be defined if
|
|
//! RenderTexture::_relief is not RenderTexture::ReliefType::Flat
|
|
inline const RenderColor& bevelDarkColor() const
|
|
{ return *_bevel_dark_color; }
|
|
//! The light color for the bevel. This must be defined if
|
|
//! RenderTexture::)relief is not RenderTexture::ReliefType::Flat
|
|
inline const RenderColor& bevelLightColor() const
|
|
{ return *_bevel_light_color; }
|
|
//! The color for the flat border if RenderTexture::_border is true. This
|
|
//! must be defined if it is true
|
|
inline const RenderColor& borderColor() const { return *_border_color; }
|
|
//! The color for the interlace lines if RenderTexture. This must be defined
|
|
//! if it is true
|
|
inline const RenderColor& interlaceColor() const
|
|
{ return *_interlace_color; }
|
|
};
|
|
|
|
}
|
|
|
|
#endif // __rendertexture_hh
|