source: pacpusframework/branches/2.0-beta1/include/extlib/qwtplot3d/qwt3d_axis.h@ 89

Last change on this file since 89 was 89, checked in by morasjul, 11 years ago

PACPUS 2.0 Beta deployed in new branch

Major changes:
-Add communication interface between components
-Add examples for communications interface (TestComponents)
-Move to Qt5 support

  • Property svn:executable set to *
File size: 5.8 KB
Line 
1#ifndef __AXIS_H__
2#define __AXIS_H__
3
4#include "qwt3d_autoptr.h"
5#include "qwt3d_label.h"
6#include "qwt3d_scale.h"
7#include "qwt3d_autoscaler.h"
8
9namespace Qwt3D
10{
11
12//! Autoscalable axis with caption.
13/*!
14 Axes are highly customizable especially in terms
15 of labeling and scaling.
16*/
17class QWT3D_EXPORT Axis : public Drawable
18{
19
20public:
21
22 Axis(); //!< Constructs standard axis
23 Axis(Qwt3D::Triple beg, Qwt3D::Triple end); //!< Constructs a new axis with specified limits
24 virtual ~Axis(); // dtor
25
26 virtual void draw(); //!< Draws axis
27
28 void setPosition(const Qwt3D::Triple& beg, const Qwt3D::Triple& end); //!< Positionate axis
29 void position(Qwt3D::Triple& beg, Qwt3D::Triple& end) const {beg = beg_; end = end_;} //!< Returns axis' position
30 Qwt3D::Triple begin() const { return beg_; } //!< Returns axis' beginning position
31 Qwt3D::Triple end() const { return end_; } //!< Returns axis' ending position
32 double length() const { return (end_-beg_).length(); } //!< Returns axis' length
33
34 void setTicLength(double majorl, double minorl); //!< Sets tics lengths in world coordinates
35 //! Returns tics lengths
36 void ticLength(double& majorl, double& minorl) const {majorl = lmaj_; minorl = lmin_;}
37 void setTicOrientation(double tx, double ty, double tz); //!< Sets tic orientation
38 void setTicOrientation(const Qwt3D::Triple& val); //!< Same function as above
39 Qwt3D::Triple ticOrientation() const { return orientation_;} //!< Returns tic orientation
40 void setSymmetricTics( bool b) { symtics_ = b;} //!< Sets two-sided tics (default is false)
41
42 //! Sets font for axis label
43 void setLabelFont(QString const& family, int pointSize, int weight = QFont::Normal, bool italic = false);
44 void setLabelFont(QFont const& font); //!< Sets font for axis label
45 QFont const& labelFont() const {return labelfont_;} //!< Returns current label font
46
47 void setLabelString(QString const& name); //!< Sets label content
48 void setLabelPosition(const Qwt3D::Triple& pos, Qwt3D::ANCHOR);
49 void setLabelColor(Qwt3D::RGBA col);
50 void setLabel(bool d) {drawLabel_ = d;} //!< Turns label drawing on or off
51 void adjustLabel(int val) {labelgap_ = val;} //!< Shifts label in device coordinates dependent on anchor;
52
53 void setScaling(bool d) {drawTics_ = d;} //!< Turns scale drawing on or off
54 bool scaling() const {return drawTics_;} //!< Returns, if scale drawing is on or off
55 void setScale(Qwt3D::SCALETYPE);
56 void setScale(Scale* item);
57 void setNumbers(bool d) {drawNumbers_ = d;} //!< Turns number drawing on or off
58 bool numbers() const {return drawNumbers_;} //!< Returns, if number drawing is on or off
59 void setNumberColor(Qwt3D::RGBA col); //!< Sets the color for axes numbers
60 Qwt3D::RGBA numberColor() const {return numbercolor_;} //!< Returns the color for axes numbers
61 //! Sets font for numbering
62 void setNumberFont(QString const& family, int pointSize, int weight = QFont::Normal, bool italic = false);
63 void setNumberFont(QFont const&); //!< Overloaded member, works like the above function
64 QFont const& numberFont() const {return numberfont_;} //!< Returns current numbering font
65 void setNumberAnchor(Qwt3D::ANCHOR a) { scaleNumberAnchor_ = a;} //!< Sets anchor position for numbers
66 void adjustNumbers(int val) {numbergap_ = val;} //!< Shifts axis numbers in device coordinates dependent on anchor;
67
68 void setAutoScale(bool val = true) {autoscale_ = val;} //!< Turns Autoscaling on or off
69 bool autoScale() const { return autoscale_;} //!< actual Autoscaling mode
70
71 void setMajors(int val); //!< Requests major intervals (maybe changed, if autoscaling is present)
72 void setMinors(int val); //!< Requests minor intervals
73 int majors() const { return majorintervals_; } //!< Returns number of major intervals
74 int minors() const { return minorintervals_; } //!< Returns number of minor intervals
75 Qwt3D::TripleField const& majorPositions() const {return majorpos_;} //!< Returns positions for actual major tics (also if invisible)
76 Qwt3D::TripleField const& minorPositions() const {return minorpos_;} //!< Returns positions for actual minor tics (also if invisible)
77
78 //! Sets line width for axis components
79 void setLineWidth(double val, double majfac = 0.9, double minfac = 0.5);
80 double lineWidth() const { return lineWidth_;} //!< Returns line width for axis body
81 double majLineWidth() const { return majLineWidth_;} //!< Returns Line width for major tics
82 double minLineWidth() const { return minLineWidth_;} //!< Returns Line width for minor tics
83
84 void setLimits(double start, double stop) {start_=start; stop_=stop;} //!< Sets interval
85 void limits(double& start, double& stop) const {start = start_; stop = stop_;} //!< Returns axis interval
86 void recalculateTics(); //!< Enforces recalculation of ticmark positions
87
88
89private:
90
91 void init();
92 void drawBase();
93 void drawTics();
94 void drawTicLabel(Qwt3D::Triple Pos, int mtic);
95 Qwt3D::Triple drawTic(Qwt3D::Triple nadir, double length);
96 void drawLabel();
97 bool prepTicCalculation(Triple& startpoint);
98
99 Qwt3D::Triple biggestNumberString();
100
101
102 Qwt3D::ANCHOR scaleNumberAnchor_;
103 Qwt3D::Label label_;
104 std::vector<Qwt3D::Label> markerLabel_;
105
106 Qwt3D::Triple beg_, end_;
107 Qwt3D::TripleField majorpos_, minorpos_; //! vectors, holding major resp. minor tic positions;
108
109 Qwt3D::Triple ncube_beg_, ncube_end_; //!< enclosing parallelepiped for axis numbering
110
111 double start_, stop_, autostart_, autostop_;
112 double lmaj_, lmin_;
113 Qwt3D::Triple orientation_;
114
115 int majorintervals_, minorintervals_;
116
117 double lineWidth_, majLineWidth_, minLineWidth_;
118 bool symtics_;
119 bool drawNumbers_, drawTics_, drawLabel_;
120 bool autoscale_;
121 QFont numberfont_, labelfont_;
122 Qwt3D::RGBA numbercolor_;
123
124 int numbergap_, labelgap_;
125
126 Qwt3D::qwt3d_ptr<Qwt3D::Scale> scale_;
127};
128
129} // ns
130
131#endif
Note: See TracBrowser for help on using the repository browser.