comparison tools/gfxconv.c @ 1490:665a0b917d22

Begin restructuring how C64 bitmaps are converted.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 11 May 2018 05:25:46 +0300
parents e967e8e3b8c3
children d987a4933e1c
comparison
equal deleted inserted replaced
1489:71e847ea9d22 1490:665a0b917d22
1024 dmFree(used); 1024 dmFree(used);
1025 return DMERR_OK; 1025 return DMERR_OK;
1026 } 1026 }
1027 1027
1028 1028
1029 int dmWriteBitmap(const char *filename, const DMC64Image *image) 1029 int dmConvertC64Bitmap(DMC64Image **pdst, const DMC64Image *src, const DMC64ImageFormat *fmt)
1030 {
1031 if (pdst == NULL || fmt == NULL || src == NULL)
1032 return DMERR_NULLPTR;
1033 return DMERR_OK;
1034 }
1035
1036
1037 int dmWriteBitmap(const char *filename, const DMC64Image *image, const DMC64ImageFormat *fmt)
1030 { 1038 {
1031 int res = DMERR_OK; 1039 int res = DMERR_OK;
1032 const DMC64ImageFormat *fmt = &dmC64ImageFormats[image->type];
1033 DMGrowBuf buf; 1040 DMGrowBuf buf;
1034 1041
1035 // Encode to target format 1042 // Encode to target format
1036 dmMsg(1, "Encoding C64 bitmap data to format '%s'\n", fmt->name); 1043 dmMsg(1, "Encoding C64 bitmap data to format '%s'\n", fmt->name);
1037 if ((res = dmC64EncodeBMP(&buf, image, fmt)) != DMERR_OK) 1044 if ((res = dmC64EncodeBMP(&buf, image, fmt)) != DMERR_OK)
1551 1558
1552 int main(int argc, char *argv[]) 1559 int main(int argc, char *argv[])
1553 { 1560 {
1554 FILE *inFile = NULL; 1561 FILE *inFile = NULL;
1555 const DMC64ImageFormat *inC64Fmt = NULL; 1562 const DMC64ImageFormat *inC64Fmt = NULL;
1556 DMC64Image *inC64Image = NULL; 1563 DMC64Image *inC64Image = NULL, *outC64Image = NULL;
1557 Uint8 *dataBuf = NULL, *dataBufOrig = NULL; 1564 Uint8 *dataBuf = NULL, *dataBufOrig = NULL;
1558 size_t dataSize, dataSizeOrig; 1565 size_t dataSize, dataSizeOrig;
1559 int i; 1566 int i;
1560 1567
1561 // Default colors 1568 // Default colors
1725 dmSetDefaultC64Palette(outImage); 1732 dmSetDefaultC64Palette(outImage);
1726 res = dmWriteImage(optOutFilename, outImage, &optSpec, optOutSubFormat, TRUE); 1733 res = dmWriteImage(optOutFilename, outImage, &optSpec, optOutSubFormat, TRUE);
1727 break; 1734 break;
1728 1735
1729 case FFMT_BITMAP: 1736 case FFMT_BITMAP:
1730 res = dmWriteBitmap(optOutFilename, inC64Image); 1737 if ((res = dmConvertC64Bitmap(&outC64Image, inC64Image, &dmC64ImageFormats[optOutSubFormat])) != DMERR_OK)
1738 {
1739 dmErrorMsg("Error in bitmap format conversion.\n");
1740 goto error;
1741 }
1742 res = dmWriteBitmap(optOutFilename, outC64Image, &dmC64ImageFormats[optOutSubFormat]);
1731 break; 1743 break;
1732 1744
1733 case FFMT_CHAR: 1745 case FFMT_CHAR:
1734 case FFMT_SPRITE: 1746 case FFMT_SPRITE:
1735 res = dmC64ConvertBMP2Image(&outImage, inC64Image, inC64Fmt); 1747 res = dmC64ConvertBMP2Image(&outImage, inC64Image, inC64Fmt);
1805 if (inFile != NULL) 1817 if (inFile != NULL)
1806 fclose(inFile); 1818 fclose(inFile);
1807 1819
1808 dmFree(dataBufOrig); 1820 dmFree(dataBufOrig);
1809 dmC64ImageFree(inC64Image); 1821 dmC64ImageFree(inC64Image);
1822 dmC64ImageFree(outC64Image);
1810 1823
1811 return 0; 1824 return 0;
1812 } 1825 }