#ifndef QREGION_H
#define QREGION_H 
#include <QtCore/qatomic.h>
#include <QtCore/qrect.h>
#include <QtGui/qwindowdefs.h>
typedef enum QtValidLicenseForGuiModule QtGuiModule;
template < typename T > struct QVector;
struct QVariant;
#if defined(Q_WS_QWS) || defined(Q_WS_X11) || defined(Q_WS_MAC)
struct QRegionPrivate;
#endif
class QRegion{
   public: enum RegionType{
      Rectangle = 0,
      Ellipse = 1,
   };
   public: QRegion();
   public: QRegion(int x, int y, int w, int h, enum QRegion::RegionType t = QRegion::Rectangle);
   public: QRegion(class QRect const & r, enum QRegion::RegionType t = QRegion::Rectangle);
   public: QRegion(struct QPolygon const & pa, enum Qt::FillRule fillRule = Qt::OddEvenFill);
   public: QRegion(class QRegion const & region);
   public: QRegion(struct QBitmap const & bitmap);
   public: ~QRegion();
   public: class QRegion& operator =(class QRegion const &);
   public: bool isEmpty() const
   public: bool contains(class QPoint const & p) const
   public: bool contains(class QRect const & r) const
   public: void translate(int dx, int dy);
   public: inline void translate(class QPoint const & p);
   public: class QRegion translated(int dx, int dy) const
   public: inline class QRegion translated(class QPoint const & p) const
   public: class QRegion unite(class QRegion const & r) const
   public: class QRegion intersect(class QRegion const & r) const
   public: class QRegion subtract(class QRegion const & r) const
   public: class QRegion eor(class QRegion const & r) const
   public: inline class QRegion united(class QRegion const & r) const
   public: inline class QRegion intersected(class QRegion const & r) const
   public: inline class QRegion subtracted(class QRegion const & r) const
   public: inline class QRegion xored(class QRegion const & r) const
   public: bool intersects(class QRegion const & r) const
   public: bool intersects(class QRect const & r) const
   public: class QRect boundingRect() const
   public: class QVector < class QRect > rects() const
   public: void setRects(class QRect const * rect, int num);
   public: QRegion operator |(class QRegion const & r) const
   public: QRegion operator +(class QRegion const & r) const
   public: QRegion operator &(class QRegion const & r) const
   public: QRegion operator -(class QRegion const & r) const
   public: QRegion operator ^(class QRegion const & r) const
   public: class QRegion& operator |=(class QRegion const & r);
   public: class QRegion& operator +=(class QRegion const & r);
   public: class QRegion& operator &=(class QRegion const & r);
   public: class QRegion& operator -=(class QRegion const & r);
   public: class QRegion& operator ^=(class QRegion const & r);
   public: bool operator ==(class QRegion const & r) const
   public: inline bool operator !=(class QRegion const & r) const
   public: operator struct QVariant () const
#ifndef qdoc
#if defined(Q_WS_WIN)
#elif defined(Q_WS_X11)
   public: inline Region handle() const
#elif defined(Q_WS_MAC)
#elif defined(Q_WS_QWS)
#endif
#endif
   private: class QRegion copy() const
   private: void detach();
#if defined(Q_WS_WIN)
#elif defined(Q_WS_X11)
   private: void updateX11Region() const
   private: void* clipRectangles(int& num) const
#elif defined(Q_WS_MAC)
#elif defined(QT_EXPERIMENTAL_REGIONS)
#endif
   private: void exec(struct QByteArray const & ba, int ver = 0);
   private: struct QRegionData{
      public: struct QBasicAtomic ref;
#if defined(Q_WS_WIN)
#elif defined(Q_WS_X11)
      public: Region rgn;
      public: void* xrectangles;
#elif defined(Q_WS_MAC)
#endif
#if defined(Q_WS_QWS) || defined(Q_WS_X11) || defined(Q_WS_MAC)
      public: struct QRegionPrivate* qt_rgn;
#endif
   };
   private: struct QRegion::QRegionData* d;
   private: static struct QRegion::QRegionData shared_empty;
   private: static void cleanUp(struct QRegion::QRegionData* x);
   friend struct QDataStream& operator <<(struct QDataStream&, class QRegion const &);
   friend struct QDataStream& operator >>(struct QDataStream&, class QRegion&);
   friend void* qt_getClipRects(class QRegion const & r, int& num);
};
#if defined(Q_WS_WIN)
#elif defined(Q_WS_X11)
void* qt_getClipRects(class QRegion const & r, int& num);
#elif defined(Q_WS_MAC)
#elif defined(QT_EXPERIMENTAL_REGIONS)
#endif
#ifndef QT_NO_DATASTREAM
struct QDataStream& operator <<(struct QDataStream&, class QRegion const &);
struct QDataStream& operator >>(struct QDataStream&, class QRegion&);
#endif
#ifndef QT_NO_DEBUG_STREAM
struct QDebug operator <<(struct QDebug, class QRegion const &);
#endif
#endif // QREGION_H