| OLD | NEW |
| (Empty) |
| 1 | |
| 2 /* | |
| 3 * Copyright 2006 The Android Open Source Project | |
| 4 * | |
| 5 * Use of this source code is governed by a BSD-style license that can be | |
| 6 * found in the LICENSE file. | |
| 7 */ | |
| 8 | |
| 9 | |
| 10 #ifndef SkFontHost_DEFINED | |
| 11 #define SkFontHost_DEFINED | |
| 12 | |
| 13 #include "SkTypeface.h" | |
| 14 | |
| 15 class SkDescriptor; | |
| 16 class SkScalerContext; | |
| 17 struct SkScalerContextRec; | |
| 18 class SkStream; | |
| 19 class SkWStream; | |
| 20 | |
| 21 /** \class SkFontHost | |
| 22 | |
| 23 This class is ported to each environment. It is responsible for bridging | |
| 24 the gap between the (sort of) abstract class SkTypeface and the | |
| 25 platform-specific implementation that provides access to font files. | |
| 26 | |
| 27 One basic task is for each create (subclass of) SkTypeface, the FontHost is | |
| 28 responsible for assigning a uniqueID. The ID should be unique for the | |
| 29 underlying font file/data, not unique per typeface instance. Thus it is | |
| 30 possible/common to request a typeface for the same font more than once | |
| 31 (e.g. asking for the same font by name several times). The FontHost may | |
| 32 return seperate typeface instances in that case, or it may choose to use a | |
| 33 cache and return the same instance (but calling typeface->ref(), since the | |
| 34 caller is always responsible for calling unref() on each instance that is | |
| 35 returned). Either way, the fontID for those instance(s) will be the same. | |
| 36 In addition, the fontID should never be set to 0. That value is used as a | |
| 37 sentinel to indicate no-font-id. | |
| 38 | |
| 39 The major aspects are: | |
| 40 1) Given either a name/style, return a subclass of SkTypeface that | |
| 41 references the closest matching font available on the host system. | |
| 42 2) Given the data for a font (either in a stream or a file name), return | |
| 43 a typeface that allows access to that data. | |
| 44 3) Each typeface instance carries a 32bit ID for its corresponding font. | |
| 45 SkFontHost turns that ID into a stream to access the font's data. | |
| 46 4) Given a font ID, return a subclass of SkScalerContext, which connects a | |
| 47 font scaler (e.g. freetype or other) to the font's data. | |
| 48 5) Utilites to manage the font cache (budgeting) and gamma correction | |
| 49 */ | |
| 50 class SK_API SkFontHost { | |
| 51 public: | |
| 52 /** LCDs either have their color elements arranged horizontally or | |
| 53 vertically. When rendering subpixel glyphs we need to know which way | |
| 54 round they are. | |
| 55 | |
| 56 Note, if you change this after startup, you'll need to flush the glyph | |
| 57 cache because it'll have the wrong type of masks cached. | |
| 58 | |
| 59 @deprecated use SkPixelGeometry instead. | |
| 60 */ | |
| 61 enum LCDOrientation { | |
| 62 kHorizontal_LCDOrientation = 0, //!< this is the default | |
| 63 kVertical_LCDOrientation = 1 | |
| 64 }; | |
| 65 | |
| 66 /** @deprecated set on Device creation. */ | |
| 67 static void SetSubpixelOrientation(LCDOrientation orientation); | |
| 68 /** @deprecated get from Device. */ | |
| 69 static LCDOrientation GetSubpixelOrientation(); | |
| 70 | |
| 71 /** LCD color elements can vary in order. For subpixel text we need to know | |
| 72 the order which the LCDs uses so that the color fringes are in the | |
| 73 correct place. | |
| 74 | |
| 75 Note, if you change this after startup, you'll need to flush the glyph | |
| 76 cache because it'll have the wrong type of masks cached. | |
| 77 | |
| 78 kNONE_LCDOrder means that the subpixel elements are not spatially | |
| 79 separated in any usable fashion. | |
| 80 | |
| 81 @deprecated use SkPixelGeometry instead. | |
| 82 */ | |
| 83 enum LCDOrder { | |
| 84 kRGB_LCDOrder = 0, //!< this is the default | |
| 85 kBGR_LCDOrder = 1, | |
| 86 kNONE_LCDOrder = 2 | |
| 87 }; | |
| 88 | |
| 89 /** @deprecated set on Device creation. */ | |
| 90 static void SetSubpixelOrder(LCDOrder order); | |
| 91 /** @deprecated get from Device. */ | |
| 92 static LCDOrder GetSubpixelOrder(); | |
| 93 }; | |
| 94 | |
| 95 #endif | |
| OLD | NEW |