LotusParser Class Referencefinal

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

#include <Lotus.h>

Inheritance diagram for LotusParser:
WKSParser

Classes

 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< LinkgetLinksList (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
RVNGInputStreamPtrgetInput ()
void resetInput (RVNGInputStreamPtr const &newInput)
RVNGInputStreamPtr getFileInput ()
WPSHeaderPtrgetHeader ()
int version () const
void setVersion (int vers)
libwps::DebugFileascii ()
 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< WKSContentListenerm_listener
std::shared_ptr< LotusParserInternal::Statem_state
 the listener (if set)
std::shared_ptr< LotusStyleManagerm_styleManager
 the style manager
std::shared_ptr< LotusChartm_chartParser
 the chart manager
std::shared_ptr< LotusGraphm_graphParser
 the graph manager
std::shared_ptr< LotusSpreadsheetm_spreadsheetParser
 the spreadsheet manager
std::shared_ptr< WPSOLE1Parserm_ole1Parser
 the ole1 parser

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 ( std::shared_ptr< WPSStream > stream,
bool mainStream,
bool strict )
protected

checks if the document header is correct (or not)

◆ checkHeader() [2/2]

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().

◆ 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(), readLinkZone(), and readMacFontName().

◆ getFont()

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

returns the font corresponding to an id

◆ getLeftTopPosition()

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

returns the left top position of a cell

◆ getLinksList()

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

returns a list of links corresponding to an id

◆ getSheetName()

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

returns the name of the id's spreadsheet

◆ 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.

Referenced by LotusStyleManager.

◆ 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)
staticprotected

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)
staticprotected

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)
staticprotected

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)
staticprotected

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)
staticprotected

reads a zone of type 4: 123 files

Referenced by readZone().

◆ readZone7()

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

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)
staticprotected

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

◆ sendGraphics()

void LotusParser::sendGraphics ( int sheetId)
protected

send the graphics corresponding to a sheetId

◆ updateEmbeddedObject()

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

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

◆ version()

int LotusParser::version ( ) const
protected

return the file version

Referenced by createZones(), parse(), readDataZone(), readMacFontName(), readZone(), and readZone8().

◆ LotusChart

friend class LotusChart
friend

Referenced by LotusChart, and LotusParser().

◆ LotusGraph

friend class LotusGraph
friend

Referenced by LotusGraph, and LotusParser().

◆ LotusParserInternal::SubDocument

friend class LotusParserInternal::SubDocument
friend

◆ LotusSpreadsheet

friend class LotusSpreadsheet
friend

Referenced by LotusParser(), and LotusSpreadsheet.

◆ LotusStyleManager

friend class LotusStyleManager
friend

Referenced by LotusParser(), and LotusStyleManager.

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

◆ m_listener

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

Referenced by createListener(), LotusParser(), and parse().

◆ m_ole1Parser

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

the ole1 parser

Referenced by createZones(), LotusParser(), and updateEmbeddedObject().

◆ m_spreadsheetParser

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

◆ m_state

◆ 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:

Generated on Sat Jul 19 2025 05:24:40 for libwps by doxygen 1.14.0