Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef FontVariantNumeric_h | |
| 6 #define FontVariantNumeric_h | |
| 7 | |
| 8 #include "wtf/Allocator.h" | |
| 9 | |
| 10 namespace blink { | |
| 11 | |
| 12 class FontVariantNumeric { | |
| 13 STACK_ALLOCATED(); | |
| 14 | |
| 15 public: | |
| 16 | |
| 17 enum NumericFigure { | |
| 18 NormalFigure = 0, | |
| 19 LiningNums = 1, | |
| 20 OldstyleNums = 2 | |
| 21 }; | |
| 22 | |
| 23 enum NumericSpacing { | |
| 24 NormalSpacing = 0, | |
| 25 ProportionalNums = 1, | |
| 26 TabularNums = 2 | |
| 27 }; | |
| 28 | |
| 29 enum NumericFraction { | |
| 30 NormalFraction = 0, | |
| 31 DiagonalFractions = 1, | |
| 32 StackedFractions = 2 | |
| 33 }; | |
| 34 | |
| 35 enum Ordinal { | |
| 36 OrdinalOff = 0, | |
| 37 OrdinalOn = 1 | |
| 38 }; | |
| 39 | |
| 40 enum SlashedZero { | |
| 41 SlashedZeroOff = 0, | |
| 42 SlashedZeroOn = 1 | |
| 43 }; | |
| 44 | |
| 45 FontVariantNumeric() : m_fieldsAsUnsigned(0) { } | |
| 46 | |
| 47 static FontVariantNumeric initializeFromUnsigned(unsigned initValue) | |
| 48 { | |
| 49 return FontVariantNumeric(initValue); | |
| 50 } | |
| 51 | |
| 52 void setNumericFigure(NumericFigure figure) { m_fields.m_numericFigure = fig ure; }; | |
| 53 void setNumericSpacing(NumericSpacing spacing) { m_fields.m_numericSpacing = spacing; }; | |
| 54 void setNumericFraction(NumericFraction fraction) { m_fields.m_numericFracti on = fraction; }; | |
| 55 void setOrdinal(Ordinal ordinal) { m_fields.m_ordinal = ordinal; }; | |
| 56 void setSlashedZero(SlashedZero slashedZero) { m_fields.m_slashedZero = slas hedZero; }; | |
| 57 | |
| 58 NumericFigure numericFigure() const { return static_cast<NumericFigure>(m_fi elds.m_numericFigure); } | |
|
eae
2016/05/09 16:31:58
Methods and enums should use names that differ by
drott
2016/05/10 10:59:06
Suffixed with Value() for all accessors.
| |
| 59 NumericSpacing numericSpacing() const { return static_cast<NumericSpacing>(m _fields.m_numericSpacing); } | |
| 60 NumericFraction numericFraction() const { return static_cast<NumericFraction >(m_fields.m_numericFraction); } | |
| 61 Ordinal ordinal() const { return static_cast<Ordinal>(m_fields.m_ordinal); } ; | |
| 62 SlashedZero slashedZero() const { return static_cast<SlashedZero>(m_fields.m _slashedZero); } | |
| 63 | |
| 64 bool isAllNormal() { return !m_fieldsAsUnsigned; } | |
| 65 | |
| 66 bool operator==(const FontVariantNumeric& other) const | |
| 67 { | |
| 68 return m_fieldsAsUnsigned == other.m_fieldsAsUnsigned; | |
| 69 } | |
| 70 | |
| 71 private: | |
| 72 FontVariantNumeric(unsigned initValue) : m_fieldsAsUnsigned(initValue) { } | |
| 73 | |
| 74 struct BitFields { | |
| 75 unsigned m_numericFigure : 2; | |
| 76 unsigned m_numericSpacing : 2; | |
| 77 unsigned m_numericFraction : 2; | |
| 78 unsigned m_ordinal : 1; | |
| 79 unsigned m_slashedZero : 1; | |
| 80 }; | |
| 81 | |
| 82 | |
| 83 union { | |
| 84 BitFields m_fields; | |
| 85 unsigned m_fieldsAsUnsigned; | |
| 86 }; | |
| 87 static_assert(sizeof(m_fields) == sizeof(m_fieldsAsUnsigned), "Mapped union types must match in size."); | |
| 88 | |
| 89 // Used in setVariant to store the value in m_fields.m_variantNumeric; | |
| 90 friend class FontDescription; | |
| 91 }; | |
| 92 | |
| 93 } | |
| 94 | |
| 95 #endif // FontVariantNumeric_h | |
| OLD | NEW |