diff options
Diffstat (limited to 'examples/chart/element.h')
-rw-r--r-- | examples/chart/element.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/examples/chart/element.h b/examples/chart/element.h new file mode 100644 index 000000000..a166d207a --- /dev/null +++ b/examples/chart/element.h @@ -0,0 +1,84 @@ +#ifndef ELEMENT_H +#define ELEMENT_H + +#include <qcolor.h> +#include <qnamespace.h> +#include <qstring.h> +#include <qvaluevector.h> + +class Element; + +typedef TQValueVector<Element> ElementVector; + +/* + Elements are valid if they have a value which is > EPSILON. +*/ +const double EPSILON = 0.0000001; // Must be > INVALID. + + +class Element +{ +public: + enum { INVALID = -1 }; + enum { NO_PROPORTION = -1 }; + enum { MAX_PROPOINTS = 3 }; // One proportional point per chart type + + Element( double value = INVALID, TQColor valueColor = TQt::gray, + int valuePattern = TQt::SolidPattern, + const TQString& label = TQString::null, + TQColor labelColor = TQt::black ) { + init( value, valueColor, valuePattern, label, labelColor ); + for ( int i = 0; i < MAX_PROPOINTS * 2; ++i ) + m_propoints[i] = NO_PROPORTION; + } + ~Element() {} + + bool isValid() const { return m_value > EPSILON; } + + double value() const { return m_value; } + TQColor valueColor() const { return m_valueColor; } + int valuePattern() const { return m_valuePattern; } + TQString label() const { return m_label; } + TQColor labelColor() const { return m_labelColor; } + double proX( int index ) const; + double proY( int index ) const; + + void set( double value = INVALID, TQColor valueColor = TQt::gray, + int valuePattern = TQt::SolidPattern, + const TQString& label = TQString::null, + TQColor labelColor = TQt::black ) { + init( value, valueColor, valuePattern, label, labelColor ); + } + void setValue( double value ) { m_value = value; } + void setValueColor( TQColor valueColor ) { m_valueColor = valueColor; } + void setValuePattern( int valuePattern ); + void setLabel( const TQString& label ) { m_label = label; } + void setLabelColor( TQColor labelColor ) { m_labelColor = labelColor; } + void setProX( int index, double value ); + void setProY( int index, double value ); + +#ifdef Q_FULL_TEMPLATE_INSTANTIATION + // xlC 3.x workaround + Q_DUMMY_COMPARISON_OPERATOR(Element) + bool operator!=( const Element& e) const { + return ( !(e == *this) ); + } +#endif + +private: + void init( double value, TQColor valueColor, int valuePattern, + const TQString& label, TQColor labelColor ); + + double m_value; + TQColor m_valueColor; + int m_valuePattern; + TQString m_label; + TQColor m_labelColor; + double m_propoints[2 * MAX_PROPOINTS]; +}; + + +TQTextStream &operator<<( TQTextStream&, const Element& ); +TQTextStream &operator>>( TQTextStream&, Element& ); + +#endif |