protected void EndPage() { // // // // NOTE - Right now it looks like nobody is callint this routine // // // BBeByteBuffer pageFiles = new BBeByteBuffer(); pageFiles.putShort(3); pageFiles.putInt(m_nFontRecordId); BBeByteBuffer pageData = new BBeByteBuffer(); pageData.putTag(TagId.Link); BBeByteBuffer layoutData = new BBeByteBuffer(); layoutData.putInt(m_PageTextObjects.Count); List <LegacyBBeBObject> .Enumerator boxes = m_PageBoxObjects.GetEnumerator(); foreach (LegacyBBeBObject text in m_PageTextObjects) { LegacyBBeBObject box = boxes.Current; boxes.MoveNext(); pageFiles.putInt(text.m_Id); pageData.putInt(box.m_Id); layoutData.putInt(box.m_Id); } // We make the layout big so paragraphs can break over display pages LegacyBBeBObject physicalPages = new LegacyBBeBObject(this, ObjectType.ObjectInfo, ObjectFlags.PAGE_LAYOUT, layoutData); LegacyBBeBObject page = new LegacyBBeBObject(this, ObjectType.Page, ObjectFlags.NONE, pageData); page.AddTagInt(TagId.ObjectInfoLink, physicalPages.m_Id); page.AddTag(TagId.PageObjectIds, pageFiles.GetBuffer(), (int)pageFiles.Length); page.AddTagInt(TagId.Link, m_nMarginsId); // page.addTagInt(0x07, id); page.AddTagShort(TagId.HeadHeight, 0x34); page.AddTagShort(TagId.OddSideMargin, 0x37); page.AddTagShort(TagId.TextHeight, 800); page.AddTagShort(TagId.TextWidth, 600); page.AddTagShort(TagId.Layout, 0x34); page.AddTagInt(TagId.ParentPageTree, m_BookFile.m_Id); /* * <Object ID="0x00000034" offset = "16830" size = "324" name = * "ObjectType.Page"> <Tag ID= "0xf502" name= "*ObjectInfoLink" length= * "4"> 0x00003a22 </Tag> <Tag ID= "0xf50b" name= * "*ContainedObjectsList" length= "0"> <0b_5c count = "33"> 0x00000323 * 0x00001b74 0x0000032a 0x00001b78 0x00001b79 0x00000324 0x00001b77 * 0x00001b73 0x00000321 0x00001b72 0x00000326 0x00003a1e 0x00003a1d * 0x00000329 0x000030f3 0x0000031f 0x000030f1 0x00001b7a 0x00001b7c * 0x000030f2 0x00000322 0x00001b71 0x000039d4 0x00001b75 0x00000327 * 0x00001b76 0x00000320 0x00000328 0x00000325 0x0000032b 0x00001b7b * 0x000030f0 0x00001b7d </0b_5c> </Tag> <Tag ID= "0xf503" name= "*Link" * length= "4"> 0x00003a1c </Tag> <Tag ID= "0xf507" name= "Unknown_07" * length= "4"> 0x000039d4 </Tag> <Tag ID= "0xf522" name= "Unknown_22" * length= "2"> 0x0034 </Tag> <Tag ID= "0xf524" name= "Unknown_24" * length= "2"> 0x0037 </Tag> <Tag ID= "0xf525" name= "*PageHeight" * length= "2"> 0x0299 </Tag> <Tag ID= "0xf526" name= "*PageWidth" * length= "2"> 0x01e0 </Tag> <Tag ID= "0xf535" name= "Unknown_35" * length= "2"> 0x0034 </Tag> <Tag ID= "0xf57c" name= "*ParentPageTree" * length= "4"> 0x0000004d </Tag> <Object ID="0x000039d4" offset = * "2527901" size = "58" name = "ObjectType.Header"> <Tag ID= "0xf535" * name= "Unknown_35" length= "2"> 0x0034 </Tag> <Tag ID= "0xf534" name= * "Unknown_34" length= "4"> 0x000000ff </Tag> <Tag ID= "0xf536" name= * "Unknown_36" length= "2"> 0x0000 </Tag> <Tag ID= "0xf537" name= * "Unknown_37" length= "4"> 0x00000000 </Tag> <Tag ID= "0xf52e" name= * "Unknown_2E" length= "2"> 0x0001 </Tag> <Stream flags="0x0000"/> * <Stream length="10"/> 49f5000000001f030000 </Object> */ m_nNumPages++; }
public void BeginBook() { m_nNumPages = 0; LegacyBBeBObject head = new LegacyBBeBObject(this, ObjectType.BookAtr); // Root Object head.AddTagShort(TagId.RubyAlign, 0x0002); head.AddTagShort(TagId.RubyOverhang, 0x0000); head.AddTagShort(TagId.EmpDotsPosition, 0x0001); byte[] tmp78 = { 0, 0, 0, 0, 0x16, (byte)0xf5, 0, 0, 0x1, 0x30 }; head.AddTag(TagId.EmpDotsCode, tmp78); /* * head.addTagInt(0x78, 0); head.addTagInt(0x16, 0x30010000); */ head.AddTagShort(TagId.EmpLinePosition, 0x0002); head.AddTagShort(TagId.EmpLineMode, 0x0010); head.AddTagShort(TagId.SetWaitProp, 0x0002); byte[] empty = { 0x00, 0x00, 0x00, 0x00 }; LegacyBBeBObject temp = new LegacyBBeBObject(this, ObjectType.TOC, ObjectFlags.TOC_51, empty); // special // ? // UTF-16LE string containing font name byte[] fontname = { 22, 0, // 11 chars (byte)'I', 0, (byte)'W', 0, (byte)'A', 0, 0x0E, 0x66, (byte)'-', 0, 0x2D, 0x4E, 0x30, 0x7D, (byte)'N', 0, (byte)'-', 0, (byte)'e', 0, (byte)'b', 0 }; // Create Global font record for the file LegacyBBeBObject fontRecord = new LegacyBBeBObject(this, ObjectType.TextAtr); fontRecord.AddTagShort(TagId.RubyOverhang, 0x0000); fontRecord.AddTagShort(TagId.EmpDotsPosition, 0x0001); fontRecord.AddTagShort(TagId.EmpLinePosition, 0x0001); fontRecord.AddTagShort(TagId.EmpLineMode, 0x0000); fontRecord.AddTagShort(TagId.FontSize, LegacyBBeB.DefaultFontSize); fontRecord.AddTagShort(TagId.FontWidth, 0xfff6); fontRecord.AddTagShort(TagId.FontEscapement, 0x0000); fontRecord.AddTagShort(TagId.FontOrientation, 0x0000); fontRecord.AddTagShort(TagId.FontWeight, k_NormalFontWeight); fontRecord.AddTag(TagId.FontFacename, fontname); fontRecord.AddTagInt(TagId.TextColor, 0); fontRecord.AddTagInt(TagId.TextBgColor, 0x00ff); fontRecord.AddTagShort(TagId.WordSpace, 0x0019); fontRecord.AddTagShort(TagId.LetterSpace, 0x0000); fontRecord.AddTagShort(TagId.BaseLineSkip, 0x008c); fontRecord.AddTagShort(TagId.LineSpace, 0x000a); fontRecord.AddTagShort(TagId.ParIndent, m_wParagraphIndent); fontRecord.AddTagShort(TagId.ParSkip, m_wParagraphSkip); fontRecord.AddTagShort(TagId.LineWidth, 0x0002); fontRecord.AddTagInt(TagId.LineColor, 0); fontRecord.AddTagShort(TagId.BlockAlignment, (ushort)BlockAlignment.Left); fontRecord.AddTagShort(TagId.FontUnknownTwo, 0x0001); fontRecord.AddTagShort(TagId.FontUnknownThree, 0x0000); fontRecord.AddTagShort(TagId.RubyAlign, 0x0001); m_nFontRecordId = fontRecord.m_Id; // Fill this one in later need id now for head m_BookFile = new LegacyBBeBObject(this, ObjectType.PageTree); head.AddTagInt(TagId.ChildPageTree, m_BookFile.m_Id); // Margins LegacyBBeBObject margins = new LegacyBBeBObject(this, ObjectType.PageAtr); margins.AddTagShort(TagId.TopMargin, 0x0005); // 5 margins.AddTagShort(TagId.HeadHeight, 0x0035); // 53 margins.AddTagShort(TagId.HeadSep, 0x0005); // 5 margins.AddTagShort(TagId.OddSideMargin, 0x002a); // 42 margins.AddTagShort(TagId.EvenSideMargin, 0x002a); // 42 margins.AddTagShort(TagId.TextHeight, 0x02a2); // 674 margins.AddTagShort(TagId.TextWidth, 0x0204); // 516 margins.AddTagShort(TagId.FootSpace, 0x003a); // 58 margins.AddTagShort(TagId.FootHeight, 0x0035); // 53 margins.AddTagShort(TagId.Layout, 0x0034); // 52 margins.AddTagShort(TagId.PagePosition, 0x0000); margins.AddTagShort(TagId.SetEmptyView, 0x0001); margins.AddTagShort(TagId.SetWaitProp, 0x0002); byte[] sixBytes = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }; margins.AddTag(TagId.BGImageName, sixBytes); m_nMarginsId = margins.m_Id; LegacyBBeBObject pageBox = new LegacyBBeBObject(this, ObjectType.BlockAtr); pageBox.AddTagShort(TagId.BlockWidth, 600); pageBox.AddTagShort(TagId.BlockHeight, 800); pageBox.AddTagShort(TagId.BlockRule, 0x0012); pageBox.AddTagInt(TagId.BlockAttrUnknown1, 0x00ff); pageBox.AddTagShort(TagId.Layout, 0x0034); pageBox.AddTagShort(TagId.BlockAttrUnknown3, 0x0000); pageBox.AddTagInt(TagId.BlockAttrUnknown4, 0); pageBox.AddTagShort(TagId.BlockAttrUnknown0, 0x0001); pageBox.AddTagShort(TagId.BlockAttrUnknown5, 0x0000); pageBox.AddTagShort(TagId.BlockAttrUnknown6, 0x0000); pageBox.AddTag(TagId.BGImageName, sixBytes); m_nPageBoxId = pageBox.m_Id; }