/** * Writes the content of the RtfList * @since 2.1.3 */ public override void WriteContent(Stream result) { if (!this.inTable) { result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); } int itemNr = 0; if (items != null) { for (int i = 0; i < items.Count; i++) { RtfElement thisRtfElement = (RtfElement)items[i]; //thisRtfElement.WriteContent(result); if (thisRtfElement is RtfListItem) { itemNr++; RtfListItem rtfElement = (RtfListItem)thisRtfElement; RtfListLevel listLevel = rtfElement.GetParent(); if (listLevel.GetListLevel() == 0) { CorrectIndentation(); } if (i == 0) { listLevel.WriteListBeginning(result); WriteListNumbers(result); } WriteListTextBlock(result, itemNr, listLevel); rtfElement.WriteContent(result); if (i < (items.Count - 1) || !this.inTable || listLevel.GetListType() > 0) // TODO Fix no paragraph on last list item in tables { result.Write(RtfParagraph.PARAGRAPH, 0, RtfParagraph.PARAGRAPH.Length); } this.document.OutputDebugLinebreak(result); } else if (thisRtfElement is RtfList) { ((RtfList)thisRtfElement).WriteContent(result); // ((RtfList)thisRtfElement).WriteListBeginning(result); WriteListNumbers(result); this.document.OutputDebugLinebreak(result); } } } if (!this.inTable) { result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length); } }
/// <summary> /// Writes the content of the RtfList /// @since 2.1.3 /// </summary> public override void WriteContent(Stream result) { if (!InTable) { result.Write(OpenGroup, 0, OpenGroup.Length); } int itemNr = 0; if (_items != null) { for (int i = 0; i < _items.Count; i++) { RtfElement thisRtfElement = (RtfElement)_items[i]; //thisRtfElement.WriteContent(result); if (thisRtfElement is RtfListItem) { itemNr++; RtfListItem rtfElement = (RtfListItem)thisRtfElement; RtfListLevel listLevel = rtfElement.GetParent(); if (listLevel.GetListLevel() == 0) { CorrectIndentation(); } if (i == 0) { listLevel.WriteListBeginning(result); WriteListNumbers(result); } WriteListTextBlock(result, itemNr, listLevel); rtfElement.WriteContent(result); if (i < (_items.Count - 1) || !InTable || listLevel.GetListType() > 0) { // TODO Fix no paragraph on last list item in tables result.Write(RtfParagraph.Paragraph, 0, RtfParagraph.Paragraph.Length); } Document.OutputDebugLinebreak(result); } else if (thisRtfElement is RtfList) { ((RtfList)thisRtfElement).WriteContent(result); // ((RtfList)thisRtfElement).WriteListBeginning(result); WriteListNumbers(result); Document.OutputDebugLinebreak(result); } } } if (!InTable) { result.Write(CloseGroup, 0, CloseGroup.Length); result.Write(RtfPhrase.ParagraphDefaults, 0, RtfPhrase.ParagraphDefaults.Length); } }
/// <summary> /// Writes the content of this RtfTable /// </summary> public override void WriteContent(Stream result) { if (!InHeader) { if (_offset != -1) { result.Write(RtfFont.FontSize, 0, RtfFont.FontSize.Length); byte[] t; result.Write(t = IntToByteArray(_offset), 0, t.Length); } result.Write(RtfParagraph.Paragraph, 0, RtfParagraph.Paragraph.Length); } for (int i = 0; i < _rows.Count; i++) { RtfElement re = (RtfElement)_rows[i]; re.WriteContent(result); } result.Write(RtfPhrase.ParagraphDefaults, 0, RtfPhrase.ParagraphDefaults.Length); }
/** * Writes the content of this RtfTable */ public override void WriteContent(Stream result) { if (!inHeader) { if (this.offset != -1) { result.Write(RtfFont.FONT_SIZE, 0, RtfFont.FONT_SIZE.Length); byte[] t; result.Write(t = IntToByteArray(this.offset), 0, t.Length); } result.Write(RtfParagraph.PARAGRAPH, 0, RtfParagraph.PARAGRAPH.Length); } for (int i = 0; i < this.rows.Count; i++) { RtfElement re = (RtfElement)this.rows[i]; re.WriteContent(result); } result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length); }
/** * Writes the definition part of this list level * @param result * @throws IOException * @since 2.1.3 */ public void WriteDefinition(Stream result) { byte[] t; result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST, 0, LIST.Length); result.Write(LIST_TEMPLATE_ID, 0, LIST_TEMPLATE_ID.Length); result.Write(t = IntToByteArray(document.GetRandomInt()), 0, t.Length); int levelsToWrite = -1; switch (this.listType) { case LIST_TYPE_NORMAL: levelsToWrite = listLevels.Count; break; case LIST_TYPE_SIMPLE: result.Write(LIST_SIMPLE, 0, LIST_SIMPLE.Length); result.Write(t = IntToByteArray(1), 0, t.Length); levelsToWrite = 1; break; case LIST_TYPE_HYBRID: result.Write(LIST_HYBRID, 0, LIST_HYBRID.Length); levelsToWrite = listLevels.Count; break; default: break; } this.document.OutputDebugLinebreak(result); // TODO: Figure out hybrid because multi-level hybrid does not work. // Seems hybrid is mixed type all single level - Simple = single level // SIMPLE1/HYRBID // 1. Line 1 // 2. Line 2 // MULTI-LEVEL LISTS Are Simple0 - 9 levels (0-8) all single digit // 1. Line 1 // 1.1. Line 1.1 // 1.2. Line 1.2 // 2. Line 2 // write the listlevels here for (int i = 0; i < levelsToWrite; i++) { ((RtfListLevel)listLevels[i]).WriteDefinition(result); this.document.OutputDebugLinebreak(result); } result.Write(LIST_ID, 0, LIST_ID.Length); result.Write(t = IntToByteArray(this.listID), 0, t.Length); result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); this.document.OutputDebugLinebreak(result); if (items != null) { for (int i = 0; i < items.Count; i++) { RtfElement rtfElement = (RtfElement)items[i]; if (rtfElement is RtfList) { RtfList rl = (RtfList)rtfElement; rl.WriteDefinition(result); break; } else if (rtfElement is RtfListItem) { RtfListItem rli = (RtfListItem)rtfElement; if (rli.WriteDefinition(result)) { break; } } } } }
/// <summary> /// Writes the definition part of this list level /// @throws IOException /// @since 2.1.3 /// </summary> /// <param name="result"></param> public void WriteDefinition(Stream result) { byte[] t; result.Write(OpenGroup, 0, OpenGroup.Length); result.Write(_list, 0, _list.Length); result.Write(_listTemplateId, 0, _listTemplateId.Length); result.Write(t = IntToByteArray(Document.GetRandomInt()), 0, t.Length); int levelsToWrite = -1; switch (_listType) { case LIST_TYPE_NORMAL: levelsToWrite = _listLevels.Count; break; case LIST_TYPE_SIMPLE: result.Write(_listSimple, 0, _listSimple.Length); result.Write(t = IntToByteArray(1), 0, t.Length); levelsToWrite = 1; break; case LIST_TYPE_HYBRID: result.Write(_listHybrid, 0, _listHybrid.Length); levelsToWrite = _listLevels.Count; break; default: break; } Document.OutputDebugLinebreak(result); // TODO: Figure out hybrid because multi-level hybrid does not work. // Seems hybrid is mixed type all single level - Simple = single level // SIMPLE1/HYRBID // 1. Line 1 // 2. Line 2 // MULTI-LEVEL LISTS Are Simple0 - 9 levels (0-8) all single digit // 1. Line 1 // 1.1. Line 1.1 // 1.2. Line 1.2 // 2. Line 2 // write the listlevels here for (int i = 0; i < levelsToWrite; i++) { ((RtfListLevel)_listLevels[i]).WriteDefinition(result); Document.OutputDebugLinebreak(result); } result.Write(ListId, 0, ListId.Length); result.Write(t = IntToByteArray(_listId), 0, t.Length); result.Write(CloseGroup, 0, CloseGroup.Length); Document.OutputDebugLinebreak(result); if (_items != null) { for (int i = 0; i < _items.Count; i++) { RtfElement rtfElement = (RtfElement)_items[i]; if (rtfElement is RtfList) { RtfList rl = (RtfList)rtfElement; rl.WriteDefinition(result); break; } else if (rtfElement is RtfListItem) { RtfListItem rli = (RtfListItem)rtfElement; if (rli.WriteDefinition(result)) { break; } } } } }
/** * Writes the content of the RtfList * * @return A byte array containing the actual content of the RtfList */ public override byte[] Write() { MemoryStream result = new MemoryStream(); try { byte[] t; result.Write(t = WriteListBeginning(), 0, t.Length); result.Write(t = WriteListNumbers(), 0, t.Length); result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); int itemNr = 0; for (int i = 0; i < items.Count; i++) { RtfElement rtfElement = (RtfElement)items[i]; if (rtfElement is RtfListItem) { itemNr++; result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST_TEXT, 0, LIST_TEXT.Length); result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length); if (this.inTable) { result.Write(RtfParagraph.IN_TABLE, 0, RtfParagraph.IN_TABLE.Length); } result.Write(ST.RtfFontList.FONT_NUMBER, 0, ST.RtfFontList.FONT_NUMBER.Length); if (numbered) { result.Write(t = IntToByteArray(fontNumber.GetFontNumber()), 0, t.Length); } else { result.Write(t = IntToByteArray(fontBullet.GetFontNumber()), 0, t.Length); } result.Write(t = WriteIndentations(), 0, t.Length); result.Write(DELIMITER, 0, DELIMITER.Length); if (numbered) { result.Write(t = this.IntToByteArray(itemNr), 0, t.Length); result.Write(LIST_NUMBER_END, 0, LIST_NUMBER_END.Length); } else { result.Write(LIST_BULLET, 0, LIST_BULLET.Length); } result.Write(TAB, 0, TAB.Length); result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); result.Write(t = rtfElement.Write(), 0, t.Length); result.Write(RtfParagraph.PARAGRAPH, 0, RtfParagraph.PARAGRAPH.Length); if (((RtfListItem)rtfElement).IsContainsInnerList()) { result.Write(t = WriteListNumbers(), 0, t.Length); } result.WriteByte((byte)'\n'); } else if (rtfElement is RtfList) { result.Write(t = rtfElement.Write(), 0, t.Length); result.Write(t = WriteListBeginning(), 0, t.Length); result.WriteByte((byte)'\n'); } } result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); if (!this.inTable) { result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length); } } catch (IOException) { } return(result.ToArray()); }
/** * Writes the definition part of this list level * * @return A byte array containing the definition of this list level */ public byte[] WriteDefinition() { MemoryStream result = new MemoryStream(); try { byte[] t; result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST_LEVEL, 0, LIST_LEVEL.Length); result.Write(LIST_LEVEL_TYPE, 0, LIST_LEVEL_TYPE.Length); if (numbered) { result.Write(t = IntToByteArray(0), 0, t.Length); } else { result.Write(t = IntToByteArray(23), 0, t.Length); } result.Write(LIST_LEVEL_TYPE_NEW, 0, LIST_LEVEL_TYPE_NEW.Length); if (numbered) { result.Write(t = IntToByteArray(0), 0, t.Length); } else { result.Write(t = IntToByteArray(23), 0, t.Length); } result.Write(LIST_LEVEL_ALIGNMENT, 0, LIST_LEVEL_ALIGNMENT.Length); result.Write(t = IntToByteArray(0), 0, t.Length); result.Write(LIST_LEVEL_ALIGNMENT_NEW, 0, LIST_LEVEL_ALIGNMENT_NEW.Length); result.Write(t = IntToByteArray(0), 0, t.Length); result.Write(LIST_LEVEL_START_AT, 0, LIST_LEVEL_START_AT.Length); result.Write(t = IntToByteArray(1), 0, t.Length); result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST_LEVEL_TEXT, 0, LIST_LEVEL_TEXT.Length); if (numbered) { result.Write(LIST_LEVEL_STYLE_NUMBERED_BEGIN, 0, LIST_LEVEL_STYLE_NUMBERED_BEGIN.Length); if (listLevel < 10) { result.Write(t = IntToByteArray(0), 0, t.Length); } result.Write(t = IntToByteArray(listLevel), 0, t.Length); result.Write(LIST_LEVEL_STYLE_NUMBERED_END, 0, LIST_LEVEL_STYLE_NUMBERED_END.Length); } else { result.Write(LIST_LEVEL_STYLE_BULLETED, 0, LIST_LEVEL_STYLE_BULLETED.Length); } result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST_LEVEL_NUMBERS_BEGIN, 0, LIST_LEVEL_NUMBERS_BEGIN.Length); if (numbered) { result.Write(LIST_LEVEL_NUMBERS_NUMBERED, 0, LIST_LEVEL_NUMBERS_NUMBERED.Length); } result.Write(LIST_LEVEL_NUMBERS_END, 0, LIST_LEVEL_NUMBERS_END.Length); result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); result.Write(ST.RtfFontList.FONT_NUMBER, 0, ST.RtfFontList.FONT_NUMBER.Length); if (numbered) { result.Write(t = IntToByteArray(fontNumber.GetFontNumber()), 0, t.Length); } else { result.Write(t = IntToByteArray(fontBullet.GetFontNumber()), 0, t.Length); } result.Write(t = WriteIndentations(), 0, t.Length); result.Write(LIST_LEVEL_SYMBOL_INDENT, 0, LIST_LEVEL_SYMBOL_INDENT.Length); result.Write(t = IntToByteArray(this.leftIndent), 0, t.Length); result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); result.WriteByte((byte)'\n'); for (int i = 0; i < items.Count; i++) { RtfElement rtfElement = (RtfElement)items[i]; if (rtfElement is RtfList) { result.Write(t = ((RtfList)rtfElement).WriteDefinition(), 0, t.Length); break; } else if (rtfElement is RtfListItem) { byte[] data = ((RtfListItem)rtfElement).WriteDefinition(); if (data.Length > 0) { result.Write(data, 0, data.Length); break; } } } } catch (IOException) { } return(result.ToArray()); }