Author: Michael Gaisser
Library for editing LucasArts *.LFD resource files.
IDisposablehas been implemented throughout.- Better application of the Dirty flag throughout.
- Many
Indexertypes changed to a proper Collection are BREAKING CHANGES due to theLengthparameter switching toCount. - (LfdFile) Added a Name property for the filename minus ".lfd" extension.
- (Resource) IsDirty added to expose the flag.
- (ANIM) FrameCollection collection members now implemented directly.
- (ANIM)
FrameCollection.Remove()marked OBS in favor of newRemoveAt(). - (CRFT, CPLX, SHIP) Readonly
Indexerusage replaced withReadOnlyCollection<>. - (FONT) Fixed missing type assignment in the generic constructors.
- (FONT)
HeightandNumberOfGlyphsnow write-enabled. - (FONT) Internally reworked the glyphs to be a collection instead of an array, no external changes.
- (FONT)
GlyphIndexernow implements Indexer directly,IEnumerableadded. - (PANL) Internal array now a collection
- (PANL)
ImageIndexernow implements Indexer directly,IEnumerableadded. - (PLTT)
Paletteproperty marked OBS in favor of newConvertToPalette()overload. - (PLTT) IndexRotator struct renamed to just
Rotator. - (PLTT)
Rotator.RotateColors()no longer internally clones the array. - (PLTT)
RotatorIndexerclass created. - (TEXT)
TextStringtype and relatedTextStringCollectioncreated.- The TextString object handles substrings natively, instead of each application needing to sort it out.
- (TEXT) The original Strings array has been deleted in favor of the new
Stringscollection BREAKING CHANGE.- There really wasn't a way to just mark this as OBS and have it work alongside the new collection, as the changes to the original array could not be monitored.
- Idmr.Common (v1.1 or later)
- Idmr.ImageFormat.Act (v2.0 or later), necessary only for LfdReader.Xact
File structure information per resource is found in the individual class files.
Programmer's reference can be found in the help file.
- (MASK) No code changes, just updated the XML example for the help file.
- (LfdFile) The per-resource modified flag now resets during Write().
- (BLAS) Fixed an error in EncodeResource() when importing new sound data. [Issue TSE #1].
- (DELT) DecodeImage now checks for negative width/height validation directly to avoid overhead of catching an Exception.
- (DELT) Fixed DecodeImage not processing the final rows if there's skips/blanks.
- (ANIM) FrameCollection now takes the number of frames as an argument.
- (Resource) Added Dirty() to allow manual setting of internal modified flag.
- (MASK) Fixed the Height calculation
- (MASK) Fixed the 00 processing and corner cases
- (PANL) Fixed processing the FC Opcode to properly modify the ColorIndex
- (MTRX) Initial pass created. Full Frame details aren't broken out yet, though structure is prety much known.
- (FILM) Chunk Opcodes added or renamed:
- SetColorRange = 0x10, new for VIEW
- Unknown11 is now ApplyPalette for VIEW
- Unknown13 is now Toggle for VOIC
- SetVolume = 0x15, new for VOIC
- Unknown16 = 0x16, new for VOIC
- Renames left originals in place as Depcrecated, not a breaking change.
- (PLTT) Added the newly discovered IndexRotator as read only values, discussed in Issue #4.
- (CRFT, CPLX, SHIP) Added the IsTwoSided and IsGouraudShaded properties to Shape per discussion in Issue #3.
- Minor XML updates
- (CRFT) Can now convert wireframe data to SHIP, but not raw data
- (CPLX) Can now convert wireframe data to SHIP, but not raw data
- (CRFT, CPLX, SHIP) Now calculates the Lines in a mesh during Decode.
- (ANIM) Fixed the retrieval of Frames when RelativePosition is turned on.
- (BLAS) Added GetWavBytes() to make audio playback easier, reformats data to .WAV.
- (BLAS) Added Duration property to get audio length in seconds.
- (FILM) Added ToString() to Block and Chunk.
- (FONT) TotalChars renamed to NumberOfGlyphs, BREAKING CHANGE.
- (CRFT) New.
- (CPLX) New.
- (SHIP) New.
- (Resource) Adlb, Btmp, Crft, Cplx, Rlnd, and Ship added to ResourceType.
- various updates.
- (BLAS) Fixed a crash that occur during Decode for VOIC types. [Issue #1]
- _isModifed edits.
- (ANIM) removed old code duplicating DELT data.
- (FONT) Fixed EncodeResource with large Strides.
- (FONT) added _baseLine.
- (LfdFile) Always zeroes out name before write.
- (LfdFile) Only encodes children if they report being modified.
- various other tweaks.
- Changed license to MPL.
- (ANIM) SetCount and IsModified implementation in FrameCollection.
- Release.
Copyright © 2009-2025 Michael Gaisser
This library file and related files are licensed under the Mozilla Public License
v2.0 or later. See License.txt for further details.
"Star Wars" and related items are trademarks of LucasFilm Ltd and LucasArts Entertainment Co.