Imager-Font-FT2
view release on metacpan or search on metacpan
double cheight
double cwidth
SV *text_sv
int utf8
PREINIT:
i_img_dim bbox[BOUNDING_BOX_COUNT];
int i;
char *text;
STRLEN text_len;
int rc;
PPCODE:
text = SvPV(text_sv, text_len);
#ifdef SvUTF8
if (SvUTF8(text_sv))
utf8 = 1;
#endif
rc = i_ft2_bbox(font, cheight, cwidth, text, text_len, bbox, utf8);
if (rc) {
EXTEND(SP, rc);
for (i = 0; i < rc; ++i)
PUSHs(sv_2mortal(newSViv(bbox[i])));
double cheight
double cwidth
SV *text_sv
int vlayout
int utf8
PREINIT:
i_img_dim bbox[8];
int i;
const char *text;
STRLEN len;
PPCODE:
text = SvPV(text_sv, len);
#ifdef SvUTF8
if (SvUTF8(text_sv))
utf8 = 1;
#endif
if (i_ft2_bbox_r(font, cheight, cwidth, text, len, vlayout,
utf8, bbox)) {
EXTEND(SP, 8);
for (i = 0; i < 8; ++i)
PUSHs(sv_2mortal(newSViv(bbox[i])));
void
ft2_transform_box(font, x0, x1, x2, x3)
Imager::Font::FT2x font
i_img_dim x0
i_img_dim x1
i_img_dim x2
i_img_dim x3
PREINIT:
i_img_dim box[4];
PPCODE:
box[0] = x0; box[1] = x1; box[2] = x2; box[3] = x3;
ft2_transform_box(font, box);
EXTEND(SP, 4);
PUSHs(sv_2mortal(newSViv(box[0])));
PUSHs(sv_2mortal(newSViv(box[1])));
PUSHs(sv_2mortal(newSViv(box[2])));
PUSHs(sv_2mortal(newSViv(box[3])));
void
i_ft2_has_chars(handle, text_sv, utf8)
Imager::Font::FT2x handle
SV *text_sv
int utf8
PREINIT:
char *text;
STRLEN len;
char *work;
size_t count;
size_t i;
PPCODE:
text = SvPV(text_sv, len);
#ifdef SvUTF8
if (SvUTF8(text_sv))
utf8 = 1;
#endif
work = mymalloc(len);
count = i_ft2_has_chars(handle, text, len, utf8, work);
if (GIMME_V == G_ARRAY) {
if (count) {
EXTEND(SP, count);
PUSHs(sv_2mortal(newSVpv(work, count)));
}
myfree(work);
void
i_ft2_face_name(handle)
Imager::Font::FT2x handle
PREINIT:
char name[255];
size_t len;
PPCODE:
len = i_ft2_face_name(handle, name, sizeof(name));
if (len) {
EXTEND(SP, 1);
PUSHs(sv_2mortal(newSVpv(name, 0)));
}
undef_int
i_ft2_can_face_name()
void
Imager::Font::FT2x handle
SV *text_sv
int utf8
int reliable_only
PREINIT:
char const *text;
STRLEN work_len;
size_t len;
char name[255];
SSize_t count = 0;
PPCODE:
i_clear_error();
text = SvPV(text_sv, work_len);
len = work_len;
#ifdef SvUTF8
if (SvUTF8(text_sv))
utf8 = 1;
#endif
while (len) {
unsigned long ch;
if (utf8) {
int
i_ft2_is_multiple_master(handle)
Imager::Font::FT2x handle
void
i_ft2_get_multiple_masters(handle)
Imager::Font::FT2x handle
PREINIT:
i_font_mm mm;
int i;
PPCODE:
if (i_ft2_get_multiple_masters(handle, &mm)) {
EXTEND(SP, 2+mm.num_axis);
PUSHs(sv_2mortal(newSViv(mm.num_axis)));
PUSHs(sv_2mortal(newSViv(mm.num_designs)));
for (i = 0; i < mm.num_axis; ++i) {
AV *av = newAV();
SV *sv;
av_extend(av, 3);
sv = newSVpv(mm.axis[i].name, strlen(mm.axis[i].name));
SvREFCNT_inc(sv);
( run in 0.786 second using v1.01-cache-2.11-cpan-5511b514fd6 )