LotusParser Class Referencefinal

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

#include <Lotus.h>

Inheritance diagram for LotusParser:
WKSParser

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 ()
 
virtual void parse (librevenge::RVNGSpreadsheetInterface *documentInterface)=0
 

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

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

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

Friends And Related Symbol 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

◆ 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

◆ 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 Thu Jul 20 2023 00:00:00 for libwps by doxygen 1.9.7