#pragma once
#ifndef TCODEC_INCLUDED
#define TCODEC_INCLUDED
#include "traster.h"
#undef DVAPI
#undef DVVAR
#ifdef TRASTERIMAGE_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
//------------------------------------------------------------------------------
class DVAPI TRasterCodec {
public:
TRasterCodec(const std::string &name) : m_name(name) {}
virtual ~TRasterCodec() {}
// virtual int getMaxCompressionSize(int size) = 0;
// virtual void compress (const TRasterP &inRas, int allocUnit, UCHAR**
// outData, TINT32 &outDataSize) = 0;
// virtual void decompress(const UCHAR* inData, TINT32 inDataSize, TRasterP
// &outRas) = 0;
// virtual int getHeaderSize() = 0;
// virtual UCHAR *removeHeader(const UCHAR* inData, TINT32 inDataSize, TINT32
// &outDataSize, int &lx, int &ly) = 0;
static TRasterCodec *create(const std::string &name);
private:
std::string m_name;
};
//------------------------------------------------------------------------------
class DVAPI TRasterCodecDummy final : public TRasterCodec {
public:
TRasterCodecDummy(const std::string &name) : TRasterCodec(name) {}
~TRasterCodecDummy() {}
// int getMaxCompressionSize(int size);
// void compress(const TRasterP &inRas, int allocUnit, UCHAR** outData, TINT32
// &outDataSize);
// void decompress(const UCHAR* inData, TINT32 inDataSize, TRasterP &outRas);
// int getHeaderSize();
// UCHAR *removeHeader(const UCHAR* inData, TINT32 inDataSize, TINT32
// &outDataSize, int &lx, int &ly);
// static TRasterCodec *create(const std::string &name);
};
//------------------------------------------------------------------------------
class DVAPI TRasterCodecQTL final : public TRasterCodec {
public:
TRasterCodecQTL(const std::string &name) : TRasterCodec(name) {}
~TRasterCodecQTL() {}
// int getMaxCompressionSize(int size);
// void compress (const TRasterP &inRas, int allocUnit, UCHAR** outData,
// TINT32 &outDataSize);
// void decompress(const UCHAR* inData, TINT32 inDataSize, TRasterP &outRas);
// UCHAR *removeHeader(const UCHAR* inData, TINT32 inDataSize, TINT32
// &outDataSize, int &lx, int &ly);
// int getHeaderSize();
// static TRasterCodec *create(const std::string &name);
};
//------------------------------------------------------------------------------
/*class DVAPI TRasterCodecSnappy final : public TRasterCodec
{
public:
TRasterCodecSnappy(const std::string &name, bool useCache);
~TRasterCodecSnappy();
TRasterP compress(const TRasterP &inRas, int allocUnit, TINT32 &outDataSize);
bool decompress(const UCHAR* inData, TINT32 inDataSize, TRasterP &outRas, bool
safeMode);
void decompress(const TRasterP & compressedRas, TRasterP &outRas);
void reset() { if (m_useCache) return; m_raster=TRasterGR8P(); }
private:
TRasterGR8P m_raster;
string m_cacheId;
bool m_useCache;
private:
UINT doCompress(const TRasterP &inRas, int allocUnit, TRasterGR8P& outRas);
};*/
//------------------------------------------------------------------------------
class DVAPI TRasterCodecLz4 : public TRasterCodec {
public:
TRasterCodecLz4(const std::string &name, bool useCache);
~TRasterCodecLz4();
TRasterP compress(const TRasterP &inRas, int allocUnit, TINT32 &outDataSize);
bool decompress(const UCHAR *inData, TINT32 inDataSize, TRasterP &outRas,
bool safeMode);
void decompress(const TRasterP &compressedRas, TRasterP &outRas);
void reset() {
if (m_useCache) return;
m_raster = TRasterGR8P();
}
private:
TRasterGR8P m_raster;
std::string m_cacheId;
bool m_useCache;
private:
UINT doCompress(const TRasterP &inRas, int allocUnit, TRasterGR8P &outRas);
};
//------------------------------------------------------------------------------
class DVAPI TRasterCodecLZO final : public TRasterCodec {
public:
TRasterCodecLZO(const std::string &name, bool useCache);
~TRasterCodecLZO();
TRasterP compress(const TRasterP &inRas, int allocUnit, TINT32 &outDataSize);
bool decompress(const UCHAR *inData, TINT32 inDataSize, TRasterP &outRas,
bool safeMode);
void decompress(const TRasterP &compressedRas, TRasterP &outRas);
void reset() {
if (m_useCache) return;
m_raster = TRasterGR8P();
}
private:
TRasterGR8P m_raster;
std::string m_cacheId;
bool m_useCache;
private:
UINT doCompress(const TRasterP &inRas, int allocUnit, TRasterGR8P &outRas);
};
#endif