Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* libmspub
3 : * Version: MPL 1.1 / GPLv2+ / LGPLv2+
4 : *
5 : * The contents of this file are subject to the Mozilla Public License Version
6 : * 1.1 (the "License"); you may not use this file except in compliance with
7 : * the License or as specified alternatively below. You may obtain a copy of
8 : * the License at http://www.mozilla.org/MPL/
9 : *
10 : * Software distributed under the License is distributed on an "AS IS" basis,
11 : * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 : * for the specific language governing rights and limitations under the
13 : * License.
14 : *
15 : * Major Contributor(s):
16 : * Copyright (C) 2012 Brennan Vincent <brennanv@email.arizona.edu>
17 : *
18 : * All Rights Reserved.
19 : *
20 : * For minor contributions see the git repository.
21 : *
22 : * Alternatively, the contents of this file may be used under the terms of
23 : * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
24 : * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
25 : * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
26 : * instead of those above.
27 : */
28 :
29 : #ifndef __MSPUBPARSER97_H__
30 : #define __MSPUBPARSER97_H__
31 :
32 : #include "MSPUBParser2k.h"
33 :
34 : namespace libmspub
35 : {
36 0 : class MSPUBParser97 : public MSPUBParser2k
37 : {
38 0 : struct TextInfo97
39 : {
40 : std::vector<unsigned char> m_chars;
41 : std::vector<unsigned> m_paragraphEnds;
42 : std::vector<unsigned> m_shapeEnds;
43 0 : TextInfo97(const std::vector<unsigned char> &chars,
44 : const std::vector<unsigned> ¶graphEnds,
45 : const std::vector<unsigned> &shapeEnds)
46 : : m_chars(chars), m_paragraphEnds(paragraphEnds),
47 0 : m_shapeEnds(shapeEnds)
48 : {
49 0 : }
50 : };
51 :
52 0 : struct SpanInfo97
53 : {
54 : unsigned m_spanEnd;
55 : CharacterStyle m_style;
56 0 : SpanInfo97(unsigned spanEnd, const CharacterStyle &style)
57 0 : : m_spanEnd(spanEnd), m_style(style)
58 : {
59 0 : }
60 : };
61 :
62 : bool m_isBanner;
63 :
64 : bool parseDocument(WPXInputStream *input);
65 : int translateCoordinateIfNecessary(int coordinate) const;
66 : unsigned getFirstLineOffset() const;
67 : unsigned getSecondLineOffset() const;
68 : unsigned getShapeFillTypeOffset() const;
69 : unsigned getShapeFillColorOffset() const;
70 : unsigned short getTextMarker() const;
71 : unsigned getTextIdOffset() const;
72 : CharacterStyle readCharacterStyle(WPXInputStream *input,
73 : unsigned length);
74 : void parseContentsTextIfNecessary(WPXInputStream *input);
75 : std::vector<SpanInfo97> getSpansInfo(WPXInputStream *input,
76 : unsigned prop1Index, unsigned prop2Index, unsigned prop3Index,
77 : unsigned prop3End);
78 : TextInfo97 getTextInfo(WPXInputStream *input, unsigned length);
79 : public:
80 : MSPUBParser97(WPXInputStream *input, MSPUBCollector *collector);
81 : bool parse();
82 : };
83 : }
84 :
85 : #endif // __MSPUBPARSER97_H__
86 :
87 : /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
|