diff options
author | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2009-10-13 17:03:05 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2009-10-13 17:03:05 +0200 |
commit | 4180ebf2b62cd2bdb2fe1062a75357582c7ec3e9 (patch) | |
tree | 4ee73752a99e4333800ed59267760e330c08bca3 /src | |
parent | 8c5466fb3efdb6d6fe954c5212f0140daa7a54f2 (diff) | |
download | fpGUI-4180ebf2b62cd2bdb2fe1062a75357582c7ec3e9.tar.xz |
Update IPF header unit to latest NewView.
* HelpIfleHeader renamed to IPFFileFormatUnit
* DataTypes information merged with IPF format unit.
* DataTypes unit removed.
* Merged previous changes like "packed" and extra comments
into the new IPF unit.
Signed-off-by: Graeme Geldenhuys <graeme@mastermaths.co.za>
Diffstat (limited to 'src')
-rw-r--r-- | src/DataTypes.pas | 71 | ||||
-rw-r--r-- | src/HelpFileHeader.pas | 115 | ||||
-rw-r--r-- | src/IPFFileFormatUnit.pas | 439 | ||||
-rw-r--r-- | src/docview.lpi | 85 | ||||
-rw-r--r-- | src/docview.lpr | 4 |
5 files changed, 481 insertions, 233 deletions
diff --git a/src/DataTypes.pas b/src/DataTypes.pas deleted file mode 100644 index d5d97503..00000000 --- a/src/DataTypes.pas +++ /dev/null @@ -1,71 +0,0 @@ -Unit DataTypes; - -{$mode objfpc}{$H+} -{$ASMMODE intel} - -// NewView - a new OS/2 Help Viewer -// Copyright 2001 Aaron Lawrence (aaronl at consultant dot com) -// This software is released under the Gnu Public License - see readme.txt - -Interface - -// Just defines various types useful in manipulating help files. - -type - int32 = longword; - int16 = word; - int8 = byte; - pInt16 = ^int16; - pInt32 = ^int32; - pInt8 = ^byte; - ULong = Cardinal; - - PCharArray = packed array[ 0..0 ] of PCHar; - Int32Array = packed array[ 0..0 ] of Int32; - Int16Array = packed array[ 0..0 ] of Int16; - Int8Array = packed array[ 0..0 ] of Int8; - - PCharArrayPointer = ^PCharArray; - Int32ArrayPointer = ^Int32Array; - Int16ArrayPointer = ^Int16Array; - Int8ArrayPointer = ^Int8Array; - - TBooleanArray = array[ 0..0 ] of boolean; - BooleanArrayPointer = ^TBooleanArray; - - TProgressCallback = procedure(n, outof: integer; AMessage: string) of object; - - -procedure FillInt32Array( pArray: Int32ArrayPointer; - Size: longint; - Value: Int32 ); - -Implementation - -// This is a nice fast implementation of filling an -// array of dwords (Int32/longword) -procedure FillInt32Array( pArray: Int32ArrayPointer; - Size: longint; - Value: Int32 ); -var - i: integer; -begin - assert( Size > 0 ); - if Size < 1 then - Exit; - for i := 0 to Size-1 do - begin - pArray^[i] := Value; - end; - - //Asm - // Mov EAX, Value - // Mov EDI, pArray - // Mov ECX, Size - // CLD // direction = up - // REP STOSD // store double word, until ECX = 0 - //End; -end; - -Initialization -End. diff --git a/src/HelpFileHeader.pas b/src/HelpFileHeader.pas deleted file mode 100644 index 799547d2..00000000 --- a/src/HelpFileHeader.pas +++ /dev/null @@ -1,115 +0,0 @@ -Unit HelpFileHeader; - -{$mode objfpc}{$H+} - -// NewView - a new OS/2 Help Viewer -// Copyright 2001 Aaron Lawrence (aaronl at consultant dot com) -// This software is released under the Gnu Public License - see readme.txt - -Interface - -// Definition of IPF file header and other structures - -uses - DataTypes; - -Type - THelpFileHeader = packed record - ID: int16; // ID magic word (5348h = "HS") - unknown1: byte; // unknown purpose, could be third letter of ID - flags: byte; // probably a flag word... - // bit 0: set if INF style file - // bit 4: set if HLP style file - // patching this byte allows reading HLP files - // using the VIEW command, while help files - // seem to work with INF settings here as well. - hdrsize: word; // total size of header - unknown2: word; // unknown purpose - ntoc: int16; // number of entries in the tocarray - tocstart: int32; // file offset of the start of the toc - toclen: int32; // number of bytes in file occupied by the toc - tocoffsetsstart: int32; // file offset of the start of array of toc offsets - nres: int16; // number of panels with ressource numbers - resstart: int32; // 32 bit file offset of ressource number table - nname: int16; // number of panels with textual name - namestart: int32; // 32 bit file offset to panel name table - nindex: int16; // number of index entries - indexstart: int32; // 32 bit file offset to index table - indexlen: int32; // size of index table - unknown3: array[0..9] of byte; // unknown purpose - searchstart: int32; // 32 bit file offset of full text search table - searchlen: int32; // size of full text search table - nslots: int16; // number of "slots" - slotsstart: int32; // file offset of the slots array - dictlen: int32; // number of bytes occupied by the "dictionary" - ndict: int16; // number of entries in the dictionary - dictstart: int32; // file offset of the start of the dictionary - imgstart: int32; // file offset of image data - unknown4: byte; // unknown purpose - nlsstart: int32; // 32 bit file offset of NLS table - nlslen: int32; // size of NLS table - extstart: int32; // 32 bit file offset of extended data block - reserved: array[0..11] of byte; // for future use. set to zero. - title: array[ 0..47 ] of char; // ASCII title of database - end; - pTHelpFileHeader = ^THelpFileHeader; - -Type - TTOCEntryStart = packed record - length: int8; // length of the entry including this byte - flags: int8; // flag byte, description folows (MSB first) - // bit7 haschildren; // following nodes are a higher level - // bit6 hidden; // this entry doesn't appear in VIEW.EXE's - // presentation of the toc - // bit5 extended; // extended entry format - // bit4 stuff; // ?? - // int4 level; // nesting level - numSlots: int8; // number of "slots" occupied by the text for this toc entry - Slots : record end; - end; - pTTOCEntryStart = ^TTOCEntryStart; - - TExtendedTOCEntry = packed record - w1: byte; - // bit 3: Window controls are specified - // bit 2: Viewport - // bit 1: Size is specified. - // bit 0: Position is specified. - w2: byte; - // bit 3: - // bit 2: Group is specified. - // bit 1 - // bit 0: Clear (all windows before display) - end; - pExtendedTOCEntry = ^TExtendedTOCEntry; - - TTOCEntryOffsetArray = packed array[ 0..0 ] of int32; - pTTOCEntryOffsetArray = ^TTOCEntryOffsetArray; - -const - TOCEntryExtended = $20; { extended entry format } - TOCEntryHidden = $40; { this entry doesn't appear in VIEW.EXE's presentation of the toc } - TOCEntryHasChildren = $80; { following nodes are a higher level } - TOCEntryLevelMask = $0f; - - -type - THelpXYPair = packed record - Flags: int8; - X: int16; - Y: int16; - end; - pHelpXYPair = ^ THelpXYPair; - - TSlotHeader = packed record - stuff: int8; // always 0?? - localdictpos: int32; // file offset of the local dictionary - nlocaldict: int8; // number of entries in the local dict - ntext: int16; // number of bytes in the text - end; - pSlotHeader = ^TSlotHeader; - -Implementation - -Initialization -End. diff --git a/src/IPFFileFormatUnit.pas b/src/IPFFileFormatUnit.pas new file mode 100644 index 00000000..ca88d64b --- /dev/null +++ b/src/IPFFileFormatUnit.pas @@ -0,0 +1,439 @@ +Unit IPFFileFormatUnit; + +{$mode objfpc}{$H+} + +// NewView - a new OS/2 Help Viewer +// Copyright 2003 Aaron Lawrence (aaronl at consultant dot com) +// This software is released under the Gnu Public License - see readme.txt + +Interface + +// Definition of IPF file header and other structures + +uses + SysUtils; + +type + uint32 = longword; + uint16 = word; + uint8 = byte; + pUInt16 = ^ uint16; + pUInt32 = ^ uint32; + pUInt8 = ^ uint8; + + PCharArray = packed array[ 0..0 ] of PCHar; + UInt32Array = packed array[ 0..0 ] of UInt32; + UInt16Array = packed array[ 0..0 ] of UInt16; + UInt8Array = packed array[ 0..0 ] of UInt8; + + PCharArrayPointer = ^ PCharArray; + UInt32ArrayPointer = ^ UInt32Array; + UInt16ArrayPointer = ^ UInt16Array; + UInt8ArrayPointer = ^ UInt8Array; + + TBooleanArray = array[ 0..0 ] of boolean; + BooleanArrayPointer = ^TBooleanArray; + + EHelpFileException = class( Exception ) + end; + + EWindowsHelpFormatException = class( Exception ) + end; + +var + ErrorCorruptHelpFile: string; + +const + INF_HEADER_ID = $5348; + +Type + THelpFileHeader = packed record + ID: uint16; // ID magic word (5348h = "HS") + unknown1: uint8; // unknown purpose, could be third letter of ID + flags: uint8; // probably a flag word... + // bit 0: set if INF style file + // bit 4: set if HLP style file + // patching this byte allows reading HLP files + // using the VIEW command, while help files + // seem to work with INF settings here as well. + hdrsize: uint16; // total size of header + unknown2: uint16; // unknown purpose + + ntoc: uint16; // number of entries in the tocarray + tocstart: uint32; // file offset of the start of the toc + toclen: uint32; // number of bytes in file occupied by the toc + tocoffsetsstart: uint32; // file offset of the start of array of toc offsets + nres: uint16; // number of panels with ressource numbers + resstart: uint32; // 32 bit file offset of ressource number table + nname: uint16; // number of panels with textual name + namestart: uint32; // 32 bit file offset to panel name table + nindex: uint16; // number of index entries + indexstart: uint32; // 32 bit file offset to index table + indexlen: uint32; // size of index table + unknown3: array[ 0..9 ] of uint8; // unknown purpose + searchstart: uint32; // 31 bit file offset of full text search table + // Note: top bit indicates 32 bit search record! + searchlen: uint32; // size of full text search table + nslots: uint16; // number of "slots" + slotsstart: uint32; // file offset of the slots array + dictlen: uint32; // number of bytes occupied by the "dictionary" + ndict: uint16; // number of entries in the dictionary + dictstart: uint32; // file offset of the start of the dictionary + imgstart: uint32; // file offset of image data + unknown4: uint8; // unknown purpose + nlsstart: uint32; // 32 bit file offset of NLS table + nlslen: uint32; // size of NLS table + extstart: uint32; // 32 bit file offset of extended data block + reserved: array[ 0..2 ] of uint32; // for future use. set to zero. + title: array[ 0..47 ] of char; // ASCII title of database + end; + TPHelpFileHeader = ^THelpFileHeader; + + TExtendedHelpFileHeader = packed record + NumFontEntry: uint16; // FONT TABLE: Number entries + FontTableOffset: uint32; // FONT TABLE: Offset in file + NumDataBase: uint16; // DATA BASE: Number of files + DataBaseOffset: uint32; // DATA BASE: Offset in file + DataBaseSize: uint32; // DATA BASE: Size in bytes + EntryInGNameTable: uint16; // GLOBAL NAMES: Number entries + HelpPanelGNameTblOffset: uint32; // GLOBAL NAMES: Offset in file + StringsOffset: uint32; // STRINGS : Offset in file + StringsSize: uint16; // STRINGS : Total bytes of all strings + ChildPagesOffset: uint32; // CHILDPAGES : Offset in file + ChildPagesSize: uint32; // CHILDPAGES : Total bytes of all strings + NumGIndexEntry: uint32; // Total number of Global Index items + CtrlOffset: uint32; // CTRL BUTTONS : offset in file + CtrlSize: uint32; // CTRL BUTTONS : size in bytes + Reserved: array[0..3] of uint32; // For future use. Set to zero + end; + TPExtendedHelpFileHeader = ^TExtendedHelpFileHeader; + +Type + TTOCEntryStart = packed record + length: uint8; // length of the entry including this byte + flags: uint8; // flag byte, description folows (MSB first) + // bit8 haschildren; // following nodes are a higher level + // bit7 hidden; // this entry doesn't appear in VIEW.EXE's + // presentation of the toc + // bit6 extended; // extended entry format + // bit5 stuff; // ?? + // int4 level; // nesting level + numSlots: uint8; // number of "slots" occupied by the text for + // this toc entry + end; + pTTOCEntryStart = ^TTOCEntryStart; + + TExtendedTOCEntry = packed record + w1: uint8; + // bit 3: Window controls are specified + // bit 2: Viewport + // bit 1: Size is specified. + // bit 0: Position is specified. + w2: uint8; + // bit 3: + // bit 2: Group is specified. + // bit 1 + // bit 0: Clear (all windows before display) + end; + pExtendedTOCEntry = ^TExtendedTOCEntry; + + TTOCEntryOffsetArray = packed array[ 0..0 ] of uint32; + pTTOCEntryOffsetArray = ^TTOCEntryOffsetArray; + +const + TOCEntryExtended = $20; { extended entry format } + TOCEntryHidden = $40; { this entry doesn't appear in VIEW.EXE's presentation of the toc } + TOCEntryHasChildren = $80; { following nodes are a higher level } + TOCEntryLevelMask = $0f; + +type + THelpXYPair = packed record + Flags: uint8; + X: uint16; + Y: uint16; + end; + pHelpXYPair = ^THelpXYPair; + + TSlotHeader = packed record + stuff: uint8; // always 0?? + localdictpos: uint32; // file offset of the local dictionary + nlocaldict: uint8; // number of entries in the local dict + ntext: uint16; // number of bytes in the text + end; + pSlotHeader = ^TSlotHeader; + + THelpFontSpec = packed record + FaceName: array[ 0..32 ] of char; + Height: uint16; + Width: uint16; + Codepage: uint16; + end; + pTHelpFontSpec = ^THelpFontSpec; + +// List of IPF escape codes. + +const + // Basic byte codes + IPF_END_PARA = $fa; + IPF_CENTER = $fb; + IPF_INVERT_SPACING = $fc; + IPF_LINEBREAK = $fd; + IPF_SPACE = $fe; + IPF_ESC = $ff; // followed by one of the ecXXX codes below + + // FF XX + ecSetLeftMargin = $02; + ecHighlight1 = $04; // hp1,2,3,5,6,7 + ecLinkStart = $05; + ecFootnoteLinkStart = $07; + ecLinkEnd = $08; + ecStartCharGraphics = $0b; + ecEndCharGraphics = $0c; + ecHighlight2 = $0d; // hp4,8,9 + ecImage = $0e; + ecLinkedImage = $0f; + ecProgramLink = $10; + ecSetLeftMarginNewLine = $11; + ecSetLeftMarginFit = $12; + ecForegroundColor = $13; + ecBackgroundColor = $14; + ecFontChange = $19; + ecStartLines = $1a; + ecEndLines = $1b; + ecSetLeftMarginHere = $1c; + ecStartLinkByResourceID = $1d; + ecExternalLink = $1f; + + // Subescape codes of + HPART_DEFINE = 0; + HPART_PT_HDREF = 1; + HPART_PT_FNREF = 2; + HPART_PT_SPREF = 3; + HPART_HDREF = 4; + HPART_FNREF = 5; + HPART_SPREF = 6; + HPART_LAUNCH = 7; + HPART_PT_LAUNCH = 8; + HPART_INFORM = 9; + HPART_PT_INFORM = 10; + // ?? 11 ?? + HPART_EXTERN_PT_HDREF = 12; + HPART_EXTERN_PT_SPREF = 13; + HPART_EXTERN_HDREF = 14; + HPART_EXTERN_SPREF = 15; + HPART_GLOBAL_HDREF = 16; + HPART_GLOBAL_PT_HDREF = 17; + +// ----------------------------------------------------------- +// Operations on Int32 arrays, used for searching +// These could be optimised heavily if needed. +procedure AllocUInt32Array( Var pArray: UInt32ArrayPointer; + Size: longint ); +procedure FreeUInt32Array( Var pArray: UInt32ArrayPointer; + Size: longint ); + +procedure FillUInt32Array( pArray: UInt32ArrayPointer; + Size: longint; + Value: UInt32 ); + +procedure AddUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); + +// Dest = Dest + source * Multiplier +procedure AddMultConstUInt32Array( pSource: UInt32ArrayPointer; + Multiplier: longint; + pDest: UInt32ArrayPointer; + Size: longint ); + +procedure AndUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); + +// If both source and dest > 0 then +// add source to dest +procedure AndAddUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); + +// if Source > 0 then dest is set to 0 +procedure AndNotUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); + +// dest = dest or source; +// if source > 0 then set dest to > 0 +procedure OrUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); + +// if source = 0 then dest set to >0 +procedure NotOrUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); + +procedure CopyUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); + +procedure ClearUInt32Array( pArray: UInt32ArrayPointer; + Size: longint ); +procedure SetUInt32Array( pArray: UInt32ArrayPointer; + Size: longint ); + +// returns the result of ORing every array element. +// Can be useful for debugging e.g. seeing at a glance +// if any element is non-zero +function OrAllUInt32Array( pArray: UInt32ArrayPointer; + Size: longint ): longint; + + +Implementation + +uses + nvUtilities; + +// Operations on int32 arrays +// ----------------------------------------------------------- + +procedure AllocUInt32Array( Var pArray: UInt32ArrayPointer; + Size: longint ); +begin + GetMem( pArray, + Size + * sizeof( UInt32 ) ); +end; + +procedure FreeUInt32Array( Var pArray: UInt32ArrayPointer; + Size: longint ); +begin + FreeMem( pArray, + Size + * sizeof( UInt32 ) ); +end; + +// This is a nice fast implementation of filling an +// array of dwords (Int32/longword) +procedure FillUInt32Array( pArray: UInt32ArrayPointer; + Size: longint; + Value: UInt32 ); +var + i: integer; +begin + assert( Size > 0 ); + if Size < 1 then + Exit; + for i := 0 to Size-1 do + begin + pArray^[i] := Value; + end; +end; + +procedure ClearUInt32Array( pArray: UInt32ArrayPointer; + Size: longint ); +begin + FillUInt32Array( pArray, Size, 0 ); +end; + +procedure SetUInt32Array( pArray: UInt32ArrayPointer; + Size: longint ); +begin + FillUInt32Array( pArray, Size, $ffffffff ); +end; + +procedure AddUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); +var + i: longint; +begin + for i := 0 to Size - 1 do + inc( pDest^[ i ], pSource^[ i ] ); +end; + +procedure AddMultConstUInt32Array( pSource: UInt32ArrayPointer; + Multiplier: longint; + pDest: UInt32ArrayPointer; + Size: longint ); +var + i: longint; +begin + for i := 0 to Size - 1 do + inc( pDest^[ i ], pSource^[ i ] * Multiplier ); +end; + +procedure OrUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); +var + i: longint; +begin + for i := 0 to Size - 1 do + pDest^[ i ] := pDest^[ i ] or pSource^[ i ]; +end; + +procedure CopyUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); +begin + MemCopy( pSource, pDest, Size * sizeof( uint32 ) ); +end; + +procedure NotOrUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); +var + i: longint; +begin + for i := 0 to Size - 1 do + if pSource^[ i ] = 0 then + pDest^[ i ] := 1; +end; + +procedure AndUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); +var + i: longint; +begin + for i := 0 to Size - 1 do + pDest^[ i ] := pDest^[ i ] and pSource^[ i ]; +end; + +procedure AndAddUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); +var + i: longint; +begin + for i := 0 to Size - 1 do + if ( pSource^[ i ] > 0 ) + and ( pDest^[ i ] > 0 ) then + inc( pDest^[ i ], pSource^[ i ] ) + else + pDest^[ i ] := 0; +end; + +procedure AndNotUInt32Array( pSource: UInt32ArrayPointer; + pDest: UInt32ArrayPointer; + Size: longint ); +var + i: longint; +begin + for i := 0 to Size - 1 do + if pSource^[ i ] > 0 then + pDest^[ i ] := 0; +end; + +function OrAllUInt32Array( pArray: UInt32ArrayPointer; + Size: longint ): longint; +var + i: longint; +begin + Result := 0; + for i := 0 to Size - 1 do + Result := Result or pArray^[ i ]; +end; + + +end. diff --git a/src/docview.lpi b/src/docview.lpi index 91cc0e95..dda50276 100644 --- a/src/docview.lpi +++ b/src/docview.lpi @@ -32,7 +32,7 @@ <PackageName Value="fpgui_toolkit"/> </Item1> </RequiredPackages> - <Units Count="23"> + <Units Count="22"> <Unit0> <Filename Value="docview.lpr"/> <IsPartOfProject Value="True"/> @@ -44,109 +44,104 @@ <UnitName Value="frm_main"/> </Unit1> <Unit2> - <Filename Value="DataTypes.pas"/> + <Filename Value="HelpWindow.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="DataTypes"/> + <UnitName Value="HelpWindow"/> </Unit2> <Unit3> - <Filename Value="HelpFileHeader.pas"/> + <Filename Value="IPFEscapeCodes.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="HelpFileHeader"/> + <UnitName Value="IPFEscapeCodes"/> </Unit3> <Unit4> - <Filename Value="HelpWindow.pas"/> + <Filename Value="HelpTopic.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="HelpWindow"/> + <UnitName Value="HelpTopic"/> </Unit4> <Unit5> - <Filename Value="IPFEscapeCodes.pas"/> + <Filename Value="HelpFile.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="IPFEscapeCodes"/> + <UnitName Value="HelpFile"/> </Unit5> <Unit6> - <Filename Value="HelpTopic.pas"/> + <Filename Value="CompareWordUnit.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="HelpTopic"/> + <UnitName Value="CompareWordUnit"/> </Unit6> <Unit7> - <Filename Value="HelpFile.pas"/> + <Filename Value="SearchTable.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="HelpFile"/> + <UnitName Value="SearchTable"/> </Unit7> <Unit8> - <Filename Value="CompareWordUnit.pas"/> + <Filename Value="TextSearchQuery.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="CompareWordUnit"/> + <UnitName Value="TextSearchQuery"/> </Unit8> <Unit9> - <Filename Value="SearchTable.pas"/> + <Filename Value="nvUtilities.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="SearchTable"/> + <UnitName Value="nvUtilities"/> </Unit9> <Unit10> - <Filename Value="TextSearchQuery.pas"/> + <Filename Value="nvNullObjects.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="TextSearchQuery"/> + <UnitName Value="nvNullObjects"/> </Unit10> <Unit11> - <Filename Value="nvUtilities.pas"/> + <Filename Value="../../../../../opt/git/dunit2/3rdparty/epiktimer/epiktimer.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="nvUtilities"/> + <UnitName Value="EpikTimer"/> </Unit11> <Unit12> - <Filename Value="nvNullObjects.pas"/> + <Filename Value="../docs/inf04.txt"/> <IsPartOfProject Value="True"/> - <UnitName Value="nvNullObjects"/> </Unit12> <Unit13> - <Filename Value="../../../../../opt/git/dunit2/3rdparty/epiktimer/epiktimer.pas"/> + <Filename Value="SearchUnit.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="EpikTimer"/> + <UnitName Value="SearchUnit"/> </Unit13> <Unit14> - <Filename Value="../docs/inf04.txt"/> + <Filename Value="../components/richtext/RichTextStyleUnit.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="RichTextStyleUnit"/> </Unit14> <Unit15> - <Filename Value="SearchUnit.pas"/> + <Filename Value="../components/richtext/CanvasFontManager.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="SearchUnit"/> + <UnitName Value="CanvasFontManager"/> </Unit15> <Unit16> - <Filename Value="../components/richtext/RichTextStyleUnit.pas"/> + <Filename Value="../components/richtext/ACLStringUtility.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="RichTextStyleUnit"/> + <UnitName Value="ACLStringUtility"/> </Unit16> <Unit17> - <Filename Value="../components/richtext/CanvasFontManager.pas"/> + <Filename Value="../components/richtext/RichTextDocumentUnit.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="CanvasFontManager"/> + <UnitName Value="RichTextDocumentUnit"/> </Unit17> <Unit18> - <Filename Value="../components/richtext/ACLStringUtility.pas"/> + <Filename Value="../components/richtext/RichTextView.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="ACLStringUtility"/> + <UnitName Value="RichTextView"/> </Unit18> <Unit19> - <Filename Value="../components/richtext/RichTextDocumentUnit.pas"/> + <Filename Value="../components/richtext/RichTextLayoutUnit.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="RichTextDocumentUnit"/> + <UnitName Value="RichTextLayoutUnit"/> </Unit19> <Unit20> - <Filename Value="../components/richtext/RichTextView.pas"/> + <Filename Value="../components/richtext/RichTextDisplayUnit.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="RichTextView"/> + <UnitName Value="RichTextDisplayUnit"/> </Unit20> <Unit21> - <Filename Value="../components/richtext/RichTextLayoutUnit.pas"/> + <Filename Value="IPFFileFormatUnit.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="RichTextLayoutUnit"/> + <UnitName Value="IPFFileFormatUnit"/> </Unit21> - <Unit22> - <Filename Value="../components/richtext/RichTextDisplayUnit.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="RichTextDisplayUnit"/> - </Unit22> </Units> </ProjectOptions> <CompilerOptions> diff --git a/src/docview.lpr b/src/docview.lpr index 34e0c34e..17349061 100644 --- a/src/docview.lpr +++ b/src/docview.lpr @@ -8,9 +8,9 @@ uses {$ENDIF}{$ENDIF} Classes, {$IFDEF Timing}EpikTimer,{$ENDIF} - fpg_main, frm_main, DataTypes, HelpFileHeader, HelpWindow, IPFEscapeCodes, + fpg_main, frm_main, HelpWindow, IPFEscapeCodes, HelpTopic, CompareWordUnit, SearchTable, TextSearchQuery, nvUtilities, - nvNullObjects, HelpFile, SearchUnit, fpg_cmdlineparams, customstyle, + nvNullObjects, HelpFile, SearchUnit, fpg_cmdlineparams, customstyle, IPFFileFormatUnit, RichTextStyleUnit, CanvasFontManager, ACLStringUtility, RichTextDocumentUnit, RichTextView, RichTextLayoutUnit, RichTextDisplayUnit; |