summaryrefslogtreecommitdiffstats
path: root/utils/rbutilqt/mspack/chm.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rbutilqt/mspack/chm.h')
-rw-r--r--utils/rbutilqt/mspack/chm.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/utils/rbutilqt/mspack/chm.h b/utils/rbutilqt/mspack/chm.h
new file mode 100644
index 0000000000..4b19f1505a
--- /dev/null
+++ b/utils/rbutilqt/mspack/chm.h
@@ -0,0 +1,122 @@
+/* This file is part of libmspack.
+ * (C) 2003-2004 Stuart Caie.
+ *
+ * libmspack is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1
+ *
+ * For further details, see the file COPYING.LIB distributed with libmspack
+ */
+
+#ifndef MSPACK_CHM_H
+#define MSPACK_CHM_H 1
+
+#include "lzx.h"
+
+/* generic CHM definitions */
+
+#define chmhead_Signature (0x0000)
+#define chmhead_Version (0x0004)
+#define chmhead_HeaderLen (0x0008)
+#define chmhead_Unknown1 (0x000C)
+#define chmhead_Timestamp (0x0010)
+#define chmhead_LanguageID (0x0014)
+#define chmhead_GUID1 (0x0018)
+#define chmhead_GUID2 (0x0028)
+#define chmhead_SIZEOF (0x0038)
+
+#define chmhst_OffsetHS0 (0x0000)
+#define chmhst_LengthHS0 (0x0008)
+#define chmhst_OffsetHS1 (0x0010)
+#define chmhst_LengthHS1 (0x0018)
+#define chmhst_SIZEOF (0x0020)
+#define chmhst3_OffsetCS0 (0x0020)
+#define chmhst3_SIZEOF (0x0028)
+
+#define chmhs0_Unknown1 (0x0000)
+#define chmhs0_Unknown2 (0x0004)
+#define chmhs0_FileLen (0x0008)
+#define chmhs0_Unknown3 (0x0010)
+#define chmhs0_Unknown4 (0x0014)
+#define chmhs0_SIZEOF (0x0018)
+
+#define chmhs1_Signature (0x0000)
+#define chmhs1_Version (0x0004)
+#define chmhs1_HeaderLen (0x0008)
+#define chmhs1_Unknown1 (0x000C)
+#define chmhs1_ChunkSize (0x0010)
+#define chmhs1_Density (0x0014)
+#define chmhs1_Depth (0x0018)
+#define chmhs1_IndexRoot (0x001C)
+#define chmhs1_FirstPMGL (0x0020)
+#define chmhs1_LastPMGL (0x0024)
+#define chmhs1_Unknown2 (0x0028)
+#define chmhs1_NumChunks (0x002C)
+#define chmhs1_LanguageID (0x0030)
+#define chmhs1_GUID (0x0034)
+#define chmhs1_Unknown3 (0x0044)
+#define chmhs1_Unknown4 (0x0048)
+#define chmhs1_Unknown5 (0x004C)
+#define chmhs1_Unknown6 (0x0050)
+#define chmhs1_SIZEOF (0x0054)
+
+#define pmgl_Signature (0x0000)
+#define pmgl_QuickRefSize (0x0004)
+#define pmgl_Unknown1 (0x0008)
+#define pmgl_PrevChunk (0x000C)
+#define pmgl_NextChunk (0x0010)
+#define pmgl_Entries (0x0014)
+#define pmgl_headerSIZEOF (0x0014)
+
+#define pmgi_Signature (0x0000)
+#define pmgi_QuickRefSize (0x0004)
+#define pmgi_Entries (0x0008)
+#define pmgi_headerSIZEOF (0x000C)
+
+#define lzxcd_Length (0x0000)
+#define lzxcd_Signature (0x0004)
+#define lzxcd_Version (0x0008)
+#define lzxcd_ResetInterval (0x000C)
+#define lzxcd_WindowSize (0x0010)
+#define lzxcd_CacheSize (0x0014)
+#define lzxcd_Unknown1 (0x0018)
+#define lzxcd_SIZEOF (0x001C)
+
+#define lzxrt_Unknown1 (0x0000)
+#define lzxrt_NumEntries (0x0004)
+#define lzxrt_EntrySize (0x0008)
+#define lzxrt_TableOffset (0x000C)
+#define lzxrt_UncompLen (0x0010)
+#define lzxrt_CompLen (0x0018)
+#define lzxrt_FrameLen (0x0020)
+#define lzxrt_Entries (0x0028)
+#define lzxrt_headerSIZEOF (0x0028)
+
+/* CHM compression definitions */
+
+struct mschm_compressor_p {
+ struct mschm_compressor base;
+ struct mspack_system *system;
+ char *temp_file;
+ int use_temp_file;
+ int error;
+};
+
+/* CHM decompression definitions */
+struct mschmd_decompress_state {
+ struct mschmd_header *chm; /* CHM file being decompressed */
+ off_t offset; /* uncompressed offset within folder */
+ off_t inoffset; /* offset in input file */
+ struct lzxd_stream *state; /* LZX decompressor state */
+ struct mspack_system sys; /* special I/O code for decompressor */
+ struct mspack_file *infh; /* input file handle */
+ struct mspack_file *outfh; /* output file handle */
+};
+
+struct mschm_decompressor_p {
+ struct mschm_decompressor base;
+ struct mspack_system *system;
+ struct mschmd_decompress_state *d;
+ int error;
+};
+
+#endif