MWAWDocument.hxx Source File documentation

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:
MWAWDocument::MWAW_T_CRICKETDRAW
Cricket Draw: v1.0.1 and v1.1.1.
Definition: MWAWDocument.hxx:186
MWAWDocument::MWAW_T_MACDRAW
MacDraw: v0-v1.
Definition: MWAWDocument.hxx:124
MWAWDocument::MWAW_T_TEACHTEXT
TeachText/SimpleText.
Definition: MWAWDocument.hxx:152
MWAWDocument::MWAW_T_TEXEDIT
Tex-Edit (v2)
Definition: MWAWDocument.hxx:153
MWAWDocument::MWAW_T_WINGZ
Wingz (v1.1)
Definition: MWAWDocument.hxx:155
MWAWDocument::MWAW_T_ZWRITE
Z-Write (v1.3)
Definition: MWAWDocument.hxx:159
MWAWDocument::MWAW_T_RESERVED2
Used for Apple&#39;s Pict file: see below.
Definition: MWAWDocument.hxx:163
MWAWDocument::MWAW_T_RESERVED7
Used for MouseWrite: see below.
Definition: MWAWDocument.hxx:168
MWAWDocument::MWAW_T_CLARISWORKS
ClarisWorks/AppleWorks: all versions, export database (as spreadsheet), draw(as text), paint, presentation, spreadsheet, text document.
Definition: MWAWDocument.hxx:105
MWAWDocument::MWAW_K_UNKNOWN
unknown
Definition: MWAWDocument.hxx:81
MWAWDocument::MWAW_T_FOXBASE
FoxBase: TODO.
Definition: MWAWDocument.hxx:111
librevenge
Definition: MWAWDocument.hxx:56
MWAWDocument::MWAW_K_PRESENTATION
presentation graphic
Definition: MWAWDocument.hxx:85
MWAWDocument
This class provides all the functions needed by applications to parse many pre-MacOSX documents...
Definition: MWAWDocument.hxx:69
MWAWDocument::MWAW_T_RESERVED8
Used for PowerPoint: see below.
Definition: MWAWDocument.hxx:169
MWAWDocument::MWAW_K_PAINT
bitmap graphic
Definition: MWAWDocument.hxx:84
MWAWDocument::Type
Type
an enum to define the different type of document
Definition: MWAWDocument.hxx:99
MWAWDocument::MWAW_T_BEAGLEWORKS
BeagleWorks (v1.0)/WordPerfect Works (v1.2): export database(as spreadsheet), draw, paint, spreadsheet and text files.
Definition: MWAWDocument.hxx:103
MWAWDocument::MWAW_C_EXCELLENT
supported
Definition: MWAWDocument.hxx:77
MWAWDocument::MWAW_T_RESERVED6
Used for MaxWrite: see below.
Definition: MWAWDocument.hxx:167
MWAWDocument::MWAW_T_SYMPOSIUM
Symposium: TODO.
Definition: MWAWDocument.hxx:151
MWAWDocument::MWAW_C_UNSUPPORTED_ENCRYPTION
encryption not supported
Definition: MWAWDocument.hxx:75
MWAWDocument::MWAW_T_DBASE
DBase: TODO.
Definition: MWAWDocument.hxx:106
MWAWDocument::MWAW_R_UNKNOWN_ERROR
unknown error
Definition: MWAWDocument.hxx:96
MWAWDocument::MWAW_T_4DIMENSION
4th Dimension: TODO
Definition: MWAWDocument.hxx:160
MWAWDocument::MWAW_T_MICROSOFTWORKS
Microsoft Works Mac: export database(as spreadsheet), graphic, spreadsheet and text files...
Definition: MWAWDocument.hxx:133
MWAWDocument::MWAW_T_LIGHTWAYTEXT
LightWayText (only v4 Mac format)
Definition: MWAWDocument.hxx:121
MWAWDocument::MWAW_T_MICROSOFTMULTIPLAN
Microsoft Multiplan: TODO.
Definition: MWAWDocument.hxx:131
MWAWDocument::MWAW_T_MORE
More (v2-3): retrieve the organization part but not the slide/tree parts.
Definition: MWAWDocument.hxx:129
MWAWDocument::MWAW_T_RESERVED1
Used for ClarisDraw v1 file: see below.
Definition: MWAWDocument.hxx:162
MWAWDocument::MWAW_T_TRAPEZE
Trapeze spreadsheet: TODO.
Definition: MWAWDocument.hxx:154
MWAWDocument::MWAW_T_APPLEPICT
Apple Pict: v1 or v2.
Definition: MWAWDocument.hxx:177
MWAWDocument::MWAW_T_OVERVUE
OverVUE: TODO.
Definition: MWAWDocument.hxx:137
MWAWDocument::parse
static MWAWLIB Result parse(librevenge::RVNGInputStream *input, librevenge::RVNGTextInterface *documentInterface, char const *password=nullptr)
Parses the input stream content.
Definition: MWAWDocument.cxx:352
MWAWDocument::MWAW_T_SUPERPAINT
SuperPaint: export drawing and paint v1 document.
Definition: MWAWDocument.hxx:150
MWAWDocument::MWAW_T_NISUSWRITER
Nisus Writer (v3.4-v6.5)
Definition: MWAWDocument.hxx:136
MWAWDocument::MWAW_T_MACPAINT
MacPaint: v1-v2.
Definition: MWAWDocument.hxx:126
MWAWDocument::MWAW_T_RESERVED4
Used for FreeHand: see below.
Definition: MWAWDocument.hxx:165
MWAWDocument::decodeSpreadsheet
static MWAWLIB bool decodeSpreadsheet(librevenge::RVNGBinaryData const &binary, librevenge::RVNGSpreadsheetInterface *documentInterface)
Parses the spreadsheet contained in the binary data and called documentInterface to reconstruct a spr...
Definition: MWAWDocument.cxx:410
MWAWDocument::MWAW_T_ADOBEILLUSTRATOR
Adobe Illustrator: TODO.
Definition: MWAWDocument.hxx:102
MWAWDocument::MWAW_T_CLARISDRAW
Claris Draw: v1.0.1-v1.0.3.
Definition: MWAWDocument.hxx:174
MWAWDocument::MWAW_T_FULLIMPACT
FullImpact: TODO.
Definition: MWAWDocument.hxx:113
MWAWDocument::MWAW_R_OLE_ERROR
problem when reading the OLE structure
Definition: MWAWDocument.hxx:93
MWAWDocument::decodeGraphic
static MWAWLIB bool decodeGraphic(librevenge::RVNGBinaryData const &binary, librevenge::RVNGDrawingInterface *documentInterface)
Parses the graphic contained in the binary data and called documentInterface to reconstruct a graphic...
Definition: MWAWDocument.cxx:393
MWAWDocument::MWAW_T_FRAMEMAKER
FrameMaker: TODO.
Definition: MWAWDocument.hxx:112
MWAWDocument::MWAW_T_RESERVED5
Used for Cricket Draw: see below.
Definition: MWAWDocument.hxx:166
MWAWDocument::MWAW_T_READYSETGO
Ready,Set,Go!: TODO.
Definition: MWAWDocument.hxx:145
MWAWDocument::MWAW_K_TEXT
word processing file
Definition: MWAWDocument.hxx:82
MWAWDocument::MWAW_T_PIXELPAINT
PixelPaint: v1-v2.1.
Definition: MWAWDocument.hxx:139
MWAWDocument::MWAW_R_FILE_ACCESS_ERROR
problem when accessing file
Definition: MWAWDocument.hxx:92
MWAWDocument::MWAW_T_STYLE
Style: v1.6, v1.9.
Definition: MWAWDocument.hxx:180
MWAWDocument::MWAW_T_FAMILYTREEMAKER
Family Tree Maker: TODO.
Definition: MWAWDocument.hxx:109
MWAWLIB
#define MWAWLIB
Definition: MWAWDocument.hxx:52
MWAWDocument::MWAW_T_PAGEMAKER
PageMaker: TODO.
Definition: MWAWDocument.hxx:138
MWAWDocument::MWAW_C_SUPPORTED_ENCRYPTION
encryption supported
Definition: MWAWDocument.hxx:76
MWAWDocument::MWAW_T_FULLPAINT
FullPaint: v1 ( same format as MacPaint file)
Definition: MWAWDocument.hxx:114
MWAWDocument::isFileFormatSupported
static MWAWLIB Confidence isFileFormatSupported(librevenge::RVNGInputStream *input, Type &type, Kind &kind)
Analyzes the content of an input stream to see if it can be parsed.
Definition: MWAWDocument.cxx:117
MWAWDocument::MWAW_T_MACWRITEPRO
MacWrite II/Pro.
Definition: MWAWDocument.hxx:135
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::MWAW_C_NONE
not supported
Definition: MWAWDocument.hxx:74
MWAWDocument::MWAW_T_RESERVED3
Used for Style v1.6: see below.
Definition: MWAWDocument.hxx:164
MWAWDocument::Kind
Kind
an enum to define the kind of document
Definition: MWAWDocument.hxx:80
MWAWDocument::MWAW_R_OK
conversion ok
Definition: MWAWDocument.hxx:91
MWAWDocument::MWAW_T_MAXWRITE
MaxWrite: v1.
Definition: MWAWDocument.hxx:189
MWAWDocument::MWAW_K_DATABASE
database
Definition: MWAWDocument.hxx:87
MWAWDocument::Result
Result
an enum which defines the result of the file parsing
Definition: MWAWDocument.hxx:90
MWAWDocument::decodeText
static MWAWLIB bool decodeText(librevenge::RVNGBinaryData const &binary, librevenge::RVNGTextInterface *documentInterface)
Parses the text contained in the binary data and called documentInterface to reconstruct a text...
Definition: MWAWDocument.cxx:427
MWAWDocument::MWAW_T_MICROSOFTWORD
Microsoft Word (v1-v5)
Definition: MWAWDocument.hxx:132
MWAWDocument::MWAW_T_MACDRAFT
MacDraft: v1, v4-v5.
Definition: MWAWDocument.hxx:123
MWAWDocument::MWAW_T_EDOC
eDOC (v2)
Definition: MWAWDocument.hxx:108
MWAWDocument::MWAW_R_PASSWORD_MISSMATCH_ERROR
problem when using the given password
Definition: MWAWDocument.hxx:95
MWAWDocument::MWAW_T_KALEIDAGRAPH
Kaleida Graph: TODO.
Definition: MWAWDocument.hxx:120
MWAWDocument::MWAW_T_UNKNOWN
Unrecognised file type.
Definition: MWAWDocument.hxx:100
MWAWDocument::MWAW_T_MOUSEWRITE
MouseWrite: v1.
Definition: MWAWDocument.hxx:192
MWAWDocument::MWAW_T_FULLWRITE
FullWrite Professional: basic.
Definition: MWAWDocument.hxx:115
MWAWDocument::MWAW_T_ACTA
Acta (v2 and Classic v1)
Definition: MWAWDocument.hxx:101
MWAWDocument::Confidence
Confidence
an enum which defines if we have confidence that a file is supported
Definition: MWAWDocument.hxx:73
MWAWDocument::MWAW_T_DOCMAKER
DocMaker (v4)
Definition: MWAWDocument.hxx:107
MWAWDocument::MWAW_T_MACDRAWPRO
MacDraw II: v1.0-v1.1, MacDraw Pro: v1.
Definition: MWAWDocument.hxx:125
MWAWDocument::MWAW_T_FILEMAKER
FileMaker: TODO.
Definition: MWAWDocument.hxx:110
MWAWDocument::MWAW_T_HANMACWORDK
HanMac Word-K (v2.0.5-2.0.6)
Definition: MWAWDocument.hxx:118
MWAWDocument::MWAW_T_CLARISRESOLVE
Claris Resolve (v1.1)
Definition: MWAWDocument.hxx:104
MWAWDocument::MWAW_T_MINDWRITE
MindWrite.
Definition: MWAWDocument.hxx:128
MWAWDocument::MWAW_T_XPRESS
XPress: TODO.
Definition: MWAWDocument.hxx:158
MWAWDocument::MWAW_T_MICROSOFTFILE
Microsoft File(data base): TODO.
Definition: MWAWDocument.hxx:130
MWAWDocument::MWAW_T_RESERVED9
Reserved for future use.
Definition: MWAWDocument.hxx:170
MWAWDocument::MWAW_T_GREATWORKS
GreatWorks (v1-v2): export text, drawing, paint and spreadsheet document.
Definition: MWAWDocument.hxx:116
MWAWDocument::MWAW_T_POWERPOINT
PowerPoint: v1-v4 and pc v2-v4,95.
Definition: MWAWDocument.hxx:195
MWAWDocument::MWAW_T_WRITENOW
WriteNow.
Definition: MWAWDocument.hxx:156
MWAWDocument::MWAW_T_WRITERPLUS
WriterPlus.
Definition: MWAWDocument.hxx:157
MWAWDocument::MWAW_T_MACWRITE
MacWrite.
Definition: MWAWDocument.hxx:134
MWAWDocument::MWAW_T_MACDOC
MacDoc (v1.3)
Definition: MWAWDocument.hxx:122
MWAWDocument::MWAW_T_INFOGENIE
InfoGenie: TODO.
Definition: MWAWDocument.hxx:119
MWAWDocument::MWAW_T_MARINERWRITE
Mariner Write (only v1.6-v3.5 Mac Classic)
Definition: MWAWDocument.hxx:127
MWAWDocument::MWAW_R_PARSE_ERROR
problem when parsing the file
Definition: MWAWDocument.hxx:94
MWAWDocument::MWAW_K_DRAW
vectorized grphic
Definition: MWAWDocument.hxx:83
MWAWDocument::MWAW_T_HANMACWORDJ
HanMac Word-J (v2.0.4)
Definition: MWAWDocument.hxx:117
MWAWDocument::MWAW_K_SPREADSHEET
spreadsheet
Definition: MWAWDocument.hxx:86
MWAWDocument::MWAW_T_FREEHAND
FreeHand: v1.
Definition: MWAWDocument.hxx:183