This is ToyWinBMP.m in view mode; [Download] [Up]
#import "ToyWinBMP.h"
#import "bmp.h"
@implementation ToyWinBMP
- (commonInfo *)drawToyWin:(const char *)fileName type:(int)type
map:(unsigned char **)map err:(int *)err
{
FILE *fp;
bmpHeader *bh = NULL;
commonInfo *cinf = NULL;
int bits = 8, alert;
*err = 0;
if ((fp = fopen(fileName, "r")) == NULL) {
*err = Err_OPEN;
return NULL;
}
if ((bh = loadBmpHeader(fp, err)) == NULL) {
(void)fclose(fp);
return NULL;
}
if (!makeMapOnly)
[self initLocateWindow:fileName width:bh->x height:bh->y];
/* Bitmap data of planes in 'map[]' is one block of memory area.
map[0] is beginning of the area, and map[1] = map[0] + (size of plane),
and so on. But, if the image is monochrome, map[1] is NULL.
The area of map[0] and (commonInfo *)cinf are kept in an object of
ToyView, and freed by it.
*/
alert = bmpGetImage(fp, bh, &bits, map);
cinf = bmpInfo(bh, bits, (map[1] == NULL));
freeBmpHeader(bh);
(void)fclose(fp);
if (alert) /* Alert Only */
warnAlert(fileName, alert);
if (makeMapOnly)
return cinf;
if ([self drawView:map info: cinf] == nil)
*err = -1;
return cinf;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.