1fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com/*
2fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com * Copyright 2013 Google Inc.
3fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com *
4fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com * Use of this source code is governed by a BSD-style license that can be
5fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com * found in the LICENSE file.
6fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com */
7fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com
8fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com#ifndef SkTypefacePriv_DEFINED
9fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com#define SkTypefacePriv_DEFINED
10fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com
11fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com#include "SkTypeface.h"
12fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com
13fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com/**
14fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com *  Return a ref'd typeface, which must later be unref'd
15fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com *
16fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com *  If the parameter is non-null, it will be ref'd and returned, otherwise
17fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com *  it will be the default typeface.
18fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com */
19fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.comstatic inline SkTypeface* ref_or_default(SkTypeface* face) {
20fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com    return face ? SkRef(face) : SkTypeface::RefDefault();
21fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com}
22fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com
23fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com/**
24fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com *  Always resolves to a non-null typeface, either the value passed to its
25fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com *  constructor, or the default typeface if null was passed.
26fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com */
27fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.comclass SkAutoResolveDefaultTypeface : public SkAutoTUnref<SkTypeface> {
28fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.compublic:
29fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com    SkAutoResolveDefaultTypeface() : INHERITED(SkTypeface::RefDefault()) {}
30c49cabfe5cddc1691a00f713ae1b077d9409389fskia.committer@gmail.com
31fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com    SkAutoResolveDefaultTypeface(SkTypeface* face)
32fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com        : INHERITED(ref_or_default(face)) {}
33fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com
34fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.comprivate:
35fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com    typedef SkAutoTUnref<SkTypeface> INHERITED;
36fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com};
37fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com
38fed86bdb8b9f037439bbfa7cdbd53a581dbc5985reed@google.com#endif
39