1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtGui module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef QTEXTODFWRITER_H 43 #define QTEXTODFWRITER_H 44 #ifndef QT_NO_TEXTODFWRITER 45 46 // 47 // W A R N I N G 48 // ------------- 49 // 50 // This file is not part of the Qt API. It exists for the convenience 51 // of the QLibrary class. This header file may change from 52 // version to version without notice, or even be removed. 53 // 54 // We mean it. 55 // 56 57 #include <QtCore/QXmlStreamWriter> 58 #include <QtCore/qset.h> 59 #include <QtCore/qstack.h> 60 61 #include "qtextdocument_p.h" 62 #include "qtextdocumentwriter.h" 63 64 QT_BEGIN_NAMESPACE 65 66 class QTextDocumentPrivate; 67 class QTextCursor; 68 class QTextBlock; 69 class QIODevice; 70 class QXmlStreamWriter; 71 class QTextOdfWriterPrivate; 72 class QTextBlockFormat; 73 class QTextCharFormat; 74 class QTextListFormat; 75 class QTextFrameFormat; 76 class QTextTableCellFormat; 77 class QTextFrame; 78 class QTextFragment; 79 class QOutputStrategy; 80 81 class Q_AUTOTEST_EXPORT QTextOdfWriter { 82 public: 83 QTextOdfWriter(const QTextDocument &document, QIODevice *device); 84 bool writeAll(); 85 setCodec(QTextCodec * codec)86 void setCodec(QTextCodec *codec) { m_codec = codec; } setCreateArchive(bool on)87 void setCreateArchive(bool on) { m_createArchive = on; } createArchive()88 bool createArchive() const { return m_createArchive; } 89 90 void writeBlock(QXmlStreamWriter &writer, const QTextBlock &block); 91 void writeFormats(QXmlStreamWriter &writer, QSet<int> formatIds) const; 92 void writeBlockFormat(QXmlStreamWriter &writer, QTextBlockFormat format, int formatIndex) const; 93 void writeCharacterFormat(QXmlStreamWriter &writer, QTextCharFormat format, int formatIndex) const; 94 void writeListFormat(QXmlStreamWriter &writer, QTextListFormat format, int formatIndex) const; 95 void writeFrameFormat(QXmlStreamWriter &writer, QTextFrameFormat format, int formatIndex) const; 96 void writeTableCellFormat(QXmlStreamWriter &writer, QTextTableCellFormat format, int formatIndex) const; 97 void writeFrame(QXmlStreamWriter &writer, const QTextFrame *frame); 98 void writeInlineCharacter(QXmlStreamWriter &writer, const QTextFragment &fragment) const; 99 100 const QString officeNS, textNS, styleNS, foNS, tableNS, drawNS, xlinkNS, svgNS; 101 private: 102 const QTextDocument *m_document; 103 QIODevice *m_device; 104 105 QOutputStrategy *m_strategy; 106 QTextCodec *m_codec; 107 bool m_createArchive; 108 109 QStack<QTextList *> m_listStack; 110 }; 111 112 QT_END_NAMESPACE 113 114 #endif // QT_NO_TEXTODFWRITER 115 #endif // QTEXTODFWRITER_H 116