mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2024-11-10 20:13:53 +01:00
9c1503809a
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
57 lines
1.9 KiB
C
57 lines
1.9 KiB
C
/* See LICENSE file for license and copyright information */
|
|
|
|
#include "adjustment.h"
|
|
#include "utils.h"
|
|
|
|
GtkAdjustment*
|
|
zathura_adjustment_clone(GtkAdjustment* adjustment)
|
|
{
|
|
gdouble value = gtk_adjustment_get_value(adjustment);
|
|
gdouble lower = gtk_adjustment_get_lower(adjustment);
|
|
gdouble upper = gtk_adjustment_get_upper(adjustment);
|
|
gdouble step_increment = gtk_adjustment_get_step_increment(adjustment);
|
|
gdouble page_increment = gtk_adjustment_get_page_increment(adjustment);
|
|
gdouble page_size = gtk_adjustment_get_page_size(adjustment);
|
|
|
|
return GTK_ADJUSTMENT(gtk_adjustment_new(value, lower, upper, step_increment,
|
|
page_increment, page_size));
|
|
}
|
|
|
|
void
|
|
zathura_adjustment_set_value(GtkAdjustment* adjustment, gdouble value)
|
|
{
|
|
gtk_adjustment_set_value(adjustment,
|
|
MAX(gtk_adjustment_get_lower(adjustment),
|
|
MIN(gtk_adjustment_get_upper(adjustment) -
|
|
gtk_adjustment_get_page_size(adjustment),
|
|
value)));
|
|
}
|
|
|
|
gdouble
|
|
zathura_adjustment_get_ratio(GtkAdjustment* adjustment)
|
|
{
|
|
gdouble lower = gtk_adjustment_get_lower(adjustment);
|
|
gdouble upper = gtk_adjustment_get_upper(adjustment);
|
|
gdouble page_size = gtk_adjustment_get_page_size(adjustment);
|
|
gdouble value = gtk_adjustment_get_value(adjustment);
|
|
|
|
return (value - lower + page_size / 2.0) / (upper - lower);
|
|
}
|
|
|
|
void
|
|
zathura_adjustment_set_value_from_ratio(GtkAdjustment* adjustment,
|
|
gdouble ratio)
|
|
{
|
|
if (ratio == 0.0) {
|
|
return;
|
|
}
|
|
|
|
gdouble lower = gtk_adjustment_get_lower(adjustment);
|
|
gdouble upper = gtk_adjustment_get_upper(adjustment);
|
|
gdouble page_size = gtk_adjustment_get_page_size(adjustment);
|
|
|
|
gdouble value = (upper - lower) * ratio + lower - page_size / 2.0;
|
|
|
|
zathura_adjustment_set_value(adjustment, value);
|
|
}
|