LOCAL TAPTR dfb_hostopenfont(DFBDISPLAY *mod, TTAGITEM *tags) { struct fnt_attr fattr; struct FontNode *fn; TAPTR font = TNULL; TAPTR exec = TGetExecBase(mod); /* fetch user specified attributes */ fattr.fname = (TSTRPTR) TGetTag(tags, TVisual_FontName, (TTAG) FNT_DEFNAME); fattr.fpxsize = (TINT) TGetTag(tags, TVisual_FontPxSize, (TTAG) FNT_DEFPXSIZE); /* not yet fattr.fitalic = (TBOOL) TGetTag(tags, TVisual_FontItalic, (TTAG) TFALSE); fattr.fbold = (TBOOL) TGetTag(tags, TVisual_FontBold, (TTAG) TFALSE); fattr.fscale = (TBOOL) TGetTag(tags, TVisual_FontScaleable, (TTAG) TFALSE); */ if (fattr.fname) { fn = TExecAlloc0(exec, mod->dfb_MemMgr, sizeof(struct FontNode)); if (fn) { fn->handle.thn_Owner = mod; if (hostopenfont(mod, fn, &fattr)) { /* load succeeded, save font attributes */ fn->pxsize = fattr.fpxsize; fn->font->GetHeight(fn->font, &fn->height); fn->font->GetAscender(fn->font, &fn->ascent); fn->font->GetDescender(fn->font, &fn->descent); /* not yet if (fattr.fitalic) fn->attr = FNT_ITALIC; if (fattr.fbold) fn->attr |= FNT_BOLD; */ /* append to the list of open fonts */ TDBPRINTF(TDB_INFO, ("O '%s' %dpx\n", fattr.fname, fattr.fpxsize)); TAddTail(&mod->dfb_fm.openfonts, &fn->handle.thn_Node); font = (TAPTR)fn; } else { /* load failed, free fontnode */ TDBPRINTF(TDB_INFO,("X unable to load '%s'\n", fattr.fname)); TExecFree(exec, fn); } } else TDBPRINTF(TDB_FAIL,("out of memory :(\n")); } else TDBPRINTF(TDB_ERROR,("X invalid fontname '%s' specified\n", fattr.fname)); return font; }
LOCAL TAPTR rfb_hostopenfont(struct rfb_Display *mod, TTAGITEM *tags) { struct fnt_attr fattr; struct rfb_FontNode *fn; TAPTR font = TNULL; /* fetch user specified attributes */ fattr.fname = (TSTRPTR) TGetTag(tags, TVisual_FontName, (TTAG) FNT_DEFNAME); fattr.fpxsize = (TINT) TGetTag(tags, TVisual_FontPxSize, (TTAG) FNT_DEFPXSIZE); if (fattr.fname) { fn = TExecAlloc0(mod->rfb_ExecBase, mod->rfb_MemMgr, sizeof(struct rfb_FontNode)); if (fn) { fn->handle.thn_Owner = mod; if (hostopenfont(mod, fn, &fattr)) { /* load succeeded, save font attributes */ fn->pxsize = fattr.fpxsize; fn->height = fn->face->size->metrics.height >> 6; fn->ascent = fn->face->size->metrics.ascender >> 6; fn->descent = fn->face->size->metrics.descender >> 6; /* append to the list of open fonts */ TDBPRINTF(TDB_INFO, ("O '%s' %dpx\n", fattr.fname, fattr.fpxsize)); TAddTail(&mod->rfb_FontManager.openfonts, &fn->handle.thn_Node); font = (TAPTR) fn; } else {