TImageP TImageReaderBmp::load() { TImageP image; void *buff; int retCode = readbmp(getFilePath().getWideString().c_str(), &m_lx, &m_ly, &buff); if (retCode != OK) { throw TImageException(getFilePath(), buildBMPExceptionString(retCode)); } TRaster32P raster; raster.create(m_lx, m_ly); raster->lock(); memcpy(raster->pixels(), buff, m_lx * m_ly * sizeof(TPixel32)); raster->unlock(); TRasterImageP rasImage(raster); // image->setRaster(raster); delete[] buff; return TImageP(rasImage); }
int main(int argc, char **argv) { int fd, i; optind=opterr=0; while ((i = getopt(argc, argv, "s:"))!= -1) { segment=optarg; } if (optind != argc-1) { fprintf(stderr, "Usage: %s [-s segment] <file.bmp>.\n", argv[0]); return -1; } if ((fd = open(argv[optind], O_RDONLY)) < 0) { fprintf(stderr, "Error opening `%s'.\n", argv[optind]); return -1; } if (readhdr(fd) < 0) { fprintf(stderr, "`%s' is not a BMP file.\n", argv[optind]); close(fd); return -1; } checkbmp(); if (type == GFX_UNKNOWN) { fprintf(stderr, "`%s' is not a BMP file or\n does not contain a known C64 gfx type.\n" "Supported types:\n" " hires bitmap (320x200x1)\n" " 40 char font (256x64x1)\n" " 80 char font (128x64x1)\n" " hires sprite (24x21x1)\n", argv[1]); close(fd); return -1; } readbmp(fd); close(fd); if (!bitmap) { fprintf(stderr, "Error reading `%s' -- corrupted file.\n", argv[optind]); return -1; } char *name = basename(argv[optind]); char *ext = name + strlen(name) - 4; if (*ext == '.') { *ext = '\0'; } convertbmp(); #ifdef WIN32 setmode(fileno(stdout), O_BINARY); #endif switch (type) { case GFX_IMAGE: break; case GFX_FONT_40: case GFX_FONT_80: formatfont(name); break; case GFX_SPRITE: formatsprite(name); break; } free(c64bitmap); return 0; }