Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
QuattroParser Class Referencefinal

This class parses Quattro Pro spreadsheet: .wb1, ..., .wb3. More...

`#include <Quattro.h>`

Inheritance diagram for QuattroParser:

## Public Member Functions
| QuattroParser (RVNGInputStreamPtr &input, WPSHeaderPtr &header, libwps_tools_win::Font::Type encoding=libwps_tools_win::Font::UNKNOWN, char const *password=nullptr)
| constructor More...
| ~QuattroParser () 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...
libwps_tools_win::Font::Type | getDefaultFontType () const
| returns the default font type, ie. More...
bool | getExternalFileName (int fId, librevenge::RVNGString &fName) const
| returns the name of the fId file More...
bool | getField (int fId, librevenge::RVNGString &text, QuattroFormulaInternal::CellReference &ref, librevenge::RVNGString const &fileName) const
| returns the text and cell of a field instruction More...
bool | getColor (int id, WPSColor &color) const
| returns the color corresponding to an id More...
bool | getFont (int id, WPSFont &font, libwps_tools_win::Font::Type &type) const
| returns the font corresponding to an id More...
Vec2f | getCellPosition (int sheetId, Vec2i const &cell) const
| returns the beginning position of a cell More...
bool | sendPageGraphics (int sheetId) const
| send the page graphic corresponding to a sheet More...
bool | sendGraphics (int sheetId, Vec2i const &cell) const
| send the graphic corresponding to a cell More...
std::shared_ptr< WKSContentListener > | createListener (librevenge::RVNGSpreadsheetInterface *interface)
| creates the main listener More...
void | sendHeaderFooter (bool header)
| send the header/footer More...
bool | checkHeader (std::shared_ptr< WPSStream > stream, bool strict)
| checks if the document header is correct (or not) More...
bool | readZones ()
| finds the different zones (spreadsheet, chart, print, ...) More...
bool | readOLEZones (std::shared_ptr< WPSStream > &stream)
| finds the different OLE zones: wb2 More...
bool | readZone (std::shared_ptr< WPSStream > &stream)
| try to read a zone More...
bool | readFieldName (std::shared_ptr< WPSStream > stream)
| read a list of field name + ...: zone b More...
bool | readCellPosition (std::shared_ptr< WPSStream > stream)
| read the cell's position: zone 96 More...
bool | readExternalData (std::shared_ptr< WPSStream > stream)
| read a external filename/name: zone 97,98 More...
bool | readFontDef (std::shared_ptr< WPSStream > stream)
| read a font: zone cf, fc and 110 More...
bool | readColorList (std::shared_ptr< WPSStream > stream)
| read a color lits: zone e8 More...
bool | readStyleName (std::shared_ptr< WPSStream > stream)
| read a style name: zone d0 More...
bool | readHeaderFooter (std::shared_ptr< WPSStream > stream, bool header)
| reads the header/footer: zone 25,26 More...
bool | readPaneAttribute (std::shared_ptr< WPSStream > stream)
| read the pane attribute: d1 More...
bool | readOptimizer (std::shared_ptr< WPSStream > stream)
| read the first optimizer zone: 103 More...
bool | readQueryCommand (std::shared_ptr< WPSStream > stream)
| read the table query command zone: 12f More...
bool | readSerieExtension (std::shared_ptr< WPSStream > stream)
| read the serie extension zone: 2dc More...
bool | readCString (std::shared_ptr< WPSStream > stream, librevenge::RVNGString &string, long maxSize)
| try to read a basic C string, knowing the maximum size More...
bool | readBlockList (std::shared_ptr< WPSStream > stream)
| reads some cell reference list (potential followed by other data) More...
bool | readZone341 (std::shared_ptr< WPSStream > stream)
| reads a big zone(chart?) which contains sub zones: 341 More...
bool | parseOLEStream (RVNGInputStreamPtr input, std::string const &avoid="")
| try to parse the OLE stream(except the main stream) More...
bool | readOleLinkInfo (std::shared_ptr< WPSStream > stream, librevenge::RVNGString &link)
| try to read the link info sub stream More...
bool | readOleBOlePart (std::shared_ptr< WPSStream > stream)
| try to read the BOlePart sub stream: a zone which contains 5 long More...
RVNGInputStreamPtr | decodeStream (RVNGInputStreamPtr input, std::vector< uint8_t > const &key) const
| try to decode a stream, if successful, replace the stream'input by the new one 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...

## Protected Attributes
std::shared_ptr< WKSContentListener > | m_listener
std::shared_ptr< QuattroParserInternal::State > | m_state
| the listener (if set) More...
std::shared_ptr< QuattroGraph > | m_graphParser
| the graph manager More...
std::shared_ptr< QuattroSpreadsheet > | m_spreadsheetParser
| the spreadsheet manager More...

## Friends
class | QuattroParserInternal::SubDocument
class | QuattroGraph
class | QuattroSpreadsheet

## Detailed Description

This class parses Quattro Pro spreadsheet: .wb1, ..., .wb3.

## Constructor & Destructor Documentation

## ◆ QuattroParser()

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

constructor

## ◆ ~QuattroParser()

QuattroParser::~QuattroParser | ( |  | ) |
| final

destructor

## Member Function Documentation

## ◆ checkHeader() [1/2]

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

checks if the document header is correct (or not)

Referenced by parse().

## ◆ checkHeader() [2/2]

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

checks if the document header is correct (or not)

## ◆ createListener()

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

creates the main listener

Referenced by parse().

## ◆ decodeStream()

RVNGInputStreamPtr QuattroParser::decodeStream | ( | RVNGInputStreamPtr | input,
|  | std::vector< uint8_t > const & | key
| ) |  | const
| protected

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

Referenced by readZone().

## ◆ getCellPosition()

Vec2f QuattroParser::getCellPosition | ( | int | sheetId,
|  | Vec2i const & | cell
| ) |  | const
| protected

returns the beginning position of a cell

Referenced by QuattroGraph::sendShape(), and QuattroGraph::sendTextbox().

## ◆ getColor()

bool QuattroParser::getColor | ( | int | id,
|  | WPSColor & | color
| ) |  | const
| protected

returns the color corresponding to an id

Referenced by QuattroSpreadsheet::readCellStyle(), and readPaneAttribute().

## ◆ getDefaultFontType()

libwps_tools_win::Font::Type QuattroParser::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 parseOLEStream(), QuattroSpreadsheet::readCell(), QuattroSpreadsheet::readCellStyle(), QuattroSpreadsheet::readColumnRowDefaultSize(), QuattroSpreadsheet::readColumnSize(), readCString(), readFontDef(), QuattroSpreadsheet::readRowRangeSize(), QuattroSpreadsheet::readRowSize(), QuattroGraph::send(), and QuattroSpreadsheet::sendSpreadsheet().

## ◆ getExternalFileName()

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

returns the name of the fId file

Referenced by QuattroSpreadsheet::readCellReference().

## ◆ getField()

bool QuattroParser::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 QuattroSpreadsheet::readCellReference().

## ◆ getFont()

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

returns the font corresponding to an id

Referenced by QuattroSpreadsheet::readCellStyle().

## ◆ parse()

void QuattroParser::parse | ( | librevenge::RVNGSpreadsheetInterface * | documentInterface | ) |
| final virtual

called by WPSDocument to parse the file

Implements WKSParser.

## ◆ parseOLEStream()

bool QuattroParser::parseOLEStream | ( | RVNGInputStreamPtr | input,
|  | std::string const & | avoid = `""`
| ) |  |
| protected

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

Referenced by readOLEZones(), and readZones().

## ◆ readBlockList()

bool QuattroParser::readBlockList | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads some cell reference list (potential followed by other data)

Referenced by readZone().

## ◆ readCellPosition()

bool QuattroParser::readCellPosition | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read the cell's position: zone 96

Referenced by readZone().

## ◆ readColorList()

bool QuattroParser::readColorList | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read a color lits: zone e8

Referenced by readZone().

## ◆ readCString()

bool QuattroParser::readCString | ( | std::shared_ptr< WPSStream > | stream,
|  | librevenge::RVNGString & | string,
|  | long | maxSize
| ) |  |
| protected

try to read a basic C string, knowing the maximum size

Referenced by QuattroGraph::readBitmap(), QuattroGraph::readButton(), QuattroSpreadsheet::readCell(), QuattroGraph::readChart(), QuattroGraph::readDialog(), readExternalData(), readFieldName(), QuattroGraph::readFillData(), readFontDef(), QuattroGraph::readFrame(), QuattroGraph::readFrameOLE(), readHeaderFooter(), QuattroGraph::readImage(), QuattroGraph::readOLEData(), readOleLinkInfo(), readOLEZones(), QuattroGraph::readShape(), QuattroSpreadsheet::readSheetName(), readStyleName(), QuattroGraph::readTextBox(), and readZone().

## ◆ readExternalData()

bool QuattroParser::readExternalData | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read a external filename/name: zone 97,98

Referenced by readZone().

## ◆ readFieldName()

bool QuattroParser::readFieldName | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read a list of field name + ...: zone b

Referenced by readZone().

## ◆ readFontDef()

bool QuattroParser::readFontDef | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read a font: zone cf, fc and 110

Referenced by readZone().

## ◆ readHeaderFooter()

bool QuattroParser::readHeaderFooter | ( | std::shared_ptr< WPSStream > | stream,
|  | bool | header
| ) |  |
| protected

reads the header/footer: zone 25,26

Referenced by readZone().

## ◆ readOleBOlePart()

bool QuattroParser::readOleBOlePart | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

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

Referenced by parseOLEStream().

## ◆ readOleLinkInfo()

bool QuattroParser::readOleLinkInfo | ( | std::shared_ptr< WPSStream > | stream,
|  | librevenge::RVNGString & | link
| ) |  |
| protected

try to read the link info sub stream

Referenced by parseOLEStream().

## ◆ readOLEZones()

bool QuattroParser::readOLEZones | ( | std::shared_ptr< WPSStream > & | stream | ) |
| protected

finds the different OLE zones: wb2

Referenced by readZones().

## ◆ readOptimizer()

bool QuattroParser::readOptimizer | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read the first optimizer zone: 103

Referenced by readZone().

## ◆ readPaneAttribute()

bool QuattroParser::readPaneAttribute | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read the pane attribute: d1

Referenced by readZone().

## ◆ readQueryCommand()

bool QuattroParser::readQueryCommand | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read the table query command zone: 12f

Referenced by readZone().

## ◆ readSerieExtension()

bool QuattroParser::readSerieExtension | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read the serie extension zone: 2dc

Referenced by readZone().

## ◆ readStyleName()

bool QuattroParser::readStyleName | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

read a style name: zone d0

Referenced by readZone().

## ◆ readZone()

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

try to read a zone

Referenced by checkHeader(), readZone341(), and readZones().

## ◆ readZone341()

bool QuattroParser::readZone341 | ( | std::shared_ptr< WPSStream > | stream | ) |
| protected

reads a big zone(chart?) which contains sub zones: 341

Referenced by readZone().

## ◆ readZones()

bool QuattroParser::readZones | ( |  | ) |
| protected

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

Referenced by parse().

## ◆ sendGraphics()

bool QuattroParser::sendGraphics | ( | int | sheetId,
|  | Vec2i const & | cell
| ) |  | const
| protected

send the graphic corresponding to a cell

Referenced by QuattroSpreadsheet::sendCellContent().

## ◆ sendHeaderFooter()

void QuattroParser::sendHeaderFooter | ( | bool | header | ) |
| protected

send the header/footer

Referenced by QuattroParserInternal::SubDocument::parse().

## ◆ sendPageGraphics()

bool QuattroParser::sendPageGraphics | ( | int | sheetId | ) | const
| protected

send the page graphic corresponding to a sheet

Referenced by QuattroSpreadsheet::sendSpreadsheet().

## ◆ version()

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

return the file version

Referenced by decodeStream(), readZone341(), readZones(), QuattroSpreadsheet::version(), and QuattroGraph::version().

## Friends And Related Function Documentation

## ◆ QuattroGraph

friend class QuattroGraph
| friend

## ◆ QuattroParserInternal::SubDocument

friend class QuattroParserInternal::SubDocument
| friend

## ◆ QuattroSpreadsheet

friend class QuattroSpreadsheet
| friend

## Member Data Documentation

## ◆ m_graphParser

std::shared_ptr<QuattroGraph> QuattroParser::m_graphParser
| protected

the graph manager

Referenced by parse(), parseOLEStream(), readZone(), readZones(), sendGraphics(), and sendPageGraphics().

## ◆ m_listener

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

Referenced by parse(), and sendHeaderFooter().

## ◆ m_spreadsheetParser

std::shared_ptr<QuattroSpreadsheet> QuattroParser::m_spreadsheetParser
| protected

the spreadsheet manager

Referenced by createListener(), getCellPosition(), parse(), readBlockList(), readFieldName(), readOptimizer(), readQueryCommand(), readZone(), and readZones().

## ◆ m_state

std::shared_ptr<QuattroParserInternal::State> QuattroParser::m_state
| protected

the listener (if set)

the internal state

Referenced by checkHeader(), createListener(), getColor(), getDefaultFontType(), getExternalFileName(), getField(), getFont(), parseOLEStream(), readColorList(), readExternalData(), readFieldName(), readFontDef(), readHeaderFooter(), readZone(), readZone341(), readZones(), sendHeaderFooter(), and version().

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

- Quattro.h
- Quattro.cpp