/* * readInCursorFile - Read the cursor file and set up structures. */ static BOOL readInCursorFile( char *fname ) { FILE *fp; an_img_file *cursorfile; an_img *cursor; fp = fopen( fname, "rb" ); if (!fp) { WImgEditError( WIE_ERR_FILE_NOT_OPENED, fname ); return( FALSE ); } cursorfile = ImageOpen( fp ); if (!cursorfile) { fclose( fp ); WImgEditError( WIE_ERR_BAD_CURSOR_FILE, fname ); return( FALSE ); } cursor = ImgResourceToImg( fp, cursorfile, 0 ); fclose( fp ); return( DoReadCursor( fname, cursorfile, cursor, NULL, NULL ) ); } /* readInCursorFile */
/* * readInIconFile - read the icon file and set up structures */ static BOOL readInIconFile( char *fname ) { FILE *fp; an_img_file *iconfile; img_node *node; int num_of_images; HDC hdc; int i; an_img *icon; char filename[_MAX_FNAME + _MAX_EXT]; fp = fopen( fname, "rb" ); if( fp == NULL ) { WImgEditError( WIE_ERR_FILE_NOT_OPENED, fname ); return( FALSE ); } GetFnameFromPath( fname, filename ); #ifdef JAMIE { char msg[80]; sprintf( msg, "Jamie: IconHeader size = %d", sizeof( an_img_file ) ); MessageBox( HMainWindow, msg, "FYI", MB_OK ); } #endif iconfile = ImageOpen( fp ); if( iconfile == NULL ) { fclose( fp ); WImgEditError( WIE_ERR_BAD_ICON_FILE, filename ); return( FALSE ); } num_of_images = iconfile->count; #if 0 /* See biBitCount test below... */ for( i = 0; i < num_of_images; i++ ) { if( iconfile->resources[i].color_count != 2 && iconfile->resources[i].color_count != 8 && iconfile->resources[i].color_count != 16 && iconfile->resources[i].color_count != 0 ) { WImgEditError( WIE_ERR_BAD_ICON_CLR, filename ); ImageClose( iconfile ); fclose( fp ); return( FALSE ); } } #endif node = MemAlloc( sizeof( img_node ) * num_of_images ); hdc = GetDC( NULL ); for( i = 0; i < num_of_images; i++ ) { icon = ImgResourceToImg( fp, iconfile, i ); if( icon->bm->bmiHeader.biBitCount != 4 && icon->bm->bmiHeader.biBitCount != 1 && icon->bm->bmiHeader.biBitCount != 8 ) { WImgEditError( WIE_ERR_BAD_ICON_CLR, filename ); ReleaseDC( NULL, hdc ); ImageFini( icon ); ImageClose( iconfile ); fclose( fp ); MemFree( node ); return( FALSE ); } node[i].imgtype = ICON_IMG; node[i].bitcount = icon->bm->bmiHeader.biBitCount; node[i].width = icon->bm->bmiHeader.biWidth; node[i].height = icon->bm->bmiHeader.biHeight; node[i].hotspot.x = 0; node[i].hotspot.y = 0; node[i].handbitmap = ImgToAndBitmap( hdc, icon ); node[i].hxorbitmap = ImgToXorBitmap( hdc, icon ); node[i].num_of_images = num_of_images; node[i].viewhwnd = NULL; node[i].wrinfo = NULL; node[i].lnode = NULL; if( i > 0 ) { node[i - 1].nexticon = &node[i]; } node[i].issaved = TRUE; node[i].next = NULL; strcpy( node[i].fname, strupr( fname ) ); ImageFini( icon ); } node[i - 1].nexticon = NULL; ReleaseDC( NULL, hdc ); ImageClose( iconfile ); fclose( fp ); WriteIconLoadedText( filename, node->num_of_images ); CreateNewDrawPad( node ); MemFree( node ); return( TRUE ); } /* readInIconFile */