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