qwt_plot_layout.h 2.2 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
5
 *
pixhawk's avatar
pixhawk committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
 * 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"

/*!
  \brief Layout class for QwtPlot.

  Organizes the geometry for the different QwtPlot components.
*/

class QWT_EXPORT QwtPlotLayout
{
public:
25
    enum Options {
pixhawk's avatar
pixhawk committed
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
        AlignScales = 1,
        IgnoreScrollbars = 2,
        IgnoreFrames = 4,
        IgnoreMargin = 8,
        IgnoreLegend = 16
    };

    explicit QwtPlotLayout();
    virtual ~QwtPlotLayout();

    void setMargin(int);
    int margin() const;

    void setCanvasMargin(int margin, int axis = -1);
    int canvasMargin(int axis) const;

    void setAlignCanvasToScales(bool);
    bool alignCanvasToScales() const;

    void setSpacing(int);
    int spacing() const;

    void setLegendPosition(QwtPlot::LegendPosition pos, double ratio);
    void setLegendPosition(QwtPlot::LegendPosition pos);
    QwtPlot::LegendPosition legendPosition() const;

    void setLegendRatio(double ratio);
    double legendRatio() const;

55
    virtual QSize minimumSizeHint(const QwtPlot *) const;
pixhawk's avatar
pixhawk committed
56

57 58
    virtual void activate(const QwtPlot *,
                          const QRect &rect, int options = 0);
pixhawk's avatar
pixhawk committed
59 60 61 62 63 64 65 66 67 68 69 70 71

    virtual void invalidate();

    const QRect &titleRect() const;
    const QRect &legendRect() const;
    const QRect &scaleRect(int axis) const;
    const QRect &canvasRect() const;

    class LayoutData;

protected:

    QRect layoutLegend(int options, const QRect &) const;
72 73
    QRect alignLegend(const QRect &canvasRect,
                      const QRect &legendRect) const;
pixhawk's avatar
pixhawk committed
74

75 76
    void expandLineBreaks(int options, const QRect &rect,
                          int &dimTitle, int dimAxes[QwtPlot::axisCnt]) const;
pixhawk's avatar
pixhawk committed
77 78

    void alignScales(int options, QRect &canvasRect,
79
                     QRect scaleRect[QwtPlot::axisCnt]) const;
pixhawk's avatar
pixhawk committed
80 81 82 83 84 85 86 87

private:
    class PrivateData;

    PrivateData *d_data;
};

#endif