Skip to content
qwt_plot_marker.h 3.35 KiB
Newer Older
pixhawk's avatar
pixhawk committed
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
pixhawk's avatar
pixhawk committed
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the Qwt License, Version 1.0
 *****************************************************************************/

#ifndef QWT_PLOT_MARKER_H
#define QWT_PLOT_MARKER_H

#include <qpen.h>
#include <qfont.h>
#include <qstring.h>
#include <qbrush.h>
#include "qwt_global.h"
#include "qwt_plot_item.h"

Bryant's avatar
Bryant committed
class QRectF;
pixhawk's avatar
pixhawk committed
class QwtText;
class QwtSymbol;

/*!
  \brief A class for drawing markers

  A marker can be a horizontal line, a vertical line,
  a symbol, a label or any combination of them, which can
  be drawn around a center point inside a bounding rectangle.

Bryant's avatar
Bryant committed
  The setSymbol() member assigns a symbol to the marker.
pixhawk's avatar
pixhawk committed
  The symbol is drawn at the specified point.

Bryant's avatar
Bryant committed
  With setLabel(), a label can be assigned to the marker.
  The setLabelAlignment() member specifies where the label is
pixhawk's avatar
pixhawk committed
  drawn. All the Align*-constants in Qt::AlignmentFlags (see Qt documentation)
  are valid. The interpretation of the alignment depends on the marker's
  line style. The alignment refers to the center point of
  the marker, which means, for example, that the label would be printed
Bryant's avatar
Bryant committed
  left above the center point if the alignment was set to 
  Qt::AlignLeft | Qt::AlignTop.

  \note QwtPlotTextLabel is intended to align a text label
        according to the geometry of canvas 
        ( unrelated to plot coordinates )
pixhawk's avatar
pixhawk committed
*/

class QWT_EXPORT QwtPlotMarker: public QwtPlotItem
{
public:

    /*!
        Line styles.
Bryant's avatar
Bryant committed
        \sa setLineStyle(), lineStyle()
pixhawk's avatar
pixhawk committed
    */
Bryant's avatar
Bryant committed
    enum LineStyle
    {
        //! No line
        NoLine,

        //! A horizontal line
        HLine,

        //! A vertical line
        VLine,

        //! A crosshair
        Cross
    };

    explicit QwtPlotMarker( const QString &title = QString::null );
    explicit QwtPlotMarker( const QwtText &title );
pixhawk's avatar
pixhawk committed
    virtual ~QwtPlotMarker();

    virtual int rtti() const;

    double xValue() const;
    double yValue() const;
Bryant's avatar
Bryant committed
    QPointF value() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setXValue( double );
    void setYValue( double );
    void setValue( double, double );
    void setValue( const QPointF & );
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setLineStyle( LineStyle st );
pixhawk's avatar
pixhawk committed
    LineStyle lineStyle() const;

Bryant's avatar
Bryant committed
    void setLinePen( const QColor &, qreal width = 0.0, Qt::PenStyle = Qt::SolidLine );
    void setLinePen( const QPen &p );
pixhawk's avatar
pixhawk committed
    const QPen &linePen() const;

Bryant's avatar
Bryant committed
    void setSymbol( const QwtSymbol * );
    const QwtSymbol *symbol() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setLabel( const QwtText& );
pixhawk's avatar
pixhawk committed
    QwtText label() const;

Bryant's avatar
Bryant committed
    void setLabelAlignment( Qt::Alignment );
pixhawk's avatar
pixhawk committed
    Qt::Alignment labelAlignment() const;

Bryant's avatar
Bryant committed
    void setLabelOrientation( Qt::Orientation );
    Qt::Orientation labelOrientation() const;
Bryant's avatar
Bryant committed
    void setSpacing( int );
    int spacing() const;

    virtual void draw( QPainter *p,
        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
        const QRectF & ) const;

    virtual QRectF boundingRect() const;

    virtual QwtGraphic legendIcon( int index, const QSizeF & ) const;

protected:
    virtual void drawLines( QPainter *, 
        const QRectF &, const QPointF & ) const;

    virtual void drawLabel( QPainter *, 
        const QRectF &, const QPointF & ) const;
pixhawk's avatar
pixhawk committed

private:
Bryant's avatar
Bryant committed

pixhawk's avatar
pixhawk committed
    class PrivateData;
    PrivateData *d_data;
};

#endif