public RtfListLevel(RtfDocument doc, RtfList parent) : base(doc) { this.parent = parent; templateID = document.GetRandomInt(); SetFontNumber(new RtfFont(document, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL, new Color(0, 0, 0)))); SetBulletFont(new Font(Font.SYMBOL, 10, Font.NORMAL, new Color(0, 0, 0))); }
/** * Remove a RtfList from the list of RtfLists * * @param list The RtfList to remove. */ public void FreeListNumber(RtfList list) { int i = lists.IndexOf(list); if (i >= 0) { lists.RemoveAt(i); } }
/** * Gets the id of the specified RtfList. If the RtfList is not yet in the * list of RtfLists, then it is added. * * @param list The RtfList for which to get the id. * @return The id of the RtfList. */ public int GetListNumber(RtfList list) { if (lists.Contains(list)) { return(lists.IndexOf(list)); } else { lists.Add(list); return(lists.Count); } }
/** * Writes the definition of the first element in this RtfListItem that is * an is {@link RtfList} to the given stream.<br> * If this item does not contain a {@link RtfList} element nothing is written * and the method returns <code>false</code>. * * @param out destination stream * @return <code>true</code> if a RtfList definition was written, <code>false</code> otherwise * @throws IOException * @see {@link RtfList#writeDefinition(Stream)} */ public bool WriteDefinition(Stream outp) { for (int i = 0; i < chunks.Count; i++) { IRtfBasicElement rtfElement = (IRtfBasicElement)chunks[i]; if (rtfElement is RtfList) { RtfList rl = (RtfList)rtfElement; rl.WriteDefinition(outp); return(true); } } return(false); }
/** * Writes the list and list override tables. */ public virtual void WriteDefinition(Stream result) { byte[] t; result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST_TABLE, 0, LIST_TABLE.Length); this.document.OutputDebugLinebreak(result); for (int i = 0; i < picturelists.Count; i++) { RtfPictureList l = (RtfPictureList)picturelists[i]; // l.SetID(document.GetRandomInt()); l.WriteDefinition(result); this.document.OutputDebugLinebreak(result); } for (int i = 0; i < lists.Count; i++) { RtfList l = (RtfList)lists[i]; l.SetID(document.GetRandomInt()); l.WriteDefinition(result); this.document.OutputDebugLinebreak(result); } result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); this.document.OutputDebugLinebreak(result); result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST_OVERRIDE_TABLE, 0, LIST_OVERRIDE_TABLE.Length); this.document.OutputDebugLinebreak(result); // list override index values are 1-based, not 0. // valid list override index values \ls are 1 to 2000. // if there are more then 2000 lists, the result is undefined. for (int i = 0; i < lists.Count; i++) { result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length); result.Write(LIST_OVERRIDE, 0, LIST_OVERRIDE.Length); result.Write(RtfList.LIST_ID, 0, RtfList.LIST_ID.Length); result.Write(t = IntToByteArray(((RtfList)lists[i]).GetID()), 0, t.Length); result.Write(LIST_OVERRIDE_COUNT, 0, LIST_OVERRIDE_COUNT.Length); result.Write(t = IntToByteArray(0), 0, t.Length); // is this correct? Spec says valid values are 1 or 9. result.Write(RtfList.LIST_NUMBER, 0, RtfList.LIST_NUMBER.Length); result.Write(t = IntToByteArray(((RtfList)lists[i]).GetListNumber()), 0, t.Length); result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); this.document.OutputDebugLinebreak(result); } result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length); this.document.OutputDebugLinebreak(result); }
public RtfListLevel(RtfListLevel ll) : base(ll.document) { templateID = document.GetRandomInt(); this.alignment = ll.alignment; this.bulletCharacter = ll.bulletCharacter; this.firstIndent = ll.firstIndent; this.fontBullet = ll.fontBullet; this.fontNumber = ll.fontNumber; this.inHeader = ll.inHeader; this.inTable = ll.inTable; this.leftIndent = ll.leftIndent; this.listLevel = ll.listLevel; this.listNoRestart = ll.listNoRestart; this.listStartAt = ll.listStartAt; this.listType = ll.listType; this.parent = ll.parent; this.rightIndent = ll.rightIndent; this.symbolIndent = ll.symbolIndent; }
/** * @param parentList the parentList to set * @since 2.1.3 */ public void SetParentList(RtfList parentList) { this.parentList = parentList; }
/** * 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; } } } } }
/** * @param parent the parent to set */ public void SetParent(RtfList parent) { this.parent = parent; }