mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-20 17:29:49 +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;
|
Result := nil;
|
||||||
end;
|
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
|
class function TFPCustomImage.FindReaderFromExtension(const extension: String
|
||||||
): TFPCustomImageReaderClass;
|
): TFPCustomImageReaderClass;
|
||||||
var d : TIHData;
|
var d : TIHData;
|
||||||
@ -307,6 +333,17 @@ begin
|
|||||||
Result := FindReaderFromExtension(ExtractFileExt(filename));
|
Result := FindReaderFromExtension(ExtractFileExt(filename));
|
||||||
end;
|
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
|
class function TFPCustomImage.FindWriterFromExtension(const extension: String
|
||||||
): TFPCustomImageWriterClass;
|
): TFPCustomImageWriterClass;
|
||||||
var d : TIHData;
|
var d : TIHData;
|
||||||
|
@ -129,6 +129,8 @@ type
|
|||||||
destructor destroy; override;
|
destructor destroy; override;
|
||||||
procedure Assign(Source: TPersistent); override;
|
procedure Assign(Source: TPersistent); override;
|
||||||
// Image handlers
|
// Image handlers
|
||||||
|
class function FindHandlerFromStream(Str:TStream): TIHData;
|
||||||
|
class function FindReaderFromStream(Str:TStream): TFPCustomImageReaderClass;
|
||||||
class function FindHandlerFromExtension(extension:String): TIHData;
|
class function FindHandlerFromExtension(extension:String): TIHData;
|
||||||
class function FindReaderFromFileName(const filename:String): TFPCustomImageReaderClass;
|
class function FindReaderFromFileName(const filename:String): TFPCustomImageReaderClass;
|
||||||
class function FindReaderFromExtension(const extension:String): TFPCustomImageReaderClass;
|
class function FindReaderFromExtension(const extension:String): TFPCustomImageReaderClass;
|
||||||
|
Loading…
Reference in New Issue
Block a user