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® 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