summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@redhat.com>2008-10-06 19:37:16 -0400
committerSøren Sandmann Pedersen <sandmann@redhat.com>2008-10-06 19:37:16 -0400
commitb278f6d14672ca825527051e908f7f0be81a0d75 (patch)
tree9e6015034325e701ffffeb514a665a70120dad6f
parentabbc0178bae8152a1ebec04683d6b2036271d165 (diff)
Add scale factor to filter functions
-rw-r--r--downscaling.c21
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,