#ifndef QTEXTLAYOUT_H
#define QTEXTLAYOUT_H 
#include <QtCore/qstring.h>
#include <QtCore/qnamespace.h>
#include <QtCore/qrect.h>
#include <QtCore/qvector.h>
#include <QtGui/qcolor.h>
#include <QtCore/qobject.h>
#include <QtGui/qevent.h>
#include <QtGui/qtextformat.h>
typedef enum QtValidLicenseForGuiModule QtGuiModule;
class QTextInlineObject{
   public: inline QTextInlineObject(int i, struct QTextEngine* e);
   public: inline QTextInlineObject();
   public: inline bool isValid() const
   public: class QRectF rect() const
   public: qreal width() const
   public: qreal ascent() const
   public: qreal descent() const
   public: qreal height() const
   public: enum Qt::LayoutDirection textDirection() const
   public: void setWidth(qreal w);
   public: void setAscent(qreal a);
   public: void setDescent(qreal d);
   public: int textPosition() const
   public: int formatIndex() const
   public: class QTextFormat format() const
   private: int itm;
   private: struct QTextEngine* eng;
   friend class QTextLayout;
};
struct QTextBlock;
struct QTextOption;
class QTextLayout{
   public: QTextLayout();
   public: QTextLayout(class QString const & text);
   public: QTextLayout(class QString const & text, class QFont const & font, class QPaintDevice* paintdevice = 0);
   public: QTextLayout(struct QTextBlock const & b);
   public: ~QTextLayout();
   public: void setFont(class QFont const & f);
   public: class QFont font() const
   public: void setText(class QString const & string);
   public: class QString text() const
   public: void setTextOption(struct QTextOption const & option);
   public: struct QTextOption textOption() const
   public: void setPreeditArea(int position, class QString const & text);
   public: int preeditAreaPosition() const
   public: class QString preeditAreaText() const
   public: struct FormatRange{
      public: int start;
      public: int length;
      public: class QTextCharFormat format;
   };
   public: void setAdditionalFormats(class QList < struct QTextLayout::FormatRange > const & overrides);
   public: class QList < struct QTextLayout::FormatRange > additionalFormats() const
   public: void clearAdditionalFormats();
   public: void setCacheEnabled(bool enable);
   public: bool cacheEnabled() const
   public: void beginLayout();
   public: void endLayout();
   public: class QTextLine createLine();
   public: int lineCount() const
   public: class QTextLine lineAt(int i) const
   public: class QTextLine lineForTextPosition(int pos) const
   public: enum CursorMode{
      SkipCharacters = 0,
      SkipWords = 1,
   };
   public: bool isValidCursorPosition(int pos) const
   public: int nextCursorPosition(int oldPos, enum QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const
   public: int previousCursorPosition(int oldPos, enum QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const
   public: void draw(struct QPainter* p, class QPointF const & pos, class QVector < struct QTextLayout::FormatRange > const & selections = QVector::QVector(), class QRectF const & clip = QRectF::QRectF()) const
   public: void drawCursor(struct QPainter* p, class QPointF const & pos, int cursorPosition) const
   public: void drawCursor(struct QPainter* p, class QPointF const & pos, int cursorPosition, int width) const
   public: class QPointF position() const
   public: void setPosition(class QPointF const & p);
   public: class QRectF boundingRect() const
   public: qreal minimumWidth() const
   public: qreal maximumWidth() const
   public: inline struct QTextEngine* engine() const
   private: inline QTextLayout(struct QTextEngine* e);
   private: QTextLayout(class QTextLayout const &);
   private: class QTextLayout& operator =(class QTextLayout const &);
   private: struct QTextEngine* d;
   friend struct QPainter;
   friend struct QPSPrinter;
   friend struct QGraphicsSimpleTextItemPrivate;
   friend struct QGraphicsSimpleTextItem;
   friend void qt_format_text(class QFont const & font, class QRectF const & _r, int tf, QTextOption*, class QString const & str, class QRectF* brect, int tabstops, int* tabarray, int tabarraylen, struct QPainter* painter);
};
struct QPSPrinter;
struct QGraphicsSimpleTextItemPrivate;
struct QGraphicsSimpleTextItem;
void qt_format_text(class QFont const & font, class QRectF const & _r, int tf, QTextOption*, class QString const & str, class QRectF* brect, int tabstops, int* tabarray, int tabarraylen, struct QPainter* painter);
class QTextLine{
   public: inline QTextLine();
   public: inline bool isValid() const
   public: class QRectF rect() const
   public: qreal x() const
   public: qreal y() const
   public: qreal width() const
   public: qreal ascent() const
   public: qreal descent() const
   public: qreal height() const
   public: qreal naturalTextWidth() const
   public: class QRectF naturalTextRect() const
   public: enum Edge{
      Leading = 0,
      Trailing = 1,
   };
   public: enum CursorPosition{
      CursorBetweenCharacters = 0,
      CursorOnCharacter = 1,
   };
   public: qreal cursorToX(int* cursorPos, enum QTextLine::Edge edge = QTextLine::Leading) const
   public: inline qreal cursorToX(int cursorPos, enum QTextLine::Edge edge = QTextLine::Leading) const
   public: int xToCursor(qreal x, enum QTextLine::CursorPosition = QTextLine::CursorBetweenCharacters) const
   public: void setLineWidth(qreal width);
   public: void setNumColumns(int columns);
   public: void setPosition(class QPointF const & pos);
   public: class QPointF position() const
   public: int textStart() const
   public: int textLength() const
   public: inline int lineNumber() const
   public: void draw(struct QPainter* p, class QPointF const & point, struct QTextLayout::FormatRange const * selection = 0) const
   private: inline QTextLine(int line, struct QTextEngine* e);
   private: void layout_helper(int numGlyphs);
   private: int i;
   private: struct QTextEngine* eng;
   friend class QTextLayout;
};
#endif // QTEXTLAYOUT_H