Talk:PascalMagick

From Lazarus wiki
Jump to: navigation, search

Bug Reporting/Feature Request

Tests are necessary to verify if the bindings work with all versions of ImageMagick.

You can post Bug Reports / Feature Requests here:


Bug 1

There is an error in pixel_iterator.inc The correct declaration is function NewPixelIterator(wand: PMagickWand): PPixelIterator; cdecl; external WandExport;

also the following declarations should be added function PixelGetNextIteratorRow(iterator: PPixeliterator; var wandCount : Cardinal) : PPPixelWand; cdecl; external WandExport;

function PixelGetPreviousIteratorRow(iterator: PPixeliterator; var wandCount : Cardinal) : PPPixelWand; cdecl; external WandExport;

Cheers, Todd.

Status: Fixed on 0.3


Bug 2

There is a problem in "magick_wand.pas" and "ImageMagick.pas": the compiler option "{$PACKRECORDS C}" must be in the "{$ifdef FPC}[...]{$endif}". Otherwise the units do not compile with Delphi (Delphi 7 in my case).

Best wishes, Marc Geldon (PRO IT SYSTEMS)


Bug 3

your definition of "MagickGetImagePage" in magick_image.inc:

function MagickGetImagePage(wand: PMagickWand; width, height: PCardinal; x, y: Integer): MagickBooleanType; cdecl; external WandExport;

correct definition (x and y are "PInteger"!):

function MagickGetImagePage(wand: PMagickWand; width, height: PCardinal; x, y: PInteger): MagickBooleanType; cdecl; external WandExport;

Best wishes, Marc Geldon (PRO IT SYSTEMS)


Bug 4

ImageMagick 6.2.7 (don't know exactly what version) introduced a few changes in MagickWand record and others. Also, a few variable definitions were incorrectly declared, and some function imports missed the "cdecl", so they didn't work (like NewMagickWand()). I've fixed all this issues. Can I upload the changes somewhere?

Best regards, Arcnor

Hello, you can send it to me, and I´ll apply the changes. My e-mail is felipemonteiro.carvalho@gmail.com By the way, did you correct bugs 2 and 3 also? thanks a lot --Sekelsenmat 05:07, 8 June 2006 (CEST)

Bug 5

MagickNewImage parameters convention is cdecl.

Correct definition of MagickNewImage in magick_image.inc:

function MagickNewImage(wand: PMagickWand; const columns, rows: Cardinal;
 const background: PPixelWand): MagickBooleanType; cdecl; external WandExport;

Bug 6

MagickCompositeImage : Composite_wand is a PMagickWand constant.

Correct definition of MagickCompositeImage in magick_image.inc:

function MagickCompositeImage(wand: PMagickWand; const composite_wand: PMagickWand; 
 const compose: CompositeOperator; const x, y: Integer): MagickBooleanType; cdecl; external WandExport;


--RuBBeR 18:03, 3 July 2006 (CEST)


Bug 7

When I tried PascalMagick-0.4 with ImageMagick-6.6.3-0-Q16-windows-x64-dll.exe installer on Windows 7 Home Premium, the wanddemo did not work: the dos window displayed, but got error dialog:

wanddemo.exe Application error: The application was unable to start correctly (0x000007b).

For those wanting a solution, I uninstalled the 64-bit version of ImageMagick and installed the 32 bit version, using installer ImageMagick-6.6.3-0-Q16-windows-dll.exe and then wanddemo did work.

For those wanting to diagnose the problem, I obtained a backtrace for the 64-bit version ( see instructions at Creating a Backtrace with GDB).

Running Command Prompt:

C:\programs\PascalMagick\demo1>gdb wanddemo.exe
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-mingw32"...
(gdb) break fpc_raiseexception
Breakpoint 1 at 0x4063c6
(gdb) run
Starting program: C:\programs\PascalMagick\demo1/wanddemo.exe
[New thread 5276.0x95c]
Error: dll starting at 0x77ac0000 not found.
Error: dll starting at 0x77820000 not found.
Error: dll starting at 0x77ac0000 not found.
Error: dll starting at 0x779c0000 not found.
Error: dll starting at 0x1430000 not found.

Program exited with code 030000000173.
You can't do that without a process to debug.
(gdb) backtrace
No stack.
(gdb)

Recompiling with compiler option to 'Generate debugging info for GDB' only changed one line of GDB output:

'Error: dll starting at 0x1430000 not found.'

changed to

'Error: dll starting at 0x320000 not found.'

I hope this helps.

Doug Morrison (dita4all.com)


Status: Bugs 2-6 fixed on v0.4. Thanks to all (Arcnor)