diff options
author | Søren Sandmann Pedersen <sandmann@redhat.com> | 2008-10-06 19:37:16 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@redhat.com> | 2008-10-06 19:37:16 -0400 |
commit | b278f6d14672ca825527051e908f7f0be81a0d75 (patch) | |
tree | 9e6015034325e701ffffeb514a665a70120dad6f | |
parent | abbc0178bae8152a1ebec04683d6b2036271d165 (diff) |
Add scale factor to filter functions
-rw-r--r-- | downscaling.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/downscaling.c b/downscaling.c index 2dbfb43..1d96fe6 100644 --- a/downscaling.c +++ b/downscaling.c @@ -227,7 +227,8 @@ _cairo_matrix_to_pixman_matrix (const cairo_matrix_t *matrix, typedef void (* set_filter_func_t) (pixman_image_t *image, int w, - int h); + int h, + double scale); typedef struct { @@ -274,7 +275,7 @@ create_gaussian_kernel (int r, int *n_params) } static void -set_gaussian (pixman_image_t *image, int w, int h) +set_gaussian (pixman_image_t *image, int w, int h, double scale) { int n_params; @@ -292,31 +293,31 @@ set_gaussian (pixman_image_t *image, int w, int h) } static void -set_bilinear (pixman_image_t *image, int w, int h) +set_bilinear (pixman_image_t *image, int w, int h, double scale) { pixman_image_set_filter (image, PIXMAN_FILTER_BILINEAR, NULL, 0); } static void -set_nearest (pixman_image_t *image, int w, int h) +set_nearest (pixman_image_t *image, int w, int h, double scale) { pixman_image_set_filter (image, PIXMAN_FILTER_NEAREST, NULL, 0); } static void -set_lanczos (pixman_image_t *image, int w, int h) +set_lanczos (pixman_image_t *image, int w, int h, double scale) { g_error ("Lanczos filter is not implemented yet"); } static void -set_box (pixman_image_t *image, int w, int h) +set_box (pixman_image_t *image, int w, int h, double scale) { g_error ("Box filter is not implemented yet"); } static void -set_pixbuf (pixman_image_t *image, int w, int h) +set_pixbuf (pixman_image_t *image, int w, int h, double scale) { g_error ("Pixbuf filter is not implemented yet"); } @@ -333,7 +334,7 @@ static const filter_t filters[] = }; static void -set_filter (pixman_image_t *image, ImageInfo *info) +set_filter (pixman_image_t *image, ImageInfo *info, double scale) { int i; @@ -345,7 +346,7 @@ set_filter (pixman_image_t *image, ImageInfo *info) if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) { - filters[i].set_filter (image, info->width, info->height); + filters[i].set_filter (image, info->width, info->height, scale); return; } } @@ -392,7 +393,7 @@ transform_data (ImageInfo *info) pixman_image_set_transform (source, &trans); - set_filter (source, info); + set_filter (source, info, scale); pixman_image_composite (PIXMAN_OP_OVER, source, NULL, dest, |