CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

csGradient Class Reference

A simple color gradient. More...

#include <gradient.h>

List of all members.

Public Methods

 csGradient ()
 Construct an empty gradient. More...

 csGradient (csColor first, csColor last)
 Construct with first at position 0 and last at 1. More...

void AddShade (csGradientShade shade)
 Add a shade. More...

void Clear ()
 Clear all shades. More...

bool Render (csRGBcolor *pal, int count, float begin=0.0f, float end=1.0f) const
 Interpolate the colors over a part of the gradient. More...


Protected Attributes

csArray< csGradientShadeshades
 The entries in this gradient. More...


Detailed Description

A simple color gradient.

If you ever have worked with an image creation/manipulation program with a slightly higher niveau than Windows Paint then you probably know what this is.

Colors(here called 'shades') can be placed at arbitrary positions; although commonly a range of [0;1] is used, negative positions and positions larger than 1 are supported.

Shades contain actually two colors, a 'left' and 'right' one. You can think of this as, when approaching from one side, you'll get closer and closer to the respective color. If you step over a shade, you have the other color, but you're getting farther and farther from it (and towards the next color) when moving on. This feature can be used for sharp transitions; for smooth ones they are simply set to the same value.

Examples:

 csGradient grad;
 // Rainbow-ish
 grad.AddShade (csGradientShade (csColor (1.0f, 0.0f, 0.0f), 0.0f)));
 grad.AddShade (csGradientShade (csColor (1.0f, 1.0f, 0.0f), 0.2f)));
 grad.AddShade (csGradientShade (csColor (0.0f, 1.0f, 0.0f), 0.4f)));
 grad.AddShade (csGradientShade (csColor (0.0f, 1.0f, 1.0f), 0.6f)));
 grad.AddShade (csGradientShade (csColor (0.0f, 0.0f, 1.0f), 0.8f)));
 grad.AddShade (csGradientShade (csColor (1.0f, 0.0f, 1.0f), 1.0f)));

 // German flag
 grad.Clear ();
 grad.AddShade (csGradientShade (csColor (0.0f, 0.0f, 0.0f), 0.0f)));
 grad.AddShade (csGradientShade (csColor (0.0f, 0.0f, 0.0f), 
  csGradientShade (csColor (1.0f, 0.0f, 0.0f)
  0.33f)));
 grad.AddShade (csGradientShade (csColor (1.0f, 0.0f, 0.0f), 
  csGradientShade (csColor (1.0f, 1.0f, 0.0f)
  0.66f)));
 grad.AddShade (csGradientShade (csColor (1.0f, 1.0f, 0.0f), 1.0f)));
Todo:
More shade management (e.g. getting, deleting of single shades.)

Definition at line 94 of file gradient.h.


Constructor & Destructor Documentation

csGradient::csGradient  
 

Construct an empty gradient.

csGradient::csGradient csColor    first,
csColor    last
 

Construct with first at position 0 and last at 1.


Member Function Documentation

void csGradient::AddShade csGradientShade    shade
 

Add a shade.

void csGradient::Clear  
 

Clear all shades.

bool csGradient::Render csRGBcolor   pal,
int    count,
float    begin = 0.0f,
float    end = 1.0f
const
 

Interpolate the colors over a part of the gradient.

Parameters:
pal  Array of csRGBcolor the gradient should be rendered to.
count  Number of palette entries to render.
begin  Start position. Can be anywhere in the gradient.
end  End position. Can be anywhere in the gradient.
Remarks:
At least 1 shade has to be present in the gradient to have this function succeed.
Makes heavy use of floating point calculations, so you might want to use this function in a precalc phase.
begin doesn't have to be smaller than end.
begin and end can both lie completely 'outside' the gradient (i.e. both smaller/large than the first resp. last shade's position.)


Member Data Documentation

csArray<csGradientShade> csGradient::shades [protected]
 

The entries in this gradient.

Definition at line 98 of file gradient.h.


The documentation for this class was generated from the following file:
Generated for Crystal Space by doxygen 1.2.14