Cairo

 view release on metacpan or  search on metacpan

CairoPattern.xs  view on Meta::CPAN

void cairo_pattern_set_matrix (cairo_pattern_t * pattern, cairo_matrix_t * matrix);

## void cairo_pattern_get_matrix (cairo_pattern_t * pattern, cairo_matrix_t * matrix);
cairo_matrix_t * cairo_pattern_get_matrix (cairo_pattern_t * pattern);
    PREINIT:
	cairo_matrix_t matrix;
    CODE:
	cairo_pattern_get_matrix (pattern, &matrix);
	RETVAL = cairo_perl_copy_matrix (&matrix);
    OUTPUT:
	RETVAL

cairo_status_t cairo_pattern_status (cairo_pattern_t *pattern);

void cairo_pattern_set_extend (cairo_pattern_t * pattern, cairo_extend_t extend);

void cairo_pattern_set_filter (cairo_pattern_t * pattern, cairo_filter_t filter);

cairo_filter_t cairo_pattern_get_filter (cairo_pattern_t * pattern);

cairo_extend_t cairo_pattern_get_extend (cairo_pattern_t * pattern);

#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 2, 0)

cairo_pattern_type_t cairo_pattern_get_type (cairo_pattern_t *pattern);

#endif

# --------------------------------------------------------------------------- #

MODULE = Cairo::Pattern	PACKAGE = Cairo::SolidPattern	PREFIX = cairo_pattern_

BOOT:
	cairo_perl_set_isa ("Cairo::SolidPattern", "Cairo::Pattern");

# cairo_pattern_t* cairo_pattern_create_rgb (double red, double green, double blue);
cairo_pattern_t_noinc * cairo_pattern_create_rgb (class, double red, double green, double blue)
    C_ARGS:
	red, green, blue
    POSTCALL:
#if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 2, 0)
	cairo_perl_package_table_insert (RETVAL, "Cairo::SolidPattern");
#endif

# cairo_pattern_t* cairo_pattern_create_rgba (double red, double green, double blue, double alpha);
cairo_pattern_t_noinc * cairo_pattern_create_rgba (class, double red, double green, double blue, double alpha)
    C_ARGS:
	red, green, blue, alpha
    POSTCALL:
#if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 2, 0)
	cairo_perl_package_table_insert (RETVAL, "Cairo::SolidPattern");
#endif

#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 4, 0)

## cairo_status_t cairo_pattern_get_rgba (cairo_pattern_t *pattern, double *red, double *green, double *blue, double *alpha);
void cairo_pattern_get_rgba (cairo_pattern_t *pattern)
    PREINIT:
	cairo_status_t status;
	double red, green, blue, alpha;
    PPCODE:
	status = cairo_pattern_get_rgba (pattern, &red, &green, &blue, &alpha);
	CAIRO_PERL_CHECK_STATUS (status);
	EXTEND (sp, 4);
	PUSHs (sv_2mortal (newSVnv (red)));
	PUSHs (sv_2mortal (newSVnv (green)));
	PUSHs (sv_2mortal (newSVnv (blue)));
	PUSHs (sv_2mortal (newSVnv (alpha)));

#endif

# --------------------------------------------------------------------------- #

MODULE = Cairo::Pattern	PACKAGE = Cairo::SurfacePattern	PREFIX = cairo_pattern_

BOOT:
	cairo_perl_set_isa ("Cairo::SurfacePattern", "Cairo::Pattern");

cairo_pattern_t_noinc * create (class, cairo_surface_t * surface);
    CODE:
	RETVAL = cairo_pattern_create_for_surface (surface);
#if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 2, 0)
	cairo_perl_package_table_insert (RETVAL, "Cairo::SurfacePattern");
#endif
    OUTPUT:
	RETVAL

#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 4, 0)

## cairo_status_t cairo_pattern_get_surface (cairo_pattern_t *pattern, cairo_surface_t **surface);
cairo_surface_t * cairo_pattern_get_surface (cairo_pattern_t *pattern)
    PREINIT:
	cairo_status_t status;
    CODE:
	status = cairo_pattern_get_surface (pattern, &RETVAL);
	CAIRO_PERL_CHECK_STATUS (status);
    OUTPUT:
	RETVAL

#endif

# --------------------------------------------------------------------------- #

MODULE = Cairo::Pattern	PACKAGE = Cairo::Gradient	PREFIX = cairo_pattern_

BOOT:
	cairo_perl_set_isa ("Cairo::Gradient", "Cairo::Pattern");

void cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, double offset, double red, double green, double blue);

void cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, double offset, double red, double green, double blue, double alpha);

#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 4, 0)

## cairo_status_t cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, int *count);
## cairo_status_t cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, int index, double *offset, double *red, double *green, double *blue, double *alpha);
void cairo_pattern_get_color_stops (cairo_pattern_t *pattern)
    PREINIT:
	cairo_status_t status;
	int count, i;
	double offset, red, green, blue, alpha;
    PPCODE:
	status = cairo_pattern_get_color_stop_count (pattern, &count);
	CAIRO_PERL_CHECK_STATUS (status);
	EXTEND (sp, count);
	for (i = 0; i < count; i++) {
		AV *av;
		status = cairo_pattern_get_color_stop_rgba (pattern, i, &offset, &red, &green, &blue, &alpha);
		CAIRO_PERL_CHECK_STATUS (status);
		av = newAV ();
		av_push (av, newSVnv (offset));
		av_push (av, newSVnv (red));
		av_push (av, newSVnv (green));
		av_push (av, newSVnv (blue));
		av_push (av, newSVnv (alpha));
		PUSHs (sv_2mortal (newRV_noinc ((SV *) av)));
	}

#endif

# --------------------------------------------------------------------------- #

MODULE = Cairo::Pattern	PACKAGE = Cairo::LinearGradient	PREFIX = cairo_pattern_

BOOT:
	cairo_perl_set_isa ("Cairo::LinearGradient", "Cairo::Gradient");

cairo_pattern_t_noinc * create (class, double x0, double y0, double x1, double y1);
    CODE:
	RETVAL = cairo_pattern_create_linear (x0, y0, x1, y1);
#if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 2, 0)
	cairo_perl_package_table_insert (RETVAL, "Cairo::LinearGradient");
#endif
    OUTPUT:
	RETVAL

#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 4, 0)

## cairo_status_t cairo_pattern_get_linear_points (cairo_pattern_t *pattern, double *x0, double *y0, double *x1, double *y1);
void cairo_pattern_get_points (cairo_pattern_t *pattern)
    PREINIT:
	cairo_status_t status;
	double x0, y0, x1, y1;
    PPCODE:
	status = cairo_pattern_get_linear_points (pattern, &x0, &y0, &x1, &y1);
	CAIRO_PERL_CHECK_STATUS (status);
	EXTEND (sp, 4);
	PUSHs (sv_2mortal (newSVnv (x0)));
	PUSHs (sv_2mortal (newSVnv (y0)));
	PUSHs (sv_2mortal (newSVnv (x1)));
	PUSHs (sv_2mortal (newSVnv (y1)));

#endif

# --------------------------------------------------------------------------- #

MODULE = Cairo::Pattern	PACKAGE = Cairo::RadialGradient	PREFIX = cairo_pattern_

BOOT:
	cairo_perl_set_isa ("Cairo::RadialGradient", "Cairo::Gradient");

cairo_pattern_t_noinc * create (class, double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
    CODE:
	RETVAL = cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1);
#if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 2, 0)
	cairo_perl_package_table_insert (RETVAL, "Cairo::RadialGradient");
#endif
    OUTPUT:
	RETVAL

#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 4, 0)

## cairo_status_t cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, double *x0, double *y0, double *r0, double *x1, double *y1, double *r1)
void cairo_pattern_get_circles (cairo_pattern_t *pattern)
    PREINIT:
	cairo_status_t status;
	double x0, y0, r0, x1, y1, r1;
    PPCODE:
	status = cairo_pattern_get_radial_circles (pattern, &x0, &y0, &r0, &x1, &y1, &r1);
	CAIRO_PERL_CHECK_STATUS (status);
	EXTEND (sp, 6);
	PUSHs (sv_2mortal (newSVnv (x0)));
	PUSHs (sv_2mortal (newSVnv (y0)));
	PUSHs (sv_2mortal (newSVnv (r0)));
	PUSHs (sv_2mortal (newSVnv (x1)));
	PUSHs (sv_2mortal (newSVnv (y1)));
	PUSHs (sv_2mortal (newSVnv (r1)));

#endif



( run in 0.925 second using v1.01-cache-2.11-cpan-71847e10f99 )