Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/rtfstyle.cpp

Source at commit 1322 created 9 years 5 months ago.
By meklort, Add doxygen to utils folder
1/******************************************************************************
2 *
3 * $Id: $
4 *
5 *
6 * Copyright (C) 1997-2011 by Dimitri van Heesch.
7 *
8 * Permission to use, copy, modify, and distribute this software and its
9 * documentation under the terms of the GNU General Public License is hereby
10 * granted. No representations are made about the suitability of this software
11 * for any purpose. It is provided "as is" without express or implied warranty.
12 * See the GNU General Public License for more details.
13 *
14 * Documents produced by Doxygen are derivative works derived from the
15 * input used in their production; they are not affected by this license.
16 *
17 */
18
19#include "rtfstyle.h"
20
21#include <qfile.h>
22#include <qtextstream.h>
23#include <stdlib.h>
24
25#include "message.h"
26
27
28RTFListItemInfo rtf_listItemInfo[rtf_maxIndentLevels];
29
30QCString rtf_title;
31QCString rtf_subject;
32QCString rtf_comments;
33QCString rtf_company;
34QCString rtf_logoFilename;
35QCString rtf_author;
36QCString rtf_manager;
37QCString rtf_documentType;
38QCString rtf_documentId;
39QCString rtf_keywords;
40
41char rtf_Style_Reset[] = "\\pard\\plain ";
42
43Rtf_Style_Default rtf_Style_Default[] =
44{
45 { "Heading1",
46 "\\s1\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs36\\kerning36\\cgrid ",
47 "\\sbasedon0 \\snext0 heading 1"
48 },
49 { "Heading2",
50 "\\s2\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs28\\kerning28\\cgrid ",
51 "\\sbasedon0 \\snext0 heading 2"
52 },
53 { "Heading3",
54 "\\s3\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\cgrid ",
55 "\\sbasedon0 \\snext0 heading 3"
56 },
57 { "Heading4",
58 "\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ",
59 "\\sbasedon0 \\snext0 heading 4;}{\\*\\cs10 \\additive Default Paragraph Font"
60 },
61 { "Heading5",
62 "\\s5\\sb90\\sa30\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ",
63 "\\sbasedon0 \\snext0 heading 5;}{\\*\\cs10 \\additive Default Paragraph Font"
64 },
65 { "Title",
66 "\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid ",
67 "\\sbasedon0 \\snext15 Title"
68 },
69 { "SubTitle",
70 "\\s16\\qc\\sa60\\widctlpar\\outlinelevel1\\adjustright \\f1\\cgrid ",
71 "\\sbasedon0 \\snext16 Subtitle"
72 },
73 { "BodyText",
74 "\\s17\\sa60\\sb30\\widctlpar\\qj \\fs22\\cgrid ",
75 "\\sbasedon0 \\snext17 BodyText"
76 },
77 { "DenseText",
78 "\\s18\\widctlpar\\fs22\\cgrid ",
79 "\\sbasedon0 \\snext18 DenseText"
80 },
81 { "Header",
82 "\\s28\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\adjustright \\fs20\\cgrid ",
83 "\\sbasedon0 \\snext28 header"
84 },
85 { "Footer",
86 "\\s29\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\qr\\adjustright \\fs20\\cgrid ",
87 "\\sbasedon0 \\snext29 footer"
88 },
89 { "GroupHeader",
90 "\\s30\\li360\\sa60\\sb120\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ",
91 "\\sbasedon0 \\snext30 GroupHeader"
92 },
93 { "CodeExample0",
94 "\\s40\\li0\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
95 "\\sbasedon0 \\snext41 Code Example 0"
96 },
97 { "CodeExample1",
98 "\\s41\\li360\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
99 "\\sbasedon0 \\snext42 Code Example 1"
100 },
101 { "CodeExample2",
102 "\\s42\\li720\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
103 "\\sbasedon0 \\snext43 Code Example 2"
104 },
105 { "CodeExample3",
106 "\\s43\\li1080\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
107 "\\sbasedon0 \\snext44 Code Example 3"
108 },
109 { "CodeExample4",
110 "\\s44\\li1440\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
111 "\\sbasedon0 \\snext45 Code Example 4"
112 },
113 { "CodeExample5",
114 "\\s45\\li1800\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
115 "\\sbasedon0 \\snext46 Code Example 5"
116 },
117 { "CodeExample6",
118 "\\s46\\li2160\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
119 "\\sbasedon0 \\snext47 Code Example 6"
120 },
121 { "CodeExample7",
122 "\\s47\\li2520\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
123 "\\sbasedon0 \\snext48 Code Example 7"
124 },
125 { "CodeExample8",
126 "\\s48\\li2880\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
127 "\\sbasedon0 \\snext49 Code Example 8"
128 },
129 { "CodeExample9",
130 "\\s49\\li3240\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
131 "\\sbasedon0 \\snext49 Code Example 9"
132 },
133 { "ListContinue0",
134 "\\s50\\li0\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
135 "\\sbasedon0 \\snext51 List Continue 0"
136 },
137 { "ListContinue1",
138 "\\s51\\li360\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
139 "\\sbasedon0 \\snext52 List Continue 1"
140 },
141 { "ListContinue2",
142 "\\s52\\li720\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
143 "\\sbasedon0 \\snext53 List Continue 2"
144 },
145 { "ListContinue3",
146 "\\s53\\li1080\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
147 "\\sbasedon0 \\snext54 List Continue 3"
148 },
149 { "ListContinue4",
150 "\\s54\\li1440\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
151 "\\sbasedon0 \\snext55 List Continue 4"
152 },
153 { "ListContinue5",
154 "\\s55\\li1800\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
155 "\\sbasedon0 \\snext56 List Continue 5"
156 },
157 { "ListContinue6",
158 "\\s56\\li2160\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
159 "\\sbasedon0 \\snext57 List Continue 6"
160 },
161 { "ListContinue7",
162 "\\s57\\li2520\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
163 "\\sbasedon0 \\snext58 List Continue 7"
164 },
165 { "ListContinue8",
166 "\\s58\\li2880\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
167 "\\sbasedon0 \\snext59 List Continue 8"
168 },
169 { "ListContinue9",
170 "\\s59\\li3240\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
171 "\\sbasedon0 \\snext59 List Continue 9"
172 },
173 { "DescContinue0",
174 "\\s60\\li0\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
175 "\\sbasedon0 \\snext61 DescContinue 0"
176 },
177 { "DescContinue1",
178 "\\s61\\li360\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
179 "\\sbasedon0 \\snext62 DescContinue 1"
180 },
181 { "DescContinue2",
182 "\\s62\\li720\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
183 "\\sbasedon0 \\snext63 DescContinue 2"
184 },
185 { "DescContinue3",
186 "\\s63\\li1080\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
187 "\\sbasedon0 \\snext64 DescContinue 3"
188 },
189 { "DescContinue4",
190 "\\s64\\li1440\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
191 "\\sbasedon0 \\snext65 DescContinue 4"
192 },
193 { "DescContinue5",
194 "\\s65\\li1800\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
195 "\\sbasedon0 \\snext66 DescContinue 5"
196 },
197 { "DescContinue6",
198 "\\s66\\li2160\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
199 "\\sbasedon0 \\snext67 DescContinue 6"
200 },
201 { "DescContinue7",
202 "\\s67\\li2520\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
203 "\\sbasedon0 \\snext68 DescContinue 7"
204 },
205 { "DescContinue8",
206 "\\s68\\li2880\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
207 "\\sbasedon0 \\snext69 DescContinue 8"
208 },
209 { "DescContinue9",
210 "\\s69\\li3240\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
211 "\\sbasedon0 \\snext69 DescContinue 9"
212 },
213 { "LatexTOC0",
214 "\\s70\\li0\\sa30\\sb30\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
215 "\\sbasedon0 \\snext81 LatexTOC 0"
216 },
217 { "LatexTOC1",
218 "\\s71\\li360\\sa27\\sb27\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
219 "\\sbasedon0 \\snext82 LatexTOC 1"
220 },
221 { "LatexTOC2",
222 "\\s72\\li720\\sa24\\sb24\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
223 "\\sbasedon0 \\snext83 LatexTOC 2"
224 },
225 { "LatexTOC3",
226 "\\s73\\li1080\\sa21\\sb21\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
227 "\\sbasedon0 \\snext84 LatexTOC 3"
228 },
229 { "LatexTOC4",
230 "\\s74\\li1440\\sa18\\sb18\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
231 "\\sbasedon0 \\snext85 LatexTOC 4"
232 },
233 { "LatexTOC5",
234 "\\s75\\li1800\\sa15\\sb15\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
235 "\\sbasedon0 \\snext86 LatexTOC 5"
236 },
237 { "LatexTOC6",
238 "\\s76\\li2160\\sa12\\sb12\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
239 "\\sbasedon0 \\snext87 LatexTOC 6"
240 },
241 { "LatexTOC7",
242 "\\s77\\li2520\\sa9\\sb9\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
243 "\\sbasedon0 \\snext88 LatexTOC 7"
244 },
245 { "LatexTOC8",
246 "\\s78\\li2880\\sa6\\sb6\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
247 "\\sbasedon0 \\snext89 LatexTOC 8"
248 },
249 { "LatexTOC9",
250 "\\s79\\li3240\\sa3\\sb3\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
251 "\\sbasedon0 \\snext89 LatexTOC 9"
252 },
253 { "ListBullet0",
254 "\\s80\\fi-360\\li360\\widctlpar\\jclisttab\\tx360{\\*\\pn \\pnlvlbody\\ilvl0\\ls1\\pnrnot0\\pndec }\\ls1\\adjustright \\fs20\\cgrid ",
255 "\\sbasedon0 \\snext81 \\sautoupd List Bullet 0"
256 },
257 { "ListBullet1",
258 "\\s81\\fi-360\\li720\\widctlpar\\jclisttab\\tx720{\\*\\pn \\pnlvlbody\\ilvl0\\ls2\\pnrnot0\\pndec }\\ls2\\adjustright \\fs20\\cgrid ",
259 "\\sbasedon0 \\snext82 \\sautoupd List Bullet 1"
260 },
261 { "ListBullet2",
262 "\\s82\\fi-360\\li1080\\widctlpar\\jclisttab\\tx1080{\\*\\pn \\pnlvlbody\\ilvl0\\ls3\\pnrnot0\\pndec }\\ls3\\adjustright \\fs20\\cgrid ",
263 "\\sbasedon0 \\snext83 \\sautoupd List Bullet 2"
264 },
265 { "ListBullet3",
266 "\\s83\\fi-360\\li1440\\widctlpar\\jclisttab\\tx1440{\\*\\pn \\pnlvlbody\\ilvl0\\ls4\\pnrnot0\\pndec }\\ls4\\adjustright \\fs20\\cgrid ",
267 "\\sbasedon0 \\snext84 \\sautoupd List Bullet 3"
268 },
269 { "ListBullet4",
270 "\\s84\\fi-360\\li1800\\widctlpar\\jclisttab\\tx1800{\\*\\pn \\pnlvlbody\\ilvl0\\ls5\\pnrnot0\\pndec }\\ls5\\adjustright \\fs20\\cgrid ",
271 "\\sbasedon0 \\snext85 \\sautoupd List Bullet 4"
272 },
273 { "ListBullet5",
274 "\\s85\\fi-360\\li2160\\widctlpar\\jclisttab\\tx2160{\\*\\pn \\pnlvlbody\\ilvl0\\ls6\\pnrnot0\\pndec }\\ls6\\adjustright \\fs20\\cgrid ",
275 "\\sbasedon0 \\snext86 \\sautoupd List Bullet 5"
276 },
277 { "ListBullet6",
278 "\\s86\\fi-360\\li2520\\widctlpar\\jclisttab\\tx2520{\\*\\pn \\pnlvlbody\\ilvl0\\ls7\\pnrnot0\\pndec }\\ls7\\adjustright \\fs20\\cgrid ",
279 "\\sbasedon0 \\snext87 \\sautoupd List Bullet 6"
280 },
281 { "ListBullet7",
282 "\\s87\\fi-360\\li2880\\widctlpar\\jclisttab\\tx2880{\\*\\pn \\pnlvlbody\\ilvl0\\ls8\\pnrnot0\\pndec }\\ls8\\adjustright \\fs20\\cgrid ",
283 "\\sbasedon0 \\snext88 \\sautoupd List Bullet 7"
284 },
285 { "ListBullet8",
286 "\\s88\\fi-360\\li3240\\widctlpar\\jclisttab\\tx3240{\\*\\pn \\pnlvlbody\\ilvl0\\ls9\\pnrnot0\\pndec }\\ls9\\adjustright \\fs20\\cgrid ",
287 "\\sbasedon0 \\snext89 \\sautoupd List Bullet 8"
288 },
289 { "ListBullet9",
290 "\\s89\\fi-360\\li3600\\widctlpar\\jclisttab\\tx3600{\\*\\pn \\pnlvlbody\\ilvl0\\ls10\\pnrnot0\\pndec }\\ls10\\adjustright \\fs20\\cgrid ",
291 "\\sbasedon0 \\snext89 \\sautoupd List Bullet 9"
292 },
293 { "ListEnum0",
294 "\\s90\\fi-360\\li360\\widctlpar\\fs20\\cgrid ",
295 "\\sbasedon0 \\snext91 \\sautoupd List Enum 0"
296 },
297 { "ListEnum1",
298 "\\s91\\fi-360\\li720\\widctlpar\\fs20\\cgrid ",
299 "\\sbasedon0 \\snext92 \\sautoupd List Enum 1"
300 },
301 { "ListEnum2",
302 "\\s92\\fi-360\\li1080\\widctlpar\\fs20\\cgrid ",
303 "\\sbasedon0 \\snext93 \\sautoupd List Enum 2"
304 },
305 { "ListEnum3",
306 "\\s93\\fi-360\\li1440\\widctlpar\\fs20\\cgrid ",
307 "\\sbasedon0 \\snext94 \\sautoupd List Enum 3"
308 },
309 { "ListEnum4",
310 "\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid ",
311 "\\sbasedon0 \\snext95 \\sautoupd List Enum 4"
312 },
313 { "ListEnum5",
314 "\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid ",
315 "\\sbasedon0 \\snext96 \\sautoupd List Enum 5"
316 },
317 { "ListEnum6",
318 "\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid ",
319 "\\sbasedon0 \\snext96 \\sautoupd List Enum 5"
320 },
321 { "ListEnum7",
322 "\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid ",
323 "\\sbasedon0 \\snext98 \\sautoupd List Enum 7"
324 },
325 { "ListEnum8",
326 "\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid ",
327 "\\sbasedon0 \\snext99 \\sautoupd List Enum 8"
328 },
329 { "ListEnum9",
330 "\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid ",
331 "\\sbasedon0 \\snext99 \\sautoupd List Enum 9"
332 },
333 { 0,
334 0,
335 0
336 }
337};
338
339const QRegExp StyleData::s_clause("\\\\s[0-9]+\\s*");
340
341StyleData::StyleData(const char* reference, const char* definition)
342{
343 int start = s_clause.match(reference); ASSERT(start >= 0);
344 reference += start;
345 index = (int)atol(reference + 2); ASSERT(index > 0);
346
347 ASSERT(reference != 0);
348 size_t size = 1 + strlen(reference);
349 memcpy(this->reference = new char[size], reference, size);
350
351 ASSERT(definition != 0);
352 size = 1 + strlen(definition);
353 memcpy(this->definition = new char[size], definition, size);
354}
355
356StyleData::~StyleData()
357{
358 delete[] reference;
359 delete[] definition;
360}
361
362bool StyleData::setStyle(const char* s, const char* styleName)
363{
364 static const QRegExp subgroup("^{[^}]*}\\s*");
365 static const QRegExp any_clause("^\\\\[a-z][a-z0-9-]*\\s*");
366
367 int len = 0; // length of a particular RTF formatting control
368 int ref_len = 0; // length of the whole formatting section of a style
369 int start = s_clause.match(s, 0, &len);
370 if (start < 0)
371 {
372 err("Style sheet '%s' contains no '\\s' clause.\n{%s}\n", styleName, s);
373 return FALSE;
374 }
375 s += start;
376 index = (int)atol(s + 2); ASSERT(index > 0);
377
378 // search for the end of pure formatting codes
379 const char* end = s + len;
380 ref_len = len;
381 bool haveNewDefinition = TRUE;
382 for(;;)
383 {
384 if (*end == '{')
385 {
386 // subgroups are used for \\additive
387 if (0 != subgroup.match(end, 0, &len))
388 break;
389 else
390 {
391 end += len;
392 ref_len += len;
393 }
394 }
395 else if (*end == '\\')
396 {
397 if (0 == strncmp(end, "\\snext", 6))
398 break;
399 if (0 == strncmp(end, "\\sbasedon", 9))
400 break;
401 if (0 != any_clause.match(end, 0, &len))
402 break;
403 end += len;
404 ref_len += len;
405 }
406 else if (*end == 0)
407 { // no style-definition part, keep default value
408 haveNewDefinition = FALSE;
409 break;
410 }
411 else // plain name without leading \\snext
412 break;
413 }
414 delete[] reference;
415 reference = new char[ref_len + 1];
416 memcpy(reference, s, ref_len);
417 reference[ref_len] = 0;
418 if (haveNewDefinition)
419 {
420 delete[] definition;
421 size_t size = 1 + strlen(end);
422 definition = new char[size];
423 memcpy(definition, end, size);
424 }
425 return TRUE;
426}
427
428void loadStylesheet(const char *name, QDict<StyleData>& dict)
429{
430 QFile file(name);
431 if (!file.open(IO_ReadOnly))
432 {
433 err("Can't open RTF style sheet file %s. Using defaults.\n",name);
434 return;
435 }
436 msg("Loading RTF style sheet %s...\n",name);
437
438 static const QRegExp separator("[ \t]*=[ \t]*");
439 uint lineNr=1;
440 QTextStream t(&file);
441 t.setEncoding(QTextStream::UnicodeUTF8);
442
443 while (!t.eof())
444 {
445 QCString s(4096); // string buffer of max line length
446 s = t.readLine().stripWhiteSpace();
447 if (s.isEmpty() || s.at(0)=='#') continue; // skip blanks & comments
448 int sepLength;
449 int sepStart = separator.match(s,0,&sepLength);
450 if (sepStart<=0) // no valid assignment statement
451 {
452 warn(name,lineNr,"Assignment of style sheet name expected!\n");
453 continue;
454 }
455 QCString key=s.left(sepStart);
456 if (dict[key]==0) // not a valid style sheet name
457 {
458 warn(name,lineNr,"Invalid style sheet name %s ignored.\n",key.data());
459 continue;
460 }
461 StyleData* styleData = dict.find(key);
462 if (styleData == 0)
463 {
464 warn(name,lineNr,"Unknown style sheet name %s ignored.\n",key.data());
465 continue;
466 }
467 s+=" "; // add command separator
468 styleData->setStyle(s.data() + sepStart + sepLength, key.data());
469 lineNr++;
470 }
471}
472
473QDict<StyleData> rtf_Style(257);
474
475void loadExtensions(const char *name)
476{
477 QFile file(name);
478 if (!file.open(IO_ReadOnly))
479 {
480 err("Can't open RTF extensions file %s. Using defaults.\n",name);
481 return;
482 }
483 msg("Loading RTF extensions %s...\n",name);
484
485 static const QRegExp separator("[ \t]*=[ \t]*");
486 uint lineNr=1;
487 QTextStream t(&file);
488 t.setEncoding(QTextStream::UnicodeUTF8);
489
490 while (!t.eof())
491 {
492 QCString s(4096); // string buffer of max line length
493 s = t.readLine().stripWhiteSpace();
494 if (s.length()==0 || s.at(0)=='#') continue; // skip blanks & comments
495 int sepLength;
496 int sepStart = separator.match(s,0,&sepLength);
497 if (sepStart<=0) // no valid assignment statement
498 {
499 warn(name,lineNr,"Assignment of extension field expected!\n");
500 continue;
501 }
502 QCString key=s.left(sepStart);
503 QCString data=s.data() + sepStart + sepLength;
504
505 if (key == "Title") rtf_title = data.data();
506 if (key == "Subject") rtf_subject = data.data();
507 if (key == "Comments") rtf_comments = data.data();
508 if (key == "Company") rtf_company = data.data();
509 if (key == "LogoFilename") rtf_logoFilename = data.data();
510 if (key == "Author") rtf_author = data.data();
511 if (key == "Manager") rtf_manager = data.data();
512 if (key == "DocumentType") rtf_documentType = data.data();
513 if (key == "DocumentId") rtf_documentId = data.data();
514 if (key == "Keywords") rtf_keywords = data.data();
515 lineNr++;
516 }
517}
518
519

Archive Download this file

Revision: 1322