diff options
| author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-07-11 14:15:27 -0500 |
|---|---|---|
| committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-07-11 14:15:27 -0500 |
| commit | b85a292ce06475d560bfa1195b63a8bfe211f22d (patch) | |
| tree | 463d71be55ff807513139f1de106aef6bdd7b4db /lib/tqwtplot3d/include/qwt3d_axis.h | |
| parent | ce039289815e2802fdeca8d384126c807ca9cb58 (diff) | |
| download | ulab-b85a292ce06475d560bfa1195b63a8bfe211f22d.tar.gz ulab-b85a292ce06475d560bfa1195b63a8bfe211f22d.zip | |
Add 0.2.7 release of qwtplot3d for future TQt3 conversion and use
Diffstat (limited to 'lib/tqwtplot3d/include/qwt3d_axis.h')
| -rw-r--r-- | lib/tqwtplot3d/include/qwt3d_axis.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/lib/tqwtplot3d/include/qwt3d_axis.h b/lib/tqwtplot3d/include/qwt3d_axis.h new file mode 100644 index 0000000..08c2928 --- /dev/null +++ b/lib/tqwtplot3d/include/qwt3d_axis.h @@ -0,0 +1,131 @@ +#ifndef __AXIS_H__
+#define __AXIS_H__
+
+#include "qwt3d_autoptr.h"
+#include "qwt3d_label.h"
+#include "qwt3d_scale.h"
+#include "qwt3d_autoscaler.h"
+
+namespace Qwt3D
+{
+
+//! Autoscalable axis with caption.
+/*!
+ Axes are highly customizable especially in terms
+ of labeling and scaling.
+*/
+class QWT3D_EXPORT Axis : public Drawable
+{
+
+public:
+
+ Axis(); //!< Constructs standard axis
+ Axis(Qwt3D::Triple beg, Qwt3D::Triple end); //!< Constructs a new axis with specified limits
+ virtual ~Axis(); // dtor
+
+ virtual void draw(); //!< Draws axis
+
+ void setPosition(const Qwt3D::Triple& beg, const Qwt3D::Triple& end); //!< Positionate axis
+ void position(Qwt3D::Triple& beg, Qwt3D::Triple& end) const {beg = beg_; end = end_;} //!< Returns axis' position
+ Qwt3D::Triple begin() const { return beg_; } //!< Returns axis' beginning position
+ Qwt3D::Triple end() const { return end_; } //!< Returns axis' ending position
+ double length() const { return (end_-beg_).length(); } //!< Returns axis' length
+
+ void setTicLength(double majorl, double minorl); //!< Sets tics lengths in world coordinates
+ //! Returns tics lengths
+ void ticLength(double& majorl, double& minorl) const {majorl = lmaj_; minorl = lmin_;}
+ void setTicOrientation(double tx, double ty, double tz); //!< Sets tic orientation
+ void setTicOrientation(const Qwt3D::Triple& val); //!< Same function as above
+ Qwt3D::Triple ticOrientation() const { return orientation_;} //!< Returns tic orientation
+ void setSymmetricTics( bool b) { symtics_ = b;} //!< Sets two-sided tics (default is false)
+
+ //! Sets font for axis label
+ void setLabelFont(QString const& family, int pointSize, int weight = QFont::Normal, bool italic = false);
+ void setLabelFont(QFont const& font); //!< Sets font for axis label
+ QFont const& labelFont() const {return labelfont_;} //!< Returns current label font
+
+ void setLabelString(QString const& name); //!< Sets label content
+ void setLabelPosition(const Qwt3D::Triple& pos, Qwt3D::ANCHOR);
+ void setLabelColor(Qwt3D::RGBA col);
+ void setLabel(bool d) {drawLabel_ = d;} //!< Turns label drawing on or off
+ void adjustLabel(int val) {labelgap_ = val;} //!< Shifts label in device coordinates dependent on anchor;
+
+ void setScaling(bool d) {drawTics_ = d;} //!< Turns scale drawing on or off
+ bool scaling() const {return drawTics_;} //!< Returns, if scale drawing is on or off
+ void setScale(Qwt3D::SCALETYPE);
+ void setScale(Scale* item);
+ void setNumbers(bool d) {drawNumbers_ = d;} //!< Turns number drawing on or off
+ bool numbers() const {return drawNumbers_;} //!< Returns, if number drawing is on or off
+ void setNumberColor(Qwt3D::RGBA col); //!< Sets the color for axes numbers
+ Qwt3D::RGBA numberColor() const {return numbercolor_;} //!< Returns the color for axes numbers
+ //! Sets font for numbering
+ void setNumberFont(QString const& family, int pointSize, int weight = QFont::Normal, bool italic = false);
+ void setNumberFont(QFont const&); //!< Overloaded member, works like the above function
+ QFont const& numberFont() const {return numberfont_;} //!< Returns current numbering font
+ void setNumberAnchor(Qwt3D::ANCHOR a) { scaleNumberAnchor_ = a;} //!< Sets anchor position for numbers
+ void adjustNumbers(int val) {numbergap_ = val;} //!< Shifts axis numbers in device coordinates dependent on anchor;
+
+ void setAutoScale(bool val = true) {autoscale_ = val;} //!< Turns Autoscaling on or off
+ bool autoScale() const { return autoscale_;} //!< actual Autoscaling mode
+
+ void setMajors(int val); //!< Requests major intervals (maybe changed, if autoscaling is present)
+ void setMinors(int val); //!< Requests minor intervals
+ int majors() const { return majorintervals_; } //!< Returns number of major intervals
+ int minors() const { return minorintervals_; } //!< Returns number of minor intervals
+ Qwt3D::TripleField const& majorPositions() const {return majorpos_;} //!< Returns positions for actual major tics (also if invisible)
+ Qwt3D::TripleField const& minorPositions() const {return minorpos_;} //!< Returns positions for actual minor tics (also if invisible)
+
+ //! Sets line width for axis components
+ void setLineWidth(double val, double majfac = 0.9, double minfac = 0.5);
+ double lineWidth() const { return lineWidth_;} //!< Returns line width for axis body
+ double majLineWidth() const { return majLineWidth_;} //!< Returns Line width for major tics
+ double minLineWidth() const { return minLineWidth_;} //!< Returns Line width for minor tics
+
+ void setLimits(double start, double stop) {start_=start; stop_=stop;} //!< Sets interval
+ void limits(double& start, double& stop) const {start = start_; stop = stop_;} //!< Returns axis interval
+ void recalculateTics(); //!< Enforces recalculation of ticmark positions
+
+
+private:
+
+ void init();
+ void drawBase();
+ void drawTics();
+ void drawTicLabel(Qwt3D::Triple Pos, int mtic);
+ Qwt3D::Triple drawTic(Qwt3D::Triple nadir, double length);
+ void drawLabel();
+ bool prepTicCalculation(Triple& startpoint);
+
+ Qwt3D::Triple biggestNumberString();
+
+
+ Qwt3D::ANCHOR scaleNumberAnchor_;
+ Qwt3D::Label label_;
+ std::vector<Qwt3D::Label> markerLabel_;
+
+ Qwt3D::Triple beg_, end_;
+ Qwt3D::TripleField majorpos_, minorpos_; //! vectors, holding major resp. minor tic positions;
+
+ Qwt3D::Triple ncube_beg_, ncube_end_; //!< enclosing parallelepiped for axis numbering
+
+ double start_, stop_, autostart_, autostop_;
+ double lmaj_, lmin_;
+ Qwt3D::Triple orientation_;
+
+ int majorintervals_, minorintervals_;
+
+ double lineWidth_, majLineWidth_, minLineWidth_;
+ bool symtics_;
+ bool drawNumbers_, drawTics_, drawLabel_;
+ bool autoscale_;
+ QFont numberfont_, labelfont_;
+ Qwt3D::RGBA numbercolor_;
+
+ int numbergap_, labelgap_;
+
+ Qwt3D::qwt3d_ptr<Qwt3D::Scale> scale_;
+};
+
+} // ns
+
+#endif
|
