SkTypeface.cpp revision 03ca3d19c46817eaaadb7dfce1c60c002d809db9
1#include "SkTypeface.h"
2#include "SkFontHost.h"
3
4static const SkTypeface* resolve_null_typeface(const SkTypeface* face)
5{
6    if (NULL == face) {
7        face = SkFontHost::FindTypeface(NULL, NULL, SkTypeface::kNormal);
8        SkASSERT(face);
9    }
10    return face;
11}
12
13uint32_t SkTypeface::UniqueID(const SkTypeface* face)
14{
15    return resolve_null_typeface(face)->uniqueID();
16}
17
18bool SkTypeface::Equal(const SkTypeface* facea, const SkTypeface* faceb)
19{
20    return resolve_null_typeface(facea)->uniqueID() ==
21           resolve_null_typeface(faceb)->uniqueID();
22}
23
24///////////////////////////////////////////////////////////////////////////////
25
26SkTypeface* SkTypeface::Create(const char name[], Style style)
27{
28    SkTypeface* face = SkFontHost::FindTypeface(NULL, name, style);
29    face->ref();
30    return face;
31}
32
33SkTypeface* SkTypeface::CreateFromTypeface(const SkTypeface* family, Style s)
34{
35    family = resolve_null_typeface(family);
36    SkTypeface* face = SkFontHost::FindTypeface(family, NULL, s);
37    face->ref();
38    return face;
39}
40
41SkTypeface* SkTypeface::CreateFromStream(SkStream* stream)
42{
43    return SkFontHost::CreateTypeface(stream);
44}
45
46SkTypeface* SkTypeface::CreateFromFile(const char path[])
47{
48    return SkFontHost::CreateTypefaceFromFile(path);
49}
50
51///////////////////////////////////////////////////////////////////////////////
52
53void SkTypeface::serialize(SkWStream* stream) const {
54    SkFontHost::Serialize(this, stream);
55}
56
57SkTypeface* SkTypeface::Deserialize(SkStream* stream) {
58    SkTypeface* face = SkFontHost::Deserialize(stream);
59    face->ref();
60    return face;
61}
62
63
64