1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
/* This file is part of the KDE project
Copyright (C) 2002 Ariya Hidayat <ariyahidayat@yahoo.de>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __AMIPROPARSER_H
#define __AMIPROPARSER_H
class TQString;
class TQStringList;
#include <tqvaluelist.h>
#include <tqcolor.h>
class AmiPro
{
public:
static const float LS_Single, LS_OneAndHalf, LS_Double;
};
class AmiProStyle;
class AmiProFormat
{
public:
int pos, len;
bool bold, italic, underline;
bool word_underline, double_underline;
bool subscript, superscript, strikethrough;
TQString fontFamily;
float fontSize;
TQColor fontColor;
enum { Left, Right, Center, Justified } align;
AmiProFormat();
AmiProFormat( const AmiProFormat& );
AmiProFormat& operator=( const AmiProFormat& );
void assign( const AmiProFormat& );
void applyStyle( const AmiProStyle& );
};
typedef TQValueList<AmiProFormat> AmiProFormatList;
class AmiProLayout
{
public:
TQString name;
TQString fontFamily;
float fontSize;
TQColor fontColor;
bool bold, italic, underline;
bool word_underline, double_underline;
bool subscript, superscript, strikethrough;
TQt::AlignmentFlags align;
float linespace;
float spaceBefore, spaceAfter;
AmiProLayout();
AmiProLayout( const AmiProLayout& );
AmiProLayout& operator=( const AmiProLayout& );
void assign( const AmiProLayout& );
void applyStyle( const AmiProStyle& );
};
class AmiProStyle
{
public:
TQString name;
TQString fontFamily;
float fontSize;
TQColor fontColor;
bool bold, italic, underline;
bool word_underline, double_underline;
bool subscript, superscript, strikethrough;
TQt::AlignmentFlags align;
float linespace;
float spaceBefore, spaceAfter;
AmiProStyle();
AmiProStyle( const AmiProStyle& );
AmiProStyle& operator=( const AmiProStyle& );
void assign( const AmiProStyle& );
};
typedef TQValueList<AmiProStyle> AmiProStyleList;
class AmiProListener
{
public:
AmiProListener();
virtual ~AmiProListener();
virtual bool doOpenDocument();
virtual bool doCloseDocument();
virtual bool doDefineStyle( const AmiProStyle& style );
virtual bool doParagraph( const TQString& text, AmiProFormatList formatList,
AmiProLayout& layout );
};
class AmiProParser
{
public:
AmiProParser();
virtual ~AmiProParser();
enum { OK, UnknownError, FileError, InvalidFormat } Error;
bool process( const TQString& filename );
int result(){ return m_result; }
void setListener( AmiProListener * );
private:
int m_result;
TQString m_text;
AmiProFormat m_currentFormat;
AmiProFormatList m_formatList;
AmiProLayout m_layout;
AmiProStyleList m_styleList;
AmiProListener *m_listener;
TQString m_currentSection;
bool setResult( int );
bool parseParagraph( const TQStringList& lines );
bool parseStyle( const TQStringList& line );
AmiProStyle findStyle( const TQString& name );
bool handleTag( const TQString& tag );
bool processOpenDocument();
bool processCloseDocument();
bool processParagraph( const TQString& text, AmiProFormatList formatList,
AmiProLayout& layout );
};
#endif
|