@@ -487,26 +487,26 @@ TYPE
487
487
488
488
(* ****************************** *)
489
489
(*! used for easy accessing to pixels of various image types, see Scanline procs. ( Necati ) *)
490
- PtrLineRGB* = POINTER {UNTRACED, UNSAFE}TO ARRAY OF RGBTRIPLE; (* for accessing 24 bit lines, RGB *)
491
- PtrLineRGBA* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF RGBQUAD; (* for accessing 32 bit lines, RGBA *)
492
- PtrFISINT16* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF SIGNED16; (* for 16 bit integers *)
493
- PtrFIINT32* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF SIGNED32; (* for 32 bit integers *)
494
- PtrFIFLOAT* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF FLOAT32; (* for 32 bit real *)
495
- PtrFIDOUBLE* = POINTER {UNTRACED, UNSAFE}TO ARRAY OF FLOAT64; (* for 64 bit real *)
496
-
497
- PtrFICOMPLEX* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF FICOMPLEX; (* 2x64 bits real, Complex *)
498
- PtrFIRGB16* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF FIRGB16; (* for 48-bit RGB, 3x16 bits *)
499
- PtrFIRGBA16* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF FIRGBA16; (* 64-bit RGBA, 4x16 bits *)
500
- PtrFIRGBF* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF FIRGBF; (* 96-bit RGB Float, 3*32 bits *)
501
- PtrFIRGBAF* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF FIRGBAF; (* 128-bit RGBA Float, 4x32 bits *)
490
+ PtrLineRGB* = POINTER {UNTRACED, UNSAFE}TO ARRAY MAX(SIZE) OF RGBTRIPLE; (* for accessing 24 bit lines, RGB *)
491
+ PtrLineRGBA* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF RGBQUAD; (* for accessing 32 bit lines, RGBA *)
492
+ PtrFISINT16* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF SIGNED16; (* for 16 bit integers *)
493
+ PtrFIINT32* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF SIGNED32; (* for 32 bit integers *)
494
+ PtrFIFLOAT* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF FLOAT32; (* for 32 bit real *)
495
+ PtrFIDOUBLE* = POINTER {UNTRACED, UNSAFE}TO ARRAY MAX(SIZE) OF FLOAT64; (* for 64 bit real *)
496
+
497
+ PtrFICOMPLEX* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF FICOMPLEX; (* 2x64 bits real, Complex *)
498
+ PtrFIRGB16* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF FIRGB16; (* for 48-bit RGB, 3x16 bits *)
499
+ PtrFIRGBA16* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF FIRGBA16; (* 64-bit RGBA, 4x16 bits *)
500
+ PtrFIRGBF* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF FIRGBF; (* 96-bit RGB Float, 3*32 bits *)
501
+ PtrFIRGBAF* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF FIRGBAF; (* 128-bit RGBA Float, 4x32 bits *)
502
502
503
503
Palette* = ARRAY 256 OF RGBQUAD;
504
504
PtrPALETTE* = POINTER {UNTRACED, UNSAFE} TO Palette;
505
505
506
506
(* File IO routines *)
507
507
FHandle* = ADDRESS;
508
- PSint* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF SIGNED16;
509
- Pint* = POINTER {UNTRACED, UNSAFE} TO ARRAY OF SIGNED32;
508
+ PSint* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF SIGNED16;
509
+ Pint* = POINTER {UNTRACED, UNSAFE} TO ARRAY MAX(SIZE) OF SIGNED32;
510
510
FI_ReadProc* = PROCEDURE {PlatformCC} (buffer: ADDRESS; size: SIGNED32; count: SIGNED32; handle: FHandle): SIGNED32;
511
511
FI_WriteProc* = PROCEDURE {PlatformCC} (buffer: ADDRESS; size: SIGNED32; count: SIGNED32; handle: FHandle): SIGNED32;
512
512
FI_SeekProc* = PROCEDURE {PlatformCC} (handle: FHandle; offset: SIGNED32; origin: SIGNED32): PSint;
526
526
FIMETADATA* = POINTER {UNTRACED, UNSAFE} TO RECORD END; (* Handle to a metadata model *)
527
527
FITAG* = POINTER {UNTRACED, UNSAFE} TO RECORD END; (* Handle to a FreeImage tag *)
528
528
529
- OutputMessageFunction* = PROCEDURE {PlatformCC} (fif: IMAGE_FORMAT; msg: POINTER {UNSAFE} TO ARRAY OF CHAR);
530
- OutputMessageFunctionStdCall* = PROCEDURE {PlatformCC} (fif: IMAGE_FORMAT; msg: POINTER {UNSAFE} TO ARRAY OF CHAR);
529
+ OutputMessageFunction* = PROCEDURE {PlatformCC} (fif: IMAGE_FORMAT; msg: POINTER {UNSAFE} TO ARRAY 1024 OF CHAR);
530
+ OutputMessageFunctionStdCall* = PROCEDURE {PlatformCC} (fif: IMAGE_FORMAT; msg: POINTER {UNSAFE} TO ARRAY 1024 OF CHAR);
531
531
532
532
533
533
CONST
@@ -1452,25 +1452,24 @@ BEGIN
1452
1452
END OnClose;
1453
1453
1454
1454
(* utilities *)
1455
- PROCEDURE GetStringFromAddr*(adr: POINTER {UNSAFE} TO ARRAY OF CHAR ): Strings.String;
1456
- VAR
1455
+ (* Get string from address *)
1456
+ PROCEDURE GetStringFromAddr*(adr: ADDRESS): Strings.String;
1457
+ VAR s: POINTER {UNSAFE} TO ARRAY MAX(SIZE) OF CHAR;
1457
1458
str: Strings.String;
1458
- pos: SIZE ;
1459
+ pos: SIGNED32 ;
1459
1460
BEGIN
1460
-
1461
+ s := adr;
1461
1462
pos := 0;
1462
1463
IF adr # NIL THEN
1463
- WHILE adr [pos] # 0X DO INC(pos); END;
1464
+ WHILE s [pos] # 0X DO INC(pos); END;
1464
1465
NEW(str, pos + 1);
1465
1466
pos := 0;
1466
- WHILE adr [pos] # 0X DO str[pos] := adr [pos]; INC(pos); END;
1467
+ WHILE s [pos] # 0X DO str[pos] := s [pos]; INC(pos); END;
1467
1468
1468
1469
ELSE NEW(str, 1);
1469
1470
END;
1470
-
1471
1471
str[pos] := 0X;
1472
1472
RETURN str;
1473
-
1474
1473
END GetStringFromAddr;
1475
1474
1476
1475
(** wrapper procedure for getVersion() *)
@@ -1612,21 +1611,11 @@ BEGIN
1612
1611
END SaveImage;
1613
1612
1614
1613
(* called by FreeImage when error occurs *)
1615
- #IF UNIX THEN
1616
- PROCEDURE {C} MyOutputMessageFunction(fif: IMAGE_FORMAT; msg: POINTER {UNSAFE} TO ARRAY OF CHAR);
1617
- #ELSE
1618
- PROCEDURE {WINAPI} MyOutputMessageFunction(fif: IMAGE_FORMAT; msg: POINTER {UNSAFE} TO ARRAY OF CHAR);
1619
- #END
1620
-
1621
- VAR
1622
- i: SIGNED32;
1614
+ PROCEDURE {PlatformCC} MyOutputMessageFunction(fif: IMAGE_FORMAT; msg: POINTER {UNSAFE} TO ARRAY 1024 OF CHAR);
1623
1615
BEGIN
1624
1616
IF msg # NIL THEN
1625
1617
KernelLog.String("FreeImage ERROR: ");
1626
- i := 0;
1627
- (* limit msg length to 255 *)
1628
- WHILE (i < 255) & (msg[i] # 0X) DO KernelLog.Char( msg[i] ); INC( i ); END;
1629
-
1618
+ KernelLog.String(msg^);
1630
1619
KernelLog.String(", FIF_FORMAT= "); KernelLog.Int(fif, 0);
1631
1620
KernelLog.Ln;
1632
1621
END;
0 commit comments