Add an option to turn off filtering
This commit is contained in:
parent
174896d3e6
commit
bae65a61f7
@ -34,6 +34,7 @@ struct _FastivView {
|
|||||||
cairo_surface_t *surface; ///< The loaded image (sequence)
|
cairo_surface_t *surface; ///< The loaded image (sequence)
|
||||||
cairo_surface_t *frame; ///< Current frame within, unreferenced
|
cairo_surface_t *frame; ///< Current frame within, unreferenced
|
||||||
FastivIoOrientation orientation; ///< Current orientation
|
FastivIoOrientation orientation; ///< Current orientation
|
||||||
|
bool filter;
|
||||||
bool scale_to_fit;
|
bool scale_to_fit;
|
||||||
double scale;
|
double scale;
|
||||||
};
|
};
|
||||||
@ -350,8 +351,12 @@ fastiv_view_draw(GtkWidget *widget, cairo_t *cr)
|
|||||||
cairo_pattern_t *pattern = cairo_get_source(cr);
|
cairo_pattern_t *pattern = cairo_get_source(cr);
|
||||||
cairo_pattern_set_matrix(pattern, &matrix);
|
cairo_pattern_set_matrix(pattern, &matrix);
|
||||||
cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);
|
cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);
|
||||||
|
|
||||||
// TODO(p): Prescale it ourselves to an off-screen bitmap, gamma-correctly.
|
// TODO(p): Prescale it ourselves to an off-screen bitmap, gamma-correctly.
|
||||||
|
if (self->filter)
|
||||||
cairo_pattern_set_filter(pattern, CAIRO_FILTER_GOOD);
|
cairo_pattern_set_filter(pattern, CAIRO_FILTER_GOOD);
|
||||||
|
else
|
||||||
|
cairo_pattern_set_filter(pattern, CAIRO_FILTER_NEAREST);
|
||||||
|
|
||||||
#ifdef GDK_WINDOWING_QUARTZ
|
#ifdef GDK_WINDOWING_QUARTZ
|
||||||
// Not supported there. Acts a bit like repeating, but weirdly offset.
|
// Not supported there. Acts a bit like repeating, but weirdly offset.
|
||||||
@ -439,6 +444,11 @@ fastiv_view_key_press_event(GtkWidget *widget, GdkEventKey *event)
|
|||||||
case GDK_KEY_F:
|
case GDK_KEY_F:
|
||||||
return set_scale_to_fit(self, !self->scale_to_fit);
|
return set_scale_to_fit(self, !self->scale_to_fit);
|
||||||
|
|
||||||
|
case GDK_KEY_i:
|
||||||
|
self->filter = !self->filter;
|
||||||
|
gtk_widget_queue_draw(widget);
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
case GDK_KEY_less:
|
case GDK_KEY_less:
|
||||||
self->orientation = view_left[self->orientation];
|
self->orientation = view_left[self->orientation];
|
||||||
gtk_widget_queue_resize(widget);
|
gtk_widget_queue_resize(widget);
|
||||||
@ -504,6 +514,7 @@ fastiv_view_init(FastivView *self)
|
|||||||
{
|
{
|
||||||
gtk_widget_set_can_focus(GTK_WIDGET(self), TRUE);
|
gtk_widget_set_can_focus(GTK_WIDGET(self), TRUE);
|
||||||
|
|
||||||
|
self->filter = true;
|
||||||
self->scale = 1.0;
|
self->scale = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user