public void splitFragCompletness() { WebtoonPage page = new WebtoonPage() { filpath = "", width = 800, height = 12480, }; var PageA4 = Bindings.TemplatesTools.getA4(96, false); List <PageFragmnet> listToPrint = new DuplexBuilder(new Tools.LoggerHelper("test"), PageA4, 3, padPercent: 2.3f, repeatColPercent: 2.3f ).splitPageLandscape( page ); Assert.IsTrue(listToPrint.Count > 1); if (listToPrint.Count > 1) { printFrags(listToPrint); int TotalHeight = 0; for (int i = 0; i < listToPrint.Count; i++) { TotalHeight += listToPrint[i].SourceTransform.Height; } Assert.AreEqual(page.height, TotalHeight); } }
static void Duplex(DuplexOptions opt) { DuplexBuilder duplexBuilder = new DuplexBuilder( new LoggerHelper("duplex"), TemplatesTools.getA4(150, !(opt.Landscape ?? true)), opt.Columns, padPercent: opt.Padding, spacePercent: opt.Spacing); Action <string> _file_job = new Action <string>((string input_file) => { TryProcessFile("duplex-job-single", input_file, opt.OutputFolder, (file, output_file, log) => { duplexBuilder.saveCahpterFragmentsInto_PNG_LTR( SplitFile(opt, input_file, file, output_file, log, duplexBuilder), "", opt.OutputFolder); }); }); List <PageFragmnet> dirFragments = new List <PageFragmnet>(); Action <string, DirectoryInfo, string> _file_nested_job = new Action <string, DirectoryInfo, string>((string input_file, DirectoryInfo dir, string inputDir) => { TryProcessFile("duplex-job-nested", input_file, opt.OutputFolder, (file, output_file, log) => { dirFragments.AddRange( SplitFile(opt, input_file, file, output_file, log, duplexBuilder)); }); }); Action <string, DirectoryInfo, bool> onDir = new Action <string, DirectoryInfo, bool>( (string inputFolder, DirectoryInfo currentInputDir, bool started) => { if (!started) { DirectoryInfo currentOutputDir = new DirectoryInfo(currentInputDir.FullName.Replace(inputFolder, opt.OutputFolder)); if (!currentOutputDir.Exists) { currentOutputDir.Create(); } log.i("Saving fragments after folder to " + currentOutputDir.FullName); duplexBuilder.saveCahpterFragmentsInto_PNG_LTR(dirFragments, "", currentOutputDir.FullName); } else { dirFragments = new List <PageFragmnet>(); } }); ProcessAllFiles(opt, _file_job, nestedFileJob: _file_nested_job, onDirecotry: onDir, fileExt: "*.png"); }
public void CombiningTwoSplittedStripsTogether2() { Size A4 = Bindings.TemplatesTools.getA4(96, false); DuplexBuilder duplexBuilder = new DuplexBuilder( new Tools.LoggerHelper("test"), A4, 3, padPercent: 0f ); WebtoonPage page = new WebtoonPage() { filpath = "p1.png", width = 690, height = 212, }; WebtoonPage page2 = new WebtoonPage() { filpath = "p2.png", width = 690, height = 1885, }; DrawMock mock = new DrawMock(); List <PageFragmnet> fragmantsToRead = new List <PageFragmnet>(); fragmantsToRead.AddRange(duplexBuilder.splitPageLandscape(page)); fragmantsToRead.AddRange(duplexBuilder.splitPageLandscape(page2)); printFrags(fragmantsToRead); var outputPages = duplexBuilder.saveCahpterFragmentsInto_PNG_LTR( fragmantsToRead, "", "", mock: mock ); var usedColumns = outputPages.Sum((p) => p.ColCount()); var usedPrintOrders = outputPages.Sum((p) => (p.GetCols.Sum((c) => c.getPrintSources.Count))); Assert.AreEqual(4, usedPrintOrders); CheckDrawInsideBounds(mock, usedColumns, 2); }
public void splitPageTest2() { /* * Webtoon * W 690 * H 1885 * * A4 * W 1123 * H 794 * * Col 3 * Pad 25 * * FinalWidth 341 * FinalHeight 744 * * Webtoon * Scale 2.53360 * W 341 * H 931 * * Frag 7.15 * * SplitRepeat 25 * Total Cols 7.385215054 * */ WebtoonPage page = new WebtoonPage() { filpath = "", width = 690, height = 1885, }; List <PageFragmnet> listToPrint = new DuplexBuilder( new Tools.LoggerHelper("test"), Bindings.TemplatesTools.getA4(96, false), 3, padPercent: 2.3f ).splitPageLandscape( page ); Assert.AreEqual(2, listToPrint.Count); }
public void CombiningTwoSplittedStripsTogether() { Size A4 = Bindings.TemplatesTools.getA4(96, false); DuplexBuilder duplexBuilder = new DuplexBuilder( new Tools.LoggerHelper("test"), A4, 3, padPercent: 0f ); int colW = A4.Width / 3; int colH = A4.Height; WebtoonPage page = new WebtoonPage() { filpath = "p1.png", width = colW, height = (int)(colH * 1.2f), }; WebtoonPage page2 = new WebtoonPage() { filpath = "p2.png", width = colW, height = (int)(colH * 1.2f), }; DrawMock mock = new DrawMock(); List <PageFragmnet> fragmantsToRead = new List <PageFragmnet>(); fragmantsToRead.AddRange(duplexBuilder.splitPageLandscape(page)); fragmantsToRead.AddRange(duplexBuilder.splitPageLandscape(page2)); printFrags(fragmantsToRead); var outputPages = duplexBuilder.saveCahpterFragmentsInto_PNG_LTR( fragmantsToRead, "", "", mock: mock ); var usedColumns = outputPages.Sum((p) => p.ColCount()); CheckDrawInsideBounds(mock, usedColumns, 3); }
public void splitFragCompletness2() { var PageA4 = Bindings.TemplatesTools.getA4(96, false); int stripW = PageA4.Width / 3; // 1/3 so height is exact int stripH = PageA4.Height * 2 + PageA4.Height / 2; //2.5 WebtoonPage toonStrip = new WebtoonPage() { filpath = "", width = stripW, height = stripH, }; List <PageFragmnet> listToPrint = new DuplexBuilder(new Tools.LoggerHelper("test"), PageA4, 3, padPercent: 0, repeatColPercent: 0 ).splitPageLandscape( toonStrip ); Assert.IsTrue(listToPrint.Count > 1); if (listToPrint.Count > 1) { printFrags(listToPrint); int TotalHeight = 0; for (int i = 0; i < listToPrint.Count; i++) { TotalHeight += listToPrint[i].SourceTransform.Height; } float expected_new_height = stripH; Assert.AreEqual(expected_new_height, TotalHeight); } }
public void splitPageAspectConsistency() { WebtoonPage page = new WebtoonPage() { filpath = "", width = 800, height = 12480, }; int[] dpps = new int[] { 96, 150, 300, 600 }; foreach (int dpp in dpps) { List <PageFragmnet> listToPrint = new DuplexBuilder( new Tools.LoggerHelper("test"), Bindings.TemplatesTools.getA4(dpp, false), 3, padPercent: 2.3f ).splitPageLandscape( page ); Assert.AreEqual(8, listToPrint.Count); } }
private static List <PageFragmnet> SplitFile( DuplexOptions opt, string input_file, string file, string output_file, LoggerHelper log, DuplexBuilder d) { log.i(string.Format("Splitting strip: '" + file + "'")); var toon = new WebtoonPage() { filpath = input_file }; using (MagickImage img = new MagickImage(file)) { toon.height = img.Height; toon.width = img.Width; } return(d.splitPageLandscape(toon)); }