Добавьте файлы проекта.
This commit is contained in:
89
QWERTYkez.WordProcessor/Builders/CellProps.cs
Normal file
89
QWERTYkez.WordProcessor/Builders/CellProps.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
namespace QWERTYkez.WordProcessor.Builders;
|
||||
|
||||
public readonly struct CellProps(double? width = null!)
|
||||
{
|
||||
public double? Width { get; init; } = width;
|
||||
public TableVerticalAlignmentValues? VerticalAlignment { get; init; } = default;
|
||||
public MergedCell? Merge { get; init; } = default;
|
||||
|
||||
|
||||
#pragma warning disable IDE1006 // Стили именования
|
||||
public static CellProps V_H_ { get; } = new() { Merge = MergedCell.V_H_ };
|
||||
public static CellProps H_ { get; } = new() { Merge = MergedCell.H_ };
|
||||
public static CellProps V_ { get; } = new() { Merge = MergedCell.V_ };
|
||||
public static CellProps _V_H { get; } = new() { Merge = MergedCell._V_H };
|
||||
public static CellProps _H { get; } = new() { Merge = MergedCell._H };
|
||||
public static CellProps _V { get; } = new() { Merge = MergedCell._V };
|
||||
public static CellProps _VH_ { get; } = new() { Merge = MergedCell._VH_ };
|
||||
public static CellProps V__H { get; } = new() { Merge = MergedCell.V__H };
|
||||
#pragma warning restore IDE1006 // Стили именования
|
||||
|
||||
|
||||
internal bool TryExtract(out List<OpenXmlElement> list)
|
||||
{
|
||||
list =
|
||||
[
|
||||
new TableCellVerticalAlignment() { Val = VerticalAlignment ?? TableVerticalAlignmentValues.Center },
|
||||
new TableCellMargin()
|
||||
{
|
||||
TopMargin = new TopMargin() { Width = "0" },
|
||||
BottomMargin = new BottomMargin() { Width = "0" },
|
||||
LeftMargin = new LeftMargin() { Width = "0" },
|
||||
RightMargin = new RightMargin() { Width = "0" }
|
||||
}
|
||||
];
|
||||
|
||||
if (Width.HasValue)
|
||||
list.Add(new TableCellWidth()
|
||||
{
|
||||
Type = TableWidthUnitValues.Dxa,
|
||||
Width = ((uint)(Width.Value * 567d)).ToString() // 1 см = 567 DXA
|
||||
});
|
||||
|
||||
if (Merge.HasValue)
|
||||
{
|
||||
switch (Merge.Value)
|
||||
{
|
||||
case MergedCell.V_H_:
|
||||
list.Add(new HorizontalMerge() { Val = MergedCellValues.Restart });
|
||||
list.Add(new VerticalMerge() { Val = MergedCellValues.Restart });
|
||||
break;
|
||||
case MergedCell.H_:
|
||||
list.Add(new HorizontalMerge() { Val = MergedCellValues.Restart }); break;
|
||||
case MergedCell.V_:
|
||||
list.Add(new VerticalMerge() { Val = MergedCellValues.Restart }); break;
|
||||
case MergedCell._V_H:
|
||||
list.Add(new HorizontalMerge() { Val = MergedCellValues.Continue });
|
||||
list.Add(new VerticalMerge() { Val = MergedCellValues.Continue });
|
||||
break;
|
||||
case MergedCell._H:
|
||||
list.Add(new HorizontalMerge() { Val = MergedCellValues.Continue }); break;
|
||||
case MergedCell._V:
|
||||
list.Add(new VerticalMerge() { Val = MergedCellValues.Continue }); break;
|
||||
case MergedCell._VH_:
|
||||
list.Add(new HorizontalMerge() { Val = MergedCellValues.Restart });
|
||||
list.Add(new VerticalMerge() { Val = MergedCellValues.Continue });
|
||||
break;
|
||||
case MergedCell.V__H:
|
||||
list.Add(new HorizontalMerge() { Val = MergedCellValues.Continue });
|
||||
list.Add(new VerticalMerge() { Val = MergedCellValues.Restart });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return list.Count > 0;
|
||||
}
|
||||
}
|
||||
public enum MergedCell
|
||||
{
|
||||
V_H_,
|
||||
H_,
|
||||
V_,
|
||||
|
||||
_V_H,
|
||||
_H,
|
||||
_V,
|
||||
|
||||
_VH_,
|
||||
V__H,
|
||||
}
|
||||
Reference in New Issue
Block a user