about summary refs log tree commit diff
path: root/converter
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2021-06-30 19:41:51 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2021-06-30 19:41:51 +0000
commit81fecd2b0abfba11fbd934b372fed659977c11c6 (patch)
tree289b169b91e3ad4027f216bd841a35033cc1c8b6 /converter
parente722d4426fa43a12dcba8369808b28af4e38b526 (diff)
downloadnetpbm-mirror-81fecd2b0abfba11fbd934b372fed659977c11c6.tar.gz
netpbm-mirror-81fecd2b0abfba11fbd934b372fed659977c11c6.tar.xz
netpbm-mirror-81fecd2b0abfba11fbd934b372fed659977c11c6.zip
Release 10.73.36
git-svn-id: http://svn.code.sf.net/p/netpbm/code/super_stable@4122 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'converter')
-rw-r--r--converter/other/pamtogif.c4
-rw-r--r--converter/other/pamtopng.c29
2 files changed, 22 insertions, 11 deletions
diff --git a/converter/other/pamtogif.c b/converter/other/pamtogif.c
index aabf7fc2..d20fa650 100644
--- a/converter/other/pamtogif.c
+++ b/converter/other/pamtogif.c
@@ -95,9 +95,9 @@ pamAlphaPlane(struct pam * const pamP) {
     if (streq(pamP->tuple_type, "RGB_ALPHA"))
         alphaPlane = 3;
     else if (streq(pamP->tuple_type, "GRAYSCALE_ALPHA"))
-        alphaPlane = 2;
+        alphaPlane = 1;
     else if (streq(pamP->tuple_type, "BLACKANDWHITE_ALPHA"))
-        alphaPlane = 2;
+        alphaPlane = 1;
     else
         alphaPlane = 0;
     
diff --git a/converter/other/pamtopng.c b/converter/other/pamtopng.c
index fdeb6582..21161035 100644
--- a/converter/other/pamtopng.c
+++ b/converter/other/pamtopng.c
@@ -61,8 +61,8 @@ static bool verbose;
 struct CmdlineInfo {
     const char * inputFileName;
     unsigned int verbose;
-    unsigned int transparencySpec;
-    const char * transparency;
+    unsigned int transparentSpec;
+    const char * transparent;
     unsigned int chromaSpec;
     struct pngx_chroma chroma;
     unsigned int gammaSpec;
@@ -205,8 +205,8 @@ parseCommandLine (int                  argc,
 
     OPTENT3(0,  "verbose",      OPT_FLAG,       NULL,
             &cmdlineP->verbose,        0);
-    OPTENT3(0,  "transparency", OPT_STRING,     &cmdlineP->transparency,
-            &cmdlineP->transparencySpec, 0);
+    OPTENT3(0,  "transparent", OPT_STRING,      &cmdlineP->transparent,
+            &cmdlineP->transparentSpec, 0);
     OPTENT3(0,  "chroma",       OPT_STRING,     &chroma,
             &cmdlineP->chromaSpec,     0);
     OPTENT3(0,  "gamma",        OPT_FLOAT,      &cmdlineP->gamma,
@@ -296,7 +296,17 @@ colorTypeFromInputType(const struct pam * const pamP) {
             pm_error("Input tuple type is GRAYSCALE, "
                      "but number of planes is %u instead of 1",
                      pamP->depth);
-    } else if (strneq(pamP->tuple_type, "BLACKANDWHITE", 3)) {
+     } else if (strneq(pamP->tuple_type, "BLACKANDWHITE_ALPHA", 19)) {
+        if (pamP->depth != 2)
+            pm_error("Input tuple type is BLACKANDWHITE_ALPHA, "
+                     "but number of planes is %u instead of 2",
+                     pamP->depth);
+        if (pamP->maxval != 1)
+            pm_error("Input tuple type is BLACKANDWHITE_ALPHA, "
+                     "but maxval is %u instead of 1", (unsigned)pamP->maxval);
+
+        retval = PNG_COLOR_TYPE_GRAY_ALPHA;
+    } else if (strneq(pamP->tuple_type, "BLACKANDWHITE", 13)) {
         if (pamP->depth != 1)
             pm_error("Input tuple type is BLACKANDWHITE, "
                      "but number of planes is %u instead of 1",
@@ -410,7 +420,7 @@ doTrnsChunk(const struct pam * const pamP,
     else {
         xelval const pngMaxval = pm_bitstomaxval(pngx_bitDepth(pngxP));
         png_color_16 const pngColor = parseAndScaleColor(trans, pngMaxval);
-            /* Transparency color from text format scaled from 16-bit to
+            /* Transparent color from text format scaled from 16-bit to
                maxval.
             */
 
@@ -687,7 +697,8 @@ writePng(const struct pam * const pamP,
 
 
     if ((pngColorType == PNG_COLOR_TYPE_RGB ||
-         pngColorType == PNG_COLOR_TYPE_RGB_ALPHA) &&
+         pngColorType == PNG_COLOR_TYPE_RGB_ALPHA ||
+         pngColorType == PNG_COLOR_TYPE_GRAY_ALPHA) &&
         pnmBitDepth < 8) {
 
         pngBitDepth = 8;
@@ -704,8 +715,8 @@ writePng(const struct pam * const pamP,
     sBit = sigBitsFmImgType(pnmBitDepth, pngColorType);
 
     /* Where requested, add ancillary chunks */
-    if (cmdline.transparencySpec)
-        doTrnsChunk(pamP, pngxP,cmdline.transparency);
+    if (cmdline.transparentSpec)
+        doTrnsChunk(pamP, pngxP,cmdline.transparent);
 
     if (cmdline.chromaSpec)
         doChrmChunk(pngxP, cmdline.chroma);