Scribus
Open source desktop publishing at your fingertips
contentreader.h
1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 /***************************************************************************
8  * Copyright (C) 2004 by Riku Leino *
9  * tsoots@gmail.com *
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  * This program is distributed in the hope that it will be useful, *
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
19  * GNU General Public License for more details. *
20  * *
21  * You should have received a copy of the GNU General Public License *
22  * along with this program; if not, write to the *
23  * Free Software Foundation, Inc., *
24  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
25  ***************************************************************************/
26 
27 #ifndef CONTENTREADER_H
28 #define CONTENTREADER_H
29 
30 #include "scconfig.h"
31 
32 #ifdef HAVE_XML
33 
34 #include <utility>
35 #include <vector>
36 #ifdef HAVE_XML26
37  #include <libxml/SAX2.h>
38 #else
39  #include <libxml/SAX.h>
40 #endif
41 #include <QXmlAttributes>
42 #include <QMap>
43 #include <gtstyle.h>
44 #include <gtwriter.h>
45 #include "stylereader.h"
46 
47 typedef std::vector<std::pair<QString, QString> > Properties;
48 typedef QMap<QString, Properties > TMap;
49 
50 class ContentReader
51 {
52 private:
53  static ContentReader *creader;
54  TMap tmap;
55  QString docname;
56  StyleReader* sreader;
57  gtWriter *writer;
58  gtStyle *defaultStyle;
59  gtStyle *currentStyle;
60  gtStyle *lastStyle;
61  gtStyle *pstyle;
62  bool importTextOnly;
63  bool inList;
64  bool inNote;
65  bool inNoteBody;
66  bool inSpan;
67  int append;
68  int listLevel;
69  int listIndex;
70  std::vector<int> listIndex2;
71  std::vector<bool> isOrdered2;
72  bool inT;
73  std::vector<QString> styleNames;
74  QString tName;
75  QString currentList;
76  void write(const QString& text);
77  QString getName();
78  void getStyle();
79 public:
80  ContentReader(QString documentName, StyleReader* s, gtWriter *w, bool textOnly);
81  ~ContentReader();
82  static void startElement(void *user_data, const xmlChar *fullname, const xmlChar ** atts);
83  static void endElement(void *user_data, const xmlChar *name);
84  static void characters(void *user_data, const xmlChar *ch, int len);
85  bool startElement(const QString&, const QString&, const QString &name, const QXmlAttributes &attrs);
86  bool endElement(const QString&, const QString&, const QString &name);
87  bool characters(const QString &ch);
88  void parse(QString fileName);
89 };
90 
91 #endif // HAVE_XML
92 
93 #endif
Definition: gtwriter.h:38
Definition: gtstyle.h:34
Definition: stylereader.h:119
Definition: contentreader.h:50