[Pixman] [PATCH 14/18] Get rid of the classify methods.

Andrea Canciani ranma42 at gmail.com
Fri Jan 7 07:29:39 PST 2011


On Thu, Jan 6, 2011 at 3:27 AM, Søren Sandmann <sandmann at cs.au.dk> wrote:
> From: Søren Sandmann Pedersen <ssp at redhat.com>
>
> They are not used anymore, and the linear gradient is now doing the
> optimization in a different way.
> ---
>  pixman/pixman-image.c           |   14 --------------
>  pixman/pixman-linear-gradient.c |   28 +++++++++++++---------------
>  pixman/pixman-private.h         |   19 -------------------
>  pixman/pixman-solid-fill.c      |   12 ------------
>  4 files changed, 13 insertions(+), 60 deletions(-)
>
> diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
> index 74efa6f..e276eac 100644
> --- a/pixman/pixman-image.c
> +++ b/pixman/pixman-image.c
> @@ -72,7 +72,6 @@ _pixman_image_allocate (void)
>        common->alpha_map = NULL;
>        common->component_alpha = FALSE;
>        common->ref_count = 1;
> -       common->classify = NULL;
>        common->property_changed = NULL;
>        common->client_clip = FALSE;
>        common->destroy_func = NULL;
> @@ -83,19 +82,6 @@ _pixman_image_allocate (void)
>     return image;
>  }
>
> -source_image_class_t
> -_pixman_image_classify (pixman_image_t *image,
> -                        int             x,
> -                        int             y,
> -                        int             width,
> -                        int             height)
> -{
> -    if (image->common.classify)
> -       return image->common.classify (image, x, y, width, height);
> -    else
> -       return SOURCE_IMAGE_CLASS_UNKNOWN;
> -}
> -
>  static void
>  image_property_changed (pixman_image_t *image)
>  {
> diff --git a/pixman/pixman-linear-gradient.c b/pixman/pixman-linear-gradient.c
> index 20be249..b778601 100644
> --- a/pixman/pixman-linear-gradient.c
> +++ b/pixman/pixman-linear-gradient.c
> @@ -31,21 +31,21 @@
>  #include <stdlib.h>
>  #include "pixman-private.h"
>
> -static source_image_class_t
> -linear_gradient_classify (pixman_image_t *image,
> -                          int             x,
> -                          int             y,
> -                          int             width,
> -                          int             height)
> +static pixman_bool_t
> +linear_gradient_is_horizontal (pixman_image_t *image,
> +                              int             x,
> +                              int             y,
> +                              int             width,
> +                              int             height)
>  {
>     linear_gradient_t *linear = (linear_gradient_t *)image;
>     pixman_vector_t v;
>     pixman_fixed_32_32_t l;
>     pixman_fixed_48_16_t dx, dy;
>     double inc;
> -    source_image_class_t class;
> +    pixman_bool_t result;

Why don't you just return FALSE/TRUE?
Initializing the result to FALSE and returning it
makes the code harder to follow.

>
> -    class = SOURCE_IMAGE_CLASS_UNKNOWN;
> +    result = FALSE;
>
>     if (image->common.transform)
>     {
> @@ -54,7 +54,7 @@ linear_gradient_classify (pixman_image_t *image,
>            image->common.transform->matrix[2][1] != 0 ||
>            image->common.transform->matrix[2][2] == 0)
>        {
> -           return class;
> +           return result;
>        }
>
>        v.vector[0] = image->common.transform->matrix[0][1];
> @@ -74,7 +74,7 @@ linear_gradient_classify (pixman_image_t *image,
>     l = dx * dx + dy * dy;
>
>     if (l == 0)
> -       return class;
> +       return result;
>
>     /*
>      * compute how much the input of the gradient walked changes
> @@ -86,9 +86,9 @@ linear_gradient_classify (pixman_image_t *image,
>
>     /* check that casting to integer would result in 0 */
>     if (-1 < inc && inc < 1)
> -       class = SOURCE_IMAGE_CLASS_HORIZONTAL;
> +       result = TRUE;
>
> -    return class;
> +    return result;
>  }
>
>  static uint32_t *
> @@ -243,8 +243,7 @@ _pixman_linear_gradient_iter_init (pixman_image_t *image,
>                                   uint8_t        *buffer,
>                                   iter_flags_t    flags)
>  {
> -    if (linear_gradient_classify (image, x, y, width, height) ==
> -       SOURCE_IMAGE_CLASS_HORIZONTAL)
> +    if (linear_gradient_is_horizontal (image, x, y, width, height))
>     {
>        if (flags & ITER_NARROW)
>            linear_gradient_get_scanline_narrow (iter, NULL);
> @@ -291,7 +290,6 @@ pixman_image_create_linear_gradient (pixman_point_fixed_t *        p1,
>     linear->p2 = *p2;
>
>     image->type = LINEAR;
> -    image->common.classify = linear_gradient_classify;
>
>     return image;
>  }
> diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
> index d62f4cd..8d3a604 100644
> --- a/pixman/pixman-private.h
> +++ b/pixman/pixman-private.h
> @@ -60,17 +60,6 @@ typedef enum
>     SOLID
>  } image_type_t;
>
> -typedef enum
> -{
> -    SOURCE_IMAGE_CLASS_UNKNOWN,
> -    SOURCE_IMAGE_CLASS_HORIZONTAL,
> -} source_image_class_t;
> -
> -typedef source_image_class_t (*classify_func_t) (pixman_image_t *image,
> -                                               int             x,
> -                                               int             y,
> -                                               int             width,
> -                                               int             height);
>  typedef void (*property_changed_func_t) (pixman_image_t *image);
>
>  struct image_common
> @@ -95,7 +84,6 @@ struct image_common
>     int                         alpha_origin_x;
>     int                         alpha_origin_y;
>     pixman_bool_t               component_alpha;
> -    classify_func_t             classify;
>     property_changed_func_t     property_changed;
>
>     pixman_image_destroy_func_t destroy_func;
> @@ -249,13 +237,6 @@ _pixman_conical_gradient_iter_init (pixman_image_t *image,
>                                    int x, int y, int width, int height,
>                                    uint8_t *buffer, iter_flags_t flags);
>
> -source_image_class_t
> -_pixman_image_classify (pixman_image_t *image,
> -                        int             x,
> -                        int             y,
> -                        int             width,
> -                        int             height);
> -
>  pixman_image_t *
>  _pixman_image_allocate (void);
>
> diff --git a/pixman/pixman-solid-fill.c b/pixman/pixman-solid-fill.c
> index f6aca59..9795fd9 100644
> --- a/pixman/pixman-solid-fill.c
> +++ b/pixman/pixman-solid-fill.c
> @@ -26,16 +26,6 @@
>  #endif
>  #include "pixman-private.h"
>
> -static source_image_class_t
> -solid_fill_classify (pixman_image_t *image,
> -                     int             x,
> -                     int             y,
> -                     int             width,
> -                     int             height)
> -{
> -    return SOURCE_IMAGE_CLASS_HORIZONTAL;
> -}
> -
>  void
>  _pixman_solid_fill_iter_init (pixman_image_t *image,
>                              pixman_iter_t  *iter,
> @@ -98,8 +88,6 @@ pixman_image_create_solid_fill (pixman_color_t *color)
>     img->solid.color_32 = color_to_uint32 (color);
>     img->solid.color_64 = color_to_uint64 (color);
>
> -    img->common.classify = solid_fill_classify;
> -
>     return img;
>  }
>
> --
> 1.6.0.6
>
> _______________________________________________
> Pixman mailing list
> Pixman at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pixman
>


More information about the Pixman mailing list