Skip to content
Snippets Groups Projects
qwt_plot_marker.h 3.35 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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