其他分享
首页 > 其他分享> > Where is the implementation of pixman_region32_init()?

Where is the implementation of pixman_region32_init()?

作者:互联网

https://stackoverflow.com/questions/48434760/where-is-the-implementation-of-pixman-region32-init

It's in pixman-region32.c. You don't see it because those functions are generated by the PREFIX macro and then the code in pixman-region.c is used. See here:

typedef pixman_box32_t      box_type_t;
typedef pixman_region32_data_t  region_data_type_t;
typedef pixman_region32_t   region_type_t;
typedef int64_t                 overflow_int_t;

typedef struct {
    int x, y;
} point_type_t;

#define PREFIX(x) pixman_region32##x

#define PIXMAN_REGION_MAX INT32_MAX
#define PIXMAN_REGION_MIN INT32_MIN

#include "pixman-region.c"

It first sets the PREFIX macro to pixman_region32 and then imports the code from pixman-region.c.

PIXMAN_EXPORT void
PREFIX (_init) (region_type_t *region)
{
    region->extents = *pixman_region_empty_box;
    region->data = pixman_region_empty_data;
}

PIXMAN_EXPORT void
PREFIX (_init_rect) (region_type_t *	region,
                     int		x,
		     int		y,
		     unsigned int	width,
		     unsigned int	height)
{
    region->extents.x1 = x;
    region->extents.y1 = y;
    region->extents.x2 = x + width;
    region->extents.y2 = y + height;

    if (!GOOD_RECT (&region->extents))
    {
        if (BAD_RECT (&region->extents))
            _pixman_log_error (FUNC, "Invalid rectangle passed");
        PREFIX (_init) (region);
        return;
    }

    region->data = NULL;
}

标签:extents,implementation,region,int,init,region32,type,pixman
来源: https://blog.csdn.net/u012839187/article/details/119450872