MSPUBParser97.h
Go to the documentation of this file.
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 {
37 {
38  struct TextInfo97
39  {
40  std::vector<unsigned char> m_chars;
41  std::vector<unsigned> m_paragraphEnds;
42  std::vector<unsigned> m_shapeEnds;
43  TextInfo97(const std::vector<unsigned char> &chars,
44  const std::vector<unsigned> &paragraphEnds,
45  const std::vector<unsigned> &shapeEnds)
46  : m_chars(chars), m_paragraphEnds(paragraphEnds),
47  m_shapeEnds(shapeEnds)
48  {
49  }
50  };
51 
52  struct SpanInfo97
53  {
54  unsigned m_spanEnd;
56  SpanInfo97(unsigned spanEnd, const CharacterStyle &style)
57  : m_spanEnd(spanEnd), m_style(style)
58  {
59  }
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: */

Generated for libmspub by doxygen 1.8.3