Mercurial > hg > dmlib
comparison tools/gfxconv.c @ 2005:2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
A negative value will start from end of the input.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 07 Jul 2018 01:12:21 +0300 |
parents | 161e731eb152 |
children | 9f7e9a393771 |
comparison
equal
deleted
inserted
replaced
2004:161e731eb152 | 2005:2ff214f811b4 |
---|---|
101 optOutFormat = -1, | 101 optOutFormat = -1, |
102 optItemCount = -1, | 102 optItemCount = -1, |
103 optPlanedWidth = 1, | 103 optPlanedWidth = 1, |
104 optForcedInSubFormat = -1; | 104 optForcedInSubFormat = -1; |
105 unsigned int optInSkip = 0; | 105 unsigned int optInSkip = 0; |
106 BOOL optInSkipNeg = FALSE; | |
106 | 107 |
107 int optCropMode = CROP_NONE, | 108 int optCropMode = CROP_NONE, |
108 optCropX0, optCropY0, | 109 optCropX0, optCropY0, |
109 optCropW, optCropH; | 110 optCropW, optCropH; |
110 | 111 |
651 case 3: | 652 case 3: |
652 optOutFilename = optArg; | 653 optOutFilename = optArg; |
653 break; | 654 break; |
654 | 655 |
655 case 4: | 656 case 4: |
656 if (!dmGetIntVal(optArg, &optInSkip, NULL)) | 657 if (!dmGetIntVal(optArg, &optInSkip, &optInSkipNeg)) |
657 { | 658 { |
658 dmErrorMsg("Invalid skip value argument '%s'.\n", optArg); | 659 dmErrorMsg("Invalid skip value argument '%s'.\n", optArg); |
659 return FALSE; | 660 return FALSE; |
660 } | 661 } |
661 break; | 662 break; |
1789 DMC64ImageConvSpec imageSpecC64; | 1790 DMC64ImageConvSpec imageSpecC64; |
1790 const DMC64ImageFormat *inC64Fmt = NULL; | 1791 const DMC64ImageFormat *inC64Fmt = NULL; |
1791 DMConvFormat inFormat, outFormat; | 1792 DMConvFormat inFormat, outFormat; |
1792 DMC64Image *inC64Image = NULL, *outC64Image = NULL; | 1793 DMC64Image *inC64Image = NULL, *outC64Image = NULL; |
1793 Uint8 *dataBuf = NULL, *dataBufOrig = NULL; | 1794 Uint8 *dataBuf = NULL, *dataBufOrig = NULL; |
1794 size_t dataSize, dataSizeOrig; | 1795 size_t dataSize, dataSizeOrig, dataRealOffs; |
1795 int i, n; | 1796 int i, n; |
1796 | 1797 |
1797 // Default color mapping | 1798 // Default color mapping |
1798 for (i = 0; i < C64_NCOLORS; i++) | 1799 for (i = 0; i < C64_NCOLORS; i++) |
1799 optColorMap[i] = i; | 1800 optColorMap[i] = i; |
1894 dmErrorMsg("Input skip value %d is larger than input size %" DM_PRIu_SIZE_T ".\n", | 1895 dmErrorMsg("Input skip value %d is larger than input size %" DM_PRIu_SIZE_T ".\n", |
1895 optInSkip, dataSizeOrig); | 1896 optInSkip, dataSizeOrig); |
1896 goto error; | 1897 goto error; |
1897 } | 1898 } |
1898 | 1899 |
1899 dataBuf = dataBufOrig + optInSkip; | 1900 if (optInSkipNeg) |
1900 dataSize = dataSizeOrig - optInSkip; | 1901 { |
1902 dataBuf = dataBufOrig + dataSizeOrig - optInSkip; | |
1903 dataSize = optInSkip; | |
1904 dataRealOffs = dataSizeOrig - optInSkip; | |
1905 | |
1906 dmMsg(1, "Input skip -%d (-%x). Offset %d (%x), size %d (%x).\n", | |
1907 optInSkip, optInSkip, | |
1908 dataRealOffs, dataRealOffs, | |
1909 dataSize, dataSize); | |
1910 | |
1911 } | |
1912 else | |
1913 { | |
1914 dataBuf = dataBufOrig + optInSkip; | |
1915 dataSize = dataSizeOrig - optInSkip; | |
1916 dataRealOffs = optInSkip; | |
1917 | |
1918 dmMsg(1, "Input skip %d (%x), size %d (%x).\n", | |
1919 optInSkip, optInSkip, | |
1920 dataSize, dataSize); | |
1921 } | |
1901 | 1922 |
1902 // Check for forced input format here | 1923 // Check for forced input format here |
1903 if (optForcedInSubFormat >= 0) | 1924 if (optForcedInSubFormat >= 0) |
1904 optInFormat = optForcedInSubFormat; | 1925 optInFormat = optForcedInSubFormat; |
1905 | 1926 |
1966 | 1987 |
1967 switch (optInType) | 1988 switch (optInType) |
1968 { | 1989 { |
1969 case FFMT_SPRITE: | 1990 case FFMT_SPRITE: |
1970 case FFMT_CHAR: | 1991 case FFMT_CHAR: |
1971 dmDumpSpritesAndChars(dataBuf, dataSize, optInSkip); | 1992 dmDumpSpritesAndChars(dataBuf, dataSize, dataRealOffs); |
1972 break; | 1993 break; |
1973 | 1994 |
1974 case FFMT_BITMAP: | 1995 case FFMT_BITMAP: |
1975 { | 1996 { |
1976 DMImage *outImage = NULL; | 1997 DMImage *outImage = NULL; |