| 194 | static LineMetrics resolveReplacementLineMetrics(const LineMetrics& lineMetrics, |
| 195 | const Size& replacementSize, |
| 196 | Valdi::InlineViewVerticalAlignment verticalAlignment) { |
| 197 | switch (verticalAlignment) { |
| 198 | case Valdi::InlineViewVerticalAlignment::Top: |
| 199 | return LineMetrics(lineMetrics.ascent, lineMetrics.ascent + replacementSize.height); |
| 200 | case Valdi::InlineViewVerticalAlignment::Bottom: |
| 201 | return LineMetrics(lineMetrics.descent - replacementSize.height, lineMetrics.descent); |
| 202 | case Valdi::InlineViewVerticalAlignment::Baseline: |
| 203 | return LineMetrics(-replacementSize.height, 0); |
| 204 | case Valdi::InlineViewVerticalAlignment::Center: { |
| 205 | auto textCenter = (lineMetrics.ascent + lineMetrics.descent) / 2.0f; |
| 206 | auto ascent = textCenter - (replacementSize.height / 2.0f); |
| 207 | return LineMetrics(ascent, ascent + replacementSize.height); |
| 208 | } |
| 209 | } |
| 210 | auto textCenter = (lineMetrics.ascent + lineMetrics.descent) / 2.0f; |