/// <summary> /// Based on the current numbering creates and returns the appropriate ListItemNumberComponent along with a few other appropriate bits. /// </summary> /// <param name="item">The list item to build the Number component for</param> /// <param name="itemstyle">The full style of this list item</param> /// <param name="halign">The alignment as set, can be updated to explict item alignment</param> /// <param name="type">The current type of numbering</param> /// <param name="itemWidth">If an explicit width has been set then this is returned (otherwise -1)</param> /// <param name="text">If this item has explict text (e.g Definiton list) then this is returned, otherwise empty</param> /// <returns>The correct PDFListItemLabel for the item</returns> private Component BuildAListNumberComponent(ListItem item, Style itemstyle, ref HorizontalAlignment halign, out ListNumberingGroupStyle type, out PDFUnit itemWidth, out string text) { PDFListNumbering numbers = this.Component.Document.ListNumbering; type = numbers.CurrentGroup.Style; itemWidth = itemstyle.GetValue(StyleKeys.ListInsetKey, (PDFUnit)(-1)); text = itemstyle.GetValue(StyleKeys.ListLabelKey, string.Empty); halign = itemstyle.GetValue(StyleKeys.ListAlignmentKey, halign); ListItemLabel label; if (type == ListNumberingGroupStyle.Labels) { PDFListDefinitionItemLabel defn = new PDFListDefinitionItemLabel(); label = defn; } else if (type == ListNumberingGroupStyle.Bullet) { label = new PDFListBulletItemLabel(); } else { label = new ListItemLabel(); } label.StyleClass = item.StyleClass; return(label); }
/// <summary> /// Layout the entry item number and returns the height used by the item number. /// </summary> /// <param name="entry">The entry whose number should be laid out</param> /// <returns></returns> private PDFUnit LayoutItemNumber(ListNumberEntry entry, Style fullstyle) { ListItem item = entry.ListItem; PDFUnit avail = _itemblock.CurrentRegion.AvailableHeight; ListItemLabel literal = (ListItemLabel)entry.NumberComponent; Style applied = literal.GetAppliedStyle(); if (null != applied) { this.StyleStack.Push(applied); fullstyle = this.StyleStack.GetFullStyle(literal); } //Get the text of the next number if (string.IsNullOrEmpty(entry.NumberText)) { literal.Text = this.Component.Document.ListNumbering.Increment(); } else { literal.Text = entry.NumberText; } //Set the list items label reference for future use if required. item.ItemLabelComponent = entry.NumberComponent; //Actually layout the item in the region this.DoLayoutAChild(item.ItemLabelComponent, fullstyle); this._itemblock.CurrentRegion.CloseCurrentItem(); // Calculate the height used and return PDFUnit newAvail = _itemblock.CurrentRegion.AvailableHeight; PDFUnit used = avail - newAvail; if (null != applied) { this.StyleStack.Pop(); } return(used); }
static StandardElementMapping() { foObjs = new Hashtable(); // Declarations and Pagination and Layout Formatting Objects foObjs.Add("root", Root.GetMaker()); foObjs.Add("declarations", Declarations.GetMaker()); foObjs.Add("color-profile", ColorProfile.GetMaker()); foObjs.Add("page-sequence", PageSequence.GetMaker()); foObjs.Add("layout-master-set", LayoutMasterSet.GetMaker()); foObjs.Add("page-sequence-master", PageSequenceMaster.GetMaker()); foObjs.Add("single-page-master-reference", SinglePageMasterReference.GetMaker()); foObjs.Add("repeatable-page-master-reference", RepeatablePageMasterReference.GetMaker()); foObjs.Add("repeatable-page-master-alternatives", RepeatablePageMasterAlternatives.GetMaker()); foObjs.Add("conditional-page-master-reference", ConditionalPageMasterReference.GetMaker()); foObjs.Add("simple-page-master", SimplePageMaster.GetMaker()); foObjs.Add("region-body", RegionBody.GetMaker()); foObjs.Add("region-before", RegionBefore.GetMaker()); foObjs.Add("region-after", RegionAfter.GetMaker()); foObjs.Add("region-start", RegionStart.GetMaker()); foObjs.Add("region-end", RegionEnd.GetMaker()); foObjs.Add("flow", Flow.Flow.GetMaker()); foObjs.Add("static-content", StaticContent.GetMaker()); foObjs.Add("title", Title.GetMaker()); // Block-level Formatting Objects foObjs.Add("block", Block.GetMaker()); foObjs.Add("block-container", BlockContainer.GetMaker()); // Inline-level Formatting Objects foObjs.Add("bidi-override", BidiOverride.GetMaker()); foObjs.Add("character", Character.GetMaker()); foObjs.Add("initial-property-set", InitialPropertySet.GetMaker()); foObjs.Add("external-graphic", ExternalGraphic.GetMaker()); foObjs.Add("instream-foreign-object", InstreamForeignObject.GetMaker()); foObjs.Add("inline", Inline.GetMaker()); foObjs.Add("inline-container", InlineContainer.GetMaker()); foObjs.Add("leader", Leader.GetMaker()); foObjs.Add("page-number", PageNumber.GetMaker()); foObjs.Add("page-number-citation", PageNumberCitation.GetMaker()); // Formatting Objects for Tables foObjs.Add("table-and-caption", TableAndCaption.GetMaker()); foObjs.Add("table", Table.GetMaker()); foObjs.Add("table-column", TableColumn.GetMaker()); foObjs.Add("table-caption", TableCaption.GetMaker()); foObjs.Add("table-header", TableHeader.GetMaker()); foObjs.Add("table-footer", TableFooter.GetMaker()); foObjs.Add("table-body", TableBody.GetMaker()); foObjs.Add("table-row", TableRow.GetMaker()); foObjs.Add("table-cell", TableCell.GetMaker()); // Formatting Objects for Lists foObjs.Add("list-block", ListBlock.GetMaker()); foObjs.Add("list-item", ListItem.GetMaker()); foObjs.Add("list-item-body", ListItemBody.GetMaker()); foObjs.Add("list-item-label", ListItemLabel.GetMaker()); // Dynamic Effects: Link and Multi Formatting Objects foObjs.Add("basic-link", BasicLink.GetMaker()); foObjs.Add("multi-switch", MultiSwitch.GetMaker()); foObjs.Add("multi-case", MultiCase.GetMaker()); foObjs.Add("multi-toggle", MultiToggle.GetMaker()); foObjs.Add("multi-properties", MultiProperties.GetMaker()); foObjs.Add("multi-property-set", MultiPropertySet.GetMaker()); // Out-of-Line Formatting Objects foObjs.Add("float", Float.GetMaker()); foObjs.Add("footnote", Footnote.GetMaker()); foObjs.Add("footnote-body", FootnoteBody.GetMaker()); // Other Formatting Objects foObjs.Add("wrapper", Wrapper.GetMaker()); foObjs.Add("marker", Marker.GetMaker()); foObjs.Add("retrieve-marker", RetrieveMarker.GetMaker()); }