X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcresources.C;h=955aa5f5281a05b7ec2912c759253f78a3a53748;hp=1e92730379e96aae5b810ab70134a23607208bac;hb=7e5a0760f40ff787cc3d93cb7768a901ebe52809;hpb=502b6f3b6fd04f6b01c6d70dcb81aa304dd0db1c diff --git a/cinelerra-5.1/guicast/bcresources.C b/cinelerra-5.1/guicast/bcresources.C index 1e927303..955aa5f5 100644 --- a/cinelerra-5.1/guicast/bcresources.C +++ b/cinelerra-5.1/guicast/bcresources.C @@ -33,6 +33,7 @@ #include "fonts.h" #include "language.h" #include "vframe.h" +#include "workarounds.h" #include #include @@ -382,7 +383,8 @@ BC_Resources::BC_Resources() filebox_history[i].path[0] = 0; #ifdef HAVE_XFT - XftInitFtLibrary(); + xftInit(0); + xftInitFtLibrary(); #endif little_endian = (*(const u_int32_t*)"\01\0\0\0") & 1; @@ -1041,7 +1043,7 @@ int BC_Resources::init_fontconfig(const char *search_path) FT_Library freetype_library = 0; // FT_Face freetype_face = 0; -// FT_Init_FreeType(&freetype_library); +// ft_Init_FreeType(&freetype_library); char line[BCTEXTLEN], current_dir[BCTEXTLEN]; current_dir[0] = 0; @@ -1203,15 +1205,15 @@ int BC_Resources::init_fontconfig(const char *search_path) FcConfig *config; int i; char tmpstring[BCTEXTLEN]; - if(!FcInit()) + if(!fcInit()) return 1; - config = FcConfigGetCurrent(); - FcConfigSetRescanInterval(config, 0); + config = fcConfigGetCurrent(); + fcConfigSetRescanInterval(config, 0); - pat = FcPatternCreate(); - os = FcObjectSetBuild ( FC_FAMILY, FC_FILE, FC_FOUNDRY, FC_WEIGHT, + pat = fcPatternCreate(); + os = fcObjectSetBuild( FC_FAMILY, FC_FILE, FC_FOUNDRY, FC_WEIGHT, FC_WIDTH, FC_SLANT, FC_FONTFORMAT, FC_SPACING, FC_STYLE, (char *) 0); - FcPatternAddBool(pat, FC_SCALABLE, true); + fcPatternAddBool(pat, FC_SCALABLE, true); if(language[0]) { char langstr[LEN_LANG * 3]; @@ -1222,35 +1224,35 @@ int BC_Resources::init_fontconfig(const char *search_path) strcat(langstr, region); } - FcLangSet *ls = FcLangSetCreate(); - if(FcLangSetAdd(ls, (const FcChar8*)langstr)) - if(FcPatternAddLangSet(pat, FC_LANG, ls)) - FcLangSetDestroy(ls); + FcLangSet *ls = fcLangSetCreate(); + if(fcLangSetAdd(ls, (const FcChar8*)langstr)) + if(fcPatternAddLangSet(pat, FC_LANG, ls)) + fcLangSetDestroy(ls); } - fs = FcFontList(config, pat, os); - FcPatternDestroy(pat); - FcObjectSetDestroy(os); + fs = fcFontList(config, pat, os); + fcPatternDestroy(pat); + fcObjectSetDestroy(os); for (i = 0; fs && i < fs->nfont; i++) { FcPattern *font = fs->fonts[i]; force_style = 0; - FcPatternGetString(font, FC_FONTFORMAT, 0, &format); + fcPatternGetString(font, FC_FONTFORMAT, 0, &format); //on this point you can limit font search if(limit_to_trutype && strcmp((char *)format, "TrueType")) continue; sprintf(tmpstring, "%s", format); BC_FontEntry *entry = new BC_FontEntry; - if(FcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch) { + if(fcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch) { entry->path = cstrdup((char*)file); } - if(FcPatternGetString(font, FC_FOUNDRY, 0, &foundry) == FcResultMatch) { + if(fcPatternGetString(font, FC_FOUNDRY, 0, &foundry) == FcResultMatch) { entry->foundry = cstrdup((char*)foundry); } - if(FcPatternGetInteger(font, FC_WEIGHT, 0, &weight) == FcResultMatch) { + if(fcPatternGetInteger(font, FC_WEIGHT, 0, &weight) == FcResultMatch) { switch(weight) { case FC_WEIGHT_THIN: case FC_WEIGHT_EXTRALIGHT: @@ -1282,10 +1284,10 @@ int BC_Resources::init_fontconfig(const char *search_path) } } - if(FcPatternGetString(font, FC_FAMILY, 0, &family) == FcResultMatch) + if(fcPatternGetString(font, FC_FAMILY, 0, &family) == FcResultMatch) entry->family = cstrdup((char*)family); - if(FcPatternGetInteger(font, FC_SLANT, 0, &slant) == FcResultMatch) { + if(fcPatternGetInteger(font, FC_SLANT, 0, &slant) == FcResultMatch) { switch(slant) { case FC_SLANT_ROMAN: default: @@ -1305,7 +1307,7 @@ int BC_Resources::init_fontconfig(const char *search_path) } } - if(FcPatternGetInteger(font, FC_WIDTH, 0, &width) == FcResultMatch) { + if(fcPatternGetInteger(font, FC_WIDTH, 0, &width) == FcResultMatch) { switch(width) { case FC_WIDTH_ULTRACONDENSED: entry->swidth = cstrdup("ultracondensed"); @@ -1345,7 +1347,7 @@ int BC_Resources::init_fontconfig(const char *search_path) } } - if(FcPatternGetInteger(font, FC_SPACING, 0, &spacing) == FcResultMatch) { + if(fcPatternGetInteger(font, FC_SPACING, 0, &spacing) == FcResultMatch) { switch(spacing) { case 0: default: @@ -1376,7 +1378,7 @@ int BC_Resources::init_fontconfig(const char *search_path) entry->registry = cstrdup("utf"); entry->encoding = cstrdup("8"); - if( FcPatternGetString(font, FC_STYLE, 0, &style) != FcResultMatch ) + if( fcPatternGetString(font, FC_STYLE, 0, &style) != FcResultMatch ) force_style = 0; // If font has a style unmanaged by titler plugin, force style to be displayed on name @@ -1401,19 +1403,19 @@ int BC_Resources::init_fontconfig(const char *search_path) dump_font_entry(stdout, "font 1: ", entry); } - FcFontSetDestroy(fs); + fcFontSetDestroy(fs); if(freetype_library) - FT_Done_FreeType(freetype_library); + ft_Done_FreeType(freetype_library); // for(int i = 0; i < fonts->total; i++) // fonts->values[i]->dump(); - FcConfigAppFontAddDir(0, (const FcChar8*)search_path); - FcConfigSetRescanInterval(0, 0); + fcConfigAppFontAddDir(0, (const FcChar8*)search_path); + fcConfigSetRescanInterval(0, 0); - os = FcObjectSetBuild(FC_FAMILY, FC_FILE, FC_FOUNDRY, FC_WEIGHT, + os = fcObjectSetBuild(FC_FAMILY, FC_FILE, FC_FOUNDRY, FC_WEIGHT, FC_WIDTH, FC_SLANT, FC_SPACING, FC_STYLE, (char *)0); - pat = FcPatternCreate(); - FcPatternAddBool(pat, FC_SCALABLE, true); + pat = fcPatternCreate(); + fcPatternAddBool(pat, FC_SCALABLE, true); if(language[0]) { @@ -1426,15 +1428,15 @@ int BC_Resources::init_fontconfig(const char *search_path) strcat(langstr, region); } - FcLangSet *ls = FcLangSetCreate(); - if(FcLangSetAdd(ls, (const FcChar8*)langstr)) - if(FcPatternAddLangSet(pat, FC_LANG, ls)) - FcLangSetDestroy(ls); + FcLangSet *ls = fcLangSetCreate(); + if(fcLangSetAdd(ls, (const FcChar8*)langstr)) + if(fcPatternAddLangSet(pat, FC_LANG, ls)) + fcLangSetDestroy(ls); } - fs = FcFontList(0, pat, os); - FcPatternDestroy(pat); - FcObjectSetDestroy(os); + fs = fcFontList(0, pat, os); + fcPatternDestroy(pat); + fcObjectSetDestroy(os); for(int i = 0; i < fs->nfont; i++) { @@ -1442,26 +1444,26 @@ int BC_Resources::init_fontconfig(const char *search_path) BC_FontEntry *entry = new BC_FontEntry; FcChar8 *strvalue; - if(FcPatternGetString(font, FC_FILE, 0, &strvalue) == FcResultMatch) + if(fcPatternGetString(font, FC_FILE, 0, &strvalue) == FcResultMatch) { entry->path = new char[strlen((char*)strvalue) + 1]; strcpy(entry->path, (char*)strvalue); } - if(FcPatternGetString(font, FC_FOUNDRY, 0, &strvalue) == FcResultMatch) + if(fcPatternGetString(font, FC_FOUNDRY, 0, &strvalue) == FcResultMatch) { entry->foundry = new char[strlen((char*)strvalue) + 1]; strcpy(entry->foundry, (char *)strvalue); } - if(FcPatternGetString(font, FC_FAMILY, 0, &strvalue) == FcResultMatch) + if(fcPatternGetString(font, FC_FAMILY, 0, &strvalue) == FcResultMatch) { entry->family = new char[strlen((char*)strvalue) + 2]; strcpy(entry->family, (char*)strvalue); } int intvalue; - if(FcPatternGetInteger(font, FC_SLANT, 0, &intvalue) == FcResultMatch) + if(fcPatternGetInteger(font, FC_SLANT, 0, &intvalue) == FcResultMatch) { switch(intvalue) { @@ -1480,7 +1482,7 @@ int BC_Resources::init_fontconfig(const char *search_path) } } - if(FcPatternGetInteger(font, FC_WEIGHT, 0, &intvalue) == FcResultMatch) + if(fcPatternGetInteger(font, FC_WEIGHT, 0, &intvalue) == FcResultMatch) { switch(intvalue) { @@ -1531,7 +1533,7 @@ int BC_Resources::init_fontconfig(const char *search_path) } } - if(FcPatternGetInteger(font, FC_WIDTH, 0, &intvalue) == FcResultMatch) + if(fcPatternGetInteger(font, FC_WIDTH, 0, &intvalue) == FcResultMatch) { switch(intvalue) { @@ -1573,7 +1575,7 @@ int BC_Resources::init_fontconfig(const char *search_path) break; } } - if(FcPatternGetInteger(font, FC_SPACING, 0, &intvalue) == FcResultMatch) + if(fcPatternGetInteger(font, FC_SPACING, 0, &intvalue) == FcResultMatch) { switch(intvalue) { @@ -1611,7 +1613,7 @@ int BC_Resources::init_fontconfig(const char *search_path) if( font_debug ) dump_font_entry(stdout, "font 2: ", entry); } - FcFontSetDestroy(fs); + fcFontSetDestroy(fs); return 0; } @@ -1837,15 +1839,15 @@ int BC_Resources::find_font_by_char(FT_ULong char_code, char *path_new, const FT if(char_code < ' ') return 0; - if( (ofont = FcFreeTypeQueryFace(oldface, (const FcChar8*)"", 4097, 0)) != 0 ) { + if( (ofont = fcFreeTypeQueryFace(oldface, (const FcChar8*)"", 4097, 0)) != 0 ) { if( (font = find_similar_font(char_code, ofont)) != 0 ) { - if(FcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch) { + if(fcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch) { strcpy(path_new, (char*)file); result = 1; } - FcPatternDestroy(font); + fcPatternDestroy(font); } - FcPatternDestroy(ofont); + fcPatternDestroy(ofont); } return result; } @@ -1863,43 +1865,43 @@ FcPattern* BC_Resources::find_similar_font(FT_ULong char_code, FcPattern *oldfon return 0; fontconfig_lock.lock("BC_Resources::find_similar_font"); - pat = FcPatternCreate(); - os = FcObjectSetBuild(FC_FILE, FC_CHARSET, FC_SCALABLE, FC_FAMILY, + pat = fcPatternCreate(); + os = fcObjectSetBuild(FC_FILE, FC_CHARSET, FC_SCALABLE, FC_FAMILY, FC_SLANT, FC_WEIGHT, FC_WIDTH, (char *)0); - FcPatternAddBool(pat, FC_SCALABLE, true); - fcs = FcCharSetCreate(); - if(FcCharSetAddChar(fcs, char_code)) - FcPatternAddCharSet(pat, FC_CHARSET, fcs); - FcCharSetDestroy(fcs); + fcPatternAddBool(pat, FC_SCALABLE, true); + fcs = fcCharSetCreate(); + if(fcCharSetAddChar(fcs, char_code)) + fcPatternAddCharSet(pat, FC_CHARSET, fcs); + fcCharSetDestroy(fcs); for( int i=0; i<(int)LEN_FCPROP; ++i ) { - if(FcPatternGetInteger(oldfont, fc_properties[i], 0, &ival) == FcResultMatch) - FcPatternAddInteger(pat, fc_properties[i], ival); + if(fcPatternGetInteger(oldfont, fc_properties[i], 0, &ival) == FcResultMatch) + fcPatternAddInteger(pat, fc_properties[i], ival); } - fs = FcFontList(0, pat, os); + fs = fcFontList(0, pat, os); for( int i=LEN_FCPROP; --i>=0 && !fs->nfont; ) { - FcFontSetDestroy(fs); - FcPatternDel(pat, fc_properties[i]); - fs = FcFontList(0, pat, os); + fcFontSetDestroy(fs); + fcPatternDel(pat, fc_properties[i]); + fs = fcFontList(0, pat, os); } - FcPatternDestroy(pat); - FcObjectSetDestroy(os); + fcPatternDestroy(pat); + fcObjectSetDestroy(os); pat = 0; for (int i = 0; i < fs->nfont; i++) { font = fs->fonts[i]; - if(FcPatternGetCharSet(font, FC_CHARSET, 0, &fcs) == FcResultMatch) + if(fcPatternGetCharSet(font, FC_CHARSET, 0, &fcs) == FcResultMatch) { - if(FcCharSetHasChar(fcs, char_code)) + if(fcCharSetHasChar(fcs, char_code)) { - pat = FcPatternDuplicate(font); + pat = fcPatternDuplicate(font); break; } } } - FcFontSetDestroy(fs); + fcFontSetDestroy(fs); fontconfig_lock.unlock(); return pat;