char *name
int index
+const char *
+i_ft2_version(runtime)
+ int runtime
+ PREINIT:
+ char buf[100];
+ CODE:
+ if (!i_ft2_version(runtime, buf, sizeof(buf))) {
+ XSRETURN_EMPTY;
+ }
+ RETVAL = buf;
+ OUTPUT:
+ RETVAL
+
undef_int
i_ft2_setdpi(font, xdpi, ydpi)
Imager::Font::FT2x font
}
void
-i_ft2_bbox_r(font, cheight, cwidth, text, vlayout, utf8)
+i_ft2_bbox_r(font, cheight, cwidth, text_sv, vlayout, utf8)
Imager::Font::FT2x font
double cheight
double cwidth
- char *text
+ 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(ST(3)))
+ if (SvUTF8(text_sv))
utf8 = 1;
#endif
- if (i_ft2_bbox_r(font, cheight, cwidth, text, strlen(text), vlayout,
+ if (i_ft2_bbox_r(font, cheight, cwidth, text, len, vlayout,
utf8, bbox)) {
EXTEND(SP, 8);
for (i = 0; i < 8; ++i)
}
undef_int
-i_ft2_text(font, im, tx, ty, cl, cheight, cwidth, text, align, aa, vlayout, utf8)
+i_ft2_text(font, im, tx, ty, cl, cheight, cwidth, text_sv, align, aa, vlayout, utf8)
Imager::Font::FT2x font
Imager::ImgRaw im
i_img_dim tx
Imager::Color cl
double cheight
double cwidth
+ SV *text_sv
int align
int aa
int vlayout
int utf8
PREINIT:
- char *text;
+ const char *text;
STRLEN len;
CODE:
+ text = SvPV(text_sv, len);
#ifdef SvUTF8
- if (SvUTF8(ST(7))) {
+ if (SvUTF8(text_sv)) {
utf8 = 1;
}
#endif
- text = SvPV(ST(7), len);
RETVAL = i_ft2_text(font, im, tx, ty, cl, cheight, cwidth, text,
len, align, aa, vlayout, utf8);
OUTPUT:
char const *text;
STRLEN len;
CODE:
+ text = SvPV(text_sv, len);
#ifdef SvUTF8
- if (SvUTF8(ST(7)))
+ if (SvUTF8(text_sv))
utf8 = 1;
#endif
- text = SvPV(text_sv, len);
RETVAL = i_ft2_cp(font, im, tx, ty, channel, cheight, cwidth, text,
- len, align, aa, vlayout, 1);
+ len, align, aa, vlayout, utf8);
OUTPUT:
RETVAL
size_t count;
size_t i;
PPCODE:
+ text = SvPV(text_sv, len);
#ifdef SvUTF8
if (SvUTF8(text_sv))
utf8 = 1;
#endif
- text = SvPV(text_sv, len);
work = mymalloc(len);
count = i_ft2_has_chars(handle, text, len, utf8, work);
if (GIMME_V == G_ARRAY) {
- EXTEND(SP, count);
- for (i = 0; i < count; ++i) {
- PUSHs(sv_2mortal(newSViv(work[i])));
- }
+ if (count) {
+ EXTEND(SP, count);
+ for (i = 0; i < count; ++i) {
+ PUSHs(boolSV(work[i]));
+ }
+ }
}
else {
EXTEND(SP, 1);
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
- text = SvPV(text_sv, work_len);
- len = work_len;
while (len) {
unsigned long ch;
if (utf8) {
ch = i_utf8_advance(&text, &len);
if (ch == ~0UL) {
i_push_error(0, "invalid UTF8 character");
- break;
+ XSRETURN_EMPTY;
}
}
else {
}
else {
PUSHs(&PL_sv_undef);
- }
+ }
}
int
BOOT:
PERL_INITIALIZE_IMAGER_CALLBACKS;
+ i_ft2_start();