Qt LZO类别使用说明
目录
- QtLzo类别
- ScriptableLzo类别
- QtLzo函数
QtLzo类别
功能
处理数据的LZO压缩及解压缩功能。
宣告
class QtLzo
{
public:
typedef enum {
LZO1x = 1 ,
LZO1 = 2 ,
LZO1_99 = 3 ,
LZO1a = 4 ,
LZO1a_99 = 5 ,
LZO1b = 6 ,
LZO1b_99 = 7 ,
LZO1b_999 = 8 ,
LZO1c = 9 ,
LZO1c_99 = 10 ,
LZO1c_999 = 11 ,
LZO1f_1 = 12 ,
LZO1f_999 = 13 ,
LZO1x_1 = 14 ,
LZO1x_1_11 = 15 ,
LZO1x_1_12 = 16 ,
LZO1x_1_15 = 17 ,
LZO1x_999 = 18 ,
LZO1y_1 = 19 ,
LZO1y_999 = 20 ,
LZO1z_999 = 21 ,
LZO2a_999 = 22 }
LzoMethods ;
explicit QtLzo (void) ;
virtual ~QtLzo (void) ;
virtual bool isLZO (QByteArray & header) ;
virtual void CleanUp (void) ;
virtual bool IsCorrect (int returnCode) ;
virtual bool IsEnd (int returnCode) ;
virtual bool IsFault (int returnCode) ;
virtual int BeginCompress (int level = 9,int method = LZO1x) ;
virtual int BeginCompress (QVariantList arguments = QVariantList() ) ;
virtual int doCompress (const QByteArray & Source ,
QByteArray & Compressed) ;
virtual int doSection ( QByteArray & Source ,
QByteArray & Compressed) ;
virtual int CompressDone (QByteArray & Compressed) ;
virtual int BeginDecompress (void) ;
virtual int doDecompress (const QByteArray & Source ,
QByteArray & Decompressed) ;
virtual int undoSection ( QByteArray & Source ,
QByteArray & Decompressed) ;
virtual int DecompressDone (void) ;
virtual bool IsTail (QByteArray & header) ;
protected:
void * LzoPacket ;
virtual void CompressHeader (QByteArray & Compressed) ;
virtual void CompressTail (unsigned int checksum,QByteArray & Compressed) ;
virtual int DecompressHeader (const QByteArray & Source) ;
private:
};
说明
列举型态
LzoMethods
名称
|
值
|
作用
|
LZO1x
|
1
|
使用LZO1 X压缩函式。
|
LZO1
|
2
|
使用LZO1通用压缩函式。 |
LZO1_99
|
3
|
使用LZO1-99压缩函式。 |
LZO1a
|
4
|
使用LZO1a通用压缩函式。 |
LZO1a_99
|
5
|
使用LZO1a-99压缩函式。 |
LZO1b
|
6
|
使用LZO1b通用压缩函式。 |
LZO1b_99
|
7
|
使用LZO1b-99压缩函式。 |
LZO1b_999
|
8
|
使用LZO1b-999压缩函式。 |
LZO1c
|
9
|
使用LZO1c通用压缩函式。 |
LZO1c_99
|
10
|
使用LZO1c-99压缩函式。 |
LZO1c_999
|
11
|
使用LZO1c-999压缩函式。 |
LZO1f_1
|
12
|
使用LZO1f-1压缩函式。 |
LZO1f_999
|
13
|
使用LZO1f-999压缩函式。 |
LZO1x_1
|
14
|
使用LZO1x-1压缩函式。 |
LZO1x_1_11
|
15
|
使用LZO1x-1-11压缩函式。 |
LZO1x_1_12
|
16
|
使用LZO1x-1-12压缩函式。 |
LZO1x_1_15
|
17
|
使用LZO1x-1-15压缩函式。 |
LZO1x_999
|
18
|
使用LZO1x-999压缩函式。 |
LZO1y_1
|
19
|
使用LZO1y-1压缩函式。 |
LZO1y_999
|
20
|
使用LZO1y-999压缩函式。 |
LZO1z_999
|
21
|
使用LZO1z-999压缩函式。 |
LZO2a_999
|
22
|
使用LZO2a-999压缩函式。 |
bool isLZO(QByteArray & header)
判断header数据是否为LZO的表头。
LZO的表头为7个位元组,如下:
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
0x00
|
0xE9
|
0x4C
|
0x5A
|
0x4F
|
0xFF
|
0x1A
|
|
void CleanUp (void)
清除LzoPacket以便重覆使用。如果您需要重覆使用QtLzo类别内的函式,第二次使用时,最好呼叫一次CleanUp()。
bool IsCorrect(int returnCode)
判断压缩或解压缩时期的返回码是否为操作正确的返回码。
bool IsEnd(int returnCode)
判断操作时期的返回码是否为压缩或是解压缩完成。
bool IsFault(int returnCode)
判断操作时期的返回码是否为发生严重错误的状况。
int BeginCompress(int level,int method) ;
设定压缩的参数。
- level : 1~9,内定值为9。
- method : lzoMethods,内定值为LZO1x。
int BeginCompress(QVariantList arguments)
设定压缩的参数。
- level : 1~9,内定值为9。
- method : lzoMethods,内定值为LZO1x。
- blocks : 每个区块的大小,内定值为8192。
- output length : 输出长度,内定值为0。
int doCompress(const QByteArray & Source,QByteArray & Compressed)
将Source压缩到Compressed,成为LZO压缩数据格式。这个函式只需要使用一次,整个数据封包会被包装成完整的LZO文件数据,主
要使用于确定原始数据大小的状况下使用。
返回值为操作码。
int doSection(QByteArray & Source,QByteArray & Compressed)
将Source压缩到Compressed,成为LZO压缩数据格式。这个函式是将数据拆成小包的数据分解来压缩,主要使用于不确定原始数据大小
的状况下使用,例如使用于网路即时传输用途时。
完成时需要呼叫CompressDone函式。
这个函式会将Source的数据由前面开始移除,移除的数据是已经完成压缩的原始数据。
返回值为操作码。
int CompressDone(QByteArray & Compressed)
使用doSection的压缩方式时,数据完成时,需要呼叫这个函式来写入结尾。
int BeginDecompress(void)
准备开始解压缩。
int doDecompress(const QByteArray & Source,QByteArray & Decompressed)
将压缩的原始数据Source解压缩到Decompressed,Source基本上是个完整的LZO文件。
返回值为操作码。
int undoSection(QByteArray & Source,QByteArray & Decompressed)
将压缩的原始数据Source解压缩到Decompressed,成为原始数据。这个函式是将数据拆成小包的数据分解来解压缩,主要使用于不确定
原始数据大小的状况下使用,例如使用于网路即时传输用途时。
完成时需要呼叫DecompressDone函式。
这个函式会将Source的数据由前面开始移除,移除的数据是已经完成解压缩的LZO数据。
返回值为操作码。
int DecompressDone(void)
解压缩完成时,需要呼叫这个函式。
bool IsTail(QByteArray & header)
判断是否为LZO文件格式的结尾。
void CompressHeader(QByteArray & Compressed)
製作LZO压缩文件格式表头。
void CompressTail(unsigned int checksum,QByteArray & Compressed)
製作LZO压缩文件格式结尾。checksum是ADLER32。
int DecompressHeader(const QByteArray & Source)
检查Source是否为LZO文件表头,并且返回数据开始的位置。
ScriptableLzo类别
功能
Qt Script的Javascript当中,处理LZO文件的压缩及解压缩。
宣告
class ScriptableLzo : public QObject
, public QScriptable
, public QtLzo
{
Q_OBJECT
public:
explicit ScriptableLzo (QObject * parent) ;
virtual ~ScriptableLzo (void) ;
protected:
private:
public slots:
virtual bool ToLzo (QString file,QString lzo,int level = 9,int method = QtLzo::LZO1x) ;
virtual bool ToFile (QString lzo,QString file) ;
protected slots:
private slots:
signals:
};
说明
bool ToLzo(QString file,QString lzo,int level,int method)
将文件file压缩成lzo档,成功则返回true,失败则返回false。
参数说明:
- file : 原始文件。
- lzo : LZO压缩档。
- level : 1 ~ 9,内定值为9。
- method : lzoMethods,内定值为LZO1x。
bool ToFile(QString lzo,QString file)
将lzo文件解压缩成file,成功则返回true,失败则返回false。
QtLzo函数
Qt LZO目前提供六个函数。
- bool ToLZO (const QByteArray & data,QByteArray & lzo,int level = 9,int method = QtLzo::LZO1x)
- bool FromLZO (const QByteArray & lzo ,QByteArray & data)
- bool SaveLZO (QString filename,QByteArray & data,int level = 9,int method = QtLzo::LZO1x)
- bool LoadLZO (QString filename,QByteArray & data)
- bool FileToLzo (QString file,QString lzo,int level =
9,int method = QtLzo::LZO1x)
- bool LzoToFile (QString lzo,QString file)
说明
bool ToLZO (const
QByteArray & data,QByteArray & lzo,int level,int method)
将数据压缩成LZO压缩格式,成功则返回true,失败则返回false。
参数说明:
- data : 原始数据。
- lzo : LZO压缩数据。
- level : 1 ~ 9,内定值为9。
- method : lzoMethods,内定值为LZO1x。
bool FromLZO (const
QByteArray & lzo
,QByteArray &
data)
将LZO数据解压缩成原始数据,成功则返回true,失败则返回false。
参数说明:
- lzo : LZO压缩数据。
- data : 原始数据。
bool SaveLZO (QString filename,QByteArray & data,int level,int method)
将数据压缩成LZO压缩格式,并储存到文件中,成功则返回true,失败则返回false。
参数说明:
- filename : LZO文件名称。
- data : 原始数据。
- level : 1 ~ 9,内定值为9。
- method : lzoMethods,内定值为LZO1x。
bool LoadLZO (QString filename,QByteArray & data)
将LZO文件解压缩成原始数据,成功则返回true,失败则返回false。
参数说明:
- filename : LZO文件名称。
- data : 原始数据。
bool FileToLzo (QString file,QString lzo,int level,int method)
将文件file压缩成lzo档,成功则返回true,失败则返回false。
参数说明:
- file : 原始文件。
- lzo : LZO压缩档。
- level : 1 ~ 9,内定值为9。
- method : lzoMethods,内定值为LZO1x。
bool LzoToFile (QString lzo,QString file)
将lzo文件解压缩成file,成功则返回true,失败则返回false。
Neutrino
International Inc. 2001~2015