Skip to content

Commit

Permalink
[web] Clean up unused previousStyle logic (#22150)
Browse files Browse the repository at this point in the history
  • Loading branch information
mdebbar authored Oct 29, 2020
1 parent 06b0910 commit 005dec4
Showing 1 changed file with 57 additions and 136 deletions.
193 changes: 57 additions & 136 deletions lib/web_ui/lib/src/engine/text/paragraph.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1460,157 +1460,86 @@ String fontWeightIndexToCss({int fontWeightIndex = 3}) {

/// Applies a paragraph [style] to an [element], translating the properties to
/// their corresponding CSS equivalents.
///
/// If [previousStyle] is not null, updates only the mismatching attributes.
void _applyParagraphStyleToElement({
required html.HtmlElement element,
required EngineParagraphStyle style,
EngineParagraphStyle? previousStyle,
}) {
assert(element != null); // ignore: unnecessary_null_comparison
assert(style != null); // ignore: unnecessary_null_comparison
// TODO(yjbanov): What do we do about ParagraphStyle._locale and ellipsis?
final html.CssStyleDeclaration cssStyle = element.style;
if (previousStyle == null) {
if (style._textAlign != null) {
cssStyle.textAlign = textAlignToCssValue(
style._textAlign, style._textDirection ?? ui.TextDirection.ltr);
}
if (style._lineHeight != null) {
cssStyle.lineHeight = '${style._lineHeight}';
}
if (style._textDirection != null) {
cssStyle.direction = _textDirectionToCss(style._textDirection);
}
if (style._fontSize != null) {
cssStyle.fontSize = '${style._fontSize!.floor()}px';
}
if (style._fontWeight != null) {
cssStyle.fontWeight = fontWeightToCss(style._fontWeight);
}
if (style._fontStyle != null) {
cssStyle.fontStyle =
style._fontStyle == ui.FontStyle.normal ? 'normal' : 'italic';
}
cssStyle.fontFamily = canonicalizeFontFamily(style._effectiveFontFamily);
} else {
if (style._textAlign != previousStyle._textAlign) {
cssStyle.textAlign = textAlignToCssValue(
style._textAlign, style._textDirection ?? ui.TextDirection.ltr);
}
if (style._lineHeight != previousStyle._lineHeight) {
cssStyle.lineHeight = '${style._lineHeight}';
}
if (style._textDirection != previousStyle._textDirection) {
cssStyle.direction = _textDirectionToCss(style._textDirection);
}
if (style._fontSize != previousStyle._fontSize) {
cssStyle.fontSize =
style._fontSize != null ? '${style._fontSize!.floor()}px' : null;
}
if (style._fontWeight != previousStyle._fontWeight) {
cssStyle.fontWeight = fontWeightToCss(style._fontWeight);
}
if (style._fontStyle != previousStyle._fontStyle) {
cssStyle.fontStyle = style._fontStyle != null
? (style._fontStyle == ui.FontStyle.normal ? 'normal' : 'italic')
: null;
}
if (style._fontFamily != previousStyle._fontFamily) {
cssStyle.fontFamily = canonicalizeFontFamily(style._fontFamily);
}

if (style._textAlign != null) {
cssStyle.textAlign = textAlignToCssValue(
style._textAlign, style._textDirection ?? ui.TextDirection.ltr);
}
if (style._lineHeight != null) {
cssStyle.lineHeight = '${style._lineHeight}';
}
if (style._textDirection != null) {
cssStyle.direction = _textDirectionToCss(style._textDirection);
}
if (style._fontSize != null) {
cssStyle.fontSize = '${style._fontSize!.floor()}px';
}
if (style._fontWeight != null) {
cssStyle.fontWeight = fontWeightToCss(style._fontWeight);
}
if (style._fontStyle != null) {
cssStyle.fontStyle =
style._fontStyle == ui.FontStyle.normal ? 'normal' : 'italic';
}
cssStyle.fontFamily = canonicalizeFontFamily(style._effectiveFontFamily);
}

/// Applies a text [style] to an [element], translating the properties to their
/// corresponding CSS equivalents.
///
/// If [previousStyle] is not null, updates only the mismatching attributes.
/// If [isSpan] is true, the text element is a span within richtext and
/// should not assign effectiveFontFamily if fontFamily was not specified.
void _applyTextStyleToElement({
required html.HtmlElement element,
required EngineTextStyle style,
EngineTextStyle? previousStyle,
bool isSpan = false,
}) {
assert(element != null); // ignore: unnecessary_null_comparison
assert(style != null); // ignore: unnecessary_null_comparison
bool updateDecoration = false;
final html.CssStyleDeclaration cssStyle = element.style;
if (previousStyle == null) {
final ui.Color? color = style._foreground?.color ?? style._color;
if (color != null) {
cssStyle.color = colorToCssString(color);
}
if (style._fontSize != null) {
cssStyle.fontSize = '${style._fontSize!.floor()}px';
}
if (style._fontWeight != null) {
cssStyle.fontWeight = fontWeightToCss(style._fontWeight);
}
if (style._fontStyle != null) {
cssStyle.fontStyle =
style._fontStyle == ui.FontStyle.normal ? 'normal' : 'italic';
}
// For test environment use effectiveFontFamily since we need to
// consistently use Ahem font.
if (isSpan && !ui.debugEmulateFlutterTesterEnvironment) {
cssStyle.fontFamily = canonicalizeFontFamily(style._fontFamily);
} else {
cssStyle.fontFamily =
canonicalizeFontFamily(style._effectiveFontFamily);
}
if (style._letterSpacing != null) {
cssStyle.letterSpacing = '${style._letterSpacing}px';
}
if (style._wordSpacing != null) {
cssStyle.wordSpacing = '${style._wordSpacing}px';
}
if (style._decoration != null) {
updateDecoration = true;
}
if (style._shadows != null) {
cssStyle.textShadow = _shadowListToCss(style._shadows!);
}
} else {
if (style._color != previousStyle._color ||
style._foreground != previousStyle._foreground) {
final ui.Color? color = style._foreground?.color ?? style._color;
cssStyle.color = colorToCssString(color);
}

if (style._fontSize != previousStyle._fontSize) {
cssStyle.fontSize =
style._fontSize != null ? '${style._fontSize!.floor()}px' : null;
}

if (style._fontWeight != previousStyle._fontWeight) {
cssStyle.fontWeight = fontWeightToCss(style._fontWeight);
}

if (style._fontStyle != previousStyle._fontStyle) {
cssStyle.fontStyle = style._fontStyle != null
? style._fontStyle == ui.FontStyle.normal ? 'normal' : 'italic'
: null;
}
if (style._fontFamily != previousStyle._fontFamily) {
cssStyle.fontFamily = canonicalizeFontFamily(style._fontFamily);
}
if (style._letterSpacing != previousStyle._letterSpacing) {
cssStyle.letterSpacing = '${style._letterSpacing}px';
}
if (style._wordSpacing != previousStyle._wordSpacing) {
cssStyle.wordSpacing = '${style._wordSpacing}px';
}
if (style._decoration != previousStyle._decoration ||
style._decorationStyle != previousStyle._decorationStyle ||
style._decorationColor != previousStyle._decorationColor) {
updateDecoration = true;
}
if (style._shadows != previousStyle._shadows) {
cssStyle.textShadow = _shadowListToCss(style._shadows!);
}
final ui.Color? color = style._foreground?.color ?? style._color;
if (color != null) {
cssStyle.color = colorToCssString(color);
}
if (style._fontSize != null) {
cssStyle.fontSize = '${style._fontSize!.floor()}px';
}
if (style._fontWeight != null) {
cssStyle.fontWeight = fontWeightToCss(style._fontWeight);
}
if (style._fontStyle != null) {
cssStyle.fontStyle =
style._fontStyle == ui.FontStyle.normal ? 'normal' : 'italic';
}
// For test environment use effectiveFontFamily since we need to
// consistently use Ahem font.
if (isSpan && !ui.debugEmulateFlutterTesterEnvironment) {
cssStyle.fontFamily = canonicalizeFontFamily(style._fontFamily);
} else {
cssStyle.fontFamily =
canonicalizeFontFamily(style._effectiveFontFamily);
}
if (style._letterSpacing != null) {
cssStyle.letterSpacing = '${style._letterSpacing}px';
}
if (style._wordSpacing != null) {
cssStyle.wordSpacing = '${style._wordSpacing}px';
}
if (style._decoration != null) {
updateDecoration = true;
}
if (style._shadows != null) {
cssStyle.textShadow = _shadowListToCss(style._shadows!);
}

if (updateDecoration) {
Expand Down Expand Up @@ -1705,19 +1634,11 @@ String _shadowListToCss(List<ui.Shadow> shadows) {
void _applyTextBackgroundToElement({
required html.HtmlElement element,
required EngineTextStyle style,
EngineTextStyle? previousStyle,
}) {
final ui.Paint? newBackground = style._background;
if (previousStyle == null) {
if (newBackground != null) {
domRenderer.setElementStyle(
element, 'background-color', colorToCssString(newBackground.color));
}
} else {
if (newBackground != previousStyle._background) {
domRenderer.setElementStyle(
element, 'background-color', colorToCssString(newBackground!.color));
}
if (newBackground != null) {
domRenderer.setElementStyle(
element, 'background-color', colorToCssString(newBackground.color));
}
}

Expand Down

0 comments on commit 005dec4

Please sign in to comment.