public void BuildForegroundImage_Theory(int docNumber) { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(docNumber, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; var testImagePath = Path.Combine(Util.RepoRoot, "artifacts", "data", $"test{docNumber:00#}CFgnd.png"); DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.GetForegroundImage(1, true)) using (Bitmap testImage = new Bitmap(testImagePath)) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); if (image.Width != testImage.Width || image.Height != testImage.Height) { Assert.True(false, $"Unexpected image size differences. Width image: {image.Width} | testImage: {testImage.Width}, Height: image: {image.Height} | testImage {testImage.Height}"); } bool result = Util.CompareImagesForBinarySimilarity(testImage, image, 0.025, true, $"Testing Djvu foreground: \ttest{docNumber:00#}C.png, "); #if DUMP_IMAGES DumpImage(docNumber, image, "Fgnd"); #endif Assert.True(result); } } }
public void LoadTest078() { string file = Path.Combine(Util.ArtifactsPath, "test078C.djvu"); using (DjvuDocument document = new DjvuDocument()) { int hash = file.GetHashCode(); document.Load(file, hash); Assert.Equal(hash, document.Identifier); IDjvuPage page = document.ActivePage; PM44Chunk pmChunk = page.PageForm.Children[0] as PM44Chunk; Assert.IsType <PM44Chunk>(pmChunk); var img = pmChunk.Image; Assert.NotNull(img); var pixMap = new Wavelet.InterWavePixelMapDecoder(); pixMap = pmChunk.ProgressiveDecodeBackground(pixMap) as Wavelet.InterWavePixelMapDecoder; Assert.NotNull(pixMap); pmChunk = page.PageForm.Children[1] as PM44Chunk; Assert.NotNull(pmChunk); var pixMap2 = new Wavelet.InterWavePixelMapDecoder(); Assert.Throws <DjvuFormatException>(() => pmChunk.ProgressiveDecodeBackground(pixMap2)); // This time call will not throw pmChunk.ProgressiveDecodeBackground(pixMap); } }
public void Image003() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(3, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; var testImagePath = Path.Combine(Util.ArtifactsDataPath, "test003C.png"); DjvuImage djvuImage = page.Image as DjvuImage; using (var image = djvuImage.Image) using (Bitmap testImage = new Bitmap(testImagePath)) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); BitmapData data = image.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); BitmapData testData = testImage.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); bool result = Util.CompareImages(data, testData); image.UnlockBits(data); testImage.UnlockBits(testData); //image.Save(Path.Combine(Util.RepoRoot, "artifacts", "data", "dumps", "test003CImage003n.png")); //Assert.True(result); } } }
public void BuildMaskImage_Theory(int docNumber, double tolerance) { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(docNumber, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; var testImagePath = Path.Combine(Util.RepoRoot, "artifacts", "data", $"test{docNumber:00#}Cmask.png"); DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.GetMaskImage(1, true)) using (Bitmap testImage = new Bitmap(testImagePath)) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); using Bitmap invertedImage = DjvuImage.InvertImage(image); bool result = Util.CompareImagesForBinarySimilarity(testImage, invertedImage, tolerance, true, $"Testing Djvu mask: \t\ttest{docNumber:00#}C.png, "); #if DUMP_IMAGES DumpIage(docNumber, image, "Mask"); #endif Assert.True(result); } } }
public void BuildImage_Theory(int docNumber) { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(docNumber, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; var testImagePath = Path.Combine(Util.RepoRoot, "artifacts", "data", $"test{docNumber:00#}C.png"); DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.BuildImage()) using (Bitmap testImage = new Bitmap(testImagePath)) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); bool result = Util.CompareImagesForBinarySimilarity(testImage, image, docNumber == 75 ? 0.1485 : 0.0585, true, $"Testing Djvu image: \t\ttest{docNumber:00#}C.png, "); #if DUMP_IMAGES DumpImage(docNumber, image, "Img"); #endif Assert.True(result, $"Test failed: "); } } }
public void CreateBlankImageTest() { Mock <IDjvuPage> pageMock = new Mock <IDjvuPage>(); Mock <IDjvuDocument> documentMock = new Mock <IDjvuDocument>(); pageMock.Setup(x => x.Document).Returns(documentMock.Object); pageMock.Setup(x => x.Width).Returns(100); pageMock.Setup(x => x.Height).Returns(200); IDjvuPage page = pageMock.Object; DjvuImage image = new DjvuImage(page); Assert.Same(pageMock.Object, image.Page); Assert.Same(documentMock.Object, image.Document); using (Bitmap bitmap = image.CreateBlankImage(Brushes.White)) { Assert.Equal <int>(page.Width, bitmap.Width); Assert.Equal <int>(page.Height, bitmap.Height); Color c = bitmap.GetPixel(0, 0); Assert.Equal <byte>(0xff, c.A); Assert.Equal <byte>(0xff, c.B); Assert.Equal <byte>(0xff, c.G); Assert.Equal <byte>(0xff, c.R); } }
public DjvuImage(IDjvuPage page) { if (page == null) { throw new DjvuArgumentNullException(nameof(page)); } _Page = page; _Page.PropertyChanged += PagePropertyChanged; _Document = page.Document; }
public void GetTextForLocationTest002() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(2, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.ActivePage; string result = page.GetTextForLocation(new Rectangle(0, 0, page.Width, page.Height)); Assert.False(String.IsNullOrWhiteSpace(result)); } }
public void BuildBitmap001() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(2, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.Pages[0]; Graphics.Rectangle rect = new Graphics.Rectangle(100, 0, 100, 100); var bitmap = page.BuildBitmap(rect, 1, 1, null); Assert.NotNull(bitmap); } }
public void GetTextForLocationTest001() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(30, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.ActivePage; string result = page.GetTextForLocation(new Rectangle(0, 0, page.Width, page.Height)); Assert.NotNull(result); Assert.Equal(String.Empty, result); } }
internal void BuildNavigation(IDjvuDocument document) { List <Bookmark> bookmarks = new List <Bookmark>(); for (int x = 0; x < document.Pages.Count; x++) { IDjvuPage page = document.Pages[x]; int pageNum = x + 1; bookmarks.Add(new Bookmark(document, null, null, string.Format("Page {0}", pageNum), string.Format("#{0}", pageNum), new Bookmark[0])); } Bookmarks = bookmarks; }
public void Preload001() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(1, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.Pages[11]; page.Image.Preload(); Bitmap image = ((DjvuImage)page.Image).Image; Assert.NotNull(image); Assert.IsType <Bitmap>(image); } }
public void IncludesTest() { int pageCount = 0; using (DjvuDocument document = DjvuNet.Tests.Util.GetTestDocument(2, out pageCount)) { DjvuNet.Tests.Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; DjvuChunk form = page.PageForm as DjvuChunk; Assert.NotNull(form); var includes = form.Includes; Assert.NotNull(includes); Assert.Equal(1, includes.Count); } }
public void ExtractRawDataTest() { int pageCount = 0; using (DjvuDocument document = DjvuNet.Tests.Util.GetTestDocument(2, out pageCount)) { DjvuNet.Tests.Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; DjvuChunk form = page.PageForm as DjvuChunk; Assert.NotNull(form); var reader = form.ExtractRawData(); Assert.NotNull(reader); Assert.Equal(form.Length, reader.Length); } }
private static void TestPageText(string expectedValue, IDjvuPage page) { var text = page.Text; if (expectedValue != null) { Assert.NotNull(text); Assert.IsType <string>(text); Assert.True(text.Contains(expectedValue), $"Test text and page text does not match.\n Expected:\n\n{expectedValue}\n\nActual:\n\n{text}\n\n"); } else { Assert.Null(text); } }
public void InvertImage010() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(10, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; IDjvuImage image = page.Image; Assert.NotNull(image); Assert.IsType <DjvuImage>(image); Assert.NotNull(image.Image); Assert.IsType <Bitmap>(image.Image); } }
public void ResizeImage0011() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(4, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.ActivePage; DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.ResizeImage(64, 64)) { Assert.NotNull(image); Assert.Equal(64, image.Width); Assert.Equal(64, image.Height); } } }
public void BuildImage001() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(1, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.BuildImage()) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); //image.Save(Path.Combine(Util.RepoRoot, "artifacts", "data", "dumps", "test001CBuildImagen.png")); } } }
public void BuildImage002i() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(2, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; page.IsInverted = true; DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.BuildImage()) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); } } }
public void ExtractThumbnailImage058() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(58, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.ExtractThumbnailImage()) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); } } }
public void ClearImage002() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(2, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; var djvuImage = page.Image as DjvuImage; Assert.NotNull(djvuImage); Bitmap image = djvuImage.Image; Assert.NotNull(image); ImageFormat format = image.RawFormat; page.Image.ClearImage(); Assert.Throws <ArgumentException>(() => image.RawFormat); } }
public void BuildPageImage075() { int pageCount = 0; using (DjvuDocument document = Util.GetTestDocument(75, out pageCount)) { Util.VerifyDjvuDocument(pageCount, document); IDjvuPage page = document.FirstPage; var testImagePath = Path.Combine(Util.RepoRoot, "artifacts", "data", "test075C.png"); DjvuImage djvuImage = page.Image as DjvuImage; using (Bitmap image = djvuImage.BuildImage()) using (Bitmap testImage = new Bitmap(testImagePath)) { Assert.NotNull(image); Assert.IsType <Bitmap>(image); bool result = Util.CompareImagesForBinarySimilarity(testImage, image, 0.15); Assert.True(result); } } }
public PageTextSearch(IDjvuPage page, TextZone[] items) : base(page) { TextItems = items.Select(x => new PageTextItem(page, this, x)).ToArray(); }
public PageTextItem(IDjvuPage page, PageTextSearch parent, TextZone zone) : base(page) { Zone = zone; Parent = parent; }
private static void BenchmarkBuildPageImageCall(int testsToSkip, long[] elapsed, int i, int docNo, Stopwatch watch, string fileName, IDjvuPage page, int imageNo = 1) { watch.Restart(); using (System.Drawing.Bitmap bmp = ((DjvuImage)((DjvuPage)page).Image).BuildPageImage()) { watch.Stop(); Console.WriteLine($"Image {docNo + 1} - {imageNo} generated in\t{watch.ElapsedTicks:000 000 000 000}"); if (i + 1 > testsToSkip) { elapsed[docNo * 3 + imageNo] += watch.ElapsedTicks; } //bmp.Save(fileName + $"Mn_{imageNo}.png", ImageFormat.Png); } }
public void EncodeImage_Theory(string fileName) { string file = Path.Combine(Util.ArtifactsPath, fileName); string outFile = Path.Combine(Util.ArtifactsDataPath, fileName + ".djvu"); using (System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(file)) { bmp.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipX); int width = bmp.Width; int height = bmp.Height; IPixelMap pixMap = PixelMapFromBitmap(bmp); var map = new InterWavePixelMapEncoder(); map.InitializeEncoder(pixMap, null, YCrCbMode.Full); const int nchunks = 4; int[] slices = new int[] { 74, 90, 98, 103 }; //float[] decibel = new float[] { 5.0f, 10.0f, 15.0f, 20.0f }; InterWaveEncoderSettings[] settings = new InterWaveEncoderSettings[nchunks]; if (fileName != "") { for (int i = 0; i < nchunks; i++) { settings[i] = new InterWaveEncoderSettings { Slices = slices[i] }; } } //else //{ // for (int i = 0; i < nchunks; i++) // { // settings[i] = new InterWaveEncoderSettings // { // Decibels = decibel[i] // }; // } //} DjvuFormElement form = null; using (MemoryStream stream = new MemoryStream()) using (IDjvuWriter writer = new DjvuWriter(stream)) { form = map.EncodeImage(writer, nchunks, settings); } using (IDjvuWriter writer = new DjvuWriter(outFile)) { form.WriteData(writer); } using (DjvuDocument doc = new DjvuDocument(outFile)) { IDjvuPage page = doc.Pages[0]; PM44Form pageForm = (PM44Form)page.PageForm; if (nchunks != pageForm.Children.Count) { Assert.True(false); } if (nchunks != form.Children.Count) { Assert.True(false); } Assert.IsType <PM44Form>(form); for (int i = 0; i < nchunks; i++) { IDjvuNode c = form.Children[i]; if (c == null) { Assert.True(false); } byte[] chunkDataBuffer = null; if (!(c is PM44Chunk chunk)) { Assert.True(false); }
public PageTextSearch(IDjvuPage page, PageTextItem[] items) : base(page) { TextItems = items; }
public void EncodeImage_Theory(string fileName) { string file = Path.Combine(Util.ArtifactsPath, fileName); string outFile = Path.Combine(Util.ArtifactsDataPath, fileName + ".djvu"); using (System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(file)) { bmp.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipX); int width = bmp.Width; int height = bmp.Height; var pixMap = PixelMapFromBitmap(bmp); var map = new InterWavePixelMapEncoder(); map.InitializeEncoder(pixMap, null, YCrCbMode.Full); int nchunks = 4; int[] slices = new int[] { 74, 90, 98, 103 }; //float[] decibel = new float[] { 5.0f, 10.0f, 15.0f, 20.0f }; InterWaveEncoderSettings[] settings = new InterWaveEncoderSettings[nchunks]; if (fileName != "") { for (int i = 0; i < nchunks; i++) { settings[i] = new InterWaveEncoderSettings { Slices = slices[i] }; } } //else //{ // for (int i = 0; i < nchunks; i++) // { // settings[i] = new InterWaveEncoderSettings // { // Decibels = decibel[i] // }; // } //} DjvuFormElement form = null; using (MemoryStream stream = new MemoryStream()) using (IDjvuWriter writer = new DjvuWriter(stream)) form = map.EncodeImage(writer, nchunks, settings); using (IDjvuWriter writer = new DjvuWriter(outFile)) form.WriteData(writer); using (DjvuDocument doc = new DjvuDocument(outFile)) { IDjvuPage page = doc.Pages[0]; PM44Form pageForm = (PM44Form)page.PageForm; Assert.Equal(nchunks, pageForm.Children.Count); Assert.NotNull(form); Assert.Equal(nchunks, form.Children.Count); Assert.IsType <PM44Form>(form); for (int i = 0; i < form.Children.Count; i++) { var c = form.Children[i]; Assert.NotNull(c); Assert.IsType <PM44Chunk>(c); PM44Chunk chunk = (PM44Chunk)c; Assert.NotNull(chunk.ChunkData); if (chunk.ChunkData.Length >= 2) { Assert.Equal(i, chunk.ChunkData[0]); Assert.Equal(slices[i] - (i == 0 ? 0 : slices[i - 1]), chunk.ChunkData[1]); if (i == 0) { Assert.Equal(1, chunk.ChunkData[2]); Assert.Equal(2, chunk.ChunkData[3]); int widthTest = chunk.ChunkData[4] << 8; widthTest |= chunk.ChunkData[5]; Assert.Equal(bmp.Width, widthTest); int heightTest = chunk.ChunkData[6] << 8; heightTest |= chunk.ChunkData[7]; Assert.Equal(bmp.Height, heightTest); } } } } } }
public PageText(IDjvuPage page) { Page = page; }