Re: [PATCH pixman 01/11] demos/scale: Compute filter size using boundary of xformed ellipse, not rectangle

Derek Foreman <[email protected]>
Newsgroups gmane.comp.lib.cairo,gmane.comp.graphics.pixman
Message-ID <[email protected]>
On 10/09/14 09:01 PM, Bill Spitzak wrote:
> This is much more accurate and less blurry. In particular the filtering does
> not change as the image is rotated.
> ---
>  demos/scale.c |   43 ++-----------------------------------------
>  1 file changed, 2 insertions(+), 41 deletions(-)
> 
> diff --git a/demos/scale.c b/demos/scale.c
> index d00307e..0b6c715 100644
> --- a/demos/scale.c
> +++ b/demos/scale.c
> @@ -55,50 +55,11 @@ get_widget (app_t *app, const char *name)
>      return widget;
>  }
>  
> -static double
> -min4 (double a, double b, double c, double d)
> -{
> -    double m1, m2;
> -
> -    m1 = MIN (a, b);
> -    m2 = MIN (c, d);
> -    return MIN (m1, m2);
> -}
> -
> -static double
> -max4 (double a, double b, double c, double d)
> -{
> -    double m1, m2;
> -
> -    m1 = MAX (a, b);
> -    m2 = MAX (c, d);
> -    return MAX (m1, m2);
> -}
> -
>  static void
>  compute_extents (pixman_f_transform_t *trans, double *sx, double *sy)
>  {
> -    double min_x, max_x, min_y, max_y;
> -    pixman_f_vector_t v[4] =
> -    {
> -	{ { 1, 1, 1 } },
> -	{ { -1, 1, 1 } },
> -	{ { -1, -1, 1 } },
> -	{ { 1, -1, 1 } },
> -    };
> -
> -    pixman_f_transform_point (trans, &v[0]);
> -    pixman_f_transform_point (trans, &v[1]);
> -    pixman_f_transform_point (trans, &v[2]);
> -    pixman_f_transform_point (trans, &v[3]);
> -
> -    min_x = min4 (v[0].v[0], v[1].v[0], v[2].v[0], v[3].v[0]);
> -    max_x = max4 (v[0].v[0], v[1].v[0], v[2].v[0], v[3].v[0]);
> -    min_y = min4 (v[0].v[1], v[1].v[1], v[2].v[1], v[3].v[1]);
> -    max_y = max4 (v[0].v[1], v[1].v[1], v[2].v[1], v[3].v[1]);
> -
> -    *sx = (max_x - min_x) / 2.0;
> -    *sy = (max_y - min_y) / 2.0;
> +  *sx = hypot (trans->m[0][0], trans->m[0][1]) / trans->m[2][2];
> +  *sy = hypot (trans->m[1][0], trans->m[1][1]) / trans->m[2][2];

Whitespace damage - the rest of the file is 4 space indent.

>  }
>  
>  typedef struct
> 

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.