| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | |
| 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | |
| 4 * (C) 2000 Dirk Mueller (mueller@kde.org) | |
| 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserv
ed. | |
| 6 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> | |
| 7 * | |
| 8 * This library is free software; you can redistribute it and/or | |
| 9 * modify it under the terms of the GNU Library General Public | |
| 10 * License as published by the Free Software Foundation; either | |
| 11 * version 2 of the License, or (at your option) any later version. | |
| 12 * | |
| 13 * This library is distributed in the hope that it will be useful, | |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 16 * Library General Public License for more details. | |
| 17 * | |
| 18 * You should have received a copy of the GNU Library General Public License | |
| 19 * along with this library; see the file COPYING.LIother.m_ If not, write to | |
| 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
| 21 * Boston, MA 02110-1301, USm_ | |
| 22 * | |
| 23 */ | |
| 24 | |
| 25 #ifndef FontDescription_h | |
| 26 #define FontDescription_h | |
| 27 | |
| 28 #include "FontFamily.h" | |
| 29 #include "FontRenderingMode.h" | |
| 30 #include "FontTraitsMask.h" | |
| 31 #include <unicode/uscript.h> | |
| 32 | |
| 33 namespace WebCore { | |
| 34 | |
| 35 enum FontWeight { | |
| 36 FontWeight100, | |
| 37 FontWeight200, | |
| 38 FontWeight300, | |
| 39 FontWeight400, | |
| 40 FontWeight500, | |
| 41 FontWeight600, | |
| 42 FontWeight700, | |
| 43 FontWeight800, | |
| 44 FontWeight900, | |
| 45 FontWeightNormal = FontWeight400, | |
| 46 FontWeightBold = FontWeight700 | |
| 47 }; | |
| 48 | |
| 49 class FontDescription { | |
| 50 public: | |
| 51 enum GenericFamilyType { NoFamily, StandardFamily, SerifFamily, SansSerifFam
ily, | |
| 52 MonospaceFamily, CursiveFamily, FantasyFamily }; | |
| 53 | |
| 54 FontDescription() | |
| 55 : m_specifiedSize(0) | |
| 56 , m_computedSize(0) | |
| 57 , m_italic(false) | |
| 58 , m_smallCaps(false) | |
| 59 , m_isAbsoluteSize(false) | |
| 60 , m_weight(FontWeightNormal) | |
| 61 , m_genericFamily(NoFamily) | |
| 62 , m_usePrinterFont(false) | |
| 63 , m_renderingMode(NormalRenderingMode) | |
| 64 , m_keywordSize(0) | |
| 65 , m_dominantScript(USCRIPT_INVALID_CODE) | |
| 66 { | |
| 67 } | |
| 68 | |
| 69 bool operator==(const FontDescription&) const; | |
| 70 bool operator!=(const FontDescription& other) const { return !(*this == othe
r); } | |
| 71 | |
| 72 const FontFamily& family() const { return m_familyList; } | |
| 73 FontFamily& firstFamily() { return m_familyList; } | |
| 74 float specifiedSize() const { return m_specifiedSize; } | |
| 75 float computedSize() const { return m_computedSize; } | |
| 76 bool italic() const { return m_italic; } | |
| 77 int computedPixelSize() const { return int(m_computedSize + 0.5f); } | |
| 78 bool smallCaps() const { return m_smallCaps; } | |
| 79 bool isAbsoluteSize() const { return m_isAbsoluteSize; } | |
| 80 FontWeight weight() const { return static_cast<FontWeight>(m_weight); } | |
| 81 FontWeight lighterWeight() const; | |
| 82 FontWeight bolderWeight() const; | |
| 83 GenericFamilyType genericFamily() const { return static_cast<GenericFamilyTy
pe>(m_genericFamily); } | |
| 84 bool usePrinterFont() const { return m_usePrinterFont; } | |
| 85 FontRenderingMode renderingMode() const { return static_cast<FontRenderingMo
de>(m_renderingMode); } | |
| 86 int keywordSize() const { return m_keywordSize; } | |
| 87 UScriptCode dominantScript() const { return m_dominantScript; } | |
| 88 | |
| 89 FontTraitsMask traitsMask() const; | |
| 90 | |
| 91 void setFamily(const FontFamily& family) { m_familyList = family; } | |
| 92 void setComputedSize(float s) { m_computedSize = s; } | |
| 93 void setSpecifiedSize(float s) { m_specifiedSize = s; } | |
| 94 void setItalic(bool i) { m_italic = i; } | |
| 95 void setSmallCaps(bool c) { m_smallCaps = c; } | |
| 96 void setIsAbsoluteSize(bool s) { m_isAbsoluteSize = s; } | |
| 97 void setWeight(FontWeight w) { m_weight = w; } | |
| 98 void setGenericFamily(GenericFamilyType genericFamily) { m_genericFamily = g
enericFamily; } | |
| 99 void setUsePrinterFont(bool p) { m_usePrinterFont = p; } | |
| 100 void setRenderingMode(FontRenderingMode mode) { m_renderingMode = mode; } | |
| 101 void setKeywordSize(int s) { m_keywordSize = s; } | |
| 102 void setDominantScript(UScriptCode s) { m_dominantScript = s; } | |
| 103 | |
| 104 private: | |
| 105 FontFamily m_familyList; // The list of font families to be used. | |
| 106 | |
| 107 float m_specifiedSize; // Specified CSS value. Independent of rendering is
sues such as integer | |
| 108 // rounding, minimum font sizes, and zooming. | |
| 109 float m_computedSize; // Computed size adjusted for the minimum font size
and the zoom factor. | |
| 110 | |
| 111 bool m_italic : 1; | |
| 112 bool m_smallCaps : 1; | |
| 113 bool m_isAbsoluteSize : 1; // Whether or not CSS specified an explicit siz
e | |
| 114 // (logical sizes like "medium" don't count). | |
| 115 unsigned m_weight : 8; // FontWeight | |
| 116 unsigned m_genericFamily : 3; // GenericFamilyType | |
| 117 bool m_usePrinterFont : 1; | |
| 118 | |
| 119 unsigned m_renderingMode : 1; // Used to switch between CG and GDI text on
Windows. | |
| 120 | |
| 121 int m_keywordSize : 4; // We cache whether or not a font is currently repres
ented by a CSS keyword (e.g., medium). If so, | |
| 122 // then we can accurately translate across different
generic families to adjust for different preference settings | |
| 123 // (e.g., 13px monospace vs. 16px everything else).
Sizes are 1-8 (like the HTML size values for <font>). | |
| 124 UScriptCode m_dominantScript; // See the comment in Document.h | |
| 125 | |
| 126 }; | |
| 127 | |
| 128 inline bool FontDescription::operator==(const FontDescription& other) const | |
| 129 { | |
| 130 return m_familyList == other.m_familyList | |
| 131 && m_specifiedSize == other.m_specifiedSize | |
| 132 && m_computedSize == other.m_computedSize | |
| 133 && m_italic == other.m_italic | |
| 134 && m_smallCaps == other.m_smallCaps | |
| 135 && m_isAbsoluteSize == other.m_isAbsoluteSize | |
| 136 && m_weight == other.m_weight | |
| 137 && m_genericFamily == other.m_genericFamily | |
| 138 && m_usePrinterFont == other.m_usePrinterFont | |
| 139 && m_renderingMode == other.m_renderingMode | |
| 140 && m_keywordSize == other.m_keywordSize; | |
| 141 } | |
| 142 | |
| 143 } | |
| 144 | |
| 145 #endif | |
| OLD | NEW |