[Lazarus] Scanline on certain size images seems to be failing : Access Violation...
dominique at savagesoftwaresolutions.com
dominique at savagesoftwaresolutions.com
Sat Aug 15 15:26:59 CEST 2009
Please ignore,
I just realised that ScanLineImage.Free was being called before the
Color_RGBtoColor funcation. Which caused the AV.
Hence why the code works under Delphi, but was AVing with FreePascal.
Dominique.
On Sat, 15 Aug 2009 08:28:53 -0400, <dominique at savagesoftwaresolutions.com>
wrote:
> I have the following 2 functions to determine the transparency colour of
a
> bitmap...
>
> // Returns the transparent color for the bitmap
> function Bitmap24_TransparentColor(bitmap:TBitmap):TColor;
> var
> row : PRGBArray;
> {$IFDEF FPC}
> ScanLineImage : TLazIntfImage;
> {$ENDIF}
> begin
> Result := clBlack;
>
> if not IsValidBitmap( bitmap, 'Bitmap24_TransparentColor' ) then
> begin
> Exit;
> end;
>
> {$IFDEF FPC}
> ScanLineImage := bitmap.CreateIntfImage;
> {$ENDIF}
>
> {$IFDEF FPC}
> row := ScanLineImage.GetDataLineStart( bitmap.Height - 1 );
> {$ELSE}
> row := bitmap.ScanLine[ bitmap.Height - 1 ];
> {$ENDIF}
>
> {$IFDEF FPC}
> ScanLineImage.Free;
> {$ENDIF}
>
> Result := Color_RGBtoColor(row[0]);
> end;
>
> // Transforms a RGB color into a standard color
> function Color_RGBToColor(col : TRGB) : TColor;
> begin
> Result := $10000 * col.b + $100 * col.g + col.r; // ACCESS VIOLATION
> HERE if Image greater than 640x480
> end;
>
> I'm getting an Access violation when passing the row[0] to the
RGBtoColor.
> Can anyone see what I might be doing wrong?
> The only thing I noticed is that it seems to fail when I use images
greater
> than 640x480, but I'm willing to concede it may be a bit depth issue.
> Smaller image sizes seem to work fine.
>
> Would I be right in thinking that row[0] is the bottom right corner of
the
> image?
>
> Thanks,
>
> Dominique.
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
More information about the Lazarus
mailing list