On Sat, Dec 12, 2015 at 8:06 PM, <spit...@gmail.com> wrote: > From: Bill Spitzak <spit...@gmail.com> > > 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..71c7791 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]; > } > > typedef struct > -- > 1.9.1 > > _______________________________________________ > Pixman mailing list > Pixman@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/pixman
Could you please add some comment in the code about where this calculation comes from (reference to some mathematical equation/proof), and detail the mapping of the variables in the code to the arguments of the mathematical equation ? Otherwise, this patch is: Reviewed-by: Oded Gabbay <oded.gab...@gmail.com> _______________________________________________ Pixman mailing list Pixman@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pixman