| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 } | 45 } |
| 46 | 46 |
| 47 CSSToLengthConversionData::FontSizes::FontSizes(const ComputedStyle* style, | 47 CSSToLengthConversionData::FontSizes::FontSizes(const ComputedStyle* style, |
| 48 const ComputedStyle* rootStyle) | 48 const ComputedStyle* rootStyle) |
| 49 : FontSizes(style->computedFontSize(), | 49 : FontSizes(style->computedFontSize(), |
| 50 rootStyle ? rootStyle->computedFontSize() : 1.0f, | 50 rootStyle ? rootStyle->computedFontSize() : 1.0f, |
| 51 &style->font()) {} | 51 &style->font()) {} |
| 52 | 52 |
| 53 float CSSToLengthConversionData::FontSizes::ex() const { | 53 float CSSToLengthConversionData::FontSizes::ex() const { |
| 54 ASSERT(m_font); | 54 ASSERT(m_font); |
| 55 // FIXME: We have a bug right now where the zoom will be applied twice to EX u
nits. | 55 // FIXME: We have a bug right now where the zoom will be applied twice to EX |
| 56 // We really need to compute EX using fontMetrics for the original specifiedSi
ze and not use | 56 // units. We really need to compute EX using fontMetrics for the original |
| 57 // our actual constructed layoutObject font. | 57 // specifiedSize and not use our actual constructed layoutObject font. |
| 58 if (!m_font->getFontMetrics().hasXHeight()) | 58 if (!m_font->getFontMetrics().hasXHeight()) |
| 59 return m_em / 2.0f; | 59 return m_em / 2.0f; |
| 60 return m_font->getFontMetrics().xHeight(); | 60 return m_font->getFontMetrics().xHeight(); |
| 61 } | 61 } |
| 62 | 62 |
| 63 float CSSToLengthConversionData::FontSizes::ch() const { | 63 float CSSToLengthConversionData::FontSizes::ch() const { |
| 64 ASSERT(m_font); | 64 ASSERT(m_font); |
| 65 return m_font->getFontMetrics().zeroWidth(); | 65 return m_font->getFontMetrics().zeroWidth(); |
| 66 } | 66 } |
| 67 | 67 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 | 112 |
| 113 float CSSToLengthConversionData::remFontSize() const { | 113 float CSSToLengthConversionData::remFontSize() const { |
| 114 m_style->setHasRemUnits(); | 114 m_style->setHasRemUnits(); |
| 115 return m_fontSizes.rem(); | 115 return m_fontSizes.rem(); |
| 116 } | 116 } |
| 117 | 117 |
| 118 double CSSToLengthConversionData::zoomedComputedPixels( | 118 double CSSToLengthConversionData::zoomedComputedPixels( |
| 119 double value, | 119 double value, |
| 120 CSSPrimitiveValue::UnitType type) const { | 120 CSSPrimitiveValue::UnitType type) const { |
| 121 // The logic in this function is duplicated in MediaValues::computeLength() | 121 // The logic in this function is duplicated in MediaValues::computeLength() |
| 122 // because MediaValues::computeLength() needs nearly identical logic, but we h
aven't found a way to make | 122 // because MediaValues::computeLength() needs nearly identical logic, but we |
| 123 // zoomedComputedPixels() more generic (to solve both cases) without hurting p
erformance. | 123 // haven't found a way to make zoomedComputedPixels() more generic (to solve |
| 124 // both cases) without hurting performance. |
| 124 switch (type) { | 125 switch (type) { |
| 125 case CSSPrimitiveValue::UnitType::Pixels: | 126 case CSSPrimitiveValue::UnitType::Pixels: |
| 126 case CSSPrimitiveValue::UnitType::UserUnits: | 127 case CSSPrimitiveValue::UnitType::UserUnits: |
| 127 return value * zoom(); | 128 return value * zoom(); |
| 128 | 129 |
| 129 case CSSPrimitiveValue::UnitType::Centimeters: | 130 case CSSPrimitiveValue::UnitType::Centimeters: |
| 130 return value * cssPixelsPerCentimeter * zoom(); | 131 return value * cssPixelsPerCentimeter * zoom(); |
| 131 | 132 |
| 132 case CSSPrimitiveValue::UnitType::Millimeters: | 133 case CSSPrimitiveValue::UnitType::Millimeters: |
| 133 return value * cssPixelsPerMillimeter * zoom(); | 134 return value * cssPixelsPerMillimeter * zoom(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 146 | 147 |
| 147 case CSSPrimitiveValue::UnitType::ViewportHeight: | 148 case CSSPrimitiveValue::UnitType::ViewportHeight: |
| 148 return value * viewportHeightPercent() * zoom(); | 149 return value * viewportHeightPercent() * zoom(); |
| 149 | 150 |
| 150 case CSSPrimitiveValue::UnitType::ViewportMin: | 151 case CSSPrimitiveValue::UnitType::ViewportMin: |
| 151 return value * viewportMinPercent() * zoom(); | 152 return value * viewportMinPercent() * zoom(); |
| 152 | 153 |
| 153 case CSSPrimitiveValue::UnitType::ViewportMax: | 154 case CSSPrimitiveValue::UnitType::ViewportMax: |
| 154 return value * viewportMaxPercent() * zoom(); | 155 return value * viewportMaxPercent() * zoom(); |
| 155 | 156 |
| 156 // We do not apply the zoom factor when we are computing the value of the fo
nt-size property. The zooming | 157 // We do not apply the zoom factor when we are computing the value of the |
| 157 // for font sizes is much more complicated, since we have to worry about enf
orcing the minimum font size preference | 158 // font-size property. The zooming for font sizes is much more complicated, |
| 159 // since we have to worry about enforcing the minimum font size preference |
| 158 // as well as enforcing the implicit "smart minimum." | 160 // as well as enforcing the implicit "smart minimum." |
| 159 case CSSPrimitiveValue::UnitType::Ems: | 161 case CSSPrimitiveValue::UnitType::Ems: |
| 160 case CSSPrimitiveValue::UnitType::QuirkyEms: | 162 case CSSPrimitiveValue::UnitType::QuirkyEms: |
| 161 return value * emFontSize(); | 163 return value * emFontSize(); |
| 162 | 164 |
| 163 case CSSPrimitiveValue::UnitType::Exs: | 165 case CSSPrimitiveValue::UnitType::Exs: |
| 164 return value * exFontSize(); | 166 return value * exFontSize(); |
| 165 | 167 |
| 166 case CSSPrimitiveValue::UnitType::Rems: | 168 case CSSPrimitiveValue::UnitType::Rems: |
| 167 return value * remFontSize(); | 169 return value * remFontSize(); |
| 168 | 170 |
| 169 case CSSPrimitiveValue::UnitType::Chs: | 171 case CSSPrimitiveValue::UnitType::Chs: |
| 170 return value * chFontSize(); | 172 return value * chFontSize(); |
| 171 | 173 |
| 172 default: | 174 default: |
| 173 ASSERT_NOT_REACHED(); | 175 ASSERT_NOT_REACHED(); |
| 174 return 0; | 176 return 0; |
| 175 } | 177 } |
| 176 } | 178 } |
| 177 | 179 |
| 178 } // namespace blink | 180 } // namespace blink |
| OLD | NEW |