libwps_internal.h File Reference
#include <assert.h>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <map>
#include <memory>
#include <string>
#include <vector>
#include <librevenge-stream/librevenge-stream.h>
#include <librevenge/librevenge.h>
#include <inttypes.h>

Go to the source code of this file.

Classes

struct  WPS_shared_ptr_noop_deleter< T >
 a noop deleter used to transform a librevenge pointer in a false std::shared_ptr More...
 
class  libwps::VersionException
 
class  libwps::FileException
 
class  libwps::ParseException
 
class  libwps::PasswordException
 
class  libwps::GenericException
 
struct  WPSColumnDefinition
 
struct  WPSColumnProperties
 
struct  WPSColor
 the class to store a color More...
 
struct  WPSBorder
 a border list More...
 
struct  WPSField
 a field More...
 
class  Vec2< T >
 small class which defines a vector with 2 elements More...
 
struct  Vec2< T >::PosSizeLtX
 internal struct used to create sorted map, sorted by X More...
 
struct  Vec2< T >::PosSizeLtY
 internal struct used to create sorted map, sorted by Y More...
 
class  WPSBox2< T >
 small class which defines a 2D WPSBox More...
 
struct  WPSBox2< T >::PosSizeLt
 internal struct used to create sorted map, sorted first min then max More...
 
class  WPSVec3< T >
 small class which defines a vector with 3 elements More...
 
struct  WPSVec3< T >::PosSizeLt
 internal struct used to create sorted map, sorted by X, Y, Z More...
 
struct  WPSEmbeddedObject
 small class use to define a embedded object More...
 
class  WPSTransformation
 a transformation which stored the first row of a 3x3 perspective matrix More...
 

Namespaces

namespace  libwps
 

Macros

#define M_PI   3.14159265358979323846
 
#define WPS_FALLTHROUGH   ((void) 0)
 fall through attributes
 
#define WPS_ATTRIBUTE_PRINTF(fmt, arg)
 
#define WPS_N_ELEMENTS(m)   sizeof(m)/sizeof(m[0])
 
#define WPS_DEBUG_MSG(M)
 
#define WPS_LE_GET_GUINT16(p)
 
#define WPS_LE_GET_GUINT32(p)
 
#define WPS_LE_PUT_GUINT16(p, v)
 
#define WPS_LE_PUT_GUINT32(p, v)
 
#define WPS_EXTRA_LARGE_BIT   1
 
#define WPS_VERY_LARGE_BIT   2
 
#define WPS_LARGE_BIT   4
 
#define WPS_SMALL_PRINT_BIT   8
 
#define WPS_FINE_PRINT_BIT   0x10
 
#define WPS_SUPERSCRIPT_BIT   0x20
 
#define WPS_SUBSCRIPT_BIT   0x40
 
#define WPS_OUTLINE_BIT   0x80
 
#define WPS_ITALICS_BIT   0x100
 
#define WPS_SHADOW_BIT   0x200
 
#define WPS_REDLINE_BIT   0x400
 
#define WPS_DOUBLE_UNDERLINE_BIT   0x800
 
#define WPS_BOLD_BIT   0x1000
 
#define WPS_STRIKEOUT_BIT   0x2000
 
#define WPS_UNDERLINE_BIT   0x4000
 
#define WPS_SMALL_CAPS_BIT   0x8000
 
#define WPS_BLINK_BIT   0x10000L
 
#define WPS_REVERSEVIDEO_BIT   0x20000L
 
#define WPS_ALL_CAPS_BIT   0x40000L
 
#define WPS_EMBOSS_BIT   0x80000L
 
#define WPS_ENGRAVE_BIT   0x100000L
 
#define WPS_OVERLINE_BIT   0x400000L
 
#define WPS_HIDDEN_BIT   0x800000L
 
#define WPS_PAGE_BREAK   0x00
 
#define WPS_SOFT_PAGE_BREAK   0x01
 
#define WPS_COLUMN_BREAK   0x02
 
#define WPS_LEFT   0x00
 
#define WPS_RIGHT   0x01
 
#define WPS_CENTER   0x02
 
#define WPS_TOP   0x03
 
#define WPS_BOTTOM   0x04
 

Typedefs

typedef std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr
 shared pointer to librevenge::RVNGInputStream
 
typedef std::shared_ptr< WPSCellWPSCellPtr
 shared pointer to WPSCell
 
typedef std::shared_ptr< WPSListenerWPSListenerPtr
 shared pointer to WPSListener
 
typedef std::shared_ptr< WPSContentListenerWPSContentListenerPtr
 shared pointer to WPSContentListener
 
typedef std::shared_ptr< WPSHeaderWPSHeaderPtr
 shared pointer to WPSHeader
 
typedef std::shared_ptr< WPSSubDocumentWPSSubDocumentPtr
 shared pointer to WPSSubDocument
 
typedef std::shared_ptr< WKSContentListenerWKSContentListenerPtr
 shared pointer to WKSContentListener
 
typedef std::shared_ptr< WKSSubDocumentWKSSubDocumentPtr
 shared pointer to WKSSubDocument
 
typedef Vec2< boolVec2b
 Vec2 of bool.
 
typedef Vec2< intVec2i
 Vec2 of int.
 
typedef Vec2< floatVec2f
 Vec2 of float.
 
typedef WPSBox2< intWPSBox2i
 WPSBox2 of int.
 
typedef WPSBox2< floatWPSBox2f
 WPSBox2 of float.
 
typedef WPSVec3< unsigned charWPSVec3uc
 WPSVec3 of unsigned char.
 
typedef WPSVec3< intWPSVec3i
 WPSVec3 of int.
 
typedef WPSVec3< floatWPSVec3f
 WPSVec3 of float.
 

Enumerations

enum  libwps::NumberingType {
  libwps::NONE , libwps::BULLET , libwps::ARABIC , libwps::LOWERCASE ,
  libwps::UPPERCASE , libwps::LOWERCASE_ROMAN , libwps::UPPERCASE_ROMAN
}
 
enum  libwps::SubDocumentType {
  libwps::DOC_NONE , libwps::DOC_HEADER_FOOTER , libwps::DOC_NOTE , libwps::DOC_TABLE ,
  libwps::DOC_TEXT_BOX , libwps::DOC_COMMENT_ANNOTATION , libwps::DOC_CHART_ZONE
}
 
enum  libwps::Justification {
  libwps::JustificationLeft , libwps::JustificationFull , libwps::JustificationCenter , libwps::JustificationRight ,
  libwps::JustificationFullAllLines
}
 
enum  { libwps::NoBreakBit = 0x1 , libwps::NoBreakWithNextBit =0x2 }
 

Functions

uint8_t libwps::readU8 (librevenge::RVNGInputStream *input)
 
uint16_t libwps::readU16 (librevenge::RVNGInputStream *input)
 
uint32_t libwps::readU32 (librevenge::RVNGInputStream *input)
 
int8_t libwps::read8 (librevenge::RVNGInputStream *input)
 
int16_t libwps::read16 (librevenge::RVNGInputStream *input)
 
int32_t libwps::read32 (librevenge::RVNGInputStream *input)
 
uint8_t libwps::readU8 (RVNGInputStreamPtr const &input)
 
uint16_t libwps::readU16 (RVNGInputStreamPtr const &input)
 
uint32_t libwps::readU32 (RVNGInputStreamPtr const &input)
 
int8_t libwps::read8 (RVNGInputStreamPtr const &input)
 
int16_t libwps::read16 (RVNGInputStreamPtr const &input)
 
int32_t libwps::read32 (RVNGInputStreamPtr const &input)
 
bool libwps::readDouble4 (RVNGInputStreamPtr &input, double &res, bool &isNaN)
 read a double store with 4 bytes: mantisse 2.5 bytes, exponent 1.5 bytes
 
bool libwps::readDouble8 (RVNGInputStreamPtr &input, double &res, bool &isNaN)
 read a double store with 8 bytes: mantisse 6.5 bytes, exponent 1.5 bytes
 
bool libwps::readDouble10 (RVNGInputStreamPtr &input, double &res, bool &isNaN)
 read a double store with 10 bytes: mantisse 8 bytes, exponent 2 bytes
 
bool libwps::readDouble2Inv (RVNGInputStreamPtr &input, double &res, bool &isNaN)
 read a double store with 2 bytes: exponent 1.5 bytes, kind of mantisse 0.5 bytes
 
bool libwps::readDouble4Inv (RVNGInputStreamPtr &input, double &res, bool &isNaN)
 read a double store with 4 bytes: exponent 3.5 bytes, mantisse 0.5 bytes
 
bool libwps::readData (RVNGInputStreamPtr &input, unsigned long sz, librevenge::RVNGBinaryData &data)
 try to read sz bytes from input and store them in a librevenge::RVNGBinaryData
 
bool libwps::readDataToEnd (RVNGInputStreamPtr &input, librevenge::RVNGBinaryData &data)
 try to read the last bytes from input and store them in a librevenge::RVNGBinaryData
 
void libwps::appendUnicode (uint32_t val, librevenge::RVNGString &buffer)
 adds an unicode character to a string ( with correct encoding ).
 
std::string libwps::numberingTypeToString (NumberingType type)
 
std::string libwps::getCellName (Vec2i const &cellPos, Vec2b const &relative=Vec2b(true, true))
 returns the cell name corresponding to a cell's position
 
bool libwps::encodeLotusPassword (char const *password, uint16_t &key, std::vector< uint8_t > &keys, uint8_t const (&defValues)[16])
 returns the checksum and the keys (to encode a lotus file) given a password file
 

Macro Definition Documentation

◆ M_PI

#define M_PI   3.14159265358979323846

◆ WPS_ALL_CAPS_BIT

#define WPS_ALL_CAPS_BIT   0x40000L

◆ WPS_ATTRIBUTE_PRINTF

#define WPS_ATTRIBUTE_PRINTF (   fmt,
  arg 
)

◆ WPS_BLINK_BIT

#define WPS_BLINK_BIT   0x10000L

◆ WPS_BOLD_BIT

#define WPS_BOLD_BIT   0x1000

◆ WPS_BOTTOM

#define WPS_BOTTOM   0x04

◆ WPS_CENTER

#define WPS_CENTER   0x02

◆ WPS_COLUMN_BREAK

#define WPS_COLUMN_BREAK   0x02

◆ WPS_DEBUG_MSG

#define WPS_DEBUG_MSG (   M)

◆ WPS_DOUBLE_UNDERLINE_BIT

#define WPS_DOUBLE_UNDERLINE_BIT   0x800

◆ WPS_EMBOSS_BIT

#define WPS_EMBOSS_BIT   0x80000L

◆ WPS_ENGRAVE_BIT

#define WPS_ENGRAVE_BIT   0x100000L

◆ WPS_EXTRA_LARGE_BIT

#define WPS_EXTRA_LARGE_BIT   1

◆ WPS_FALLTHROUGH

#define WPS_FALLTHROUGH   ((void) 0)

fall through attributes

◆ WPS_FINE_PRINT_BIT

#define WPS_FINE_PRINT_BIT   0x10

◆ WPS_HIDDEN_BIT

#define WPS_HIDDEN_BIT   0x800000L

◆ WPS_ITALICS_BIT

#define WPS_ITALICS_BIT   0x100

◆ WPS_LARGE_BIT

#define WPS_LARGE_BIT   4

◆ WPS_LE_GET_GUINT16

#define WPS_LE_GET_GUINT16 (   p)
Value:
uint16_t(((reinterpret_cast<uint8_t const *>(p))[0] << 0) | \
((reinterpret_cast<uint8_t const *>(p))[1] << 8))
small class which defines a vector with 2 elements
Definition libwps_internal.h:535

◆ WPS_LE_GET_GUINT32

#define WPS_LE_GET_GUINT32 (   p)
Value:
uint32_t(((reinterpret_cast<uint8_t const *>(p))[0] << 0) | \
((reinterpret_cast<uint8_t const *>(p))[1] << 8) | \
((reinterpret_cast<uint8_t const *>(p))[2] << 16) | \
((reinterpret_cast<uint8_t const *>(p))[3] << 24))

◆ WPS_LE_PUT_GUINT16

#define WPS_LE_PUT_GUINT16 (   p,
  v 
)
Value:
*(reinterpret_cast<uint8_t*>(p)) = uint8_t(v); \
*((reinterpret_cast<uint8_t*>(p)) + 1) = uint8_t((v) >> 8)

◆ WPS_LE_PUT_GUINT32

#define WPS_LE_PUT_GUINT32 (   p,
  v 
)
Value:
*(reinterpret_cast<uint8_t*>(p)) = uint8_t(v); \
*((reinterpret_cast<uint8_t*>(p)) + 1) = uint8_t((v) >> 8); \
*((reinterpret_cast<uint8_t*>(p)) + 2) = uint8_t((v) >> 16); \
*((reinterpret_cast<uint8_t*>(p)) + 3) = uint8_t((v) >> 24)

◆ WPS_LEFT

#define WPS_LEFT   0x00

◆ WPS_N_ELEMENTS

#define WPS_N_ELEMENTS (   m)    sizeof(m)/sizeof(m[0])

◆ WPS_OUTLINE_BIT

#define WPS_OUTLINE_BIT   0x80

◆ WPS_OVERLINE_BIT

#define WPS_OVERLINE_BIT   0x400000L

◆ WPS_PAGE_BREAK

#define WPS_PAGE_BREAK   0x00

◆ WPS_REDLINE_BIT

#define WPS_REDLINE_BIT   0x400

◆ WPS_REVERSEVIDEO_BIT

#define WPS_REVERSEVIDEO_BIT   0x20000L

◆ WPS_RIGHT

#define WPS_RIGHT   0x01

◆ WPS_SHADOW_BIT

#define WPS_SHADOW_BIT   0x200

◆ WPS_SMALL_CAPS_BIT

#define WPS_SMALL_CAPS_BIT   0x8000

◆ WPS_SMALL_PRINT_BIT

#define WPS_SMALL_PRINT_BIT   8

◆ WPS_SOFT_PAGE_BREAK

#define WPS_SOFT_PAGE_BREAK   0x01

◆ WPS_STRIKEOUT_BIT

#define WPS_STRIKEOUT_BIT   0x2000

◆ WPS_SUBSCRIPT_BIT

#define WPS_SUBSCRIPT_BIT   0x40

◆ WPS_SUPERSCRIPT_BIT

#define WPS_SUPERSCRIPT_BIT   0x20

◆ WPS_TOP

#define WPS_TOP   0x03

◆ WPS_UNDERLINE_BIT

#define WPS_UNDERLINE_BIT   0x4000

◆ WPS_VERY_LARGE_BIT

#define WPS_VERY_LARGE_BIT   2

Typedef Documentation

◆ RVNGInputStreamPtr

typedef std::shared_ptr<librevenge::RVNGInputStream> RVNGInputStreamPtr

shared pointer to librevenge::RVNGInputStream

◆ Vec2b

Vec2 of bool.

◆ Vec2f

Vec2 of float.

◆ Vec2i

◆ WKSContentListenerPtr

◆ WKSSubDocumentPtr

◆ WPSBox2f

◆ WPSBox2i

◆ WPSCellPtr

◆ WPSContentListenerPtr

◆ WPSHeaderPtr

◆ WPSListenerPtr

◆ WPSSubDocumentPtr

◆ WPSVec3f

◆ WPSVec3i

◆ WPSVec3uc


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