aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMFontMgr.h
blob: c484644fb47cfbd703da2d3965dadaabd011fde8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef DMFontMgr_DEFINED
#define DMFontMgr_DEFINED

#include "SkFontMgr.h"

// An SkFontMgr that always uses sk_tool_utils::create_portable_typeface().

namespace DM {

    class FontStyleSet final : public SkFontStyleSet {
    public:
        explicit FontStyleSet(int familyIndex);

        int count() override;
        void getStyle(int index, SkFontStyle* style, SkString* name) override;
        SkTypeface* createTypeface(int index) override;
        SkTypeface* matchStyle(const SkFontStyle& pattern) override;

    private:
        sk_sp<SkTypeface> fTypefaces[4];
    };

    class FontMgr final : public SkFontMgr {
    public:
        FontMgr();

        int onCountFamilies() const override;
        void onGetFamilyName(int index, SkString* familyName) const override;

        SkFontStyleSet* onCreateStyleSet(int index) const override;
        SkFontStyleSet* onMatchFamily(const char familyName[]) const override;

        SkTypeface* onMatchFamilyStyle(const char familyName[],
                                       const SkFontStyle&) const override;
        SkTypeface* onMatchFamilyStyleCharacter(const char familyName[],
                                                const SkFontStyle&,
                                                const char* bcp47[], int bcp47Count,
                                                SkUnichar character) const override;
        SkTypeface* onMatchFaceStyle(const SkTypeface*,
                                     const SkFontStyle&) const override;

        sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData>, int ttcIndex) const override;
        sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset>,
                                                int ttcIndex) const override;
        sk_sp<SkTypeface> onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset>,
                                               const SkFontArguments&) const override;
        sk_sp<SkTypeface> onMakeFromFontData(std::unique_ptr<SkFontData>) const override;
        sk_sp<SkTypeface> onMakeFromFile(const char path[], int ttcIndex) const override;

        sk_sp<SkTypeface> onLegacyMakeTypeface(const char familyName[], SkFontStyle) const override;

    private:
        sk_sp<FontStyleSet> fFamilies[3];
    };

}  // namespace DM

#endif//DMFontMgr_DEFINED