| @@ -1230,7 +1230,8 @@ implementation | |||||
| uses | uses | ||||
| Math, syncobjs, typinfo | Math, syncobjs, typinfo | ||||
| {$IFDEF GLB_DELPHI}, Types{$ENDIF}; | |||||
| {$IFDEF GLB_DELPHI}, Types{$ENDIF} | |||||
| {$IF DEFINED(GLB_SUPPORT_JPEG_READ) AND DEFINED(GLB_LAZ_JPEG)}, FPReadJPEG{$IFEND}; | |||||
| type | type | ||||
| {$IFNDEF fpc} | {$IFNDEF fpc} | ||||
| @@ -6348,6 +6349,7 @@ const | |||||
| var | var | ||||
| jpeg: TJPEGImage; | jpeg: TJPEGImage; | ||||
| intf: TLazIntfImage; | intf: TLazIntfImage; | ||||
| reader: TFPReaderJPEG; | |||||
| StreamPos: Int64; | StreamPos: Int64; | ||||
| magic: String[MAGIC_LEN]; | magic: String[MAGIC_LEN]; | ||||
| begin | begin | ||||
| @@ -6362,28 +6364,20 @@ begin | |||||
| exit; | exit; | ||||
| end; | end; | ||||
| jpeg := TJPEGImage.Create; | |||||
| reader := TFPReaderJPEG.Create; | |||||
| intf := TLazIntfImage.Create(0, 0); | |||||
| try try | try try | ||||
| jpeg.LoadFromStream(aStream); | |||||
| intf := TLazIntfImage.Create(0, 0); | |||||
| try try | |||||
| intf.LoadFromBitmap(jpeg.BitmapHandle, jpeg.MaskHandle); | |||||
| AssignFromLazIntfImage(intf); | |||||
| except | |||||
| result := false; | |||||
| aStream.Position := StreamPos; | |||||
| exit; | |||||
| end; | |||||
| finally | |||||
| intf.Free; | |||||
| end; | |||||
| intf.DataDescription := GetDescriptionFromDevice(0, 0, 0); | |||||
| reader.ImageRead(aStream, intf); | |||||
| AssignFromLazIntfImage(intf); | |||||
| except | except | ||||
| result := false; | result := false; | ||||
| aStream.Position := StreamPos; | aStream.Position := StreamPos; | ||||
| exit; | exit; | ||||
| end; | end; | ||||
| finally | finally | ||||
| jpeg.Free; | |||||
| reader.Free; | |||||
| intf.Free; | |||||
| end; | end; | ||||
| end; | end; | ||||