CPF/CPF.ReoGrid/ReferenceStyle.cs

181 lines
4.4 KiB
C#
Raw Permalink Normal View History

2024-06-24 10:15:59 +08:00
using System;
using CPF.Drawing;
using CPF.ReoGrid.Graphics;
namespace CPF.ReoGrid
{
public abstract class ReferenceStyle
{
public Worksheet Worksheet
{
get
{
return this.sheet;
}
}
internal ReferenceStyle(Worksheet sheet)
{
this.sheet = sheet;
}
internal virtual void SetStyle(RangePosition range, WorksheetRangeStyle style)
{
this.SetStyle(range.Row, range.Col, range.Rows, range.Cols, style);
}
internal virtual void SetStyle(int row, int col, int rows, int cols, WorksheetRangeStyle style)
{
this.Worksheet.SetRangeStyles(row, col, rows, cols, style);
}
internal virtual void SetStyle<T>(RangePosition range, PlainStyleFlag flag, T value)
{
this.SetStyle<T>(range.Row, range.Col, range.Rows, range.Cols, flag, value);
}
internal virtual void SetStyle<T>(int row, int col, int rows, int cols, PlainStyleFlag flag, T value)
{
WorksheetRangeStyle worksheetRangeStyle = new WorksheetRangeStyle
{
Flag = flag
};
if (flag <= PlainStyleFlag.HorizontalAlign)
{
if (flag <= PlainStyleFlag.FontStyleStrikethrough)
{
long num = flag - PlainStyleFlag.FontName;
if (num <= 3L)
{
switch ((uint)num)
{
case 0U:
worksheetRangeStyle.FontName = (string)((object)value);
goto IL_284;
case 1U:
worksheetRangeStyle.FontSize = (float)((object)value);
goto IL_284;
case 2U:
goto IL_284;
case 3U:
worksheetRangeStyle.Bold = (bool)((object)value);
goto IL_284;
}
}
if (flag != PlainStyleFlag.FontStyleItalic)
{
if (flag == PlainStyleFlag.FontStyleStrikethrough)
{
worksheetRangeStyle.Strikethrough = (bool)((object)value);
}
}
else
{
worksheetRangeStyle.Italic = (bool)((object)value);
}
}
else if (flag <= PlainStyleFlag.TextColor)
{
if (flag != PlainStyleFlag.FontStyleUnderline)
{
if (flag == PlainStyleFlag.TextColor)
{
worksheetRangeStyle.TextColor = (Color)((object)value);
}
}
else
{
worksheetRangeStyle.Underline = (bool)((object)value);
}
}
else if (flag != PlainStyleFlag.BackColor)
{
if (flag == PlainStyleFlag.HorizontalAlign)
{
worksheetRangeStyle.HAlign = (ReoGridHorAlign)((object)value);
}
}
else
{
worksheetRangeStyle.BackColor = (Color)((object)value);
}
}
else if (flag <= PlainStyleFlag.FillPatternStyle)
{
if (flag != PlainStyleFlag.VerticalAlign)
{
if (flag != PlainStyleFlag.FillPatternColor)
{
if (flag == PlainStyleFlag.FillPatternStyle)
{
worksheetRangeStyle.FillPatternStyle = (HatchStyles)((object)value);
}
}
else
{
worksheetRangeStyle.FillPatternColor = (Color)((object)value);
}
}
else
{
worksheetRangeStyle.VAlign = (ReoGridVerAlign)((object)value);
}
}
else if (flag <= PlainStyleFlag.Indent)
{
if (flag != PlainStyleFlag.TextWrap)
{
if (flag == PlainStyleFlag.Indent)
{
worksheetRangeStyle.Indent = (ushort)((object)value);
}
}
else
{
worksheetRangeStyle.TextWrapMode = (TextWrapMode)((object)value);
}
}
else if (flag != PlainStyleFlag.Padding)
{
if (flag == PlainStyleFlag.RotationAngle)
{
worksheetRangeStyle.RotationAngle = (float)((int)((object)value));
}
}
else
{
worksheetRangeStyle.Padding = (PaddingValue)((object)value);
}
IL_284:
this.Worksheet.SetRangeStyles(row, col, rows, cols, worksheetRangeStyle);
}
internal virtual T GetStyle<T>(RangePosition range, PlainStyleFlag flag)
{
return this.GetStyle<T>(range.Row, range.Col, range.Rows, range.Cols, flag);
}
internal virtual T GetStyle<T>(int row, int col, int rows, int cols, PlainStyleFlag flag)
{
Type typeFromHandle = typeof(T);
return (T)((object)Convert.ChangeType(this.Worksheet.GetRangeStyle(row, col, rows, cols, flag), typeFromHandle));
}
internal virtual void CheckForReferenceOwner(object owner)
{
bool flag = this.Worksheet == null || owner == null;
if (flag)
{
throw new ReferenceObjectNotAssociatedException("Reference style must be associated with an instance of owner.");
}
}
public static implicit operator WorksheetRangeStyle(ReferenceStyle refStyle)
{
return new WorksheetRangeStyle();
}
private Worksheet sheet;
}
}