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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ufraw-cvs