Exemple #1
0
        private JB2Image ReadCompressedImage()
        {
            using (DjvuReader reader = Reader.CloneReader(_dataLocation, Length))
            {
                JB2Image image = new JB2Image();

                JB2.JB2Dictionary includedDictionary = null;

                if (Parent is FormChunk)
                {
                    InclChunk[] includes = ((FormChunk)Parent).IncludedItems;

                    if (includes != null && includes.Count() > 0)
                    {
                        string includeID   = includes.FirstOrDefault().IncludeID;
                        var    includeItem = Document.GetChunkByID <DjbzChunk>(includeID);

                        if (includeItem != null)
                        {
                            includedDictionary = includeItem.ShapeDictionary;
                        }
                    }
                }

                image.Decode(reader, includedDictionary);

                return(image);
            }
        }
Exemple #2
0
        public void ShapeDictionaryTest()
        {
            Mock <IDjvuReader> readerMock = new Mock <IDjvuReader>();

            readerMock.Setup(x => x.Position).Returns(1024);

            DjbzChunk unk = new DjbzChunk(readerMock.Object, null, null, null, 0);

            Assert.Equal <ChunkType>(ChunkType.Djbz, unk.ChunkType);
            Assert.Equal(ChunkType.Djbz.ToString(), unk.Name);
            Assert.Equal <long>(1024, unk.DataOffset);

            JB2.JB2Dictionary dictionary = new JB2.JB2Dictionary();
            unk.ShapeDictionary = dictionary;
            Assert.NotNull(unk.ShapeDictionary);
            Assert.Same(dictionary, unk.ShapeDictionary);
        }
Exemple #3
0
        internal JB2Image ReadCompressedImage()
        {
            using (IDjvuReader reader = Reader.CloneReaderToMemory(DataOffset, Length))
            {
                JB2Image          image = new JB2Image();
                JB2.JB2Dictionary includedDictionary = null;

                if (Parent is DjvuChunk djvuChunk)
                {
                    IReadOnlyList <InclChunk> includes = djvuChunk.IncludedItems;

                    if (includes?.Count > 0)
                    {
                        var includeIDs = includes
                                         .Where <InclChunk>(x => x.ChunkType == ChunkType.Incl);
                        var       root     = Document.RootForm as DjvmChunk;
                        DjbzChunk djbzItem = null;

                        foreach (InclChunk iChunk in includeIDs)
                        {
                            DirmComponent component = root?.Dirm.Components
                                                      .Where <DirmComponent>(x => x.ID == iChunk.IncludeID).FirstOrDefault();

                            var includeForm = root.Includes
                                              .FirstOrDefault <IDjviChunk>(x => x.DataOffset == (component.Offset + 12));

                            djbzItem = includeForm?.Children
                                       .FirstOrDefault(x => x.ChunkType == ChunkType.Djbz) as DjbzChunk;

                            if (djbzItem != null)
                            {
                                break;
                            }
                        }

                        includedDictionary = djbzItem?.ShapeDictionary;
                    }
                }

                image.Decode(reader, includedDictionary);

                return(image);
            }
        }
Exemple #4
0
        internal JB2Image ReadCompressedImage()
        {
            using (IDjvuReader reader = Reader.CloneReaderToMemory(DataOffset, Length))
            {
                JB2Image          image = new JB2Image();
                JB2.JB2Dictionary includedDictionary = null;
                DjvuChunk         djvuChunk          = Parent as DjvuChunk;

                if (djvuChunk != null)
                {
                    var includes = djvuChunk.IncludedItems;

                    if (includes?.Count > 0)
                    {
                        string includeID = includes
                                           .FirstOrDefault <InclChunk>(x => x.ChunkType == ChunkType.Incl)?.IncludeID;
                        DjvmChunk     root      = Document.RootForm as DjvmChunk;
                        DirmComponent component = root?.Dirm.Components
                                                  .Where <DirmComponent>(x => x.ID == includeID).FirstOrDefault();

                        var includeForm =
                            root.Includes
                            .Where(x => x.DataOffset == (component.Offset + 12))
                            .FirstOrDefault <IDjviChunk>();

                        var djbzItem = includeForm?.Children
                                       .Where <IDjvuNode>(x => x.ChunkType == ChunkType.Djbz).FirstOrDefault() as DjbzChunk;

                        includedDictionary = djbzItem?.ShapeDictionary;
                    }
                }

                image.Decode(reader, includedDictionary);

                return(image);
            }
        }