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; }
public override bool HandleControlWord(RtfCtrlWordData ctrlWordData) { bool result = true; bool skipCtrlWord = false; if (this.rtfParser.IsImport()) { skipCtrlWord = true; if (ctrlWordData.ctrlWord.Equals("listtable")) { result = true; this.currentListMappingNumber = 0; } else /* Picture info for icons/images for lists */ if (ctrlWordData.ctrlWord.Equals("listpicture"))/* DESTINATION */{ skipCtrlWord = true; // this.rtfParser.SetTokeniserStateSkipGroup(); result = true; } else /* list */ if (ctrlWordData.ctrlWord.Equals("list")) /* DESTINATION */{ skipCtrlWord = true; this.newList = new RtfList(this.rtfParser.GetRtfDocument()); this.newList.SetListType(RtfList.LIST_TYPE_NORMAL); // set default this.currentLevel = -1; this.currentListMappingNumber++; this.currentSubGroupCount = 0; result = true; } else if (ctrlWordData.ctrlWord.Equals("listtemplateid")) /* // List item*/ { // ignore this because it gets regenerated in every document skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("listsimple")) /* // List item*/ { // is value 0 or 1 if (ctrlWordData.hasParam && ctrlWordData.param == "1") { this.newList.SetListType(RtfList.LIST_TYPE_SIMPLE); } else { this.newList.SetListType(RtfList.LIST_TYPE_NORMAL); } skipCtrlWord = true; result = true; // this gets set internally. Don't think it should be imported } else if (ctrlWordData.ctrlWord.Equals("listhybrid")) /* // List item*/ { this.newList.SetListType(RtfList.LIST_TYPE_HYBRID); skipCtrlWord = true; result = true; // this gets set internally. Don't think it should be imported } else if (ctrlWordData.ctrlWord.Equals("listrestarthdn")) /* // List item*/ { skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("listid")) { // List item cannot be between -1 and -5 // needs to be mapped for imports and is recreated // we have the new id and the old id. Just add it to the mapping table here. skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("listname"))/* // List item*/ { this.newList.SetName(ctrlWordData.param); skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("liststyleid"))/* // List item*/ { skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("liststylename"))/* // List item*/ { skipCtrlWord = true; result = true; } else /* listlevel */ if (ctrlWordData.ctrlWord.Equals("listlevel")) /* DESTINATION There are 1 or 9 listlevels per list */{ this.currentLevel++; this.currentListLevel = this.newList.GetListLevel(this.currentLevel); this.currentListLevel.SetTentative(false); skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("leveljc")) { // listlevel item justify // this is the old number. Only use it if the current type is not set if ( this.currentListLevel.GetAlignment()== RtfListLevel.LIST_TYPE_UNKNOWN) { switch (ctrlWordData.IntValue()) { case 0: this.currentListLevel.SetAlignment(Element.ALIGN_LEFT); break; case 1: this.currentListLevel.SetAlignment(Element.ALIGN_CENTER); break; case 2: this.currentListLevel.SetAlignment(Element.ALIGN_RIGHT); break; } } skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("leveljcn")) { // listlevel item //justify // if this exists, use it and it overrides the old setting switch (ctrlWordData.IntValue()) { case 0: this.currentListLevel.SetAlignment(Element.ALIGN_LEFT); break; case 1: this.currentListLevel.SetAlignment(Element.ALIGN_CENTER); break; case 2: this.currentListLevel.SetAlignment(Element.ALIGN_RIGHT); break; } skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelstartat")) { this.currentListLevel.SetListStartAt(ctrlWordData.IntValue()); skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("lvltentative")) { this.currentListLevel.SetTentative(true); skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelold")) { // old style. ignore skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelprev")) { // old style. ignore skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelprevspace")) { // old style. ignore skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelspace")) { skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelindent")) { skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("leveltext")) {/* FIX */ skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelfollow")) { this.currentListLevel.SetLevelFollowValue(ctrlWordData.IntValue()); skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levellegal")) { this.currentListLevel.SetLegal(ctrlWordData.param=="1"?true:false); skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelnorestart")) { skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("chrfmt")) {/* FIX */ // set an attribute pair skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelpicture")) { skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("li")) { // set an attribute pair skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("fi")) { // set an attribute pair skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("jclisttab")) { // set an attribute pair skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("tx")) { // set an attribute pair skipCtrlWord = true; result = true; } else /* number */ if (ctrlWordData.ctrlWord.Equals("levelnfc")) /* old style */ { if ( this.currentListLevel.GetListType()== RtfListLevel.LIST_TYPE_UNKNOWN) { this.currentListLevel.SetListType(ctrlWordData.IntValue()+RtfListLevel.LIST_TYPE_BASE); } skipCtrlWord = true; result = true; } else if (ctrlWordData.ctrlWord.Equals("levelnfcn")) /* new style takes priority over levelnfc.*/ { this.currentListLevel.SetListType(ctrlWordData.IntValue()+RtfListLevel.LIST_TYPE_BASE); skipCtrlWord = true; result = true; } else /* level text */ if (ctrlWordData.ctrlWord.Equals("leveltemplateid")) { // ignore. this value is regenerated in each document. skipCtrlWord = true; result = true; } else /* levelnumber */ if (ctrlWordData.ctrlWord.Equals("levelnumbers")) { skipCtrlWord = true; result = true; } } if (this.rtfParser.IsConvert()) { if (ctrlWordData.ctrlWord.Equals("shppict")) { result = true; } if (ctrlWordData.ctrlWord.Equals("nonshppict")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true; } } if (!skipCtrlWord) { switch (this.rtfParser.GetConversionType()) { case RtfParser.TYPE_IMPORT_FULL: // WriteBuffer(); // WriteText(ctrlWordData.ToString()); result = true; break; case RtfParser.TYPE_IMPORT_FRAGMENT: // WriteBuffer(); // WriteText(ctrlWordData.ToString()); result = true; break; case RtfParser.TYPE_CONVERT: result = true; break; default: // error because is should be an import or convert result = false; break; } } return result; }
/** * @param parentList the parentList to set * @since 2.1.3 */ public void SetParentList(RtfList parentList) { this.parentList = parentList; }
/** * Imports a stylesheet list value. The stylesheet number for the stylesheet defined * is determined and then the resulting mapping is added. */ public bool ImportStylesheetList(String listNr, Legacy.Text.List listIn) { var rtfList = new RtfList(this.rtfDoc, listIn); rtfList.SetRtfDocument(this.rtfDoc); return true; }
/** * @param parent the parent to set */ public void SetParent(RtfList parent) { this.parent = parent; }
/** * Gets the number of the specified RtfList * * @param list The RtfList for which to get the number * @return The number of the list */ public int GetListNumber(RtfList list) { return this.listTable.GetListNumber(list); }
/** * Removes a RtfList from the list table * * @param list The RtfList to remove */ public void FreeListNumber(RtfList list) { this.listTable.FreeListNumber(list); }
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))); }
/** * 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 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; } } } } }