DEFINE_IMAGER_CALLBACKS;
+typedef i_t1_font_t Imager__Font__T1xs;
+
+#define i_t1_DESTROY(font) i_t1_destroy(font)
+
MODULE = Imager::Font::T1 PACKAGE = Imager::Font::T1
undef_int
i_init_t1(t1log)
int t1log
-void
-i_t1_set_aa(st)
- int st
+MODULE = Imager::Font::T1 PACKAGE = Imager::Font::T1xs PREFIX = i_t1_
-int
-i_t1_new(pfb,afm)
+Imager::Font::T1xs
+i_t1_new(class,pfb,afm)
char* pfb
char* afm
+ C_ARGS:
+ pfb, afm
-int
-i_t1_destroy(font_id)
- int font_id
+void
+i_t1_DESTROY(font)
+ Imager::Font::T1xs font
undef_int
-i_t1_cp(im,xb,yb,channel,fontnum,points,str_sv,len_ignored,align,utf8=0,flags="")
+i_t1_cp(font,im,xb,yb,channel,points,str_sv,align,utf8=0,flags="",aa=1)
+ Imager::Font::T1xs font
Imager::ImgRaw im
- int xb
- int yb
+ i_img_dim xb
+ i_img_dim yb
int channel
- int fontnum
- float points
+ double points
SV* str_sv
int align
int utf8
char* flags
+ int aa
PREINIT:
char *str;
STRLEN len;
CODE:
+ str = SvPV(str_sv, len);
#ifdef SvUTF8
if (SvUTF8(str_sv))
utf8 = 1;
#endif
- str = SvPV(str_sv, len);
- RETVAL = i_t1_cp(im, xb,yb,channel,fontnum,points,str,len,align,
- utf8,flags);
+ RETVAL = i_t1_cp(font, im, xb,yb,channel,points,str,len,align,
+ utf8,flags,aa);
OUTPUT:
RETVAL
void
-i_t1_bbox(fontnum,point,str_sv,len_ignored,utf8=0,flags="")
- int fontnum
- float point
+i_t1_bbox(fontnum,point,str_sv,utf8=0,flags="")
+ Imager::Font::T1xs fontnum
+ double point
SV* str_sv
int utf8
char* flags
PREINIT:
- char *str;
+ const char *str;
STRLEN len;
- int cords[BOUNDING_BOX_COUNT];
+ i_img_dim cords[BOUNDING_BOX_COUNT];
int i;
int rc;
PPCODE:
+ str = SvPV(str_sv, len);
#ifdef SvUTF8
if (SvUTF8(str_sv))
utf8 = 1;
#endif
- str = SvPV(str_sv, len);
rc = i_t1_bbox(fontnum,point,str,len,cords,utf8,flags);
if (rc > 0) {
EXTEND(SP, rc);
undef_int
-i_t1_text(im,xb,yb,cl,fontnum,points,str_sv,len_ignored,align,utf8=0,flags="")
+i_t1_text(font,im,xb,yb,cl,points,str_sv,align,utf8=0,flags="",aa=1)
+ Imager::Font::T1xs font
Imager::ImgRaw im
- int xb
- int yb
+ i_img_dim xb
+ i_img_dim yb
Imager::Color cl
- int fontnum
- float points
+ double points
SV* str_sv
int align
int utf8
- char* flags
+ const char* flags
+ int aa
PREINIT:
char *str;
STRLEN len;
CODE:
+ str = SvPV(str_sv, len);
#ifdef SvUTF8
if (SvUTF8(str_sv))
utf8 = 1;
#endif
- str = SvPV(str_sv, len);
- RETVAL = i_t1_text(im, xb,yb,cl,fontnum,points,str,len,align,
- utf8,flags);
+ RETVAL = i_t1_text(font,im, xb,yb,cl,points,str,len,align,
+ utf8,flags,aa);
OUTPUT:
RETVAL
void
-i_t1_has_chars(handle, text_sv, utf8 = 0)
- int handle
+i_t1_has_chars(font, text_sv, utf8 = 0)
+ Imager::Font::T1xs font
SV *text_sv
int utf8
PREINIT:
int count;
int 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_t1_has_chars(handle, text, len, utf8, work);
+ count = i_t1_has_chars(font, text, len, utf8, work);
if (GIMME_V == G_ARRAY) {
EXTEND(SP, count);
+
for (i = 0; i < count; ++i) {
- PUSHs(sv_2mortal(newSViv(work[i])));
+ PUSHs(boolSV(work[i]));
}
}
else {
myfree(work);
void
-i_t1_face_name(handle)
- int handle
+i_t1_face_name(font)
+ Imager::Font::T1xs font
PREINIT:
char name[255];
int len;
PPCODE:
- len = i_t1_face_name(handle, name, sizeof(name));
+ len = i_t1_face_name(font, name, sizeof(name));
if (len) {
EXTEND(SP, 1);
PUSHs(sv_2mortal(newSVpv(name, strlen(name))));
}
void
-i_t1_glyph_name(handle, text_sv, utf8 = 0)
- int handle
+i_t1_glyph_names(font, text_sv, utf8 = 0)
+ Imager::Font::T1xs font
SV *text_sv
int utf8
PREINIT:
STRLEN work_len;
size_t len;
char name[255];
+ SSize_t count = 0;
PPCODE:
+ text = SvPV(text_sv, work_len);
#ifdef SvUTF8
if (SvUTF8(text_sv))
utf8 = 1;
#endif
- text = SvPV(text_sv, work_len);
+ i_clear_error();
len = work_len;
while (len) {
unsigned long ch;
ch = i_utf8_advance(&text, &len);
if (ch == ~0UL) {
i_push_error(0, "invalid UTF8 character");
- break;
+ XSRETURN(0);
}
}
else {
--len;
}
EXTEND(SP, 1);
- if (i_t1_glyph_name(handle, ch, name, sizeof(name))) {
+ if (i_t1_glyph_name(font, ch, name, sizeof(name))) {
PUSHs(sv_2mortal(newSVpv(name, 0)));
}
else {
PUSHs(&PL_sv_undef);
- }
+ }
}
+int
+i_t1_CLONE_SKIP(...)
+ CODE:
+ (void)items; /* avoid unused warning */
+ RETVAL = 1;
+ OUTPUT:
+ RETVAL
+
BOOT:
PERL_INITIALIZE_IMAGER_CALLBACKS;
+ i_t1_start();