You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.9 KiB
C#
105 lines
3.9 KiB
C#
9 months ago
|
namespace com.azkoss.excellite
|
||
|
{
|
||
|
using System;
|
||
|
using System.Drawing;
|
||
|
|
||
|
///<summary>
|
||
|
///Contains settings for a single cell border.
|
||
|
///</summary>
|
||
|
///<remarks>
|
||
|
///Note that although diagonal-up (<see cref="com.azkoss.excellite.IndividualBorder.DiagonalUp">IndividualBorder.DiagonalUp</see>
|
||
|
///or <see cref="com.azkoss.excellite.MultipleBorders.DiagonalUp">MultipleBorders.DiagonalUp</see>) and diagonal-down
|
||
|
///(<see cref="com.azkoss.excellite.IndividualBorder.DiagonalDown">IndividualBorder.DiagonalDown</see> or
|
||
|
///<see cref="com.azkoss.excellite.MultipleBorders.DiagonalDown">MultipleBorders.DiagonalDown</see>) can be individually set,
|
||
|
///they share the same color and the same line style. This is a Microsoft Excel limitation.
|
||
|
///</remarks>
|
||
|
///<seealso cref="com.azkoss.excellite.CellBorders" />
|
||
|
public sealed class CellBorder
|
||
|
{
|
||
|
// Methods
|
||
|
internal CellBorder(CellStyle parent, IndividualBorder borderId)
|
||
|
{
|
||
|
this.parent = parent;
|
||
|
this.borderId = borderId;
|
||
|
this.borderIndex = CellBorder.IndexFromIndividualBorder(borderId);
|
||
|
}
|
||
|
|
||
|
internal static int IndexFromIndividualBorder(IndividualBorder individualBorder)
|
||
|
{
|
||
|
int num1 = (int) individualBorder;
|
||
|
if (num1 == 5)
|
||
|
{
|
||
|
num1 = 4;
|
||
|
}
|
||
|
return num1;
|
||
|
}
|
||
|
|
||
|
internal static MultipleBorders MultipleFromIndividualBorder(IndividualBorder individualBorder)
|
||
|
{
|
||
|
return (MultipleBorders) (((int) IndividualBorder.Bottom) << ((int)individualBorder & 0x1f));
|
||
|
}
|
||
|
|
||
|
public void SetBorder(Color lineColor, com.azkoss.excellite.LineStyle lineStyle)
|
||
|
{
|
||
|
this.LineColor = lineColor;
|
||
|
this.LineStyle = lineStyle;
|
||
|
}
|
||
|
|
||
|
private void SetUsedIfNotDefault()
|
||
|
{
|
||
|
CellStyleData data1 = this.parent.Element;
|
||
|
if ((data1.BorderStyle[this.borderIndex] != com.azkoss.excellite.LineStyle.None) || (data1.BorderColor[this.borderIndex].ToArgb() != Color.Black.ToArgb()))
|
||
|
{
|
||
|
data1.BordersUsed |= CellBorder.MultipleFromIndividualBorder(this.borderId);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Properties
|
||
|
///<summary>
|
||
|
///Gets or sets border line color.
|
||
|
///</summary>
|
||
|
///<remarks>
|
||
|
///Note that although diagonal-up (<see cref="com.azkoss.excellite.IndividualBorder.DiagonalUp">IndividualBorder.DiagonalUp</see>
|
||
|
///or <see cref="com.azkoss.excellite.MultipleBorders.DiagonalUp">MultipleBorders.DiagonalUp</see>) and diagonal-down
|
||
|
///(<see cref="com.azkoss.excellite.IndividualBorder.DiagonalDown">IndividualBorder.DiagonalDown</see> or
|
||
|
///<see cref="com.azkoss.excellite.MultipleBorders.DiagonalDown">MultipleBorders.DiagonalDown</see>) can be individually set,
|
||
|
///they share the same color and the same line style. This is a Microsoft Excel limitation.
|
||
|
///</remarks>
|
||
|
public Color LineColor
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.parent.Element.BorderColor[this.borderIndex];
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.parent.BeforeChange();
|
||
|
this.parent.Element.BorderColor[this.borderIndex] = value;
|
||
|
this.SetUsedIfNotDefault();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public com.azkoss.excellite.LineStyle LineStyle
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.parent.Element.BorderStyle[this.borderIndex];
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.parent.BeforeChange();
|
||
|
this.parent.Element.BorderStyle[this.borderIndex] = value;
|
||
|
this.SetUsedIfNotDefault();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Fields
|
||
|
private readonly IndividualBorder borderId;
|
||
|
private readonly int borderIndex;
|
||
|
private readonly CellStyle parent;
|
||
|
}
|
||
|
}
|
||
|
|