1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/* Copyright (c) 2010, Google Inc. All rights reserved.
28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Redistribution and use in source and binary forms, with or without
4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modification, are permitted provided that the following conditions are
5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * met:
68f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *     * Redistributions of source code must retain the above copyright
8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * notice, this list of conditions and the following disclaimer.
9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *     * Redistributions in binary form must reproduce the above
10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * copyright notice, this list of conditions and the following disclaimer
11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in the documentation and/or other materials provided with the
12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * distribution.
13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *     * Neither the name of Google Inc. nor the names of its
14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * contributors may be used to endorse or promote products derived from
15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * this software without specific prior written permission.
16d0825bca7fe65beaee391d30da42e937db621564Steve Block *
17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */
29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#ifndef FontRenderStyle_h
31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#define FontRenderStyle_h
32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WebCore {
34635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block// FontRenderStyle describes the user's preferences for rendering a font at a
36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block// given size.
37dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockstruct FontRenderStyle {
38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    enum {
39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        NoPreference = 2,
40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    };
41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
42ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    FontRenderStyle()
43ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        : useBitmaps(0),
44ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block          useAutoHint(0),
45ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block          useHinting(0),
46ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block          hintStyle(0),
47ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block          useAntiAlias(0),
48ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block          useSubpixel(0) { }
49ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
50ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    bool operator==(const FontRenderStyle& a) const
51ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    {
52ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        return useBitmaps == a.useBitmaps
53ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block            && useAutoHint == a.useAutoHint
54ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block            && useHinting == a.useHinting
55ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block            && hintStyle == a.hintStyle
56ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block            && useAntiAlias == a.useAntiAlias
57ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block            && useSubpixel == a.useSubpixel;
58ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    }
59ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // Each of the use* members below can take one of three values:
61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    //   0: off
62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    //   1: on
63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    //   NoPreference: no preference expressed
64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    char useBitmaps; // use embedded bitmap strike if possible
65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    char useAutoHint; // use 'auto' hinting (FreeType specific)
66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    char useHinting; // hint glyphs to the pixel grid
67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    char hintStyle; // level of hinting, 0..3
68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    char useAntiAlias; // antialias glyph shapes
69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    char useSubpixel; // use subpixel antialias
70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block};
71d0825bca7fe65beaee391d30da42e937db621564Steve Block
72635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
73635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif // FontRenderStyle_h
75