SmallChange
1.0.0
A collection of extensions to Coin3D
|
The LegendKit class is used to draw a simple colormap legend. More...
#include <LegendKit.h>
Public Types | |
typedef SbString | SoNumberFormatCB(const double number, void *closure) |
Public Member Functions | |
LegendKit (void) | |
void | addBigTick (double nval, const SbString &string, const SbString *discretestring=NULL) |
void | addBigTick (double nval, double tickvalue, const SbString *discretestring=NULL) |
void | addDiscreteColor (double uppernval) |
void | addDiscreteColor (double uppernval, uint32_t color) |
void | addSmallTick (double nval) |
void | clearData (void) |
void | clearTicks (void) |
void | enableBackground (const SbBool onoff) |
void | enableImage (const SbBool onoff) |
float | getLegendWidth (void) const |
void | preRender (SoAction *action) |
void | setBackgroundColor (const SbColor &color, const float transparency=0.0f) |
void | setColorCB (uint32_t(*colorCB)(double)) |
void | setColorCB (uint32_t(*colorCB)(double, void *), void *userdata=NULL) |
void | setDiscreteMode (const SbBool onoff) |
void | setImageTransparency (const float transparency=0.0f) |
void | setNumberFormatCallback (SoNumberFormatCB *cb, void *closure) |
void | setPosition (const SbVec2s &pos) |
void | setTextColor (const SbColor &color, const float transparency=0.0f) |
void | setTickAndLinesColor (const SbColor &color, const float transparency=0.0f) |
void | useTextureNotImage (const SbBool onoff) |
Static Public Member Functions | |
static void | initClass (void) |
Public Attributes | |
SoSFFloat | bigTickSize |
SoSFBool | delayedRender |
SoMFString | description |
SoSFBool | descriptionOnTop |
SoSFBool | discreteUseLower |
SoSFFloat | imageWidth |
SoSFBool | on |
SoSFFloat | smallTickSize |
SoSFFloat | space |
SoSFBool | threadSafe |
SoSFString | tickValueFormat |
SoSFFloat | tickValueOffset |
SoSFFloat | topSpace |
Protected Member Functions | |
virtual | ~LegendKit () |
virtual SbBool | affectsState (void) const |
virtual void | audioRender (SoAudioRenderAction *action) |
virtual void | callback (SoCallbackAction *action) |
virtual void | getBoundingBox (SoGetBoundingBoxAction *action) |
virtual void | getMatrix (SoGetMatrixAction *action) |
virtual void | getPrimitiveCount (SoGetPrimitiveCountAction *action) |
virtual void | GLRender (SoGLRenderAction *action) |
virtual void | handleEvent (SoHandleEventAction *action) |
virtual void | notify (SoNotList *list) |
virtual void | pick (SoPickAction *action) |
virtual void | rayPick (SoRayPickAction *action) |
virtual void | search (SoSearchAction *action) |
The LegendKit class is used to draw a simple colormap legend.
FIXME: there should be an explanation of general usage here, preferably with an example. 20040305 mortene.
The class is organized as a nodekit for convenience. Most parts are public, but users should seldom have any reason for changing anything but the backgroundMaterial, tickMaterial and extraNodes parts.
This nodekit contains the following parts:
LegendKit::LegendKit | ( | void | ) |
Constructor.
|
protectedvirtual |
Destructor.
void LegendKit::addBigTick | ( | double | nval, |
const SbString & | string, | ||
const SbString * | discretetext = NULL ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Adds a big tick at the normalized (0-1) position nval. Prints the value tickvalue to the right of the tick. If discretetext is != NULL, this text will be used when in discrete mode, and will be printed between this tick and the previous tick.
void LegendKit::addDiscreteColor | ( | double | uppernval | ) |
Adds a discrete color. The area from the previous discrete color added (or from 0 if this is the first one) to uppernval will be painted with the color found from the color callback for the value uppernval or from the previous discrete uppernval if discreteUseLower is TRUE.
void LegendKit::addDiscreteColor | ( | double | uppernval, |
uint32_t | color ) |
Adds a discrete color. The area from the previous discrete color added (or from 0 if this is the first one) to uppernval will be painted with color.
void LegendKit::addSmallTick | ( | double | nval | ) |
Adds a small tick at the normalized (0-1) position nval.
Enable/disable legend image. Is enabled by default.
float LegendKit::getLegendWidth | ( | void | ) | const |
Returns the width (in pixels) of the legend.
|
protectedvirtual |
Overloaded to (re)initialize image and other data before rendering.
Overloaded to recalculate stuff when necessary.
Method needed for thread safe rendering. If multiple threads are used to render a scene graph containing this nodekit, you must set the threadSafe field to TRUE, and use an SoCallbackAction to call this method before rendering the scene graph.
Sets the background color.
Sets the callback used to decide the color per line in the image.
The user-provided callback should for each call return the RGBA value encoded as a 32-bits value, for the value given by the first argument to the callback.
Switch to discrete mode. If a callback is registered and one or more big ticks have been added, a call to this method will cause the discrete data to generated based on those values. For each big tick, the color value is found, and the discrete color for the area from the tick to the next big tick is set to the color of the line right under the next big tick.
Sets the transparency for the image in the legend (the color bars). Because the image might be drawn as an image, and not a texture, each pixel in the image has to be reset to the new alpha value the next time the legend is rendered.
Set a callback to be used for formatting numbers instead of the tickValueFormat field.
Sets the position, in pixels from the lower left corner of the GL widget.
Sets the color used when rendering text.
Sets the color used when rendering ticks and other lines.
By default the image is drawn as a raw GL image. Call this with onoff TRUE if you want to use a textured quad instead. This is much faster on most PC cards. Maybe a test for linux and _WIN32 could be a good idea to enable this. On SGI and HP (AFAIK) platforms raw GL image drawing is pretty fast.
SoSFFloat LegendKit::bigTickSize |
The size of the big ticks, in pixels.
SoSFBool LegendKit::delayedRender |
Specifies whether legend should be rendered using SoGLRenderAction::addDelayedPath(). Default value is TRUE.
SoSFString LegendKit::description |
The description/title for the legend. Default value is an empty string. If you specify several strings, they will be printed one string per line.
SoSFBool LegendKit::descriptionOnTop |
Specifies whether description should be on top or at the bottom. Default value is TRUE.
SoSFFloat LegendKit::discreteUseLower |
When calculating the discrete color between big ticks, use the lower value of that section (the value right above the previous big tick), instead of the upper value (the value right below the current bigtick).
SoSFFloat LegendKit::imageWidth |
The width of the legend image. Default value is 32.
SoSFBool LegendKit::on |
Specifies whether the legend is enabled (visible) or not. Default value is TRUE.
SoSFFloat LegendKit::smallTickSize |
The size of the small ticks, in pixels.
SoSFFloat LegendKit::space |
The space (in pixels) between items in the legend. Default value is 6.0, which usually looks pretty good.
SoSFString LegendKit::tickValueFormat |
The format string used to convert the tick value into a string. Default value is g.
SoSFFloat LegendKit::tickValueOffset |
The offset from the end of the big tick to the printed value. Default value is 2.
SoSFFloat LegendKit::topSpace |
The distance, in pixels, from the top of the viewport to the top of the legend. Default value is 0.0.