6a78452000-09-04Per Hedbor #include <config.h>
2078852000-12-11Per Hedbor #if constant(Image.FreeType.Face) inherit "freetype"; #else
6d8c522000-09-19Per Hedbor inherit "ttf";
2078852000-12-11Per Hedbor #endif
34659f2000-12-11Per Hedbor constant cvs_version = "$Id: builtin.pike,v 1.7 2000/12/11 12:49:58 per Exp $";
6a78452000-09-04Per Hedbor  constant name = "Builtin fonts"; constant doc = "Fonts included in pike (and roxen)"; inherit FontHandler; array available_fonts() { return ({ "pike builtin", "roxen builtin" }); } array(mapping) font_information( string fnt ) { switch( replace(lower_case(fnt)," ","_")-"_" ) {
6d8c522000-09-19Per Hedbor  case "roxenbuiltin":
de21522000-09-27Per Hedbor #if constant(__rbf) && constant(grbf)
6a78452000-09-04Per Hedbor  return ({ ([
6d8c522000-09-19Per Hedbor  "name":"roxen builtin", "family":"Roxen builtin font",
6a78452000-09-04Per Hedbor  "path":"-", "style":"normal",
6d8c522000-09-19Per Hedbor  "format":"scalable vector font",
6a78452000-09-04Per Hedbor  ]) });
6d8c522000-09-19Per Hedbor #endif case "pikebuiltin":
6a78452000-09-04Per Hedbor  return ({ ([
6d8c522000-09-19Per Hedbor  "name":"pike builtin", "family":"Pike builtin font",
6a78452000-09-04Per Hedbor  "path":"-", "style":"normal",
6d8c522000-09-19Per Hedbor  "format":"bitmap dump",
6a78452000-09-04Per Hedbor  ]) }); } } array has_font( string name, int size ) { switch( replace(lower_case(name)," ","_")-"_" ) { case "pikebuiltin": case "roxenbuiltin": return ({ "nn" }); } return 0; }
6d8c522000-09-19Per Hedbor object roxenbuiltin; #ifdef THREADS Thread.Mutex lock = Thread.Mutex(); #endif
6a78452000-09-04Per Hedbor  Font open( string name, int size, int bold, int italic ) { switch( replace(lower_case(name)," ","_")-"_" ) {
6d8c522000-09-19Per Hedbor  case "roxenbuiltin":
2078852000-12-11Per Hedbor #if constant(__rbf) && constant(grbf)
34659f2000-12-11Per Hedbor  object key = lock->lock();
2078852000-12-11Per Hedbor #if constant(Image.FreeType.Face)
34659f2000-12-11Per Hedbor  if( !roxenbuiltin ) catch(roxenbuiltin = grbf()); if( roxenbuiltin ) return FTFont( roxenbuiltin, size, "-" );
2078852000-12-11Per Hedbor #else
34659f2000-12-11Per Hedbor  if( !roxenbuiltin ) catch(roxenbuiltin = grbf()); if( roxenbuiltin ) return TTFWrapper( roxenbuiltin(), size, "-" );
2078852000-12-11Per Hedbor #endif
6d8c522000-09-19Per Hedbor #endif
6a78452000-09-04Per Hedbor  case "pikebuiltin": return Image.Font(); } }