From f65fa34df0761b54db114d8a687c60977ed664fe Mon Sep 17 00:00:00 2001 From: michael Date: Tue, 3 May 2016 15:15:50 +0000 Subject: [PATCH] * Patch from Ondrej Pokorny to change ImageSize to class function (Bug ID 30094) git-svn-id: trunk@33638 - --- packages/fcl-image/src/fphandler.inc | 23 +++++++---------------- packages/fcl-image/src/fpimage.pp | 4 ++-- packages/fcl-image/src/fpreadjpeg.pas | 4 ++-- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/packages/fcl-image/src/fphandler.inc b/packages/fcl-image/src/fphandler.inc index 5b0da8126c..0c5f22959b 100644 --- a/packages/fcl-image/src/fphandler.inc +++ b/packages/fcl-image/src/fphandler.inc @@ -252,29 +252,20 @@ begin end; end; -function TFPCustomImageReader.InternalSize(Str: TStream): TPoint; +class function TFPCustomImageReader.InternalSize(Str: TStream): TPoint; begin Result.X:=-1; Result.Y:=-1; end; -function TFPCustomImageReader.ImageSize(Str: TStream): TPoint; -var InRead : boolean; - P : Int64; +class function TFPCustomImageReader.ImageSize(Str: TStream): TPoint; +var + P: Int64; begin - InRead := assigned(FStream); - if not assigned(Str) then - raise FPImageException.Create(ErrorText[StrNoStream]); - try - FStream := Str; - P:=Str.Position; - result := InternalSize (Str); - Str.Position:=P; - finally - if not InRead then - FStream := nil; - end; + P:=Str.Position; + result := InternalSize (Str); + Str.Position:=P; end; diff --git a/packages/fcl-image/src/fpimage.pp b/packages/fcl-image/src/fpimage.pp index 0ec3c7547a..354ffa02a5 100644 --- a/packages/fcl-image/src/fpimage.pp +++ b/packages/fcl-image/src/fpimage.pp @@ -208,14 +208,14 @@ type protected procedure InternalRead (Str:TStream; Img:TFPCustomImage); virtual; abstract; function InternalCheck (Str:TStream) : boolean; virtual; abstract; - function InternalSize (Str:TStream): TPoint; virtual; + class function InternalSize (Str:TStream): TPoint; virtual; public constructor Create; override; function ImageRead (Str:TStream; Img:TFPCustomImage) : TFPCustomImage; // reads image function CheckContents (Str:TStream) : boolean; // Returns true if the content is readable - function ImageSize(Str:TStream): TPoint; + class function ImageSize(Str:TStream): TPoint; // returns the size of image in stream without loading it completely. -1,-1 means this is not implemented. property DefaultImageClass : TFPCustomImageClass read FDefImageClass write FDefImageClass; // Image Class to create when no img is given for reading diff --git a/packages/fcl-image/src/fpreadjpeg.pas b/packages/fcl-image/src/fpreadjpeg.pas index ecfb27ea75..84e5767edc 100644 --- a/packages/fcl-image/src/fpreadjpeg.pas +++ b/packages/fcl-image/src/fpreadjpeg.pas @@ -64,7 +64,7 @@ type protected procedure InternalRead(Str: TStream; Img: TFPCustomImage); override; function InternalCheck(Str: TStream): boolean; override; - function InternalSize(Str:TStream): TPoint; override; + class function InternalSize(Str:TStream): TPoint; override; public constructor Create; override; destructor Destroy; override; @@ -451,7 +451,7 @@ begin end; end; -function TFPReaderJPEG.InternalSize(Str: TStream): TPoint; +class function TFPReaderJPEG.InternalSize(Str: TStream): TPoint; var JInfo: jpeg_decompress_struct; JError: jpeg_error_mgr;