Skip to content
Snippets Groups Projects
qwt_plot_layout.h 3.14 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_LAYOUT_H
    #define QWT_PLOT_LAYOUT_H
    
    #include "qwt_global.h"
    #include "qwt_plot.h"
    
    /*!
    
    Bryant's avatar
    Bryant committed
      \brief Layout engine for QwtPlot.
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
      It is used by the QwtPlot widget to organize its internal widgets
      or by QwtPlot::print() to render its content to a QPaintDevice like
      a QPrinter, QPixmap/QImage or QSvgRenderer.
    
      \sa QwtPlot::setPlotLayout()
    
    pixhawk's avatar
    pixhawk committed
    */
    
    class QWT_EXPORT QwtPlotLayout
    {
    public:
    
    Bryant's avatar
    Bryant committed
        /*!
          Options to configure the plot layout engine
          \sa activate(), QwtPlotRenderer
         */
        enum Option
        {
            //! Unused
            AlignScales = 0x01,
    
            /*!
              Ignore the dimension of the scrollbars. There are no
              scrollbars, when the plot is not rendered to widgets.
             */
            IgnoreScrollbars = 0x02,
    
            //! Ignore all frames. 
            IgnoreFrames = 0x04,
    
            //! Ignore the legend.
            IgnoreLegend = 0x08,
    
            //! Ignore the title.
            IgnoreTitle = 0x10,
    
            //! Ignore the footer.
            IgnoreFooter = 0x20
    
    pixhawk's avatar
    pixhawk committed
        };
    
    
    Bryant's avatar
    Bryant committed
        //! Layout options
        typedef QFlags<Option> Options;
    
    
    pixhawk's avatar
    pixhawk committed
        explicit QwtPlotLayout();
        virtual ~QwtPlotLayout();
    
    
    Bryant's avatar
    Bryant committed
        void setCanvasMargin( int margin, int axis = -1 );
        int canvasMargin( int axis ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setAlignCanvasToScales( bool );
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setAlignCanvasToScale( int axisId, bool );
        bool alignCanvasToScale( int axisId ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setSpacing( int );
    
    pixhawk's avatar
    pixhawk committed
        int spacing() const;
    
    
    Bryant's avatar
    Bryant committed
        void setLegendPosition( QwtPlot::LegendPosition pos, double ratio );
        void setLegendPosition( QwtPlot::LegendPosition pos );
    
    pixhawk's avatar
    pixhawk committed
        QwtPlot::LegendPosition legendPosition() const;
    
    
    Bryant's avatar
    Bryant committed
        void setLegendRatio( double ratio );
    
    pixhawk's avatar
    pixhawk committed
        double legendRatio() const;
    
    
    Bryant's avatar
    Bryant committed
        virtual QSize minimumSizeHint( const QwtPlot * ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        virtual void activate( const QwtPlot *,
            const QRectF &rect, Options options = 0x00 );
    
    pixhawk's avatar
    pixhawk committed
    
        virtual void invalidate();
    
    
    Bryant's avatar
    Bryant committed
        QRectF titleRect() const;
        QRectF footerRect() const;
        QRectF legendRect() const;
        QRectF scaleRect( int axis ) const;
        QRectF canvasRect() const;
    
    pixhawk's avatar
    pixhawk committed
    
        class LayoutData;
    
    protected:
    
    
    Bryant's avatar
    Bryant committed
        void setTitleRect( const QRectF & );
        void setFooterRect( const QRectF & );
        void setLegendRect( const QRectF & );
        void setScaleRect( int axis, const QRectF & );
        void setCanvasRect( const QRectF & );
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        QRectF layoutLegend( Options options, const QRectF & ) const;
        QRectF alignLegend( const QRectF &canvasRect,
            const QRectF &legendRect ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void expandLineBreaks( Options options, const QRectF &rect,
            int &dimTitle, int &dimFooter, int dimAxes[QwtPlot::axisCnt] ) const;
    
        void alignScales( Options options, QRectF &canvasRect,
            QRectF scaleRect[QwtPlot::axisCnt] ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    private:
        class PrivateData;
    
        PrivateData *d_data;
    };
    
    
    Bryant's avatar
    Bryant committed
    Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotLayout::Options )
    
    
    pixhawk's avatar
    pixhawk committed
    #endif