g_debug("scale_width_changed_cb ()");
ghb_widget_to_setting(ud->settings, widget);
ghb_check_dependency(ud, widget);
- ghb_set_scale (ud, GHB_SCALE_KEEP_WIDTH);
+ if (GTK_WIDGET_SENSITIVE(widget))
+ ghb_set_scale (ud, GHB_SCALE_KEEP_WIDTH);
update_preview = TRUE;
gchar *text;
gint width = ghb_settings_get_int(ud->settings, "scale_width");
g_debug("scale_height_changed_cb ()");
ghb_widget_to_setting(ud->settings, widget);
ghb_check_dependency(ud, widget);
- ghb_set_scale (ud, GHB_SCALE_KEEP_HEIGHT);
+ if (GTK_WIDGET_SENSITIVE(widget))
+ ghb_set_scale (ud, GHB_SCALE_KEEP_HEIGHT);
update_preview = TRUE;
gchar *text;
gint width = ghb_settings_get_int(ud->settings, "scale_width");
g_debug("crop_changed_cb ()");
ghb_widget_to_setting(ud->settings, widget);
ghb_check_dependency(ud, widget);
- ghb_set_scale (ud, GHB_SCALE_KEEP_NONE);
+ if (GTK_WIDGET_SENSITIVE(widget))
+ ghb_set_scale (ud, GHB_SCALE_KEEP_NONE);
crop[0] = ghb_settings_get_int(ud->settings, "PictureTopCrop");
crop[1] = ghb_settings_get_int(ud->settings, "PictureBottomCrop");
}
void
+display_width_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+{
+ g_debug("scale_changed_cb ()");
+ ghb_widget_to_setting(ud->settings, widget);
+ ghb_check_dependency(ud, widget);
+ ghb_clear_presets_selection(ud);
+ ghb_live_reset(ud);
+ if (GTK_WIDGET_SENSITIVE(widget))
+ ghb_set_scale (ud, GHB_SCALE_KEEP_NONE);
+ update_preview = TRUE;
+}
+
+void
+display_height_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+{
+ g_debug("scale_changed_cb ()");
+ ghb_widget_to_setting(ud->settings, widget);
+ ghb_check_dependency(ud, widget);
+ ghb_clear_presets_selection(ud);
+ ghb_live_reset(ud);
+ if (GTK_WIDGET_SENSITIVE(widget))
+ ghb_set_scale (ud, GHB_SCALE_KEEP_NONE);
+ update_preview = TRUE;
+}
+
+void
scale_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
g_debug("scale_changed_cb ()");
ghb_check_dependency(ud, widget);
ghb_clear_presets_selection(ud);
ghb_live_reset(ud);
- ghb_set_scale (ud, GHB_SCALE_KEEP_NONE);
+ if (GTK_WIDGET_SENSITIVE(widget))
+ ghb_set_scale (ud, GHB_SCALE_KEEP_NONE);
update_preview = TRUE;
gchar *text;
</child>
</object>
<object class="GtkWindow" id="settings_window">
- <property name="opacity">.85</property>
<property name="title" translatable="yes">Picture Settings</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="adjustment">adjustment25</property>
<property name="snap_to_ticks">True</property>
- <signal name="value_changed" handler="scale_changed_cb"/>
+ <signal name="value_changed" handler="display_width_changed_cb"/>
</object>
<packing>
<property name="expand">False</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="adjustment">adjustment26</property>
- <signal name="value_changed" handler="scale_changed_cb"/>
+ <signal name="value_changed" handler="display_height_changed_cb"/>
</object>
<packing>
<property name="expand">False</property>
static options_map_t d_alignment_opts[] =
{
- {"1", "1", 1, "1"},
{"2", "2", 2, "2"},
{"4", "4", 4, "4"},
{"8", "8", 8, "8"},
scale_height = ghb_settings_get_int(ud->settings, "scale_height");
enable_scale_width = !autoscale && (pic_par != 1);
- enable_scale_height = !autoscale &&
- ((pic_par == 0 && !keep_aspect) || (pic_par == 3));
- enable_disp_width = (pic_par == 3) && !keep_aspect &&
- (disp_height == scale_height);
- enable_disp_height = (pic_par == 3) && !keep_aspect &&
- (disp_width == scale_width);
+ enable_scale_height = !autoscale && (pic_par != 1);
+ enable_disp_width = (pic_par == 3) && !keep_aspect;
+ enable_disp_height = FALSE;
GtkWidget *widget;
widget = GHB_WIDGET(ud->builder, "scale_width");
keep_width = FALSE;
keep_height = FALSE;
}
- if (keep_aspect)
- {
- keep_height = FALSE;
- }
// Step needs to be at least 2 because odd widths cause scaler crash
step = mod;
widget = GHB_WIDGET (ud->builder, "scale_width");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, mod);
+ gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 16);
widget = GHB_WIDGET (ud->builder, "scale_height");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, mod);
- if (mod == 1)
- {
- widget = GHB_WIDGET (ud->builder, "PictureTopCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 2);
- widget = GHB_WIDGET (ud->builder, "PictureBottomCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 2);
- widget = GHB_WIDGET (ud->builder, "PictureLeftCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 2);
- widget = GHB_WIDGET (ud->builder, "PictureRightCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 2);
- }
- else
- {
- widget = GHB_WIDGET (ud->builder, "PictureTopCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 1);
- widget = GHB_WIDGET (ud->builder, "PictureBottomCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 1);
- widget = GHB_WIDGET (ud->builder, "PictureLeftCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 1);
- widget = GHB_WIDGET (ud->builder, "PictureRightCrop");
- gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 1);
- }
+ gtk_spin_button_set_increments (GTK_SPIN_BUTTON(widget), step, 16);
ghb_title_info_t tinfo;
if (autocrop && ghb_get_title_info (&tinfo, titleindex))
{
// The scaler crashes if the dimensions are not divisible by 2
// Align mod 2. And so does something in x264_encoder_headers()
job->anamorphic.modulus = mod;
+ if (keep_height && pic_par == 2)
+ width = ((double)height * crop_width / crop_height) + 0.5;
job->width = width;
job->height = height;
if (max_width)
gint dar_width, dar_height;
dar_width = ghb_settings_get_int(ud->settings, "PictureDisplayWidth");
dar_height = ghb_settings_get_int(ud->settings, "PictureDisplayHeight");
- if (dar_width > width)
- dar_height = height;
- else if (dar_height > height)
- dar_width = width;
- else
- {
- dar_width = width;
- dar_height = height;
- }
job->anamorphic.dar_width = dar_width;
job->anamorphic.dar_height = dar_height;
}
ghb_ui_update(ud, "scale_width", ghb_int64_value(width));
ghb_ui_update(ud, "scale_height", ghb_int64_value(height));
- gint disp_width, disp_height, dar_width, dar_height;
+ gint disp_width, dar_width, dar_height;
gchar *str;
- disp_width = width;
- disp_height = height;
- if (par_width >= par_height)
- {
- disp_width = par_width * width / par_height;
- }
- else
- {
- disp_height = par_height * height / par_width;
- }
- hb_reduce(&dar_width, &dar_height, disp_width, disp_height);
+ disp_width = par_width * width / par_height;
+ hb_reduce(&dar_width, &dar_height, disp_width, height);
if (dar_width > 2 * dar_height)
{
ghb_ui_update(ud, "pixel_aspect", ghb_string_value(str));
g_free(str);
ghb_ui_update(ud, "PictureDisplayWidth", ghb_int64_value(disp_width));
- ghb_ui_update(ud, "PictureDisplayHeight", ghb_int64_value(disp_height));
+ ghb_ui_update(ud, "PictureDisplayHeight", ghb_int64_value(height));
picture_settings_deps(ud);
}