]> git.ipfire.org Git - thirdparty/cups-filters.git/commitdiff
libcupsfilters: Let raster driver functions use log function
authorTill Kamppeter <till.kamppeter@gmail.com>
Tue, 22 Mar 2022 12:59:34 +0000 (13:59 +0100)
committerTill Kamppeter <till.kamppeter@gmail.com>
Tue, 22 Mar 2022 12:59:34 +0000 (13:59 +0100)
libcupsfilters contains a lot of functions for raster drivers, to
convert raster formats, handle colors with lookup tables (LUTs),
... See cupsfilters/driver.h for the API. These functions, originally
designed for the use in CUPS filters, had logged directly to
stderr. Now to allow easy use of them in filter functions we have
changed all logging to go into a provided filter function and
appropriately added parameters to the call schemes of the functions
which need it to supply the log function.

Also updated the printer drivers rastertopclx and rastertoescpx and
also the test programs testcmyk and testdither to use the changed API.

cupsfilters/attr.c
cupsfilters/cmyk.c
cupsfilters/driver.h
cupsfilters/lut.c
cupsfilters/rgb.c
cupsfilters/testcmyk.c
cupsfilters/testdither.c
filter/rastertoescpx.c
filter/rastertopclx.c

index 81ca9bc629bc3d274a129de84bd3b77554b81d03..c1574e4c2fb42f01c219310c7e17502710831b25 100644 (file)
@@ -37,7 +37,9 @@ cupsFindAttr(ppd_file_t *ppd,         /* I - PPD file */
              const char *media,                /* I - Media type */
              const char *resolution,   /* I - Resolution */
             char       *spec,          /* O - Final selection string */
-            int        specsize)       /* I - Size of string buffer */
+            int        specsize,       /* I - Size of string buffer */
+            filter_logfunc_t log,      /* I - Log function */
+            void       *ld)            /* I - Log function data */
 {
   ppd_attr_t   *attr;                  /* Attribute */
 
@@ -63,41 +65,49 @@ cupsFindAttr(ppd_file_t *ppd,               /* I - PPD file */
   */
 
   snprintf(spec, specsize, "%s.%s.%s", colormodel, media, resolution);
-  fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Looking for \"*%s %s\"...", name, spec);
   if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
     return (attr);
 
   snprintf(spec, specsize, "%s.%s", colormodel, resolution);
-  fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Looking for \"*%s %s\"...", name, spec);
   if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
     return (attr);
 
   snprintf(spec, specsize, "%s", colormodel);
-  fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Looking for \"*%s %s\"...", name, spec);
   if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
     return (attr);
 
   snprintf(spec, specsize, "%s.%s", media, resolution);
-  fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Looking for \"*%s %s\"...", name, spec);
   if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
     return (attr);
 
   snprintf(spec, specsize, "%s", media);
-  fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Looking for \"*%s %s\"...", name, spec);
   if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
     return (attr);
 
   snprintf(spec, specsize, "%s", resolution);
-  fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Looking for \"*%s %s\"...", name, spec);
   if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
     return (attr);
 
   spec[0] = '\0';
-  fprintf(stderr, "DEBUG2: Looking for \"*%s\"...\n", name);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Looking for \"*%s\"...", name);
   if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
     return (attr);
 
-  fprintf(stderr, "DEBUG2: No instance of \"*%s\" found...\n", name);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "No instance of \"*%s\" found...", name);
 
   return (NULL);
 }
index 42766833bd6ad584114687dcc6eb1a6be111ed3b..0b787882e75f71253067eb87db1ddd4193c40e10 100644 (file)
@@ -1024,7 +1024,9 @@ cups_cmyk_t *                             /* O - CMYK color separation */
 cupsCMYKLoad(ppd_file_t *ppd,          /* I - PPD file */
             const char *colormodel,    /* I - ColorModel value */
             const char *media,         /* I - MediaType value */
-            const char *resolution)    /* I - Resolution value */
+            const char *resolution,    /* I - Resolution value */
+            filter_logfunc_t log,      /* I - Log function */
+            void       *ld)            /* I - Log function data */
 {
   cups_cmyk_t  *cmyk;                  /* CMYK color separation */
   char         spec[PPD_MAX_NAME];     /* Profile name */
@@ -1086,7 +1088,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
   */
 
   if ((attr = cupsFindAttr(ppd, "cupsInkChannels", colormodel, media,
-                           resolution, spec, sizeof(spec))) == NULL)
+                           resolution, spec, sizeof(spec), log, ld)) == NULL)
     return (NULL);
 
   num_channels = atoi(attr->value);
@@ -1102,7 +1104,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
   */
 
   if ((attr = cupsFindAttr(ppd, "cupsInkLimit", colormodel, media,
-                           resolution, spec, sizeof(spec))) != NULL)
+                           resolution, spec, sizeof(spec), log, ld)) != NULL)
     cupsCMYKSetInkLimit(cmyk, atof(attr->value));
 
  /*
@@ -1110,10 +1112,10 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
   */
 
   if ((attr = cupsFindAttr(ppd, "cupsBlackGeneration", colormodel, media,
-                           resolution, spec, sizeof(spec))) != NULL)
+                           resolution, spec, sizeof(spec), log, ld)) != NULL)
   {
     if (sscanf(attr->value, "%f%f", &lower, &upper) == 2)
-      cupsCMYKSetBlack(cmyk, lower, upper);
+      cupsCMYKSetBlack(cmyk, lower, upper, log, ld);
   }
 
  /*
@@ -1123,7 +1125,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
   if (num_channels != 3)
   {
     if ((attr = cupsFindAttr(ppd, "cupsBlackXY", colormodel, media,
-                             resolution, spec, sizeof(spec))) != NULL)
+                             resolution, spec, sizeof(spec), log, ld)) != NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1138,39 +1140,40 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
       {
        case 1 :
        case 2 :
-            cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints, log, ld);
            break;
        case 4 :
-            cupsCMYKSetCurve(cmyk, 3, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 3, num_xypoints, xypoints, log, ld);
            break;
        case 6 :
        case 7 :
-            cupsCMYKSetCurve(cmyk, 5, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 5, num_xypoints, xypoints, log, ld);
            break;
       }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsBlackGamma", colormodel,
                                   media, resolution, spec,
-                                 sizeof(spec))) != NULL)
+                                 sizeof(spec), log, ld)) != NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
        switch (num_channels)
        {
          case 1 :
          case 2 :
-              cupsCMYKSetGamma(cmyk, 0, gamval, density);
+              cupsCMYKSetGamma(cmyk, 0, gamval, density, log, ld);
              break;
          case 4 :
-              cupsCMYKSetGamma(cmyk, 3, gamval, density);
+              cupsCMYKSetGamma(cmyk, 3, gamval, density, log, ld);
              break;
          case 6 :
          case 7 :
-              cupsCMYKSetGamma(cmyk, 5, gamval, density);
+              cupsCMYKSetGamma(cmyk, 5, gamval, density, log, ld);
              break;
        }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllXY", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1185,20 +1188,20 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
       {
        case 1 :
        case 2 :
-            cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints, log, ld);
            break;
        case 4 :
-            cupsCMYKSetCurve(cmyk, 3, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 3, num_xypoints, xypoints, log, ld);
            break;
        case 6 :
        case 7 :
-            cupsCMYKSetCurve(cmyk, 5, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 5, num_xypoints, xypoints, log, ld);
            break;
       }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllGamma", colormodel,
                                   media, resolution, spec,
-                                 sizeof(spec))) != NULL &&
+                                 sizeof(spec), log, ld)) != NULL &&
              num_channels != 3)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
@@ -1206,14 +1209,14 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
        {
          case 1 :
          case 2 :
-              cupsCMYKSetGamma(cmyk, 0, gamval, density);
+              cupsCMYKSetGamma(cmyk, 0, gamval, density, log, ld);
              break;
          case 4 :
-              cupsCMYKSetGamma(cmyk, 3, gamval, density);
+              cupsCMYKSetGamma(cmyk, 3, gamval, density, log, ld);
              break;
          case 6 :
          case 7 :
-              cupsCMYKSetGamma(cmyk, 5, gamval, density);
+              cupsCMYKSetGamma(cmyk, 5, gamval, density, log, ld);
              break;
        }
     }
@@ -1226,7 +1229,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
     */
 
     if ((attr = cupsFindAttr(ppd, "cupsCyanXY", colormodel, media,
-                             resolution, spec, sizeof(spec))) != NULL)
+                             resolution, spec, sizeof(spec), log, ld)) != NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1237,16 +1240,18 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
          xyptr += 2;
        }
 
-      cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints);
+      cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints, log, ld);
     }
     else if ((attr = cupsFindAttr(ppd, "cupsCyanGamma", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
-       cupsCMYKSetGamma(cmyk, 0, gamval, density);
+       cupsCMYKSetGamma(cmyk, 0, gamval, density, log, ld);
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllXY", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1257,13 +1262,14 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
          xyptr += 2;
        }
 
-      cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints);
+      cupsCMYKSetCurve(cmyk, 0, num_xypoints, xypoints, log, ld);
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllGamma", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
-       cupsCMYKSetGamma(cmyk, 0, gamval, density);
+       cupsCMYKSetGamma(cmyk, 0, gamval, density, log, ld);
     }
 
    /*
@@ -1271,7 +1277,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
     */
 
     if ((attr = cupsFindAttr(ppd, "cupsMagentaXY", colormodel, media,
-                             resolution, spec, sizeof(spec))) != NULL)
+                             resolution, spec, sizeof(spec), log, ld)) != NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1286,32 +1292,34 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
       {
        case 3 :
        case 4 :
-            cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints, log, ld);
            break;
        case 6 :
        case 7 :
-            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints, log, ld);
            break;
       }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsMagentaGamma", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
        switch (num_channels)
        {
          case 3 :
          case 4 :
-              cupsCMYKSetGamma(cmyk, 1, gamval, density);
+              cupsCMYKSetGamma(cmyk, 1, gamval, density, log, ld);
              break;
          case 6 :
          case 7 :
-              cupsCMYKSetGamma(cmyk, 2, gamval, density);
+              cupsCMYKSetGamma(cmyk, 2, gamval, density, log, ld);
              break;
        }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllXY", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1326,27 +1334,28 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
       {
        case 3 :
        case 4 :
-            cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints, log, ld);
            break;
        case 6 :
        case 7 :
-            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints, log, ld);
            break;
       }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllGamma", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
        switch (num_channels)
        {
          case 3 :
          case 4 :
-              cupsCMYKSetGamma(cmyk, 1, gamval, density);
+              cupsCMYKSetGamma(cmyk, 1, gamval, density, log, ld);
              break;
          case 6 :
          case 7 :
-              cupsCMYKSetGamma(cmyk, 2, gamval, density);
+              cupsCMYKSetGamma(cmyk, 2, gamval, density, log, ld);
              break;
        }
     }
@@ -1356,7 +1365,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
     */
 
     if ((attr = cupsFindAttr(ppd, "cupsYellowXY", colormodel, media,
-                             resolution, spec, sizeof(spec))) != NULL)
+                             resolution, spec, sizeof(spec), log, ld)) != NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1371,32 +1380,34 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
       {
        case 3 :
        case 4 :
-            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints, log, ld);
            break;
        case 6 :
        case 7 :
-            cupsCMYKSetCurve(cmyk, 4, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 4, num_xypoints, xypoints, log, ld);
            break;
       }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsYellowGamma", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
        switch (num_channels)
        {
          case 3 :
          case 4 :
-              cupsCMYKSetGamma(cmyk, 2, gamval, density);
+              cupsCMYKSetGamma(cmyk, 2, gamval, density, log, ld);
              break;
          case 6 :
          case 7 :
-              cupsCMYKSetGamma(cmyk, 4, gamval, density);
+              cupsCMYKSetGamma(cmyk, 4, gamval, density, log, ld);
              break;
        }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllXY", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1411,27 +1422,28 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
       {
        case 3 :
        case 4 :
-            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 2, num_xypoints, xypoints, log, ld);
            break;
        case 6 :
        case 7 :
-            cupsCMYKSetCurve(cmyk, 4, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 4, num_xypoints, xypoints, log, ld);
            break;
       }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsAllGamma", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
        switch (num_channels)
        {
          case 3 :
          case 4 :
-              cupsCMYKSetGamma(cmyk, 2, gamval, density);
+              cupsCMYKSetGamma(cmyk, 2, gamval, density, log, ld);
              break;
          case 6 :
          case 7 :
-              cupsCMYKSetGamma(cmyk, 4, gamval, density);
+              cupsCMYKSetGamma(cmyk, 4, gamval, density, log, ld);
              break;
        }
     }
@@ -1445,7 +1457,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
   if (num_channels == 2 || num_channels == 7)
   {
     if ((attr = cupsFindAttr(ppd, "cupsLightBlackXY", colormodel, media,
-                             resolution, spec, sizeof(spec))) != NULL)
+                             resolution, spec, sizeof(spec), log, ld)) != NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1459,48 +1471,51 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
       switch (num_channels)
       {
        case 2 :
-            cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints, log, ld);
            break;
        case 7 :
-            cupsCMYKSetCurve(cmyk, 6, num_xypoints, xypoints);
+            cupsCMYKSetCurve(cmyk, 6, num_xypoints, xypoints, log, ld);
            break;
       }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsLightBlackGamma", colormodel,
                                   media, resolution, spec,
-                                 sizeof(spec))) != NULL)
+                                 sizeof(spec), log, ld)) != NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
        switch (num_channels)
        {
          case 2 :
-              cupsCMYKSetGamma(cmyk, 1, gamval, density);
+              cupsCMYKSetGamma(cmyk, 1, gamval, density, log, ld);
              break;
          case 7 :
-              cupsCMYKSetGamma(cmyk, 6, gamval, density);
+              cupsCMYKSetGamma(cmyk, 6, gamval, density, log, ld);
              break;
        }
     }
     else if ((attr = cupsFindAttr(ppd, "cupsBlackLtDk", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &light, &dark) == 2)
        switch (num_channels)
        {
          case 2 :
-              cupsCMYKSetLtDk(cmyk, 0, light, dark);
+              cupsCMYKSetLtDk(cmyk, 0, light, dark, log, ld);
              break;
          case 7 :
-              cupsCMYKSetLtDk(cmyk, 5, light, dark);
+              cupsCMYKSetLtDk(cmyk, 5, light, dark, log, ld);
              break;
        }
       else
-       fprintf(stderr, "ERROR: Bad cupsBlackLtDk value \"%s\"!\n",
-               attr->value);
+       if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                    "Bad cupsBlackLtDk value \"%s\"!",
+                    attr->value);
     }
     else
-      fprintf(stderr, "WARNING: No light black attribute found for %s!\n",
-              spec);
+      if (log) log(ld, FILTER_LOGLEVEL_WARN,
+                  "No light black attribute found for %s!",
+                  spec);
   }
 
   if (num_channels >= 6)
@@ -1511,7 +1526,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
     */
 
     if ((attr = cupsFindAttr(ppd, "cupsLightCyanXY", colormodel, media,
-                             resolution, spec, sizeof(spec))) != NULL)
+                             resolution, spec, sizeof(spec), log, ld)) != NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1522,27 +1537,30 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
          xyptr += 2;
        }
 
-      cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints);
+      cupsCMYKSetCurve(cmyk, 1, num_xypoints, xypoints, log, ld);
     }
     else if ((attr = cupsFindAttr(ppd, "cupsLightCyanGamma", colormodel,
                                   media, resolution, spec,
-                                 sizeof(spec))) != NULL)
+                                 sizeof(spec), log, ld)) != NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
-       cupsCMYKSetGamma(cmyk, 1, gamval, density);
+       cupsCMYKSetGamma(cmyk, 1, gamval, density, log, ld);
     }
     else if ((attr = cupsFindAttr(ppd, "cupsCyanLtDk", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &light, &dark) == 2)
-       cupsCMYKSetLtDk(cmyk, 0, light, dark);
+       cupsCMYKSetLtDk(cmyk, 0, light, dark, log, ld);
       else
-       fprintf(stderr, "ERROR: Bad cupsCyanLtDk value \"%s\"!\n",
-               attr->value);
+       if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                    "Bad cupsCyanLtDk value \"%s\"!",
+                    attr->value);
     }
     else
-      fprintf(stderr, "WARNING: No light cyan attribute found for %s!\n",
-              spec);
+      if (log) log(ld, FILTER_LOGLEVEL_WARN,
+                  "No light cyan attribute found for %s!",
+                  spec);
 
    /*
     * Get the optional cupsLightMagentaXY, cupsLightMagentaGamma, or
@@ -1550,7 +1568,7 @@ cupsCMYKLoad(ppd_file_t *ppd,             /* I - PPD file */
     */
 
     if ((attr = cupsFindAttr(ppd, "cupsLightMagentaXY", colormodel, media,
-                             resolution, spec, sizeof(spec))) != NULL)
+                             resolution, spec, sizeof(spec), log, ld)) != NULL)
     {
       for (num_xypoints = 0, xyptr = xypoints;
            attr != NULL && attr->value != NULL && num_xypoints < 100;
@@ -1561,27 +1579,30 @@ cupsCMYKLoad(ppd_file_t *ppd,           /* I - PPD file */
          xyptr += 2;
        }
 
-      cupsCMYKSetCurve(cmyk, 3, num_xypoints, xypoints);
+      cupsCMYKSetCurve(cmyk, 3, num_xypoints, xypoints, log, ld);
     }
     else if ((attr = cupsFindAttr(ppd, "cupsLightMagentaGamma", colormodel,
                                   media, resolution, spec,
-                                 sizeof(spec))) != NULL)
+                                 sizeof(spec), log, ld)) != NULL)
     {
       if (sscanf(attr->value, "%f%f", &gamval, &density) == 2)
-       cupsCMYKSetGamma(cmyk, 3, gamval, density);
+       cupsCMYKSetGamma(cmyk, 3, gamval, density, log, ld);
     }
     else if ((attr = cupsFindAttr(ppd, "cupsMagentaLtDk", colormodel, media,
-                                  resolution, spec, sizeof(spec))) != NULL)
+                                  resolution, spec, sizeof(spec), log, ld)) !=
+            NULL)
     {
       if (sscanf(attr->value, "%f%f", &light, &dark) == 2)
-       cupsCMYKSetLtDk(cmyk, 2, light, dark);
+       cupsCMYKSetLtDk(cmyk, 2, light, dark, log, ld);
       else
-       fprintf(stderr, "ERROR: Bad cupsMagentaLtDk value \"%s\"!\n",
-               attr->value);
+       if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                    "Bad cupsMagentaLtDk value \"%s\"!",
+                    attr->value);
     }
     else
-      fprintf(stderr, "WARNING: No light magenta attribute found for %s!\n",
-              spec);
+      if (log) log(ld, FILTER_LOGLEVEL_WARN,
+                  "No light magenta attribute found for %s!",
+                  spec);
   }
 
  /*
@@ -1692,7 +1713,9 @@ cupsCMYKNew(int num_channels)             /* I - Number of color components */
 void
 cupsCMYKSetBlack(cups_cmyk_t *cmyk,    /* I - CMYK color separation */
                 float       lower,     /* I - No black ink */
-                float       upper)     /* I - Only black ink */
+                float       upper,     /* I - Only black ink */
+                filter_logfunc_t log,  /* I - Log function */
+                void       *ld)        /* I - Log function data */
 {
   int  i,                              /* Looping var */
        delta,                          /* Difference between lower and upper */
@@ -1746,11 +1769,15 @@ cupsCMYKSetBlack(cups_cmyk_t *cmyk,     /* I - CMYK color separation */
     cmyk->color_lut[i] = 0;
   }
 
-  fprintf(stderr, "DEBUG: cupsCMYKSetBlack(cmyk, lower=%.3f, upper=%.3f)\n", lower, upper);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "cupsCMYKSetBlack(cmyk, lower=%.3f, upper=%.3f)",
+              lower, upper);
 
-  for (i = 0; i < 256; i += 17)
-    fprintf(stderr, "DEBUG:    %3d = %3dk + %3dc\n", i,
-            cmyk->black_lut[i], cmyk->color_lut[i]);
+  if (log)
+    for (i = 0; i < 256; i += 17)
+      log(ld, FILTER_LOGLEVEL_DEBUG,
+         "   %3d = %3dk + %3dc", i,
+         cmyk->black_lut[i], cmyk->color_lut[i]);
 }
 
 
@@ -1763,7 +1790,9 @@ cupsCMYKSetCurve(cups_cmyk_t *cmyk,       /* I - CMYK color separation */
                  int         channel,  /* I - Color channel */
                 int         num_xypoints,
                                        /* I - Number of X,Y points */
-                const float *xypoints) /* I - X,Y points */
+                const float *xypoints, /* I - X,Y points */
+                filter_logfunc_t log,  /* I - Log function */
+                void       *ld)        /* I - Log function data */
 {
   int  i;                              /* Looping var */
   int  xstart;                         /* Start position */
@@ -1806,13 +1835,17 @@ cupsCMYKSetCurve(cups_cmyk_t *cmyk,     /* I - CMYK color separation */
   for (i = xend; i < 256; i ++)
     cmyk->channels[channel][i] = yend;
 
-  fprintf(stderr, "DEBUG: cupsCMYKSetXY(cmyk, channel=%d, num_xypoints=%d, "
-                  "xypoints=[%.3f %.3f %.3f %.3f ...])\n", channel,
-          num_xypoints, xypoints[0], xypoints[1], xypoints[2], xypoints[3]);
-
-  for (i = 0; i < 256; i += 17)
-    fprintf(stderr, "DEBUG:     %3d = %4d\n", i,
-            cmyk->channels[channel + 0][i]);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "cupsCMYKSetXY(cmyk, channel=%d, num_xypoints=%d, "
+              "xypoints=[%.3f %.3f %.3f %.3f ...])", channel,
+              num_xypoints, xypoints[0], xypoints[1], xypoints[2],
+              xypoints[3]);
+
+  if (log)
+    for (i = 0; i < 256; i += 17)
+      log(ld, FILTER_LOGLEVEL_DEBUG,
+         "    %3d = %4d", i,
+         cmyk->channels[channel + 0][i]);
 }
 
 
@@ -1824,7 +1857,9 @@ void
 cupsCMYKSetGamma(cups_cmyk_t *cmyk,    /* I - CMYK color separation */
                  int         channel,  /* I - Ink channel */
                  float       gamval,   /* I - Gamma correction */
-                float       density)   /* I - Maximum density */
+                float       density,   /* I - Maximum density */
+                filter_logfunc_t log,  /* I - Log function */
+                void       *ld)        /* I - Log function data */
 {
   int  i;                              /* Looping var */
 
@@ -1845,12 +1880,15 @@ cupsCMYKSetGamma(cups_cmyk_t *cmyk,     /* I - CMYK color separation */
     cmyk->channels[channel][i] = (int)(density * CUPS_MAX_LUT *
                                        pow((float)i / 255.0, gamval) + 0.5);
 
-  fprintf(stderr, "DEBUG: cupsCMYKSetGamma(cmyk, channel=%d, gamval=%.3f, "
-                  "density=%.3f)\n", channel, gamval, density);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "cupsCMYKSetGamma(cmyk, channel=%d, gamval=%.3f, "
+              "density=%.3f)", channel, gamval, density);
 
-  for (i = 0; i < 256; i += 17)
-    fprintf(stderr, "DEBUG:     %3d = %4d\n", i,
-            cmyk->channels[channel + 0][i]);
+  if (log)
+    for (i = 0; i < 256; i += 17)
+      log(ld, FILTER_LOGLEVEL_DEBUG,
+         "    %3d = %4d", i,
+         cmyk->channels[channel + 0][i]);
 }
 
 
@@ -1877,7 +1915,9 @@ void
 cupsCMYKSetLtDk(cups_cmyk_t *cmyk,     /* I - CMYK color separation */
                 int         channel,   /* I - Dark ink channel (+1 for light) */
                float       light,      /* I - Light ink only level */
-               float       dark)       /* I - Dark ink only level */
+               float       dark,       /* I - Dark ink only level */
+               filter_logfunc_t log,   /* I - Log function */
+               void       *ld)         /* I - Log function data */
 {
   int  i,                              /* Looping var */
        delta,                          /* Difference between lower and upper */
@@ -1940,11 +1980,14 @@ cupsCMYKSetLtDk(cups_cmyk_t *cmyk,      /* I - CMYK color separation */
     cmyk->channels[channel + 1][i] = 0;
   }
 
-  fprintf(stderr, "DEBUG: cupsCMYKSetLtDk(cmyk, channel=%d, light=%.3f, "
-                  "dark=%.3f)\n", channel, light, dark);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "cupsCMYKSetLtDk(cmyk, channel=%d, light=%.3f, "
+              "dark=%.3f)", channel, light, dark);
 
-  for (i = 0; i < 256; i += 17)
-    fprintf(stderr, "DEBUG:     %3d = %4dlt + %4ddk\n", i,
-            cmyk->channels[channel + 0][i], cmyk->channels[channel + 1][i]);
+  if (log)
+    for (i = 0; i < 256; i += 17)
+      log(ld, FILTER_LOGLEVEL_DEBUG,
+         "    %3d = %4dlt + %4ddk", i,
+         cmyk->channels[channel + 0][i], cmyk->channels[channel + 1][i]);
 }
 
index 092ff7ac8b3c81b4a2be81fc9f24753c95bb14c2..f7ae46c17a65c2ab91599515655cfa618cf3da15 100644 (file)
@@ -25,6 +25,7 @@ extern "C" {
 #  include <stdlib.h>
 #  include <time.h>
 #  include <math.h>
+#  include "filter.h"
 #  include <ppd/ppd.h>
 
 #  if defined(WIN32) || defined(__EMX__)
@@ -128,7 +129,9 @@ extern ppd_attr_t   *cupsFindAttr(ppd_file_t *ppd, const char *name,
                                      const char *colormodel,
                                      const char *media,
                                      const char *resolution,
-                                     char *spec, int specsize);
+                                     char *spec, int specsize,
+                                     filter_logfunc_t log,
+                                     void *ld);
                               
 /*
  * Byte checking functions...
@@ -152,13 +155,16 @@ extern void               cupsDitherDelete(cups_dither_t *);
  * Lookup table functions for dithering...
  */
 
-extern cups_lut_t      *cupsLutNew(int num_vals, const float *vals);
+extern cups_lut_t      *cupsLutNew(int num_vals, const float *vals,
+                                   filter_logfunc_t log, void *ld);
 extern void            cupsLutDelete(cups_lut_t *lut);
 extern cups_lut_t      *cupsLutLoad(ppd_file_t *ppd,
                                     const char *colormodel,
                                     const char *media,
                                     const char *resolution,
-                                    const char *ink);
+                                    const char *ink,
+                                    filter_logfunc_t log,
+                                    void *ld);
 
 
 /*
@@ -191,7 +197,9 @@ extern void         cupsRGBDoRGB(cups_rgb_t *rgb,
 extern cups_rgb_t      *cupsRGBLoad(ppd_file_t *ppd,
                                     const char *colormodel,
                                     const char *media,
-                                    const char *resolution);
+                                    const char *resolution,
+                                    filter_logfunc_t log,
+                                    void *ld);
 extern cups_rgb_t      *cupsRGBNew(int num_samples, cups_sample_t *samples,
                                    int cube_size, int num_channels);
 
@@ -216,17 +224,23 @@ extern void               cupsCMYKDoRGB(const cups_cmyk_t *cmyk,
 extern cups_cmyk_t     *cupsCMYKLoad(ppd_file_t *ppd,
                                      const char *colormodel,
                                      const char *media,
-                                     const char *resolution);
+                                     const char *resolution,
+                                     filter_logfunc_t log,
+                                     void *ld);
 extern void            cupsCMYKSetBlack(cups_cmyk_t *cmyk,
-                                        float lower, float upper);
+                                        float lower, float upper,
+                                        filter_logfunc_t log, void *ld);
 extern void            cupsCMYKSetCurve(cups_cmyk_t *cmyk, int channel,
                                         int num_xypoints,
-                                        const float *xypoints);
+                                        const float *xypoints,
+                                        filter_logfunc_t log, void *ld);
 extern void            cupsCMYKSetGamma(cups_cmyk_t *cmyk, int channel,
-                                        float gamval, float density);
+                                        float gamval, float density,
+                                        filter_logfunc_t log, void *ld);
 extern void            cupsCMYKSetInkLimit(cups_cmyk_t *cmyk, float limit);
 extern void            cupsCMYKSetLtDk(cups_cmyk_t *cmyk, int channel,
-                                       float light, float dark);
+                                       float light, float dark,
+                                       filter_logfunc_t log, void *ld);
 
 
 /*
index 7539ee25799d74e11f64844764bd47120f728ac0..34d54e502a1995e3810a110af7d82548ad780ec3 100644 (file)
@@ -45,7 +45,9 @@ cupsLutLoad(ppd_file_t *ppd,          /* I - PPD file */
             const char *colormodel,    /* I - Color model */
             const char *media,         /* I - Media type */
             const char *resolution,    /* I - Resolution */
-           const char *ink)            /* I - Ink name */
+           const char *ink,            /* I - Ink name */
+           filter_logfunc_t log,       /* I - Log function */
+           void       *ld)             /* I - Log function data */
 {
   char         name[PPD_MAX_NAME],     /* Attribute name */
                spec[PPD_MAX_NAME];     /* Attribute spec */
@@ -68,9 +70,9 @@ cupsLutLoad(ppd_file_t *ppd,          /* I - PPD file */
   snprintf(name, sizeof(name), "cups%sDither", ink);
 
   if ((attr = cupsFindAttr(ppd, name, colormodel, media, resolution, spec,
-                           sizeof(spec))) == NULL)
+                           sizeof(spec), log, ld)) == NULL)
     attr = cupsFindAttr(ppd, "cupsAllDither", colormodel, media,
-                        resolution, spec, sizeof(spec));
+                        resolution, spec, sizeof(spec), log, ld);
 
   if (!attr)
     return (NULL);
@@ -81,10 +83,11 @@ cupsLutLoad(ppd_file_t *ppd,                /* I - PPD file */
   vals[3] = 0.0;
   nvals   = sscanf(attr->value, "%f%f%f", vals + 1, vals + 2, vals + 3) + 1;
 
-  fprintf(stderr, "DEBUG: Loaded LUT %s from PPD with values [%.3f %.3f %.3f %.3f]\n",
-          name, vals[0], vals[1], vals[2], vals[3]);
+  if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+              "Loaded LUT %s from PPD with values [%.3f %.3f %.3f %.3f]",
+              name, vals[0], vals[1], vals[2], vals[3]);
 
-  return (cupsLutNew(nvals, vals));
+  return (cupsLutNew(nvals, vals, log, ld));
 }
 
 
@@ -96,7 +99,9 @@ cupsLutLoad(ppd_file_t *ppd,          /* I - PPD file */
 
 cups_lut_t *                           /* O - New lookup table */
 cupsLutNew(int         num_values,     /* I - Number of values */
-          const float *values)         /* I - Lookup table values */
+          const float *values,         /* I - Lookup table values */
+          filter_logfunc_t log,        /* I - Log function */
+          void        *ld)             /* I - Log function data */
 {
   int          pixel;                  /* Pixel value */
   cups_lut_t   *lut;                   /* Lookup table */
@@ -182,9 +187,11 @@ cupsLutNew(int         num_values, /* I - Number of values */
   * Show the lookup table...
   */
 
-  for (start = 0; start <= CUPS_MAX_LUT; start += CUPS_MAX_LUT / 15)
-    fprintf(stderr, "DEBUG: %d = %d/%d/%d\n", start, lut[start].intensity,
-            lut[start].pixel, lut[start].error);
+  if (log)
+    for (start = 0; start <= CUPS_MAX_LUT; start += CUPS_MAX_LUT / 15)
+      log(ld, FILTER_LOGLEVEL_DEBUG,
+         "%d = %d/%d/%d", start, lut[start].intensity,
+         lut[start].pixel, lut[start].error);
 
  /*
   * Return the lookup table...
index 70a29153e4c5ce4cdec442cd6f2b2554ae3768bd..2e742a20b4189f6c77abfaff52ea0774678e20ab 100644 (file)
@@ -307,7 +307,9 @@ cups_rgb_t *                                /* O - New color profile */
 cupsRGBLoad(ppd_file_t *ppd,           /* I - PPD file */
             const char *colormodel,    /* I - Color model */
             const char *media,         /* I - Media type */
-            const char *resolution)    /* I - Resolution */
+            const char *resolution,    /* I - Resolution */
+           filter_logfunc_t log,       /* I - Log function */
+           void       *ld)             /* I - Log function data */
 {
   int          i,                      /* Looping var */
                cube_size,              /* Size of color lookup cube */
@@ -329,17 +331,19 @@ cupsRGBLoad(ppd_file_t *ppd,              /* I - PPD file */
   */
 
   if ((attr = cupsFindAttr(ppd, "cupsRGBProfile", colormodel, media,
-                           resolution, spec, sizeof(spec))) == NULL)
+                           resolution, spec, sizeof(spec), log, ld)) == NULL)
   {
-    fputs("DEBUG2: No cupsRGBProfile attribute found for the current settings!\n", stderr);
+    if (log) log(ld, FILTER_LOGLEVEL_DEBUG,
+                "No cupsRGBProfile attribute found for the current settings!");
     return (NULL);
   }
 
   if (!attr->value || sscanf(attr->value, "%d%d%d", &cube_size, &num_channels,
                              &num_samples) != 3)
   {
-    fprintf(stderr, "ERROR: Bad cupsRGBProfile attribute \'%s\'!\n",
-            attr->value ? attr->value : "(null)");
+    if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                "Bad cupsRGBProfile attribute \'%s\'!",
+                attr->value ? attr->value : "(null)");
     return (NULL);
   }
 
@@ -347,8 +351,9 @@ cupsRGBLoad(ppd_file_t *ppd,                /* I - PPD file */
       num_channels < 1 || num_channels > CUPS_MAX_RGB ||
       num_samples != (cube_size * cube_size * cube_size))
   {
-    fprintf(stderr, "ERROR: Bad cupsRGBProfile attribute \'%s\'!\n",
-            attr->value);
+    if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                "Bad cupsRGBProfile attribute \'%s\'!",
+                attr->value);
     return (NULL);
   }
 
@@ -358,7 +363,8 @@ cupsRGBLoad(ppd_file_t *ppd,                /* I - PPD file */
 
   if ((samples = calloc(num_samples, sizeof(cups_sample_t))) == NULL)
   {
-    fputs("ERROR: Unable to allocate memory for RGB profile!\n", stderr);
+    if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                "Unable to allocate memory for RGB profile!");
     return (NULL);
   }
 
@@ -371,14 +377,16 @@ cupsRGBLoad(ppd_file_t *ppd,              /* I - PPD file */
       break;
     else if (!attr->value)
     {
-      fputs("ERROR: Bad cupsRGBSample value!\n", stderr);
+      if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                  "Bad cupsRGBSample value!");
       break;
     }
     else if (sscanf(attr->value, "%f%f%f%f%f%f%f", values + 0,
                     values + 1, values + 2, values + 3, values + 4, values + 5,
                     values + 6) != (3 + num_channels))
     {
-      fputs("ERROR: Bad cupsRGBSample value!\n", stderr);
+      if (log) log(ld, FILTER_LOGLEVEL_ERROR,
+                  "Bad cupsRGBSample value!");
       break;
     }
     else
index da7caa0e43de911b1321218faa59f2faad60cb08..ab919b90143946a172b57aabcf236cd71f51a188 100644 (file)
@@ -26,6 +26,8 @@
 #include "driver.h"
 #include <sys/stat.h>
 
+filter_logfunc_t logfunc = cups_logfunc;    /* Log function */
+void             *ld = NULL;                /* Log function data */
 
 void   test_gray(int num_comps, const char *basename);
 void   test_rgb(int num_comps, const char *basename);
@@ -117,26 +119,26 @@ test_gray(int        num_comps,           /* I - Number of components */
   switch (num_comps)
   {
     case 2 : /* Kk */
-        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0);
+        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0, logfunc, ld);
        break;
 
     case 4 :
-       cupsCMYKSetGamma(cmyk, 2, 1.0, 0.9);
-        cupsCMYKSetBlack(cmyk, 0.5, 1.0);
+       cupsCMYKSetGamma(cmyk, 2, 1.0, 0.9, logfunc, ld);
+        cupsCMYKSetBlack(cmyk, 0.5, 1.0, logfunc, ld);
        break;
 
     case 6 : /* CcMmYK */
-        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0);
-        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0);
-       cupsCMYKSetGamma(cmyk, 4, 1.0, 0.9);
-        cupsCMYKSetBlack(cmyk, 0.5, 1.0);
+        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0, logfunc, ld);
+       cupsCMYKSetGamma(cmyk, 4, 1.0, 0.9, logfunc, ld);
+        cupsCMYKSetBlack(cmyk, 0.5, 1.0, logfunc, ld);
        break;
 
     case 7 : /* CcMmYKk */
-        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0);
-        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0);
-       cupsCMYKSetGamma(cmyk, 4, 1.0, 0.9);
-        cupsCMYKSetLtDk(cmyk, 5, 0.5, 1.0);
+        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0, logfunc, ld);
+       cupsCMYKSetGamma(cmyk, 4, 1.0, 0.9, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 5, 0.5, 1.0, logfunc, ld);
        break;
   }
 
@@ -296,25 +298,25 @@ test_rgb(int        num_comps,            /* I - Number of components */
 
   cmyk = cupsCMYKNew(num_comps);
 
-  cupsCMYKSetBlack(cmyk, 0.5, 1.0);
+  cupsCMYKSetBlack(cmyk, 0.5, 1.0, logfunc, ld);
 
   switch (num_comps)
   {
     case 2 : /* Kk */
-        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0);
+        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0, logfunc, ld);
        break;
     case 6 : /* CcMmYK */
-       cupsCMYKSetGamma(cmyk, 0, 1.0, 0.8);
-        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0);
-       cupsCMYKSetGamma(cmyk, 2, 1.0, 0.8);
-        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0);
+       cupsCMYKSetGamma(cmyk, 0, 1.0, 0.8, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0, logfunc, ld);
+       cupsCMYKSetGamma(cmyk, 2, 1.0, 0.8, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0, logfunc, ld);
        break;
     case 7 : /* CcMmYKk */
-       cupsCMYKSetGamma(cmyk, 0, 1.0, 0.8);
-        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0);
-       cupsCMYKSetGamma(cmyk, 2, 1.0, 0.8);
-        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0);
-        cupsCMYKSetLtDk(cmyk, 5, 0.5, 1.0);
+       cupsCMYKSetGamma(cmyk, 0, 1.0, 0.8, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 0, 0.5, 1.0, logfunc, ld);
+       cupsCMYKSetGamma(cmyk, 2, 1.0, 0.8, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 2, 0.5, 1.0, logfunc, ld);
+        cupsCMYKSetLtDk(cmyk, 5, 0.5, 1.0, logfunc, ld);
        break;
   }
 
index be2eaf2033dfa2ab4cd2b7305cca7c80d4259867..7e3d9f9efe951797ebebca150cb581c72079fb5a 100644 (file)
@@ -33,6 +33,9 @@
 #include <string.h>
 #include <ctype.h>
 
+filter_logfunc_t logfunc = cups_logfunc;    /* Log function */
+void             *ld = NULL;                /* Log function data */
+
 
 /*
  * Local functions...
@@ -107,7 +110,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
   * Create the lookup table and dither state...
   */
 
-  lut    = cupsLutNew(nlutvals, lutvals);
+  lut    = cupsLutNew(nlutvals, lutvals, logfunc, ld);
   dither = cupsDitherNew(512);
 
  /*
index cbc50e9a2a00d81c89a3d69bcc303505706f40f3..b35a94dd31ae44a3a1ea6189705f214b1a669293 100644 (file)
@@ -83,6 +83,8 @@ cups_lut_t    *DitherLuts[7];         /* Lookup tables for dithering */
 cups_dither_t  *DitherStates[7];       /* Dither state tables */
 int            OutputFeed;             /* Number of lines to skip */
 int            Canceled;               /* Is the job canceled? */
+filter_logfunc_t logfunc;               /* Log function */
+void            *ld;                    /* Log function data */
 
 
 /*
@@ -242,11 +244,13 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
 
   if (header->cupsColorSpace == CUPS_CSPACE_RGB ||
       header->cupsColorSpace == CUPS_CSPACE_W)
-    RGB = cupsRGBLoad(ppd, colormodel, header->MediaType, resolution);
+    RGB = cupsRGBLoad(ppd, colormodel, header->MediaType, resolution,
+                     logfunc, ld);
   else
     RGB = NULL;
 
-  CMYK = cupsCMYKLoad(ppd, colormodel, header->MediaType, resolution);
+  CMYK = cupsCMYKLoad(ppd, colormodel, header->MediaType, resolution,
+                     logfunc, ld);
 
   if (RGB)
     fputs("DEBUG: Loaded RGB separation from PPD.\n", stderr);
@@ -271,66 +275,66 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
   {
     case 1 : /* K */
         DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Black");
+                                   resolution, "Black", logfunc, ld);
         break;
 
     case 2 : /* Kk */
         DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Black");
+                                   resolution, "Black", logfunc, ld);
         DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "LightBlack");
+                                   resolution, "LightBlack", logfunc, ld);
         break;
 
     case 3 : /* CMY */
         DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Cyan");
+                                   resolution, "Cyan", logfunc, ld);
         DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Magenta");
+                                   resolution, "Magenta", logfunc, ld);
         DitherLuts[2] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Yellow");
+                                   resolution, "Yellow", logfunc, ld);
         break;
 
     case 4 : /* CMYK */
         DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Cyan");
+                                   resolution, "Cyan", logfunc, ld);
         DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Magenta");
+                                   resolution, "Magenta", logfunc, ld);
         DitherLuts[2] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Yellow");
+                                   resolution, "Yellow", logfunc, ld);
         DitherLuts[3] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Black");
+                                   resolution, "Black", logfunc, ld);
         break;
 
     case 6 : /* CcMmYK */
         DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Cyan");
+                                   resolution, "Cyan", logfunc, ld);
         DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "LightCyan");
+                                   resolution, "LightCyan", logfunc, ld);
         DitherLuts[2] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Magenta");
+                                   resolution, "Magenta", logfunc, ld);
         DitherLuts[3] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "LightMagenta");
+                                   resolution, "LightMagenta", logfunc, ld);
         DitherLuts[4] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Yellow");
+                                   resolution, "Yellow", logfunc, ld);
         DitherLuts[5] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Black");
+                                   resolution, "Black", logfunc, ld);
         break;
 
     case 7 : /* CcMmYKk */
         DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Cyan");
+                                   resolution, "Cyan", logfunc, ld);
         DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "LightCyan");
+                                   resolution, "LightCyan", logfunc, ld);
         DitherLuts[2] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Magenta");
+                                   resolution, "Magenta", logfunc, ld);
         DitherLuts[3] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "LightMagenta");
+                                   resolution, "LightMagenta", logfunc, ld);
         DitherLuts[4] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Yellow");
+                                   resolution, "Yellow", logfunc, ld);
         DitherLuts[5] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "Black");
+                                   resolution, "Black", logfunc, ld);
         DitherLuts[6] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                   resolution, "LightBlack");
+                                   resolution, "LightBlack", logfunc, ld);
         break;
   }
 
@@ -339,7 +343,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
     DitherStates[plane] = cupsDitherNew(header->cupsWidth);
 
     if (!DitherLuts[plane])
-      DitherLuts[plane] = cupsLutNew(2, default_lut);
+      DitherLuts[plane] = cupsLutNew(2, default_lut, logfunc, ld);
   }
 
   if (DitherLuts[0][4095].pixel > 1)
@@ -761,7 +765,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
 
   if ((attr = cupsFindAttr(ppd, "cupsESCPDirection", colormodel,
                            header->MediaType, resolution, spec,
-                          sizeof(spec))) != NULL)
+                          sizeof(spec), logfunc, ld)) != NULL)
     printf("\033U%c", atoi(attr->value));
 
  /*
@@ -770,7 +774,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
 
   if ((attr = cupsFindAttr(ppd, "cupsESCPMicroWeave", colormodel,
                            header->MediaType, resolution, spec,
-                          sizeof(spec))) != NULL)
+                          sizeof(spec), logfunc, ld)) != NULL)
     printf("\033(i\001%c%c", 0, atoi(attr->value));
 
  /*
@@ -779,7 +783,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
 
   if ((attr = cupsFindAttr(ppd, "cupsESCPDotSize", colormodel,
                            header->MediaType, resolution, spec,
-                          sizeof(spec))) != NULL)
+                          sizeof(spec), logfunc, ld)) != NULL)
     printf("\033(e\002%c%c%c", 0, 0, atoi(attr->value));
 
   if (ppd->model_number & ESCP_ESCK)
@@ -1760,6 +1764,13 @@ main(int  argc,                          /* I - Number of command-line arguments */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
 
 
+ /*
+  * Log function for the library functions, standard CUPS logging to stderr...
+  */
+
+  logfunc = cups_logfunc;
+  ld = NULL;
+
  /*
   * Make sure status messages are not buffered...
   */
index 165b9c0eb851b034ee534b582c85f17977d92c13..4a7b75cb1d449178167a3175f5e715dec40b32b2 100644 (file)
@@ -80,6 +80,8 @@ const int     ColorOrders[7][7] =     /* Order of color planes */
                  { 5, 0, 1, 2, 3, 4, 6 }       /* KCMYcmk */
                };
 int            Canceled;               /* Is the job canceled? */
+filter_logfunc_t logfunc;               /* Log function */
+void            *ld;                    /* Log function data */
 
 
 /*
@@ -356,9 +358,11 @@ StartPage(filter_data_t *data,             /* I - filter data */
     {
       if (header->cupsColorSpace == CUPS_CSPACE_RGB ||
          header->cupsColorSpace == CUPS_CSPACE_W)
-       RGB = cupsRGBLoad(ppd, colormodel, header->MediaType, resolution);
+       RGB = cupsRGBLoad(ppd, colormodel, header->MediaType, resolution,
+                         logfunc, ld);
 
-      CMYK = cupsCMYKLoad(ppd, colormodel, header->MediaType, resolution);
+      CMYK = cupsCMYKLoad(ppd, colormodel, header->MediaType, resolution,
+                         logfunc, ld);
     }
 
     if (RGB)
@@ -390,49 +394,49 @@ StartPage(filter_data_t *data,            /* I - filter data */
     {
       case 1 : /* K */
           DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Black");
+                                     resolution, "Black", logfunc, ld);
           break;
 
       case 3 : /* CMY */
           DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Cyan");
+                                     resolution, "Cyan", logfunc, ld);
           DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Magenta");
+                                     resolution, "Magenta", logfunc, ld);
           DitherLuts[2] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Yellow");
+                                     resolution, "Yellow", logfunc, ld);
           break;
 
       case 4 : /* CMYK */
           DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Cyan");
+                                     resolution, "Cyan", logfunc, ld);
           DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Magenta");
+                                     resolution, "Magenta", logfunc, ld);
           DitherLuts[2] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Yellow");
+                                     resolution, "Yellow", logfunc, ld);
           DitherLuts[3] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Black");
+                                     resolution, "Black", logfunc, ld);
           break;
 
       case 6 : /* CcMmYK */
           DitherLuts[0] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Cyan");
+                                     resolution, "Cyan", logfunc, ld);
           DitherLuts[1] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "LightCyan");
+                                     resolution, "LightCyan", logfunc, ld);
           DitherLuts[2] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Magenta");
+                                     resolution, "Magenta", logfunc, ld);
           DitherLuts[3] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "LightMagenta");
+                                     resolution, "LightMagenta", logfunc, ld);
           DitherLuts[4] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Yellow");
+                                     resolution, "Yellow", logfunc, ld);
           DitherLuts[5] = cupsLutLoad(ppd, colormodel, header->MediaType,
-                                     resolution, "Black");
+                                     resolution, "Black", logfunc, ld);
           break;
     }
 
     for (plane = 0; plane < PrinterPlanes; plane ++)
     {
       if (!DitherLuts[plane])
-        DitherLuts[plane] = cupsLutNew(2, default_lut);
+        DitherLuts[plane] = cupsLutNew(2, default_lut, logfunc, ld);
 
       if (DitherLuts[plane][4095].pixel > 1)
        DotBits[plane] = 2;
@@ -442,7 +446,7 @@ StartPage(filter_data_t *data,              /* I - filter data */
       DitherStates[plane] = cupsDitherNew(header->cupsWidth);
 
       if (!DitherLuts[plane])
-       DitherLuts[plane] = cupsLutNew(2, default_lut);
+       DitherLuts[plane] = cupsLutNew(2, default_lut, logfunc, ld);
     }
   }
 
@@ -664,7 +668,7 @@ StartPage(filter_data_t *data,              /* I - filter data */
 
   if (ppd && ((attr = cupsFindAttr(ppd, "cupsPCLQuality", colormodel,
                                   header->MediaType, resolution, spec,
-                                  sizeof(spec))) != NULL))
+                                  sizeof(spec), logfunc, ld)) != NULL))
   {
    /*
     * Set the print quality...
@@ -695,7 +699,7 @@ StartPage(filter_data_t *data,              /* I - filter data */
 
       if (ppd && ((attr = cupsFindAttr(ppd, "cupsPCLCRDMode", colormodel,
                                       header->MediaType, resolution, spec,
-                                      sizeof(spec))) != NULL))
+                                      sizeof(spec), logfunc, ld)) != NULL))
         i = atoi(attr->value);
       else
         i = 31;
@@ -1809,6 +1813,13 @@ main(int  argc,                          /* I - Number of command-line arguments */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
 
 
+ /*
+  * Log function for the library functions, standard CUPS logging to stderr...
+  */
+
+  logfunc = cups_logfunc;
+  ld = NULL;
+
  /*
   * Make sure status messages are not buffered...
   */