1 /* 2 * Copyright (C) 2007 Nicholas Shanks <contact (at) nickshanks.com> 3 * Copyright (C) 2008 Apple Inc. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 15 * its contributors may be used to endorse or promote products derived 16 * from this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30 #include "config.h" 31 #include "FontDescription.h" 32 33 namespace WebCore { 34 35 FontWeight FontDescription::lighterWeight(void) const 36 { 37 // FIXME: Should actually return the CSS weight corresponding to next lightest 38 // weight of the currently used font family. 39 switch (m_weight) { 40 case FontWeight100: 41 case FontWeight200: 42 return FontWeight100; 43 44 case FontWeight300: 45 return FontWeight200; 46 47 case FontWeight400: 48 case FontWeight500: 49 return FontWeight300; 50 51 case FontWeight600: 52 case FontWeight700: 53 return FontWeight400; 54 55 case FontWeight800: 56 return FontWeight500; 57 58 case FontWeight900: 59 return FontWeight700; 60 } 61 ASSERT_NOT_REACHED(); 62 return FontWeightNormal; 63 } 64 65 FontWeight FontDescription::bolderWeight(void) const 66 { 67 // FIXME: Should actually return the CSS weight corresponding to next heaviest 68 // weight of the currently used font family. 69 switch (m_weight) { 70 case FontWeight100: 71 case FontWeight200: 72 return FontWeight300; 73 74 case FontWeight300: 75 return FontWeight400; 76 77 case FontWeight400: 78 case FontWeight500: 79 return FontWeight700; 80 81 case FontWeight600: 82 case FontWeight700: 83 return FontWeight800; 84 85 case FontWeight800: 86 case FontWeight900: 87 return FontWeight900; 88 } 89 ASSERT_NOT_REACHED(); 90 return FontWeightNormal; 91 } 92 93 FontTraitsMask FontDescription::traitsMask() const 94 { 95 return static_cast<FontTraitsMask>((m_italic ? FontStyleItalicMask : FontStyleNormalMask) 96 | (m_smallCaps ? FontVariantSmallCapsMask : FontVariantNormalMask) 97 | (FontWeight100Mask << (m_weight - FontWeight100))); 98 99 } 100 101 } // namespace WebCore 102