#ifndef QPAINTERPATH_H
#define QPAINTERPATH_H 
#include <QtGui/qmatrix.h>
#include <QtCore/qglobal.h>
#include <QtCore/qrect.h>
#include <QtCore/qline.h>
#include <QtCore/qvector.h>
typedef enum QtValidLicenseForGuiModule QtGuiModule;
struct QPainterPathData;
struct QPainterPathStrokerPrivate;
class QPainterPath{
   public: enum ElementType{
      MoveToElement = 0,
      LineToElement = 1,
      CurveToElement = 2,
      CurveToDataElement = 3,
   };
   public: class Element{
      public: qreal x;
      public: qreal y;
      public: enum QPainterPath::ElementType type;
      public: inline bool isMoveTo() const
      public: inline bool isLineTo() const
      public: inline bool isCurveTo() const
      public: inline operator class QPointF () const
      public: inline bool operator ==(class QPainterPath::Element const & e) const
      public: inline bool operator !=(class QPainterPath::Element const & e) const
   };
   public: QPainterPath();
   public: explicit QPainterPath(class QPointF const & startPoint);
   public: QPainterPath(class QPainterPath const & other);
   public: class QPainterPath& operator =(class QPainterPath const & other);
   public: ~QPainterPath();
   public: void closeSubpath();
   public: void moveTo(class QPointF const & p);
   public: void lineTo(class QPointF const & p);
   public: void arcMoveTo(class QRectF const & rect, qreal angle);
   public: void arcTo(class QRectF const & rect, qreal startAngle, qreal arcLength);
   public: void cubicTo(class QPointF const & ctrlPt1, class QPointF const & ctrlPt2, class QPointF const & endPt);
   public: void quadTo(class QPointF const & ctrlPt, class QPointF const & endPt);
   public: class QPointF currentPosition() const
   public: void addRect(class QRectF const & rect);
   public: void addEllipse(class QRectF const & rect);
   public: void addPolygon(class QPolygonF const & polygon);
   public: void addText(class QPointF const & point, struct QFont const & f, struct QString const & text);
   public: void addPath(class QPainterPath const & path);
   public: void addRegion(class QRegion const & region);
   public: void connectPath(class QPainterPath const & path);
   public: bool contains(class QPointF const & pt) const
   public: bool contains(class QRectF const & rect) const
   public: bool intersects(class QRectF const & rect) const
   public: class QRectF boundingRect() const
   public: class QRectF controlPointRect() const
   public: enum Qt::FillRule fillRule() const
   public: void setFillRule(enum Qt::FillRule fillRule);
   public: class QPainterPath toReversed() const
   public: class QList < class QPolygonF > toSubpathPolygons(class QMatrix const & matrix = QMatrix::QMatrix()) const
   public: class QList < class QPolygonF > toFillPolygons(class QMatrix const & matrix = QMatrix::QMatrix()) const
   public: class QPolygonF toFillPolygon(class QMatrix const & matrix = QMatrix::QMatrix()) const
   public: bool operator ==(class QPainterPath const & other) const
   public: bool operator !=(class QPainterPath const & other) const
   private: class QPainterPathPrivate* d_ptr;
   private: inline void ensureData();
   private: void ensureData_helper();
   private: void detach_helper();
   private: inline struct QPainterPathData* d_func() const
   public: inline void moveTo(qreal x, qreal y);
   public: inline void lineTo(qreal x, qreal y);
   public: inline void arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLenght);
   public: inline void arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle);
   public: inline void cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y, qreal endPtx, qreal endPty);
   public: inline void quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty);
   public: inline void addEllipse(qreal x, qreal y, qreal w, qreal h);
   public: inline void addRect(qreal x, qreal y, qreal w, qreal h);
   public: inline void addText(qreal x, qreal y, struct QFont const & f, struct QString const & text);
   public: inline bool isEmpty() const
   public: inline int elementCount() const
   public: inline class QPainterPath::Element const & elementAt(int i) const
   public: inline void setElementPositionAt(int i, qreal x, qreal y);
   private: inline void detach();
   friend struct QPainterPathData;
   friend class QPainterPathStroker;
   friend struct QPainterPathStrokerPrivate;
   friend class QMatrix;
   friend struct QDataStream& operator <<(struct QDataStream&, class QPainterPath const &);
   friend struct QDataStream& operator >>(struct QDataStream&, class QPainterPath&);
};
class QPainterPathPrivate{
   private: class QAtomic ref;
   private: class QVector < class QPainterPath::Element > elements;
   friend class QPainterPath;
   friend struct QPainterPathData;
   friend class QPainterPathStroker;
   friend struct QPainterPathStrokerPrivate;
   friend class QMatrix;
   friend struct QDataStream& operator <<(struct QDataStream&, class QPainterPath const &);
   friend struct QDataStream& operator >>(struct QDataStream&, class QPainterPath&);
};
template < > class QTypeInfo < class QPainterPath::Element >{
   public: static inline char const * name();
   public: enum /*anonymous*/{
      isComplex = 0,
      isStatic = 0,
      isLarge = 1,
      isPointer = 0,
      isDummy = 0,
   };
};
#ifndef QT_NO_DATASTREAM
struct QDataStream& operator <<(struct QDataStream&, class QPainterPath const &);
struct QDataStream& operator >>(struct QDataStream&, class QPainterPath&);
#endif
class QPainterPathStroker{
   private: inline struct QPainterPathStrokerPrivate* d_func();
   private: inline struct QPainterPathStrokerPrivate const * d_func() const
   public: QPainterPathStroker();
   public: ~QPainterPathStroker();
   public: void setWidth(qreal width);
   public: qreal width() const
   public: void setCapStyle(enum Qt::PenCapStyle style);
   public: enum Qt::PenCapStyle capStyle() const
   public: void setJoinStyle(enum Qt::PenJoinStyle style);
   public: enum Qt::PenJoinStyle joinStyle() const
   public: void setMiterLimit(qreal length);
   public: qreal miterLimit() const
   public: void setCurveThreshold(qreal threshold);
   public: qreal curveThreshold() const
   public: void setDashPattern(enum Qt::PenStyle);
   public: void setDashPattern(class QVector < double > const & dashPattern);
   public: class QVector < double > dashPattern() const
   public: class QPainterPath createStroke(class QPainterPath const & path) const
   private: struct QPainterPathStrokerPrivate* d_ptr;
   friend struct QPainterPathStrokerPrivate;
};
#endif // QPAINTERPATH_H