Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://bitbucket.org/Coin3D/
http://www.kongsberg.com/kogt/
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
LegendKit Class Reference

The LegendKit class is used to draw a simple colormap legend. More...

#include <LegendKit.h>

Inherits SoBaseKit.

Public Types

typedef SbString SoNumberFormatCB(const double number, void *closure)
 
- Public Types inherited from SoNode
enum  NodeType
 

Public Member Functions

 LegendKit (void)
 
void preRender (SoAction *action)
 
void setImageTransparency (const float transparency=0.0f)
 
void useTextureNotImage (const SbBool onoff)
 
void setColorCB (uint32_t(*colorCB)(double, void *), void *userdata=NULL)
 
void setColorCB (uint32_t(*colorCB)(double))
 
void clearTicks (void)
 
void addSmallTick (double nval)
 
void addBigTick (double nval, double tickvalue, const SbString *discretestring=NULL)
 
void addBigTick (double nval, const SbString &string, const SbString *discretestring=NULL)
 
void setDiscreteMode (const SbBool onoff)
 
void addDiscreteColor (double uppernval, uint32_t color)
 
void addDiscreteColor (double uppernval)
 
void clearData (void)
 
void enableImage (const SbBool onoff)
 
float getLegendWidth (void) const
 
void setNumberFormatCallback (SoNumberFormatCB *cb, void *closure)
 
void setTickAndLinesColor (const SbColor &color, const float transparency=0.0f)
 
void setTextColor (const SbColor &color, const float transparency=0.0f)
 
void setPosition (const SbVec2s &pos)
 
void setBackgroundColor (const SbColor &color, const float transparency=0.0f)
 
void enableBackground (const SbBool onoff)
 
- Public Member Functions inherited from SoBaseKit
virtual SoType getTypeId (void) const
 
 SoBaseKit (void)
 
virtual const SoNodekitCataloggetNodekitCatalog (void) const
 
virtual SoNodegetPart (const SbName &partname, SbBool makeifneeded)
 
SbString getPartString (const SoBase *part)
 
virtual SoNodeKitPathcreatePathToPart (const SbName &partname, SbBool makeifneeded, const SoPath *pathtoextend=NULL)
 
virtual SbBool setPart (const SbName &partname, SoNode *from)
 
SbBool set (const char *namevaluepairliststring)
 
SbBool set (const char *partnamestring, const char *parameterstring)
 
virtual void doAction (SoAction *action)
 
virtual void write (SoWriteAction *action)
 
virtual SoChildListgetChildren (void) const
 
void printDiagram (void)
 
void printSubDiagram (const SbName &rootname, int level)
 
void printTable (void)
 
virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE)
 
SbBool forceChildDrivenWriteRefs (SoOutput *out)
 
- Public Member Functions inherited from SoNode
void setOverride (const SbBool state)
 
SbBool isOverride (void) const
 
void setNodeType (const NodeType type)
 
NodeType getNodeType (void) const
 
virtual SoNodecopy (SbBool copyconnections=FALSE) const
 
virtual void GLRenderBelowPath (SoGLRenderAction *action)
 
virtual void GLRenderInPath (SoGLRenderAction *action)
 
virtual void GLRenderOffPath (SoGLRenderAction *action)
 
virtual void grabEventsSetup (void)
 
virtual void grabEventsCleanup (void)
 
virtual void startNotify (void)
 
SbUniqueId getNodeId (void) const
 
virtual void writeInstance (SoOutput *out)
 
virtual SoFieldContainercopyThroughConnection (void) const
 
- Public Member Functions inherited from SoFieldContainer
void setToDefaults (void)
 
SbBool hasDefaultValues (void) const
 
SbBool fieldsAreEqual (const SoFieldContainer *container) const
 
void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE)
 
SbBool set (const char *const fielddata)
 
void get (SbString &fielddata)
 
virtual int getFields (SoFieldList &l) const
 
virtual int getAllFields (SoFieldList &l) const
 
virtual SoFieldgetField (const SbName &name) const
 
virtual SoFieldgetEventIn (const SbName &name) const
 
virtual SoFieldgetEventOut (const SbName &name) const
 
SbBool getFieldName (const SoField *const field, SbName &name) const
 
SbBool enableNotify (const SbBool flag)
 
SbBool isNotifyEnabled (void) const
 
SbBool set (const char *fielddata, SoInput *input)
 
void get (SbString &fielddata, SoOutput *out)
 
virtual SbBool validateNewFieldValue (SoField *field, void *newval)
 
SbBool getIsBuiltIn (void) const
 
virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) const
 
void setUserData (void *userdata) const
 
void * getUserData (void) const
 
- Public Member Functions inherited from SoBase
void ref (void) const
 
void unref (void) const
 
void unrefNoDelete (void) const
 
int32_t getRefCount (void) const
 
void touch (void)
 
SbBool isOfType (SoType type) const
 
virtual SbName getName (void) const
 
virtual void setName (const SbName &newname)
 
void addAuditor (void *const auditor, const SoNotRec::Type type)
 
void removeAuditor (void *const auditor, const SoNotRec::Type type)
 
const SoAuditorListgetAuditors (void) const
 
SbBool shouldWrite (void)
 
void assertAlive (void) const
 

Static Public Member Functions

static void initClass (void)
 
- Static Public Member Functions inherited from SoBaseKit
static const SoNodekitCataloggetClassNodekitCatalog (void)
 
static SbBool isSearchingChildren (void)
 
static void setSearchingChildren (const SbBool newval)
 
- Static Public Member Functions inherited from SoNode
static uint32_t getCompatibilityTypes (const SoType &nodetype)
 
static SoNodegetByName (const SbName &name)
 
static int getByName (const SbName &name, SoNodeList &l)
 
static void initClasses (void)
 
static SbUniqueId getNextNodeId (void)
 
static int getActionMethodIndex (const SoType type)
 
static void getBoundingBoxS (SoAction *action, SoNode *node)
 
static void GLRenderS (SoAction *action, SoNode *node)
 
static void callbackS (SoAction *action, SoNode *node)
 
static void getMatrixS (SoAction *action, SoNode *node)
 
static void handleEventS (SoAction *action, SoNode *node)
 
static void pickS (SoAction *action, SoNode *node)
 
static void rayPickS (SoAction *action, SoNode *node)
 
static void searchS (SoAction *action, SoNode *node)
 
static void writeS (SoAction *action, SoNode *node)
 
static void audioRenderS (SoAction *action, SoNode *node)
 
static void getPrimitiveCountS (SoAction *action, SoNode *node)
 
- Static Public Member Functions inherited from SoFieldContainer
static void initCopyDict (void)
 
static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)
 
static SoFieldContainercheckCopy (const SoFieldContainer *orig)
 
static SoFieldContainerfindCopy (const SoFieldContainer *orig, const SbBool copyconnections)
 
static void copyDone (void)
 
- Static Public Member Functions inherited from SoBase
static void initClass (void)
 
static SoType getClassTypeId (void)
 
static void addName (SoBase *const base, const char *const name)
 
static void removeName (SoBase *const base, const char *const name)
 
static void incrementCurrentWriteCounter (void)
 
static void decrementCurrentWriteCounter (void)
 
static SoBasegetNamedBase (const SbName &name, SoType type)
 
static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)
 
static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype)
 
static void setInstancePrefix (const SbString &c)
 
static void setTraceRefs (SbBool trace)
 
static SbBool getTraceRefs (void)
 
static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)
 
static SbBool readRoute (SoInput *input)
 

Public Attributes

SoSFBool on
 
SoSFFloat imageWidth
 
SoSFFloat space
 
SoSFFloat bigTickSize
 
SoSFFloat smallTickSize
 
SoSFString tickValueFormat
 
SoSFFloat tickValueOffset
 
SoMFString description
 
SoSFBool descriptionOnTop
 
SoSFBool delayedRender
 
SoSFFloat topSpace
 
SoSFBool discreteUseLower
 
SoSFBool threadSafe
 
- Public Attributes inherited from SoNode
 INVENTOR
 
 VRML1
 
 VRML2
 
 INVENTOR_1
 
 INVENTOR_2_0
 
 INVENTOR_2_1
 
 INVENTOR_2_5
 
 INVENTOR_2_6
 
 COIN_1_0
 
 COIN_2_0
 
 EXTENSION
 

Protected Member Functions

virtual void GLRender (SoGLRenderAction *action)
 
virtual void getBoundingBox (SoGetBoundingBoxAction *action)
 
virtual void handleEvent (SoHandleEventAction *action)
 
virtual void search (SoSearchAction *action)
 
virtual void callback (SoCallbackAction *action)
 
virtual void getMatrix (SoGetMatrixAction *action)
 
virtual void pick (SoPickAction *action)
 
virtual void rayPick (SoRayPickAction *action)
 
virtual void audioRender (SoAudioRenderAction *action)
 
virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)
 
virtual SbBool affectsState (void) const
 
virtual ~LegendKit ()
 
virtual void notify (SoNotList *list)
 
- Protected Member Functions inherited from SoBaseKit
virtual const SoFieldDatagetFieldData (void) const
 
virtual ~SoBaseKit ()
 
virtual SoNodeaddToCopyDict (void) const
 
virtual void copyContents (const SoFieldContainer *fromfc, SbBool copyconnections)
 
SoGroupgetContainerNode (const SbName &listname, SbBool makeifneeded=TRUE)
 
virtual SoNodegetAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE)
 
virtual SoNodeKitPathcreatePathToAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE, const SoPath *pathtoextend=NULL)
 
virtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=TRUE)
 
void createNodekitPartsList (void)
 
void createFieldList (void)
 
virtual void createDefaultParts (void)
 
const SoNodekitParts * getNodekitPartsList (void) const
 
const SbList< SoSFNode *> & getCatalogInstances (void) const
 
void catalogError (void)
 
virtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=FALSE)
 
virtual SbBool readInstance (SoInput *in, unsigned short flags)
 
virtual void setDefaultOnNonWritingFields (void)
 
void countMyFields (SoOutput *out)
 
virtual SbBool setPart (const int partNum, SoNode *node)
 
- Protected Member Functions inherited from SoNode
 SoNode (void)
 
virtual ~SoNode ()
 
- Protected Member Functions inherited from SoFieldContainer
 SoFieldContainer (void)
 
virtual ~SoFieldContainer ()
 
- Protected Member Functions inherited from SoBase
 SoBase (void)
 
virtual ~SoBase ()
 
virtual void destroy (void)
 
SbBool hasMultipleWriteRefs (void) const
 
SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const
 
void writeFooter (SoOutput *out) const
 
virtual const char * getFileFormatName (void) const
 

Additional Inherited Members

- Protected Types inherited from SoBase
enum  BaseFlags
 
- Static Protected Member Functions inherited from SoBaseKit
static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)
 
- Static Protected Member Functions inherited from SoNode
static const SoFieldData ** getFieldDataPtr (void)
 
static void setNextActionMethodIndex (int index)
 
static int getNextActionMethodIndex (void)
 
static void incNextActionMethodIndex (void)
 
static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)
 
- Static Protected Member Functions inherited from SoBase
static uint32_t getCurrentWriteCounter (void)
 
- Protected Attributes inherited from SoBaseKit
SoChildListchildren
 
SbBool connectionsSetUp
 
- Protected Attributes inherited from SoNode
SbUniqueId uniqueId
 
- Protected Attributes inherited from SoFieldContainer
SbBool isBuiltIn
 
- Static Protected Attributes inherited from SoNode
static SbUniqueId nextUniqueId
 
static int nextActionMethodIndex
 

Detailed Description

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 follwing parts:

  • topSeparator The separator that holds all subscene for this kit. Private.
  • resetTransform Used to reset any transform that might be on the state
  • viewport Used to set the viewport for the legend. Contains a ViewportRegion node. This part is NULL by default. Set this part if you want to restrict the area the legend is drawn into.
  • depthBuffer Used to disable depth buffer tests. Contains a DepthBuffer node.
  • lightModel Used to disable lighting. Contains an SoLightModel node.
  • position Can be used to move the legend from the lower left corner. The coordinate system of this node is one unit per pixel. This part is NULL by default, but a SoTranslation node can be inserted here.
  • texture Its only purpose is to disable texturing. Contains an SoTexture2 node.
  • shapeHints Contains an SoShapeHints node, and sets default shape hints. This is needed to render the shapes in this kit correctly.
  • backgroundMaterial Might be used to change the background color. Contains an SoMaterial node.
  • backgroundShape Contains the shape (SoIndexedFaceSet) that renders the background frame. This is rendered as four quads surrounding the image. Set this part to NULL if you don't want a background frame.
  • imageSeparator A separator that holds nodes needed to render the image. Private.
  • imageTransform Applies a transformation to the image to account for image offset. Will be set in LegendKit::initLegend().
  • imageMaterial Is used to reset the material to default before the image is rendered. Contains a default SoMaterial node by default. Will only take effect if you render the image a a textured quad.
  • imageSwitch Is used to switch between image rendered as a raw image (whichChild = 0), or rendered as a textured quad (whichChild = 1). This is useful since some 3D hardware might render raw images very slowly. Default value is 0, and you can set this value using Legendkit::useTextureNotImage().
  • image Hold the raw image data for the legend as an SoImage node.
  • textureGroup A group used to hold the texture image and shape.
  • textureImage A one row texture used when rendering the image as a textured quad.
  • textureShape An SoFaceSet that renders one quad.
  • tickMaterial Can be used to set the material of the ticks and lines. In the default node, diffuse color is set to (0 0 0).
  • renderCallbackLines Is used to render ticks and other lines using OpenGL.
  • textMaterial Can be used to set the material of the text. This part is NULL by default, and the text will then be rendered in the same color as the ticks and lines.
  • renderCallbackText Is used to render text using OpenGL.
  • extraNodes Is NULL by default, but can be used to add geometry that can be rendered after all other geometry in this kit. Please note that the coordinate system in the legend is one unit per pixel. This means that the world position (32.0f, 32.0f) is at pixel position (32,32) in the legend viewport.

Member Typedef Documentation

◆ SoNumberFormatCB

typedef SbString LegendKit::SoNumberFormatCB(const double number, void *closure)

Constructor & Destructor Documentation

◆ LegendKit()

LegendKit::LegendKit ( void  )

Constructor.

◆ ~LegendKit()

LegendKit::~LegendKit ( )
protectedvirtual

Destructor.

Member Function Documentation

◆ addBigTick() [1/2]

void LegendKit::addBigTick ( double  nval,
double  tickvalue,
const SbString discretetext = NULL 
)

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.

◆ addBigTick() [2/2]

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.

◆ addDiscreteColor() [1/2]

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.

◆ addDiscreteColor() [2/2]

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.

◆ addSmallTick()

void LegendKit::addSmallTick ( double  nval)

Adds a small tick at the normalized (0-1) position nval.

◆ affectsState()

SbBool LegendKit::affectsState ( void  ) const
protectedvirtual

Reimplemented from SoNode.

◆ audioRender()

void LegendKit::audioRender ( SoAudioRenderAction action)
protectedvirtual

Reimplemented from SoNode.

◆ callback()

void LegendKit::callback ( SoCallbackAction action)
protectedvirtual

Reimplemented from SoBaseKit.

◆ clearData()

void LegendKit::clearData ( void  )

Clears all data in this kit.

◆ clearTicks()

void LegendKit::clearTicks ( void  )

Clear all tick information.

◆ enableBackground()

void LegendKit::enableBackground ( const SbBool  onoff)

Enables or disables the Legend background.

◆ enableImage()

void LegendKit::enableImage ( const SbBool  onoff)

Enable/disable legend image. Is enabled by default.

◆ getBoundingBox()

void LegendKit::getBoundingBox ( SoGetBoundingBoxAction action)
protectedvirtual

Reimplemented from SoBaseKit.

◆ getLegendWidth()

float LegendKit::getLegendWidth ( void  ) const

Returns the width (in pixels) of the legend.

◆ getMatrix()

void LegendKit::getMatrix ( SoGetMatrixAction action)
protectedvirtual

Reimplemented from SoBaseKit.

◆ getPrimitiveCount()

void LegendKit::getPrimitiveCount ( SoGetPrimitiveCountAction action)
protectedvirtual

Reimplemented from SoBaseKit.

◆ GLRender()

void LegendKit::GLRender ( SoGLRenderAction action)
protectedvirtual

Overloaded to (re)initialize image and other data before rendering.

Reimplemented from SoBaseKit.

◆ handleEvent()

void LegendKit::handleEvent ( SoHandleEventAction action)
protectedvirtual

Reimplemented from SoBaseKit.

◆ initClass()

void LegendKit::initClass ( void  )
static

Initializes this class. Call before using it.

◆ notify()

void LegendKit::notify ( SoNotList list)
protectedvirtual

Overloaded to recalculate stuff when necessary.

Reimplemented from SoNode.

◆ pick()

void LegendKit::pick ( SoPickAction action)
protectedvirtual

Reimplemented from SoNode.

◆ preRender()

void LegendKit::preRender ( SoAction action)

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.

◆ rayPick()

void LegendKit::rayPick ( SoRayPickAction action)
protectedvirtual

Reimplemented from SoBaseKit.

◆ search()

void LegendKit::search ( SoSearchAction action)
protectedvirtual

Reimplemented from SoBaseKit.

◆ setBackgroundColor()

void LegendKit::setBackgroundColor ( const SbColor color,
const float  transparency = 0.0f 
)

Sets the background color.

◆ setColorCB() [1/2]

void LegendKit::setColorCB ( uint32_t(*)(double, void *)  colorCB,
void *  userdata = NULL 
)

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.

◆ setColorCB() [2/2]

void LegendKit::setColorCB ( uint32_t(*)(double)  colorCB)

◆ setDiscreteMode()

void LegendKit::setDiscreteMode ( const SbBool  onoff)

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.

◆ setImageTransparency()

void LegendKit::setImageTransparency ( const float  transparency = 0.0f)

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.

◆ setNumberFormatCallback()

void LegendKit::setNumberFormatCallback ( SoNumberFormatCB cb,
void *  closure 
)

Set a callback to be used for formatting numbers instead of the tickValueFormat field.

◆ setPosition()

void LegendKit::setPosition ( const SbVec2s pos)

Sets the position, in pixels from the lower left corner of the GL widget.

◆ setTextColor()

void LegendKit::setTextColor ( const SbColor color,
const float  transparency = 0.0f 
)

Sets the color used when rendering text.

◆ setTickAndLinesColor()

void LegendKit::setTickAndLinesColor ( const SbColor color,
const float  transparency = 0.0f 
)

Sets the color used when rendering ticks and other lines.

◆ useTextureNotImage()

void LegendKit::useTextureNotImage ( const SbBool  onoff)

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.

Member Data Documentation

◆ bigTickSize

SoSFFloat LegendKit::bigTickSize

The size of the big ticks, in pixels.

◆ delayedRender

SoSFBool LegendKit::delayedRender

Specifies whether legend should be rendered using SoGLRenderAction::addDelayedPath(). Default value is TRUE.

◆ description

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.

◆ descriptionOnTop

SoSFBool LegendKit::descriptionOnTop

Specifies whether description should be on top or at the bottom. Default value is TRUE.

◆ discreteUseLower

SoSFFloat LegendKit::discreteUseLower

When calculating the discrete color between bigticks, use the lower value of that section (the value right above the previous bigtick), instead of the upper value (the value right below the current bigtick).

◆ imageWidth

SoSFFloat LegendKit::imageWidth

The width of the legend image. Default value is 32.

◆ on

SoSFBool LegendKit::on

Specifies whether the legend is enabled (visible) or not. Default value is TRUE.

◆ smallTickSize

SoSFFloat LegendKit::smallTickSize

The size of the small ticks, in pixels.

◆ space

SoSFFloat LegendKit::space

The space (in pixels) between items in the legend. Default value is 6.0, which usually looks pretty good.

◆ threadSafe

SoSFBool LegendKit::threadSafe

◆ tickValueFormat

SoSFString LegendKit::tickValueFormat

The format string used to convert the tick value into a string. Default value is g.

◆ tickValueOffset

SoSFFloat LegendKit::tickValueOffset

The offset from the end of the big tick to the printed value. Default value is 2.

◆ topSpace

SoSFFloat LegendKit::topSpace

The distance, in pixels, from the top of the viewport to the top of the legend. Default value is 0.0.


The documentation for this class was generated from the following files: