//--------------------------------------------------------------------------- #include #pragma hdrstop #include "raw_to_bmp.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::btn_openClick(TObject *Sender) { if(OpenDialog1->Execute()) { fname = OpenDialog1->FileName; Raw_File_Read(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::btn_transClick(TObject *Sender) { int i; BITMAPFILEHEADER bmfh; BITMAPINFOHEADER bmih; RGBQUAD bmp_pal[COLOR]; //BITMAPFILEHEADER ¼³Á¤ bmih.biSize=sizeof(BITMAPINFOHEADER); bmih.biWidth=WIDTH; bmih.biHeight=HEIGHT; bmih.biPlanes=1; bmih.biBitCount=8; bmih.biCompression=BI_RGB; bmih.biSizeImage=WIDTH*HEIGHT; bmih.biXPelsPerMeter=0; bmih.biYPelsPerMeter=0; bmih.biClrUsed=COLOR; bmih.biClrImportant=0; //BITMAPINFOHEADER ¼³Á¤ bmfh.bfType=BMP_FILE_NAME; bmfh.bfSize=sizeof(BITMAPFILEHEADER)+((COLOR)*sizeof(RGBQUAD))+sizeof(BITMAPINFOHEADER) +bmih.biSizeImage -2; bmfh.bfReserved1=0; bmfh.bfReserved2=0; bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER) +(COLOR*sizeof(RGBQUAD))-2; //PALETTE ¼³Á¤ for(i=0;i 256 monochrome ¼³Á¤ { bmp_pal[i].rgbRed=i; bmp_pal[i].rgbGreen=i; bmp_pal[i].rgbBlue=i; bmp_pal[i].rgbReserved=0; } Raw_to_Bmp(bmfh,bmih,bmp_pal); int pos = fname.Pos("."); AnsiString ffname = fname.Delete(pos ,4); ffname.Insert(".bmp",pos); Image1->Picture->LoadFromFile("data96.bmp"); } //--------------------------------------------------------------------------- // general function //--------------------------------------------------------------------------- void TForm1::Raw_File_Read(void) { FILE *in; int i,j; if((in = fopen(fname.c_str(),"rb"))==NULL) return; for(i=HEIGHT-1;i>=0;i--) { for(j=0;j