Esempio n. 1
0
/*
 * readCoreInfo - read BITMAPCOREINFO structure from a bitmap file
 */
static BITMAPCOREINFO *readCoreInfo( FILE *fp )
{
    BITMAPCOREINFO      *bm_core;
    BITMAPCOREHEADER    *header;
    long                bitmap_size;

    header = MemAlloc( sizeof( BITMAPCOREHEADER ) );
    if( header == NULL ) {
        return( NULL );
    }
    fseek( fp, START_OF_HEADER, SEEK_SET );
    fread( header, sizeof( BITMAPCOREHEADER ), 1, fp );
    fseek( fp, START_OF_HEADER, SEEK_SET );
    bitmap_size = CORE_INFO_SIZE( header->bcBitCount );
    bm_core = MemReAlloc( header, bitmap_size );
    if( bm_core == NULL ) {
        return( NULL );
    }
    fread( bm_core, bitmap_size, 1, fp );
    return( bm_core );

} /* readCoreInfo */
Esempio n. 2
0
bool WRAPI WRAddBitmapFileHeader( BYTE **data, size_t *size )
{
    BITMAPFILEHEADER    *bmfh;
    BITMAPINFO          *bmi;
    BITMAPCOREINFO      *bmci;
    int                 hsize;
    bool                is_core;

    if( data == NULL || size == NULL ) {
        return( false );
    }

    is_core = ( *(DWORD *)*data == sizeof( BITMAPCOREHEADER ) );

    hsize = sizeof( BITMAPFILEHEADER );
    *data = MemRealloc( *data, *size + hsize );
    if( *data == NULL ) {
        return( false );
    }
    memmove( *data + hsize, *data, *size );
    memset( *data, 0, hsize );
    *size += hsize;

    bmfh = (BITMAPFILEHEADER *)*data;
    bmfh->bfType = BITMAP_TYPE;
    bmfh->bfSize = *size;
    bmfh->bfOffBits = hsize;

    if( is_core ) {
        bmci = (BITMAPCOREINFO *)( *data + hsize );
        bmfh->bfOffBits += CORE_INFO_SIZE( bmci->bmciHeader.bcBitCount );
    } else {
        bmi = (BITMAPINFO *)( *data + hsize );
        bmfh->bfOffBits += DIB_INFO_SIZE( bmi->bmiHeader.biBitCount );
    }

    return( true );
}
Esempio n. 3
0
static BITMAPCOREINFO *WRReadCoreInfo( BYTE **data )
{
    BITMAPCOREINFO      *bm_core;
    BITMAPCOREHEADER    *header;
    long                bitmap_size;
    int                 pos;

    if( data == NULL || *data == NULL ) {
        return( NULL );
    }

    pos = START_OF_HEADER;
    header = (BITMAPCOREHEADER *)( *data + pos );
    bitmap_size = CORE_INFO_SIZE( header->bcBitCount );
    bm_core = MemAlloc( bitmap_size );
    if( bm_core == NULL ) {
        return( NULL );
    }
    memcpy( bm_core, *data + pos, bitmap_size );
    *data += pos + bitmap_size;

    return( bm_core );
}