| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 #include "core/style/SVGComputedStyle.h" | 22 #include "core/style/SVGComputedStyle.h" |
| 23 #include "core/svg/SVGLengthContext.h" | 23 #include "core/svg/SVGLengthContext.h" |
| 24 #include "platform/fonts/Font.h" | 24 #include "platform/fonts/Font.h" |
| 25 | 25 |
| 26 namespace blink { | 26 namespace blink { |
| 27 | 27 |
| 28 SVGTextLayoutEngineBaseline::SVGTextLayoutEngineBaseline(const Font& font, | 28 SVGTextLayoutEngineBaseline::SVGTextLayoutEngineBaseline(const Font& font, |
| 29 float effectiveZoom) | 29 float effectiveZoom) |
| 30 : m_font(font), m_effectiveZoom(effectiveZoom) { | 30 : m_font(font), m_effectiveZoom(effectiveZoom) { |
| 31 ASSERT(m_effectiveZoom); | 31 DCHECK(m_effectiveZoom); |
| 32 } | 32 } |
| 33 | 33 |
| 34 float SVGTextLayoutEngineBaseline::calculateBaselineShift( | 34 float SVGTextLayoutEngineBaseline::calculateBaselineShift( |
| 35 const ComputedStyle& style) const { | 35 const ComputedStyle& style) const { |
| 36 const SVGComputedStyle& svgStyle = style.svgStyle(); | 36 const SVGComputedStyle& svgStyle = style.svgStyle(); |
| 37 const SimpleFontData* fontData = m_font.primaryFont(); | 37 const SimpleFontData* fontData = m_font.primaryFont(); |
| 38 DCHECK(fontData); | 38 DCHECK(fontData); |
| 39 if (!fontData) | 39 if (!fontData) |
| 40 return 0; | 40 return 0; |
| 41 | 41 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 52 default: | 52 default: |
| 53 NOTREACHED(); | 53 NOTREACHED(); |
| 54 return 0; | 54 return 0; |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 | 57 |
| 58 EAlignmentBaseline | 58 EAlignmentBaseline |
| 59 SVGTextLayoutEngineBaseline::dominantBaselineToAlignmentBaseline( | 59 SVGTextLayoutEngineBaseline::dominantBaselineToAlignmentBaseline( |
| 60 bool isVerticalText, | 60 bool isVerticalText, |
| 61 LineLayoutItem textLineLayout) const { | 61 LineLayoutItem textLineLayout) const { |
| 62 ASSERT(textLineLayout); | 62 DCHECK(textLineLayout); |
| 63 ASSERT(textLineLayout.style()); | 63 DCHECK(textLineLayout.style()); |
| 64 | 64 |
| 65 const SVGComputedStyle& style = textLineLayout.style()->svgStyle(); | 65 const SVGComputedStyle& style = textLineLayout.style()->svgStyle(); |
| 66 | 66 |
| 67 EDominantBaseline baseline = style.dominantBaseline(); | 67 EDominantBaseline baseline = style.dominantBaseline(); |
| 68 if (baseline == DB_AUTO) { | 68 if (baseline == DB_AUTO) { |
| 69 if (isVerticalText) | 69 if (isVerticalText) |
| 70 baseline = DB_CENTRAL; | 70 baseline = DB_CENTRAL; |
| 71 else | 71 else |
| 72 baseline = DB_ALPHABETIC; | 72 baseline = DB_ALPHABETIC; |
| 73 } | 73 } |
| 74 | 74 |
| 75 switch (baseline) { | 75 switch (baseline) { |
| 76 case DB_USE_SCRIPT: | 76 case DB_USE_SCRIPT: |
| 77 // TODO(fs): The dominant-baseline and the baseline-table components | 77 // TODO(fs): The dominant-baseline and the baseline-table components |
| 78 // are set by determining the predominant script of the character data | 78 // are set by determining the predominant script of the character data |
| 79 // content. | 79 // content. |
| 80 return AB_ALPHABETIC; | 80 return AB_ALPHABETIC; |
| 81 case DB_NO_CHANGE: | 81 case DB_NO_CHANGE: |
| 82 ASSERT(textLineLayout.parent()); | 82 DCHECK(textLineLayout.parent()); |
| 83 return dominantBaselineToAlignmentBaseline(isVerticalText, | 83 return dominantBaselineToAlignmentBaseline(isVerticalText, |
| 84 textLineLayout.parent()); | 84 textLineLayout.parent()); |
| 85 case DB_RESET_SIZE: | 85 case DB_RESET_SIZE: |
| 86 ASSERT(textLineLayout.parent()); | 86 DCHECK(textLineLayout.parent()); |
| 87 return dominantBaselineToAlignmentBaseline(isVerticalText, | 87 return dominantBaselineToAlignmentBaseline(isVerticalText, |
| 88 textLineLayout.parent()); | 88 textLineLayout.parent()); |
| 89 case DB_IDEOGRAPHIC: | 89 case DB_IDEOGRAPHIC: |
| 90 return AB_IDEOGRAPHIC; | 90 return AB_IDEOGRAPHIC; |
| 91 case DB_ALPHABETIC: | 91 case DB_ALPHABETIC: |
| 92 return AB_ALPHABETIC; | 92 return AB_ALPHABETIC; |
| 93 case DB_HANGING: | 93 case DB_HANGING: |
| 94 return AB_HANGING; | 94 return AB_HANGING; |
| 95 case DB_MATHEMATICAL: | 95 case DB_MATHEMATICAL: |
| 96 return AB_MATHEMATICAL; | 96 return AB_MATHEMATICAL; |
| 97 case DB_CENTRAL: | 97 case DB_CENTRAL: |
| 98 return AB_CENTRAL; | 98 return AB_CENTRAL; |
| 99 case DB_MIDDLE: | 99 case DB_MIDDLE: |
| 100 return AB_MIDDLE; | 100 return AB_MIDDLE; |
| 101 case DB_TEXT_AFTER_EDGE: | 101 case DB_TEXT_AFTER_EDGE: |
| 102 return AB_TEXT_AFTER_EDGE; | 102 return AB_TEXT_AFTER_EDGE; |
| 103 case DB_TEXT_BEFORE_EDGE: | 103 case DB_TEXT_BEFORE_EDGE: |
| 104 return AB_TEXT_BEFORE_EDGE; | 104 return AB_TEXT_BEFORE_EDGE; |
| 105 default: | 105 default: |
| 106 NOTREACHED(); | 106 NOTREACHED(); |
| 107 return AB_AUTO; | 107 return AB_AUTO; |
| 108 } | 108 } |
| 109 } | 109 } |
| 110 | 110 |
| 111 float SVGTextLayoutEngineBaseline::calculateAlignmentBaselineShift( | 111 float SVGTextLayoutEngineBaseline::calculateAlignmentBaselineShift( |
| 112 bool isVerticalText, | 112 bool isVerticalText, |
| 113 LineLayoutItem textLineLayout) const { | 113 LineLayoutItem textLineLayout) const { |
| 114 ASSERT(textLineLayout); | 114 DCHECK(textLineLayout); |
| 115 ASSERT(textLineLayout.style()); | 115 DCHECK(textLineLayout.style()); |
| 116 ASSERT(textLineLayout.parent()); | 116 DCHECK(textLineLayout.parent()); |
| 117 | 117 |
| 118 LineLayoutItem textLineLayoutParent = textLineLayout.parent(); | 118 LineLayoutItem textLineLayoutParent = textLineLayout.parent(); |
| 119 ASSERT(textLineLayoutParent); | 119 DCHECK(textLineLayoutParent); |
| 120 | 120 |
| 121 EAlignmentBaseline baseline = | 121 EAlignmentBaseline baseline = |
| 122 textLineLayout.style()->svgStyle().alignmentBaseline(); | 122 textLineLayout.style()->svgStyle().alignmentBaseline(); |
| 123 if (baseline == AB_AUTO || baseline == AB_BASELINE) { | 123 if (baseline == AB_AUTO || baseline == AB_BASELINE) { |
| 124 baseline = dominantBaselineToAlignmentBaseline(isVerticalText, | 124 baseline = dominantBaselineToAlignmentBaseline(isVerticalText, |
| 125 textLineLayoutParent); | 125 textLineLayoutParent); |
| 126 ASSERT(baseline != AB_AUTO && baseline != AB_BASELINE); | 126 DCHECK_NE(baseline, AB_AUTO); |
| 127 DCHECK_NE(baseline, AB_BASELINE); |
| 127 } | 128 } |
| 128 | 129 |
| 129 const SimpleFontData* fontData = m_font.primaryFont(); | 130 const SimpleFontData* fontData = m_font.primaryFont(); |
| 130 DCHECK(fontData); | 131 DCHECK(fontData); |
| 131 if (!fontData) | 132 if (!fontData) |
| 132 return 0; | 133 return 0; |
| 133 | 134 |
| 134 const FontMetrics& fontMetrics = fontData->getFontMetrics(); | 135 const FontMetrics& fontMetrics = fontData->getFontMetrics(); |
| 135 float ascent = fontMetrics.floatAscent() / m_effectiveZoom; | 136 float ascent = fontMetrics.floatAscent() / m_effectiveZoom; |
| 136 float descent = fontMetrics.floatDescent() / m_effectiveZoom; | 137 float descent = fontMetrics.floatDescent() / m_effectiveZoom; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 156 case AB_MATHEMATICAL: | 157 case AB_MATHEMATICAL: |
| 157 return ascent / 2; | 158 return ascent / 2; |
| 158 case AB_BASELINE: | 159 case AB_BASELINE: |
| 159 default: | 160 default: |
| 160 NOTREACHED(); | 161 NOTREACHED(); |
| 161 return 0; | 162 return 0; |
| 162 } | 163 } |
| 163 } | 164 } |
| 164 | 165 |
| 165 } // namespace blink | 166 } // namespace blink |
| OLD | NEW |