/packages/chm/src/itolitlstypes.pas
https://github.com/slibre/freepascal · Pascal · 157 lines · 112 code · 21 blank · 24 comment · 0 complexity · c64851690863c9d9b0b9c52eac138d73 MD5 · raw file
- { Copyright (C) <2010> <Andrew Haines> itolitlstypes.pas
- This library is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published by
- the Free Software Foundation; either version 2 of the License, or (at your
- option) any later version.
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
- for more details.
- You should have received a copy of the GNU Library General Public License
- along with this library; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- }
- {
- See the file COPYING.modifiedLGPL, included in this distribution,
- for details about the copyright.
- }
- unit ITOLITLSTypes;
- {$mode objfpc}{$H+}
- {$PACKRECORDS C}
- interface
- uses ChmBase;
- type
- TSig = array[0..3] of char;
- TITOLITLSHeader = record
- Sig: Array [0..1] of TSig; // ITLO/ITLS
- Version: DWord; // = 1
- HeaderSectionTableOffset: DWord;
- HeaderSectionEntryCount: DWord;
- PostHeaderTableSize: DWord;
- GUID: TGuid; // {0A9007C1-4076-11D3-8789-0000F8105754}
- end;
- TITOLITLSHeaderSectionEntry = record
- OffSet: QWord; // From Start of ITLO/ITLS
- Length: QWord;
- end;
- TChunkDirInfo = record
- TopAOLIChunkIndex: QWord; // -1 if none
- FirstAOLLChunkIndex,
- LastAOLLChunkIndex: QWord;
- Unknown0: QWord; // 0
- ChunkSize: DWord; // = $2000 if list $200 if Index
- QuickRefDensity: DWord; // = 2
- Unknown1: DWord; // = 0
- DirDepth: DWord; // 1 there is no index, 2 if there is one level of AOLI 3 if two index levels etc
- Unknown2: QWord; // 0
- DirEntryCount: QWord; // Number Of Directory Entries
- end;
- TITSFHeaderV4= record
- ITSFsig: array [0..3] of char;
- Version: LongWord;
- HeaderLength: LongWord;
- Unknown_1: LongWord;
- Section0Offset: QWord;
- TimeStamp: LongWord; //bigendian
- LanguageID: LongWord;
- end;
- TCAOLRec = record
- Sig: TSig; // CAOL
- Version: DWord; // 2
- CAOLSize: DWord; // includes ITSF section = $50
- CompilerID: array [0..1] of char; // = "HH"
- Unknown: Word; // 0
- Unknown1: DWord; // $43ED or 0
- DirChunkSize: DWord; // $2000
- DirIndexChunkSize: DWord; // $200
- Unknown2, // $100000
- Unknown3: DWord;// $20000
- Unknown4,
- Unknown5,
- Unknown6: DWord; // = 0
- ITSFHeader: TITSFHeaderV4;
- end;
- TITOLITLSPostHeader = record
- Version: DWord; // 2
- CAOLOffset: DWord; // usually $98 (is from start of PostHeader)
- ListChunkInfo,
- IndexChunkInfo: TChunkDirInfo;
- Unknown3: DWord; // = $100000
- Unknown4: Dword; // = $20000
- Unknown5: QWord; // 0
- end;
- THeaderSection0 = TITSPHeaderPrefix;
- TIFCMRec = record
- SIG: TSig; // = IFCM
- Version: DWord; // = 1
- ChunkSize: DWord; // = $2000
- UnKnown: DWord; // = $100000
- Unknown1: DWord; // = -1
- Unknown2: DWord; // = -1
- ChunkCount: Dword;//
- Unknown3: DWord; // = 0
- end;
- TAOLLChunkHeader = record
- Sig: TSig; // = AOLL
- QuickRefSize: DWord;
- ChunkIndex: QWord; // must be correct in the order written
- PrevChunkIndex: QWord;
- NextChunkIndex: QWord;
- FirstEntryIndex: QWord;
- Unknown0, // = 1
- Unknown1: DWord;// = 0
- // entries
- end;
- TAOLIChunkHeader = record
- Sig: TSig; // = AOLI
- QuickRefSize: DWord;// Length of quickref area at end of directory chunk
- ChunkIndex: QWord;// Directory chunk number
- // entries
- end;
- const
- ITOLITLSGuid: TGuid = '{0A9007C1-4076-11D3-8789-0000F8105754}';
- type
- TLZXv3ControlData = record
- Sig: TSig;
- Version: DWord;
- ResetInterval: Dword;
- WindowSize: DWord;
- CacheSize: Dword;
- Unknown1,
- Unknown2: DWord; // 0
- end;
- TLZXv3ResetTable = record
- Version: Dword;
- EntryCount: DWord;
- EntrySize: DWord;
- EntryStart: DWord;
- UnCompressedSize,
- CompressedSize: QWord;
- BlockSize: QWord; // $8000
- end;
- implementation
- end.