1096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger/* 2096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * Copyright 2013 Google Inc. 3096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * 4096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 5096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * found in the LICENSE file. 6096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger */ 7096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 8096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger#ifndef SkTypefacePriv_DEFINED 9096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger#define SkTypefacePriv_DEFINED 10096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 11096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger#include "SkTypeface.h" 12096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 13096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger/** 14096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * Return a ref'd typeface, which must later be unref'd 15096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * 16096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * If the parameter is non-null, it will be ref'd and returned, otherwise 17096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * it will be the default typeface. 18096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger */ 19096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenbergerstatic inline SkTypeface* ref_or_default(SkTypeface* face) { 20096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger return face ? SkRef(face) : SkTypeface::RefDefault(); 21096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger} 22096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 23096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger/** 24096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * Always resolves to a non-null typeface, either the value passed to its 25096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger * constructor, or the default typeface if null was passed. 26096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger */ 27096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenbergerclass SkAutoResolveDefaultTypeface : public SkAutoTUnref<SkTypeface> { 28096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenbergerpublic: 29096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkAutoResolveDefaultTypeface() : INHERITED(SkTypeface::RefDefault()) {} 30096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 31096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkAutoResolveDefaultTypeface(SkTypeface* face) 32096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger : INHERITED(ref_or_default(face)) {} 33096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 34096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenbergerprivate: 35096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger typedef SkAutoTUnref<SkTypeface> INHERITED; 36096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger}; 37096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 38096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger#endif 39