Quattro9Parser Class Referencefinal

This class parses Quattro Pro WP spreadsheet: .qpw. More...

#include <Quattro9.h>

Inheritance diagram for Quattro9Parser:
WKSParser

Public Member Functions

 Quattro9Parser (RVNGInputStreamPtr &input, WPSHeaderPtr &header, libwps_tools_win::Font::Type encoding=libwps_tools_win::Font::UNKNOWN, char const *password=nullptr)
 constructor
 
 ~Quattro9Parser () 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
 
libwps_tools_win::Font::Type getDefaultFontType () const
 returns the default font type, ie.
 
bool getExternalFileName (int fId, librevenge::RVNGString &fName) const
 returns the name of the fId file
 
bool getField (int fId, librevenge::RVNGString &text, QuattroFormulaInternal::CellReference &ref, librevenge::RVNGString const &fileName) const
 returns the text and cell of a field instruction
 
bool getFont (int id, WPSFont &font) const
 returns the font corresponding to an id
 
Vec2f getCellPosition (int sheetId, Vec2i const &cell) const
 returns the beginning position of a cell
 
bool getColor (int id, WPSColor &color) const
 returns the color corresponding to an id
 
bool getPattern (int id, WPSGraphicStyle::Pattern &pattern) const
 returns the pattern corresponding to a pattern id between 0 and 24
 
bool sendPageGraphics (int sheetId) const
 send the page graphic corresponding to a sheet
 
std::shared_ptr< WKSContentListenercreateListener (librevenge::RVNGSpreadsheetInterface *interface)
 creates the main listener
 
void sendHeaderFooter (bool header)
 send the header/footer
 
bool checkHeader (std::shared_ptr< WPSStream > stream, bool strict)
 checks if the document header is correct (or not)
 
bool readZones ()
 finds the different zones in the main OLE stream (spreadsheet, chart, print, ...)
 
bool readZone (std::shared_ptr< WPSStream > &stream)
 try to read a zone
 
bool readPString (std::shared_ptr< WPSStream > const &stream, long endPos, Quattro9ParserInternal::TextEntry &entry)
 try to read a string: length[2bytes], unknow[bytes] followed by the string
 
bool readFontNames (std::shared_ptr< WPSStream > const &stream)
 read a font name zone: zone 6
 
bool readFontStyles (std::shared_ptr< WPSStream > const &stream)
 read a font style zone: zone 7
 
bool readDocumentFields (std::shared_ptr< WPSStream > const &stream)
 read a zone 406 which contains a list of fields
 
bool readDocumentStrings (std::shared_ptr< WPSStream > const &stream)
 read a zone 407 which contains a list of stream
 
bool readTextStyles (std::shared_ptr< WPSStream > const &stream, long endPos, Quattro9ParserInternal::TextEntry &entry)
 read a text entry style zone
 
bool readTextFontStyles (std::shared_ptr< WPSStream > const &stream, int dataSz, WPSFont &font)
 read a font style in a text entry zone
 
void addDocumentStrings ()
 add the document strings to the spreadsheetParser
 
bool parseOLEStream (RVNGInputStreamPtr input, std::string const &avoid="")
 try to parse the OLE stream(except the main stream)
 
- 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 readFilePositions (std::shared_ptr< WPSStream > const &stream, long(&filePos)[2])
 read a zone which contains two files position (prev and next): zone 2,402,602,a02
 
static bool readOleLinkInfo (std::shared_ptr< WPSStream > stream)
 try to read the link info sub stream
 
static bool readOleBOlePart (std::shared_ptr< WPSStream > stream)
 try to read the BOlePart sub stream: a zone which contains 5 long
 
static RVNGInputStreamPtr decodeStream (RVNGInputStreamPtr input, std::vector< uint8_t > const &key)
 try to decode a stream, if successful, replace the stream'input by the new one
 

Protected Attributes

std::shared_ptr< WKSContentListenerm_listener
 
std::shared_ptr< Quattro9ParserInternal::Statem_state
 the listener (if set)
 
std::shared_ptr< Quattro9Graphm_graphParser
 the graph manager
 
std::shared_ptr< Quattro9Spreadsheetm_spreadsheetParser
 the spreadsheet manager
 

Friends

class Quattro9ParserInternal::SubDocument
 
class Quattro9Graph
 
class Quattro9Spreadsheet
 

Detailed Description

This class parses Quattro Pro WP spreadsheet: .qpw.

Constructor & Destructor Documentation

◆ Quattro9Parser()

Quattro9Parser::Quattro9Parser ( RVNGInputStreamPtr input,
WPSHeaderPtr header,
libwps_tools_win::Font::Type  encoding = libwps_tools_win::Font::UNKNOWN,
char const password = nullptr 
)

constructor

◆ ~Quattro9Parser()

Quattro9Parser::~Quattro9Parser ( )
final

destructor

Member Function Documentation

◆ addDocumentStrings()

void Quattro9Parser::addDocumentStrings ( )
protected

add the document strings to the spreadsheetParser

Referenced by readZone().

◆ checkHeader() [1/2]

bool Quattro9Parser::checkHeader ( std::shared_ptr< WPSStream stream,
bool  strict 
)
protected

checks if the document header is correct (or not)

◆ checkHeader() [2/2]

bool Quattro9Parser::checkHeader ( WPSHeader header,
bool  strict = false 
)

checks if the document header is correct (or not)

Referenced by checkHeader(), libwps::WPSDocument::isFileFormatSupported(), and parse().

◆ createListener()

std::shared_ptr< WKSContentListener > Quattro9Parser::createListener ( librevenge::RVNGSpreadsheetInterface *  interface)
protected

creates the main listener

Referenced by parse().

◆ decodeStream()

RVNGInputStreamPtr Quattro9Parser::decodeStream ( RVNGInputStreamPtr  input,
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().

◆ getCellPosition()

Vec2f Quattro9Parser::getCellPosition ( int  sheetId,
Vec2i const cell 
) const
protected

returns the beginning position of a cell

Referenced by Quattro9Graph::sendOLE(), Quattro9Graph::sendShape(), and Quattro9Graph::sendTextbox().

◆ getColor()

bool Quattro9Parser::getColor ( int  id,
WPSColor color 
) const
protected

returns the color corresponding to an id

Referenced by Quattro9Spreadsheet::readCellStyles().

◆ getDefaultFontType()

libwps_tools_win::Font::Type Quattro9Parser::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 readDocumentFields(), Quattro9Graph::readTextboxStyle(), readTextFontStyles(), Quattro9Spreadsheet::sendCellContent(), and Quattro9Graph::sendTextbox().

◆ getExternalFileName()

bool Quattro9Parser::getExternalFileName ( int  fId,
librevenge::RVNGString &  fName 
) const
protected

returns the name of the fId file

Referenced by Quattro9Spreadsheet::readCellReference().

◆ getField()

bool Quattro9Parser::getField ( int  fId,
librevenge::RVNGString &  text,
QuattroFormulaInternal::CellReference ref,
librevenge::RVNGString const fileName 
) const
protected

returns the text and cell of a field instruction

Referenced by Quattro9Spreadsheet::readCellReference().

◆ getFont()

bool Quattro9Parser::getFont ( int  id,
WPSFont font 
) const
protected

returns the font corresponding to an id

Referenced by Quattro9Spreadsheet::readCellStyles().

◆ getPattern()

bool Quattro9Parser::getPattern ( int  id,
WPSGraphicStyle::Pattern pattern 
) const
protected

returns the pattern corresponding to a pattern id between 0 and 24

Referenced by Quattro9Spreadsheet::readCellStyles().

◆ parse()

void Quattro9Parser::parse ( librevenge::RVNGSpreadsheetInterface *  documentInterface)
finalvirtual

called by WPSDocument to parse the file

Implements WKSParser.

◆ parseOLEStream()

bool Quattro9Parser::parseOLEStream ( RVNGInputStreamPtr  input,
std::string const avoid = "" 
)
protected

try to parse the OLE stream(except the main stream)

Referenced by readZones().

◆ readDocumentFields()

bool Quattro9Parser::readDocumentFields ( std::shared_ptr< WPSStream > const stream)
protected

read a zone 406 which contains a list of fields

Referenced by readZone().

◆ readDocumentStrings()

bool Quattro9Parser::readDocumentStrings ( std::shared_ptr< WPSStream > const stream)
protected

read a zone 407 which contains a list of stream

Referenced by readZone().

◆ readFilePositions()

bool Quattro9Parser::readFilePositions ( std::shared_ptr< WPSStream > const stream,
long(&)  filePos[2] 
)
staticprotected

read a zone which contains two files position (prev and next): zone 2,402,602,a02

Referenced by Quattro9Spreadsheet::readEndColumn(), Quattro9Spreadsheet::readEndSheet(), and readZone().

◆ readFontNames()

bool Quattro9Parser::readFontNames ( std::shared_ptr< WPSStream > const stream)
protected

read a font name zone: zone 6

Referenced by readZone().

◆ readFontStyles()

bool Quattro9Parser::readFontStyles ( std::shared_ptr< WPSStream > const stream)
protected

read a font style zone: zone 7

Referenced by readZone().

◆ readOleBOlePart()

bool Quattro9Parser::readOleBOlePart ( std::shared_ptr< WPSStream stream)
staticprotected

try to read the BOlePart sub stream: a zone which contains 5 long

Referenced by parseOLEStream().

◆ readOleLinkInfo()

bool Quattro9Parser::readOleLinkInfo ( std::shared_ptr< WPSStream stream)
staticprotected

try to read the link info sub stream

Referenced by parseOLEStream().

◆ readPString()

bool Quattro9Parser::readPString ( std::shared_ptr< WPSStream > const stream,
long  endPos,
Quattro9ParserInternal::TextEntry entry 
)
protected

◆ readTextFontStyles()

bool Quattro9Parser::readTextFontStyles ( std::shared_ptr< WPSStream > const stream,
int  dataSz,
WPSFont font 
)
protected

read a font style in a text entry zone

Referenced by readTextStyles().

◆ readTextStyles()

bool Quattro9Parser::readTextStyles ( std::shared_ptr< WPSStream > const stream,
long  endPos,
Quattro9ParserInternal::TextEntry entry 
)
protected

read a text entry style zone

Referenced by readPString().

◆ readZone()

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

try to read a zone

Referenced by checkHeader(), and readZones().

◆ readZones()

bool Quattro9Parser::readZones ( )
protected

finds the different zones in the main OLE stream (spreadsheet, chart, print, ...)

Referenced by parse().

◆ sendHeaderFooter()

void Quattro9Parser::sendHeaderFooter ( bool  header)
protected

send the header/footer

◆ sendPageGraphics()

bool Quattro9Parser::sendPageGraphics ( int  sheetId) const
protected

send the page graphic corresponding to a sheet

Referenced by Quattro9Spreadsheet::sendSpreadsheet().

◆ version()

int Quattro9Parser::version ( ) const
protected

return the file version

Referenced by Quattro9Graph::version(), and Quattro9Spreadsheet::version().

Friends And Related Symbol Documentation

◆ Quattro9Graph

◆ Quattro9ParserInternal::SubDocument

◆ Quattro9Spreadsheet

Member Data Documentation

◆ m_graphParser

std::shared_ptr<Quattro9Graph> Quattro9Parser::m_graphParser
protected

◆ m_listener

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

Referenced by parse(), and sendHeaderFooter().

◆ m_spreadsheetParser

std::shared_ptr<Quattro9Spreadsheet> Quattro9Parser::m_spreadsheetParser
protected

◆ m_state


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

Generated on Sat May 6 2023 13:09:45 for libwps by doxygen 1.9.8