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 ufraw-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ufraw-cvs