LotusParser Class Reference documentation

Classes | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
LotusParser Class Referencefinal

This class parses a wk3,wk4,123 Lotus spreadsheet. More...

`#include <Lotus.h>`

Inheritance diagram for LotusParser:

## 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 More...
| ~LotusParser () final
| destructor More...
void | parse (librevenge::RVNGSpreadsheetInterface *documentInterface) final
| called by WPSDocument to parse the file More...
bool | checkHeader (WPSHeader *header, bool strict=false)
| checks if the document header is correct (or not) More...
Public Member Functions inherited from WKSParser
| WKSParser (RVNGInputStreamPtr &input, WPSHeaderPtr &header)
virtual | ~WKSParser ()

## Protected Member Functions
int | version () const
| return the file version More...
bool | getFont (int id, WPSFont &font, libwps_tools_win::Font::Type &type) const
| returns the font corresponding to an id More...
libwps_tools_win::Font::Type | getDefaultFontType () const
| returns the default font type, ie. More...
std::vector< Link > | getLinksList (int lId) const
| returns a list of links corresponding to an id More...
bool | sendChart (int cId, WPSPosition const &pos, WPSGraphicStyle const &style)
| try to send a chart More...
bool | hasGraphics (int sheetId) const
| return true if the sheet sheetId has some graphic More...
void | sendGraphics (int sheetId)
| send the graphics corresponding to a sheetId More...
bool | getLeftTopPosition (Vec2i const &cell, int spreadsheet, Vec2f &pos) const
| returns the left top position of a cell More...
librevenge::RVNGString | getSheetName (int id) const
| returns the name of the id's spreadsheet More...
bool | updateEmbeddedObject (int id, WPSEmbeddedObject &object) const
| try to retrieve the content of a graphic, knowing it local id More...
bool | createZones ()
| try to parse the different zones More...
bool | createListener (librevenge::RVNGSpreadsheetInterface *interface)
| creates the main listener More...
bool | parseFormatStream ()
| check for the existence of a format stream, if it exists, parse it More...
bool | checkHeader (std::shared_ptr< WPSStream > stream, bool mainStream, bool strict)
| checks if the document header is correct (or not) More...
bool | readZones (std::shared_ptr< WPSStream > stream)
| finds the different zones (spreadsheet, chart, print, ...) More...
bool | readDataZone (std::shared_ptr< WPSStream > stream)
| parse the different zones 1B More...
bool | readZone (std::shared_ptr< WPSStream > &stream)
| reads a zone More...
bool | readZone1 (std::shared_ptr< WPSStream > stream)
| reads a zone of type 1: 123 files More...
bool | readSheetZone (std::shared_ptr< WPSStream > stream)
| reads a zone of type 2: 123 files More...
bool | readZone4 (std::shared_ptr< WPSStream > stream)
| reads a zone of type 4: 123 files More...
bool | readChartZone (std::shared_ptr< WPSStream > stream)
| reads a zone of type 5: 123 files More...
bool | readRefZone (std::shared_ptr< WPSStream > stream)
| reads a zone of type 6: 123 files More...
bool | readZone7 (std::shared_ptr< WPSStream > stream)
| reads a zone of type 7: 123 files More...
bool | readZone8 (std::shared_ptr< WPSStream > stream)
| reads a zone of type 8: 123 files More...
bool | readVersionZone (std::shared_ptr< WPSStream > stream)
| reads a zone of type a: 123 files More...
bool | readZoneV3 (std::shared_ptr< WPSStream > stream)
| parse a wk123 zone More...
bool | readMacFontName (std::shared_ptr< WPSStream > stream, long endPos)
| reads a mac font name More...
bool | readFMTStyleName (std::shared_ptr< WPSStream > stream)
| reads a format style name: b6 More...
bool | readLinkZone (std::shared_ptr< WPSStream > stream)
| reads a link More...
bool | readDocumentInfoMac (std::shared_ptr< WPSStream > stream, long endPos)
| reads a mac document info zone: zone 1b, then 2af8 More...
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 More...

## Static Protected Member Functions
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 More...
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 More...

## Protected Attributes
std::shared_ptr< WKSContentListener > | m_listener
std::shared_ptr< LotusParserInternal::State > | m_state
| the listener (if set) More...
std::shared_ptr< LotusStyleManager > | m_styleManager
| the style manager More...
std::shared_ptr< LotusChart > | m_chartParser
| the chart manager More...
std::shared_ptr< LotusGraph > | m_graphParser
| the graph manager More...
std::shared_ptr< LotusSpreadsheet > | m_spreadsheetParser
| the spreadsheet manager More...
std::shared_ptr< WPSOLE1Parser > | m_ole1Parser
| the ole1 parser More...

## Friends
class | LotusParserInternal::SubDocument
class | LotusChart
class | LotusGraph
class | LotusSpreadsheet
class | LotusStyleManager

## Detailed Description

This class parses a wk3,wk4,123 Lotus spreadsheet.

## Constructor & Destructor Documentation

## ◆ LotusParser()

LotusParser::LotusParser | ( | RVNGInputStreamPtr & | input,
|  | WPSHeaderPtr & | header,
|  | libwps_tools_win::Font::Type | encoding = `libwps_tools_win::Font::UNKNOWN`,
|  | char const * | password = `nullptr`
| ) |  |

constructor

## ◆ ~LotusParser()

LotusParser::~LotusParser | ( |  | ) |
| final

destructor

## Member Function Documentation

## ◆ checkHeader() [1/2]

bool LotusParser::checkHeader | ( | WPSHeader * | header,
|  | bool | strict = `false`
| ) |  |

checks if the document header is correct (or not)

Referenced by parse(), and parseFormatStream().

## ◆ checkHeader() [2/2]

bool LotusParser::checkHeader | ( | std::shared_ptr< WPSStream > | stream,
|  | bool | mainStream,
|  | bool | strict
| ) |  |
| protected

checks if the document header is correct (or not)

## ◆ createListener()

bool LotusParser::createListener | ( | librevenge::RVNGSpreadsheetInterface * | interface | ) |
| protected

creates the main listener

Referenced by parse().

## ◆ createZones()

bool LotusParser::createZones | ( |  | ) |
| protected

try to parse the different zones

Referenced by parse().

## ◆ decodeStream()

RVNGInputStreamPtr LotusParser::decodeStream | ( | RVNGInputStreamPtr | input,
|  | long | endPos,
|  | std::vector< uint8_t > const & | key
| ) |  |
| staticprotected

try to decode a stream, if successful, replace the stream'input by the new one

Referenced by readZone().

## ◆ getDefaultFontType()

libwps_tools_win::Font::Type LotusParser::getDefaultFontType | ( |  | ) | const
| 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(), LotusStyleManager::readCellStyleD2(), LotusStyleManager::readCellStyleD2Data(), LotusStyleManager::readCellStyleE6(), LotusChart::readChart(), LotusChart::readChartName(), LotusStyleManager::readFontStyleA0(), LotusStyleManager::readFontStyleF0(), readLinkZone(), readMacFontName(), LotusSpreadsheet::readRowFormats(), LotusChart::readSerieName(), LotusSpreadsheet::readSheetName(), LotusSpreadsheet::readSheetName1B(), LotusSpreadsheet::sendRowContent(), LotusChart::sendText(), LotusGraph::sendTextBox(), LotusGraph::sendTextBoxWK4(), and LotusSpreadsheet::sendTextNote().

## ◆ getFont()

bool LotusParser::getFont | ( | int | id,
|  | WPSFont & | font,
|  | libwps_tools_win::Font::Type & | type
| ) |  | const
| protected

returns the font corresponding to an id

Referenced by LotusStyleManager::readCellStyleD2Data(), LotusGraph::sendTextBox(), and LotusStyleManager::updateState().

## ◆ getLeftTopPosition()

bool LotusParser::getLeftTopPosition | ( | Vec2i const & | cell,
|  | int | spreadsheet,
|  | Vec2f & | pos
| ) |  | const
| protected

returns the left top position of a cell

Referenced by LotusGraph::sendGraphics().

## ◆ getLinksList()

std::vector< LotusParser::Link > LotusParser::getLinksList | ( | int | lId | ) | const
| protected

returns a list of links corresponding to an id

Referenced by LotusChart::updateChart().

## ◆ getSheetName()

librevenge::RVNGString LotusParser::getSheetName | ( | int | id | ) | const
| protected

returns the name of the id's spreadsheet

Referenced by LotusChart::convert().

## ◆ hasGraphics()

bool LotusParser::hasGraphics | ( | int | sheetId | ) | const
| protected

return true if the sheet sheetId has some graphic

## ◆ parse()

void LotusParser::parse | ( | librevenge::RVNGSpreadsheetInterface * | documentInterface | ) |
| finalvirtual

called by WPSDocument to parse the file

Implements WKSParser.

## ◆ parseFormatStream()

bool LotusParser::parseFormatStream | ( |  | ) |
| protected

check for the existence of a format stream, if it exists, parse it

Referenced by createZones().

## ◆ readChartZone()

bool LotusParser::readChartZone | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type 5: 123 files

Referenced by readZone().

## ◆ readDataZone()

bool LotusParser::readDataZone | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

parse the different zones 1B

Referenced by readZone().

## ◆ readDocumentInfoMac()

bool LotusParser::readDocumentInfoMac | ( | std::shared_ptr< WPSStream > | stream,
|  | long | endPos
| ) |  |
| protected

reads a mac document info zone: zone 1b, then 2af8

Referenced by readDataZone().

## ◆ readFMTStyleName()

bool LotusParser::readFMTStyleName | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a format style name: b6

Referenced by readZone().

## ◆ readLinkZone()

bool LotusParser::readLinkZone | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a link

Referenced by readZone().

## ◆ readMacFontName()

bool LotusParser::readMacFontName | ( | std::shared_ptr< WPSStream > | stream,
|  | long | endPos
| ) |  |
| protected

reads a mac font name

Referenced by readDataZone().

## ◆ readRefZone()

bool LotusParser::readRefZone | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type 6: 123 files

Referenced by readZone().

## ◆ readSheetZone()

bool LotusParser::readSheetZone | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type 2: 123 files

Referenced by readZone().

## ◆ readVersionZone()

bool LotusParser::readVersionZone | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type a: 123 files

Referenced by readZone().

## ◆ readZone()

bool LotusParser::readZone | ( | std::shared_ptr< WPSStream > & | stream | ) |
| protected

reads a zone

Referenced by checkHeader(), and readZones().

## ◆ readZone1()

bool LotusParser::readZone1 | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type 1: 123 files

Referenced by readZone().

## ◆ readZone4()

bool LotusParser::readZone4 | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type 4: 123 files

Referenced by readZone().

## ◆ readZone7()

bool LotusParser::readZone7 | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type 7: 123 files

Referenced by readZone().

## ◆ readZone8()

bool LotusParser::readZone8 | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a zone of type 8: 123 files

Referenced by readZone().

## ◆ readZones()

bool LotusParser::readZones | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

finds the different zones (spreadsheet, chart, print, ...)

Referenced by createZones(), and parseFormatStream().

## ◆ readZoneV3()

bool LotusParser::readZoneV3 | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

parse a wk123 zone

Referenced by readZone().

## ◆ retrievePasswordKeys()

std::vector< uint8_t > LotusParser::retrievePasswordKeys | ( | std::vector< uint8_t > const & | fileKeys | ) |
| staticprotected

try to guess a password knowing its file keys. Returns the keys if it founds a valid password

Referenced by readZone().

## ◆ sendChart()

bool LotusParser::sendChart | ( | int | cId,
|  | WPSPosition const & | pos,
|  | WPSGraphicStyle const & | style
| ) |  |
| protected

try to send a chart

Referenced by LotusGraph::sendGraphics().

## ◆ sendGraphics()

void LotusParser::sendGraphics | ( | int | sheetId | ) |
| protected

send the graphics corresponding to a sheetId

Referenced by LotusSpreadsheet::sendSpreadsheet().

## ◆ updateEmbeddedObject()

bool LotusParser::updateEmbeddedObject | ( | int | id,
|  | WPSEmbeddedObject & | object
| ) |  | const
| protected

try to retrieve the content of a graphic, knowing it local id

Referenced by LotusGraph::sendGraphics().

## ◆ version()

int LotusParser::version | ( |  | ) | const
| protected

return the file version

Referenced by createZones(), parse(), readDataZone(), readMacFontName(), readZone(), readZone8(), LotusChart::version(), LotusSpreadsheet::version(), LotusGraph::version(), and LotusStyleManager::version().

## Friends And Related Function Documentation

## ◆ LotusChart

friend class LotusChart
| friend

Referenced by LotusParser().

## ◆ LotusGraph

friend class LotusGraph
| friend

Referenced by LotusParser().

## ◆ LotusParserInternal::SubDocument

friend class LotusParserInternal::SubDocument
| friend

## ◆ LotusSpreadsheet

friend class LotusSpreadsheet
| friend

Referenced by LotusParser().

## ◆ LotusStyleManager

friend class LotusStyleManager
| friend

Referenced by LotusParser().

## Member Data Documentation

## ◆ m_chartParser

std::shared_ptr<LotusChart> LotusParser::m_chartParser
| protected

the chart manager

Referenced by createZones(), LotusParser(), parse(), readDataZone(), readZone(), and sendChart().

## ◆ m_graphParser

std::shared_ptr<LotusGraph> LotusParser::m_graphParser
| protected

the graph manager

Referenced by createZones(), hasGraphics(), LotusParser(), parse(), readDataZone(), readZone(), readZone1(), and sendGraphics().

## ◆ m_listener

std::shared_ptr<WKSContentListener> LotusParser::m_listener
| protected

Referenced by createListener(), and parse().

## ◆ m_ole1Parser

std::shared_ptr<WPSOLE1Parser> LotusParser::m_ole1Parser
| protected

the ole1 parser

Referenced by createZones(), and updateEmbeddedObject().

## ◆ m_spreadsheetParser

std::shared_ptr<LotusSpreadsheet> LotusParser::m_spreadsheetParser
| protected

the spreadsheet manager

Referenced by createZones(), getLeftTopPosition(), getSheetName(), LotusParser(), parse(), readDataZone(), readZone(), readZone8(), and readZones().

## ◆ m_state

std::shared_ptr<LotusParserInternal::State> LotusParser::m_state
| protected

the listener (if set)

the internal state

Referenced by checkHeader(), createListener(), createZones(), getDefaultFontType(), getFont(), getLinksList(), parse(), readDocumentInfoMac(), readLinkZone(), readMacFontName(), readSheetZone(), readZone(), readZone1(), readZone8(), readZones(), and version().

## ◆ m_styleManager

std::shared_ptr<LotusStyleManager> LotusParser::m_styleManager
| protected

the style manager

Referenced by createZones(), LotusParser(), parse(), readDataZone(), and readZone().

The documentation for this class was generated from the following files:

- Lotus.h
- Lotus.cpp