Ejemplo n.º 1
0
        /**
         * called by the class that Is responsible for writing this sucker.
         * Subclasses should implement this so that their data Is passed back in a
         * byte array.
         *
         * @param offset to begin writing at
         * @param data byte array containing instance data
         * @return number of bytes written
         */
        public override void Serialize(ILittleEndianOutput out1)
        {
            int formula1Len = GetFormulaSize(field_17_formula1);
            int formula2Len = GetFormulaSize(field_18_formula2);

            out1.WriteByte(field_1_condition_type);
            out1.WriteByte(field_2_comparison_operator);
            out1.WriteShort(formula1Len);
            out1.WriteShort(formula2Len);
            out1.WriteInt(field_5_options);
            out1.WriteShort(field_6_not_used);

            if (ContainsFontFormattingBlock)
            {
                byte[] fontFormattingRawRecord = fontFormatting.GetRawRecord();
                out1.Write(fontFormattingRawRecord);
            }

            if (ContainsBorderFormattingBlock)
            {
                borderFormatting.Serialize(out1);
            }

            if (ContainsPatternFormattingBlock)
            {
                patternFormatting.Serialize(out1);
            }

            field_17_formula1.SerializeTokens(out1);
            field_18_formula2.SerializeTokens(out1);
        }
Ejemplo n.º 2
0
        /**
         * called by the class that Is responsible for writing this sucker.
         * Subclasses should implement this so that their data Is passed back in a
         * byte array.
         *
         * @param offset to begin writing at
         * @param data byte array containing instance data
         * @return number of bytes written
         */
        public override int Serialize(int pOffset, byte[] data)
        {
            int formula1Len = GetFormulaSize(field_17_formula1);
            int formula2Len = GetFormulaSize(field_18_formula2);

            int offset     = pOffset;
            int recordsize = RecordSize;

            LittleEndian.PutShort(data, 0 + offset, sid);
            LittleEndian.PutShort(data, 2 + offset, (short)(recordsize - 4));
            LittleEndian.PutByte(data, 4 + offset, field_1_condition_type);
            LittleEndian.PutByte(data, 5 + offset, field_2_comparison_operator);
            LittleEndian.PutUShort(data, 6 + offset, formula1Len);
            LittleEndian.PutUShort(data, 8 + offset, formula2Len);
            LittleEndian.PutInt(data, 10 + offset, field_5_options);
            LittleEndian.PutShort(data, 14 + offset, field_6_not_used);

            offset += 16;

            if (ContainsFontFormattingBlock)
            {
                byte[] fontFormattingRawRecord = fontFormatting.GetRawRecord();
                Array.Copy(fontFormattingRawRecord, 0, data, offset, fontFormattingRawRecord.Length);
                offset += fontFormattingRawRecord.Length;
            }

            if (ContainsBorderFormattingBlock)
            {
                offset += borderFormatting.Serialize(offset, data);
            }

            if (ContainsPatternFormattingBlock)
            {
                offset += patternFormatting.Serialize(offset, data);
            }

            if (field_17_formula1 != null)
            {
                offset += Ptg.SerializePtgs(field_17_formula1, data, offset);
            }

            if (field_18_formula2 != null)
            {
                offset += Ptg.SerializePtgs(field_18_formula2, data, offset);
            }
            if (offset - pOffset != recordsize)
            {
                throw new InvalidOperationException("Write mismatch (" + (offset - pOffset) + "!=" + recordsize + ")");
            }
            return(recordsize);
        }
Ejemplo n.º 3
0
        protected void SerializeFormattingBlock(ILittleEndianOutput out1)
        {
            out1.WriteInt(formatting_options);
            out1.WriteShort(formatting_not_used);

            if (ContainsFontFormattingBlock)
            {
                byte[] fontFormattingRawRecord = _fontFormatting.RawRecord;
                out1.Write(fontFormattingRawRecord);
            }

            if (ContainsBorderFormattingBlock)
            {
                _borderFormatting.Serialize(out1);
            }

            if (ContainsPatternFormattingBlock)
            {
                _patternFormatting.Serialize(out1);
            }
        }