using System; using System.Text; using HH.WMS.Utils.NPOI.Util; using System.Globalization; namespace HH.WMS.Utils.NPOI.HSSF.Record { /// /// FtSbs structure /// public class ScrollableObjectSubRecord : SubRecord { private short field_1_iVal = 0; private short field_2_iMin = 0; private short field_3_iMax = 0; private short field_4_dInc = 0; private short field_5_dPage = 0; private short field_6_fHoriz = 0; private short field_7_dxScroll = 0; private short field_8_options = 0; private BitField fDrawFlag = BitFieldFactory.GetInstance(0x01); private BitField fDrawSliderOnly = BitFieldFactory.GetInstance(0x02); private BitField fTrackElevator = BitFieldFactory.GetInstance(0x04); private BitField fNo3d = BitFieldFactory.GetInstance(0x08); public ScrollableObjectSubRecord() { } public ScrollableObjectSubRecord(ILittleEndianInput in1, int size) { if (size !=this.DataSize) { throw new RecordFormatException(string.Format(CultureInfo.CurrentCulture, "Expected size {0} but got ({1})", this.DataSize, size)); } in1.ReadInt(); field_1_iVal=in1.ReadShort(); field_2_iMin=in1.ReadShort(); field_3_iMax=in1.ReadShort(); field_4_dInc=in1.ReadShort(); field_5_dPage=in1.ReadShort(); field_6_fHoriz = in1.ReadShort(); field_7_dxScroll = in1.ReadShort(); field_8_options = in1.ReadShort(); } public override void Serialize(ILittleEndianOutput out1) { out1.WriteShort(sid); out1.WriteShort(DataSize); out1.WriteInt(0); out1.WriteShort(field_1_iVal); out1.WriteShort(field_2_iMin); out1.WriteShort(field_3_iMax); out1.WriteShort(field_4_dInc); out1.WriteShort(field_5_dPage); out1.WriteShort(field_6_fHoriz); out1.WriteShort(field_7_dxScroll); out1.WriteShort(field_8_options); } public override int DataSize { get { return 20; } } public const short sid = 0x0C; public override short Sid { get { return sid; } } public short CurrentValue { get { return field_1_iVal; } set { if (field_1_iVal < field_2_iMin || field_1_iVal > field_3_iMax) throw new ArgumentOutOfRangeException("invalid value"); field_1_iVal = value; } } public short MaxValue { get { return field_2_iMin; } set { field_2_iMin = value; } } public short MinValue { get { return field_3_iMax; } set { field_3_iMax = value; } } public short IncreaseAmountChanged { get { return field_4_dInc; } set { field_4_dInc = value; } } public short PageAmountChanged { get { return field_5_dPage; } set { field_5_dPage = value; } } public bool IsHorizontal { get { return field_6_fHoriz==1; } set { field_6_fHoriz = value ? (short)1 : (short)0; } } public short ScrollbarWidthInPixel { get { return field_7_dxScroll; } set { field_7_dxScroll = value; } } public bool IsVisible { get { return fDrawFlag.IsSet(field_8_options); } set { field_8_options=fDrawFlag.SetShortBoolean(field_8_options, value); } } public bool IsOnlySilderPortionVisible { get { return fDrawSliderOnly.IsSet(field_8_options); } set { field_8_options = fDrawSliderOnly.SetShortBoolean(field_8_options, value); } } public bool IsTrackElevator { get { return fTrackElevator.IsSet(field_8_options); } set { field_8_options = fTrackElevator.SetShortBoolean(field_8_options, value); } } public bool IsNo3D { get { return fNo3d.IsSet(field_8_options); } set { field_8_options = fNo3d.SetShortBoolean(field_8_options, value); } } public override object Clone() { ScrollableObjectSubRecord rec = new ScrollableObjectSubRecord(); rec.field_1_iVal = field_1_iVal; rec.field_2_iMin = field_2_iMin; rec.field_3_iMax = field_3_iMax; rec.field_4_dInc = field_4_dInc; rec.field_5_dPage = field_5_dPage; rec.field_6_fHoriz = field_6_fHoriz; rec.field_7_dxScroll = field_7_dxScroll; rec.field_8_options = field_8_options; return rec; } } }