From: Udi F. <udi...@us...> - 2007-09-30 16:23:13
|
Update of /cvsroot/ufraw/ufraw In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7156 Modified Files: ufraw.h ufraw_conf.c ufraw_preview.c Log Message: Make the over/under blinks a config option (based on patch by Bruce Guenter). Save the gimp-remote command when needed. Index: ufraw.h =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw.h,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- ufraw.h 26 Sep 2007 21:06:07 -0000 1.71 +++ ufraw.h 30 Sep 2007 16:23:05 -0000 1.72 @@ -168,7 +168,7 @@ int histogram, liveHistogramScale, liveHistogramHeight; int rawHistogramScale, rawHistogramHeight; int expander[expander_count]; - gboolean overExp, underExp; + gboolean overExp, underExp, blinkOverUnder; char curvePath[max_path]; char profilePath[max_path]; gboolean silent; Index: ufraw_conf.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_conf.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- ufraw_conf.c 26 Sep 2007 21:06:07 -0000 1.71 +++ ufraw_conf.c 30 Sep 2007 16:23:05 -0000 1.72 @@ -92,6 +92,7 @@ { TRUE, TRUE }, /* expander[] */ FALSE, /* overExp indicator */ FALSE, /* underExp indicator */ + TRUE, /* blinkOverUnder indicators */ "", "", /* curvePath, profilePath */ FALSE, /* silent */ #ifdef WIN32 @@ -467,6 +468,8 @@ g_strlcpy(c->remoteGimpCommand, temp, max_path); if (!strcmp("OverExposure", element)) sscanf(temp, "%d", &c->overExp); if (!strcmp("UnderExposure", element)) sscanf(temp, "%d", &c->underExp); + if (!strcmp("BlinkOverUnder", element)) + sscanf(temp, "%d", &c->blinkOverUnder); if (!strcmp("WB", element)) { /* Keep compatebility with old numbers from ufraw-0.6 */ if (sscanf(temp, "%d", &i)==1) { @@ -712,6 +715,9 @@ if (c->underExp!=conf_default.underExp) buf = uf_markup_buf(buf, "<UnderExposure>%d</UnderExposure>\n", c->underExp); + if (c->blinkOverUnder!=conf_default.blinkOverUnder) + buf = uf_markup_buf(buf, + "<BlinkOverUnder>%d</BlinkOverUnder>\n", c->blinkOverUnder); if ( strcmp(c->remoteGimpCommand, conf_default.remoteGimpCommand)!=0 ) buf = uf_markup_buf(buf, "<RemoteGimpCommand>%s</RemoteGimpCommand>\n", Index: ufraw_preview.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_preview.c,v retrieving revision 1.153 retrieving revision 1.154 diff -u -d -r1.153 -r1.154 --- ufraw_preview.c 23 Sep 2007 18:05:05 -0000 1.153 +++ ufraw_preview.c 30 Sep 2007 16:23:05 -0000 1.154 @@ -701,6 +701,11 @@ guint8 *pixies = gdk_pixbuf_get_pixels(data->PreviewPixbuf); guint8 *p8; ufraw_image_data img = data->UF->Images[ufraw_final_phase]; + gboolean blinkOver = CFG->overExp && + ( !CFG->blinkOverUnder || (data->OverUnderTicker & 3) == 1 ); + gboolean blinkUnder = CFG->underExp && + ( !CFG->blinkOverUnder || (data->OverUnderTicker & 3) == 3 ); + /* Scale crop image coordinates to pixbuf coordinates */ float scale_x = ((float)pixbufWidth) / data->UF->initialWidth; float scale_y = ((float)pixbufHeight) / data->UF->initialHeight; @@ -742,13 +747,10 @@ continue; } if (data->RenderMode==render_default) { - if ( CFG->overExp && (data->OverUnderTicker & 3) == 1 && - (p8[0]==255 || p8[1]==255 || p8[2]==255) ) + if ( blinkOver && (p8[0]==255 || p8[1]==255 || p8[2]==255) ) p8[0] = p8[1] = p8[2] = 0; - else if ( CFG->underExp && (data->OverUnderTicker & 3) == 3 && - (p8[0]==0 || p8[1]==0 || p8[2]==0) ) + else if ( blinkUnder && (p8[0]==0 || p8[1]==0 || p8[2]==0) ) p8[0] = p8[1] = p8[2] = 255; - continue; } else if (data->RenderMode==render_overexposed) { for (c=0; c<3; c++) if (p8[c]!=255) p8[c] = 0; } else if (data->RenderMode==render_underexposed) { @@ -792,8 +794,8 @@ data->OverUnderTicker++; preview_draw_area(data, x, y, width, height); } - /* If no highlights are needed, disable this timeout function. */ - if (!CFG->overExp && !CFG->underExp) { + /* If no blinking is needed, disable this timeout function. */ + if (!CFG->blinkOverUnder || (!CFG->overExp && !CFG->underExp)) { data->BlinkTimer = 0; return FALSE; } @@ -802,8 +804,10 @@ static void start_blink(preview_data *data) { - if (!data->BlinkTimer) { - data->BlinkTimer = g_timeout_add(500, switch_highlights, data); + if ( CFG->blinkOverUnder && (CFG->overExp || CFG->underExp) ) { + if (!data->BlinkTimer) { + data->BlinkTimer = g_timeout_add(500, switch_highlights, data); + } } } @@ -821,10 +825,7 @@ gpointer user_data) { preview_data *data = get_preview_data(widget); - if (CFG->overExp || CFG->underExp) - start_blink(data); - else - stop_blink(data); + start_blink(data); (void)event; (void)user_data; } @@ -2497,8 +2498,8 @@ CFG->autoExposure = apply_state; } if ( valuep==&CFG->overExp || valuep==&CFG->underExp ) { - if (CFG->overExp || CFG->underExp) - start_blink(data); + start_blink(data); + switch_highlights(data); } else { render_preview(data); } @@ -2751,11 +2752,6 @@ data->SaveConfig = *data->UF->conf; } -static void gimp_entry_changed(GtkEntry *entry, char text[]) -{ - g_strlcpy(text, gtk_entry_get_text(entry), max_path); -} - static void gimp_reset_clicked(GtkWidget *widget, GtkEntry *entry) { (void)widget; @@ -2816,6 +2812,7 @@ curveTable = GTK_TABLE(table_with_frame(box, _("Luminosity Curves"), TRUE)); GtkTable *settingsTable = GTK_TABLE(table_with_frame(box, _("Settings"), TRUE)); + // Remote Gimp command entry label = gtk_label_new(_("Remote Gimp command")); gtk_table_attach(settingsTable, label, 0, 1, 0, 1, 0, 0, 0, 0); GtkEntry *gimpEntry = GTK_ENTRY(gtk_entry_new()); @@ -2823,8 +2820,7 @@ gtk_entry_set_text(gimpEntry, data->UF->conf->remoteGimpCommand); gtk_table_attach(settingsTable, GTK_WIDGET(gimpEntry), 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, 0, 0, 0); - g_signal_connect(G_OBJECT(gimpEntry), "changed", - G_CALLBACK(gimp_entry_changed), data->UF->conf->remoteGimpCommand); + // Remote Gimp command reset button button = gtk_button_new(); gtk_container_add(GTK_CONTAINER(button), gtk_image_new_from_stock(GTK_STOCK_REFRESH, GTK_ICON_SIZE_BUTTON)); @@ -2833,6 +2829,12 @@ gtk_table_attach(settingsTable, button, 2, 3, 0, 1, 0, 0, 0, 0); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gimp_reset_clicked), gimpEntry); + // blinkOverUnder toggle button + GtkWidget *blinkButton = gtk_check_button_new_with_label( + _("Blink Over/Underexposure Indicators")); + gtk_table_attach(settingsTable, blinkButton, 0, 2, 2, 3, GTK_FILL, 0, 0, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(blinkButton), + CFG->blinkOverUnder); label = gtk_label_new(_("Configuration")); box = gtk_vbox_new(FALSE, 0); @@ -2965,9 +2967,21 @@ /* APPLY only marks that something changed and we need to refresh */ if (response==GTK_RESPONSE_APPLY) continue; + + if ( strcmp(CFG->remoteGimpCommand, gtk_entry_get_text(gimpEntry))!=0 ) + data->OptionsChanged = TRUE; + if ( CFG->blinkOverUnder!= + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(blinkButton)) ) + data->OptionsChanged = TRUE; + if ( !data->OptionsChanged ) { /* If nothing changed there is nothing to do */ } else if ( response==GTK_RESPONSE_OK ) { + g_strlcpy(CFG->remoteGimpCommand, + gtk_entry_get_text(gimpEntry), max_path); + g_strlcpy(RC.remoteGimpCommand, CFG->remoteGimpCommand, max_path); + RC.blinkOverUnder = CFG->blinkOverUnder = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(blinkButton)); /* Copy profiles and curves from CFG to RC and save .ufrawrc */ if ( memcmp(&RC.BaseCurve[RC.BaseCurveIndex], &CFG->BaseCurve[RC.BaseCurveIndex], sizeof(CurveData))!=0 ) @@ -3054,6 +3068,7 @@ } ufraw_focus(optionsDialog, FALSE); gtk_widget_destroy(optionsDialog); + start_blink(data); render_preview(data); return; } |