Colouring-In-XS
view release on metacpan or search on metacpan
lib/Colouring/In/XS.xs view on Meta::CPAN
int weight = 50;
colouring_rgba_t c, out;
if (items > 1 && SvOK(ST(1)) && SvIV(ST(1)) != 0) {
weight = SvIV(ST(1));
}
colour = xs_ensure_obj(class, colour);
c = xs_extract_rgba(colour);
out = colouring_shade(c, weight);
RETVAL = xs_rgba_to_obj(class, out);
OUTPUT:
RETVAL
SV *
saturate(colour, amt, ...)
SV * colour
SV * amt
CODE:
SV * class = sv_2mortal(newSVpv("Colouring::In::XS", 17));
int relative = items > 2 && SvOK(ST(2)) && strcmp(SvPV_nolen(ST(2)), "relative") == 0;
double amount = colouring_depercent(SvPV_nolen(amt));
colouring_rgba_t c;
colour = xs_ensure_obj(class, colour);
c = xs_extract_rgba(colour);
c = colouring_saturate(c.r, c.g, c.b, c.a, amount, relative);
RETVAL = xs_rgba_to_obj(class, c);
OUTPUT:
RETVAL
SV *
desaturate(colour, amt, ...)
SV * colour
SV * amt
CODE:
SV * class = sv_2mortal(newSVpv("Colouring::In::XS", 17));
int relative = items > 2 && SvOK(ST(2)) && strcmp(SvPV_nolen(ST(2)), "relative") == 0;
double amount = colouring_depercent(SvPV_nolen(amt));
colouring_rgba_t c;
colour = xs_ensure_obj(class, colour);
c = xs_extract_rgba(colour);
c = colouring_desaturate(c.r, c.g, c.b, c.a, amount, relative);
RETVAL = xs_rgba_to_obj(class, c);
OUTPUT:
RETVAL
SV *
greyscale(colour)
SV * colour
CODE:
SV * class = sv_2mortal(newSVpv("Colouring::In::XS", 17));
colouring_rgba_t c;
colour = xs_ensure_obj(class, colour);
c = xs_extract_rgba(colour);
c = colouring_greyscale(c.r, c.g, c.b, c.a);
RETVAL = xs_rgba_to_obj(class, c);
OUTPUT:
RETVAL
void
colour(self)
SV * self
PPCODE:
int i;
AV * colour = (AV*)SvRV(*hv_fetch((HV*)SvRV(self), "colour", 6, 0));
int len = av_len(colour);
EXTEND(SP, len + 1);
for (i = 0; i <= len; i++) {
PUSHs(sv_2mortal(newSVsv(*av_fetch(colour, i, 0))));
}
SV *
get_message(msg)
SV * msg
CODE:
HV * msgs = MESSAGES;
STRLEN klen;
const char * key = SvPV(msg, klen);
SV ** slot = msgs ? hv_fetch(msgs, key, klen, 0) : NULL;
RETVAL = (slot && *slot) ? newSVsv(*slot) : &PL_sv_undef;
OUTPUT:
RETVAL
BOOT:
colouring_register_ops(aTHX);
( run in 0.486 second using v1.01-cache-2.11-cpan-71847e10f99 )