Update of /cvsroot/ufraw/ufraw
In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv32575

Modified Files:
        ufraw.h ufraw_conf.c 
Log Message:
Add command line option to set grayscale mixer values.

Index: ufraw.h
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw.h,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -d -r1.158 -r1.159
--- ufraw.h     30 Mar 2010 04:49:08 -0000      1.158
+++ ufraw.h     5 Apr 2010 15:00:34 -0000       1.159
@@ -125,8 +125,9 @@
        absolute_intent, disable_intent } Intent;
 typedef enum { ufraw_raw_phase, ufraw_first_phase, ufraw_transform_phase,
        ufraw_develop_phase, ufraw_display_phase, ufraw_phases_num } UFRawPhase;
-typedef enum { grayscale_none, grayscale_lightness, grayscale_luminance,
-       grayscale_value, grayscale_mixer } GrayscaleMode;
+typedef enum { grayscale_none, grayscale_lightness,
+              grayscale_luminance, grayscale_value,
+              grayscale_mixer, grayscale_invalid } GrayscaleMode;
 
 typedef struct {
     const char *make;
@@ -250,6 +251,7 @@
     lightness_adjustment lightnessAdjustment[max_adjustments];
     int grayscaleMode;
     double grayscaleMixer[3];
+    int grayscaleMixerDefined;
     double despeckleWindow[4];
     double despeckleDecay[4];
     double despecklePasses[4];

Index: ufraw_conf.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_conf.c,v
retrieving revision 1.169
retrieving revision 1.170
diff -u -d -r1.169 -r1.170
--- ufraw_conf.c        30 Mar 2010 04:49:08 -0000      1.169
+++ ufraw_conf.c        5 Apr 2010 15:00:34 -0000       1.170
@@ -83,6 +83,7 @@
     }, /* lightness adjustments */
     grayscale_none, /* grayscale mode */
     { 1.0, 1.0, 1.0 }, /* grayscale mixer */
+    1, /* grayscale mixer defined */
     { 0.0, 0.0, 0.0, 0.0 }, /* despeckle window */
     { 0.0, 0.0, 0.0, 0.0 }, /* despeckle color decay */
     { 1.0, 1.0, 1.0, 1.0 }, /* despeckle passes */
@@ -682,9 +683,11 @@
          : conf_find_name(temp, grayscaleModeNames,
                           conf_default.grayscaleMode);
     }
+    c->grayscaleMixerDefined = 0;
     if ( strcmp("GrayscaleMixer", element)==0 ) {
         sscanf(temp, "%lf %lf %lf", &c->grayscaleMixer[0],
               &c->grayscaleMixer[1], &c->grayscaleMixer[2]);
+       c->grayscaleMixerDefined = 1;
     }
     if ( strcmp("DespeckleWindow", element)==0 ) {
         sscanf(temp, "%lf %lf %lf", &c->despeckleWindow[0],
@@ -1017,11 +1020,13 @@
                                a->adjustment, a->hue, a->hueWidth);
        }
     }
-    if (c->grayscaleMode!=conf_default.grayscaleMode)
+    if (c->grayscaleMode != grayscale_invalid &&
+       c->grayscaleMode != conf_default.grayscaleMode)
         buf = uf_markup_buf(buf,
                "<GrayscaleMode>%s</GrayscaleMode>\n",
                grayscaleModeNames[c->grayscaleMode]);
-    if (c->grayscaleMode==grayscale_mixer) {
+    if (c->grayscaleMode == grayscale_mixer &&
+       c->grayscaleMixerDefined == 1) {
         buf = uf_markup_buf(buf,
                "<GrayscaleMixer>%f %f %f</GrayscaleMixer>\n",
                c->grayscaleMixer[0],
@@ -1293,6 +1298,7 @@
           sizeof dst->lightnessAdjustment);
     dst->lightnessAdjustmentCount = src->lightnessAdjustmentCount;
     dst->grayscaleMode = src->grayscaleMode;
+    dst->grayscaleMixerDefined = src->grayscaleMixerDefined;
     memcpy(dst->grayscaleMixer, src->grayscaleMixer,
           sizeof dst->grayscaleMixer);
     memcpy(dst->despeckleWindow, src->despeckleWindow, sizeof 
(dst->despeckleWindow));
@@ -1466,8 +1472,16 @@
                cmd->profile[1][0].BitDepth;
     if (cmd->saturation!=NULLF)
        conf->saturation=cmd->saturation;
-    if (cmd->grayscaleMode!=-1)
+    if (cmd->grayscaleMode!=-1) {
       conf->grayscaleMode=cmd->grayscaleMode;
+      if (cmd->grayscaleMode == grayscale_mixer &&
+         cmd->grayscaleMixerDefined == 1) {
+       conf->grayscaleMixerDefined = 1;
+       conf->grayscaleMixer[0] = cmd->grayscaleMixer[0];
+       conf->grayscaleMixer[1] = cmd->grayscaleMixer[1];
+       conf->grayscaleMixer[2] = cmd->grayscaleMixer[2];
+      }
+    }
     if (cmd->BaseCurveIndex>=0) conf->BaseCurveIndex = cmd->BaseCurveIndex;
     if (cmd->curveIndex>=0) conf->curveIndex = cmd->curveIndex;
     if (cmd->autoBlack) {
@@ -1584,6 +1598,8 @@
 N_("--color-smoothing     Apply color smoothing.\n"),
 N_("--grayscale=none|lightness|luminance|value|mixer\n"
 "                      Grayscale conversion algorithm to use (default 
none).\n"),
+N_("--grayscale-mixer=RED,GREEN,BLUE\n"
+"                      Grayscale mixer values to use (default 1,1,1).\n"),
 "\n",
 N_("The options which are related to the final output are:\n"),
 "\n",
@@ -1688,7 +1704,8 @@
         *curveName=NULL, *curveFile=NULL, *outTypeName=NULL, *rotateName=NULL,
         *createIDName=NULL, *outPath=NULL, *output=NULL, *conf=NULL,
         *interpolationName=NULL, *darkframeFile=NULL,
-        *restoreName=NULL, *clipName=NULL, *grayscaleName=NULL;
+         *restoreName=NULL, *clipName=NULL, *grayscaleName=NULL,
+         *grayscaleMixer=NULL;
     static const struct option options[] = {
        { "wb", 1, 0, 'w'},
        { "temperature", 1, 0, 't'},
@@ -1712,6 +1729,7 @@
        { "black-point", 1, 0, 'k'},
        { "interpolation", 1, 0, 'i'},
        { "grayscale", 1, 0, 'Y'},
+       { "grayscale-mixer", 1, 0, 'a'},
        { "shrink", 1, 0, 'x'},
        { "size", 1, 0, 'X'},
        { "compression", 1, 0, 'j'},
@@ -1761,6 +1779,7 @@
 #endif
        &cmd->threshold,
        &cmd->exposure, &cmd->black, &interpolationName, &grayscaleName,
+       &grayscaleMixer,
        &cmd->shrink, &cmd->size, &cmd->compression,
        &outTypeName, &cmd->profile[1][0].BitDepth, &rotateName,
        &createIDName, &outPath, &output, &darkframeFile,
@@ -1877,6 +1896,7 @@
        case 'r':
        case 'u':
        case 'Y':
+       case 'a':
            *(char **)optPointer[index] = optarg;
            break;
        case 'O': cmd->overwrite = TRUE; break;
@@ -2023,15 +2043,31 @@
            cmd->smoothing = 1;
     }
     cmd->grayscaleMode = -1;
+    cmd->grayscaleMixerDefined = 0;
     if (grayscaleName!=NULL) {
       cmd->grayscaleMode = conf_find_name(grayscaleName, grayscaleModeNames,
-                                         conf_default.grayscaleMode);
-      if (cmd->grayscaleMode==-1) {
+                                         grayscale_invalid);
+      if (cmd->grayscaleMode==grayscale_invalid) {
            ufraw_message(UFRAW_ERROR,
                _("'%s' is not a valid grayscale option."),
                grayscaleName);
            return -1;
        }
+      if (cmd->grayscaleMode==grayscale_mixer) {
+       if (grayscaleMixer != NULL) {
+         double        red, green, blue;
+         if (sscanf(grayscaleMixer, "%lf,%lf,%lf", &red, &green, &blue) != 3) {
+           ufraw_message(UFRAW_ERROR,
+                         _("'%s' is not a valid grayscale-mixer option."),
+                         grayscaleMixer);
+           return -1;
+         }
+         cmd->grayscaleMixerDefined = 1;
+         cmd->grayscaleMixer[0] = red;
+         cmd->grayscaleMixer[1] = green;
+         cmd->grayscaleMixer[2] = blue;
+       }
+      }
     }
     cmd->restoreDetails = -1;
     if (restoreName!=NULL) {


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
ufraw-cvs mailing list
ufraw-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ufraw-cvs

Reply via email to