2015-07-11 18:56:02 +08:00
/*
2019-02-08 00:24:46 +08:00
Copyright ( c ) 2008 - 2019 Jan W . Krieger
2015-07-11 18:56:02 +08:00
2015-07-12 22:34:27 +08:00
2015-07-11 18:56:02 +08:00
This software is free software : you can redistribute it and / or modify
it under the terms of the GNU Lesser General Public License ( LGPL ) as published by
2019-02-08 00:24:46 +08:00
the Free Software Foundation , either version 2.1 of the License , or
2015-07-11 18:56:02 +08:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU Lesser General Public License ( LGPL ) for more details .
You should have received a copy of the GNU Lesser General Public License ( LGPL )
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
2018-12-19 00:13:18 +08:00
# ifndef jkqtpgraphsimage_H
# define jkqtpgraphsimage_H
2015-07-11 18:56:02 +08:00
# include <QString>
# include <QPainter>
# include <QImage>
# include <QIcon>
2018-12-19 00:13:18 +08:00
# include "jkqtplotter/jkqtpgraphs.h"
2018-11-26 03:25:44 +08:00
# include "jkqtplottertools/jkqtptools.h"
# include "jkqtplotter/jkqtpbaseelements.h"
# include "jkqtplottertools/jkqtp_imexport.h"
2018-12-19 00:13:18 +08:00
# include "jkqtplottertools/jkqtpimagetools.h"
2015-07-11 18:56:02 +08:00
/*! \brief base class for plotting an image
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_imagelots_elements
2015-07-11 18:56:02 +08:00
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPImageBase : public JKQTPGraph {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPImageBase ( JKQTBasePlotter * parent = nullptr ) ;
2015-07-11 18:56:02 +08:00
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPImageBase ( double x , double y , double width , double height , JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPImageBase ( JKQTPlotter * parent ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPImageBase ( double x , double y , double width , double height , JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum x-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum y-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getYMinMax ( double & miny , double & maxy , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
/** \brief returns the color to be used for the key label */
2018-12-28 05:52:00 +08:00
virtual QColor getKeyLabelColor ( ) override ;
2015-07-11 18:56:02 +08:00
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc width
\ see see width for details */
2019-01-26 20:00:40 +08:00
inline virtual void setWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > width = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc width
\ see see width for details */
2019-01-26 20:00:40 +08:00
inline virtual double getWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > width ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc height
\ see see height for details */
2019-01-26 20:00:40 +08:00
inline virtual void setHeight ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > height = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc height
\ see see height for details */
2019-01-26 20:00:40 +08:00
inline virtual double getHeight ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > height ;
}
2015-07-11 18:56:02 +08:00
protected :
/** \brief x coordinate of lower left corner */
double x ;
/** \brief y coordinate of lower left corner */
double y ;
/** \brief width of image */
double width ;
/** \brief height of image */
double height ;
/*! \brief plot the given QImage onto the widget where the QImage fills the area defined by x, y (lower left corner) and width, height
in the simplest case your implementation of draw ( ) will call
< code > plotImage ( painter , image , this - > x , this - > y , this - > width , this - > height ) ; < / code >
*/
virtual void plotImage ( JKQTPEnhancedPainter & painter , QImage & image , double x , double y , double width , double height ) ;
} ;
/*! \brief base class to hold an image from an 2-dimensional array of values
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_imagelots_elements
\ image html jkqtplotter_simpletest_imageplot . png
2015-07-11 18:56:02 +08:00
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPMathImageBase : public JKQTPImageBase {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief possible datatypes of the data array, plotted by this class. */
enum DataType {
2019-01-26 20:00:40 +08:00
FloatArray , /*!< Data is of type \c float */
DoubleArray , /*!< Data is of type \c double */
UInt8Array , /*!< Data is of type \c uint8_t */
UInt16Array , /*!< Data is of type \c uint16_t */
UInt32Array , /*!< Data is of type \c uint32_t */
UInt64Array , /*!< Data is of type \c uint8_t */
Int8Array , /*!< Data is of type \c int8_t */
Int16Array , /*!< Data is of type \c int16_t */
Int32Array , /*!< Data is of type \c int32_t */
Int64Array /*!< Data is of type \c int64_t */
2015-07-11 18:56:02 +08:00
} ;
2019-01-26 20:00:40 +08:00
/** \brief describes how to modify a rendered image with a second data array \see ModifierModeToString(), StringToModifierMode(), JKQTPImageModifierModeComboBox */
2015-07-11 18:56:02 +08:00
enum ModifierMode {
2019-01-26 20:00:40 +08:00
ModifyNone = 0 , /*!< no modification \image html JKQTPMathImageBaseModifyNone.png */
ModifyValue = 1 , /*!< modify the VALUE-channel from the HSV color space \image html JKQTPMathImageBaseModifyValue.png */
ModifySaturation = 2 , /*!< modify the SATURATION-channel from the HSV color space \image html JKQTPMathImageBaseModifySaturation.png */
ModifyAlpha = 3 , /*!< modify the ALPHA/TRANSPARENCY-channel from the RGBA color space \image html JKQTPMathImageBaseModifyAlpha.png */
ModifyTransparency = ModifyAlpha , /*!< \see ModifyAlpha */
ModifyLuminance = 4 , /*!< modify the LUMINANCE-channel from the HSL color space \image html JKQTPMathImageBaseModifyLuminance.png */
ModifyHue = 5 , /*!< modify the VALUE-channel from the HSV color space \image html JKQTPMathImageBaseModifyHue.png */
2015-07-11 18:56:02 +08:00
} ;
2019-01-26 20:00:40 +08:00
/** \brief convert a ModifierMode to a string \see ModifierModeToString(), ModifierMode */
static ModifierMode StringToModifierMode ( const QString & mode ) ;
2015-07-11 18:56:02 +08:00
2019-01-26 20:00:40 +08:00
/** \brief convert a string to a ModifierMode \see StringToModifierMode(), ModifierMode */
static QString ModifierModeToString ( const ModifierMode & mode ) ;
2015-07-11 18:56:02 +08:00
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPMathImageBase ( JKQTBasePlotter * parent = nullptr ) ;
JKQTPMathImageBase ( double x , double y , double width , double height , JKQTBasePlotter * parent = nullptr ) ;
2019-01-26 19:28:44 +08:00
JKQTPMathImageBase ( double x , double y , double width , double height , DataType datatype , void * data , int Nx , int Ny , JKQTBasePlotter * parent = nullptr ) ;
2015-07-11 18:56:02 +08:00
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPMathImageBase ( JKQTPlotter * parent ) ;
JKQTPMathImageBase ( double x , double y , double width , double height , JKQTPlotter * parent = nullptr ) ;
2019-01-26 19:28:44 +08:00
JKQTPMathImageBase ( double x , double y , double width , double height , DataType datatype , void * data , int Nx , int Ny , JKQTPlotter * parent ) ;
2015-08-02 19:36:54 +08:00
2015-07-11 18:56:02 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
2019-02-08 00:24:46 +08:00
/*! \copydoc Nx
\ see see Nx for details */
2019-01-26 20:00:40 +08:00
inline virtual void setNx ( int __value )
2019-01-10 04:23:24 +08:00
{
this - > Nx = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc Nx
\ see see Nx for details */
2019-01-26 20:00:40 +08:00
inline virtual int getNx ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > Nx ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc Ny
\ see see Ny for details */
2019-01-26 20:00:40 +08:00
inline virtual void setNy ( int __value )
2019-01-10 04:23:24 +08:00
{
this - > Ny = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc Ny
\ see see Ny for details */
2019-01-26 20:00:40 +08:00
inline virtual int getNy ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > Ny ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc data
\ see see data for details */
2019-01-26 20:00:40 +08:00
inline virtual void setData ( void * __value )
2019-01-10 04:23:24 +08:00
{
this - > data = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc data
\ see see data for details */
2019-01-26 20:00:40 +08:00
inline virtual void * getData ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > data ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc datatype
\ see see datatype for details */
2019-01-26 20:00:40 +08:00
inline virtual void setDatatype ( const DataType & __value )
2019-01-10 04:23:24 +08:00
{
this - > datatype = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc datatype
\ see see datatype for details */
2019-01-26 20:00:40 +08:00
inline virtual DataType getDatatype ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > datatype ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc dataModifier
\ see see dataModifier for details */
2019-01-26 20:00:40 +08:00
inline virtual void setDataModifier ( void * __value )
2019-01-10 04:23:24 +08:00
{
this - > dataModifier = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc dataModifier
\ see see dataModifier for details */
2019-01-26 20:00:40 +08:00
inline virtual void * getDataModifier ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > dataModifier ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc datatypeModifier
\ see see datatypeModifier for details */
2019-01-26 20:00:40 +08:00
inline virtual void setDatatypeModifier ( const DataType & __value )
2019-01-10 04:23:24 +08:00
{
this - > datatypeModifier = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc datatypeModifier
\ see see datatypeModifier for details */
2019-01-26 20:00:40 +08:00
inline virtual DataType getDatatypeModifier ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > datatypeModifier ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierMode
\ see see modifierMode for details */
2019-01-26 20:00:40 +08:00
inline virtual void setModifierMode ( const ModifierMode & __value )
2019-01-10 04:23:24 +08:00
{
this - > modifierMode = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierMode
\ see see modifierMode for details */
2019-01-26 20:00:40 +08:00
inline virtual ModifierMode getModifierMode ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > modifierMode ;
}
2015-07-11 18:56:02 +08:00
2019-01-26 20:00:40 +08:00
virtual void setDataModifier ( void * data , DataType datatype ) ;
virtual void setData ( void * data , int Nx , int Ny , DataType datatype ) ;
virtual void setData ( void * data , int Nx , int Ny ) ;
2015-07-11 18:56:02 +08:00
/** \brief determine min/max data value of the image */
virtual void getDataMinMax ( double & imin , double & imax ) ;
/** \brief determine min/max data value of the image */
virtual void getModifierMinMax ( double & imin , double & imax ) ;
QVector < double > getDataAsDoubleVector ( ) const ;
QVector < double > getDataModifierAsDoubleVector ( ) const ;
protected :
/** \brief points to the data array, holding the image */
void * data ;
/** \brief datatype of the data array data */
DataType datatype ;
2019-01-20 23:15:10 +08:00
/** \brief width of the data array data in pt */
2019-01-26 19:28:44 +08:00
int Nx ;
2019-01-20 23:15:10 +08:00
/** \brief height of the data array data in pt */
2019-01-26 19:28:44 +08:00
int Ny ;
2015-07-11 18:56:02 +08:00
/** \brief points to the data array, holding the modifier image */
void * dataModifier ;
/** \brief datatype of the data array data */
DataType datatypeModifier ;
ModifierMode modifierMode ;
double internalDataMin ;
double internalDataMax ;
double internalModifierMin ;
double internalModifierMax ;
/** \brief overwrite this to fill the data poiters before they are accessed (e.g. to load data from a column in the datastore */
virtual void ensureImageData ( ) ;
void modifyImage ( QImage & img ) ;
2019-01-26 19:28:44 +08:00
void modifyImage ( QImage & img , void * dataModifier , DataType datatypeModifier , int Nx , int Ny , double internalModifierMin , double internalModifierMax ) ;
2015-07-11 18:56:02 +08:00
} ;
/*! \brief class to plot an image from a QImage object
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_imagelots_elements
2015-07-11 18:56:02 +08:00
2019-01-29 05:14:27 +08:00
\ image html jkqtplotter_simpletest_rgbimageplot_qt . png
2015-07-11 18:56:02 +08:00
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPImage : public JKQTPImageBase {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPImage ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPImage ( JKQTPlotter * parent ) ;
2018-12-07 01:19:02 +08:00
/** \brief class constructor, which points to an external image (not owned by this object!!!) */
2019-01-20 17:49:29 +08:00
JKQTPImage ( double x , double y , double width , double height , QImage * image , JKQTBasePlotter * parent = nullptr ) ;
2018-12-07 01:19:02 +08:00
/** \brief class constructor, which points to an external image (not owned by this object!!!) */
2019-01-20 23:15:10 +08:00
JKQTPImage ( double x , double y , double width , double height , QImage * image , JKQTPlotter * parent ) ;
2018-12-07 01:19:02 +08:00
/** \brief class constructor, which generates an internal image object, by copying \a image */
2019-01-20 17:49:29 +08:00
JKQTPImage ( double x , double y , double width , double height , const QImage & image , JKQTBasePlotter * parent = nullptr ) ;
2018-12-07 01:19:02 +08:00
/** \brief class constructor, which generates an internal image object, by copying \a image */
2019-01-20 23:15:10 +08:00
JKQTPImage ( double x , double y , double width , double height , const QImage & image , JKQTPlotter * parent ) ;
2018-12-07 01:19:02 +08:00
2018-12-28 05:52:00 +08:00
virtual ~ JKQTPImage ( ) override ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
2018-12-07 01:19:02 +08:00
/** \brief copy an external image into an internally owned copy */
2019-01-26 20:00:40 +08:00
virtual void setImage ( const QImage & image ) ;
2018-12-07 01:19:02 +08:00
/** \brief set an external image to be plotted, the image will NOT BE OWNED by the graph-object */
2019-01-26 20:00:40 +08:00
virtual void setImage ( QImage * image ) ;
2015-07-11 18:56:02 +08:00
2018-12-07 01:19:02 +08:00
/** \brief deletes the internal image */
void clear_image ( ) ;
2015-07-11 18:56:02 +08:00
2019-01-26 20:00:40 +08:00
/*! \brief returns the property image ( \copybrief image ). \details Description of the parameter image is: <BLOCKQUOTE>\copydoc image </BLOCKQUOTE>. \see image for more information */
inline QImage * getImage ( ) const { return this - > image ; }
2015-07-11 18:56:02 +08:00
protected :
2018-12-07 01:19:02 +08:00
/** \brief the image to be plotted. This is freed by the destructor, iff \a image_owned is set to \c true (.e.g by QImage-copy-constructors) */
2015-07-11 18:56:02 +08:00
QImage * image ;
2018-12-07 01:19:02 +08:00
/** \brief indicates that the image \a image is owned by this object (i.e. freed, when the object is destroyed) */
bool image_owned ;
2015-07-11 18:56:02 +08:00
2015-08-02 19:36:54 +08:00
void createImageActions ( ) ;
2015-07-11 18:56:02 +08:00
protected :
QAction * actSaveImage ;
QAction * actCopyImage ;
public :
2019-01-20 17:49:29 +08:00
virtual void setParent ( JKQTBasePlotter * parent ) override ;
2019-01-26 20:00:40 +08:00
virtual void setTitle ( const QString & title ) override ;
2015-07-11 18:56:02 +08:00
public slots :
void saveImagePlotAsImage ( const QString & filename = QString ( " " ) , const QByteArray & outputFormat = QByteArray ( ) ) ;
void copyImagePlotAsImage ( ) ;
} ;
/*! \brief class to plot an image from an 2-dimensional array of values
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_imagelots_elements
2015-07-11 18:56:02 +08:00
2019-01-13 01:53:16 +08:00
\ image html jkqtplotter_simpletest_imageplot . png
\ image html jkqtplotter_simpletest_imageplot_modifier . png
\ image html jkqtplotter_simpletest_imageplot__smallscaletransparent . png
2015-07-11 18:56:02 +08:00
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPMathImage : public JKQTPMathImageBase {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-26 19:28:44 +08:00
JKQTPMathImage ( double x , double y , double width , double height , DataType datatype , void * data , int Nx , int Ny , JKQTPMathImageColorPalette palette = JKQTPMathImageGRAY , JKQTBasePlotter * parent = nullptr ) ;
2019-01-20 17:49:29 +08:00
JKQTPMathImage ( JKQTBasePlotter * parent = nullptr ) ;
2019-01-26 19:28:44 +08:00
JKQTPMathImage ( double x , double y , double width , double height , DataType datatype , void * data , int Nx , int Ny , JKQTPMathImageColorPalette palette , JKQTPlotter * parent ) ;
2019-01-20 23:15:10 +08:00
JKQTPMathImage ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
virtual void setParent ( JKQTBasePlotter * parent ) override ;
2015-07-11 18:56:02 +08:00
/*! \brief get list with all available palettes */
static QStringList getPalettes ( ) ;
/*! \brief get list with all available palettes */
static int getPalettesCount ( ) ;
/*! \brief get QIcon representing the given palette */
static QIcon getPaletteIcon ( int i ) ;
/*! \brief get QIcon representing the given palette */
static QIcon getPaletteIcon ( JKQTPMathImageColorPalette palette ) ;
2018-11-29 06:10:14 +08:00
/*! \brief get QImage representing the given palette */
2015-08-05 20:27:09 +08:00
static QImage getPaletteImage ( int i , int width , int height = 1 ) ;
2018-11-29 06:10:14 +08:00
/*! \brief get QImage representing the given palette */
2015-08-05 20:27:09 +08:00
static QImage getPaletteImage ( JKQTPMathImageColorPalette palette , int width , int height = 1 ) ;
2015-07-11 18:56:02 +08:00
/*! \brief get QIcon representing the given palette */
static QIcon getPaletteKeyIcon ( int i ) ;
/*! \brief get QIcon representing the given palette */
static QIcon getPaletteKeyIcon ( JKQTPMathImageColorPalette palette ) ;
2018-11-29 06:10:14 +08:00
/*! \brief get QImage representing the given palette */
2015-07-11 18:56:02 +08:00
static QImage getPaletteKeyImage ( int i , int width , int height ) ;
2018-11-29 06:10:14 +08:00
/*! \brief get QImage representing the given palette */
2015-07-11 18:56:02 +08:00
static QImage getPaletteKeyImage ( JKQTPMathImageColorPalette palette , int width , int height ) ;
2019-02-08 00:24:46 +08:00
/*! \copydoc palette
\ see see palette for details */
2019-01-26 20:00:40 +08:00
inline virtual void setPalette ( const JKQTPMathImageColorPalette & __value )
2019-01-10 04:23:24 +08:00
{
this - > palette = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc palette
\ see see palette for details */
2019-01-26 20:00:40 +08:00
inline virtual JKQTPMathImageColorPalette getPalette ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > palette ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMinFailAction
\ see see rangeMinFailAction for details */
2019-01-26 20:00:40 +08:00
inline virtual void setRangeMinFailAction ( const JKQTPMathImageColorRangeFailAction & __value )
2019-01-10 04:23:24 +08:00
{
this - > rangeMinFailAction = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMinFailAction
\ see see rangeMinFailAction for details */
2019-01-26 20:00:40 +08:00
inline virtual JKQTPMathImageColorRangeFailAction getActionRangeMinFail ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > rangeMinFailAction ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMaxFailAction
\ see see rangeMaxFailAction for details */
2019-01-26 20:00:40 +08:00
inline virtual void setRangeMaxFailAction ( const JKQTPMathImageColorRangeFailAction & __value )
2019-01-10 04:23:24 +08:00
{
this - > rangeMaxFailAction = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMaxFailAction
\ see see rangeMaxFailAction for details */
2019-01-26 20:00:40 +08:00
inline virtual JKQTPMathImageColorRangeFailAction getActionRangeMaxFail ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > rangeMaxFailAction ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMinFailColor
\ see see rangeMinFailColor for details */
2019-01-26 20:00:40 +08:00
inline virtual void setRangeMinFailColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > rangeMinFailColor = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMinFailColor
\ see see rangeMinFailColor for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getRangeMinFailColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > rangeMinFailColor ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMaxFailColor
\ see see rangeMaxFailColor for details */
2019-01-26 20:00:40 +08:00
inline virtual void setRangeMaxFailColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > rangeMaxFailColor = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc rangeMaxFailColor
\ see see rangeMaxFailColor for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getRangeMaxFailColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > rangeMaxFailColor ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc nanColor
\ see see nanColor for details */
2019-01-26 20:00:40 +08:00
inline virtual void setNanColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > nanColor = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc nanColor
\ see see nanColor for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getNanColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > nanColor ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc infColor
\ see see infColor for details */
2019-01-26 20:00:40 +08:00
inline virtual void setInfColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > infColor = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc infColor
\ see see infColor for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getInfColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > infColor ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc showColorBar
\ see see showColorBar for details */
2019-01-26 03:16:04 +08:00
inline virtual void setShowColorBar ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > showColorBar = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc showColorBar
\ see see showColorBar for details */
2019-01-26 03:16:04 +08:00
inline virtual bool getShowColorBar ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > showColorBar ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarWidth
\ see see colorBarWidth for details */
inline virtual void setColorBarWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > colorBarWidth = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarWidth
\ see see colorBarWidth for details */
inline virtual double getColorBarWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > colorBarWidth ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarModifiedWidth
\ see see colorBarModifiedWidth for details */
inline virtual void setColorBarModifiedWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > colorBarModifiedWidth = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarModifiedWidth
\ see see colorBarModifiedWidth for details */
inline virtual double getColorBarModifiedWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > colorBarModifiedWidth ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarOffset
\ see see colorBarOffset for details */
inline virtual void setColorBarOffset ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > colorBarOffset = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarOffset
\ see see colorBarOffset for details */
inline virtual double getColorBarOffset ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > colorBarOffset ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarRelativeHeight
\ see see colorBarRelativeHeight for details */
2019-01-26 20:00:40 +08:00
inline virtual void setColorBarRelativeHeight ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > colorBarRelativeHeight = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarRelativeHeight
\ see see colorBarRelativeHeight for details */
2019-01-26 20:00:40 +08:00
inline virtual double getColorBarRelativeHeight ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > colorBarRelativeHeight ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageMin
\ see see imageMin for details */
2019-01-26 20:00:40 +08:00
inline virtual void setImageMin ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > imageMin = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageMin
\ see see imageMin for details */
2019-01-26 20:00:40 +08:00
inline virtual double getImageMin ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > imageMin ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageMax
\ see see imageMax for details */
2019-01-26 20:00:40 +08:00
inline virtual void setImageMax ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > imageMax = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageMax
\ see see imageMax for details */
2019-01-26 20:00:40 +08:00
inline virtual double getImageMax ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > imageMax ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc autoImageRange
\ see see autoImageRange for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAutoImageRange ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > autoImageRange = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc autoImageRange
\ see see autoImageRange for details */
2019-01-26 20:00:40 +08:00
inline virtual bool getAutoImageRange ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > autoImageRange ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageName
\ see see imageName for details */
2019-01-26 20:00:40 +08:00
inline virtual void setImageName ( const QString & __value )
2019-01-10 04:23:24 +08:00
{
this - > imageName = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageName
\ see see imageName for details */
2019-01-26 20:00:40 +08:00
inline virtual QString getImageName ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > imageName ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageNameFontSize
\ see see imageNameFontSize for details */
2019-01-26 20:00:40 +08:00
inline virtual void setImageNameFontSize ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > imageNameFontSize = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageNameFontSize
\ see see imageNameFontSize for details */
2019-01-26 20:00:40 +08:00
inline virtual double getImageNameFontSize ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > imageNameFontSize ;
}
2019-01-26 20:00:40 +08:00
/*! \brief returns the property colorBarRightAxis ( \copybrief colorBarRightAxis ). \details Description of the parameter colorBarRightAxis is: <BLOCKQUOTE>\copydoc colorBarRightAxis </BLOCKQUOTE>. \see colorBarRightAxis for more information */
2019-02-08 00:24:46 +08:00
inline JKQTPVerticalIndependentAxis * getColorBarRightAxis ( ) { return this - > colorBarRightAxis ; }
2019-01-26 20:00:40 +08:00
/*! \brief returns the property colorBarTopAxis ( \copybrief colorBarTopAxis ). \details Description of the parameter colorBarTopAxis is: <BLOCKQUOTE>\copydoc colorBarTopAxis </BLOCKQUOTE>. \see colorBarTopAxis for more information */
2019-02-08 00:24:46 +08:00
inline JKQTPHorizontalIndependentAxis * getColorBarTopAxis ( ) { return this - > colorBarTopAxis ; }
2019-01-26 20:00:40 +08:00
/*! \brief returns the property modifierColorBarTopAxis ( \copybrief modifierColorBarTopAxis ). \details Description of the parameter modifierColorBarTopAxis is: <BLOCKQUOTE>\copydoc modifierColorBarTopAxis </BLOCKQUOTE>. \see modifierColorBarTopAxis for more information */
2019-02-08 00:24:46 +08:00
inline JKQTPVerticalIndependentAxis * getModifierColorBarTopAxis ( ) { return this - > modifierColorBarTopAxis ; }
2019-01-26 20:00:40 +08:00
/*! \brief returns the property modifierColorBarRightAxis ( \copybrief modifierColorBarRightAxis ). \details Description of the parameter modifierColorBarRightAxis is: <BLOCKQUOTE>\copydoc modifierColorBarRightAxis </BLOCKQUOTE>. \see modifierColorBarRightAxis for more information */
2019-02-08 00:24:46 +08:00
inline JKQTPHorizontalIndependentAxis * getModifierColorBarRightAxis ( ) { return this - > modifierColorBarRightAxis ; }
/*! \brief returns the property colorBarRightAxis ( \copybrief colorBarRightAxis ). \details Description of the parameter colorBarRightAxis is: <BLOCKQUOTE>\copydoc colorBarRightAxis </BLOCKQUOTE>. \see colorBarRightAxis for more information */
inline const JKQTPVerticalIndependentAxis * getColorBarRightAxis ( ) const { return this - > colorBarRightAxis ; }
/*! \brief returns the property colorBarTopAxis ( \copybrief colorBarTopAxis ). \details Description of the parameter colorBarTopAxis is: <BLOCKQUOTE>\copydoc colorBarTopAxis </BLOCKQUOTE>. \see colorBarTopAxis for more information */
inline const JKQTPHorizontalIndependentAxis * getColorBarTopAxis ( ) const { return this - > colorBarTopAxis ; }
/*! \brief returns the property modifierColorBarTopAxis ( \copybrief modifierColorBarTopAxis ). \details Description of the parameter modifierColorBarTopAxis is: <BLOCKQUOTE>\copydoc modifierColorBarTopAxis </BLOCKQUOTE>. \see modifierColorBarTopAxis for more information */
inline const JKQTPVerticalIndependentAxis * getModifierColorBarTopAxis ( ) const { return this - > modifierColorBarTopAxis ; }
/*! \brief returns the property modifierColorBarRightAxis ( \copybrief modifierColorBarRightAxis ). \details Description of the parameter modifierColorBarRightAxis is: <BLOCKQUOTE>\copydoc modifierColorBarRightAxis </BLOCKQUOTE>. \see modifierColorBarRightAxis for more information */
inline const JKQTPHorizontalIndependentAxis * getModifierColorBarRightAxis ( ) const { return this - > modifierColorBarRightAxis ; }
/*! \copydoc colorBarTopVisible
\ see see colorBarTopVisible for details */
2019-01-26 20:00:40 +08:00
inline virtual void setColorBarTopVisible ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > colorBarTopVisible = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarTopVisible
\ see see colorBarTopVisible for details */
2019-01-26 20:00:40 +08:00
inline virtual bool getColorBarTopVisible ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > colorBarTopVisible ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarRightVisible
\ see see colorBarRightVisible for details */
2019-01-26 20:00:40 +08:00
inline virtual void setColorBarRightVisible ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > colorBarRightVisible = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc colorBarRightVisible
\ see see colorBarRightVisible for details */
2019-01-26 20:00:40 +08:00
inline virtual bool getColorBarRightVisible ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > colorBarRightVisible ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc autoModifierRange
\ see see autoModifierRange for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAutoModifierRange ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > autoModifierRange = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc autoModifierRange
\ see see autoModifierRange for details */
2019-01-26 20:00:40 +08:00
inline virtual bool getAutoModifierRange ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > autoModifierRange ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierMin
\ see see modifierMin for details */
2019-01-26 20:00:40 +08:00
inline virtual void setModifierMin ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > modifierMin = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierMin
\ see see modifierMin for details */
2019-01-26 20:00:40 +08:00
inline virtual double getModifierMin ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > modifierMin ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierMax
\ see see modifierMax for details */
2019-01-26 20:00:40 +08:00
inline virtual void setModifierMax ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > modifierMax = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierMax
\ see see modifierMax for details */
2019-01-26 20:00:40 +08:00
inline virtual double getModifierMax ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > modifierMax ;
}
2015-07-11 18:56:02 +08:00
2019-01-26 20:00:40 +08:00
void setPalette ( int pal ) ;
2015-07-11 18:56:02 +08:00
/*! \brief if the graph plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
\ note If you want to draw outside , then you ' ll also have to implement drawOutside ( )
*/
2018-12-28 05:52:00 +08:00
virtual void getOutsideSize ( JKQTPEnhancedPainter & painter , int & leftSpace , int & rightSpace , int & topSpace , int & bottomSpace ) override ;
2015-07-11 18:56:02 +08:00
/*! \brief plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
\ note If you want to draw outside , then you ' ll also have to implement getOutsideSize ( ) , so enough space is reserved
The four value supplied tell the method where to draw ( inside one of the rectangles ) .
*/
2018-12-28 05:52:00 +08:00
virtual void drawOutside ( JKQTPEnhancedPainter & painter , QRect leftSpace , QRect rightSpace , QRect topSpace , QRect bottomSpace ) override ;
2015-07-11 18:56:02 +08:00
2015-08-05 20:27:09 +08:00
/*! \brief returns a QImage, which contains the plaette drawn outside the plot. \a steps is the number of data-setps (and the size of the output image) used for the palette image. */
2019-01-26 20:00:40 +08:00
virtual QImage drawOutsidePalette ( uint8_t steps = 200 ) ;
2015-08-05 20:27:09 +08:00
2015-07-11 18:56:02 +08:00
/*! \brief return the plotted image only as a QImage */
virtual QImage drawImage ( ) ;
/** \brief determine min/max data value of the image */
2018-12-28 05:52:00 +08:00
virtual void getDataMinMax ( double & imin , double & imax ) override ;
2015-07-11 18:56:02 +08:00
/** \brief determine min/max data value of the image */
2018-12-28 05:52:00 +08:00
virtual void getModifierMinMax ( double & imin , double & imax ) override ;
2015-07-11 18:56:02 +08:00
/** \brief return the value (raw data!) of the contained image at the given coordinate */
double getValueAt ( double x , double y ) ;
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
protected :
2015-08-02 19:36:54 +08:00
void initJKQTPMathImage ( ) ;
2015-07-11 18:56:02 +08:00
/** \brief top color bar visible */
bool colorBarTopVisible ;
/** \brief right color bar visible */
bool colorBarRightVisible ;
/** \brief name of the image displayed above color bar (may contain LaTeX markup!) */
QString imageName ;
/** \brief font size in points when displaying imageName */
double imageNameFontSize ;
/** \brief palette for plotting an image */
JKQTPMathImageColorPalette palette ;
/** \brief indicate whether to display a color bar */
bool showColorBar ;
2019-02-08 00:24:46 +08:00
/** \brief width of the color bar [pt] */
double colorBarWidth ;
2015-07-11 18:56:02 +08:00
/** \brief width of the color bar when modifier is on */
2019-02-08 00:24:46 +08:00
double colorBarModifiedWidth ;
2015-07-11 18:56:02 +08:00
/** \brief height of the color bar, as multiple of plotHeight */
double colorBarRelativeHeight ;
/** \brief indicates whether to estimate min/max of the image automatically */
bool autoImageRange ;
/** \brief image value range minimum */
double imageMin ;
/** \brief image value range maximum */
double imageMax ;
/** \brief indicates whether to estimate min/max of the modifier automatically */
bool autoModifierRange ;
/** \brief modifier value range minimum */
double modifierMin ;
/** \brief modifier value range maximum */
double modifierMax ;
2019-02-08 00:24:46 +08:00
/** \brief offset between outside space border and color bar [pt] */
double colorBarOffset ;
2015-07-11 18:56:02 +08:00
/** \brief which action to take if a color is below \a imageMin and \a autoImageRange \c ==false */
JKQTPMathImageColorRangeFailAction rangeMinFailAction ;
/** \brief which action to take if a color is above \a imageMax and \a autoImageRange \c ==false */
JKQTPMathImageColorRangeFailAction rangeMaxFailAction ;
/** \brief color to use for some settings of \a rangeMinFailAction */
QColor rangeMinFailColor ;
/** \brief color to use for some settings of \a rangeMaxFailAction */
QColor rangeMaxFailColor ;
/** \brief color to use for a not-a-number value */
QColor nanColor ;
/** \brief color to use for an infinity value */
QColor infColor ;
/** \brief object used for color bar axes
*
* \ note this axis has some kind of a special role . It is used to format color bar axes
*/
2019-01-20 17:49:29 +08:00
JKQTPVerticalIndependentAxis * colorBarRightAxis ;
JKQTPHorizontalIndependentAxis * colorBarTopAxis ;
JKQTPVerticalIndependentAxis * modifierColorBarTopAxis ;
JKQTPHorizontalIndependentAxis * modifierColorBarRightAxis ;
2015-07-11 18:56:02 +08:00
protected :
QAction * actSaveImage ;
QAction * actCopyImage ;
2015-08-05 20:27:09 +08:00
QAction * actSavePalette ;
QAction * actCopyPalette ;
2015-07-11 18:56:02 +08:00
public :
2019-01-26 20:00:40 +08:00
virtual void setTitle ( const QString & title ) override ;
2015-07-11 18:56:02 +08:00
public slots :
void saveImagePlotAsImage ( const QString & filename = QString ( " " ) , const QByteArray & outputFormat = QByteArray ( ) ) ;
void copyImagePlotAsImage ( ) ;
2015-08-05 20:27:09 +08:00
void saveColorbarPlotAsImage ( const QString & filename = QString ( " " ) , const QByteArray & outputFormat = QByteArray ( ) ) ;
void copyColorbarPlotAsImage ( ) ;
2015-07-11 18:56:02 +08:00
} ;
/*! \brief class to plot an image from an 2-dimensional array of values stored in a column of the datastore
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_imagelots_elements
\ image html jkqtplotter_simpletest_imageplot . png
\ image html jkqtplotter_simpletest_imageplot_modifier . png
\ image html jkqtplotter_simpletest_imageplot__smallscaletransparent . png
2015-07-11 18:56:02 +08:00
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPColumnMathImage : public JKQTPMathImage {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPColumnMathImage ( JKQTBasePlotter * parent = nullptr ) ;
2019-01-26 19:28:44 +08:00
JKQTPColumnMathImage ( double x , double y , double width , double height , int Nx , int Ny , JKQTBasePlotter * parent = nullptr ) ;
JKQTPColumnMathImage ( double x , double y , double width , double height , int imageColumn , int Nx , int Ny , JKQTPMathImageColorPalette palette = JKQTPMathImageGRAY , JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPColumnMathImage ( JKQTPlotter * parent ) ;
2019-01-26 19:28:44 +08:00
JKQTPColumnMathImage ( double x , double y , double width , double height , int Nx , int Ny , JKQTPlotter * parent ) ;
JKQTPColumnMathImage ( double x , double y , double width , double height , int imageColumn , int Nx , int Ny , JKQTPMathImageColorPalette palette , JKQTPlotter * parent ) ;
JKQTPColumnMathImage ( double x , double y , double width , double height , int imageColumn , int Nx , int Ny , JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
2019-02-08 00:24:46 +08:00
/*! \copydoc imageColumn
\ see see imageColumn for details */
2019-01-26 20:00:40 +08:00
inline virtual void setImageColumn ( int __value )
2019-01-10 04:23:24 +08:00
{
this - > imageColumn = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc imageColumn
\ see see imageColumn for details */
2019-01-26 20:00:40 +08:00
inline virtual int getImageColumn ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > imageColumn ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierColumn
\ see see modifierColumn for details */
2019-01-26 20:00:40 +08:00
inline virtual void setModifierColumn ( int __value )
2019-01-10 04:23:24 +08:00
{
this - > modifierColumn = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc modifierColumn
\ see see modifierColumn for details */
2019-01-26 20:00:40 +08:00
inline virtual int getModifierColumn ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > modifierColumn ;
}
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPGraph::usesColumn() */
2018-12-28 05:52:00 +08:00
virtual bool usesColumn ( int c ) const override ;
2015-07-11 18:56:02 +08:00
protected :
/** \brief column containing the displayed image */
int imageColumn ;
/** \brief column containing the modifier image */
int modifierColumn ;
2018-12-28 05:52:00 +08:00
virtual void ensureImageData ( ) override ;
2015-07-11 18:56:02 +08:00
} ;
2018-12-19 00:13:18 +08:00
# endif // jkqtpgraphsimage_H
2015-07-11 18:56:02 +08:00