On Wed, 14 Oct 2015, Michael Van Canneyt wrote:



On Wed, 14 Oct 2015, Ryan Joseph wrote:


On Oct 12, 2015, at 2:25 PM, Michael Van Canneyt <mich...@freepascal.org> wrote:

TFPCustomImage is an abstract image class, it provides no storage for the data. It can have several descendants such as TFPMemoryImage and TFPCompactImgRGBA8Bit. If you just want the raw data, create a TFPMemoryImage and access the Colors array property.

Sorry for the silence.

I’ve learned that the FPImage classes are pretty slow but I’d like to try them anyways first to see if they’re acceptable.

I don’t use Delphi so the FPC docs are a little confusing for me. There is a colors/pixels property but from what I can tell they map to getting a single pixel/color at a specific location, but the docs aren’t clear because the method arguments are never shown. Do I need to loop through all the pixels or something and pack them into a
pointer?  There should be some a single continuous block of memory in this
class but I can’t seem to find it using the colors/pixels property.  What
am I missing?

Your are not missing anything, you saw correct.
TFPCompactImgRGBA8Bit is probably what you need, you'll need to subclass it to get direct access to the
 FData: PFPCompactImgRGBA8BitValue; field, which is the memory buffer.

Type
TMyImage = Class(TFPCompactImgRGBA8Bit)
Public
  property Data :  PFPCompactImgRGBA8BitValue read FData;
end;


Should do it. Or if you don't need Alpha:

TMyImage = Class(TFPCompactImgRGB8Bit)
Public
  property Data :  PFPCompactImgRGB8BitValue read FData;
end;

You could throw in a property to get a direct pointer to a scanline.
I should maybe add that to the base classes...

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to