| 1 | #ifndef __LABELPIXMAP_H__
 | 
|---|
| 2 | #define __LABELPIXMAP_H__
 | 
|---|
| 3 | 
 | 
|---|
| 4 | #include <qpixmap.h>
 | 
|---|
| 5 | #include <qimage.h>
 | 
|---|
| 6 | #include <qfont.h>
 | 
|---|
| 7 | #include <qpainter.h>
 | 
|---|
| 8 | #include <qfontmetrics.h>
 | 
|---|
| 9 | 
 | 
|---|
| 10 | #include "qwt3d_drawable.h"
 | 
|---|
| 11 | 
 | 
|---|
| 12 | namespace Qwt3D
 | 
|---|
| 13 | {
 | 
|---|
| 14 | 
 | 
|---|
| 15 | //! A Qt string or an output device dependent string
 | 
|---|
| 16 | class QWT3D_EXPORT Label : public Drawable 
 | 
|---|
| 17 | {
 | 
|---|
| 18 |                 
 | 
|---|
| 19 | public:
 | 
|---|
| 20 | 
 | 
|---|
| 21 |   Label();
 | 
|---|
| 22 |         //! Construct label and initialize with font 
 | 
|---|
| 23 |         Label(const QString & family, int pointSize, int weight = QFont::Normal, bool italic = false);
 | 
|---|
| 24 |         
 | 
|---|
| 25 |         //! Sets the labels font
 | 
|---|
| 26 |         void setFont(QString const& family, int pointSize, int weight = QFont::Normal, bool italic = false);
 | 
|---|
| 27 | 
 | 
|---|
| 28 |         void adjust(int gap); //!< Fine tunes label;
 | 
|---|
| 29 |         double gap() const {return gap_;} //!< Returns the gap caused by adjust();
 | 
|---|
| 30 |         void setPosition(Qwt3D::Triple pos, ANCHOR a = BottomLeft); //!< Sets the labels position
 | 
|---|
| 31 |         void setRelPosition(Tuple rpos, ANCHOR a); //!< Sets the labels position relative to screen
 | 
|---|
| 32 |         Qwt3D::Triple first() const { return beg_;} //!< Receives bottom left label position
 | 
|---|
| 33 |         Qwt3D::Triple second() const { return end_;} //!< Receives top right label position
 | 
|---|
| 34 |         ANCHOR anchor() const { return anchor_; } //!< Defines an anchor point for the labels surrounding rectangle
 | 
|---|
| 35 |         virtual void setColor(double r, double g, double b, double a = 1);      
 | 
|---|
| 36 |         virtual void setColor(Qwt3D::RGBA rgba);        
 | 
|---|
| 37 | 
 | 
|---|
| 38 |         /*!
 | 
|---|
| 39 |         \brief Sets the labels string
 | 
|---|
| 40 |         For unicode labeling (<tt> QChar(0x3c0) </tt> etc.) please look at <a href="http://www.unicode.org/charts/">www.unicode.org</a>.
 | 
|---|
| 41 |         */
 | 
|---|
| 42 |         void setString(QString const& s);
 | 
|---|
| 43 |         void draw(); //!< Actual drawing
 | 
|---|
| 44 | 
 | 
|---|
| 45 |         /**
 | 
|---|
| 46 |                 \brief Decides about use of PDF standard fonts for PDF output 
 | 
|---|
| 47 |                 If true, Label can use one of the PDF standard fonts (unprecise positioning for now), 
 | 
|---|
| 48 |                 otherwise it dumps  pixmaps in the PDF stream (poor quality) 
 | 
|---|
| 49 |         */
 | 
|---|
| 50 |         static void useDeviceFonts(bool val); 
 | 
|---|
| 51 |         
 | 
|---|
| 52 | 
 | 
|---|
| 53 | private:
 | 
|---|
| 54 | 
 | 
|---|
| 55 |         Qwt3D::Triple beg_, end_, pos_;
 | 
|---|
| 56 |         QPixmap pm_;
 | 
|---|
| 57 |         QImage  buf_, tex_;
 | 
|---|
| 58 |         QFont font_;
 | 
|---|
| 59 |         QString text_;
 | 
|---|
| 60 | 
 | 
|---|
| 61 |         ANCHOR anchor_;
 | 
|---|
| 62 |         
 | 
|---|
| 63 |         void init();
 | 
|---|
| 64 |   void init(const QString & family, int pointSize, int weight = QFont::Normal, bool italic = false);
 | 
|---|
| 65 |         void update(); //!< Enforces an update of the internal pixmap
 | 
|---|
| 66 |         void convert2screen();
 | 
|---|
| 67 |         double width() const;
 | 
|---|
| 68 |         double height() const;
 | 
|---|
| 69 | 
 | 
|---|
| 70 |         int gap_;
 | 
|---|
| 71 | 
 | 
|---|
| 72 |         bool flagforupdate_;
 | 
|---|
| 73 | 
 | 
|---|
| 74 |         static bool devicefonts_;
 | 
|---|
| 75 | 
 | 
|---|
| 76 | };
 | 
|---|
| 77 | 
 | 
|---|
| 78 | } // ns
 | 
|---|
| 79 | 
 | 
|---|
| 80 | #endif
 | 
|---|