@@ -1371,6 +1371,23 @@ static primaries_params_t _get_primaries_params(const dt_iop_agx_params_t *p)
13711371 return primaries_params ;
13721372}
13731373
1374+ static void _update_pivot_slider_settings (GtkWidget * const slider ,
1375+ const dt_iop_agx_params_t * const p )
1376+ {
1377+ darktable .gui -> reset ++ ;
1378+
1379+ const float range = p -> range_white_relative_ev - p -> range_black_relative_ev ;
1380+
1381+ dt_bauhaus_slider_set_factor (slider , range );
1382+ dt_bauhaus_slider_set_offset (slider , p -> range_black_relative_ev );
1383+ // 0 EV default with the new exposure params
1384+ dt_bauhaus_slider_set_default (slider , - p -> range_black_relative_ev / range );
1385+
1386+ dt_bauhaus_slider_set (slider , p -> curve_pivot_x );
1387+
1388+ darktable .gui -> reset -- ;
1389+ }
1390+
13741391static void _update_pivot_x (const float old_black_ev , const float old_white_ev , dt_iop_module_t * self , dt_iop_agx_params_t * const p )
13751392{
13761393 const dt_iop_agx_gui_data_t * g = self -> gui_data ;
@@ -1389,14 +1406,7 @@ static void _update_pivot_x(const float old_black_ev, const float old_white_ev,
13891406 // new_range is ensured to be > 0 due to hard limits on sliders
13901407 p -> curve_pivot_x = (clamped_pivot_ev - new_black_ev ) / new_range ;
13911408
1392- darktable .gui -> reset ++ ;
1393- GtkWidget * const slider = g -> basic_curve_controls .curve_pivot_x ;
1394- dt_bauhaus_slider_set_factor (slider , new_range );
1395- dt_bauhaus_slider_set_offset (slider , new_black_ev );
1396- // 0 EV default with the new exposure params
1397- dt_bauhaus_slider_set_default (slider , - new_black_ev / new_range );
1398- dt_bauhaus_slider_set (slider , p -> curve_pivot_x );
1399- darktable .gui -> reset -- ;
1409+ _update_pivot_slider_settings (g -> basic_curve_controls .curve_pivot_x , p );
14001410}
14011411
14021412static void _adjust_relative_exposure_from_exposure_params (dt_iop_module_t * self )
@@ -2094,6 +2104,22 @@ static void _update_curve_warnings(dt_iop_module_t *self)
20942104 ? dtgtk_cairo_paint_warning : NULL , CPF_ACTIVE , NULL );
20952105}
20962106
2107+ static void _update_redraw_dynamic_gui (dt_iop_module_t * const self ,
2108+ const dt_iop_agx_gui_data_t * const g ,
2109+ const dt_iop_agx_params_t * const p )
2110+ {
2111+ gtk_widget_set_visible (g -> curve_gamma , !p -> auto_gamma );
2112+ gtk_widget_set_visible (g -> primaries_controls_vbox , !p -> disable_primaries_adjustments );
2113+ const gboolean post_curve_primaries_available = !p -> completely_reverse_primaries && !p -> disable_primaries_adjustments ;
2114+ gtk_widget_set_visible (g -> post_curve_primaries_controls_vbox , post_curve_primaries_available );
2115+ gtk_widget_set_sensitive (g -> set_post_curve_primaries_from_pre_button , post_curve_primaries_available );
2116+
2117+ _update_curve_warnings (self );
2118+
2119+ // Trigger redraw when any parameter changes
2120+ gtk_widget_queue_draw (GTK_WIDGET (g -> graph_drawing_area ));
2121+ }
2122+
20972123void gui_changed (dt_iop_module_t * self ,
20982124 GtkWidget * widget ,
20992125 void * previous )
@@ -2138,24 +2164,15 @@ void gui_changed(dt_iop_module_t *self,
21382164 darktable .gui -> reset -- ;
21392165 }
21402166
2141- gtk_widget_set_visible (g -> curve_gamma , !p -> auto_gamma );
2142- gtk_widget_set_visible (g -> primaries_controls_vbox , !p -> disable_primaries_adjustments );
2143- const gboolean post_curve_primaries_available = !p -> completely_reverse_primaries && !p -> disable_primaries_adjustments ;
2144- gtk_widget_set_visible (g -> post_curve_primaries_controls_vbox , post_curve_primaries_available );
2145- gtk_widget_set_sensitive (g -> set_post_curve_primaries_from_pre_button , post_curve_primaries_available );
2146-
2147- _update_curve_warnings (self );
2148-
2149- // Trigger redraw when any parameter changes
2150- gtk_widget_queue_draw (GTK_WIDGET (g -> graph_drawing_area ));
2151-
21522167 if (g && p -> auto_gamma )
21532168 {
21542169 tone_mapping_params_t tone_mapping_params ;
21552170 _set_log_mapping_params (self -> params , & tone_mapping_params );
21562171 _adjust_pivot (self -> params , & tone_mapping_params );
21572172 dt_bauhaus_slider_set (g -> curve_gamma , tone_mapping_params .curve_gamma );
21582173 }
2174+
2175+ _update_redraw_dynamic_gui (self , g , p );
21592176}
21602177
21612178static GtkWidget * _create_basic_curve_controls_box (dt_iop_module_t * self ,
@@ -2579,22 +2596,19 @@ static GtkWidget *_setup_hue_slider(dt_iop_module_t *self,
25792596
25802597void gui_update (dt_iop_module_t * self )
25812598{
2582- dt_iop_agx_gui_data_t * g = self -> gui_data ;
2583- const dt_iop_agx_params_t * p = self -> params ;
2599+ const dt_iop_agx_gui_data_t * const g = self -> gui_data ;
2600+ const dt_iop_agx_params_t * const p = self -> params ;
25842601
2585- const float range = p -> range_white_relative_ev - p -> range_black_relative_ev ;
2586- dt_bauhaus_slider_set_factor (g -> basic_curve_controls .curve_pivot_x , range );
2587- dt_bauhaus_slider_set_offset (g -> basic_curve_controls .curve_pivot_x , p -> range_black_relative_ev );
2602+ _update_pivot_slider_settings (g -> basic_curve_controls .curve_pivot_x , p );
25882603
25892604 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g -> auto_gamma ),
25902605 p -> auto_gamma );
25912606 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g -> disable_primaries_adjustments ),
25922607 p -> disable_primaries_adjustments );
25932608 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g -> completely_reverse_primaries ),
25942609 p -> completely_reverse_primaries );
2595- _update_curve_warnings (self );
25962610
2597- gui_changed (self , NULL , NULL );
2611+ _update_redraw_dynamic_gui (self , g , p );
25982612}
25992613
26002614static void _create_primaries_page (dt_iop_module_t * main ,
0 commit comments