Internal class used to read the file stream Internal class used to read the file stream, this class adds some usefull functions to the basic librevenge::RVNGInputStream: More...
#include <MWAWInputStream.hxx>
Public Member Functions | |
MWAWInputStream (std::shared_ptr< librevenge::RVNGInputStream > input, bool inverted) | |
creates a stream with given endian | |
MWAWInputStream (librevenge::RVNGInputStream *input, bool inverted, bool checkCompression=false) | |
creates a stream with given endian from an existing input | |
~MWAWInputStream () | |
destructor | |
std::shared_ptr< librevenge::RVNGInputStream > | input () |
returns the basic librevenge::RVNGInputStream | |
bool | readInverted () const |
returns the endian mode (see constructor) | |
void | setReadInverted (bool newVal) |
sets the endian mode | |
int | seek (long offset, librevenge::RVNG_SEEK_TYPE seekType) |
seeks to a offset position, from actual, beginning or ending position | |
long | tell () |
returns actual offset position | |
long | size () const |
returns the stream size | |
bool | checkPosition (long pos) const |
checks if a position is or not a valid file position | |
bool | isEnd () |
returns true if we are at the end of the section/file | |
void | pushLimit (long newLimit) |
defines a new section in the file (from actualPos to newLimit) next call of seek, tell, atEos, ... will be restrained to this section | |
void | popLimit () |
pops a section defined by pushLimit | |
void | recomputeStreamSize () |
unsigned long | readULong (int num) |
returns a uint8, uint16, uint32 readed from actualPos | |
long | readLong (int num) |
return a int8, int16, int32 readed from actualPos | |
bool | readDouble8 (double &res, bool &isNotANumber) |
try to read a double of size 8: 1.5 bytes exponent, 6.5 bytes mantisse | |
bool | readDoubleReverted8 (double &res, bool &isNotANumber) |
try to read a double of size 8: 6.5 bytes mantisse, 1.5 bytes exponent | |
bool | readDouble10 (double &res, bool &isNotANumber) |
try to read a double of size 10: 2 bytes exponent, 8 bytes mantisse | |
const uint8_t * | read (size_t numBytes, unsigned long &numBytesRead) |
! reads numbytes data, WITHOUT using any endian or section consideration | |
bool | readDataBlock (long size, librevenge::RVNGBinaryData &data) |
reads a librevenge::RVNGBinaryData with a given size in the actual section/file | |
bool | readEndDataBlock (librevenge::RVNGBinaryData &data) |
reads a librevenge::RVNGBinaryData from actPos to the end of the section/file | |
bool | isStructured () |
return true if the stream is ole | |
unsigned | subStreamCount () |
returns the number of substream | |
std::string | subStreamName (unsigned id) |
returns the name of the i^th substream | |
std::shared_ptr< MWAWInputStream > | getSubStreamByName (std::string const &name) |
return a new stream for a ole zone | |
std::shared_ptr< MWAWInputStream > | getSubStreamById (unsigned id) |
return a new stream for a ole zone | |
bool | getFinderInfo (std::string &type, std::string &creator) const |
returns the finder info type and creator (if known) | |
bool | hasDataFork () const |
returns true if the data fork block exists | |
bool | hasResourceFork () const |
returns true if the resource fork block exists | |
std::shared_ptr< MWAWInputStream > | getResourceForkStream () |
returns the resource fork if find | |
Static Public Member Functions | |
static std::shared_ptr< MWAWInputStream > | get (librevenge::RVNGBinaryData const &data, bool inverted) |
returns a new input stream corresponding to a librevenge::RVNGBinaryData | |
static unsigned long | readULong (librevenge::RVNGInputStream *stream, int num, unsigned long a, bool inverseRead) |
internal function used to read num byte, | |
Protected Member Functions | |
void | updateStreamSize () |
update the stream size ( must be called in the constructor ) | |
bool | unBinHex () |
unbinhex the data in the file is a BinHex 4.0 file of a mac file | |
bool | unzipStream () |
unzip the data in the file is a zip file of a mac file | |
bool | unMacMIME () |
check if some stream are in MacMIME format, if so de MacMIME | |
bool | unMacMIME (MWAWInputStream *input, std::shared_ptr< librevenge::RVNGInputStream > &dataInput, std::shared_ptr< librevenge::RVNGInputStream > &rsrcInput) const |
de MacMIME an input stream | |
bool | unsplitInternalMergeStream () |
check if a stream is an internal merge stream | |
Static Protected Member Functions | |
static uint8_t | readU8 (librevenge::RVNGInputStream *stream) |
internal function used to read a byte | |
Protected Attributes | |
std::shared_ptr< librevenge::RVNGInputStream > | m_stream |
the initial input | |
long | m_streamSize |
the stream size | |
long | m_readLimit |
actual section limit (-1 if no limit) | |
std::vector< long > | m_prevLimits |
list of previous limits | |
std::string | m_fInfoType |
finder info type | |
std::string | m_fInfoCreator |
finder info type | |
std::shared_ptr< MWAWInputStream > | m_resourceFork |
the resource fork | |
bool | m_inverseRead |
big or normal endian | |
Private Member Functions | |
MWAWInputStream (MWAWInputStream const &orig)=delete | |
MWAWInputStream & | operator= (MWAWInputStream const &orig)=delete |
Internal class used to read the file stream Internal class used to read the file stream, this class adds some usefull functions to the basic librevenge::RVNGInputStream:
MWAWInputStream::MWAWInputStream | ( | std::shared_ptr< librevenge::RVNGInputStream > | input, |
bool | inverted | ||
) |
creates a stream with given endian
input | the given input |
inverted | must be set to true for pc doc and ole part and to false for mac doc |
MWAWInputStream::MWAWInputStream | ( | librevenge::RVNGInputStream * | input, |
bool | inverted, | ||
bool | checkCompression = false |
||
) |
creates a stream with given endian from an existing input
Note: this functions does not delete input
MWAWInputStream::~MWAWInputStream | ( | ) |
destructor
|
privatedelete |
|
inline |
checks if a position is or not a valid file position
Referenced by ApplePictParserInternal::ColorTable::read(), libmwaw_applepict1::Region::read(), and libmwaw_applepict1::OpCode::readText().
|
static |
returns a new input stream corresponding to a librevenge::RVNGBinaryData
Referenced by HanMacWrdJText::computeNumPages(), libmwaw_applepict1::PictParser::convertToPict2(), MacDocParser::createZones(), HanMacWrdKParser::decodeZone(), LightWayTxtGraph::findJPEGSize(), MWAWOLEParser::parse(), WriteNowText::send(), NisusWrtGraph::sendPageGraphics(), LightWayTxtGraph::sendPICT(), TeachTxtParser::sendPicture(), EDocParser::sendPicture(), NisusWrtGraph::sendPicture(), DocMkrParser::sendPicture(), MacDocParser::sendPicture(), MacWrtProParser::sendPicture(), HanMacWrdJText::sendText(), and FullWrtStruct::Entry::update().
|
inline |
returns the finder info type and creator (if known)
|
inline |
returns the resource fork if find
Referenced by unBinHex().
std::shared_ptr< MWAWInputStream > MWAWInputStream::getSubStreamById | ( | unsigned | id | ) |
return a new stream for a ole zone
std::shared_ptr< MWAWInputStream > MWAWInputStream::getSubStreamByName | ( | std::string const & | name | ) |
return a new stream for a ole zone
|
inline |
returns true if the data fork block exists
Referenced by isEnd(), read(), readDataBlock(), readEndDataBlock(), seek(), tell(), unBinHex(), and unMacMIME().
|
inline |
returns true if the resource fork block exists
|
inline |
returns the basic librevenge::RVNGInputStream
bool MWAWInputStream::isEnd | ( | ) |
returns true if we are at the end of the section/file
Referenced by ApplePictParserInternal::Pixmap::computeHeight(), libmwaw_applepict1::Bitmap::read(), ApplePictParserInternal::Bitmap::readBitmapData(), libmwaw_applepict1::Bitmap::readBitmapData(), WriteNowText::readParagraph(), WriteNowText::readTable(), WriteNowText::readTokenV2(), readULong(), unBinHex(), and unMacMIME().
bool MWAWInputStream::isStructured | ( | ) |
return true if the stream is ole
Referenced by unsplitInternalMergeStream(), and unzipStream().
|
privatedelete |
|
inline |
pops a section defined by pushLimit
|
inline |
defines a new section in the file (from actualPos to newLimit) next call of seek, tell, atEos, ... will be restrained to this section
const uint8_t * MWAWInputStream::read | ( | size_t | numBytes, |
unsigned long & | numBytesRead | ||
) |
! reads numbytes data, WITHOUT using any endian or section consideration
Referenced by ApplePictParserInternal::Bitmap::readBitmapData(), libmwaw_applepict1::Bitmap::readBitmapData(), ApplePictParserInternal::Pixmap::readPixmapData(), MacDraft5StyleManagerInternal::Pixmap::readPixmapData(), unBinHex(), and unMacMIME().
bool MWAWInputStream::readDataBlock | ( | long | size, |
librevenge::RVNGBinaryData & | data | ||
) |
reads a librevenge::RVNGBinaryData with a given size in the actual section/file
Referenced by readEndDataBlock().
bool MWAWInputStream::readDouble10 | ( | double & | res, |
bool & | isNotANumber | ||
) |
try to read a double of size 10: 2 bytes exponent, 8 bytes mantisse
bool MWAWInputStream::readDouble8 | ( | double & | res, |
bool & | isNotANumber | ||
) |
try to read a double of size 8: 1.5 bytes exponent, 6.5 bytes mantisse
bool MWAWInputStream::readDoubleReverted8 | ( | double & | res, |
bool & | isNotANumber | ||
) |
try to read a double of size 8: 6.5 bytes mantisse, 1.5 bytes exponent
bool MWAWInputStream::readEndDataBlock | ( | librevenge::RVNGBinaryData & | data | ) |
reads a librevenge::RVNGBinaryData from actPos to the end of the section/file
|
inline |
returns the endian mode (see constructor)
long MWAWInputStream::readLong | ( | int | num | ) |
return a int8, int16, int32 readed from actualPos
Referenced by ApplePictParserInternal::ColorTable::read(), libmwaw_applepict1::Region::read(), libmwaw_applepict1::Bitmap::read(), WriteNowText::readFont(), libmwaw_applepict1::OpCode::readInt(), WriteNowText::readParagraph(), WriteNowText::readTable(), WriteNowText::readToken(), WriteNowText::readTokenV2(), and unBinHex().
|
staticprotected |
internal function used to read a byte
Referenced by readULong(), and unBinHex().
|
inline |
returns a uint8, uint16, uint32 readed from actualPos
Referenced by ApplePictParserInternal::Pixmap::computeHeight(), libmwaw_applepict1::OpCode::getSize(), ApplePictParserInternal::ColorTable::read(), libmwaw_applepict1::Region::read(), libmwaw_applepict1::Bitmap::read(), ApplePictParserInternal::Bitmap::readBitmapData(), libmwaw_applepict1::Bitmap::readBitmapData(), libmwaw_applepict1::OpCode::readColor(), RagTime5StructManager::readCompressedLong(), RagTime5StructManager::readDataIdList(), readDouble10(), readDouble8(), readDoubleReverted8(), WriteNowText::readFont(), libmwaw_applepict1::OpCode::readInt(), readLong(), ClarisWksGraph::readOLE(), WriteNowText::readParagraph(), libmwaw_applepict1::OpCode::readPattern(), ApplePictParserInternal::Pixmap::readPixmapData(), WriteNowText::readTable(), libmwaw_applepict1::OpCode::readText(), WriteNowText::readToken(), readULong(), unBinHex(), and unMacMIME().
|
static |
internal function used to read num byte,
void MWAWInputStream::recomputeStreamSize | ( | ) |
internal: recomputes the stream size, must be called after you modify the data of the main input
For instance, if this input stream is created from a MWAWStringStream and you decide to add some data in the original MWAWStringStream...
int MWAWInputStream::seek | ( | long | offset, |
librevenge::RVNG_SEEK_TYPE | seekType | ||
) |
seeks to a offset position, from actual, beginning or ending position
Referenced by ApplePictParserInternal::Pixmap::computeHeight(), libmwaw_applepict1::OpCode::computeSize(), getSubStreamById(), getSubStreamByName(), MWAWInputStream(), ApplePictParserInternal::ColorTable::read(), libmwaw_applepict1::OpCode::readData(), readDouble10(), WriteNowText::readFont(), WriteNowText::readParagraph(), WriteNowText::readTable(), WriteNowText::readToken(), WriteNowText::readTokenV2(), unBinHex(), unMacMIME(), and unzipStream().
|
inline |
sets the endian mode
|
inline |
returns the stream size
Referenced by ApplePictParserInternal::Pixmap::computeHeight(), isEnd(), readDataBlock(), readEndDataBlock(), seek(), unBinHex(), and unMacMIME().
unsigned MWAWInputStream::subStreamCount | ( | ) |
returns the number of substream
std::string MWAWInputStream::subStreamName | ( | unsigned | id | ) |
returns the name of the i^th substream
long MWAWInputStream::tell | ( | ) |
returns actual offset position
Referenced by ApplePictParserInternal::Pixmap::computeHeight(), libmwaw_applepict1::OpCode::computeSize(), libmwaw_applepict1::OpCode::getSize(), getSubStreamById(), getSubStreamByName(), ApplePictParserInternal::ColorTable::read(), libmwaw_applepict1::Region::read(), libmwaw_applepict1::OpCode::readColor(), libmwaw_applepict1::OpCode::readData(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readEndDataBlock(), WriteNowText::readFont(), libmwaw_applepict1::OpCode::readInt(), WriteNowText::readParagraph(), libmwaw_applepict1::OpCode::readPattern(), WriteNowText::readTable(), libmwaw_applepict1::OpCode::readText(), WriteNowText::readToken(), WriteNowText::readTokenV2(), seek(), unMacMIME(), and updateStreamSize().
|
protected |
unbinhex the data in the file is a BinHex 4.0 file of a mac file
Referenced by MWAWInputStream().
|
protected |
check if some stream are in MacMIME format, if so de MacMIME
Referenced by MWAWInputStream(), and unMacMIME().
|
protected |
de MacMIME an input stream
|
protected |
check if a stream is an internal merge stream
Referenced by MWAWInputStream().
|
protected |
unzip the data in the file is a zip file of a mac file
Referenced by MWAWInputStream().
|
protected |
update the stream size ( must be called in the constructor )
Referenced by MWAWInputStream(), and recomputeStreamSize().
|
mutableprotected |
finder info type
Referenced by getFinderInfo(), unBinHex(), unMacMIME(), and unsplitInternalMergeStream().
|
mutableprotected |
finder info type
Referenced by getFinderInfo(), unBinHex(), unMacMIME(), and unsplitInternalMergeStream().
|
protected |
big or normal endian
Referenced by getSubStreamById(), getSubStreamByName(), readInverted(), readULong(), setReadInverted(), and unsplitInternalMergeStream().
|
protected |
list of previous limits
Referenced by popLimit(), and pushLimit().
|
protected |
actual section limit (-1 if no limit)
Referenced by checkPosition(), isEnd(), popLimit(), pushLimit(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readEndDataBlock(), and seek().
|
protected |
the resource fork
Referenced by getResourceForkStream(), hasResourceFork(), MWAWInputStream(), unBinHex(), unMacMIME(), unsplitInternalMergeStream(), and unzipStream().
|
protected |
the initial input
Referenced by getSubStreamById(), getSubStreamByName(), hasDataFork(), input(), isEnd(), isStructured(), MWAWInputStream(), read(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readULong(), seek(), subStreamCount(), subStreamName(), tell(), unBinHex(), unMacMIME(), unsplitInternalMergeStream(), unzipStream(), and updateStreamSize().
|
protected |
the stream size
Referenced by checkPosition(), pushLimit(), readDouble10(), readDouble8(), readDoubleReverted8(), recomputeStreamSize(), seek(), size(), and updateStreamSize().