* Make compression struct accessible to descendants. Fixes issue #40327

This commit is contained in:
Michaël Van Canneyt 2023-06-19 14:26:57 +02:00
parent fa735ba7b2
commit ab3916b0f8
2 changed files with 16 additions and 12 deletions

View File

@ -65,6 +65,7 @@ type
procedure InternalRead(Str: TStream; Img: TFPCustomImage); override;
function InternalCheck(Str: TStream): boolean; override;
class function InternalSize(Str:TStream): TPoint; override;
property CompressInfo : jpeg_decompress_struct Read Finfo Write FInfo;
public
constructor Create; override;
destructor Destroy; override;

View File

@ -38,7 +38,9 @@ type
FQuality: TFPJPEGCompressionQuality;
FProgressMgr: TFPJPEGProgressManager;
protected
procedure InitWriting; virtual;
procedure InternalWrite(Str: TStream; Img: TFPCustomImage); override;
property CompressInfo : jpeg_compress_struct Read FInfo Write FInfo;
public
constructor Create; override;
destructor Destroy; override;
@ -95,23 +97,24 @@ end;
{ TFPWriterJPEG }
procedure TFPWriterJPEG.InitWriting;
begin
FError := jpeg_std_error;
FInfo := Default(jpeg_compress_struct);
jpeg_create_compress(@FInfo);
FInfo.err := jerror.jpeg_std_error(FError);
FInfo.progress := @FProgressMgr.pub;
FProgressMgr.pub.progress_monitor := @ProgressCallback;
FProgressMgr.instance := Self;
end;
procedure TFPWriterJPEG.InternalWrite(Str: TStream; Img: TFPCustomImage);
var
MemStream: TMemoryStream;
Continue: Boolean;
procedure InitWriting;
begin
FillChar(FInfo, sizeof(FInfo), 0);
FError := jpeg_std_error;
FInfo.err := jerror.jpeg_std_error(FError);
jpeg_create_compress(@FInfo);
FProgressMgr.pub.progress_monitor := @ProgressCallback;
FProgressMgr.instance := Self;
FInfo.progress := @FProgressMgr.pub;
end;
procedure SetDestination;
begin
if Str is TMemoryStream then