Esempio n. 1
0
        public TextObject CreateTextObject(ushort textAttributeId)
        {
            m_PageBuffer.putTag(TagId.EndPage);

            int len = (int)m_PageBuffer.Position;

            byte[] output = new byte[len];

            Array.Copy(m_PageBuffer.GetBuffer(), output, len);

            TextObject obj = new TextObject(m_wTextBlockId);

            obj.Tags.Add(new UInt32Tag(TagId.Link, textAttributeId));
            obj.Data = output;

            return(obj);
        }
Esempio n. 2
0
        public void AddTextPage(LegacyBBeBObject text)
        {
            // font size?? para.addTag( 0x11, 80);
            text.AddTagInt(TagId.Link, m_nFontRecordId);

            /* The text goes into a bounding box */
            BBeByteBuffer boxData = new BBeByteBuffer();

            boxData.putTagInt(TagId.Link, text.m_Id);

            LegacyBBeBObject box = new LegacyBBeBObject(this, ObjectType.Block, ObjectFlags.NONE, boxData);

            box.AddTagInt(TagId.Link, m_nPageBoxId);

            // add_tag_to_subfile(box,new_tag(0x31,sizeof(WORD),0,600));
            // add_tag_to_subfile(box,new_tag(0x32,sizeof(WORD),0,800));
            // add_tag_to_subfile(box,new_tag(0x33,sizeof(WORD),0,0x22));

            BBeByteBuffer pageFiles = new BBeByteBuffer();

            pageFiles.putShort(3);
            pageFiles.putInt(m_nFontRecordId);
            pageFiles.putInt(text.m_Id);
            pageFiles.putInt(box.m_Id);

            BBeByteBuffer pageData = new BBeByteBuffer();

            pageData.putTagInt(TagId.Link, box.m_Id);

            LegacyBBeBObject page = new LegacyBBeBObject(this, ObjectType.Page, ObjectFlags.NONE, pageData);

            page.AddTagInt(TagId.ParentPageTree, m_BookFile.m_Id);
            page.AddTag(TagId.PageObjectIds, pageFiles.GetBuffer(), (int)pageFiles.Length);
            page.AddTagInt(TagId.Link, m_nMarginsId);

            // We make the layout big so paragraphs can break over display pages
            // We don't really understand the format of the PAGE_LAYOUT object info
            // object yet.
            byte[] layoutData = new byte[24];
            ByteBuffer.PackInt(layoutData, 0, 1);
            ByteBuffer.PackInt(layoutData, 4, box.m_Id);
            LegacyBBeBObject physicalPages = new LegacyBBeBObject(this, ObjectType.ObjectInfo,
                                                                  ObjectFlags.PAGE_LAYOUT, layoutData);

            page.AddTagInt(TagId.ObjectInfoLink, physicalPages.m_Id);

            m_nNumPages++;
        }
Esempio n. 3
0
        public void WriteToFile(String name)
        {
            FileMode openMode = FileMode.OpenOrCreate;

            if (File.Exists(name))
            {
                openMode |= FileMode.Truncate;
            }
            FileStream fout = new FileStream(name, openMode);

            try
            {
                fout.Write(m_FileData.GetBuffer(), 0, (int)m_FileData.Length);
            }
            finally
            {
                fout.Close();
            }
        }
Esempio n. 4
0
        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++;
        }