1 //////////////////////////////////////////////////////////////////////////////
2 // Name:        SVGLength.h
3 // Author:      Alex Thuering
4 // Copyright:   (c) 2005 Alex Thuering
5 // Licence:     wxWindows licence
6 // Notes:       generated by generate.py
7 //////////////////////////////////////////////////////////////////////////////
8 
9 #ifndef WX_SVG_LENGTH_H
10 #define WX_SVG_LENGTH_H
11 
12 #include "String_wxsvg.h"
13 #include "SVGLengthCalculate.h"
14 #include "math.h"
15 
16 
17 enum wxSVG_LENGTHTYPE
18 {
19   wxSVG_LENGTHTYPE_UNKNOWN = 0,
20   wxSVG_LENGTHTYPE_NUMBER = 1,
21   wxSVG_LENGTHTYPE_PERCENTAGE = 2,
22   wxSVG_LENGTHTYPE_EMS = 3,
23   wxSVG_LENGTHTYPE_EXS = 4,
24   wxSVG_LENGTHTYPE_PX = 5,
25   wxSVG_LENGTHTYPE_CM = 6,
26   wxSVG_LENGTHTYPE_MM = 7,
27   wxSVG_LENGTHTYPE_IN = 8,
28   wxSVG_LENGTHTYPE_PT = 9,
29   wxSVG_LENGTHTYPE_PC = 10
30 };
31 
32 class wxSVGLength
33 {
34   protected:
35     wxSVG_LENGTHTYPE m_unitType;
36     double m_value;
37     double m_valueInSpecifiedUnits;
38 
39   public:
GetUnitType()40     inline wxSVG_LENGTHTYPE GetUnitType() const { return m_unitType; }
SetUnitType(const wxSVG_LENGTHTYPE & n)41     inline void SetUnitType(const wxSVG_LENGTHTYPE& n) { m_unitType = n; }
42 
43   public:
wxSVGLength()44     wxSVGLength() : m_unitType(wxSVG_LENGTHTYPE_UNKNOWN), m_value(0), m_valueInSpecifiedUnits(0) {}
wxSVGLength(double v)45     wxSVGLength(double v) : m_unitType(wxSVG_LENGTHTYPE_NUMBER), m_value(v), m_valueInSpecifiedUnits(v) {}
wxSVGLength(wxSVG_LENGTHTYPE unitType,double v)46     wxSVGLength(wxSVG_LENGTHTYPE unitType, double v): m_unitType(unitType) { SetValueInSpecifiedUnits(v); }
wxSVGLength(const wxSVGLength & l)47     wxSVGLength(const wxSVGLength& l): m_unitType(l.m_unitType), m_value(l.m_value), m_valueInSpecifiedUnits(l.m_valueInSpecifiedUnits) {}
~wxSVGLength()48     virtual ~wxSVGLength() {}
49 
GetValue()50     inline double GetValue() const { return m_value; }
SetValue(double n)51     inline void SetValue(double n) { m_unitType = wxSVG_LENGTHTYPE_NUMBER; m_valueInSpecifiedUnits = n; m_value = n; }
52     inline operator double() const { return GetValue(); }
53 
GetValueInSpecifiedUnits()54     double GetValueInSpecifiedUnits() const { return m_valueInSpecifiedUnits; }
55     void SetValueInSpecifiedUnits(double n);
56 
57     wxString GetValueAsString() const;
58     void SetValueAsString(const wxString& n);
59 
ToViewportWidth(float viewportWidth)60     inline void ToViewportWidth(float viewportWidth) { m_value = m_valueInSpecifiedUnits*viewportWidth/100; }
ToViewportHeight(float viewportHeight)61 	inline void ToViewportHeight(float viewportHeight) { m_value = m_valueInSpecifiedUnits*viewportHeight/100; }
ToViewportSize(float viewportWidth,float viewportHeight)62 	inline void ToViewportSize(float viewportWidth, float viewportHeight)
63 	{
64 	  m_value = m_valueInSpecifiedUnits*
65 		sqrt(viewportWidth*viewportWidth + viewportHeight*viewportHeight)/sqrt(2.0)/100;
66 	}
67 
68     virtual void NewValueSpecifiedUnits(wxSVG_LENGTHTYPE unitType, double valueInSpecifiedUnits);
69     virtual void ConvertToSpecifiedUnits(wxSVG_LENGTHTYPE unitType);
70 };
71 
72 #endif // WX_SVG_LENGTH_H
73