GreatWksDocument.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 GREAT_WKS_DOCUMENT
35# define GREAT_WKS_DOCUMENT
36
37#include <string>
38#include <vector>
39
40#include <librevenge/librevenge.h>
41
42#include "MWAWCell.hxx"
43#include "MWAWDebug.hxx"
44#include "MWAWParser.hxx"
45
47{
48struct State;
49}
50
51class GreatWksGraph;
52class GreatWksParser;
56class GreatWksText;
57
61{
62 friend class GreatWksParser;
63 friend class GreatWksDBParser;
64 friend class GreatWksDRParser;
65 friend class GreatWksSSParser;
66public:
68 explicit GreatWksDocument(MWAWParser &parser);
70 virtual ~GreatWksDocument();
71
73 bool checkHeader(MWAWHeader *header, bool strict=false);
74
77 {
78 return *m_parser;
79 }
81 std::shared_ptr<GreatWksGraph> getGraphParser()
82 {
83 return m_graphParser;
84 }
86 std::shared_ptr<GreatWksText> getTextParser()
87 {
88 return m_textParser;
89 }
90
94 void newPage(int page);
96 bool sendPicture(MWAWEntry const &entry, MWAWPosition pos);
97
98 // interface with the graph parser
99
101 bool canSendTextboxAsGraphic(MWAWEntry const &entry);
103 bool sendTextbox(MWAWEntry const &entry, MWAWListenerPtr listener);
104
105protected:
106
108 bool readRSRCZones();
109
110 // formula function
111
115 bool readString(long endPos, std::string &res);
117 bool readNumber(long endPos, double &res, bool &isNan);
119 bool readFormula(MWAWVec2i const &cPos, long endPos,
120 std::vector<MWAWCellContent::FormulaInstruction> &formula, std::string &error);
121
122 //
123 // low level
124 //
125
127 bool readPrintInfo(MWAWEntry const &entry);
128
130 bool readWPSN(MWAWEntry const &entry);
131
133 bool readARRs(MWAWEntry const &entry);
135 bool readDaHS(MWAWEntry const &entry);
137 bool readGrDS(MWAWEntry const &entry);
139 bool readNxEd(MWAWEntry const &entry);
140
143
146
147private:
148 GreatWksDocument(GreatWksDocument const &orig) = delete;
150
151 //
152 // data
153 //
154
155protected:
157 std::shared_ptr<GreatWksDocumentInternal::State> m_state;
158public:
160 std::shared_ptr<MWAWParserState> m_parserState;
161
162protected:
166 std::shared_ptr<GreatWksGraph> m_graphParser;
168 std::shared_ptr<GreatWksText> m_textParser;
169
173 typedef void (MWAWParser::* NewPage)(int page);
174
179};
180#endif
181// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Defines MWAWCell (cell content and format)
the main class to read a GreatWorks database file
Definition: GreatWksDBParser.hxx:62
the main class to read a GreatWorks graphic file
Definition: GreatWksDRParser.hxx:56
the main class to read/store generic data of a GreatWorks document
Definition: GreatWksDocument.hxx:61
virtual ~GreatWksDocument()
destructor
Definition: GreatWksDocument.cxx:98
bool readRSRCZones()
read the resource fork zone
Definition: GreatWksDocument.cxx:172
GetMainSection m_getMainSection
the getMainSection callback
Definition: GreatWksDocument.hxx:176
bool readString(long endPos, std::string &res)
try to read a string
Definition: GreatWksDocument.cxx:571
bool readNxEd(MWAWEntry const &entry)
read a unknown zone ( NxED resource block: v2 )
Definition: GreatWksDocument.cxx:445
GreatWksDocument(GreatWksDocument const &orig)=delete
std::shared_ptr< GreatWksGraph > m_graphParser
the graph document
Definition: GreatWksDocument.hxx:166
bool readNumber(long endPos, double &res, bool &isNan)
try to read a number
Definition: GreatWksDocument.cxx:586
bool sendPicture(MWAWEntry const &entry, MWAWPosition pos)
send a picture
Definition: GreatWksDocument.cxx:158
bool sendTextbox(MWAWEntry const &entry, MWAWListenerPtr listener)
try to send textbox
Definition: GreatWksDocument.cxx:137
std::shared_ptr< GreatWksText > m_textParser
the text document
Definition: GreatWksDocument.hxx:168
bool readGrDS(MWAWEntry const &entry)
read a unknown zone ( GrDS resource block: v2 )
Definition: GreatWksDocument.cxx:405
void(MWAWParser::* NewPage)(int page)
callback used to send a page break
Definition: GreatWksDocument.hxx:173
MWAWSection getMainSection() const
return the main section
Definition: GreatWksDocument.cxx:115
libmwaw::DebugFile & rsrcAscii()
a DebugFile used to write what we recognize when we parse the document in rsrc
Definition: GreatWksDocument.cxx:107
bool readDaHS(MWAWEntry const &entry)
read a unknown zone ( DaHS resource block: v2 )
Definition: GreatWksDocument.cxx:364
MWAWParser & getMainParser()
returns the main parser
Definition: GreatWksDocument.hxx:76
std::shared_ptr< GreatWksText > getTextParser()
returns the text parser
Definition: GreatWksDocument.hxx:86
GreatWksDocument & operator=(GreatWksDocument const &orig)=delete
std::shared_ptr< GreatWksDocumentInternal::State > m_state
the state
Definition: GreatWksDocument.hxx:157
bool checkHeader(MWAWHeader *header, bool strict=false)
checks if the document header is correct (or not)
Definition: GreatWksDocument.cxx:477
bool canSendTextboxAsGraphic(MWAWEntry const &entry)
check if a textbox can be send in a graphic zone, ie. does not contains any graphic
Definition: GreatWksDocument.cxx:146
std::shared_ptr< GreatWksGraph > getGraphParser()
returns the graph parser
Definition: GreatWksDocument.hxx:81
void newPage(int page)
send a page break
Definition: GreatWksDocument.cxx:124
bool readFormula(MWAWVec2i const &cPos, long endPos, std::vector< MWAWCellContent::FormulaInstruction > &formula, std::string &error)
read to read a formula
Definition: GreatWksDocument.cxx:628
std::shared_ptr< MWAWParserState > m_parserState
the parser state
Definition: GreatWksDocument.hxx:160
bool readPrintInfo(MWAWEntry const &entry)
read a PrintInfo block ( PRNT resource block )
Definition: GreatWksDocument.cxx:283
MWAWInputStreamPtr rsrcInput()
return the input input
Definition: GreatWksDocument.cxx:102
bool readCellInFormula(MWAWVec2i const &pos, MWAWCellContent::FormulaInstruction &instr)
reads a cell
Definition: GreatWksDocument.cxx:542
MWAWParser * m_parser
the main parser
Definition: GreatWksDocument.hxx:164
bool readWPSN(MWAWEntry const &entry)
read the windows positions ( WPSN resource block )
Definition: GreatWksDocument.cxx:230
bool readARRs(MWAWEntry const &entry)
read a unknown zone ( ARRs resource block: v2 )
Definition: GreatWksDocument.cxx:337
NewPage m_newPage
the new page callback
Definition: GreatWksDocument.hxx:178
MWAWSection(MWAWParser::* GetMainSection)() const
callback used to return the main section
Definition: GreatWksDocument.hxx:171
the main class to read the graphic part of a HanMac Word-J file
Definition: GreatWksGraph.hxx:76
the main class to read a GreatWorks text file
Definition: GreatWksParser.hxx:57
the main class to read a GreatWorks spreadsheet file
Definition: GreatWksSSParser.hxx:59
the main class to read the text part of GreatWorks Text file
Definition: GreatWksText.hxx:63
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:47
a function used by MWAWDocument to store the version of document
Definition: MWAWHeader.hxx:57
virtual class which defines the ancestor of all main zone parser
Definition: MWAWParser.hxx:100
Class to define the position of an object (textbox, picture, ..) in the document.
Definition: MWAWPosition.hxx:48
a class which stores section properties
Definition: MWAWSection.hxx:46
an interface used to insert comment in a binary file, written in ascii form (if debug_with_files is n...
Definition: MWAWDebug.hxx:66
std::shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:553
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:551
Internal: the structures of a GreatWksDocument.
Definition: GreatWksDocument.cxx:58
small class use to define a formula instruction
Definition: MWAWCell.hxx:397

Generated on Thu Jan 19 2023 00:00:00 for libmwaw by doxygen 1.9.6