1 /* libs/graphics/ports/SkFontHost_fontconfig_direct.h
3 ** Copyright 2009, Google Inc.
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
9 ** http://www.apache.org/licenses/LICENSE-2.0
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
18 #ifndef FontConfigDirect_DEFINED
19 #define FontConfigDirect_DEFINED
25 #include "base/compiler_specific.h"
27 #include "SkFontHost_fontconfig_impl.h"
29 class SK_API FontConfigDirect
: public FontConfigInterface
{
32 virtual ~FontConfigDirect();
34 // FontConfigInterface implementation. Thread safe.
35 virtual bool Match(std::string
* result_family
, unsigned* result_filefaceid
,
36 bool filefaceid_valid
, unsigned filefaceid
,
37 const std::string
& family
,
38 const void* characters
, size_t characters_bytes
,
39 bool* is_bold
, bool* is_italic
) OVERRIDE
;
40 virtual int Open(unsigned filefaceid
) OVERRIDE
;
44 // fileid stored in two maps below are unique per font file.
45 std::map
<unsigned, std::string
> fileid_to_filename_
;
46 std::map
<std::string
, unsigned> filename_to_fileid_
;
48 // Cache of |family,style| to |FontMatch| to minimize querying FontConfig.
49 typedef std::pair
<std::string
, int> FontMatchKey
;
56 std::map
<FontMatchKey
, FontMatch
> font_match_cache_
;
58 unsigned next_file_id_
;
61 #endif // FontConfigDirect_DEFINED