using System;
using System.Collections.Generic;
using System.IO;
namespace HH.WMS.Utils.ExcelLibrary.BinaryDrawingFormat
{
///
/// Shape Properties msofbtOPT
/// The first part of an OPT record is an array of FOPTEs,
/// consisting of ID-value pairs
///
public class ShapeProperty
{
public PropertyIDs PropertyID;
///
/// BLIP properties just store a BLIP ID (basically an index into an array in the BLIP Store).
/// only valid if IsComplex is false
///
public bool IsBlipID;
///
/// if true, PropertyValue is the length of the data.
/// The data of the complex properties follows the FOPTE array in the file record.
///
public bool IsComplex;
public UInt32 PropertyValue;
public byte[] ComplexData;
public const int Size = 6;
public static ShapeProperty Decode(BinaryReader reader)
{
ShapeProperty property = new ShapeProperty();
UInt16 num = reader.ReadUInt16();
property.PropertyID = (PropertyIDs)(num & 0x3FFF);
property.IsBlipID = (num & 0x4000) == 0x4000;
property.IsComplex = (num & 0x8000) == 0x8000;
property.PropertyValue = reader.ReadUInt32();
return property;
}
public void Encode(BinaryWriter writer)
{
UInt16 num = (UInt16)((UInt16)PropertyID & 0x3FFF);
if (IsBlipID)
{
num = (UInt16)(num | 0x4000);
}
if (IsComplex)
{
num = (UInt16)(num | 0x8000);
}
writer.Write(num);
writer.Write(PropertyValue);
}
}
}