Exemple #1
0
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;
}