This class parses a wk3,wk4,123 Lotus spreadsheet. More...
#include <Lotus.h>
Classes | |
struct | Link |
basic struct used to store link More... |
Public Member Functions | |
LotusParser (RVNGInputStreamPtr &input, WPSHeaderPtr &header, libwps_tools_win::Font::Type encoding=libwps_tools_win::Font::UNKNOWN, char const *password=nullptr) | |
constructor | |
~LotusParser () final | |
destructor | |
void | parse (librevenge::RVNGSpreadsheetInterface *documentInterface) final |
called by WPSDocument to parse the file | |
bool | checkHeader (WPSHeader *header, bool strict=false) |
checks if the document header is correct (or not) | |
Public Member Functions inherited from WKSParser | |
WKSParser (RVNGInputStreamPtr &input, WPSHeaderPtr &header) | |
virtual | ~WKSParser () |
Protected Member Functions | |
int | version () const |
return the file version | |
bool | getFont (int id, WPSFont &font, libwps_tools_win::Font::Type &type) const |
returns the font corresponding to an id | |
libwps_tools_win::Font::Type | getDefaultFontType () const |
returns the default font type, ie. | |
std::vector< Link > | getLinksList (int lId) const |
returns a list of links corresponding to an id | |
bool | sendChart (int cId, WPSPosition const &pos, WPSGraphicStyle const &style) |
try to send a chart | |
bool | hasGraphics (int sheetId) const |
return true if the sheet sheetId has some graphic | |
void | sendGraphics (int sheetId) |
send the graphics corresponding to a sheetId | |
bool | getLeftTopPosition (Vec2i const &cell, int spreadsheet, Vec2f &pos) const |
returns the left top position of a cell | |
librevenge::RVNGString | getSheetName (int id) const |
returns the name of the id's spreadsheet | |
bool | updateEmbeddedObject (int id, WPSEmbeddedObject &object) const |
try to retrieve the content of a graphic, knowing it local id | |
bool | createZones () |
try to parse the different zones | |
bool | createListener (librevenge::RVNGSpreadsheetInterface *interface) |
creates the main listener | |
bool | parseFormatStream () |
check for the existence of a format stream, if it exists, parse it | |
bool | checkHeader (std::shared_ptr< WPSStream > stream, bool mainStream, bool strict) |
checks if the document header is correct (or not) | |
bool | readZones (std::shared_ptr< WPSStream > stream) |
finds the different zones (spreadsheet, chart, print, ...) | |
bool | readDataZone (std::shared_ptr< WPSStream > stream) |
parse the different zones 1B | |
bool | readZone (std::shared_ptr< WPSStream > &stream) |
reads a zone | |
bool | readZone1 (std::shared_ptr< WPSStream > stream) |
reads a zone of type 1: 123 files | |
bool | readSheetZone (std::shared_ptr< WPSStream > stream) |
reads a zone of type 2: 123 files | |
bool | readZone8 (std::shared_ptr< WPSStream > stream) |
reads a zone of type 8: 123 files | |
bool | readMacFontName (std::shared_ptr< WPSStream > stream, long endPos) |
reads a mac font name | |
bool | readLinkZone (std::shared_ptr< WPSStream > stream) |
reads a link | |
bool | readDocumentInfoMac (std::shared_ptr< WPSStream > stream, long endPos) |
reads a mac document info zone: zone 1b, then 2af8 | |
Protected Member Functions inherited from WKSParser | |
RVNGInputStreamPtr & | getInput () |
void | resetInput (RVNGInputStreamPtr const &newInput) |
RVNGInputStreamPtr | getFileInput () |
WPSHeaderPtr & | getHeader () |
int | version () const |
void | setVersion (int vers) |
libwps::DebugFile & | ascii () |
a DebugFile used to write what we recognize when we parse the document |
Static Protected Member Functions | |
static bool | readZone4 (std::shared_ptr< WPSStream > stream) |
reads a zone of type 4: 123 files | |
static bool | readChartZone (std::shared_ptr< WPSStream > stream) |
reads a zone of type 5: 123 files | |
static bool | readRefZone (std::shared_ptr< WPSStream > stream) |
reads a zone of type 6: 123 files | |
static bool | readZone7 (std::shared_ptr< WPSStream > stream) |
reads a zone of type 7: 123 files | |
static bool | readVersionZone (std::shared_ptr< WPSStream > stream) |
reads a zone of type a: 123 files | |
static bool | readZoneV3 (std::shared_ptr< WPSStream > stream) |
parse a wk123 zone | |
static bool | readFMTStyleName (std::shared_ptr< WPSStream > stream) |
reads a format style name: b6 | |
static RVNGInputStreamPtr | decodeStream (RVNGInputStreamPtr input, long endPos, std::vector< uint8_t > const &key) |
try to decode a stream, if successful, replace the stream'input by the new one | |
static std::vector< uint8_t > | retrievePasswordKeys (std::vector< uint8_t > const &fileKeys) |
try to guess a password knowing its file keys. Returns the keys if it founds a valid password |
Protected Attributes | |
std::shared_ptr< WKSContentListener > | m_listener |
std::shared_ptr< LotusParserInternal::State > | m_state |
the listener (if set) | |
std::shared_ptr< LotusStyleManager > | m_styleManager |
the style manager | |
std::shared_ptr< LotusChart > | m_chartParser |
the chart manager | |
std::shared_ptr< LotusGraph > | m_graphParser |
the graph manager | |
std::shared_ptr< LotusSpreadsheet > | m_spreadsheetParser |
the spreadsheet manager | |
std::shared_ptr< WPSOLE1Parser > | m_ole1Parser |
the ole1 parser |
Friends | |
class | LotusParserInternal::SubDocument |
class | LotusChart |
class | LotusGraph |
class | LotusSpreadsheet |
class | LotusStyleManager |
This class parses a wk3,wk4,123 Lotus spreadsheet.
LotusParser::LotusParser | ( | RVNGInputStreamPtr & | input, |
WPSHeaderPtr & | header, | ||
libwps_tools_win::Font::Type | encoding = libwps_tools_win::Font::UNKNOWN, | ||
char const * | password = nullptr ) |
constructor
|
final |
destructor
|
protected |
checks if the document header is correct (or not)
bool LotusParser::checkHeader | ( | WPSHeader * | header, |
bool | strict = false ) |
checks if the document header is correct (or not)
Referenced by checkHeader(), libwps::WPSDocument::isFileFormatSupported(), LotusStyleManager, parse(), and parseFormatStream().
|
protected |
creates the main listener
Referenced by parse().
|
protected |
try to parse the different zones
Referenced by parse().
|
staticprotected |
try to decode a stream, if successful, replace the stream'input by the new one
Referenced by readZone().
|
protected |
returns the default font type, ie.
the encoding given by the constructor if given or the encoding deduced from the version.
Referenced by createZones(), readLinkZone(), and readMacFontName().
|
protected |
returns the font corresponding to an id
|
protected |
returns the left top position of a cell
|
protected |
returns a list of links corresponding to an id
|
protected |
returns the name of the id's spreadsheet
|
protected |
return true if the sheet sheetId has some graphic
|
finalvirtual |
|
protected |
check for the existence of a format stream, if it exists, parse it
Referenced by createZones().
|
staticprotected |
reads a zone of type 5: 123 files
Referenced by readZone().
|
protected |
parse the different zones 1B
Referenced by readZone().
|
protected |
reads a mac document info zone: zone 1b, then 2af8
Referenced by readDataZone().
|
staticprotected |
reads a format style name: b6
Referenced by readZone().
|
protected |
reads a link
Referenced by readZone().
|
protected |
reads a mac font name
Referenced by readDataZone().
|
staticprotected |
reads a zone of type 6: 123 files
Referenced by readZone().
|
protected |
reads a zone of type 2: 123 files
Referenced by readZone().
|
staticprotected |
reads a zone of type a: 123 files
Referenced by readZone().
|
protected |
reads a zone
Referenced by checkHeader(), and readZones().
|
protected |
reads a zone of type 1: 123 files
Referenced by readZone().
|
staticprotected |
reads a zone of type 4: 123 files
Referenced by readZone().
|
staticprotected |
reads a zone of type 7: 123 files
Referenced by readZone().
|
protected |
reads a zone of type 8: 123 files
Referenced by readZone().
|
protected |
finds the different zones (spreadsheet, chart, print, ...)
Referenced by createZones(), and parseFormatStream().
|
staticprotected |
parse a wk123 zone
Referenced by readZone().
|
staticprotected |
try to guess a password knowing its file keys. Returns the keys if it founds a valid password
Referenced by readZone().
|
protected |
try to send a chart
|
protected |
send the graphics corresponding to a sheetId
|
protected |
try to retrieve the content of a graphic, knowing it local id
|
protected |
return the file version
Referenced by createZones(), parse(), readDataZone(), readMacFontName(), readZone(), and readZone8().
|
friend |
Referenced by LotusChart, and LotusParser().
|
friend |
Referenced by LotusGraph, and LotusParser().
|
friend |
Referenced by LotusParserInternal::SubDocument.
|
friend |
Referenced by LotusParser(), and LotusSpreadsheet.
|
friend |
Referenced by LotusParser(), and LotusStyleManager.
|
protected |
the chart manager
Referenced by createZones(), LotusParser(), parse(), readDataZone(), readZone(), and sendChart().
|
protected |
the graph manager
Referenced by createZones(), hasGraphics(), LotusParser(), parse(), readDataZone(), readZone(), readZone1(), and sendGraphics().
|
protected |
Referenced by createListener(), LotusParser(), and parse().
|
protected |
the ole1 parser
Referenced by createZones(), LotusParser(), and updateEmbeddedObject().
|
protected |
the spreadsheet manager
Referenced by createZones(), getLeftTopPosition(), getSheetName(), LotusParser(), parse(), readDataZone(), readZone(), readZone8(), and readZones().
|
protected |
the listener (if set)
the internal state
Referenced by checkHeader(), checkHeader(), createListener(), createZones(), getDefaultFontType(), getFont(), getLinksList(), LotusParser(), parse(), readDocumentInfoMac(), readLinkZone(), readMacFontName(), readSheetZone(), readZone(), readZone1(), readZone8(), readZones(), and version().
|
protected |
the style manager
Referenced by createZones(), LotusParser(), parse(), readDataZone(), and readZone().