[fpc-pascal] BLOCKWRITE-restrictions in writing .bmp-file?

Arjan van Dijk Arjan.van.Dijk at rivm.nl
Wed Sep 17 19:56:42 CEST 2008


Hi!

About 1 year ago, I had this excellently working UNIT of bitmap-picture
handling routines.
Today I wanted to use them again, but the result is crappy.
I was wondering if this can have something to do with
BLOCKWRITE-restrictions in the new version of FPC.

I have 2 routines for writing gridded variables to bitmap picture files:

- one that uses 1 byte per pixel (=256 colours)
Here the definition of the colours is written first, then all pixels are
written as index to the defined palette.
This routine still works.

- and one that takes 3 bytes per colour. Each byte gives R, G or B. No
palette is written.
This is the type of bmp that I want to use for combining pictures.
This is the one that refuses to give anything decent today!

The relevant part of code is:

.........write the header .......

FOR j := 1 TO NGridY DO
BEGIN
      FOR i := 1 TO NGridX DO
      BEGIN

........relate the gridded variable in this point to R, G and B
values........

        BLOCKWRITE(OutFile,PixelB,SIZEOF(PixelB));
        BLOCKWRITE(OutFile,PixelG,SIZEOF(PixelG));
        BLOCKWRITE(OutFile,PixelR,SIZEOF(PixelR));
      END;

{ Fill line with dummy-data, since .bmp requires N-bytes divisible by 4
points on 1 line }

      NDum := 3*NGridX;

      IF (((NDum    ) MOD 4)<>0) THEN
BLOCKWRITE(OutFile,Pixel,SIZEOF(Pixel));
      IF (((NDum + 1) MOD 4)<>0) THEN
BLOCKWRITE(OutFile,Pixel,SIZEOF(Pixel));
      IF (((NDum + 2) MOD 4)<>0) THEN
BLOCKWRITE(OutFile,Pixel,SIZEOF(Pixel));
END;


Could it be that with the new compiler (like I found out with FORTRAN...)
BLOCKWRITE requires
a MINIMUM set of bytes to write for it to work? In my code each BLOCKWRITE
writes only 1 byte.

I am using Version 1.0.10 2008/08/03 of the IDE on Windows XP (SP2)
Compiler version 2.2.2, precompiled binary.

Suggestions welcome!

Thanks!


Arjan

____________________________________________________________________________

DISCLAIMER:  http://www.rivm.nl/disclaimer.htm




More information about the fpc-pascal mailing list