table font props override
This commit is contained in:
@@ -16,9 +16,9 @@ public record FontProps
|
||||
}
|
||||
uint? _SizeD;
|
||||
|
||||
public bool IsItalic { get; init; } = false;
|
||||
public bool? IsItalic { get; init; } = false;
|
||||
|
||||
public bool IsBold { get; init; } = false;
|
||||
public bool? IsBold { get; init; } = false;
|
||||
|
||||
public UnderlineValues? Underline { get; init; }
|
||||
|
||||
@@ -34,23 +34,23 @@ public record FontProps
|
||||
if (!string.IsNullOrWhiteSpace(FontFamily))
|
||||
list.Add(new RunFonts { Ascii = FontFamily, HighAnsi = FontFamily });
|
||||
|
||||
if (_SizeD is not null)
|
||||
list.Add(new FontSize { Val = _SizeD.Value.ToString() });
|
||||
if (_SizeD is { } sizeD)
|
||||
list.Add(new FontSize { Val = sizeD.ToString() });
|
||||
|
||||
if (IsBold)
|
||||
if (IsBold is { } isBold && isBold)
|
||||
list.Add(new Bold());
|
||||
|
||||
if (IsItalic)
|
||||
if (IsItalic is { } isItalic && isItalic)
|
||||
list.Add(new Italic());
|
||||
|
||||
if (Underline is not null)
|
||||
list.Add(new Underline { Val = Underline });
|
||||
if (Underline is { } underline)
|
||||
list.Add(new Underline { Val = underline });
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(Color))
|
||||
list.Add(new Color { Val = Color });
|
||||
|
||||
if (SubSup is not null)
|
||||
list.Add(new VerticalTextAlignment { Val = SubSup });
|
||||
if (SubSup is { } subsup)
|
||||
list.Add(new VerticalTextAlignment { Val = subsup });
|
||||
|
||||
return list.Count > 0;
|
||||
}
|
||||
@@ -58,23 +58,23 @@ public record FontProps
|
||||
{
|
||||
list = [];
|
||||
|
||||
if (_SizeD is not null)
|
||||
list.Add(new FontSize { Val = _SizeD.Value.ToString() });
|
||||
if (_SizeD is { } sizeD)
|
||||
list.Add(new FontSize { Val = sizeD.ToString() });
|
||||
|
||||
if (IsBold)
|
||||
if (IsBold is { } isBold && isBold)
|
||||
list.Add(new Bold());
|
||||
|
||||
if (IsItalic)
|
||||
if (IsItalic is { } isItalic && isItalic)
|
||||
list.Add(new Italic());
|
||||
|
||||
if (Underline is not null)
|
||||
list.Add(new Underline { Val = Underline });
|
||||
if (Underline is { } underline)
|
||||
list.Add(new Underline { Val = underline });
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(Color))
|
||||
list.Add(new Color { Val = Color });
|
||||
|
||||
if (SubSup is not null)
|
||||
list.Add(new VerticalTextAlignment { Val = SubSup });
|
||||
if (SubSup is { } subsup)
|
||||
list.Add(new VerticalTextAlignment { Val = subsup });
|
||||
|
||||
return list.Count > 0;
|
||||
}
|
||||
@@ -85,17 +85,17 @@ public record FontProps
|
||||
if (!string.IsNullOrWhiteSpace(FontFamily))
|
||||
list.Add(new RunFonts { Ascii = FontFamily, HighAnsi = FontFamily });
|
||||
|
||||
if (_SizeD is not null)
|
||||
list.Add(new FontSize { Val = _SizeD.Value.ToString() });
|
||||
if (_SizeD is { } sizeD)
|
||||
list.Add(new FontSize { Val = sizeD.ToString() });
|
||||
|
||||
if (IsBold)
|
||||
if (IsBold is { } isBold && isBold)
|
||||
list.Add(new Bold());
|
||||
|
||||
if (IsItalic)
|
||||
if (IsItalic is { } isItalic && isItalic)
|
||||
list.Add(new Italic());
|
||||
|
||||
if (Underline is not null)
|
||||
list.Add(new Underline { Val = Underline });
|
||||
if (Underline is { } underline)
|
||||
list.Add(new Underline { Val = underline });
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(Color))
|
||||
list.Add(new Color { Val = Color });
|
||||
@@ -111,17 +111,17 @@ public record FontProps
|
||||
if (!string.IsNullOrWhiteSpace(FontFamily))
|
||||
list.Add(new RunFonts { Ascii = FontFamily, HighAnsi = FontFamily });
|
||||
|
||||
if (_SizeD is not null)
|
||||
list.Add(new FontSize { Val = _SizeD.Value.ToString() });
|
||||
if (_SizeD is { } sizeD)
|
||||
list.Add(new FontSize { Val = sizeD.ToString() });
|
||||
|
||||
if (IsBold)
|
||||
if (IsBold is { } isBold && isBold)
|
||||
list.Add(new Bold());
|
||||
|
||||
if (IsItalic)
|
||||
if (IsItalic is { } isItalic && isItalic)
|
||||
list.Add(new Italic());
|
||||
|
||||
if (Underline is not null)
|
||||
list.Add(new Underline { Val = Underline });
|
||||
if (Underline is { } underline)
|
||||
list.Add(new Underline { Val = underline });
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(Color))
|
||||
list.Add(new Color { Val = Color });
|
||||
@@ -136,9 +136,13 @@ public record FontProps
|
||||
list = [];
|
||||
|
||||
// Для математики используем только элемент Style
|
||||
if (IsBold)
|
||||
list.Add(new MathStyle { Val = MathStyleValues.BoldItalic });
|
||||
else list.Add(new MathStyle { Val = MathStyleValues.Italic });
|
||||
if (IsBold is { } isBold && isBold)
|
||||
list.Add(new MathStyle
|
||||
{
|
||||
Val = isBold
|
||||
? MathStyleValues.BoldItalic
|
||||
: MathStyleValues.Italic
|
||||
});
|
||||
// Обычное начертание можно не добавлять, так как по умолчанию и так обычное
|
||||
// (но если нужно явно сбросить, можно добавить Style { Val = StyleValues.Plain })
|
||||
|
||||
@@ -159,4 +163,20 @@ public record FontProps
|
||||
|
||||
public static FontProps WithColor(string hexColor) =>
|
||||
new() { Color = hexColor };
|
||||
|
||||
public FontProps Override(FontProps? second)
|
||||
{
|
||||
if (second is null) return this;
|
||||
|
||||
return new FontProps
|
||||
{
|
||||
FontFamily = second.FontFamily ?? FontFamily,
|
||||
Size = second.Size ?? Size,
|
||||
IsItalic = second.IsItalic ?? IsItalic,
|
||||
IsBold = second.IsBold ?? IsBold,
|
||||
Underline = second.Underline ?? Underline,
|
||||
SubSup = second.SubSup ?? SubSup,
|
||||
Color = second.Color ?? Color,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -64,10 +64,13 @@ internal static class ReplaceToTableExt
|
||||
continue;
|
||||
|
||||
// Извлекаем свойства шрифта для передачи в TableBuilder
|
||||
baseFont ??= ExtractFontPropsFromParagraph(paragraph, oldValue);
|
||||
var fontProps = ExtractFontPropsFromParagraph(paragraph, oldValue);
|
||||
|
||||
if (fontProps is { } props)
|
||||
props.Override(baseFont);
|
||||
|
||||
// Заменяем параграф на таблицу
|
||||
ReplaceWithTableBuilder(paragraph, buildTable, baseFont);
|
||||
ReplaceWithTableBuilder(paragraph, buildTable, fontProps);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user