/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* This file is part of the libpagemaker project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef __PMDRECORD_H__
#define __PMDRECORD_H__
#include <stdint.h>
#include <vector>
#include <boost/optional.hpp>
#include <librevenge/librevenge.h>
#include "constants.h"
namespace libpagemaker
{
struct PMDRecordContainer
{
uint16_t m_recordType;
uint32_t m_offset;
unsigned m_seqNum;
uint16_t m_numRecords;
PMDRecordContainer(uint16_t recordType, uint32_t offset, unsigned seqNum, uint16_t numRecords)
: m_recordType(recordType), m_offset(offset), m_seqNum(seqNum),
m_numRecords(numRecords)
{ }
};
inline boost::optional<unsigned> getRecordSize(uint16_t recType)
{
switch (recType)
{
case SHAPE:
return 258;
case GLOBAL_INFO:
return 2496;
case PAGE:
return 472;
case LINE_SET:
return 4;
case XFORM:
return 26;
case TEXT_BLOCK:
return 36;
case CHARS:
return 30;
case PARA:
return 80;
case FONTS:
return 94;
case FONTS_PARENT:
return 10;
case COLORS:
return 210;
default:
return boost::none;
}
}
}
#endif /* __PMDRECORD_H__ */
/* vim:set shiftwidth=2 softtabstop=2 expandtab: */