[fpc-pascal] FPImage and mult-page TIFF support

Graeme Geldenhuys mailinglists at geldenhuys.co.uk
Thu Dec 8 16:15:55 CET 2016


On 2016-12-08 14:22, Mattias Gaertner wrote:
>> > This might be a good solution. Some ready-made event handlers.
> Any idea how that should look like?

In the TFPReaderTiff class, define public methods (possibly marked as
virtual) as follows.... Here's one example:


procedure TFPReaderTiff.CreateCompactTiffImage(Sender: TFPReaderTiff;
    IFD: TTiffIFD);
var
  Desc: TFPCompactImgDesc;
begin
  // free old image
  FreeAndNil(IFD.Img);

  Desc.HasAlpha := IFD.AlphaBits > 0;
  Desc.Gray := IFD.PhotoMetricInterpretation in [0,1];
  Desc.Depth := Max(Max(Max(IFD.RedBits,
                          IFD.GreenBits),
                          IFD.BlueBits),
                          IFD.GrayBits);
  IFD.Img := CreateFPCompactImg(Desc, IFD.ImageWidth, IFD.ImageHeight);
end;


You can then use those as follows:

  t := TFPReaderTiff.Create;
  t.OnCreateImage := @t.CreateCompactTiffImage;  // <<-- here
  t.LoadFromStream(filestream, true);


No need for every developer to go through the pain of having to figure
out how to use TFPReaderTiff and how to implement OnCreateImage event
handlers.  In the FPDoc documentation of TFPReaderTIFF.OnCreateImage,
list the available built-in event handlers that are there for
convenience, and than you can implement your own if you have other needs.

If having those convenience event handler inside the TFPTiffReader class
is an issue, then create another unit with some other class where those
are defined and can be easily referenced.

It's not rocket science. ;-)

Regards,
  Graeme

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

My public PGP key:  http://tinyurl.com/graeme-pgp


More information about the fpc-pascal mailing list