Beispiel #1
0
        public static void CreateTemplateSVGPage(string testPagePath)
        {
            var code = new TiptoiOidCode();



            using (var w = new StreamWriter(testPagePath))
            {
                w.WriteLine(@"<?xml version=""1.0"" encoding=""ISO-8859-1"" standalone=""no""?>
<!DOCTYPE svg PUBLIC ""-//W3C//DTD SVG 20010904//EN""  ""http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"">
<svg class=""oid-area"">
");

                w.WriteLine("<defs>");
                var oidWriter = new OidSvgWriter(code);

                for (var oid = 800; oid < 840; oid++)
                {
                    oidWriter.OidPattern(w, oid);
                }
                for (var oid = 10250; oid < 10290; oid++)
                {
                    oidWriter.OidPattern(w, oid);
                }
                w.WriteLine(@"</defs>");
                w.WriteLine(@"</svg>");
            }
        }
Beispiel #2
0
        public void CreateTestPage()
        {
            IOidCode oidCode             = new TiptoiOidCode();
            var      printerTestPageFile = TestFile("printer-test.html");

            OidSvgWriter.CreatePrinterTestPage(printerTestPageFile);
            Process.Start(printerTestPageFile);
        }
Beispiel #3
0
        public static void CreatePrinterSVGPage(string testPagePath)
        {
            var code = new TiptoiOidCode();



            using (var w = new StreamWriter(testPagePath))
            {
                w.WriteLine(@"<?xml version=""1.0"" encoding=""ISO-8859-1"" standalone=""no""?>
<!DOCTYPE svg PUBLIC ""-//W3C//DTD SVG 20010904//EN""  ""http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"">
<svg class=""oid-area"">
");


                var defaultOidWriter = new OidSvgWriter(code);
                var oid = 10250;

                var powBase = 1.1;

/*
 *              for (int dotSize = -4; dotSize <= 4; ++dotSize)
 *              {
 *                  var fDotSize = (float)Math.Pow(powBase, dotSize);
 *                  w.Write("<td>"); w.Write(T(String.Format("Dot Size {0:F4} cm", defaultOidWriter.DotSize * fDotSize))); w.Write("</td>");
 *              }
 *              w.Write("</tr>");*/

                for (int gridSpacing = -4; gridSpacing <= 4; ++gridSpacing)
                {
                    var fGridSpacing = (float)Math.Pow(powBase, gridSpacing);
                    //w.Write("<tr>");
                    //w.Write("<td>"); w.Write(T(String.Format("Grid Spacing {0:F4} cm", defaultOidWriter.GridSpacing * fGridSpacing))); w.Write("</td>");
                    for (int dotSize = -4; dotSize <= 4; ++dotSize)
                    {
                        var fDotSize = (float)Math.Pow(powBase, dotSize);

                        var oidWriter = new OidSvgWriter(code)
                        {
                            DotOffset   = defaultOidWriter.DotOffset,
                            DotSize     = defaultOidWriter.DotSize * fDotSize,
                            GridSpacing = defaultOidWriter.GridSpacing * fGridSpacing
                        };
                        w.WriteLine("<defs>");
                        oidWriter.OidPattern(w, oid);
                        w.WriteLine(@"</defs>");
                        w.WriteLine(@"<rect fill=""url(#Code{0})"" x=""{1}cm"" y=""{2}cm"" width=""1cm"" height=""1cm""/>", oid, (dotSize + 5) * 2, (gridSpacing + 5) * 2);
                        oid++;
                    }
                }

                w.WriteLine(@"</svg>");
            }
        }
Beispiel #4
0
        public void ReadPatterns()
        {
            IOidCode oidCode = new TiptoiOidCode();

            var codes =
                new DirectoryInfo(Path.Combine(PathUtil.GetDirectory(), @"..\test-data")).GetFiles("*.svg")
                .SelectMany(svg =>
            {
                Console.WriteLine(svg);
                var d = new XmlDocument();
                d.Load(svg.FullName);
                var manager = new XmlNamespaceManager(d.NameTable);
                manager.AddNamespace("svg", "http://www.w3.org/2000/svg");
                var e = d.CreateNavigator()
                        .Select("/svg:svg/svg:defs/svg:pattern", manager)
                        .Cast <XPathNavigator>()
                        .Select(_ => ReadCode(_, manager));
                return(e);
            });

            var errors = 0;

            foreach (var c in codes
                     )
            {
                var calculated = oidCode.FromDigits(c.Digits);
                if (calculated != c.Oid)
                {
                    Console.WriteLine("{0} {1} {2} {3}", calculated - c.Oid, c.Oid, calculated, String.Join(String.Empty, c.Digits));
                    ++errors;
                }
                if (!(c.Digits.SequenceEqual(oidCode.ToDigits(c.Oid))))
                {
                    Console.WriteLine("Actual : {0}", String.Join(String.Empty, c.Digits));
                    Console.WriteLine("Desire : {0}", String.Join(String.Empty, oidCode.ToDigits(c.Oid)));
                    ++errors;
                }
            }

            Console.WriteLine("{0} errors", errors);
            Assert.AreEqual(80, errors);
        }
Beispiel #5
0
        public static void CreatePrinterTestPage(string testPagePath)
        {
            var code = new TiptoiOidCode();

            var mediaDir = Path.Combine(Path.GetDirectoryName(testPagePath), "media");

            PathUtil.EnsureDirectoryExists(mediaDir);
            foreach (var mediaFile in new[]
            {
                "note_to_pen.png",
                "style.css"
            })
            {
                PathUtil.CopyIfNewer(
                    Path.Combine(PathUtil.GetDirectory(), "media", mediaFile),
                    Path.Combine(mediaDir, mediaFile));
            }

            using (var w = new StreamWriter(testPagePath))
            {
                w.WriteLine(@"
<!doctype html>
<html moznomarginboxes mozdisallowselectionprint>
  <head>
    <meta charset=""utf-8"">
    <meta name=""viewport"" content=""width=device-width, initial-scale=1.0"">
    <title>ttaudio Printer Test Page</title>
	<link rel=""stylesheet"" href=""media/style.css"" />
    <style>
    .oid-button {
        width: 4cm;
    }
    </style>
  </head>
  <body>
    <div class=""printInstructions"">
        <img src=""media/note_to_pen.png"" />
        <p><a href=""javascript:window.print();"">Click here to print the test page with optical codes.</a> Use a printer with at least 600 dpi.</p>
        <p>This page was generated by <a href=""" + About.GithubUri.ToString() + @""">" + T(About.Product) + @"</a> on " + T(DateTime.Now.ToString()) +
                            @".</p></div>
    <h1>ttaudio Printer Test Page</h1>
");


                var defaultOidWriter = new OidSvgWriter(code);
                var oid = 10250;

                var powBase = 1.1;

                w.Write("<table>");
                w.Write("<tr>");
                w.Write("<td/>");
                for (int dotSize = -4; dotSize <= 4; ++dotSize)
                {
                    var fDotSize = (float)Math.Pow(powBase, dotSize);
                    w.Write("<td>"); w.Write(T(String.Format("Dot Size {0:F4} cm", defaultOidWriter.DotSize * fDotSize))); w.Write("</td>");
                }
                w.Write("</tr>");

                for (int gridSpacing = -4; gridSpacing <= 4; ++gridSpacing)
                {
                    var fGridSpacing = (float)Math.Pow(powBase, gridSpacing);
                    w.Write("<tr>");
                    w.Write("<td>"); w.Write(T(String.Format("Grid Spacing {0:F4} cm", defaultOidWriter.GridSpacing * fGridSpacing))); w.Write("</td>");
                    for (int dotSize = -4; dotSize <= 4; ++dotSize)
                    {
                        var fDotSize = (float)Math.Pow(powBase, dotSize);

                        var oidWriter = new OidSvgWriter(code)
                        {
                            DotOffset   = defaultOidWriter.DotOffset,
                            DotSize     = defaultOidWriter.DotSize * fDotSize,
                            GridSpacing = defaultOidWriter.GridSpacing * fGridSpacing
                        };

                        w.Write("<td>");
                        oidWriter.OidArea(w, oid++); // , String.Format("spacing: {0:F0}%, dot: {1:F0}%", fGridSpacing*100, fDotSize*100));
                        w.Write("</td>");
                    }
                    w.Write("</tr>");
                }
                w.Write("</table>");

                w.WriteLine(@"
  </body>
</html>
");
            }
        }
Beispiel #6
0
        public static void CreatePrinterTestPage(string testPagePath)
        {
            var code = new TiptoiOidCode();

            var mediaDir = Path.Combine(Path.GetDirectoryName(testPagePath), "media");

            PathUtil.EnsureDirectoryExists(mediaDir);
            foreach (var mediaFile in new[]
            {
                "note_to_pen.png",
                "style.css"
            })
            {
                PathUtil.CopyIfNewer(
                    Path.Combine(PathUtil.GetDirectory(), "media", mediaFile),
                    Path.Combine(mediaDir, mediaFile));
            }

            using (var w = new StreamWriter(testPagePath))
            {
                w.WriteLine(@"
<!doctype html>
<html moznomarginboxes mozdisallowselectionprint>
  <head>
    <meta charset=""utf-8"">
    <meta name=""viewport"" content=""width=device-width, initial-scale=1.0"">
    <title>ttaudio Printer Test Page</title>
	<link rel=""stylesheet"" href=""media/style.css"" />
    <style>
    .oid-button {
        width: 4cm;
    }
    table { 
      margin: 1em;
      float: left;
    }
    </style>
  </head>
  <body>
    <div class=""printInstructions"">
        <img src=""media/note_to_pen.png"" />
        <p><a href=""javascript:window.print();"">Click here to print the test page with optical codes.</a> Use a printer with at least 600 dpi. Then use the TipToi pen to find out 
        which combination of dot size and grid spacing works best for your printer. Enter the found values in 
        <i>ttaudio &gt; Main Menu &gt; Tools &gt; Options...</i></p>
        <p>This page was generated by <a href=""" + About.GithubUri.ToString() + @""">" + T(About.Product) + @"</a> on " + T(DateTime.Now.ToString()) +
                            @".</p></div>
    <h1>ttaudio Printer Test Page</h1>
");


                var defaultOidWriter = new OidSvgWriter(code);
                var oid = 10250;

                var powBase = 1.1;

                const char columnLetterStart = '1';
                const char rowLetterStart    = 'A';

                w.Write("<table>");
                w.Write("<tr>");
                w.Write("<td/>");
                char columnLetter = columnLetterStart;
                for (int dotSize = -4; dotSize <= 4; ++dotSize)
                {
                    var fDotSize = (float)Math.Pow(powBase, dotSize);
                    w.Write("<td>"); w.Write(T(String.Format("{0}", columnLetter++))); w.Write("</td>");
                }
                w.Write("</tr>");

                char rowLetter = rowLetterStart;
                for (int gridSpacing = -4; gridSpacing <= 4; ++gridSpacing)
                {
                    var fGridSpacing = (float)Math.Pow(powBase, gridSpacing);
                    w.Write("<tr>");
                    w.Write("<td>"); w.Write(T(String.Format("{0}", rowLetter++))); w.Write("</td>");
                    for (int dotSize = -4; dotSize <= 4; ++dotSize)
                    {
                        var fDotSize = (float)Math.Pow(powBase, dotSize);

                        var oidWriter = new OidSvgWriter(code)
                        {
                            DotOffset   = defaultOidWriter.DotOffset,
                            DotSize     = defaultOidWriter.DotSize * fDotSize,
                            GridSpacing = defaultOidWriter.GridSpacing * fGridSpacing
                        };

                        w.Write("<td>");
                        oidWriter.OidArea(w, oid++); // , String.Format("spacing: {0:F0}%, dot: {1:F0}%", fGridSpacing*100, fDotSize*100));
                        w.Write("</td>");
                    }
                    w.Write("</tr>");
                }
                w.Write("</table>");

                w.Write("<p/>");
                w.Write("<table border=\"solid\">");
                w.Write("<tr><th>Row</th><th>Dot Size</th></tr>");
                rowLetter = rowLetterStart;
                for (int dotSize = -4; dotSize <= 4; ++dotSize)
                {
                    w.Write("<tr>");
                    var fDotSize = (float)Math.Pow(powBase, dotSize);
                    w.Write("<td>"); w.Write(T(String.Format("{0}", rowLetter++))); w.Write("</td>");
                    w.Write("<td>"); w.Write(T(String.Format("{0:F0} µm", defaultOidWriter.DotSize * fDotSize * 1e4))); w.Write("</td>");
                    w.Write("</tr>");
                }
                w.Write("</table>");

                w.Write("<p/>");
                w.Write("<table border=\"1\" style=\"border: solid 1px;\" >");
                w.Write("<tr><th>Column</th><th>Grid Spacing</th></tr>");
                columnLetter = columnLetterStart;
                for (int gridSpacing = -4; gridSpacing <= 4; ++gridSpacing)
                {
                    var fGridSpacing = (float)Math.Pow(powBase, gridSpacing);
                    w.Write("<tr>");
                    w.Write("<td>"); w.Write(T(String.Format("{0}", columnLetter++))); w.Write("</td>");
                    w.Write("<td>"); w.Write(T(String.Format("{0:F0} µm", defaultOidWriter.GridSpacing * fGridSpacing * 1e4))); w.Write("</td>");
                    w.Write("</tr>");
                }
                w.Write("</table>");

                w.WriteLine(@"
  </body>
</html>
");
            }
        }