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
46 namespace PowerPoint7ParserInternal
47{
48 struct State;
49}
50
51 namespace PowerPoint7Struct
52{
53 struct SlideId;
54}
55
56 class PowerPoint7Graph;
57 class PowerPoint7Text;
58
61 class PowerPoint7Parser final : public MWAWPresentationParser
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
77protected:
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
217 bool parseTextContent(MWAWInputStreamPtr input);
219 void checkForUnparsedZones();
220protected:
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:
MWAWDebug.hxx
MWAWInputStream.hxx
MWAWParser.hxx
MWAWHeader
a function used by MWAWDocument to store the version of document
Definition MWAWHeader.hxx:57
MWAWPresentationParser::MWAWPresentationParser
MWAWPresentationParser(MWAWInputStreamPtr const &input, MWAWRSRCParserPtr const &rsrcParser, MWAWHeader *header)
constructor (protected)
Definition MWAWParser.hxx:275
PowerPoint7Graph
the main class to read the graphic part of a PowerPoint 95 file
Definition PowerPoint7Graph.hxx:74
PowerPoint7Parser::readZone3000
bool readZone3000(int level, long endPos)
try to read the zone 3000: child of Handout/Notes/Slides/Zone3001
Definition PowerPoint7Parser.cxx:1875
PowerPoint7Parser::readZone4072
bool readZone4072(int level, long endPos)
try to read the zone 4072: child of Zone3008
Definition PowerPoint7Parser.cxx:2632
PowerPoint7Parser::readBookmarkCollection
bool readBookmarkCollection(int level, long endPos)
try to read the bookmark collection zone 2019
Definition PowerPoint7Parser.cxx:1661
PowerPoint7Parser::readZoneNoData
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
PowerPoint7Parser::readSlides
bool readSlides(int level, long endPos, bool master)
try to read the slides zone 1006(slides) or 1016(master)
Definition PowerPoint7Parser.cxx:593
PowerPoint7Parser::readZone4039
bool readZone4039(int level, long endPos)
try to read the zone 4039: child of Zone4072
Definition PowerPoint7Parser.cxx:2328
PowerPoint7Parser::readVbaInfoAtom
bool readVbaInfoAtom(int level, long endPos)
try to read the vba info zone 1024
Definition PowerPoint7Parser.cxx:1228
PowerPoint7Parser::readZone4042
bool readZone4042(int level, long endPos)
try to read the zone 4042: child of FontCollection
PowerPoint7Parser::readHandout
bool readHandout(int level, long endPos)
try to read the handout zone 4041
Definition PowerPoint7Parser.cxx:2363
PowerPoint7Parser::readSlideViewInfoAtom
bool readSlideViewInfoAtom(int level, long endPos)
try to read the slide view info zone 1022
Definition PowerPoint7Parser.cxx:1148
PowerPoint7Parser::~PowerPoint7Parser
~PowerPoint7Parser() final
destructor
Definition PowerPoint7Parser.cxx:185
PowerPoint7Parser::readColorScheme
bool readColorScheme(int level, long endPos, std::vector< MWAWColor > &colors)
try to read the color scheme 1012
Definition PowerPoint7Parser.cxx:908
PowerPoint7Parser::readSlideInformation
bool readSlideInformation(int level, long endPos)
try to read the slide information 1005: dimension, has background, ...
Definition PowerPoint7Parser.cxx:524
PowerPoint7Parser::readSlideAtom
bool readSlideAtom(int level, long endPos, PowerPoint7Struct::SlideId &sId, PowerPoint7Struct::SlideId &mId)
try to read the slide zone 1007
Definition PowerPoint7Parser.cxx:692
PowerPoint7Parser::readKinsoku
bool readKinsoku(int level, long endPos)
try to read the Kinsoku zone 4040
Definition PowerPoint7Parser.cxx:2278
PowerPoint7Parser::m_state
std::shared_ptr< PowerPoint7ParserInternal::State > m_state
the state
Definition PowerPoint7Parser.hxx:225
PowerPoint7Parser::readSlideIdentifierContainer
bool readSlideIdentifierContainer(int level, long endPos, PowerPoint7Struct::SlideId &sId)
try to read a container of a slide identifier 4054
Definition PowerPoint7Parser.cxx:2500
PowerPoint7Parser::readTextCharsAtom
bool readTextCharsAtom(int level, long endPos)
try to read the text chars atom zone 4000
Definition PowerPoint7Parser.cxx:2020
PowerPoint7Parser::readSlideViewInfo
bool readSlideViewInfo(int level, long endPos)
try to read the slide view info zone 1018
Definition PowerPoint7Parser.cxx:1025
PowerPoint7Parser::readViewInfoAtom
bool readViewInfoAtom(int level, long endPos)
try to read the view info zone 1021
Definition PowerPoint7Parser.cxx:1106
PowerPoint7Parser::readEnvironment
bool readEnvironment(int level, long endPos)
try to read the environment zone 1010
Definition PowerPoint7Parser.cxx:838
PowerPoint7Parser::readZone1028
bool readZone1028(int level, long endPos)
try to read the zone 1028: child of Environment
Definition PowerPoint7Parser.cxx:1338
PowerPoint7Parser::parse
void parse(librevenge::RVNGPresentationInterface *documentInterface) final
virtual function used to parse the input
Definition PowerPoint7Parser.cxx:208
PowerPoint7Parser::readIdentifier
bool readIdentifier(int level, long endPos, int &id, std::string const &wh)
try to read an identifier zone 2017
Definition PowerPoint7Parser.cxx:1633
PowerPoint7Parser::readNotes
bool readNotes(int level, long endPos)
try to read the notes zone 1008
Definition PowerPoint7Parser.cxx:731
PowerPoint7Parser::readZone1028Atom
bool readZone1028Atom(int level, long endPos)
try to read the zone 1029
Definition PowerPoint7Parser.cxx:1385
PowerPoint7Parser::readSoundCollection
bool readSoundCollection(int level, long endPos)
try to read the sound collection zone 2020
Definition PowerPoint7Parser.cxx:1713
PowerPoint7Parser::PowerPoint7Parser
PowerPoint7Parser(MWAWInputStreamPtr const &input, MWAWRSRCParserPtr const &rsrcParser, MWAWHeader *header)
constructor
Definition PowerPoint7Parser.cxx:176
PowerPoint7Parser::readSlideShowInfo
bool readSlideShowInfo(int level, long endPos)
try to read the slide show info zone 1017
Definition PowerPoint7Parser.cxx:992
PowerPoint7Parser::readSSDocInfoAtom
bool readSSDocInfoAtom(int level, long endPos)
try to read the slide show doc info atom 1025: child of Document
Definition PowerPoint7Parser.cxx:1261
PowerPoint7Parser::readGuideAtom
bool readGuideAtom(int level, long endPos)
try to read the guide atom zone 1019
Definition PowerPoint7Parser.cxx:1075
PowerPoint7Parser::readStyleTextPropAtom
bool readStyleTextPropAtom(int level, long endPos, int &textId)
try to read the style text prop atom zone 4001
Definition PowerPoint7Parser.cxx:2070
PowerPoint7Parser::readOutlineViewInfo
bool readOutlineViewInfo(int level, long endPos)
try to read the outline view info zone 1031
Definition PowerPoint7Parser.cxx:1419
PowerPoint7Parser::parseTextContent
bool parseTextContent(MWAWInputStreamPtr input)
try to read the "Text_Content" stream
Definition PowerPoint7Parser.cxx:2769
PowerPoint7Parser::readBookmarkSeedAtom
bool readBookmarkSeedAtom(int level, long endPos)
try to read the bookmark seed atom zone 2025
Definition PowerPoint7Parser.cxx:1754
PowerPoint7Parser::checkHeader
bool checkHeader(MWAWHeader *header, bool strict=false) final
checks if the document header is correct (or not)
Definition PowerPoint7Parser.cxx:2844
PowerPoint7Parser::readString
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
PowerPoint7Parser::readOutlineTextProps9Atom
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
PowerPoint7Parser::readMainSub10
bool readMainSub10(long endPos)
try to read the main sub zone: the zone 10: child of Root
Definition PowerPoint7Parser.cxx:368
PowerPoint7Parser::readDocument
bool readDocument(long endPos)
try to read the document's zone 1000: child of Root
Definition PowerPoint7Parser.cxx:402
PowerPoint7Parser::checkForUnparsedZones
void checkForUnparsedZones()
check for unparsed zone
Definition PowerPoint7Parser.cxx:2761
PowerPoint7Parser::readColorList
bool readColorList(int level, long endPos, std::vector< MWAWColor > &colors)
try to read the color list zone 2031
Definition PowerPoint7Parser.cxx:1829
PowerPoint7Parser::sendText
bool sendText(int textId)
try to send the text content
Definition PowerPoint7Parser.cxx:189
PowerPoint7Parser::readDocAtom
bool readDocAtom(int level, long endPos)
try to read the document atom's zone 1001: child of Document
Definition PowerPoint7Parser.cxx:467
PowerPoint7Parser::readZone3012
bool readZone3012(int level, long endPos)
try to read the zone 3012: child of Environment
Definition PowerPoint7Parser.cxx:1934
PowerPoint7Parser::readNoteAtom
bool readNoteAtom(int level, long endPos, PowerPoint7Struct::SlideId &sId)
try to read the note atom zone 1009
Definition PowerPoint7Parser.cxx:807
PowerPoint7Parser::createDocument
void createDocument(librevenge::RVNGPresentationInterface *documentInterface)
creates the listener which will be associated to the document
Definition PowerPoint7Parser.cxx:238
PowerPoint7Parser::readDocRoot
bool readDocRoot()
try to read the main zone: the zone 3
Definition PowerPoint7Parser.cxx:320
PowerPoint7Parser::readSorterViewInfo
bool readSorterViewInfo(int level, long endPos)
try to read the sorter view info zone 1032
Definition PowerPoint7Parser.cxx:1463
PowerPoint7Parser::readHeaderFooterAtom
bool readHeaderFooterAtom(int level, long endPos)
try to read the header footer atom zone: 4058
Definition PowerPoint7Parser.cxx:2594
PowerPoint7Parser::readOutlineTextPropsHeader9Atom
bool readOutlineTextPropsHeader9Atom(int level, long endPos)
try to read the outline text props header9 atom zone 4015
Definition PowerPoint7Parser.cxx:2191
PowerPoint7Parser::readKinsokuAtom
bool readKinsokuAtom(int level, long endPos)
try to read the Kinsoku atom zone 4050
Definition PowerPoint7Parser.cxx:2432
PowerPoint7Parser::readZone1015
bool readZone1015(int level, long endPos)
try to read the zone 1015: child of Slides
Definition PowerPoint7Parser.cxx:952
PowerPoint7Parser::readZone1028Data
bool readZone1028Data(int level, long endPos)
try to read the zone 4052: child of Zone1028
Definition PowerPoint7Parser.cxx:2460
PowerPoint7Parser::readSummary
bool readSummary(int level, long endPos)
try to read the summary zone 1026: child of Document
Definition PowerPoint7Parser.cxx:1294
PowerPoint7Parser::readHeaderFooters
bool readHeaderFooters(int level, long endPos)
try to read the header footer zone: 4057
Definition PowerPoint7Parser.cxx:2544
PowerPoint7Parser::getColor
bool getColor(int cId, MWAWColor &col) const
returns the color corresponding to an id
Definition PowerPoint7Parser.cxx:194
PowerPoint7Parser::readContainerAtom
bool readContainerAtom(int level, long endPos, int &N)
try to read the container atom zone 2001
Definition PowerPoint7Parser.cxx:1603
PowerPoint7Parser::readZone2026
bool readZone2026(int level, long endPos)
try to read the zone 2026: child of SlideViewInfo
Definition PowerPoint7Parser.cxx:1785
PowerPoint7Parser::createZones
bool createZones()
finds the different zones
Definition PowerPoint7Parser.cxx:278
PowerPoint7Parser::sendSlides
void sendSlides()
try to send all slides
Definition PowerPoint7Parser.cxx:2806
PowerPoint7Parser::readContainerList
bool readContainerList(int level, long endPos)
try to read the container list zone 2000: child of Document
Definition PowerPoint7Parser.cxx:1507
PowerPoint7Parser::readZone3012Atom
bool readZone3012Atom(int level, long endPos)
try to read the zone 3013: child of Zone3012
Definition PowerPoint7Parser.cxx:1990
PowerPoint7Parser::readZone
bool readZone(int level, long endPos)
try to read a zone
Definition PowerPoint7Parser.cxx:2710
PowerPoint7Parser::readVbaInfo
bool readVbaInfo(int level, long endPos)
try to read the vba info zone 1023
Definition PowerPoint7Parser.cxx:1178
PowerPoint7Parser::readSlideIdentifier
bool readSlideIdentifier(int level, long endPos, PowerPoint7Struct::SlideId &sId)
try to read a slide identifier zone 4032
Definition PowerPoint7Parser.cxx:2247
PowerPoint7Parser::PowerPoint7Graph
friend class PowerPoint7Graph
Definition PowerPoint7Parser.hxx:63
PowerPoint7Parser::PowerPoint7Text
friend class PowerPoint7Text
Definition PowerPoint7Parser.hxx:64
PowerPoint7Text
the main class to read the text part of a PowerPoint 95 file
Definition PowerPoint7Text.hxx:68
MWAWRSRCParserPtr
std::shared_ptr< MWAWRSRCParser > MWAWRSRCParserPtr
a smart pointer of MWAWRSRCParser
Definition libmwaw_internal.hxx:561
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition libmwaw_internal.hxx:551
PowerPoint7ParserInternal
Internal: the structures of a PowerPoint7Parser.
Definition PowerPoint7Parser.cxx:61
PowerPoint7Struct
namespace used to define basic struct of a Microsoft PowerPoint 95 files (Windows)
Definition PowerPoint7Graph.hxx:62
librevenge
Definition MWAWDocument.hxx:57
MWAWColor
the class to store a color
Definition libmwaw_internal.hxx:192
PowerPoint7ParserInternal::State
Internal: the state of a PowerPoint7Parser.
Definition PowerPoint7Parser.cxx:80
PowerPoint7Struct::SlideId
a slide id
Definition PowerPoint7Struct.hxx:50