'always wanted accurate
'greyscale in 8-bit bitmaps
'Rapidq does not support
'custom palettes. Here
'is how you make true
'greyscale bitmaps
'using only 8-bits/pixel
''GreyBMP.BMP = Grey24bitBMP.BMP     'does not work makes Grey 24 bit via DC


$TYPECHECK ON
$INCLUDE <Rapidq.inc>

CREATE GreyBMP AS QBITMAP  'create bmp
    Pixelformat = pf8bit
    Width = 1
    Height = 1
END CREATE
GreyBMP.Savetofile "~~tmp.bmp" 'image has palette errors

'create correct palette
Dim i As integer
DIM RGBPal(255, 3) AS BYTE 'RGBQUAD * 0-255 = 1024
FOR i = 0 TO 255    'make grey scale
    RGBPal(i,0) = i 'blue
    RGBPal(i,1) = i 'gr
    RGBPal(i,2) = i 'red
    RGBPal(i,3) = 0 'reserved
NEXT i
'now fix palette in file
DIM fStream AS QFILESTREAM
fStream.Open("~~tmp.bmp", fmOpenReadWrite)
fStream.Seek(58, soFromBeginning) 'start of palette 
fStream.SaveArray(RGBPal(0,0),1024)
fStream.Close

'load in correct palette
GreyBMP.LoadFromfile "~~tmp.bmp"
KILL "~~tmp.bmp"    'don't need it anymore
GreyBMP.Width = 256
GreyBMP.Height = 256
FOR i = 0 TO 255
  GreyBMP.Line(0,i, 256,i, RGB(i,i,i))
NEXT i

GreyBMP.Savetofile "Accurate8bit.bmp"
Application.Terminate
