|  Дядя Миша racing for fish
 
  
	
Дата регистрации: Oct 2005Проживает: Кубань
 Сообщений: 33090
 Нанёс повреждений: 392 ед.
 
 
 Рейтинг  
 
 
 | C++ Source Code: 
| 1 | qboolean Image_SaveBMP( const char *name, rgbdata_t *pix ) | 
 | 6 |   RGBQUAD		rgrgbPalette[256]; | 
 | 9 |   byte		*pb, *pbPal = NULL; | 
 | 14 |   if( FS_FileExists( name, false ) && !(image.cmd_flags & IL_ALLOW_OVERWRITE )) | 
 | 15 |     return false; // already existed | 
 | 17 |   // bogus parameter check | 
 | 18 |   if( !pix->palette || !pix->buffer ) | 
 | 27 |         MsgDev( D_WARN, "Image_SaveBMP: unsupported image type %s\n", PFDesc[pix->type].name ); | 
 | 31 |   pfile = FS_Open( name, "wb", false ); | 
 | 32 |   if( !pfile ) return false; | 
 | 34 |   // NOTE: align transparency column will sucessfully removed | 
 | 35 |   // after create sprite or lump image, it's just standard requiriments | 
 | 36 |   biTrueWidth = ((pix->width + 3) & ~3); | 
 | 37 |   cbBmpBits = biTrueWidth * pix->height; | 
 | 38 |   cbPalBytes = 256 * sizeof( RGBQUAD ); | 
 | 40 |   // Bogus file header check | 
 | 41 |   bmfh.bfType = MAKEWORD( 'B', 'M' ); | 
 | 42 |   bmfh.bfSize = sizeof(bmfh) + sizeof(bmih) + cbBmpBits + cbPalBytes; | 
 | 45 |   bmfh.bfOffBits = sizeof(bmfh) + sizeof(bmih) + cbPalBytes; | 
 | 48 |   FS_Write( pfile, &bmfh, sizeof(bmfh)); | 
 | 51 |   bmih.biSize = sizeof(bmih); | 
 | 52 |   bmih.biWidth = biTrueWidth; | 
 | 53 |   bmih.biHeight = pix->height; | 
 | 56 |   bmih.biCompression = BI_RGB; | 
 | 58 |   bmih.biXPelsPerMeter = 0; | 
 | 59 |   bmih.biYPelsPerMeter = 0; | 
 | 61 |   bmih.biClrImportant = 0; | 
 | 64 |   FS_Write( pfile, &bmih, sizeof(bmih)); | 
 | 67 |   // copy over used entries | 
 | 68 |   for( i = 0; i < (int)bmih.biClrUsed; i++ ) | 
 | 70 |     rgrgbPalette[i].rgbRed = *pb++; | 
 | 71 |     rgrgbPalette[i].rgbGreen = *pb++; | 
 | 72 |     rgrgbPalette[i].rgbBlue = *pb++; | 
 | 74 |     // bmp feature - can store 32-bit palette if present | 
 | 75 |     // some viewers e.g. fimg.exe can show alpha-chanell for it | 
 | 76 |     if( pix->type == PF_INDEXED_32 ) | 
 | 77 |       rgrgbPalette[i].rgbReserved = *pb++; | 
 | 78 |     else rgrgbPalette[i].rgbReserved = 0; | 
 | 81 |   // make last color is 0 0 255, xwad expect this (but ignore decals) | 
 | 82 |   if( com.strrchr( name, '{' ) && pix->flags & IMAGE_HAS_ALPHA && !( pix->flags & IMAGE_COLORINDEX )) | 
 | 84 |     rgrgbPalette[255].rgbRed = 0x00; | 
 | 85 |     rgrgbPalette[255].rgbGreen = 0x00; | 
 | 86 |     rgrgbPalette[255].rgbBlue = 0xFF; | 
 | 87 |     rgrgbPalette[255].rgbReserved = 0x00; | 
 | 90 |   // write palette( bmih.biClrUsed entries ) | 
 | 91 |   cbPalBytes = bmih.biClrUsed * sizeof( RGBQUAD ); | 
 | 92 |   FS_Write( pfile, rgrgbPalette, cbPalBytes ); | 
 | 93 |   pbBmpBits = Mem_Alloc( Sys.imagepool, cbBmpBits ); | 
 | 94 |   Mem_Set( pbBmpBits, 0xFF, cbBmpBits );	// fill buffer with last palette color | 
 | 97 |   pb += (pix->height - 1) * pix->width; | 
 | 99 |   for( i = 0; i < bmih.biHeight; i++ ) | 
 | 101 |     Mem_Copy( &pbBmpBits[biTrueWidth * i], pb, pix->width ); | 
 | 105 |   // write bitmap bits (remainder of file) | 
 | 106 |   FS_Write( pfile, pbBmpBits, cbBmpBits ); | 
 | 108 |   Mem_Free( pbBmpBits ); | 
 __________________My Projects: download page
 
 F.A.Q по XashNT
 Блог разработчика в телеграме
 
 Цитата: C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
 
 Сообщить модератору   | IP: Записан
	Сообщение: 70215
 
 |