mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-07 22:30:50 +02:00
* Patch from Ondrej Pokorny to implement Find(Handler|reader)FromStream (bug ID 33955)
git-svn-id: trunk@39416 -
This commit is contained in:
parent
ed4b94706b
commit
5213011bed
@ -290,6 +290,32 @@ begin
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
class function TFPCustomImage.FindHandlerFromStream(Str: TStream): TIHData;
|
||||
var r : integer;
|
||||
p: Int64;
|
||||
reader: TFPCustomImageReader;
|
||||
begin
|
||||
r := ImageHandlers.Count-1;
|
||||
p := Str.Position;
|
||||
while (r >= 0) do
|
||||
begin
|
||||
Result := ImageHandlers.GetData(r);
|
||||
if Result.Reader<>nil then
|
||||
begin
|
||||
reader := Result.Reader.Create;
|
||||
try
|
||||
if reader.CheckContents(Str) then
|
||||
Exit;
|
||||
finally
|
||||
reader.free;
|
||||
Str.Position := p;
|
||||
end;
|
||||
end;
|
||||
dec (r);
|
||||
end;
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
class function TFPCustomImage.FindReaderFromExtension(const extension: String
|
||||
): TFPCustomImageReaderClass;
|
||||
var d : TIHData;
|
||||
@ -307,6 +333,17 @@ begin
|
||||
Result := FindReaderFromExtension(ExtractFileExt(filename));
|
||||
end;
|
||||
|
||||
class function TFPCustomImage.FindReaderFromStream(
|
||||
Str: TStream): TFPCustomImageReaderClass;
|
||||
var d : TIHData;
|
||||
begin
|
||||
d := FindHandlerFromStream(Str);
|
||||
if d<>nil then
|
||||
Result := d.FReader
|
||||
else
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
class function TFPCustomImage.FindWriterFromExtension(const extension: String
|
||||
): TFPCustomImageWriterClass;
|
||||
var d : TIHData;
|
||||
|
@ -129,6 +129,8 @@ type
|
||||
destructor destroy; override;
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
// Image handlers
|
||||
class function FindHandlerFromStream(Str:TStream): TIHData;
|
||||
class function FindReaderFromStream(Str:TStream): TFPCustomImageReaderClass;
|
||||
class function FindHandlerFromExtension(extension:String): TIHData;
|
||||
class function FindReaderFromFileName(const filename:String): TFPCustomImageReaderClass;
|
||||
class function FindReaderFromExtension(const extension:String): TFPCustomImageReaderClass;
|
||||
|
Loading…
Reference in New Issue
Block a user