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 SkFontLCDConfig_DEFINED 9096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger#define SkFontLCDConfig_DEFINED 10096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 11096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger#include "SkTypes.h" 12096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 13096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenbergerclass SkFontLCDConfig { 14096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenbergerpublic: 15096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger /** LCDs either have their color elements arranged horizontally or 16096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger vertically. When rendering subpixel glyphs we need to know which way 17096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger round they are. 18096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 19096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger Note, if you change this after startup, you'll need to flush the glyph 20096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger cache because it'll have the wrong type of masks cached. 21096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 22096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger @deprecated use SkPixelGeometry instead. 23096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger */ 24096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger enum LCDOrientation { 25096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger kHorizontal_LCDOrientation = 0, //!< this is the default 26096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger kVertical_LCDOrientation = 1 27096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger }; 28096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 29096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger /** @deprecated set on Device creation. */ 30096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger static void SetSubpixelOrientation(LCDOrientation orientation); 31096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger /** @deprecated get from Device. */ 32096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger static LCDOrientation GetSubpixelOrientation(); 33096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 34096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger /** LCD color elements can vary in order. For subpixel text we need to know 35096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger the order which the LCDs uses so that the color fringes are in the 36096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger correct place. 37096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 38096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger Note, if you change this after startup, you'll need to flush the glyph 39096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger cache because it'll have the wrong type of masks cached. 40096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 41096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger kNONE_LCDOrder means that the subpixel elements are not spatially 42096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger separated in any usable fashion. 43096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 44096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger @deprecated use SkPixelGeometry instead. 45096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger */ 46096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger enum LCDOrder { 47096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger kRGB_LCDOrder = 0, //!< this is the default 48096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger kBGR_LCDOrder = 1, 49096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger kNONE_LCDOrder = 2 50096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger }; 51096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 52096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger /** @deprecated set on Device creation. */ 53096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger static void SetSubpixelOrder(LCDOrder order); 54096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger /** @deprecated get from Device. */ 55096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger static LCDOrder GetSubpixelOrder(); 56096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger}; 57096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 58096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger#endif 59