private void createDefaultAttributeObjects(ushort width, ushort height) { // Root Object BookAttrObject bookAttr = new BookAttrObject(GetNextObjId()); bookAttr.createDefaultTags(); m_Book.Objects.Add(bookAttr); m_Book.Header.dwRootObjectId = bookAttr.ID; // Create an empty table of contents. m_TocObject = new TocObject(GetNextObjId()); m_Book.Objects.Add(m_TocObject); m_Book.Header.dwTocObjectId = m_TocObject.ID; m_MainBodyTextAttr = new TextAttrObject(GetNextObjId()); m_MainBodyTextAttr.createDefaultTags(BlockAlignment.Left); m_Book.Objects.Add(m_MainBodyTextAttr); m_CenteredTextAttr = new TextAttrObject(GetNextObjId()); m_CenteredTextAttr.createDefaultTags(BlockAlignment.Center); m_Book.Objects.Add(m_CenteredTextAttr); // Fill this one in later need id now for the BookAttrObject m_PageTree = new PageTreeObject(GetNextObjId()); m_Book.Objects.Add(m_PageTree); bookAttr.Tags.Add(new UInt32Tag(TagId.ChildPageTree, m_PageTree.ID)); m_PageAttr = new PageAttrObject(GetNextObjId()); m_PageAttr.createDefaultTags(); m_Book.Objects.Add(m_PageAttr); m_BlockAttr = new BlockAttrObject(GetNextObjId()); m_BlockAttr.createDefaultTags(width, height); m_Book.Objects.Add(m_BlockAttr); }
private void ConnectPageTree(BBeB book) { Debug.WriteLineIf(s_bDebugMode, "Connecting page tree"); PageTreeObject pageTree = (PageTreeObject)book.FindFirstObject(typeof(PageTreeObject)); if (pageTree == null) { throw new InvalidBookException("Couldn't find the required PageTree object"); } UInt32ArrayTag pageListTag = (UInt32ArrayTag)pageTree.FindFirstTag(TagId.PageList); if (pageListTag == null) { throw new InvalidBookException("Couldn't find the required PageList tag"); } foreach (uint id in pageListTag.Value) { PageObject page = (PageObject)book.FindObject((ushort)id); if (page == null) { throw new InvalidBookException("Can't find page id " + id); } pageTree.Pages.Add(page); } }
private void writePages() { // Get the page tree PageTreeObject pageTree = null; foreach (BBeBObject obj in book.Objects) { if (obj.GetType() == typeof(PageTreeObject)) { pageTree = (PageTreeObject)obj; break; } } // If no page tree - nothing to do if (pageTree == null) { return; } start(); foreach (PageObject page in pageTree.Pages) { foreach (BBeBObject obj in page.Children) { startPage(); if (obj.GetType() == typeof(TextObject)) { write((TextObject)obj); } if (obj.GetType() == typeof(ImageObject)) { write((ImageObject)obj); } endPage(); } } finished(); }