Пример #1
0
        /// Given a tag string with the format specified in the package comment,
        /// parseFieldParameters will parse it into a fieldParameters structure,
        /// ignoring unknown parts of the string.

        // func parseFieldParameters(str string) (ret fieldParameters) {
        public static FieldParameters ParseFieldParameters(this string str)
        {
            var ret = new FieldParameters();

            foreach (var part in str.Split(','))
            {
                if (FIELD_PARAMETERS_PARSE_MAP.ContainsKey(part))
                {
                    FIELD_PARAMETERS_PARSE_MAP[part](ret);
                }
                else if (part.StartsWith("default:"))
                {
                    long l;
                    if (long.TryParse(part.Substring(8), out l))
                    {
                        ret.DefaultValue = l;
                    }
                }
                else if (part.StartsWith("tag:"))
                {
                    int i;
                    if (int.TryParse(part.Substring(4), out i))
                    {
                        ret.Tag = i;
                    }
                }
            }

            return(ret);
        }
Пример #2
0
        public static void DeleteColumnFieldTest(FieldParameters fp)
        {
            DeleteColumns deleteCol = new DeleteColumns(fp, (new int[] { 0, 1, 2, 3, 5, 7, 15, 16, 17, 18 }));

            deleteCol.Apply();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachColLöschen.png");
            SaveFieldPlan(fp, "tests/FilterTests/FeldplanNachColLöschen.html");
            deleteCol.Undo();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachColLoeschenUndo.png");
        }
Пример #3
0
        public static void DeleteRowFieldTest(FieldParameters fp)
        {
            DeleteRows deleteRow = new DeleteRows(fp, (new int[] { 0, fp.current_height - 1 }).Select(x => x * fp.current_width).ToArray());

            deleteRow.Apply();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachRowLöschen.png");
            SaveFieldPlan(fp, "tests/FilterTests/FeldplanNachRowLöschen.html");
            deleteRow.Undo();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachRowLoeschenUndo.png");
        }
Пример #4
0
        public IFieldParameters ToObject(FieldParameterXmlWrapper wrapper)
        {
            FieldParameters f = new FieldParameters();

            f.FieldProfile  = fp.ToObject(wrapper.Profile);
            f.Detail        = fd.ToObject(wrapper.Detail);
            f.Offset        = wrapper.Offset;
            f.BlendModeWrap = fb.ToObject(wrapper.Blend);
            f.Seed          = wrapper.Seed;
            return(f);
        }
Пример #5
0
        public static void PostFilterFieldTest(string path)
        {
            FieldParameters fp = new FieldParameters(Path.GetFullPath("tests/PostFilterTest.DObject"), path, "colors.DColor", 8, 8, 24, 8, 10000, Emgu.CV.CvEnum.Inter.Lanczos4,
                                                     ColorDetectionMode.Cie94Comparison, new Dithering(), new NoColorRestriction());

            fp.Generate().GenerateImage().Save("tests/FilterTests/vorFilter.png");
            InsertRowFieldTest(fp);
            DeleteRowFieldTest(fp);
            CopyPasteFieldTest(fp);
            InsertColumnFieldTest(fp);
            DeleteColumnFieldTest(fp);
        }
Пример #6
0
        public static AssemblyNode CreateProject()
        {
            string rootpath = Path.GetFullPath("tests/");

            DominoAssembly main = new DominoAssembly();

            main.Save(Path.Combine(rootpath, "main.DProject"));
            main.colorPath = "colors.DColor";
            var             mainnode = new AssemblyNode(Path.Combine(rootpath, "main.DProject"));
            FieldParameters field1   = new FieldParameters(Path.GetFullPath("tests/field1.DObject"), "mountain.jpg", main.colorPath, 8, 8, 24, 8, 10000, Emgu.CV.CvEnum.Inter.Lanczos4,
                                                           new CieDe2000Comparison(), new Dithering(), new NoColorRestriction());

            field1.Save();
            new FieldNode("field1.DObject", main);
            StreamReader        sr        = new StreamReader(new FileStream("Structures.xml", FileMode.Open));
            XElement            xml       = XElement.Parse(sr.ReadToEnd());
            StructureParameters structure = new StructureParameters(Path.GetFullPath("tests/structure.DObject"),
                                                                    "transparent.png", xml.Elements().ElementAt(1), 30000,
                                                                    main.colorPath, ColorDetectionMode.Cie1976Comparison, new Dithering(),
                                                                    AverageMode.Corner, new NoColorRestriction(), true);

            structure.Save();
            new StructureNode("structure.DObject", main);
            DominoAssembly sub     = new DominoAssembly();
            string         subpath = "sub.DProject";

            sub.Save(Workspace.AbsolutePathFromReference(ref subpath, main));
            sub.colorPath = "colors.DColor";
            new AssemblyNode("sub.DProject", main);
            FieldParameters sub1 = new FieldParameters(Path.GetFullPath("tests/field2.DObject"), "transparent.png", main.colorPath, 8, 8, 24, 8, 10000, Emgu.CV.CvEnum.Inter.Lanczos4,
                                                       new CieDe2000Comparison(), new Dithering(), new NoColorRestriction());

            field1.Save();
            new FieldNode("field2.DObject", sub);
            new FieldNode("field1.DObject", sub);
            sub.Save();

            foreach (AssemblyNode node in main.children.Where(child => child is AssemblyNode))
            {
                node.obj.Save();
            }
            if (field1 == ((FieldNode)sub.children[1]).obj)
            {
                Console.WriteLine("references to field1 identical");
            }
            main.Save(mainnode.Path);
            PrintProjectStructure(mainnode, "");

            return(mainnode);
        }
Пример #7
0
        public static void InsertColumnFieldTest(FieldParameters fp)
        {
            AddColumns addCol = new AddColumns(fp, 1, 5, 5, true);

            addCol.Apply();
            AddColumns addCol2 = new AddColumns(fp, 0, 5, 5, false);

            addCol2.Apply();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachColumnEinfügen.png");
            SaveFieldPlan(fp, "tests/FilterTests/FeldplanNachColumnEinfuegen.html");
            addCol2.Undo();
            addCol.Undo();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachColumnEinfügenUndo.png");
        }
Пример #8
0
        public static void InsertRowFieldTest(FieldParameters fp)
        {
            AddRows addRows = new AddRows(fp, fp.Height * fp.Length - 1, 5, 5, true);

            addRows.Apply();
            AddRows addRows2 = new AddRows(fp, 0, 5, 5, false);

            addRows2.Apply();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachRowEinfügen.png");
            SaveFieldPlan(fp, "tests/FilterTests/FeldplanNachRowEinfuegen.html");
            addRows2.Undo();
            addRows.Undo();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachRowEinfügenUndo.png");
        }
Пример #9
0
        public void CheckTransparency()
        {
            InitializeWorkspace();
            FieldParameters p = new FieldParameters("image_transparency.png", "colors.DColor", 8, 8, 24, 8, 20000, Inter.Lanczos4,
                                                    new Dithering(), ColorDetectionMode.CieDe2000Comparison, new NoColorRestriction());

            p.TransparencySetting = 128;
            DominoTransfer t = p.Generate();

            Assert.AreEqual(0, t.dominoes[0]);
            p.background = Colors.White;
            t            = p.Generate();
            Assert.AreEqual(29, t.dominoes[0]);
        }
Пример #10
0
        private static OrdinalModel OrdinalModel()
        {
            FieldParameters parameters = new FieldParameters()
            {
                Size = 10
            };
            OrdinalModel model = new OrdinalModel(parameters);

            InitializationData data = new InitializationData(typeof(TickerElement))
            {
                Count           = Count,
                InitialazerType = typeof(RandomInitializer)
            };
            Initializer initializer = Initializer.FromInitializationData(data);

            model.Initialize(new[] { initializer });
            return(model);
        }
Пример #11
0
 public CreateFieldVM(FieldParameters dominoProvider, bool?AllowRegenerate) : base(dominoProvider, AllowRegenerate)
 {
     // Regeneration kurz sperren, dann wieder auf Ursprungswert setzen
     AllowRegeneration = false;
     field_templates   = new List <StandardSize>();
     field_templates.Add(new StandardSize("8mm", new Sizes(8, 8, 24, 8)));
     field_templates.Add(new StandardSize("Tortoise", new Sizes(0, 48, 24, 0)));
     field_templates.Add(new StandardSize("User Size", new Sizes(10, 10, 10, 10)));
     Click_Binding = new RelayCommand((x) => BindSize = !BindSize);
     ReloadSizes();
     AllowRegeneration = AllowRegenerate;
     Refresh();
     if (fieldParameters.Counts != null)
     {
         RefreshColorAmount();
     }
     UnsavedChanges = false;
     TargetSizeAffectedProperties = new string[] { "Length", "Height" };
 }
Пример #12
0
 public CreateFieldVM(FieldParameters dominoProvider, bool?AllowRegenerate) : base(dominoProvider, AllowRegenerate)
 {
     // Regeneration kurz sperren, dann wieder auf Ursprungswert setzen
     AllowRegeneration = false;
     Field_templates   = new List <StandardSize>
     {
         new StandardSize(_("8mm"), new Sizes(8, 8, 24, 8)),
         new StandardSize(_("Tortoise"), new Sizes(0, 48, 24, 0)),
         new StandardSize(GetParticularString("User defined field dimensions (keep string short)", "User Size"), new Sizes(10, 10, 10, 10))
     };
     ReloadSizes();
     AllowRegeneration = AllowRegenerate;
     Refresh();
     if (fieldParameters.Counts != null)
     {
         RefreshColorAmount();
     }
     UnsavedChanges = false;
     TargetSizeAffectedProperties = new string[] { nameof(Length), nameof(Height) };
 }
Пример #13
0
        public static void CopyPasteFieldTest(FieldParameters fp)
        {
            int[] source_area = new int[400];
            int   startx      = 20;
            int   starty      = 20;
            int   target_x    = 30;
            int   target_y    = 30;

            for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    source_area[j * 20 + i] = fp.current_width * (j + starty) + (startx + i);
                }
            }
            PasteFilter paste = new PasteFilter(fp, fp.current_width * starty + startx, source_area, fp.current_width * target_y + target_x);

            paste.Apply();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachPaste.png");
            paste.Undo();
            fp.Generate().GenerateImage().Save("tests/FilterTests/nachPasteUndo.png");
        }
Пример #14
0
 private protected NumericFieldBase(
     FieldContainer?parent,
     FieldParameters common,
     NumericFieldBaseParameters numericBaseParameters)
     : base(parent, common) =>
Пример #15
0
 public OrdinalModel(FieldParameters fieldParameters)
 {
     Field            = new Field(fieldParameters);
     turns.TurnStart += Field.NextTurn;
     turns.TurnStart += () => TurnStart?.Invoke();
 }
Пример #16
0
 public BaseField()
 {
     Parameters = new FieldParameters();
 }
Пример #17
0
 private protected NumericFieldBase(FieldContainer?parent, FieldParameters common, int min, int max, int @default)
     : base(parent, common) =>
     (Min, Max, Default) = (min, max, @default);
Пример #18
0
 internal OverlayField(FieldContainer?parent, FieldParameters common, int nestedFieldCount, string switchPath, IReadOnlyDictionary <string, FieldList> fieldLists)
     : base(parent, common) =>
     (NestedFieldCount, SwitchPath, FieldLists) = (nestedFieldCount, switchPath, fieldLists);
Пример #19
0
 private NumericField(FieldContainer?parent, FieldParameters common,
                      NumericFieldBaseParameters numericBaseParameters, INumericFieldFormatter numericFieldFormatter)
     : base(parent, common, numericBaseParameters) =>
     this.numericFieldFormatter = numericFieldFormatter;
Пример #20
0
 internal StringField(FieldContainer?parent, FieldParameters common, int length)
     : base(parent, common)
 {
     Length       = length;
     BytesPerChar = Size / length;
 }
Пример #21
0
 private protected FieldBase(FieldContainer?parent, FieldParameters parameters) =>
 (Parent, Parameters) = (parent, parameters);
Пример #22
0
 internal PlaceholderField(FieldContainer?parent, FieldParameters common) : base(parent, common)
 {
 }
Пример #23
0
        static void FieldTest(String path)
        {
            Console.WriteLine("=======   FIELD TEST   =======");
            //Progress<String> progress = new Progress<string>(pr => Console.WriteLine(pr));
            //Mat mat = CvInvoke.Imread(path, ImreadModes.Unchanged);

            FieldParameters p = new FieldParameters(Path.GetFullPath("tests/FieldTest.DObject"), path, "colors.DColor", 8, 8, 24, 8, 20000, Inter.Lanczos4,
                                                    ColorDetectionMode.Cie1976Comparison, new Dithering(), new NoColorRestriction());

            ((FieldCalculation)p.PrimaryCalculation).TransparencySetting = 128;
            var watch = System.Diagnostics.Stopwatch.StartNew();

            p.Generate().GenerateImage().Save("tests/fieldtests_before_filters.png");
            watch.Stop();
            Console.WriteLine("elapsed: " + watch.ElapsedMilliseconds);

            /*watch.Restart();
             * p.ditherMode = new FloydSteinbergDithering();
             * watch.Stop();
             * Console.WriteLine("elapsed: " + watch.ElapsedMilliseconds);
             * watch.Restart();
             * p.Generate().GenerateImage().Save("tests/fieldtest_floyd_steinberg.png");
             * p.ditherMode = new Dithering();
             * watch.Stop();
             * Console.WriteLine("elapsed: " + watch.ElapsedMilliseconds);
             * watch.Restart();
             * p.Generate().GenerateImage().Save("tests/fieldtest_after_dithering.png");
             * p.ditherMode = new StuckiDithering();
             * watch.Stop();
             * Console.WriteLine("elapsed: " + watch.ElapsedMilliseconds);
             * watch.Restart();
             * p.Generate().GenerateImage().Save("tests/fieldtest_stucki.png");
             * p.ditherMode = new JarvisJudiceNinkeDithering();
             * watch.Stop();
             * Console.WriteLine("elapsed: " + watch.ElapsedMilliseconds);
             * watch.Restart();
             * p.Generate().GenerateImage().Save("tests/fieldtest_jjn.png");
             * watch.Stop();
             * Console.WriteLine("elapsed: " + watch.ElapsedMilliseconds);*/
            //DominoTransfer t = await Dispatcher.CurrentDispatcher.Invoke(async () => await Task.Run(() => p.Generate()));
            // Filtertests für ein Logo oder ähnliches

            /*var erster = ((BlendFileFilter)p.ImageFilters[0]);
             * erster.RotateAngle = 30;
             * erster.ScaleX = 0.5;
             * erster.ScaleY = 0.3;
             * erster.CenterX = erster.GetSizeOfMat().Width * 0.6;
             * erster.CenterY = erster.GetSizeOfMat().Height * 0.6;
             * var zweiter = new BlendTextFilter();
             * zweiter.FontSize = 40;
             * zweiter.FontFamily = "Calibri";
             * zweiter.Text = "Hallo Welt";
             * zweiter.Color = System.Drawing.Color.Green;
             * p.ImageFilters.Add(zweiter);
             * zweiter.CenterX = 500;
             * zweiter.CenterY = 500;*/
            // Filtertests für Bilder
            // Helligkeit / Kontrast

            /*var hell = new ContrastLightFilter();
             * hell.Alpha = 1.5;
             * hell.Beta = -150;
             * p.ImageFilters.Add(hell);*/
            //var gamma = new GammaCorrectFilter();
            //gamma.Gamma = 1.1;
            //p.ImageFilters.Add(gamma);

            /*var blur = new GaussianSharpenFilter();
             * blur.KernelSize = 21;
             * blur.StandardDeviation = 5;
             * blur.SharpenWeight = 0.5;
             * p.ImageFilters.Add(blur);*/
            /*var replace = new ReplaceColorFilter();
             * replace.BeforeColor = System.Drawing.Color.LightBlue;
             * replace.AfterColor = System.Drawing.Color.Red;
             * replace.Tolerance = 50;
             * p.ImageFilters.Add(replace);*/
            //p.ColorFilters.Add(new ChangeCountColorFilter() { Index = 14, NewCount = 0 });
            //p.ColorFilters.Add(new ChangeRGBColorFilter() { Index = 30, Color = Colors.Green });
            //p.Generate();

            /*Console.WriteLine(String.Join("\n", p.counts));
             * Console.WriteLine("Size: " + p.Generate().shapes.Count());
             * watch.Stop();
             * Console.WriteLine(watch.ElapsedMilliseconds);
             * watch = System.Diagnostics.Stopwatch.StartNew();
             * Mat b2 = p.Generate().GenerateImage(Colors.Transparent, 2000);
             * watch.Stop();
             * Console.WriteLine(watch.ElapsedMilliseconds);
             * b2.Save("tests/FieldTest.png");
             * FileStream fs = new FileStream(@"tests/FieldPlanTest.html", FileMode.Create);
             * StreamWriter sw = new StreamWriter(fs);*/
            /*sw.Write(p.GetHTMLProcotol(new ObjectProtocolParameters()
             * {
             *  backColorMode = ColorMode.Normal,
             *  foreColorMode = ColorMode.Intelligent,
             *  orientation = Core.Orientation.Horizontal,
             *  reverse = false,
             *  summaryMode = SummaryMode.Large,
             *  textFormat = "<font face=\"Verdana\">",
             *  templateLength = 20,
             *  textRegex = "%count% %color%",
             *  title = "Field"
             * }));*/
            /*p.SaveXLSFieldPlan("tests/ExcelFieldPlanTest.xlsx", new ObjectProtocolParameters()
             * {
             *  backColorMode = ColorMode.Normal,
             *  foreColorMode = ColorMode.Intelligent,
             *  orientation = Core.Orientation.Horizontal,
             *  reverse = false,
             *  summaryMode = SummaryMode.Large,
             *  textFormat = "<font face=\"Verdana\">",
             *  templateLength = 20,
             *  textRegex = "%count%",
             *  title = "Field",
             *  path = Directory.GetCurrentDirectory()
             *
             * });*/
            //sw.Close();
            p.Save();
            watch = Stopwatch.StartNew();
            int[] counts = Workspace.LoadColorList <FieldParameters>(Path.GetFullPath("tests/FieldTest.DObject")).Item2;
            watch.Stop();
            Console.WriteLine("Preview Load Time: " + watch.ElapsedMilliseconds);
            Console.WriteLine(String.Join(", ", counts));

            Workspace.Clear();
            watch = Stopwatch.StartNew();
            FieldParameters loaded = Workspace.Load <FieldParameters>(Path.GetFullPath("tests/FieldTest.DObject"));

            loaded.Generate();
            watch.Stop();
            Console.WriteLine("Load Time: " + watch.ElapsedMilliseconds);
            //loaded.last.GenerateImage(Colors.Transparent).Save("tests/afterLoad.png");
            Console.WriteLine(p.colors == loaded.colors);
            watch = Stopwatch.StartNew();
            int[] counts2 = Workspace.LoadColorList <FieldParameters>(Path.GetFullPath("tests/FieldTest.DObject")).Item2;
            watch.Stop();
            Console.WriteLine("Preview Load Time: " + watch.ElapsedMilliseconds);
            Console.WriteLine(String.Join(", ", counts2));
            Console.WriteLine("Number of image filters: " + ((FieldReadout)loaded.PrimaryImageTreatment).ImageFilters.Count);
            //loaded.ImageHeight = 1500;
            //loaded.ColorFilters.Add(new ChangeCountColorFilter() { Index = 14, NewCount = 0 });
            //loaded.ColorFilters.Add(new ChangeRGBColorFilter() { Index = 30, Color = Colors.Green });
            //t = loaded.Generate();
            p.Generate().GenerateImage().Save("tests/fieldtest_after_load.png");

            Console.WriteLine(String.Join(", ", loaded.Counts));
        }
Пример #24
0
 internal InstrumentField(FieldContainer?parent, FieldParameters common, ModuleOffset?bankOffset) : base(parent, common) =>
 public OrdinalFieldViewModel(FieldParameters parameters) : this(new OrdinalModel(parameters))
 {
 }
Пример #26
0
 internal BooleanField(FieldContainer?parent, FieldParameters common)
     : base(parent, common, min: 0, max: 1, @default: 0)
 {
 }