MSPUBParser2k.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libmspub project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef INCLUDED_MSPUBPARSER2K_H
11 #define INCLUDED_MSPUBPARSER2K_H
12 
13 #include <deque>
14 #include <vector>
15 #include <map>
16 
17 #include "MSPUBParser.h"
18 #include "ShapeType.h"
19 
20 namespace libmspub
21 {
22 
23 class MSPUBParser2k : public MSPUBParser
24 {
25  static ShapeType getShapeType(unsigned char shapeSpecifier);
26  std::vector<unsigned> m_imageDataChunkIndices;
27  std::vector<unsigned> m_quillColorEntries;
28  std::map<unsigned, std::vector<unsigned> > m_chunkChildIndicesById;
29  std::deque<unsigned> m_chunksBeingRead;
30 
31 protected:
32  // helper functions
33  bool parse2kShapeChunk(const ContentChunkReference &chunk, librevenge::RVNGInputStream *input,
34  boost::optional<unsigned> pageSeqNum = boost::optional<unsigned>(),
35  bool topLevelCall = true);
36  void parseShapeLine(librevenge::RVNGInputStream *input, bool isRectangle, unsigned offset, unsigned seqNum);
37  void parseShapeType(librevenge::RVNGInputStream *input,
38  unsigned seqNum, unsigned chunkOffset,
39  bool &isGroup, bool &isLine, bool &isImage, bool &isRectangle,
40  unsigned &flagsOffset);
41  void parseShapeRotation(librevenge::RVNGInputStream *input, bool isGroup, bool isLine, unsigned seqNum,
42  unsigned chunkOffset);
43  void parseShapeFlips(librevenge::RVNGInputStream *input, unsigned flagsOffset, unsigned seqNum,
44  unsigned chunkOffset);
45  void parseShapeCoordinates(librevenge::RVNGInputStream *input, unsigned seqNum, unsigned chunkOffset);
46  bool parseGroup(librevenge::RVNGInputStream *input, unsigned seqNum, unsigned page);
47  void assignShapeImgIndex(unsigned seqNum);
48  void parseShapeFill(librevenge::RVNGInputStream *input, unsigned seqNum, unsigned chunkOffset);
49  bool parseContents(librevenge::RVNGInputStream *input) override;
50  virtual bool parseDocument(librevenge::RVNGInputStream *input);
51  unsigned getColorIndexByQuillEntry(unsigned entry) override;
52  virtual int translateCoordinateIfNecessary(int coordinate) const;
53  virtual unsigned getFirstLineOffset() const;
54  virtual unsigned getSecondLineOffset() const;
55  virtual unsigned getShapeFillTypeOffset() const;
56  virtual unsigned getShapeFillColorOffset() const;
57  virtual unsigned short getTextMarker() const;
58  virtual unsigned getTextIdOffset() const;
59  static Color getColorBy2kIndex(unsigned char index);
60  static Color getColorBy2kHex(unsigned hex);
61  static unsigned translate2kColorReference(unsigned ref2k);
62  static PageType getPageTypeBySeqNum(unsigned seqNum);
63  virtual void parseContentsTextIfNecessary(librevenge::RVNGInputStream *input);
64 public:
65  explicit MSPUBParser2k(librevenge::RVNGInputStream *input, MSPUBCollector *collector);
66  bool parse() override;
67  ~MSPUBParser2k() override;
68 };
69 
70 } // namespace libmspub
71 
72 #endif // INCLUDED_MSPUBPARSER2K_H
73 
74 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition: MSPUBCollector.h:45
Definition: MSPUBParser2k.h:24
std::vector< unsigned > m_imageDataChunkIndices
Definition: MSPUBParser2k.h:26
static Color getColorBy2kHex(unsigned hex)
Definition: MSPUBParser2k.cpp:94
virtual unsigned getSecondLineOffset() const
Definition: MSPUBParser2k.cpp:730
std::vector< unsigned > m_quillColorEntries
Definition: MSPUBParser2k.h:27
~MSPUBParser2k() override
Definition: MSPUBParser2k.cpp:73
void parseShapeFill(librevenge::RVNGInputStream *input, unsigned seqNum, unsigned chunkOffset)
Definition: MSPUBParser2k.cpp:582
static ShapeType getShapeType(unsigned char shapeSpecifier)
Definition: MSPUBParser2k.cpp:247
std::deque< unsigned > m_chunksBeingRead
Definition: MSPUBParser2k.h:29
bool parse() override
Definition: MSPUBParser2k.cpp:773
virtual unsigned short getTextMarker() const
Definition: MSPUBParser2k.cpp:720
void parseShapeFlips(librevenge::RVNGInputStream *input, unsigned flagsOffset, unsigned seqNum, unsigned chunkOffset)
Definition: MSPUBParser2k.cpp:650
virtual bool parseDocument(librevenge::RVNGInputStream *input)
Definition: MSPUBParser2k.cpp:475
virtual unsigned getShapeFillTypeOffset() const
Definition: MSPUBParser2k.cpp:572
void parseShapeCoordinates(librevenge::RVNGInputStream *input, unsigned seqNum, unsigned chunkOffset)
Definition: MSPUBParser2k.cpp:634
std::map< unsigned, std::vector< unsigned > > m_chunkChildIndicesById
Definition: MSPUBParser2k.h:28
bool parse2kShapeChunk(const ContentChunkReference &chunk, librevenge::RVNGInputStream *input, boost::optional< unsigned > pageSeqNum=boost::optional< unsigned >(), bool topLevelCall=true)
Definition: MSPUBParser2k.cpp:506
virtual unsigned getTextIdOffset() const
Definition: MSPUBParser2k.cpp:715
unsigned getColorIndexByQuillEntry(unsigned entry) override
Definition: MSPUBParser2k.cpp:60
static Color getColorBy2kIndex(unsigned char index)
Definition: MSPUBParser2k.cpp:109
virtual void parseContentsTextIfNecessary(librevenge::RVNGInputStream *input)
Definition: MSPUBParser2k.cpp:343
virtual unsigned getFirstLineOffset() const
Definition: MSPUBParser2k.cpp:725
static unsigned translate2kColorReference(unsigned ref2k)
Definition: MSPUBParser2k.cpp:231
virtual unsigned getShapeFillColorOffset() const
Definition: MSPUBParser2k.cpp:577
void assignShapeImgIndex(unsigned seqNum)
Definition: MSPUBParser2k.cpp:617
bool parseContents(librevenge::RVNGInputStream *input) override
Definition: MSPUBParser2k.cpp:347
MSPUBParser2k(librevenge::RVNGInputStream *input, MSPUBCollector *collector)
Definition: MSPUBParser2k.cpp:51
static PageType getPageTypeBySeqNum(unsigned seqNum)
Definition: MSPUBParser2k.cpp:800
void parseShapeLine(librevenge::RVNGInputStream *input, bool isRectangle, unsigned offset, unsigned seqNum)
Definition: MSPUBParser2k.cpp:735
void parseShapeType(librevenge::RVNGInputStream *input, unsigned seqNum, unsigned chunkOffset, bool &isGroup, bool &isLine, bool &isImage, bool &isRectangle, unsigned &flagsOffset)
Definition: MSPUBParser2k.cpp:663
bool parseGroup(librevenge::RVNGInputStream *input, unsigned seqNum, unsigned page)
Definition: MSPUBParser2k.cpp:595
void parseShapeRotation(librevenge::RVNGInputStream *input, bool isGroup, bool isLine, unsigned seqNum, unsigned chunkOffset)
Definition: MSPUBParser2k.cpp:490
virtual int translateCoordinateIfNecessary(int coordinate) const
Definition: MSPUBParser2k.cpp:645
Definition: MSPUBParser.h:66
Definition: Arrow.h:14
ShapeType
Definition: ShapeType.h:16
PageType
Definition: MSPUBTypes.h:207
Definition: MSPUBTypes.h:200
Definition: MSPUBTypes.h:91

Generated for libmspub by doxygen 1.9.1