~valavanisalex/ubuntu/maverick/scidavis/fix-604811

« back to all changes in this revision

Viewing changes to scidavis/src/Legend.h

  • Committer: Bazaar Package Importer
  • Author(s): Ruben Molina
  • Date: 2009-09-06 11:34:04 UTC
  • Revision ID: james.westby@ubuntu.com-20090906113404-4awaey82l3686w4q
Tags: upstream-0.2.3
ImportĀ upstreamĀ versionĀ 0.2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
    File                 : Legend.h
 
3
    Project              : SciDAVis
 
4
    --------------------------------------------------------------------
 
5
    Copyright            : (C) 2006 by Ion Vasilief, Tilman Benkert
 
6
    Email (use @ for *)  : ion_vasilief*yahoo.fr, thzs*gmx.net
 
7
    Description          : Legend marker (extension to QwtPlotMarker)
 
8
 
 
9
 ***************************************************************************/
 
10
 
 
11
/***************************************************************************
 
12
 *                                                                         *
 
13
 *  This program is free software; you can redistribute it and/or modify   *
 
14
 *  it under the terms of the GNU General Public License as published by   *
 
15
 *  the Free Software Foundation; either version 2 of the License, or      *
 
16
 *  (at your option) any later version.                                    *
 
17
 *                                                                         *
 
18
 *  This program is distributed in the hope that it will be useful,        *
 
19
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
 
20
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
 
21
 *  GNU General Public License for more details.                           *
 
22
 *                                                                         *
 
23
 *   You should have received a copy of the GNU General Public License     *
 
24
 *   along with this program; if not, write to the Free Software           *
 
25
 *   Foundation, Inc., 51 Franklin Street, Fifth Floor,                    *
 
26
 *   Boston, MA  02110-1301  USA                                           *
 
27
 *                                                                         *
 
28
 ***************************************************************************/
 
29
#ifndef LEGENDMARKER_H
 
30
#define LEGENDMARKER_H
 
31
 
 
32
#include <qfont.h>
 
33
#include <qpen.h>
 
34
 
 
35
#include <qwt_plot.h>
 
36
#include <qwt_array.h>
 
37
#include <qwt_text.h>
 
38
 
 
39
#include "Graph.h"
 
40
#include "Plot.h"
 
41
#include "PlotEnrichement.h"
 
42
 
 
43
/**
 
44
 * \brief A piece of text to be drawn on a Plot.
 
45
 *
 
46
 * Contrary to its name, Legend is not just used for the plot legend,
 
47
 * but for any kind of text; particularly also for the "Add Text" tool.
 
48
 * Accordingly, it is also referred to as "TextMarker" by other classes.
 
49
 *
 
50
 * \section future_plans Future Plans
 
51
 * Rename to TextMarker (or maybe TextEnrichment; see documentation of ImageMarker for details).
 
52
 *
 
53
 * \sa ImageMarker, ArrowMarker
 
54
 */
 
55
class Legend: public PlotEnrichement
 
56
{
 
57
public:
 
58
    Legend(Plot *);
 
59
        ~Legend();
 
60
 
 
61
        //! The kinds of frame a Legend can draw around the Text.
 
62
        enum FrameStyle{None = 0, Line = 1, Shadow=2};
 
63
 
 
64
        QString text(){return d_text->text();};
 
65
        void setText(const QString& s);
 
66
 
 
67
        //! Bounding rectangle in paint coordinates.
 
68
        QRect rect() const;
 
69
        //! Bounding rectangle in plot coordinates.
 
70
        virtual QwtDoubleRect boundingRect() const;
 
71
 
 
72
        void setOrigin(const QPoint & p);
 
73
 
 
74
        //! Sets the position of the top left corner in axis coordinates
 
75
        void setOriginCoord(double x, double y);
 
76
 
 
77
        //! Keep the markers on screen each time the scales are modified by adding/removing curves
 
78
        void updateOrigin();
 
79
 
 
80
        QColor textColor(){return d_text->color();};
 
81
        void setTextColor(const QColor& c);
 
82
 
 
83
        QColor backgroundColor(){return d_text->backgroundBrush().color();};
 
84
        void setBackgroundColor(const QColor& c);
 
85
 
 
86
        int frameStyle(){return d_frame;};
 
87
        void setFrameStyle(int style);
 
88
 
 
89
        QFont font(){return d_text->font();};
 
90
        void setFont(const QFont& font);
 
91
 
 
92
        int angle(){return d_angle;};
 
93
        void setAngle(int ang){d_angle=ang;};
 
94
 
 
95
private:
 
96
        void draw(QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRect &r) const;
 
97
 
 
98
        void drawFrame(QPainter *p, int type, const QRect& rect) const;
 
99
        void drawSymbols(QPainter *p, const QRect& rect,
 
100
                                        QwtArray<long> height, int symbolLineLength) const;
 
101
        void drawLegends(QPainter *p, const QRect& rect,
 
102
                                        QwtArray<long> height, int symbolLineLength) const;
 
103
        void drawVector(QPainter *p, int x, int y, int l, int curveIndex) const;
 
104
 
 
105
        QwtArray<long> itemsHeight(int y, int symbolLineLength, int &width, int &height) const;
 
106
        int symbolsMaxLineLength() const;
 
107
        QString parse(const QString& str) const;
 
108
 
 
109
protected:
 
110
        //! Parent plot
 
111
        Plot *d_plot;
 
112
 
 
113
        //! Frame type
 
114
        int d_frame;
 
115
 
 
116
        //! Rotation angle: not implemented yet
 
117
        int d_angle;
 
118
 
 
119
        //! Pointer to the QwtText object
 
120
        QwtText* d_text;
 
121
 
 
122
        //! TopLeft position in pixels
 
123
        QPoint d_pos;
 
124
 
 
125
        //!Distance between symbols and legend text
 
126
        int hspace;
 
127
 
 
128
        //!Distance between frame and content
 
129
        int left_margin, top_margin;
 
130
 
 
131
        int d_shadow_size_x, d_shadow_size_y;
 
132
};
 
133
 
 
134
#endif