public override int Serialize(int offset, byte[] data) { LittleEndianOutput leo = new LittleEndianByteArrayOutputStream(data, offset); ContinuableRecordOutput out1 = new ContinuableRecordOutput(leo, this.Sid); Serialize(out1); out1.Terminate(); return out1.TotalSize; }
public override int Serialize(int offset, byte[] data) { LittleEndianOutput leo = new LittleEndianByteArrayOutputStream(data, offset); ContinuableRecordOutput out1 = new ContinuableRecordOutput(leo, this.Sid); Serialize(out1); out1.Terminate(); return(out1.TotalSize); }
public void Serialize(ContinuableRecordOutput out1) { out1.WriteInt(_numStrings); out1.WriteInt(_numUniqueStrings); for (int k = 0; k < strings.Size; k++) { if (k % ExtSSTRecord.DEFAULT_BUCKET_SIZE == 0) { int rOff = out1.TotalSize; int index = k / ExtSSTRecord.DEFAULT_BUCKET_SIZE; if (index < ExtSSTRecord.MAX_BUCKETS) { //Excel only indexes the first 128 buckets. bucketAbsoluteOffsets[index] = rOff; bucketRelativeOffsets[index] = rOff; } } UnicodeString s = GetUnicodeString(k); s.Serialize(out1); } }
protected override void Serialize(ContinuableRecordOutput out1) { out1.WriteShort(field_1_strings_per_bucket); for (int k = 0; k < _sstInfos.Length; k++) { _sstInfos[k].Serialize(out1); } }
/** * Serializes this record's content to the supplied data output.<br/> * The standard BIFF header (ushort sid, ushort size) has been handled by the superclass, so * only BIFF data should be written by this method. Simple data types can be written with the * standard {@link LittleEndianOutput} methods. Methods from {@link ContinuableRecordOutput} * can be used to Serialize strings (with {@link ContinueRecord}s being written as required). * If necessary, implementors can explicitly start {@link ContinueRecord}s (regardless of the * amount of remaining space). * * @param out a data output stream */ protected abstract void Serialize(ContinuableRecordOutput out1);
/** * 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. * * @return size */ protected override void Serialize(ContinuableRecordOutput out1) { SSTSerializer serializer = new SSTSerializer(field_3_strings, NumStrings, NumUniqueStrings ); serializer.Serialize(out1); bucketAbsoluteOffsets = serializer.BucketAbsoluteOffsets; bucketRelativeOffsets = serializer.BucketRelativeOffsets; }
/** * Serializes this record's content to the supplied data output.<br/> * The standard BIFF header (ushort sid, ushort size) has been handled by the superclass, so * only BIFF data should be written by this method. Simple data types can be written with the * standard {@link LittleEndianOutput} methods. Methods from {@link ContinuableRecordOutput} * can be used to Serialize strings (with {@link ContinueRecord}s being written as required). * If necessary, implementors can explicitly start {@link ContinueRecord}s (regardless of the * amount of remaining space). * * @param out a data output stream */ protected abstract void Serialize(ContinuableRecordOutput out1);
/** * 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 */ protected override void Serialize(ContinuableRecordOutput out1) { out1.WriteShort(this._text.Length); out1.WriteStringData(this._text); }
/** * called by the class that Is responsible for writing this sucker. * Subclasses should implement this so that their data Is passed back in a * @param offset to begin writing at * @param data byte array containing instance data * @return number of bytes written */ protected override void Serialize(ContinuableRecordOutput out1) { int field_7_length_custom_menu = field_14_custom_menu_text.Length; int field_8_length_description_text = field_15_description_text.Length; int field_9_length_help_topic_text = field_16_help_topic_text.Length; int field_10_length_status_bar_text = field_17_status_bar_text.Length; //int rawNameSize = NameRawSize; // size defined below out1.WriteShort(OptionFlag); out1.WriteByte(KeyboardShortcut); out1.WriteByte(NameTextLength); // Note - formula size is not immediately before encoded formula, and does not include any array constant data out1.WriteShort(field_13_name_definition.EncodedTokenSize); out1.WriteShort(field_5_externSheetIndex_plus1); out1.WriteShort(field_6_sheetNumber); out1.WriteByte(field_7_length_custom_menu); out1.WriteByte(field_8_length_description_text); out1.WriteByte(field_9_length_help_topic_text); out1.WriteByte(field_10_length_status_bar_text); out1.WriteByte(field_11_nameIsMultibyte ? 1 : 0); if (IsBuiltInName) { out1.WriteByte(field_12_built_in_code); } else { String nameText = field_12_name_text; if (field_11_nameIsMultibyte) { StringUtil.PutUnicodeLE(nameText,out1); } else { StringUtil.PutCompressedUnicode(nameText, out1); } } field_13_name_definition.SerializeTokens(out1); field_13_name_definition.SerializeArrayConstantData(out1); StringUtil.PutCompressedUnicode(CustomMenuText,out1); StringUtil.PutCompressedUnicode(DescriptionText, out1); StringUtil.PutCompressedUnicode(HelpTopicText, out1); StringUtil.PutCompressedUnicode(StatusBarText, out1); }
public void TestExtRstFromEmpty() { UnicodeString.ExtRst ext = new UnicodeString.ExtRst(); Assert.AreEqual(0, ext.NumberOfRuns); Assert.AreEqual(0, ext.FormattingFontIndex); Assert.AreEqual(0, ext.FormattingOptions); Assert.AreEqual("", ext.PhoneticText); Assert.AreEqual(0, ext.PhRuns.Length); Assert.AreEqual(10, ext.DataSize); // Excludes 4 byte header MemoryStream baos = new MemoryStream(); LittleEndianOutputStream out1 = new LittleEndianOutputStream(baos); ContinuableRecordOutput cout = new ContinuableRecordOutput(out1, 0xffff); ext.Serialize(cout); cout.WriteContinue(); byte[] b = baos.ToArray(); Assert.AreEqual(20, b.Length); // First 4 bytes from the outputstream Assert.AreEqual(-1, (sbyte)b[0]); Assert.AreEqual(-1, (sbyte)b[1]); Assert.AreEqual(14, b[2]); Assert.AreEqual(00, b[3]); // Reserved Assert.AreEqual(1, b[4]); Assert.AreEqual(0, b[5]); // Data size Assert.AreEqual(10, b[6]); Assert.AreEqual(00, b[7]); // Font*2 Assert.AreEqual(0, b[8]); Assert.AreEqual(0, b[9]); Assert.AreEqual(0, b[10]); Assert.AreEqual(0, b[11]); // 0 Runs Assert.AreEqual(0, b[12]); Assert.AreEqual(0, b[13]); // Size=0, *2 Assert.AreEqual(0, b[14]); Assert.AreEqual(0, b[15]); Assert.AreEqual(0, b[16]); Assert.AreEqual(0, b[17]); // Last 2 bytes from the outputstream Assert.AreEqual(ContinueRecord.sid, b[18]); Assert.AreEqual(0, b[19]); // Load in again and re-test byte[] data = new byte[14]; Array.Copy(b, 4, data, 0, data.Length); LittleEndianInputStream inp = new LittleEndianInputStream( new MemoryStream(data) ); ext = new UnicodeString.ExtRst(inp, data.Length); Assert.AreEqual(0, ext.NumberOfRuns); Assert.AreEqual(0, ext.FormattingFontIndex); Assert.AreEqual(0, ext.FormattingOptions); Assert.AreEqual("", ext.PhoneticText); Assert.AreEqual(0, ext.PhRuns.Length); }
protected override void Serialize(ContinuableRecordOutput out1) { SerializeTXORecord(out1); if (_text.String.Length > 0) { SerializeTrailingRecords(out1); } }
private void SerializeTXORecord(ContinuableRecordOutput out1) { out1.WriteShort(field_1_options); out1.WriteShort(field_2_textOrientation); out1.WriteShort(field_3_reserved4); out1.WriteShort(field_4_reserved5); out1.WriteShort(field_5_reserved6); out1.WriteShort(_text.Length); out1.WriteShort(FormattingDataLength); out1.WriteInt(field_8_reserved7); if (_linkRefPtg != null) { int formulaSize = _linkRefPtg.Size; out1.WriteShort(formulaSize); out1.WriteInt(_unknownPreFormulaInt); _linkRefPtg.Write(out1); if (_unknownPostFormulaByte != null) { out1.WriteByte(Convert.ToByte(_unknownPostFormulaByte, CultureInfo.InvariantCulture)); } } }
private void WriteFormatData(ContinuableRecordOutput out1, IRichTextString str) { int nRuns = str.NumFormattingRuns; for (int i = 0; i < nRuns; i++) { out1.WriteShort(str.GetIndexOfFormattingRun(i)); int fontIndex = ((HSSFRichTextString)str).GetFontOfFormattingRun(i); out1.WriteShort(fontIndex == HSSFRichTextString.NO_FONT ? 0 : fontIndex); out1.WriteInt(0); // skip reserved } out1.WriteShort(str.Length); out1.WriteShort(0); out1.WriteInt(0); // skip reserved }
private void SerializeTrailingRecords(ContinuableRecordOutput out1) { out1.WriteContinue(); out1.WriteStringData(_text.String); out1.WriteContinue(); WriteFormatData(out1,_text); }