home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Audio Plus 10-94
/
AUDIOPLUS.ISO
/
msdos
/
modplay
/
vtsrc12b
/
lib
/
iff.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-03-03
|
1KB
|
89 lines
UNIT IFF;
INTERFACE
USES Objects;
TYPE
TIffBlockIdent = STRING[4];
PIffFile = ^TIffFile;
TIffFile =
OBJECT(TObject)
CONSTRUCTOR Init;
DESTRUCTOR Done; VIRTUAL;
PROCEDURE Parse (VAR St: TStream); VIRTUAL;
FUNCTION DoBlock(VAR St: TStream;
Id: TIffBlockIdent; Size: LONGINT) : BOOLEAN; VIRTUAL;
END;
IMPLEMENTATION
CONSTRUCTOR TIffFile.Init;
BEGIN
TObject.Init;
END;
DESTRUCTOR TIffFile.Done;
BEGIN
TObject.Done;
END;
FUNCTION SwapLong(l: LONGINT) : LONGINT;
VAR
w : ARRAY[0..1] OF WORD ABSOLUTE l;
r : WORD;
BEGIN
r := SWAP(w[0]);
w[0] := SWAP(w[1]);
w[1] := r;
SwapLong := l;
END;
PROCEDURE TIffFile.Parse(VAR St: TStream);
VAR
Id : TIffBlockIdent;
l : LONGINT;
Size : LONGINT;
BEGIN
Id[0] := #4;
REPEAT
l := St.GetSize - St.GetPos;
IF l < 8 THEN EXIT;
St.Read(Id[1], 4);
St.Read(Size, 4);
Size := SwapLong(Size);
l := St.GetSize - St.GetPos;
IF l < Size THEN EXIT;
l := St.GetPos + Size;
IF NOT DoBlock(St, Id, Size) THEN EXIT;
St.Seek(l);
UNTIL FALSE;
END;
FUNCTION TIffFile.DoBlock(VAR St: TStream; Id: TIffBlockIdent; Size: LONGINT) : BOOLEAN;
BEGIN
DoBlock := FALSE;
END;
END.