public void Palette_Theory(string file, DjvuJsonDocument doc) { byte[] buffer = null; using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { buffer = new byte[fs.Length]; int result = fs.Read(buffer, 0, buffer.Length); Assert.Equal <long>(fs.Length, result); } Mock <IDjvuDocument> docMock = new Mock <IDjvuDocument>(); Mock <IDjvuElement> parentMock = new Mock <IDjvuElement>(); IDjvuElement parent = parentMock.Object; IDjvuDocument document = docMock.Object; using (MemoryStream ms = new MemoryStream(buffer, false)) using (IDjvuReader reader = new DjvuReader(ms)) { FGbzChunk chunk = new FGbzChunk(reader, parent, document, "FGBZ", buffer.Length); Assert.False(chunk.IsInitialized); var testChunk = doc.Data.Pages[0].Children .Where(x => x.ID == "FGbz") .FirstOrDefault <DjvuJsonDocument.Chunk>(); Assert.Equal <int>((int)testChunk?.Version.Value, chunk.Version); Assert.Equal <int>((int)testChunk.Colors.Value, (int)chunk.Palette?.PaletteColors?.Length); } }
public void FGbzChunkTest002() { FGbzChunk chunk = new FGbzChunk(); Assert.Equal <ChunkType>(ChunkType.FGbz, chunk.ChunkType); Assert.Equal("FGbz", chunk.Name); }
public void ColorPalette001() { string filePath = Path.Combine(Util.ArtifactsDataPath, "test003C_P01.fgbz"); using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) using (DjvuReader reader = new DjvuReader(stream)) { FGbzChunk th = new FGbzChunk(reader, null, null, "FGBZ", stream.Length); Assert.Equal <ChunkType>(ChunkType.FGbz, th.ChunkType); Assert.Equal(stream.Length, th.Length); var palette = th.Palette; Assert.NotNull(palette); Assert.IsType <ColorPalette>(palette); Assert.False(th.HasShapeTableData); reader.Position = 0; var colPal = new ColorPalette(reader, th); th.Palette = colPal; var palette2 = th.Palette; Assert.NotNull(palette2); Assert.IsType <ColorPalette>(palette2); Assert.NotSame(palette, palette2); Assert.Same(palette2, colPal); } }
public void ReadDataTest() { Mock <IDjvuReader> readerMock = new Mock <IDjvuReader>(); readerMock.SetupAllProperties(); readerMock.Object.Position = 1024; Mock <IDjvuDocument> docMock = new Mock <IDjvuDocument>(); Mock <IDjvuElement> parentMock = new Mock <IDjvuElement>(); IDjvuReader reader = readerMock.Object; IDjvuElement parent = parentMock.Object; IDjvuDocument document = docMock.Object; FGbzChunk chunk = new FGbzChunk(reader, parent, document, "FGBZ", 2048); Assert.False(chunk.IsInitialized); chunk.ReadData(reader); long positionSum = chunk.DataOffset + chunk.Length; Assert.Equal <long>(reader.Position, positionSum); }
public void FGbzChunkTest001() { Mock <IDjvuReader> readerMock = new Mock <IDjvuReader>(); readerMock.Setup <long>(x => x.Position).Returns(1024); // readerMock.SetupAllProperties(); Mock <IDjvuDocument> docMock = new Mock <IDjvuDocument>(); Mock <IDjvuElement> parentMock = new Mock <IDjvuElement>(); IDjvuReader reader = readerMock.Object; IDjvuElement parent = parentMock.Object; IDjvuDocument document = docMock.Object; FGbzChunk chunk = new FGbzChunk(reader, parent, document, "FGBZ", 2048); Assert.False(chunk.IsInitialized); Assert.Equal <long>(1024, chunk.DataOffset); Assert.Equal <long>(2048, chunk.Length); Assert.Same(reader, chunk.Reader); Assert.Same(parent, chunk.Parent); Assert.Same(document, chunk.Document); }
public static IDjvuNode CreateEncodedDjvuNode(IDjvuWriter writer, IDjvuElement parent, ChunkType chunkType, long length) { IDjvuNode result = null; switch (chunkType) { case ChunkType.Djvm: result = new DjvmChunk(writer, parent, length); break; case ChunkType.Djvu: result = new DjvuChunk(writer, parent, length); break; case ChunkType.Djvi: result = new DjviChunk(writer, parent, length); break; case ChunkType.Thum: result = new ThumChunk(writer, parent, length); break; case ChunkType.Dirm: result = new DirmChunk(writer, parent, length); break; case ChunkType.Navm: result = new NavmChunk(writer, parent, length); break; case ChunkType.Anta: result = new AntaChunk(writer, parent, length); break; case ChunkType.Antz: result = new AntzChunk(writer, parent, length); break; case ChunkType.Txta: result = new TxtaChunk(writer, parent, length); break; case ChunkType.Txtz: result = new TxtzChunk(writer, parent, length); break; case ChunkType.Djbz: result = new DjbzChunk(writer, parent, length); break; case ChunkType.Sjbz: result = new SjbzChunk(writer, parent, length); break; case ChunkType.FG44: result = new FG44Chunk(writer, parent, length); break; case ChunkType.BG44: result = new BG44Chunk(writer, parent, length); break; case ChunkType.TH44: result = new TH44Chunk(writer, parent, length); break; case ChunkType.BM44: result = new BM44Chunk(writer, parent, length); break; case ChunkType.BM44Form: result = new BM44Form(writer, parent, length); break; case ChunkType.PM44: result = new PM44Chunk(writer, parent, length); break; case ChunkType.PM44Form: result = new PM44Form(writer, parent, length); break; case ChunkType.Wmrm: result = new WmrmChunk(writer, parent, length); break; case ChunkType.FGbz: result = new FGbzChunk(writer, parent, length); break; case ChunkType.Info: result = new InfoChunk(writer, parent, length); break; case ChunkType.Incl: result = new InclChunk(writer, parent, length); break; case ChunkType.BGjp: result = new BGjpChunk(writer, parent, length); break; case ChunkType.FGjp: result = new FGjpChunk(writer, parent, length); break; case ChunkType.Smmr: result = new SmmrChunk(writer, parent, length); break; default: throw new DjvuInvalidOperationException($"Chunk type is not supported in encoding. ChunkType: {chunkType}"); } return(result); }
/// <summary> /// Builds the appropriate chunk for the ID /// </summary> /// <returns></returns> public static IDjvuNode CreateDecodedDjvuNode(IDjvuReader reader, IDjvuDocument rootDocument, IDjvuElement parent, ChunkType chunkType, string chunkID = "", long length = 0) { IDjvuNode result = null; switch (chunkType) { case ChunkType.Djvm: result = new DjvmChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Djvu: result = new DjvuChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Djvi: result = new DjviChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Thum: result = new ThumChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Dirm: result = new DirmChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Navm: result = new NavmChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Anta: result = new AntaChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Antz: result = new AntzChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Txta: result = new TxtaChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Txtz: result = new TxtzChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Djbz: result = new DjbzChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Sjbz: result = new SjbzChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.FG44: result = new FG44Chunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.BG44: result = new BG44Chunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.TH44: result = new TH44Chunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.BM44: result = new BM44Chunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.BM44Form: result = new BM44Form(reader, parent, rootDocument, chunkID, length); break; case ChunkType.PM44: result = new PM44Chunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.PM44Form: result = new PM44Form(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Wmrm: result = new WmrmChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.FGbz: result = new FGbzChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Info: result = new InfoChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Incl: result = new InclChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.BGjp: result = new BGjpChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.FGjp: result = new FGjpChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Smmr: result = new SmmrChunk(reader, parent, rootDocument, chunkID, length); break; case ChunkType.Cida: result = new CidaChunk(reader, parent, rootDocument, chunkID, length); break; default: result = new UnknownChunk(reader, parent, rootDocument, chunkID, length); break; } return(result); }