iCub-main
Public Member Functions | Protected Attributes | Friends | List of all members
QCPColorMapData Class Reference

Holds the two-dimensional data of a QCPColorMap plottable. More...

#include <qcustomplot.h>

Public Member Functions

 QCPColorMapData (int keySize, int valueSize, const QCPRange &keyRange, const QCPRange &valueRange)
 Constructs a new QCPColorMapData instance. More...
 
 ~QCPColorMapData ()
 
 QCPColorMapData (const QCPColorMapData &other)
 Constructs a new QCPColorMapData instance copying the data and range of other. More...
 
QCPColorMapDataoperator= (const QCPColorMapData &other)
 Overwrites this color map data instance with the data stored in other. More...
 
int keySize () const
 
int valueSize () const
 
QCPRange keyRange () const
 
QCPRange valueRange () const
 
QCPRange dataBounds () const
 
double data (double key, double value)
 
double cell (int keyIndex, int valueIndex)
 
void setSize (int keySize, int valueSize)
 Resizes the data array to have keySize cells in the key dimension and valueSize cells in the value dimension. More...
 
void setKeySize (int keySize)
 Resizes the data array to have keySize cells in the key dimension. More...
 
void setValueSize (int valueSize)
 Resizes the data array to have valueSize cells in the value dimension. More...
 
void setRange (const QCPRange &keyRange, const QCPRange &valueRange)
 Sets the coordinate ranges the data shall be distributed over. More...
 
void setKeyRange (const QCPRange &keyRange)
 Sets the coordinate range the data shall be distributed over in the key dimension. More...
 
void setValueRange (const QCPRange &valueRange)
 Sets the coordinate range the data shall be distributed over in the value dimension. More...
 
void setData (double key, double value, double z)
 Sets the data of the cell, which lies at the plot coordinates given by key and value, to z. More...
 
void setCell (int keyIndex, int valueIndex, double z)
 Sets the data of the cell with indices keyIndex and valueIndex to z. More...
 
void recalculateDataBounds ()
 Goes through the data and updates the buffered minimum and maximum data values. More...
 
void clear ()
 Frees the internal data memory. More...
 
void fill (double z)
 Sets all cells to the value z. More...
 
bool isEmpty () const
 Returns whether this instance carries no data. More...
 
void coordToCell (double key, double value, int *keyIndex, int *valueIndex) const
 Transforms plot coordinates given by key and value to cell indices of this QCPColorMapData instance. More...
 
void cellToCoord (int keyIndex, int valueIndex, double *key, double *value) const
 Transforms cell indices given by keyIndex and valueIndex to cell indices of this QCPColorMapData instance. More...
 

Protected Attributes

int mKeySize
 
int mValueSize
 
QCPRange mKeyRange
 
QCPRange mValueRange
 
bool mIsEmpty
 
double * mData
 
QCPRange mDataBounds
 
bool mDataModified
 

Friends

class QCPColorMap
 

Detailed Description

Holds the two-dimensional data of a QCPColorMap plottable.

This class is a data storage for QCPColorMap. It holds a two-dimensional array, which QCPColorMap then displays as a 2D image in the plot, where the array values are represented by a color, depending on the value.

The size of the array can be controlled via setSize (or setKeySize, setValueSize). Which plot coordinates these cells correspond to can be configured with setRange (or setKeyRange, setValueRange).

The data cells can be accessed in two ways: They can be directly addressed by an integer index with setCell. This is the fastest method. Alternatively, they can be addressed by their plot coordinate with setData. plot coordinate to cell index transformations and vice versa are provided by the functions coordToCell and cellToCoord.

This class also buffers the minimum and maximum values that are in the data set, to provide QCPColorMap::rescaleDataRange with the necessary information quickly. Setting a cell to a value that is greater than the current maximum increases this maximum to the new value. However, setting the cell that currently holds the maximum value to a smaller value doesn't decrease the maximum again, because finding the true new maximum would require going through the entire data array, which might be time consuming. The same holds for the data minimum. This functionality is given by recalculateDataBounds, such that you can decide when it is sensible to find the true current minimum and maximum. The method QCPColorMap::rescaleDataRange offers a convenience parameter recalculateDataBounds which may be set to true to automatically call recalculateDataBounds internally.

Definition at line 2879 of file qcustomplot.h.

Constructor & Destructor Documentation

◆ QCPColorMapData() [1/2]

QCPColorMapData::QCPColorMapData ( int  keySize,
int  valueSize,
const QCPRange keyRange,
const QCPRange valueRange 
)

Constructs a new QCPColorMapData instance.

The instance has keySize cells in the key direction and valueSize cells in the value direction. These cells will be displayed by the QCPColorMap at the coordinates keyRange and valueRange.

See also
setSize, setKeySize, setValueSize, setRange, setKeyRange, setValueRange

Definition at line 18462 of file qcustomplot.cpp.

◆ ~QCPColorMapData()

QCPColorMapData::~QCPColorMapData ( )

Definition at line 18475 of file qcustomplot.cpp.

◆ QCPColorMapData() [2/2]

QCPColorMapData::QCPColorMapData ( const QCPColorMapData other)

Constructs a new QCPColorMapData instance copying the data and range of other.

Definition at line 18484 of file qcustomplot.cpp.

Member Function Documentation

◆ cell()

double QCPColorMapData::cell ( int  keyIndex,
int  valueIndex 
)

Definition at line 18525 of file qcustomplot.cpp.

◆ cellToCoord()

void QCPColorMapData::cellToCoord ( int  keyIndex,
int  valueIndex,
double *  key,
double *  value 
) const

Transforms cell indices given by keyIndex and valueIndex to cell indices of this QCPColorMapData instance.

The resulting coordinates are returned via the output parameters key and value.

If you are only interested in a key or value coordinate, you may pass 0 as key or value.

See also
coordToCell, QCPAxis::pixelToCoord

Definition at line 18777 of file qcustomplot.cpp.

◆ clear()

void QCPColorMapData::clear ( )

Frees the internal data memory.

This is equivalent to calling setSize(0, 0).

Definition at line 18731 of file qcustomplot.cpp.

◆ coordToCell()

void QCPColorMapData::coordToCell ( double  key,
double  value,
int *  keyIndex,
int *  valueIndex 
) const

Transforms plot coordinates given by key and value to cell indices of this QCPColorMapData instance.

The resulting cell indices are returned via the output parameters keyIndex and valueIndex.

The retrieved key/value cell indices can then be used for example with setCell.

If you are only interested in a key or value index, you may pass 0 as valueIndex or keyIndex.

See also
cellToCoord, QCPAxis::coordToPixel

Definition at line 18759 of file qcustomplot.cpp.

◆ data()

double QCPColorMapData::data ( double  key,
double  value 
)

Definition at line 18514 of file qcustomplot.cpp.

◆ dataBounds()

QCPRange QCPColorMapData::dataBounds ( ) const
inline

Definition at line 2892 of file qcustomplot.h.

◆ fill()

void QCPColorMapData::fill ( double  z)

Sets all cells to the value z.

Definition at line 18739 of file qcustomplot.cpp.

◆ isEmpty()

bool QCPColorMapData::isEmpty ( ) const
inline

Returns whether this instance carries no data.

This is equivalent to having a size where at least one of the dimensions is 0 (see setSize).

Definition at line 2910 of file qcustomplot.h.

◆ keyRange()

QCPRange QCPColorMapData::keyRange ( ) const
inline

Definition at line 2890 of file qcustomplot.h.

◆ keySize()

int QCPColorMapData::keySize ( ) const
inline

Definition at line 2888 of file qcustomplot.h.

◆ operator=()

QCPColorMapData & QCPColorMapData::operator= ( const QCPColorMapData other)

Overwrites this color map data instance with the data stored in other.

Definition at line 18497 of file qcustomplot.cpp.

◆ recalculateDataBounds()

void QCPColorMapData::recalculateDataBounds ( )

Goes through the data and updates the buffered minimum and maximum data values.

Calling this method is only advised if you are about to call QCPColorMap::rescaleDataRange and can not guarantee that the cells holding the maximum or minimum data haven't been overwritten with a smaller or larger value respectively, since the buffered maximum/minimum values have been updated the last time. Why this is the case is explained in the class description (QCPColorMapData).

Note that the method QCPColorMap::rescaleDataRange provides a parameter recalculateDataBounds for convenience. Setting this to true will call this method for you, before doing the rescale.

Definition at line 18707 of file qcustomplot.cpp.

◆ setCell()

void QCPColorMapData::setCell ( int  keyIndex,
int  valueIndex,
double  z 
)

Sets the data of the cell with indices keyIndex and valueIndex to z.

The indices enumerate the cells starting from zero, up to the map's size-1 in the respective dimension (see setSize).

In the standard plot configuration (horizontal key axis and vertical value axis, both not range-reversed), the cell with indices (0, 0) is in the bottom left corner and the cell with indices (keySize-1, valueSize-1) is in the top right corner of the color map.

See also
setData, setSize

Definition at line 18681 of file qcustomplot.cpp.

◆ setData()

void QCPColorMapData::setData ( double  key,
double  value,
double  z 
)

Sets the data of the cell, which lies at the plot coordinates given by key and value, to z.

See also
setCell, setRange

Definition at line 18655 of file qcustomplot.cpp.

◆ setKeyRange()

void QCPColorMapData::setKeyRange ( const QCPRange keyRange)

Sets the coordinate range the data shall be distributed over in the key dimension.

Together with the value range, This defines the rectangular area covered by the color map in plot coordinates.

The outer cells will be centered on the range boundaries given to this function. For example, if the key size (setKeySize) is 3 and keyRange is set to QCPRange(2, 3) there will be cells centered on the key coordinates 2, 2.5 and 3.

See also
setRange, setValueRange, setSize

Definition at line 18629 of file qcustomplot.cpp.

◆ setKeySize()

void QCPColorMapData::setKeySize ( int  keySize)

Resizes the data array to have keySize cells in the key dimension.

The current data is discarded and the map cells are set to 0, unless the map had already the requested size.

Setting keySize to zero frees the internal data array and isEmpty returns true.

See also
setKeyRange, setSize, setValueSize

Definition at line 18583 of file qcustomplot.cpp.

◆ setRange()

void QCPColorMapData::setRange ( const QCPRange keyRange,
const QCPRange valueRange 
)

Sets the coordinate ranges the data shall be distributed over.

This defines the rectangular area covered by the color map in plot coordinates.

The outer cells will be centered on the range boundaries given to this function. For example, if the key size (setKeySize) is 3 and keyRange is set to QCPRange(2, 3) there will be cells centered on the key coordinates 2, 2.5 and 3.

See also
setSize

Definition at line 18613 of file qcustomplot.cpp.

◆ setSize()

void QCPColorMapData::setSize ( int  keySize,
int  valueSize 
)

Resizes the data array to have keySize cells in the key dimension and valueSize cells in the value dimension.

The current data is discarded and the map cells are set to 0, unless the map had already the requested size.

Setting at least one of keySize or valueSize to zero frees the internal data array and isEmpty returns true.

See also
setRange, setKeySize, setValueSize

Definition at line 18545 of file qcustomplot.cpp.

◆ setValueRange()

void QCPColorMapData::setValueRange ( const QCPRange valueRange)

Sets the coordinate range the data shall be distributed over in the value dimension.

Together with the key range, This defines the rectangular area covered by the color map in plot coordinates.

The outer cells will be centered on the range boundaries given to this function. For example, if the value size (setValueSize) is 3 and valueRange is set to QCPRange(2, 3) there will be cells centered on the value coordinates 2, 2.5 and 3.

See also
setRange, setKeyRange, setSize

Definition at line 18644 of file qcustomplot.cpp.

◆ setValueSize()

void QCPColorMapData::setValueSize ( int  valueSize)

Resizes the data array to have valueSize cells in the value dimension.

The current data is discarded and the map cells are set to 0, unless the map had already the requested size.

Setting valueSize to zero frees the internal data array and isEmpty returns true.

See also
setValueRange, setSize, setKeySize

Definition at line 18598 of file qcustomplot.cpp.

◆ valueRange()

QCPRange QCPColorMapData::valueRange ( ) const
inline

Definition at line 2891 of file qcustomplot.h.

◆ valueSize()

int QCPColorMapData::valueSize ( ) const
inline

Definition at line 2889 of file qcustomplot.h.

Friends And Related Function Documentation

◆ QCPColorMap

friend class QCPColorMap
friend

Definition at line 2924 of file qcustomplot.h.

Member Data Documentation

◆ mData

double* QCPColorMapData::mData
protected

Definition at line 2920 of file qcustomplot.h.

◆ mDataBounds

QCPRange QCPColorMapData::mDataBounds
protected

Definition at line 2921 of file qcustomplot.h.

◆ mDataModified

bool QCPColorMapData::mDataModified
protected

Definition at line 2922 of file qcustomplot.h.

◆ mIsEmpty

bool QCPColorMapData::mIsEmpty
protected

Definition at line 2918 of file qcustomplot.h.

◆ mKeyRange

QCPRange QCPColorMapData::mKeyRange
protected

Definition at line 2917 of file qcustomplot.h.

◆ mKeySize

int QCPColorMapData::mKeySize
protected

Definition at line 2916 of file qcustomplot.h.

◆ mValueRange

QCPRange QCPColorMapData::mValueRange
protected

Definition at line 2917 of file qcustomplot.h.

◆ mValueSize

int QCPColorMapData::mValueSize
protected

Definition at line 2916 of file qcustomplot.h.


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