11a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com/*
21a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com * Copyright 2013 Google Inc.
31a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com *
41a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com * Use of this source code is governed by a BSD-style license that can be
51a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com * found in the LICENSE file.
61a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com */
71a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
81a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com#ifndef SkFontLCDConfig_DEFINED
91a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com#define SkFontLCDConfig_DEFINED
101a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
111a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com#include "SkTypes.h"
121a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
1368f7460fd18357a81a3d4243f1a798f0d64b621ebungemanclass SK_API SkFontLCDConfig {
141a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.compublic:
151a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    /** LCDs either have their color elements arranged horizontally or
161a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        vertically. When rendering subpixel glyphs we need to know which way
171a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        round they are.
181a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
191a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        Note, if you change this after startup, you'll need to flush the glyph
201a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        cache because it'll have the wrong type of masks cached.
211a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
221a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        @deprecated use SkPixelGeometry instead.
231a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    */
241a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    enum LCDOrientation {
251a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        kHorizontal_LCDOrientation = 0,    //!< this is the default
261a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        kVertical_LCDOrientation   = 1
271a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    };
281a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
291a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    /** @deprecated set on Device creation. */
301a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    static void SetSubpixelOrientation(LCDOrientation orientation);
311a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    /** @deprecated get from Device. */
321a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    static LCDOrientation GetSubpixelOrientation();
331a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
341a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    /** LCD color elements can vary in order. For subpixel text we need to know
351a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        the order which the LCDs uses so that the color fringes are in the
361a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        correct place.
371a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
381a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        Note, if you change this after startup, you'll need to flush the glyph
391a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        cache because it'll have the wrong type of masks cached.
401a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
411a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        kNONE_LCDOrder means that the subpixel elements are not spatially
421a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        separated in any usable fashion.
431a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
441a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        @deprecated use SkPixelGeometry instead.
451a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com     */
461a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    enum LCDOrder {
471a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        kRGB_LCDOrder = 0,    //!< this is the default
481a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        kBGR_LCDOrder = 1,
491a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com        kNONE_LCDOrder = 2
501a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    };
511a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
521a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    /** @deprecated set on Device creation. */
531a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    static void SetSubpixelOrder(LCDOrder order);
541a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    /** @deprecated get from Device. */
551a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com    static LCDOrder GetSubpixelOrder();
561a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com};
571a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com
581a64a54b278c07b33a3b5e8883b1fdf3173c840ereed@google.com#endif
59