WPSOLEParser.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* libwps
3  * Version: MPL 2.0 / LGPLv2.1+
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  * Major Contributor(s):
10  * Copyright (C) 2009, 2011 Alonso Laurent (alonso@loria.fr)
11  * Copyright (C) 2006, 2007 Andrew Ziem
12  * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
13  * Copyright (C) 2004 Marc Maurer (uwog@uwog.net)
14  * Copyright (C) 2003-2005 William Lachance (william.lachance@sympatico.ca)
15  *
16  * For minor contributions see the git repository.
17  *
18  * Alternatively, the contents of this file may be used under the terms
19  * of the GNU Lesser General Public License Version 2.1 or later
20  * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
21  * applicable instead of those above.
22  *
23  * For further information visit http://libwps.sourceforge.net
24  */
25 
26 /*
27  * freely inspired from istorage :
28  * ------------------------------------------------------------
29  * Generic OLE Zones furnished with a copy of the file header
30  *
31  * Compound Storage (32 bit version)
32  * Storage implementation
33  *
34  * This file contains the compound file implementation
35  * of the storage interface.
36  *
37  * Copyright 1999 Francis Beaudet
38  * Copyright 1999 Sylvain St-Germain
39  * Copyright 1999 Thuy Nguyen
40  * Copyright 2005 Mike McCormack
41  *
42  * This library is free software; you can redistribute it and/or
43  * modify it under the terms of the GNU Lesser General Public
44  * License as published by the Free Software Foundation; either
45  * version 2.1 of the License, or (at your option) any later version.
46  *
47  * This library is distributed in the hope that it will be useful,
48  * but WITHOUT ANY WARRANTY; without even the implied warranty of
49  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
50  * Lesser General Public License for more details.
51  *
52  * ------------------------------------------------------------
53  */
54 
55 #ifndef WPS_OLE_PARSER_H
56 #define WPS_OLE_PARSER_H
57 
58 #include <string>
59 #include <vector>
60 
61 #include <librevenge-stream/librevenge-stream.h>
62 
63 #include "libwps_internal.h"
64 
65 #include "WPSDebug.h"
66 #include "WPSPosition.h"
67 
68 namespace libwps
69 {
70 class Storage;
71 }
72 
73 namespace WPSOLEParserInternal
74 {
75 class CompObj;
76 }
77 
80 {
82  WPSOLEParserObject() : m_position(), m_data(), m_mime("image/pict")
83  {
84  }
88  librevenge::RVNGBinaryData m_data;
90  std::string m_mime;
91 };
92 
97 {
98 public:
101  explicit WPSOLEParser(const std::string &mainName);
102 
104  ~WPSOLEParser();
105 
108  bool parse(RVNGInputStreamPtr fileInput);
109 
111  std::vector<std::string> const &getNotParse() const
112  {
113  return m_unknownOLEs;
114  }
115 
117  std::vector<int> const &getObjectsId() const
118  {
119  return m_objectsId;
120  }
122  std::vector<WPSOLEParserObject> const &getObjects() const
123  {
124  return m_objects;
125  }
126 protected:
127 
129  static bool readOle(RVNGInputStreamPtr &ip, std::string const &oleName,
130  libwps::DebugFile &ascii);
132  static bool readMM(RVNGInputStreamPtr &input, std::string const &oleName,
133  libwps::DebugFile &ascii);
135  static bool readObjInfo(RVNGInputStreamPtr &input, std::string const &oleName,
136  libwps::DebugFile &ascii);
138  bool readCompObj(RVNGInputStreamPtr &ip, std::string const &oleName,
139  libwps::DebugFile &ascii);
140 
142  static bool isOlePres(RVNGInputStreamPtr &ip, std::string const &oleName);
144  static bool readOlePres(RVNGInputStreamPtr &ip, librevenge::RVNGBinaryData &data,
145  WPSPosition &pos, libwps::DebugFile &ascii);
146 
148  static bool isOle10Native(RVNGInputStreamPtr &ip, std::string const &oleName);
150  static bool readOle10Native(RVNGInputStreamPtr &ip, librevenge::RVNGBinaryData &data,
151  libwps::DebugFile &ascii);
152 
156  static bool readContents(RVNGInputStreamPtr &input, std::string const &oleName,
157  librevenge::RVNGBinaryData &pict, WPSPosition &pos, libwps::DebugFile &ascii);
158 
164  static bool readCONTENTS(RVNGInputStreamPtr &input, std::string const &oleName,
165  librevenge::RVNGBinaryData &pict, WPSPosition &pos, libwps::DebugFile &ascii);
166 
168  static bool readMN0AndCheckWKS(RVNGInputStreamPtr &input, std::string const &oleName,
169  librevenge::RVNGBinaryData &wksData, libwps::DebugFile &ascii);
170 
172  std::string m_avoidOLE;
174  std::vector<std::string> m_unknownOLEs;
175 
177  std::vector<WPSOLEParserObject> m_objects;
179  std::vector<int> m_objectsId;
180 
182  shared_ptr<WPSOLEParserInternal::CompObj> m_compObjIdName;
183 
184 };
185 
186 #endif
187 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
Definition: libwps_internal.cpp:38
std::vector< WPSOLEParserObject > const & getObjects() const
returns the list of data positions which have been read
Definition: WPSOLEParser.h:122
WPSPosition m_position
the position
Definition: WPSOLEParser.h:86
WPSOLEParserObject()
constructor
Definition: WPSOLEParser.h:82
std::vector< std::string > const & getNotParse() const
returns the list of unknown ole
Definition: WPSOLEParser.h:111
Definition: WPSDebug.h:196
Definition: WPSOLEParser.cpp:85
std::string m_mime
the mime type
Definition: WPSOLEParser.h:90
a class used to parse some basic oles Tries to read the different ole parts and stores their contents...
Definition: WPSOLEParser.h:96
small struct to store an object
Definition: WPSOLEParser.h:79
std::vector< int > m_objectsId
list of pictures id
Definition: WPSOLEParser.h:179
std::vector< WPSOLEParserObject > m_objects
list of pictures read
Definition: WPSOLEParser.h:177
shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr
shared pointer to librevenge::RVNGInputStream
Definition: libwps_internal.h:102
librevenge::RVNGBinaryData m_data
the data
Definition: WPSOLEParser.h:88
shared_ptr< WPSOLEParserInternal::CompObj > m_compObjIdName
a smart ptr used to stored the list of compobj id->name
Definition: WPSOLEParser.h:182
std::string m_avoidOLE
if filled, does not parse content with this name
Definition: WPSOLEParser.h:172
std::vector< int > const & getObjectsId() const
returns the list of id for which we have find a representation
Definition: WPSOLEParser.h:117
std::vector< std::string > m_unknownOLEs
list of ole which can not be parsed
Definition: WPSOLEParser.h:174
Class to define the position of an object (textbox, picture, ..) in the document. ...
Definition: WPSPosition.h:39

Generated on Tue Oct 31 2017 04:26:19 for libwps by doxygen 1.8.13