Update of /cvsroot/ufraw/ufraw
In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv13124
Modified Files:
configure.ac ufraw.h ufraw_conf.c ufraw_lensfun.cc
ufraw_preview.c ufraw_ufraw.c ufraw_ui.h
Log Message:
Fix some 4-colors issues.
Index: ufraw_preview.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_preview.c,v
retrieving revision 1.349
retrieving revision 1.350
diff -u -d -r1.349 -r1.350
--- ufraw_preview.c 30 Mar 2010 02:45:24 -0000 1.349
+++ ufraw_preview.c 30 Mar 2010 04:49:08 -0000 1.350
@@ -580,7 +580,6 @@
guint8 *p8 = pixies + yy*rowstride;
memcpy(p8, displayPixies + yy*displayImage->rowstride,
width*displayImage->depth);
-#ifdef UFRAW_DESPECKLE
if (data->ChannelSelect >= 0) {
guint8 *p = p8;
for (xx = 0; xx < width; xx++, p += 3) {
@@ -588,7 +587,6 @@
p[0] = p[1] = p[2] = px;
}
}
-#endif
guint8 *p8working = workingPixies + yy*workingImage->rowstride;
for (xx=x; xx<x+width; xx++, p8+=3, p8working+=workingImage->depth) {
if ( data->SpotDraw &&
@@ -1473,9 +1471,7 @@
}
static void update_shrink_ranges(preview_data *data);
-#ifdef UFRAW_DESPECKLE
static void despeckle_update_sensitive(preview_data *data);
-#endif
/* update the UI entries that could have changed automatically */
static void update_scales(preview_data *data)
@@ -1544,8 +1540,7 @@
for (i = 0; i < 3; ++i)
gtk_adjustment_set_value(data->GrayscaleMixers[i],
CFG->grayscaleMixer[i]);
-#ifdef UFRAW_DESPECKLE
- for (i = 0; i < 3; ++i) {
+ for (i = 0; i < data->UF->colors; ++i) {
gtk_adjustment_set_value(data->DespeckleWindowAdj[i],
CFG->despeckleWindow[i]);
gtk_adjustment_set_value(data->DespeckleDecayAdj[i],
@@ -1553,7 +1548,6 @@
gtk_adjustment_set_value(data->DespecklePassesAdj[i],
CFG->despecklePasses[i]);
}
-#endif
for (i = 0; i < CFG->lightnessAdjustmentCount; ++i) {
gtk_adjustment_set_value(data->LightnessAdjustment[i],
CFG->lightnessAdjustment[i].adjustment);
@@ -1566,9 +1560,7 @@
|| (CFG->grayscaleMixer[2] != conf_default.grayscaleMixer[2]));
gtk_widget_set_sensitive(GTK_WIDGET(data->GrayscaleMixerTable),
CFG->grayscaleMode == grayscale_mixer);
-#ifdef UFRAW_DESPECKLE
despeckle_update_sensitive(data);
-#endif
for (max = 1, i = 0; i < 3; ++i)
max = MAX(max, CFG->grayscaleMixer[i]);
@@ -2678,7 +2670,6 @@
CFG->grayscaleMixer[1] = conf_default.grayscaleMixer[1];
CFG->grayscaleMixer[2] = conf_default.grayscaleMixer[2];
}
-#ifdef UFRAW_DESPECKLE
if (button==data->ResetDespeckleButton) {
memcpy(CFG->despeckleWindow, conf_default.despeckleWindow,
sizeof (CFG->despeckleWindow));
@@ -2688,7 +2679,6 @@
sizeof (CFG->despecklePasses));
ufraw_invalidate_despeckle_layer(data->UF);
}
-#endif
for (i = 0; i < max_adjustments; ++i) {
if (button == data->ResetLightnessAdjustmentButton[i]) {
CFG->lightnessAdjustment[i].adjustment = 1.0;
@@ -2797,7 +2787,6 @@
ufraw_invalidate_layer(data->UF, ufraw_develop_phase);
update_scales(data);
}
-#ifdef UFRAW_DESPECKLE
} else if (valuep==(void*)data->ChannelSelectButton) {
if (data->ChannelSelect >= -1) {
int i, b = 0;
@@ -2817,7 +2806,6 @@
ufraw_invalidate_layer(data->UF, ufraw_develop_phase);
render_preview(data);
}
-#endif
} else {
*valuep = gtk_toggle_button_get_active(button);
if ( valuep==&CFG->overExp || valuep==&CFG->underExp ) {
@@ -2869,7 +2857,6 @@
}
}
-#ifdef UFRAW_DESPECKLE
static void despeckle_update_sensitive(preview_data *data)
{
conf_data *c = CFG;
@@ -2877,14 +2864,14 @@
int i;
b = FALSE;
- for (i = 0; i < 3; ++i) {
+ for (i = 0; i < data->UF->colors; ++i) {
b |= fabs(c->despeckleWindow[i] - conf_default.despeckleWindow[i]) >
0.1;
b |= fabs(c->despeckleDecay[i] - conf_default.despeckleDecay[i]) >
0.001;
b |= fabs(c->despecklePasses[i] - conf_default.despecklePasses[i]) >
0.1;
}
gtk_widget_set_sensitive(GTK_WIDGET(data->ResetDespeckleButton), b);
b = FALSE;
- for (i = 1; i < 3; ++i) {
+ for (i = 1; i < data->UF->colors; ++i) {
b |= c->despeckleWindow[0] != c->despeckleWindow[i];
b |= c->despeckleDecay[0] != c->despeckleDecay[i];
b |= c->despecklePasses[0] != c->despecklePasses[i];
@@ -2924,7 +2911,7 @@
GtkAdjustment **adjp = NULL;
match = 0;
- for (i = 0; i < 3; ++i) {
+ for (i = 0; i < data->UF->colors; ++i) {
if (p == &c->despeckleWindow[i]) {
adjp = data->DespeckleWindowAdj;
match = c->despecklePasses[i] ? 1 : -1;
@@ -2946,7 +2933,7 @@
if (match) {
if (gtk_toggle_button_get_active(data->DespeckleLockChannelsButton)) {
++data->FreezeDialog;
- for (j = 0; j < 3; ++j) {
+ for (j = 0; j < data->UF->colors; ++j) {
p[j - i] = *p;
gtk_adjustment_set_value(adjp[j], *p);
despeckle_apply_constraints(data, adjp, j);
@@ -2961,7 +2948,6 @@
}
return match ? TRUE : FALSE;
}
-#endif
static void adjustment_update(GtkAdjustment *adj, double *valuep)
{
@@ -3005,10 +2991,8 @@
ufraw_invalidate_denoise_layer(data->UF);
} else if (valuep==&CFG->hotpixel) {
ufraw_invalidate_hotpixel_layer(data->UF);
-#ifdef UFRAW_DESPECKLE
} else if (despeckle_adjustment_update(data, valuep)) {
return;
-#endif
} else {
if (CFG->autoExposure==enabled_state) CFG->autoExposure = apply_state;
if (CFG->autoBlack==enabled_state) CFG->autoBlack = apply_state;
@@ -4047,11 +4031,9 @@
preview_data *data = get_preview_data(notebook);
if (data->FreezeDialog==TRUE) return;
-#ifdef UFRAW_DESPECKLE
if (data->ChannelSelect >= 0)
gtk_toggle_button_set_active(
data->ChannelSelectButton[data->ChannelSelect], FALSE);
-#endif
GtkWidget *event_box =
gtk_widget_get_ancestor(data->PreviewWidget, GTK_TYPE_EVENT_BOX);
if ( page_num==data->PageNumSpot ||
@@ -4585,7 +4567,6 @@
/* End of Grayscale page */
}
-#ifdef UFRAW_DESPECKLE
static void denoise_fill_interface(preview_data *data, GtkWidget *page)
{
GtkWidget *button, *label, *icon;
@@ -4594,8 +4575,9 @@
int i;
table = GTK_TABLE(table_with_frame(page, NULL, TRUE));
+ int right = 6 + data->UF->colors; // Right column location
icon = gtk_image_new_from_stock("gtk-help", GTK_ICON_SIZE_BUTTON);
- gtk_table_attach(table, icon, 9, 10, 0, 1, 0, 0, 0, 0);
+ gtk_table_attach(table, icon, right, right+1, 0, 1, 0, 0, 0, 0);
uf_widget_set_tooltip(icon, _(
"Despeckling is mainly useful when combining a high ISO number "
"with a high channel multiplier: when one channel has a very bad "
@@ -4612,7 +4594,8 @@
"object-lock", GTK_ICON_SIZE_BUTTON));
data->DespeckleLockChannelsButton = GTK_TOGGLE_BUTTON(button);
gtk_box_pack_start(box, button, FALSE, FALSE, 0);
- gtk_table_attach(table, GTK_WIDGET(box), 9, 10, 1, 4, GTK_FILL, 0, 0, 0);
+ gtk_table_attach(table, GTK_WIDGET(box), right, right+1, 1, 4,
+ GTK_FILL, 0, 0, 0);
uf_widget_set_tooltip(button, _("Update channel parameters together"));
data->ResetDespeckleButton = reset_button(_("Reset despeckle parameters"),
G_CALLBACK(button_update), NULL);
@@ -4625,7 +4608,8 @@
for (i = 0; i < data->UF->colors; ++i) {
button = gtk_toggle_button_new();
gtk_container_add(GTK_CONTAINER(button), gtk_image_new_from_stock(
- i==0 ? "channel-red" : i==1 ? "channel-green" : "channel-blue",
+ i==0 ? "channel-red" :
+ i==1 || i==3 ? "channel-green" : "channel-blue",
GTK_ICON_SIZE_BUTTON));
data->ChannelSelectButton[i] = GTK_TOGGLE_BUTTON(button);
g_signal_connect(G_OBJECT(button), "toggled",
@@ -4684,7 +4668,6 @@
gtk_table_attach(table, button, 6 + i, 6 + i + 1, 3, 4, GTK_FILL, 0, 0,
0);
}
}
-#endif
static void basecurve_fill_interface(preview_data *data, GtkWidget *page,
int curveeditorHeight)
@@ -5575,10 +5558,8 @@
data->PageNumGray = gtk_notebook_page_num(notebook, page);
grayscale_fill_interface(data, page);
-#ifdef UFRAW_DESPECKLE
// page = notebook_page_new(notebook, _("Denoising"), "denoise");
denoise_fill_interface(data, page);
-#endif
#ifdef HAVE_LENSFUN
/* Lens correction page */
Index: ufraw.h
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw.h,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -d -r1.157 -r1.158
--- ufraw.h 30 Mar 2010 02:45:24 -0000 1.157
+++ ufraw.h 30 Mar 2010 04:49:08 -0000 1.158
@@ -250,11 +250,9 @@
lightness_adjustment lightnessAdjustment[max_adjustments];
int grayscaleMode;
double grayscaleMixer[3];
-#ifdef UFRAW_DESPECKLE
- double despeckleWindow[3];
- double despeckleDecay[3];
- double despecklePasses[3];
-#endif
+ double despeckleWindow[4];
+ double despeckleDecay[4];
+ double despecklePasses[4];
/* SAVE options */
char inputFilename[max_path], outputFilename[max_path],
@@ -380,9 +378,7 @@
void ufraw_invalidate_hotpixel_layer(ufraw_data *uf);
void ufraw_invalidate_denoise_layer(ufraw_data *uf);
void ufraw_invalidate_darkframe_layer(ufraw_data *uf);
-#ifdef UFRAW_DESPECKLE
void ufraw_invalidate_despeckle_layer(ufraw_data *uf);
-#endif
void ufraw_invalidate_whitebalance_layer(ufraw_data *uf);
void ufraw_invalidate_smoothing_layer(ufraw_data *uf);
int ufraw_set_wb(ufraw_data *uf);
Index: configure.ac
===================================================================
RCS file: /cvsroot/ufraw/ufraw/configure.ac,v
retrieving revision 1.155
retrieving revision 1.156
diff -u -d -r1.155 -r1.156
--- configure.ac 30 Mar 2010 02:45:24 -0000 1.155
+++ configure.ac 30 Mar 2010 04:49:08 -0000 1.156
@@ -339,13 +339,6 @@
enable_contrast=no)
AC_MSG_RESULT($enable_contrast)
-AC_MSG_CHECKING(whether to enable despeckle)
-AC_ARG_ENABLE(despeckle,
- [ --enable-despeckle enable despeckle],
- AC_DEFINE(UFRAW_DESPECKLE, 1, Despeckle enabled),
- enable_despeckle=no)
-AC_MSG_RESULT($enable_despeckle)
-
AC_MSG_CHECKING(whether to enable 'None' interpolation)
AC_ARG_ENABLE(interp_none,
[ --enable-interp-none enable 'None' interpolation (mostly for
debugging)],
Index: ufraw_conf.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_conf.c,v
retrieving revision 1.168
retrieving revision 1.169
diff -u -d -r1.168 -r1.169
--- ufraw_conf.c 30 Mar 2010 02:45:24 -0000 1.168
+++ ufraw_conf.c 30 Mar 2010 04:49:08 -0000 1.169
@@ -83,11 +83,9 @@
}, /* lightness adjustments */
grayscale_none, /* grayscale mode */
{ 1.0, 1.0, 1.0 }, /* grayscale mixer */
-#ifdef UFRAW_DESPECKLE
- { 0.0, 0.0, 0.0 }, /* despeckle window */
- { 0.0, 0.0, 0.0 }, /* despeckle color decay */
- { 1.0, 1.0, 1.0 }, /* despeckle passes */
-#endif
+ { 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 */
/* Save options */
"", "", "", /* inputFilename, outputFilename, outputPath */
"", "", /* inputURI, inputModTime */
@@ -688,7 +686,6 @@
sscanf(temp, "%lf %lf %lf", &c->grayscaleMixer[0],
&c->grayscaleMixer[1], &c->grayscaleMixer[2]);
}
-#ifdef UFRAW_DESPECKLE
if ( strcmp("DespeckleWindow", element)==0 ) {
sscanf(temp, "%lf %lf %lf", &c->despeckleWindow[0],
&c->despeckleWindow[1], &c->despeckleWindow[2]);
@@ -701,7 +698,6 @@
sscanf(temp, "%lf %lf %lf", &c->despecklePasses[0],
&c->despecklePasses[1], &c->despecklePasses[2]);
}
-#endif
/* OutputIntent replaces Intent starting from ufraw-0.12. */
if ( strcmp("OutputIntent", element)==0 )
c->intent[out_profile] = conf_find_name(temp, intentNames,
@@ -1032,7 +1028,6 @@
c->grayscaleMixer[1],
c->grayscaleMixer[2]);
}
-#ifdef UFRAW_DESPECKLE
if (c->despeckleWindow[0] != conf_default.despeckleWindow[0] ||
c->despeckleWindow[1] != conf_default.despeckleWindow[1] ||
c->despeckleWindow[2] != conf_default.despeckleWindow[2]) {
@@ -1051,7 +1046,6 @@
buf = uf_markup_buf(buf, "<DespecklePasses>%f %f
%f</DespecklePasses>\n",
c->despecklePasses[0], c->despecklePasses[1],
c->despecklePasses[2]);
}
-#endif
if (c->size!=conf_default.size)
buf = uf_markup_buf(buf, "<Size>%d</Size>\n", c->size);
if (c->shrink!=conf_default.shrink)
@@ -1301,11 +1295,9 @@
dst->grayscaleMode = src->grayscaleMode;
memcpy(dst->grayscaleMixer, src->grayscaleMixer,
sizeof dst->grayscaleMixer);
-#ifdef UFRAW_DESPECKLE
memcpy(dst->despeckleWindow, src->despeckleWindow, sizeof
(dst->despeckleWindow));
memcpy(dst->despeckleDecay, src->despeckleDecay, sizeof
(dst->despeckleDecay));
memcpy(dst->despecklePasses, src->despecklePasses, sizeof
(dst->despecklePasses));
-#endif
g_strlcpy(dst->darkframeFile, src->darkframeFile, max_path);
/* We only copy the current BaseCurve */
if (src->BaseCurveIndex<=camera_curve) {
Index: ufraw_ufraw.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_ufraw.c,v
retrieving revision 1.250
retrieving revision 1.251
diff -u -d -r1.250 -r1.251
--- ufraw_ufraw.c 30 Mar 2010 02:45:24 -0000 1.250
+++ ufraw_ufraw.c 30 Mar 2010 04:49:08 -0000 1.251
@@ -859,14 +859,14 @@
/* Do it in integer arithmetic, it's a bit faster */
guint64 dx = (gint32)(srcX * 4096.0) - (xx << 12);
guint64 dy = (gint32)(srcY * 4096.0) - (yy << 12);
- for (c = 0; c < 3; c++)
+ for (c = 0; c < uf->colors; c++)
cur[c] = ( (4096-dy)*((4096-dx)*src[0][c] + dx*src[1][c])
+ dy*((4096-dx)*src[img->width][c]
+ (dx)*src[img->width+1][c]) ) >> 24;
#else
float dx = srcX - xx;
float dy = srcY - yy;
- for (c = 0; c < 3; c++)
+ for (c = 0; c < uf->colors; c++)
cur[c] = (1-dy)*((1-dx)*src[0][c] + dx*src[1][c])
+ dy*((1-dx)*src[img->width][c]
+ (dx)*src[img->width+1][c]);
@@ -951,7 +951,6 @@
uf->hotpixels = count;
}
-#ifdef UFRAW_DESPECKLE
static void ufraw_despeckle_line(guint16 *base, int step, int size, int window,
double decay, int colors, int c)
{
@@ -1064,7 +1063,6 @@
}
return active;
}
-#endif
static int ufraw_calculate_scale(ufraw_data *uf)
{
@@ -1149,9 +1147,7 @@
dcraw_wavelet_denoise(raw, uf->conf->threshold * sqrt(uf->raw_multiplier));
dcraw_finalize_raw(raw, dark, uf->developer->rgbWB);
raw->raw.image = rawimage;
-#ifdef UFRAW_DESPECKLE
ufraw_despeckle(uf, phase);
-#endif
#ifdef HAVE_LENSFUN
ufraw_prepare_tca(uf);
if (uf->TCAmodifier != NULL) {
@@ -1829,12 +1825,10 @@
ufraw_invalidate_layer(uf, ufraw_raw_phase);
}
-#ifdef UFRAW_DESPECKLE
void ufraw_invalidate_despeckle_layer(ufraw_data *uf)
{
ufraw_invalidate_layer(uf, ufraw_raw_phase);
}
-#endif
/*
* This one is special. The raw layer applies WB in preparation for optimal
@@ -1848,11 +1842,9 @@
uf->Images[ufraw_raw_phase].valid = 0;
uf->Images[ufraw_raw_phase].invalidate_event = TRUE;
-#ifdef UFRAW_DESPECKLE
/* Despeckling is sensitive for WB changes because it is nonlinear. */
if (ufraw_despeckle_active(uf))
ufraw_invalidate_despeckle_layer(uf);
-#endif
}
/*
Index: ufraw_lensfun.cc
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_lensfun.cc,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- ufraw_lensfun.cc 30 Mar 2010 02:15:07 -0000 1.13
+++ ufraw_lensfun.cc 30 Mar 2010 04:49:08 -0000 1.14
@@ -624,8 +624,6 @@
Distance.Reset();
UFString &LensfunAuto = Image[ufLensfunAuto];
if (LensfunAuto.IsEqual("yes")) {
- // XXX: Remove this test when lensfun is updated to handle 4-color raws.
- if (uf->colors < 4) {
if (strlen(uf->conf->lensText) > 0) {
const lfLens **lenses = LensDB()->FindLenses(&Camera,
NULL, uf->conf->lensText, LF_SEARCH_LOOSE);
@@ -645,7 +643,6 @@
lf_free(lenses);
return;
}
- }
}
// LensfunAuto == "no"
(*this)[ufTCA].Reset();
Index: ufraw_ui.h
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_ui.h,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- ufraw_ui.h 30 Mar 2010 02:45:24 -0000 1.42
+++ ufraw_ui.h 30 Mar 2010 04:49:08 -0000 1.43
@@ -70,9 +70,7 @@
#endif
GtkWidget *ResetBlackButton, *ResetBaseCurveButton, *ResetCurveButton;
GtkWidget *ResetGrayscaleChannelMixerButton;
-#ifdef UFRAW_DESPECKLE
GtkWidget *ResetDespeckleButton;
-#endif
GtkWidget *SaveButton;
GtkWidget *ControlButton[num_buttons];
guint16 ButtonMnemonic[num_buttons];
@@ -111,14 +109,12 @@
GtkAdjustment *RotationAdjustment;
GtkWidget *ResetRotationAdjustment;
GtkAdjustment *GrayscaleMixers[3];
-#ifdef UFRAW_DESPECKLE
- GtkAdjustment *DespeckleWindowAdj[3];
- GtkAdjustment *DespeckleDecayAdj[3];
- GtkAdjustment *DespecklePassesAdj[3];
+ GtkAdjustment *DespeckleWindowAdj[4];
+ GtkAdjustment *DespeckleDecayAdj[4];
+ GtkAdjustment *DespecklePassesAdj[4];
GtkToggleButton *DespeckleLockChannelsButton;
- GtkToggleButton *ChannelSelectButton[3];
+ GtkToggleButton *ChannelSelectButton[4];
int ChannelSelect;
-#endif
#ifdef HAVE_LENSFUN
/* The GtkEntry with camera maker/model name */
GtkWidget *CameraModel;
------------------------------------------------------------------------------
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