#ifndef QABSTRACTTEXTDOCUMENTLAYOUT_H
#define QABSTRACTTEXTDOCUMENTLAYOUT_H 
#include <QtCore/qobject.h>
#include <QtGui/qtextlayout.h>
#include <QtGui/qtextdocument.h>
#include <QtGui/qtextcursor.h>
#include <QtGui/qpalette.h>
typedef enum QtValidLicenseForGuiModule QtGuiModule;
struct QAbstractTextDocumentLayoutPrivate;
class QAbstractTextDocumentLayout: public QObject{
   public: virtual struct QMetaObject const * metaObject() const
   public: static struct QMetaObject const staticMetaObject;
   public: virtual void* qt_metacast(char const *);
   public: static inline class QString tr(char const * s, char const * c = 0);
   public: static inline class QString trUtf8(char const * s, char const * c = 0);
   public: static inline class QString tr(char const * s, char const * c, int n);
   public: static inline class QString trUtf8(char const * s, char const * c, int n);
   public: virtual int qt_metacall(enum QMetaObject::Call, int, void* *);
   private: inline struct QAbstractTextDocumentLayoutPrivate* d_func();
   private: inline struct QAbstractTextDocumentLayoutPrivate const * d_func() const
   public: explicit QAbstractTextDocumentLayout(class QTextDocument* doc);
   public: virtual ~QAbstractTextDocumentLayout();
   public: struct Selection{
      public: class QTextCursor cursor;
      public: class QTextCharFormat format;
   };
   public: struct PaintContext{
      public: inline PaintContext();
      public: int cursorPosition;
      public: class QPalette palette;
      public: class QRectF clip;
      public: class QVector < struct QAbstractTextDocumentLayout::Selection > selections;
   };
   public: virtual void draw(struct QPainter* painter, struct QAbstractTextDocumentLayout::PaintContext const & context) = 0;
   public: virtual int hitTest(class QPointF const & point, enum Qt::HitTestAccuracy accuracy) const = 0;
   public: class QString anchorAt(class QPointF const & pos) const
   public: virtual int pageCount() const = 0;
   public: virtual class QSizeF documentSize() const = 0;
   public: virtual class QRectF frameBoundingRect(struct QTextFrame* frame) const = 0;
   public: virtual class QRectF blockBoundingRect(struct QTextBlock const & block) const = 0;
   public: void setPaintDevice(class QPaintDevice* device);
   public: class QPaintDevice* paintDevice() const
   public: class QTextDocument* document() const
   public: void registerHandler(int objectType, class QObject* component);
   public: class QTextObjectInterface* handlerForObject(int objectType) const
   protected: void update(class QRectF const & = QRectF::QRectF(0.0, 0.0, 1.0e+9, 1.0e+9));
   protected: void documentSizeChanged(class QSizeF const & newSize);
   protected: void pageCountChanged(int newPages);
   protected: QAbstractTextDocumentLayout(struct QAbstractTextDocumentLayoutPrivate&, class QTextDocument*);
   protected: virtual void documentChanged(int from, int charsRemoved, int charsAdded) = 0;
   protected: virtual void resizeInlineObject(class QTextInlineObject item, int posInDocument, class QTextFormat const & format);
   protected: virtual void positionInlineObject(class QTextInlineObject item, int posInDocument, class QTextFormat const & format);
   protected: virtual void drawInlineObject(struct QPainter* painter, class QRectF const & rect, class QTextInlineObject object, int posInDocument, class QTextFormat const & format);
   protected: int formatIndex(int pos);
   protected: class QTextCharFormat format(int pos);
   friend struct QAbstractTextDocumentLayoutPrivate;
   friend class QTextDocument;
   friend struct QTextDocumentPrivate;
   friend struct QTextEngine;
   friend class QTextLayout;
   friend class QTextLine;
};
class QTextObjectInterface{
   public: virtual inline ~QTextObjectInterface();
   public: virtual class QSizeF intrinsicSize(class QTextDocument* doc, int posInDocument, class QTextFormat const & format) = 0;
   public: virtual void drawObject(struct QPainter* painter, class QRectF const & rect, class QTextDocument* doc, int posInDocument, class QTextFormat const & format) = 0;
};
#endif // QABSTRACTTEXTDOCUMENTLAYOUT_H