MWAWDocument.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
39 #ifndef MWAWDOCUMENT_HXX
40 #define MWAWDOCUMENT_HXX
41
42 #ifdef _WINDLL
43 # ifdef BUILD_MWAW
44 # define MWAWLIB _declspec(dllexport)
45 # else
46 # define MWAWLIB _declspec(dllimport)
47 # endif
48 #else // !DLL_EXPORT
49 # ifdef LIBMWAW_VISIBILITY
50 # define MWAWLIB __attribute__((visibility("default")))
51 # else
52 # define MWAWLIB
53 # endif
54 #endif
55
56 namespace librevenge
57 {
58 class RVNGBinaryData;
59 class RVNGDrawingInterface;
60 class RVNGPresentationInterface;
61 class RVNGSpreadsheetInterface;
62 class RVNGTextInterface;
63 class RVNGInputStream;
64 }
65
69 class MWAWDocument
70 {
71 public:
73 enum Confidence {
74 MWAW_C_NONE=0,
75 MWAW_C_UNSUPPORTED_ENCRYPTION ,
76 MWAW_C_SUPPORTED_ENCRYPTION ,
77 MWAW_C_EXCELLENT
78 };
80 enum Kind {
81 MWAW_K_UNKNOWN=0 ,
82 MWAW_K_TEXT ,
83 MWAW_K_DRAW ,
84 MWAW_K_PAINT ,
85 MWAW_K_PRESENTATION ,
86 MWAW_K_SPREADSHEET ,
87 MWAW_K_DATABASE
88 };
90 enum Result {
91 MWAW_R_OK=0 ,
92 MWAW_R_FILE_ACCESS_ERROR ,
93 MWAW_R_OLE_ERROR ,
94 MWAW_R_PARSE_ERROR ,
95 MWAW_R_PASSWORD_MISSMATCH_ERROR ,
96 MWAW_R_UNKNOWN_ERROR
97 };
99 enum Type {
100 MWAW_T_UNKNOWN=0 ,
101 MWAW_T_ACTA ,
102 MWAW_T_ADOBEILLUSTRATOR ,
103 MWAW_T_BEAGLEWORKS ,
104 MWAW_T_CLARISRESOLVE ,
105 MWAW_T_CLARISWORKS ,
106 MWAW_T_DBASE ,
107 MWAW_T_DOCMAKER ,
108 MWAW_T_EDOC ,
109 MWAW_T_FAMILYTREEMAKER ,
110 MWAW_T_FILEMAKER ,
111 MWAW_T_FOXBASE ,
112 MWAW_T_FRAMEMAKER ,
113 MWAW_T_FULLIMPACT ,
114 MWAW_T_FULLPAINT ,
115 MWAW_T_FULLWRITE ,
116 MWAW_T_GREATWORKS ,
117 MWAW_T_HANMACWORDJ ,
118 MWAW_T_HANMACWORDK ,
119 MWAW_T_INFOGENIE ,
120 MWAW_T_KALEIDAGRAPH ,
121 MWAW_T_LIGHTWAYTEXT ,
122 MWAW_T_MACDOC ,
123 MWAW_T_MACDRAFT ,
124 MWAW_T_MACDRAW ,
125 MWAW_T_MACDRAWPRO ,
126 MWAW_T_MACPAINT ,
127 MWAW_T_MARINERWRITE ,
128 MWAW_T_MINDWRITE ,
129 MWAW_T_MORE ,
130 MWAW_T_MICROSOFTFILE ,
131 MWAW_T_MICROSOFTMULTIPLAN ,
132 MWAW_T_MICROSOFTWORD ,
133 MWAW_T_MICROSOFTWORKS ,
134 MWAW_T_MACWRITE ,
135 MWAW_T_MACWRITEPRO ,
136 MWAW_T_NISUSWRITER ,
137 MWAW_T_OVERVUE ,
138 MWAW_T_PAGEMAKER ,
139 MWAW_T_PIXELPAINT ,
144 MWAW_T_RAGTIME,
145 MWAW_T_READYSETGO ,
150 MWAW_T_SUPERPAINT,
151 MWAW_T_SYMPOSIUM ,
152 MWAW_T_TEACHTEXT ,
153 MWAW_T_TEXEDIT ,
154 MWAW_T_TRAPEZE ,
155 MWAW_T_WINGZ ,
156 MWAW_T_WRITENOW ,
157 MWAW_T_WRITERPLUS ,
158 MWAW_T_XPRESS ,
159 MWAW_T_ZWRITE ,
160 MWAW_T_4DIMENSION ,
161
162 MWAW_T_RESERVED1 ,
163 MWAW_T_RESERVED2 ,
164 MWAW_T_RESERVED3 ,
165 MWAW_T_RESERVED4 ,
166 MWAW_T_RESERVED5 ,
167 MWAW_T_RESERVED6 ,
168 MWAW_T_RESERVED7 ,
169 MWAW_T_RESERVED8 ,
170 MWAW_T_RESERVED9 ,
171
174 MWAW_T_CLARISDRAW=MWAW_T_RESERVED1,
177 MWAW_T_APPLEPICT=MWAW_T_RESERVED2,
180 MWAW_T_STYLE=MWAW_T_RESERVED3,
183 MWAW_T_FREEHAND=MWAW_T_RESERVED4,
186 MWAW_T_CRICKETDRAW=MWAW_T_RESERVED5,
189 MWAW_T_MAXWRITE=MWAW_T_RESERVED6,
192 MWAW_T_MOUSEWRITE=MWAW_T_RESERVED7,
195 MWAW_T_POWERPOINT=MWAW_T_RESERVED8
196
197 /* FORMAT TO ADD:
198 PublishIt, tools to create SlideShow, complexity probably medium-hard
199 */
200 };
201
210 static MWAWLIB Confidence isFileFormatSupported(librevenge::RVNGInputStream *input, Type &type, Kind &kind);
211
212 // ------------------------------------------------------------
213 // the different main parsers
214 // ------------------------------------------------------------
215
224 static MWAWLIB Result parse(librevenge::RVNGInputStream *input, librevenge::RVNGTextInterface *documentInterface, char const *password=nullptr);
225
235 static MWAWLIB Result parse(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *documentInterface, char const *password=nullptr);
236
246 static MWAWLIB Result parse(librevenge::RVNGInputStream *input, librevenge::RVNGPresentationInterface *documentInterface, char const *password=nullptr);
247
257 static MWAWLIB Result parse(librevenge::RVNGInputStream *input, librevenge::RVNGSpreadsheetInterface *documentInterface, char const *password=nullptr);
258
259 // ------------------------------------------------------------
260 // decoders of the embedded zones created by libmwaw
261 // ------------------------------------------------------------
262
272 static MWAWLIB bool decodeGraphic(librevenge::RVNGBinaryData const &binary, librevenge::RVNGDrawingInterface *documentInterface);
273
284 static MWAWLIB bool decodeSpreadsheet(librevenge::RVNGBinaryData const &binary, librevenge::RVNGSpreadsheetInterface *documentInterface);
285
295 static MWAWLIB bool decodeText(librevenge::RVNGBinaryData const &binary, librevenge::RVNGTextInterface *documentInterface);
296 };
297
298 #endif /* MWAWDOCUMENT_HXX */
299 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
librevenge
Definition: MWAWDocument.hxx:56
MWAWDocument
This class provides all the functions needed by applications to parse many pre-MacOSX documents...
Definition: MWAWDocument.hxx:69
MWAWDocument::Type
Type
an enum to define the different type of document
Definition: MWAWDocument.hxx:99
MWAWDocument::MWAW_T_SUPERPAINT
SuperPaint: export drawing and paint v1 document.
Definition: MWAWDocument.hxx:150
MWAWLIB
#define MWAWLIB
Definition: MWAWDocument.hxx:52
MWAWDocument::MWAW_T_RAGTIME
RagTime: -Mac v2.1-v3.2: done, -all v5.0-v6.5: incomplete, only try to retrieve the picture/shape/tex...
Definition: MWAWDocument.hxx:144
MWAWDocument::Kind
Kind
an enum to define the kind of document
Definition: MWAWDocument.hxx:80
MWAWDocument::Result
Result
an enum which defines the result of the file parsing
Definition: MWAWDocument.hxx:90
MWAWDocument::Confidence
Confidence
an enum which defines if we have confidence that a file is supported
Definition: MWAWDocument.hxx:73