diff options
author | jstebbins <[email protected]> | 2011-04-16 01:17:13 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2011-04-16 01:17:13 +0000 |
commit | 53655cbbc8f0cb49014ac9a5aade7acb76782d01 (patch) | |
tree | ce6621ff9d73b5c4a5543bab8ef4cf45dcf359d3 /gtk/src/hb-backend.c | |
parent | f7cf2757ca1839b131d153e1a50029c2ed10f8b1 (diff) |
LinGui: Fix PAR overflow issues.
PAR values were saturating the max values allowed in PAR widget controls.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3932 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'gtk/src/hb-backend.c')
-rw-r--r-- | gtk/src/hb-backend.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c index f453f98d3..2d17a7c32 100644 --- a/gtk/src/hb-backend.c +++ b/gtk/src/hb-backend.c @@ -3518,6 +3518,26 @@ picture_settings_deps(signal_user_data_t *ud) } void +ghb_limit_rational( gint *num, gint *den, gint limit ) +{ + if (*num < limit && *den < limit) + return; + + if (*num > *den) + { + gdouble factor = (double)limit / *num; + *num = limit; + *den = factor * *den; + } + else + { + gdouble factor = (double)limit / *den; + *den = limit; + *num = factor * *num; + } +} + +void ghb_set_scale(signal_user_data_t *ud, gint mode) { hb_list_t * list; @@ -3795,9 +3815,9 @@ ghb_set_scale(signal_user_data_t *ud, gint mode) gint disp_width, dar_width, dar_height; gchar *str; - disp_width = (gdouble)(width * par_width / par_height) + 0.5; + disp_width = ((gdouble)par_width / par_height) * width + 0.5; hb_reduce(&dar_width, &dar_height, disp_width, height); - + ghb_limit_rational(&par_width, &par_height, 65535); gint iaspect = dar_width * 9 / dar_height; if (dar_width > 2 * dar_height) { |