PowerPoint7Parser.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2 
3 /* libmwaw
4 * Version: MPL 2.0 / LGPLv2+
5 *
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 2.0 (the "License"); you may not use this file except in compliance with
8 * the License or as specified alternatively below. You may obtain a copy of
9 * the License at http://www.mozilla.org/MPL/
10 *
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
14 * License.
15 *
16 * Major Contributor(s):
17 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
18 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
19 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
20 * Copyright (C) 2006, 2007 Andrew Ziem
21 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
22 *
23 *
24 * All Rights Reserved.
25 *
26 * For minor contributions see the git repository.
27 *
28 * Alternatively, the contents of this file may be used under the terms of
29 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
30 * in which case the provisions of the LGPLv2+ are applicable
31 * instead of those above.
32 */
33 
34 #ifndef POWER_POINT7_PARSER
35 # define POWER_POINT7_PARSER
36 
37 #include <map>
38 #include <set>
39 #include <vector>
40 
41 #include "MWAWDebug.hxx"
42 #include "MWAWInputStream.hxx"
43 
44 #include "MWAWParser.hxx"
45 
47 {
48 struct State;
49 }
50 
51 namespace PowerPoint7Struct
52 {
53 struct SlideId;
54 }
55 
56 class PowerPoint7Graph;
57 class PowerPoint7Text;
58 
62 {
63  friend class PowerPoint7Graph;
64  friend class PowerPoint7Text;
65 public:
67  PowerPoint7Parser(MWAWInputStreamPtr const &input, MWAWRSRCParserPtr const &rsrcParser, MWAWHeader *header);
69  ~PowerPoint7Parser() final;
70 
72  bool checkHeader(MWAWHeader *header, bool strict=false) final;
73 
74  // the main parse function
75  void parse(librevenge::RVNGPresentationInterface *documentInterface) final;
76 
77 protected:
79  void createDocument(librevenge::RVNGPresentationInterface *documentInterface);
80 
82  bool createZones();
84  void sendSlides();
85 
86  //
87  // send data
88  //
89 
90  // interface with the text parser
91 
93  bool getColor(int cId, MWAWColor &col) const;
95  bool sendText(int textId);
96 
97  //
98  // low level
99  //
100 
102  bool readDocRoot();
104  bool readMainSub10(long endPos);
106  bool readDocument(long endPos);
108  bool readDocAtom(int level, long endPos);
110  bool readSlideInformation(int level, long endPos);
112  bool readSlides(int level, long endPos, bool master);
114  bool readSlideAtom(int level, long endPos,
115  PowerPoint7Struct::SlideId &sId, PowerPoint7Struct::SlideId &mId);
117  bool readNotes(int level, long endPos);
119  bool readNoteAtom(int level, long endPos, PowerPoint7Struct::SlideId &sId);
121  bool readEnvironment(int level, long endPos);
123  bool readColorScheme(int level, long endPos, std::vector<MWAWColor> &colors);
125  bool readZone1015(int level, long endPos);
127  bool readSlideShowInfo(int level, long endPos);
129  bool readSlideViewInfo(int level, long endPos);
131  bool readGuideAtom(int level, long endPos);
133  bool readViewInfoAtom(int level, long endPos);
135  bool readSlideViewInfoAtom(int level, long endPos);
137  bool readVbaInfo(int level, long endPos);
139  bool readVbaInfoAtom(int level, long endPos);
141  bool readSSDocInfoAtom(int level, long endPos);
143  bool readSummary(int level, long endPos);
145  bool readZone1028(int level, long endPos);
147  bool readZone1028Atom(int level, long endPos);
149  bool readOutlineViewInfo(int level, long endPos);
151  bool readSorterViewInfo(int level, long endPos);
152 
154  bool readContainerList(int level, long endPos);
156  bool readContainerAtom(int level, long endPos, int &N);
158  bool readIdentifier(int level, long endPos, int &id, std::string const &wh);
160  bool readBookmarkCollection(int level, long endPos);
162  bool readSoundCollection(int level, long endPos);
164  bool readBookmarkSeedAtom(int level, long endPos);
166  bool readZone2026(int level, long endPos);
168  bool readColorList(int level, long endPos, std::vector<MWAWColor> &colors);
169 
171  bool readZone3000(int level, long endPos);
173  bool readZone3012(int level, long endPos);
175  bool readZone3012Atom(int level, long endPos);
176 
178  bool readTextCharsAtom(int level, long endPos);
180  bool readStyleTextPropAtom(int level, long endPos, int &textId);
182  bool readOutlineTextProps9Atom(int level, long endPos,
183  int &pId, PowerPoint7Struct::SlideId &sId);
185  bool readOutlineTextPropsHeader9Atom(int level, long endPos);
187  bool readString(int level, long endPos, std::string &string, int &zId, std::string const &what="");
189  bool readSlideIdentifier(int level, long endPos, PowerPoint7Struct::SlideId &sId);
191  bool readZone4039(int level, long endPos);
193  bool readKinsoku(int level, long endPos);
195  bool readHandout(int level, long endPos);
197  bool readZone4042(int level, long endPos);
199  bool readKinsokuAtom(int level, long endPos);
201  bool readZone1028Data(int level, long endPos);
203  bool readSlideIdentifierContainer(int level, long endPos, PowerPoint7Struct::SlideId &sId);
205  bool readHeaderFooters(int level, long endPos);
207  bool readHeaderFooterAtom(int level, long endPos);
209  bool readZone4072(int level, long endPos);
210 
212  bool readZone(int level, long endPos);
214  bool readZoneNoData(int level, long endPos, std::string const &name, std::string const &wh="");
215 
219  void checkForUnparsedZones();
220 protected:
221  //
222  // data
223  //
225  std::shared_ptr<PowerPoint7ParserInternal::State> m_state;
226 };
227 #endif
228 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
bool readColorScheme(int level, long endPos, std::vector< MWAWColor > &colors)
try to read the color scheme 1012
Definition: PowerPoint7Parser.cxx:908
a function used by MWAWDocument to store the version of document
Definition: MWAWHeader.hxx:56
bool readSorterViewInfo(int level, long endPos)
try to read the sorter view info zone 1032
Definition: PowerPoint7Parser.cxx:1463
bool readSSDocInfoAtom(int level, long endPos)
try to read the slide show doc info atom 1025: child of Document
Definition: PowerPoint7Parser.cxx:1261
bool readContainerList(int level, long endPos)
try to read the container list zone 2000: child of Document
Definition: PowerPoint7Parser.cxx:1507
bool readHandout(int level, long endPos)
try to read the handout zone 4041
Definition: PowerPoint7Parser.cxx:2363
bool readMainSub10(long endPos)
try to read the main sub zone: the zone 10: child of Root
Definition: PowerPoint7Parser.cxx:368
PowerPoint7Parser(MWAWInputStreamPtr const &input, MWAWRSRCParserPtr const &rsrcParser, MWAWHeader *header)
constructor
Definition: PowerPoint7Parser.cxx:176
bool readSoundCollection(int level, long endPos)
try to read the sound collection zone 2020
Definition: PowerPoint7Parser.cxx:1713
Definition: MWAWDocument.hxx:56
bool readZone4072(int level, long endPos)
try to read the zone 4072: child of Zone3008
Definition: PowerPoint7Parser.cxx:2632
bool readHeaderFooterAtom(int level, long endPos)
try to read the header footer atom zone: 4058
Definition: PowerPoint7Parser.cxx:2594
bool readOutlineViewInfo(int level, long endPos)
try to read the outline view info zone 1031
Definition: PowerPoint7Parser.cxx:1419
bool readSlideIdentifier(int level, long endPos, PowerPoint7Struct::SlideId &sId)
try to read a slide identifier zone 4032
Definition: PowerPoint7Parser.cxx:2247
bool readBookmarkCollection(int level, long endPos)
try to read the bookmark collection zone 2019
Definition: PowerPoint7Parser.cxx:1661
bool readNotes(int level, long endPos)
try to read the notes zone 1008
Definition: PowerPoint7Parser.cxx:731
bool readDocAtom(int level, long endPos)
try to read the document atom&#39;s zone 1001: child of Document
Definition: PowerPoint7Parser.cxx:467
std::shared_ptr< PowerPoint7ParserInternal::State > m_state
the state
Definition: PowerPoint7Parser.hxx:225
bool readVbaInfoAtom(int level, long endPos)
try to read the vba info zone 1024
Definition: PowerPoint7Parser.cxx:1228
bool readOutlineTextProps9Atom(int level, long endPos, int &pId, PowerPoint7Struct::SlideId &sId)
try to read the outline text props9 atom zone 4009
Definition: PowerPoint7Parser.cxx:2127
bool checkHeader(MWAWHeader *header, bool strict=false) final
checks if the document header is correct (or not)
Definition: PowerPoint7Parser.cxx:2844
void createDocument(librevenge::RVNGPresentationInterface *documentInterface)
creates the listener which will be associated to the document
Definition: PowerPoint7Parser.cxx:238
the class to store a color
Definition: libmwaw_internal.hxx:192
bool readDocument(long endPos)
try to read the document&#39;s zone 1000: child of Root
Definition: PowerPoint7Parser.cxx:402
bool readSlideViewInfoAtom(int level, long endPos)
try to read the slide view info zone 1022
Definition: PowerPoint7Parser.cxx:1148
bool readSlideInformation(int level, long endPos)
try to read the slide information 1005: dimension, has background, ...
Definition: PowerPoint7Parser.cxx:524
std::shared_ptr< MWAWRSRCParser > MWAWRSRCParserPtr
a smart pointer of MWAWRSRCParser
Definition: libmwaw_internal.hxx:561
bool readGuideAtom(int level, long endPos)
try to read the guide atom zone 1019
Definition: PowerPoint7Parser.cxx:1075
bool readZone1015(int level, long endPos)
try to read the zone 1015: child of Slides
Definition: PowerPoint7Parser.cxx:952
bool readDocRoot()
try to read the main zone: the zone 3
Definition: PowerPoint7Parser.cxx:320
bool getColor(int cId, MWAWColor &col) const
returns the color corresponding to an id
Definition: PowerPoint7Parser.cxx:194
bool readZone1028(int level, long endPos)
try to read the zone 1028: child of Environment
Definition: PowerPoint7Parser.cxx:1338
bool readColorList(int level, long endPos, std::vector< MWAWColor > &colors)
try to read the color list zone 2031
Definition: PowerPoint7Parser.cxx:1829
bool readZone(int level, long endPos)
try to read a zone
Definition: PowerPoint7Parser.cxx:2710
bool readSlides(int level, long endPos, bool master)
try to read the slides zone 1006(slides) or 1016(master)
Definition: PowerPoint7Parser.cxx:593
Internal: the structures of a PowerPoint7Parser.
Definition: PowerPoint7Parser.cxx:60
bool readVbaInfo(int level, long endPos)
try to read the vba info zone 1023
Definition: PowerPoint7Parser.cxx:1178
bool parseTextContent(MWAWInputStreamPtr input)
try to read the "Text_Content" stream
Definition: PowerPoint7Parser.cxx:2769
virtual class which defines the ancestor of all presentation zone parser
Definition: MWAWParser.hxx:266
bool readStyleTextPropAtom(int level, long endPos, int &textId)
try to read the style text prop atom zone 4001
Definition: PowerPoint7Parser.cxx:2070
the main class to read the text part of a PowerPoint 95 file
Definition: PowerPoint7Text.hxx:67
bool readSummary(int level, long endPos)
try to read the summary zone 1026: child of Document
Definition: PowerPoint7Parser.cxx:1294
bool readZone3012(int level, long endPos)
try to read the zone 3012: child of Environment
Definition: PowerPoint7Parser.cxx:1934
bool readNoteAtom(int level, long endPos, PowerPoint7Struct::SlideId &sId)
try to read the note atom zone 1009
Definition: PowerPoint7Parser.cxx:807
bool createZones()
finds the different zones
Definition: PowerPoint7Parser.cxx:278
void parse(librevenge::RVNGPresentationInterface *documentInterface) final
virtual function used to parse the input
Definition: PowerPoint7Parser.cxx:208
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:551
bool readString(int level, long endPos, std::string &string, int &zId, std::string const &what="")
try to read the string zone 4026
Definition: PowerPoint7Parser.cxx:2222
the main class to read a Microsoft PowerPoint 95 files (Windows)
Definition: PowerPoint7Parser.hxx:61
bool readSlideViewInfo(int level, long endPos)
try to read the slide view info zone 1018
Definition: PowerPoint7Parser.cxx:1025
bool readKinsoku(int level, long endPos)
try to read the Kinsoku zone 4040
Definition: PowerPoint7Parser.cxx:2278
~PowerPoint7Parser() final
destructor
Definition: PowerPoint7Parser.cxx:185
bool readZone3012Atom(int level, long endPos)
try to read the zone 3013: child of Zone3012
Definition: PowerPoint7Parser.cxx:1990
bool readZone2026(int level, long endPos)
try to read the zone 2026: child of SlideViewInfo
Definition: PowerPoint7Parser.cxx:1785
bool readZone4042(int level, long endPos)
try to read the zone 4042: child of FontCollection
bool readEnvironment(int level, long endPos)
try to read the environment zone 1010
Definition: PowerPoint7Parser.cxx:838
bool readZoneNoData(int level, long endPos, std::string const &name, std::string const &wh="")
try to read a zone with no data
Definition: PowerPoint7Parser.cxx:2682
bool readHeaderFooters(int level, long endPos)
try to read the header footer zone: 4057
Definition: PowerPoint7Parser.cxx:2544
void checkForUnparsedZones()
check for unparsed zone
Definition: PowerPoint7Parser.cxx:2761
bool readZone4039(int level, long endPos)
try to read the zone 4039: child of Zone4072
Definition: PowerPoint7Parser.cxx:2328
bool readSlideAtom(int level, long endPos, PowerPoint7Struct::SlideId &sId, PowerPoint7Struct::SlideId &mId)
try to read the slide zone 1007
Definition: PowerPoint7Parser.cxx:692
bool readSlideShowInfo(int level, long endPos)
try to read the slide show info zone 1017
Definition: PowerPoint7Parser.cxx:992
bool readZone1028Data(int level, long endPos)
try to read the zone 4052: child of Zone1028
Definition: PowerPoint7Parser.cxx:2460
bool readSlideIdentifierContainer(int level, long endPos, PowerPoint7Struct::SlideId &sId)
try to read a container of a slide identifier 4054
Definition: PowerPoint7Parser.cxx:2500
void sendSlides()
try to send all slides
Definition: PowerPoint7Parser.cxx:2806
bool readBookmarkSeedAtom(int level, long endPos)
try to read the bookmark seed atom zone 2025
Definition: PowerPoint7Parser.cxx:1754
bool readZone3000(int level, long endPos)
try to read the zone 3000: child of Handout/Notes/Slides/Zone3001
Definition: PowerPoint7Parser.cxx:1875
bool readIdentifier(int level, long endPos, int &id, std::string const &wh)
try to read an identifier zone 2017
Definition: PowerPoint7Parser.cxx:1633
bool sendText(int textId)
try to send the text content
Definition: PowerPoint7Parser.cxx:189
the main class to read the graphic part of a PowerPoint 95 file
Definition: PowerPoint7Graph.hxx:73
bool readViewInfoAtom(int level, long endPos)
try to read the view info zone 1021
Definition: PowerPoint7Parser.cxx:1106
bool readKinsokuAtom(int level, long endPos)
try to read the Kinsoku atom zone 4050
Definition: PowerPoint7Parser.cxx:2432
bool readContainerAtom(int level, long endPos, int &N)
try to read the container atom zone 2001
Definition: PowerPoint7Parser.cxx:1603
bool readOutlineTextPropsHeader9Atom(int level, long endPos)
try to read the outline text props header9 atom zone 4015
Definition: PowerPoint7Parser.cxx:2191
bool readZone1028Atom(int level, long endPos)
try to read the zone 1029
Definition: PowerPoint7Parser.cxx:1385
namespace used to define basic struct of a Microsoft PowerPoint 95 files (Windows) ...
Definition: PowerPoint7Graph.hxx:61
bool readTextCharsAtom(int level, long endPos)
try to read the text chars atom zone 4000
Definition: PowerPoint7Parser.cxx:2020

Generated for libmwaw by doxygen 1.8.14