mirror of
https://github.com/pocoproject/poco.git
synced 2025-01-28 20:41:31 +01:00
136 lines
3.9 KiB
C++
136 lines
3.9 KiB
C++
//
|
|
// Encoder.h
|
|
//
|
|
// $Id: //poco/Main/PDF/include/Poco/PDF/Encoder.h#4 $
|
|
//
|
|
// Library: PDF
|
|
// Package: PDFCore
|
|
// Module: Encoder
|
|
//
|
|
// Definition of the Encoder class.
|
|
//
|
|
// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
|
|
// and Contributors.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person or organization
|
|
// obtaining a copy of the software and accompanying documentation covered by
|
|
// this license (the "Software") to use, reproduce, display, distribute,
|
|
// execute, and transmit the Software, and to prepare derivative works of the
|
|
// Software, and to permit third-parties to whom the Software is furnished to
|
|
// do so, all subject to the following:
|
|
//
|
|
// The copyright notices in the Software and this entire statement, including
|
|
// the above license grant, this restriction and the following disclaimer,
|
|
// must be included in all copies of the Software, in whole or in part, and
|
|
// all derivative works of the Software, unless such copies or derivative
|
|
// works are solely in the form of machine-executable object code generated by
|
|
// a source language processor.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
|
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
|
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
|
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
// DEALINGS IN THE SOFTWARE.
|
|
//
|
|
|
|
|
|
#ifndef PDF_Encoder_INCLUDED
|
|
#define PDF_Encoder_INCLUDED
|
|
|
|
|
|
#include "Poco/PDF/PDF.h"
|
|
#include "Poco/PDF/Resource.h"
|
|
#include "Poco/Exception.h"
|
|
|
|
|
|
namespace Poco {
|
|
namespace PDF {
|
|
|
|
|
|
class PDF_API Encoder: public Resource<HPDF_Encoder>
|
|
/// Encoder class represents encoder resource.
|
|
{
|
|
public:
|
|
enum Type
|
|
{
|
|
ENCODER_TYPE_SINGLE_BYTE = HPDF_ENCODER_TYPE_SINGLE_BYTE,
|
|
/// This encoder is an encoder for single byte characters.
|
|
ENCODER_TYPE_DOUBLE_BYTE = HPDF_ENCODER_TYPE_DOUBLE_BYTE,
|
|
/// This encoder is an encoder for multi byte characters.
|
|
ENCODER_TYPE_UNINITIALIZED = HPDF_ENCODER_TYPE_UNINITIALIZED,
|
|
/// This encoder is uninitialized. (May be it is an encoder for multi byte characters.)
|
|
ENCODER_TYPE_UNKNOWN = HPDF_ENCODER_UNKNOWN
|
|
/// Invalid encoder.
|
|
};
|
|
|
|
enum ByteType
|
|
{
|
|
ENCODER_BYTE_TYPE_SINGLE = HPDF_BYTE_TYPE_SINGLE,
|
|
/// Single byte character.
|
|
ENCODER_BYTE_TYPE_LEAD = HPDF_BYTE_TYPE_LEAD,
|
|
/// Lead byte of a double-byte character.
|
|
ENCODER_BYTE_TYPE_TRIAL = HPDF_BYTE_TYPE_TRIAL,
|
|
/// Trailing byte of a double-byte character.
|
|
ENCODER_BYTE_TYPE_UNKNOWN = HPDF_BYTE_TYPE_UNKNOWN
|
|
/// Invalid encoder or cannot judge the byte type.
|
|
};
|
|
|
|
enum WriteMode
|
|
{
|
|
WRITE_MODE_HORIZONTAL = HPDF_WMODE_HORIZONTAL,
|
|
/// Horizontal writing mode.
|
|
WRITE_MODE_VERTICAL = HPDF_WMODE_VERTICAL
|
|
/// Vertical writing mode;
|
|
};
|
|
|
|
Encoder(HPDF_Doc* pPDF, const HPDF_Encoder& resource, const std::string& name = "");
|
|
/// Creates the encoder.
|
|
|
|
~Encoder();
|
|
/// Destroys the encoder.
|
|
|
|
Type getType() const;
|
|
/// Returns the type of an encoding object.
|
|
|
|
ByteType getByteType(const std::string& text, int index = 0) const;
|
|
/// Returns the type of byte in the text at position index
|
|
|
|
WriteMode writeMode();
|
|
/// Returns the writing mode for the encoding object.
|
|
};
|
|
|
|
|
|
//
|
|
// inlines
|
|
//
|
|
|
|
inline Encoder::Type Encoder::getType() const
|
|
{
|
|
return static_cast<Type>(HPDF_Encoder_GetType(handle()));
|
|
}
|
|
|
|
|
|
inline Encoder::ByteType Encoder::getByteType(const std::string& text, int index) const
|
|
{
|
|
if (index < 0)
|
|
throw InvalidArgumentException("Negative values not allowed.");
|
|
|
|
return static_cast<ByteType>(HPDF_Encoder_GetByteType(handle(),
|
|
text.c_str(),
|
|
static_cast<HPDF_UINT>(index)));
|
|
}
|
|
|
|
|
|
inline Encoder::WriteMode Encoder::writeMode()
|
|
{
|
|
return static_cast<WriteMode>(HPDF_Encoder_GetWritingMode(handle()));
|
|
}
|
|
|
|
|
|
} } // namespace Poco::PDF
|
|
|
|
|
|
#endif // PDF_Encoder_INCLUDED
|