|
Grantlee
5.1.0
|
00001 /* 00002 This file is part of the Grantlee template system. 00003 00004 Copyright (c) 2008 Stephen Kelly <steveire@gmail.com> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Lesser General Public 00008 License as published by the Free Software Foundation; either version 00009 2.1 of the Licence, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Lesser General Public License for more details. 00015 00016 You should have received a copy of the GNU Lesser General Public 00017 License along with this library. If not, see <http://www.gnu.org/licenses/>. 00018 00019 */ 00020 00021 #ifndef GRANTLEE_MARKUPDIRECTOR_H 00022 #define GRANTLEE_MARKUPDIRECTOR_H 00023 00024 #include "abstractmarkupbuilder.h" 00025 #include "grantlee_textdocument_export.h" 00026 00027 #include <QtGui/QTextDocument> 00028 #include <QtGui/QTextFrame> 00029 00030 class QTextTable; 00031 class QTextTableCell; 00032 class QTextList; 00033 class QTextCharFormat; 00034 00035 namespace Grantlee 00036 { 00037 00038 class MarkupDirectorPrivate; 00039 00041 00095 class GRANTLEE_TEXTDOCUMENT_EXPORT MarkupDirector 00096 { 00097 public: 00101 MarkupDirector(AbstractMarkupBuilder *builder); 00102 00106 virtual ~MarkupDirector(); 00107 00111 virtual void processDocument(QTextDocument *doc); 00112 00117 virtual QTextFrame::iterator processFrame(QTextFrame::iterator it, 00118 QTextFrame *frame); 00119 00127 virtual QTextFrame::iterator processBlock(QTextFrame::iterator it, 00128 const QTextBlock &block); 00129 00136 virtual QTextFrame::iterator processObject(QTextFrame::iterator it, 00137 const QTextBlock &block, 00138 QTextObject *textObject); 00139 00146 virtual QPair<QTextFrame::iterator, QTextBlock> 00147 processBlockGroup(QTextFrame::iterator it, const QTextBlock &block, 00148 QTextBlockGroup *textBlockGroup); 00149 00157 virtual QPair<QTextFrame::iterator, QTextBlock> 00158 processList(QTextFrame::iterator it, const QTextBlock &block, 00159 QTextList *textList); 00160 00167 virtual QTextFrame::iterator processBlockContents(QTextFrame::iterator it, 00168 const QTextBlock &block); 00169 00175 virtual void processCustomFragment(const QTextFragment &fragment, 00176 QTextDocument const *doc); 00177 00183 virtual QTextBlock::iterator processFragment(QTextBlock::iterator it, 00184 const QTextFragment &fragment, 00185 QTextDocument const *doc); 00186 00195 virtual QTextBlock::iterator 00196 processCharTextObject(QTextBlock::iterator it, const QTextFragment &fragment, 00197 QTextObject *textObject); 00198 00206 virtual QTextBlock::iterator processImage(QTextBlock::iterator it, 00207 const QTextImageFormat &imageFormat, 00208 QTextDocument *doc); 00209 00217 virtual QTextFrame::iterator processTable(QTextFrame::iterator it, 00218 QTextTable *table); 00219 00224 virtual void processTableCell(const QTextTableCell &tableCell, 00225 QTextTable *table); 00226 00227 protected: 00231 void processDocumentContents(QTextFrame::iterator begin, 00232 QTextFrame::iterator end); 00233 00242 QPair<QTextFrame::iterator, QTextBlock> 00243 skipBlockGroup(QTextFrame::iterator it, const QTextBlock &_block, 00244 QTextBlockGroup *blockGroup); 00245 00254 QList<int> sortOpeningOrder(QSet<int> openingTags, 00255 QTextBlock::iterator it) const; 00256 00261 virtual void processClosingElements(QTextBlock::iterator it); 00262 00266 virtual void processOpeningElements(QTextBlock::iterator it); 00267 00271 virtual QSet<int> getElementsToClose(QTextBlock::iterator it) const; 00272 00276 virtual QList<int> getElementsToOpen(QTextBlock::iterator it); 00277 00281 enum OpenElementValues { 00282 None = 0x0, 00283 SuperScript = 0x01, 00284 SubScript = 0x02, 00285 Anchor = 0x04, 00286 SpanForeground = 0x08, 00287 SpanBackground = 0x10, 00288 SpanFontFamily = 0x20, 00289 SpanFontPointSize = 0x40, 00290 Strong = 0x80, 00291 Emph = 0x100, 00292 Underline = 0x200, 00293 StrikeOut = 0x400 00294 }; 00295 00296 protected: 00297 #ifndef Q_QDOC 00298 MarkupDirectorPrivate *const d_ptr; 00299 #endif 00300 00305 AbstractMarkupBuilder *m_builder; 00306 00307 #ifndef Q_QDOC 00308 private: 00309 Q_DECLARE_PRIVATE(MarkupDirector) 00310 #endif 00311 }; 00312 } 00313 00314 #endif
1.7.6.1