iCub-main
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | List of all members
QCPScatterStyle Class Reference

Represents the visual appearance of scatter points. More...

#include <qcustomplot.h>

Public Types

enum  ScatterShape {
  ssNone ,
  ssDot ,
  ssCross ,
  ssPlus ,
  ssCircle ,
  ssDisc ,
  ssSquare ,
  ssDiamond ,
  ssStar ,
  ssTriangle ,
  ssTriangleInverted ,
  ssCrossSquare ,
  ssPlusSquare ,
  ssCrossCircle ,
  ssPlusCircle ,
  ssPeace ,
  ssPixmap ,
  ssCustom
}
 Defines the shape used for scatter points. More...
 

Public Member Functions

 QCPScatterStyle ()
 Creates a new QCPScatterStyle instance with size set to 6.
 
 QCPScatterStyle (ScatterShape shape, double size=6)
 Creates a new QCPScatterStyle instance with shape set to shape and size to size.
 
 QCPScatterStyle (ScatterShape shape, const QColor &color, double size)
 Creates a new QCPScatterStyle instance with shape set to shape, the pen color set to color, and size to size.
 
 QCPScatterStyle (ScatterShape shape, const QColor &color, const QColor &fill, double size)
 Creates a new QCPScatterStyle instance with shape set to shape, the pen color set to color, the brush color to fill (with a solid pattern), and size to size.
 
 QCPScatterStyle (ScatterShape shape, const QPen &pen, const QBrush &brush, double size)
 Creates a new QCPScatterStyle instance with shape set to shape, the pen set to pen, the brush to brush, and size to size.
 
 QCPScatterStyle (const QPixmap &pixmap)
 Creates a new QCPScatterStyle instance which will show the specified pixmap.
 
 QCPScatterStyle (const QPainterPath &customPath, const QPen &pen, const QBrush &brush=Qt::NoBrush, double size=6)
 Creates a new QCPScatterStyle instance with a custom shape that is defined via customPath.
 
double size () const
 
ScatterShape shape () const
 
QPen pen () const
 
QBrush brush () const
 
QPixmap pixmap () const
 
QPainterPath customPath () const
 
void setSize (double size)
 Sets the size (pixel diameter) of the drawn scatter points to size.
 
void setShape (ScatterShape shape)
 Sets the shape to shape.
 
void setPen (const QPen &pen)
 Sets the pen that will be used to draw scatter points to pen.
 
void setBrush (const QBrush &brush)
 Sets the brush that will be used to fill scatter points to brush.
 
void setPixmap (const QPixmap &pixmap)
 Sets the pixmap that will be drawn as scatter point to pixmap.
 
void setCustomPath (const QPainterPath &customPath)
 Sets the custom shape that will be drawn as scatter point to customPath.
 
bool isNone () const
 Returns whether the scatter shape is ssNone.
 
bool isPenDefined () const
 Returns whether a pen has been defined for this scatter style.
 
void applyTo (QCPPainter *painter, const QPen &defaultPen) const
 Applies the pen and the brush of this scatter style to painter.
 
void drawShape (QCPPainter *painter, QPointF pos) const
 Draws the scatter shape with painter at position pos.
 
void drawShape (QCPPainter *painter, double x, double y) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Draws the scatter shape with painter at position x and y.
 

Protected Attributes

double mSize
 
ScatterShape mShape
 
QPen mPen
 
QBrush mBrush
 
QPixmap mPixmap
 
QPainterPath mCustomPath
 
bool mPenDefined
 

Detailed Description

Represents the visual appearance of scatter points.

This class holds information about shape, color and size of scatter points. In plottables like QCPGraph it is used to store how scatter points shall be drawn. For example, QCPGraph::setScatterStyle takes a QCPScatterStyle instance.

A scatter style consists of a shape (setShape), a line color (setPen) and possibly a fill (setBrush), if the shape provides a fillable area. Further, the size of the shape can be controlled with setSize.

Specifying a scatter style

You can set all these configurations either by calling the respective functions on an instance:

QCPScatterStyle myScatter;
myScatter.setPen(Qt::blue);
myScatter.setBrush(Qt::white);
myScatter.setSize(5);
customPlot->graph(0)->setScatterStyle(myScatter);
Represents the visual appearance of scatter points.
void setBrush(const QBrush &brush)
Sets the brush that will be used to fill scatter points to brush.
void setPen(const QPen &pen)
Sets the pen that will be used to draw scatter points to pen.
void setShape(ScatterShape shape)
Sets the shape to shape.
void setSize(double size)
Sets the size (pixel diameter) of the drawn scatter points to size.
@ ssCircle
\enumimage{ssCircle.png} a circle

Or you can use one of the various constructors that take different parameter combinations, making it easy to specify a scatter style in a single call, like so:

customPlot->graph(0)->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, Qt::white, 5));
QCPScatterStyle()
Creates a new QCPScatterStyle instance with size set to 6.

Leaving the color/pen up to the plottable

There are two constructors which leave the pen undefined: QCPScatterStyle() and QCPScatterStyle(ScatterShape shape, double size). If those constructors are used, a call to isPenDefined will return false. It leads to scatter points that inherit the pen from the plottable that uses the scatter style. Thus, if such a scatter style is passed to QCPGraph, the line color of the graph (QCPGraph::setPen) will be used by the scatter points. This makes it very convenient to set up typical scatter settings:

customPlot->graph(0)->setScatterStyle(QCPScatterStyle::ssPlus);
@ ssPlus
\enumimage{ssPlus.png} a plus

Notice that it wasn't even necessary to explicitly call a QCPScatterStyle constructor. This works because QCPScatterStyle provides a constructor that can transform a ScatterShape directly into a QCPScatterStyle instance (that's the QCPScatterStyle(ScatterShape shape, double size) constructor with a default for size). In those cases, C++ allows directly supplying a ScatterShape, where actually a QCPScatterStyle is expected.

Custom shapes and pixmaps

QCPScatterStyle supports drawing custom shapes and arbitrary pixmaps as scatter points.

For custom shapes, you can provide a QPainterPath with the desired shape to the setCustomPath function or call the constructor that takes a painter path. The scatter shape will automatically be set to ssCustom.

For pixmaps, you call setPixmap with the desired QPixmap. Alternatively you can use the constructor that takes a QPixmap. The scatter shape will automatically be set to ssPixmap. Note that setSize does not influence the appearance of the pixmap.

Definition at line 233 of file qcustomplot.h.

Member Enumeration Documentation

◆ ScatterShape

Defines the shape used for scatter points.

On plottables/items that draw scatters, the sizes of these visualizations (with exception of ssDot and ssPixmap) can be controlled with the setSize function. Scatters are drawn with the pen and brush specified with setPen and setBrush.

Enumerator
ssNone 

no scatter symbols are drawn (e.g. in QCPGraph, data only represented with lines)

ssDot 

\enumimage{ssDot.png} a single pixel (use ssDisc or ssCircle if you want a round shape with a certain radius)

ssCross 

\enumimage{ssCross.png} a cross

ssPlus 

\enumimage{ssPlus.png} a plus

ssCircle 

\enumimage{ssCircle.png} a circle

ssDisc 

\enumimage{ssDisc.png} a circle which is filled with the pen's color (not the brush as with ssCircle)

ssSquare 

\enumimage{ssSquare.png} a square

ssDiamond 

\enumimage{ssDiamond.png} a diamond

ssStar 

\enumimage{ssStar.png} a star with eight arms, i.e. a combination of cross and plus

ssTriangle 

\enumimage{ssTriangle.png} an equilateral triangle, standing on baseline

ssTriangleInverted 

\enumimage{ssTriangleInverted.png} an equilateral triangle, standing on corner

ssCrossSquare 

\enumimage{ssCrossSquare.png} a square with a cross inside

ssPlusSquare 

\enumimage{ssPlusSquare.png} a square with a plus inside

ssCrossCircle 

\enumimage{ssCrossCircle.png} a circle with a cross inside

ssPlusCircle 

\enumimage{ssPlusCircle.png} a circle with a plus inside

ssPeace 

\enumimage{ssPeace.png} a circle, with one vertical and two downward diagonal lines

ssPixmap 

a custom pixmap specified by setPixmap, centered on the data point coordinates

ssCustom 

custom painter operations are performed per scatter (As QPainterPath, see setCustomPath)

Definition at line 245 of file qcustomplot.h.

Constructor & Destructor Documentation

◆ QCPScatterStyle() [1/7]

QCPScatterStyle::QCPScatterStyle ( )

Creates a new QCPScatterStyle instance with size set to 6.

No shape, pen or brush is defined.

Since the pen is undefined (isPenDefined returns false), the scatter color will be inherited from the plottable that uses this scatter style.

Definition at line 343 of file qcustomplot.cpp.

◆ QCPScatterStyle() [2/7]

QCPScatterStyle::QCPScatterStyle ( ScatterShape  shape,
double  size = 6 
)

Creates a new QCPScatterStyle instance with shape set to shape and size to size.

No pen or brush is defined.

Since the pen is undefined (isPenDefined returns false), the scatter color will be inherited from the plottable that uses this scatter style.

Definition at line 359 of file qcustomplot.cpp.

◆ QCPScatterStyle() [3/7]

QCPScatterStyle::QCPScatterStyle ( ScatterShape  shape,
const QColor &  color,
double  size 
)

Creates a new QCPScatterStyle instance with shape set to shape, the pen color set to color, and size to size.

No brush is defined, i.e. the scatter point will not be filled.

Definition at line 372 of file qcustomplot.cpp.

◆ QCPScatterStyle() [4/7]

QCPScatterStyle::QCPScatterStyle ( ScatterShape  shape,
const QColor &  color,
const QColor &  fill,
double  size 
)

Creates a new QCPScatterStyle instance with shape set to shape, the pen color set to color, the brush color to fill (with a solid pattern), and size to size.

Definition at line 385 of file qcustomplot.cpp.

◆ QCPScatterStyle() [5/7]

QCPScatterStyle::QCPScatterStyle ( ScatterShape  shape,
const QPen &  pen,
const QBrush &  brush,
double  size 
)

Creates a new QCPScatterStyle instance with shape set to shape, the pen set to pen, the brush to brush, and size to size.

Warning
In some cases it might be tempting to directly use a pen style like Qt::NoPen as pen and a color like Qt::blue as brush. Notice however, that the corresponding call
QCPScatterStyle(QCPScatterShape::ssCircle, Qt::NoPen, Qt::blue, 5)
doesn't necessarily lead C++ to use this constructor in some cases, but might mistake Qt::NoPen for a QColor and use the QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill, double size) constructor instead (which will lead to an unexpected look of the scatter points). To prevent this, be more explicit with the parameter types. For example, use QBrush(Qt::blue) instead of just Qt::blue, to clearly point out to the compiler that this constructor is wanted.

Definition at line 409 of file qcustomplot.cpp.

◆ QCPScatterStyle() [6/7]

QCPScatterStyle::QCPScatterStyle ( const QPixmap &  pixmap)

Creates a new QCPScatterStyle instance which will show the specified pixmap.

The scatter shape is set to ssPixmap.

Definition at line 422 of file qcustomplot.cpp.

◆ QCPScatterStyle() [7/7]

QCPScatterStyle::QCPScatterStyle ( const QPainterPath &  customPath,
const QPen &  pen,
const QBrush &  brush = Qt::NoBrush,
double  size = 6 
)

Creates a new QCPScatterStyle instance with a custom shape that is defined via customPath.

The scatter shape is set to ssCustom.

The custom shape line will be drawn with pen and filled with brush. The size has a slightly different meaning than for built-in scatter points: The custom path will be drawn scaled by a factor of size/6.0. Since the default size is 6, the custom path will appear at a its natural size by default. To double the size of the path for example, set size to 12.

Definition at line 441 of file qcustomplot.cpp.

Member Function Documentation

◆ applyTo()

void QCPScatterStyle::applyTo ( QCPPainter painter,
const QPen &  defaultPen 
) const

Applies the pen and the brush of this scatter style to painter.

If this scatter style has an undefined pen (isPenDefined), sets the pen of painter to defaultPen instead.

This function is used by plottables (or any class that wants to draw scatters) just before a number of scatters with this style shall be drawn with the painter.

See also
drawShape

Definition at line 532 of file qcustomplot.cpp.

◆ brush()

QBrush QCPScatterStyle::brush ( ) const
inline

Definition at line 277 of file qcustomplot.h.

◆ customPath()

QPainterPath QCPScatterStyle::customPath ( ) const
inline

Definition at line 279 of file qcustomplot.h.

◆ drawShape() [1/2]

void QCPScatterStyle::drawShape ( QCPPainter painter,
double  x,
double  y 
) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Draws the scatter shape with painter at position x and y.

Definition at line 554 of file qcustomplot.cpp.

◆ drawShape() [2/2]

void QCPScatterStyle::drawShape ( QCPPainter painter,
QPointF  pos 
) const

Draws the scatter shape with painter at position pos.

This function does not modify the pen or the brush on the painter, as applyTo is meant to be called before scatter points are drawn with drawShape.

See also
applyTo

Definition at line 546 of file qcustomplot.cpp.

◆ isNone()

bool QCPScatterStyle::isNone ( ) const
inline

Returns whether the scatter shape is ssNone.

See also
setShape

Definition at line 290 of file qcustomplot.h.

◆ isPenDefined()

bool QCPScatterStyle::isPenDefined ( ) const
inline

Returns whether a pen has been defined for this scatter style.

The pen is undefined if a constructor is called that does not carry pen as parameter. Those are QCPScatterStyle() and QCPScatterStyle(ScatterShape shape, double size). If the pen is left undefined, the scatter color will be inherited from the plottable that uses this scatter style.

See also
setPen

Definition at line 291 of file qcustomplot.h.

◆ pen()

QPen QCPScatterStyle::pen ( ) const
inline

Definition at line 276 of file qcustomplot.h.

◆ pixmap()

QPixmap QCPScatterStyle::pixmap ( ) const
inline

Definition at line 278 of file qcustomplot.h.

◆ setBrush()

void QCPScatterStyle::setBrush ( const QBrush &  brush)

Sets the brush that will be used to fill scatter points to brush.

Note that not all scatter shapes have fillable areas. For example, ssPlus does not while ssCircle does.

See also
setPen

Definition at line 494 of file qcustomplot.cpp.

◆ setCustomPath()

void QCPScatterStyle::setCustomPath ( const QPainterPath &  customPath)

Sets the custom shape that will be drawn as scatter point to customPath.

The scatter shape is automatically set to ssCustom.

Definition at line 517 of file qcustomplot.cpp.

◆ setPen()

void QCPScatterStyle::setPen ( const QPen &  pen)

Sets the pen that will be used to draw scatter points to pen.

If the pen was previously undefined (see isPenDefined), the pen is considered defined after a call to this function, even if pen is Qt::NoPen.

See also
setBrush

Definition at line 482 of file qcustomplot.cpp.

◆ setPixmap()

void QCPScatterStyle::setPixmap ( const QPixmap &  pixmap)

Sets the pixmap that will be drawn as scatter point to pixmap.

Note that setSize does not influence the appearance of the pixmap.

The scatter shape is automatically set to ssPixmap.

Definition at line 506 of file qcustomplot.cpp.

◆ setShape()

void QCPScatterStyle::setShape ( QCPScatterStyle::ScatterShape  shape)

Sets the shape to shape.

Note that the calls setPixmap and setCustomPath automatically set the shape to ssPixmap and ssCustom, respectively.

See also
setSize

Definition at line 469 of file qcustomplot.cpp.

◆ setSize()

void QCPScatterStyle::setSize ( double  size)

Sets the size (pixel diameter) of the drawn scatter points to size.

See also
setShape

Definition at line 456 of file qcustomplot.cpp.

◆ shape()

ScatterShape QCPScatterStyle::shape ( ) const
inline

Definition at line 275 of file qcustomplot.h.

◆ size()

double QCPScatterStyle::size ( ) const
inline

Definition at line 274 of file qcustomplot.h.

Member Data Documentation

◆ mBrush

QBrush QCPScatterStyle::mBrush
protected

Definition at line 301 of file qcustomplot.h.

◆ mCustomPath

QPainterPath QCPScatterStyle::mCustomPath
protected

Definition at line 303 of file qcustomplot.h.

◆ mPen

QPen QCPScatterStyle::mPen
protected

Definition at line 300 of file qcustomplot.h.

◆ mPenDefined

bool QCPScatterStyle::mPenDefined
protected

Definition at line 306 of file qcustomplot.h.

◆ mPixmap

QPixmap QCPScatterStyle::mPixmap
protected

Definition at line 302 of file qcustomplot.h.

◆ mShape

ScatterShape QCPScatterStyle::mShape
protected

Definition at line 299 of file qcustomplot.h.

◆ mSize

double QCPScatterStyle::mSize
protected

Definition at line 298 of file qcustomplot.h.


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