1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2009-2015 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker /* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */ 9*c8dee2aaSAndroid Build Coastguard Worker #ifndef SKFONTCONFIGINTERFACE_DIRECT_H_ 10*c8dee2aaSAndroid Build Coastguard Worker #define SKFONTCONFIGINTERFACE_DIRECT_H_ 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/ports/SkFontConfigInterface.h" 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker #include <fontconfig/fontconfig.h> 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker class SkFontConfigInterfaceDirect : public SkFontConfigInterface { 17*c8dee2aaSAndroid Build Coastguard Worker public: 18*c8dee2aaSAndroid Build Coastguard Worker /** Create around a FontConfig instance. 19*c8dee2aaSAndroid Build Coastguard Worker * If 'fc' is nullptr, each method call will use the current config. 20*c8dee2aaSAndroid Build Coastguard Worker * Takes ownership of 'fc' and will call FcConfigDestroy on it. 21*c8dee2aaSAndroid Build Coastguard Worker */ 22*c8dee2aaSAndroid Build Coastguard Worker SkFontConfigInterfaceDirect(FcConfig* fc); 23*c8dee2aaSAndroid Build Coastguard Worker ~SkFontConfigInterfaceDirect() override; 24*c8dee2aaSAndroid Build Coastguard Worker 25*c8dee2aaSAndroid Build Coastguard Worker bool matchFamilyName(const char familyName[], 26*c8dee2aaSAndroid Build Coastguard Worker SkFontStyle requested, 27*c8dee2aaSAndroid Build Coastguard Worker FontIdentity* outFontIdentifier, 28*c8dee2aaSAndroid Build Coastguard Worker SkString* outFamilyName, 29*c8dee2aaSAndroid Build Coastguard Worker SkFontStyle* outStyle) override; 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker SkStreamAsset* openStream(const FontIdentity&) override; 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Worker protected: 34*c8dee2aaSAndroid Build Coastguard Worker virtual bool isAccessible(const char* filename); 35*c8dee2aaSAndroid Build Coastguard Worker 36*c8dee2aaSAndroid Build Coastguard Worker private: 37*c8dee2aaSAndroid Build Coastguard Worker FcConfig * const fFC; 38*c8dee2aaSAndroid Build Coastguard Worker bool isValidPattern(FcPattern* pattern); 39*c8dee2aaSAndroid Build Coastguard Worker FcPattern* MatchFont(FcFontSet* font_set, const char* post_config_family, 40*c8dee2aaSAndroid Build Coastguard Worker const SkString& family); 41*c8dee2aaSAndroid Build Coastguard Worker using INHERITED = SkFontConfigInterface; 42*c8dee2aaSAndroid Build Coastguard Worker }; 43*c8dee2aaSAndroid Build Coastguard Worker 44*c8dee2aaSAndroid Build Coastguard Worker #endif 45