Consolidate one-line flag-related header files into TextFlags.h
[WebKit.git] / Source / WebCore / platform / text / TextFlags.h
1 /*
2  * Copyright (C) 2003, 2006 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef TextFlags_h
27 #define TextFlags_h
28
29 namespace WebCore {
30
31 enum TextDirection { RTL, LTR };
32
33 enum TextRenderingMode { AutoTextRendering, OptimizeSpeed, OptimizeLegibility, GeometricPrecision };
34
35 enum FontSmoothingMode { AutoSmoothing, NoSmoothing, Antialiased, SubpixelAntialiased };
36
37 // This setting is used to provide ways of switching between multiple rendering modes that may have different
38 // metrics. It is used to switch between CG and GDI text on Windows.
39 enum FontRenderingMode { NormalRenderingMode, AlternateRenderingMode };
40
41 enum FontOrientation { Horizontal, Vertical };
42
43 enum NonCJKGlyphOrientation { NonCJKGlyphOrientationVerticalRight, NonCJKGlyphOrientationUpright };
44
45 inline bool isLeftToRightDirection(TextDirection direction) { return direction == LTR; }
46
47 // Here, "Leading" and "Trailing" are relevant after the line has been rearranged for bidi.
48 // ("Leading" means "left" and "Trailing" means "right.")
49 enum ExpansionBehaviorFlags {
50     ForbidTrailingExpansion = 0 << 0,
51     AllowTrailingExpansion = 1 << 0,
52     ForceTrailingExpansion = 2 << 0,
53     TrailingExpansionMask = 3 << 0,
54
55     ForbidLeadingExpansion = 0 << 2,
56     AllowLeadingExpansion = 1 << 2,
57     ForceLeadingExpansion = 2 << 2,
58     LeadingExpansionMask = 3 << 2,
59 };
60 typedef unsigned ExpansionBehavior;
61
62 enum FontWidthVariant {
63     RegularWidth,
64     HalfWidth,
65     ThirdWidth,
66     QuarterWidth,
67     LastFontWidthVariant = QuarterWidth
68 };
69
70 const unsigned FontWidthVariantWidth = 2;
71
72 COMPILE_ASSERT(!(LastFontWidthVariant >> FontWidthVariantWidth), FontWidthVariantWidth_is_correct);
73
74 enum FontWeight {
75     FontWeight100,
76     FontWeight200,
77     FontWeight300,
78     FontWeight400,
79     FontWeight500,
80     FontWeight600,
81     FontWeight700,
82     FontWeight800,
83     FontWeight900,
84     FontWeightNormal = FontWeight400,
85     FontWeightBold = FontWeight700
86 };
87
88 enum FontItalic {
89     FontItalicOff = 0,
90     FontItalicOn = 1
91 };
92
93 enum FontSmallCaps {
94     FontSmallCapsOff = 0,
95     FontSmallCapsOn = 1
96 };
97
98 enum {
99     FontStyleNormalBit = 0,
100     FontStyleItalicBit,
101     FontVariantNormalBit,
102     FontVariantSmallCapsBit,
103     FontWeight100Bit,
104     FontWeight200Bit,
105     FontWeight300Bit,
106     FontWeight400Bit,
107     FontWeight500Bit,
108     FontWeight600Bit,
109     FontWeight700Bit,
110     FontWeight800Bit,
111     FontWeight900Bit,
112     FontTraitsMaskWidth
113 };
114
115 enum FontTraitsMask {
116     FontStyleNormalMask = 1 << FontStyleNormalBit,
117     FontStyleItalicMask = 1 << FontStyleItalicBit,
118     FontStyleMask = FontStyleNormalMask | FontStyleItalicMask,
119
120     FontVariantNormalMask = 1 << FontVariantNormalBit,
121     FontVariantSmallCapsMask = 1 << FontVariantSmallCapsBit,
122     FontVariantMask = FontVariantNormalMask | FontVariantSmallCapsMask,
123
124     FontWeight100Mask = 1 << FontWeight100Bit,
125     FontWeight200Mask = 1 << FontWeight200Bit,
126     FontWeight300Mask = 1 << FontWeight300Bit,
127     FontWeight400Mask = 1 << FontWeight400Bit,
128     FontWeight500Mask = 1 << FontWeight500Bit,
129     FontWeight600Mask = 1 << FontWeight600Bit,
130     FontWeight700Mask = 1 << FontWeight700Bit,
131     FontWeight800Mask = 1 << FontWeight800Bit,
132     FontWeight900Mask = 1 << FontWeight900Bit,
133     FontWeightMask = FontWeight100Mask | FontWeight200Mask | FontWeight300Mask | FontWeight400Mask | FontWeight500Mask | FontWeight600Mask | FontWeight700Mask | FontWeight800Mask | FontWeight900Mask
134 };
135
136 }
137
138 #endif