📄 eschercontainer.cs
字号:
using System;
using System.Collections;
namespace Microsoft.Fawvw.Components.NExcel.Biff.Drawing
{
/// <summary> An escher container. This record may contain other escher containers or
/// atoms
/// </summary>
public class EscherContainer:EscherRecord
{
virtual public EscherRecord[] Children
{
get
{
if (!initialized)
{
initialize();
}
System.Object[] ca = children.ToArray();
EscherRecord[] era = new EscherRecord[ca.Length];
Array.Copy(ca, 0, era, 0, ca.Length);
return era;
}
}
override public sbyte[] Data
{
get
{
sbyte[] data = new sbyte[0];
foreach (EscherRecord er in children)
{
sbyte[] childData = er.Data;
sbyte[] newData = new sbyte[data.Length + childData.Length];
Array.Copy(data, 0, newData, 0, data.Length);
Array.Copy(childData, 0, newData, data.Length, childData.Length);
data = newData;
}
return setHeaderData(data);
}
}
private bool initialized;
private ArrayList children;
public EscherContainer(EscherRecordData erd):base(erd)
{
initialized = false;
children = new ArrayList();
}
protected internal EscherContainer(EscherRecordType type):base(type)
{
Container = true;
children = new ArrayList();
}
public virtual void add(EscherRecord child)
{
children.Add(child);
}
public virtual void remove(EscherRecord child)
{
children.Remove(child);
}
private void initialize()
{
int curpos = Pos + HEADER_LENGTH;
int endpos = Pos + Length;
EscherRecord newRecord = null;
while (curpos < endpos)
{
EscherRecordData erd = new EscherRecordData(EscherStream, curpos);
EscherRecordType type = erd.Type;
if (type == EscherRecordType.DGG)
{
newRecord = new Dgg(erd);
}
else if (type == EscherRecordType.DG)
{
newRecord = new Dg(erd);
}
else if (type == EscherRecordType.BSTORE_CONTAINER)
{
newRecord = new BStoreContainer(erd);
}
else if (type == EscherRecordType.SPGR_CONTAINER)
{
newRecord = new SpgrContainer(erd);
}
else if (type == EscherRecordType.SP_CONTAINER)
{
newRecord = new SpContainer(erd);
}
else if (type == EscherRecordType.SPGR)
{
newRecord = new Spgr(erd);
}
else if (type == EscherRecordType.SP)
{
newRecord = new Sp(erd);
}
else if (type == EscherRecordType.CLIENT_ANCHOR)
{
newRecord = new ClientAnchor(erd);
}
else if (type == EscherRecordType.CLIENT_DATA)
{
newRecord = new ClientData(erd);
}
else if (type == EscherRecordType.BSE)
{
newRecord = new BlipStoreEntry(erd);
}
else if (type == EscherRecordType.OPT)
{
newRecord = new Opt(erd);
}
else if (type == EscherRecordType.SPLIT_MENU_COLORS)
{
newRecord = new SplitMenuColors(erd);
}
else
{
newRecord = new EscherAtom(erd);
}
children.Add(newRecord);
curpos += newRecord.Length;
}
initialized = true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -