Esempio n. 1
0
        public LiveBuildHelperVM(IDominoProvider pFParameters, int pBlockSize, Core.Orientation orientation, bool MirrorX, bool MirrorY)
        {
            BlockSize            = pBlockSize;
            fParameters          = pFParameters;
            intField             = fParameters.GetBaseField(orientation, MirrorX, MirrorY);
            NextN                = 500;
            CountRow             = intField.GetLength(1);
            stonesPerLine        = intField.GetLength(0);
            CountBlock           = Convert.ToInt32(Math.Ceiling(((double)stonesPerLine / BlockSize)));
            SizeChanged          = new RelayCommand(o => { RefreshCanvas(); });
            MouseDown            = new RelayCommand(o => { CurrentBlock.Focus(); });
            PositionSnapshots    = new ObservableCollection <PositionSnapshot>();
            MakePositionSnapshot = new RelayCommand(o => {
                PositionSnapshots.RemoveAll(x => x.Column == SelectedBlock && x.Row == SelectedRow);
                if ((bool)o == true)
                {
                    PositionSnapshots.Insert(0, new PositionSnapshot()
                    {
                        Column = SelectedBlock, Row = SelectedRow
                    });
                }
                RaisePropertyChanged(nameof(PositionSnapshots));
            });
            GoToPositionSnapshot = new RelayCommand(o => { if (o is PositionSnapshot ps)
                                                           {
                                                               SelectedBlock = ps.Column; SelectedRow = ps.Row;
                                                           }
                                                    });
            ColumnConfig = new AvaloniaList <Column>
            {
                new Column()
                {
                    DataField = "DominoColor.mediaColor", Header = "", Class = "Color"
                },
                new Column()
                {
                    DataField = "DominoColor.name", Header = _("Name")
                },
                new Column()
                {
                    DataField = "ProjectCount[0]", Header = GetParticularString("Number of stones available", "Total")
                },
                new Column()
                {
                    DataField = "ProjectCount[1]", Header = GetParticularString("Remaining number of stones", "Remaining"), Class = "Count"
                },
                new Column()
                {
                    DataField = "ProjectCount[2]", Header = string.Format(GetParticularString("Dominoes of the given color within the next {0}", "Next {0}"), NextN)
                }
            };

            OpenPopup = new RelayCommand(x => { FillColorList(); PopupOpen = true; });

            CurrentStones = new ObservableCollection <SolidColorBrush>();
            HistStones    = new ObservableCollection <SolidColorBrush>();
            ColorNames    = new ObservableCollection <ColorAmount>();

            RefreshCanvas();
        }
        public ExportOptions(IDominoProvider provider)
        {
            InitializeComponent();
            var dc = new ExportOptionsVM(provider);

            DataContext         = dc;
            dc.PropertyChanged += ExpVM_PropertyChanged;
        }
Esempio n. 3
0
 public ProtocolVM(IDominoProvider dominoProvider, string fieldName, string assemblyname = "")
 {
     DominoProvider     = dominoProvider;
     dominoTransfer     = DominoProvider.Generate();
     Titel              = fieldName;
     currentOPP.project = assemblyname;
     Init();
 }
Esempio n. 4
0
        public EditProjectVM(IDominoProvider dominoProvider) : base()
        {
            HaveBuildtools = dominoProvider.HasProtocolDefinition ? Visibility.Visible : Visibility.Hidden;

            if (dominoProvider != null && dominoProvider.PrimaryImageTreatment != null)
            {
                if (dominoProvider.PrimaryImageTreatment.FilteredImage != null)
                {
                    FilteredImage = dominoProvider.PrimaryImageTreatment.FilteredImage;
                }
                else
                {
                    BlendFileFilter bff = dominoProvider.PrimaryImageTreatment.ImageFilters.OfType <BlendFileFilter>().FirstOrDefault();
                    if (bff != null)
                    {
                        string relativePath = bff.FilePath;

                        FilteredImage = (System.Drawing.Bitmap)System.Drawing.Image.FromFile(Workspace.AbsolutePathFromReference(ref relativePath, dominoProvider));
                    }
                }
            }

            UICursor         = null;
            selectedDominoes = new List <DominoInCanvas>();
            UnsavedChanges   = false;
            CurrentProject   = dominoProvider;

            _DominoList = new ObservableCollection <ColorListEntry>();

            _DominoList.Clear();
            CurrentProject.colors.Anzeigeindizes.CollectionChanged += Anzeigeindizes_CollectionChanged;
            refreshList();
            selectedColors       = new int[CurrentProject.colors.Length];
            SaveField            = new RelayCommand(o => { Save(); });
            RestoreBasicSettings = new RelayCommand(o => { redoStack = new Stack <PostFilter>(); Editing = false; });

            SelectColor       = new RelayCommand(o => { SelectAllStonesWithColor(); });
            MouseClickCommand = new RelayCommand(o => { ChangeColor(); });
            ClearSelection    = new RelayCommand(o => { ClearFullSelection(); });
            CopyCom           = new RelayCommand(o => { Copy(); });
            PasteCom          = new RelayCommand(o => { Paste(); });

            AddRowAbove         = new RelayCommand(o => { AddRow(false); });
            AddRowBelow         = new RelayCommand(o => { AddRow(true); });
            AddColumnRight      = new RelayCommand(o => { AddColumn(true); });
            AddColumnLeft       = new RelayCommand(o => { AddColumn(false); });
            RemoveRows          = new RelayCommand(o => { RemoveSelRows(); });
            RemoveColumns       = new RelayCommand(o => { RemoveSelColumns(); });
            FlipHorizontallyCom = new RelayCommand(o => { System.Diagnostics.Debug.WriteLine("asdf");; });
            FlipVerticallyCom   = new RelayCommand(o => { System.Diagnostics.Debug.WriteLine("asdf");; });
            ShowImageClick      = new RelayCommand(o => { ShowImage(); });
            MouseInPicture      = new RelayCommand(o => { UICursor = Cursors.Hand; });
            MouseOutPicture     = new RelayCommand(o => { UICursor = null; });
            SelectAllCom        = new RelayCommand(o => { SelectAll(); });
            RefreshCanvas();
            UnsavedChanges = false;
        }
Esempio n. 5
0
 public ProjectExportOptionsVM(IDominoProvider provider) : base()
 {
     ShowImageSize   = true;
     height          = provider.Last.PhysicalHeight;
     width           = provider.Last.PhysicalLength;
     expanded_width  = provider.Last.PhysicalExpandedHeight;
     expanded_height = provider.Last.PhysicalExpandedLength;
     Expandable      = provider is FieldParameters;
     if (provider is FieldParameters fp)
     {
         Collapsed = true;
     }
     MaxSize   = 10000; // height > width ? height : width;
     ImageSize = height > width ? height : width;
     ImageSize = ImageSize > MaxSize ? MaxSize : ImageSize;
     Filename  = Path.GetFileName(Workspace.Find(provider));
 }
        public DominoProviderVM(IDominoProvider dominoProvider, bool?AllowRegenerate) : base()
        {
            CurrentProject   = dominoProvider;
            CalculationVM    = CalculationVM.CalculationVMFactory(CurrentProject.PrimaryCalculation);
            ImageTreatmentVM = ImageTreatmentVM.ImageTreatmentVMFactory(CurrentProject.PrimaryImageTreatment);

            FillColorList();

            BuildtoolsClick = new RelayCommand(o => { OpenBuildTools(); });

            SetDominoCount = new RelayCommand(o =>
            {
                if (CurrentProject is ICountTargetable)
                {
                    DominoCount = (int)Math.Floor((double)o);
                }
            }
                                              );

            EditClick = new RelayCommand(o => { redoStack = new Stack <PostFilter>(); Editing = false; });
            OpenPopup = new RelayCommand(x => PopupOpen = true);

            ColorColumnConfig.Add(new Column()
            {
                DataField = "DominoColor.mediaColor", Header = "", Class = "Color"
            });
            ColorColumnConfig.Add(new Column()
            {
                DataField = "DominoColor.name", Header = _("Name"), Width = new GridLength(100), CanResize = true
            });
            ColorColumnConfig.Add(new Column()
            {
                DataField = "DominoColor.count", Header = GetParticularString("Number of stones available", "Total"), Class = "Count", Width = new GridLength(70), CanResize = true
            });
            ColorColumnConfig.Add(new Column()
            {
                DataField = "SumAll", Header = GetParticularString("Number of stones used in current project", "Used"), HighlightDataField = "DominoColor.count"
            });
            ColorColumnConfig.Add(new Column()
            {
                DataField = "Weight", Header = GetParticularString("Emphasis during calculation", "Weight")
            });

            AllowRegeneration = AllowRegenerate;
        }
Esempio n. 7
0
 public ExportOptionsVM(IDominoProvider provider)
 {
     Cancel          = new RelayCommand((o) => { result = false; Close = true; });
     OK              = new RelayCommand((o) => { result = true; Close = true; });
     height          = provider.last.physicalHeight;
     width           = provider.last.physicalLength;
     expanded_width  = provider.last.physicalExpandedHeight;
     expanded_height = provider.last.physicalExpandedLength;
     Expandable      = provider is FieldParameters ? Visibility.Visible : Visibility.Hidden;
     if (provider is FieldParameters fp)
     {
         Collapsed = true;
     }
     DrawBorders = true;
     MaxSize     = 10000; // height > width ? height : width;
     ImageSize   = height > width ? height : width;
     ImageSize   = ImageSize > MaxSize ? MaxSize : ImageSize;
     Filename    = Path.GetFileName(Workspace.Find(provider));
 }
Esempio n. 8
0
        public static void SaveFieldPlan(IDominoProvider fp, string path)
        {
            FileStream   fs = new FileStream(path, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);

            sw.Write(fp.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"
            }));
            fs.Close();
        }
Esempio n. 9
0
        public static DominoProviderTabItem ViewModelGenerator(IDominoProvider project, string path)
        {
            DominoProviderTabItem Content = null;

            if (project != null)
            {
                if (project.Editing)
                {
                    Content = new EditProjectVM(project);
                }
                else
                {
                    switch (project)
                    {
                    case FieldParameters fieldNode:
                        Content = new CreateFieldVM(fieldNode, true);
                        break;

                    case StructureParameters structureNode:
                        Content = new CreateRectangularStructureVM(structureNode, true);
                        break;

                    case SpiralParameters spiralNode:
                        Content = new CreateSpiralVM(spiralNode, true);
                        break;

                    case CircleParameters circleNode:
                        Content = new CreateCircleVM(circleNode, true);
                        break;

                    default:
                        break;
                    }
                }

                //(Content as DominoProviderTabItem).assemblyname =
                //           OpenProjectSerializer.GetOpenProjects().Where(x => x.id == project.ParentProjectID).First().name;

                (Content as DominoProviderTabItem).name = System.IO.Path.GetFileNameWithoutExtension(path);
            }
            return(Content);
        }
Esempio n. 10
0
        public LiveBuildHelperVM(IDominoProvider pFParameters, int pBlockSize, Core.Orientation orientation, bool MirrorX, bool MirrorY)
        {
            blockSize     = pBlockSize;
            fParameters   = pFParameters;
            intField      = fParameters.GetBaseField(orientation, MirrorX, MirrorY);
            NextN         = 500;
            CountRow      = intField.GetLength(1);
            stonesPerLine = intField.GetLength(0);
            CountBlock    = Convert.ToInt32(Math.Ceiling(((double)stonesPerLine / blockSize)));
            SizeChanged   = new RelayCommand(o => { RefreshCanvas(); });
            MouseDown     = new RelayCommand(o => { currentBlock.Focus(); });
            ColumnConfig  = new ColumnConfig();

            var columns = new ObservableCollection <Column>();

            columns.Add(new Column()
            {
                DataField = "DominoColor.mediaColor", Header = ""
            });
            columns.Add(new Column()
            {
                DataField = "DominoColor.name", Header = "Name"
            });
            columns.Add(new Column()
            {
                DataField = "ProjectCount[0]", Header = "Total used"
            });
            columns.Add(new Column()
            {
                DataField = "ProjectCount[1]", Header = "Remaining"
            });
            columns.Add(new Column()
            {
                DataField = "ProjectCount[2]", Header = "Next " + NextN
            });

            ColumnConfig.Columns = columns;

            OpenPopup = new RelayCommand(x => { FillColorList(); PopupOpen = true; });
        }
Esempio n. 11
0
        public DominoProviderVM(IDominoProvider dominoProvider, bool?AllowRegenerate) : base()
        {
            CurrentProject   = dominoProvider;
            CalculationVM    = CalculationVM.CalculationVMFactory(CurrentProject.PrimaryCalculation);
            ImageTreatmentVM = ImageTreatmentVM.ImageTreatmentVMFactory(CurrentProject.PrimaryImageTreatment);

            FillColorList();

            BuildtoolsClick = new RelayCommand(o => { OpenBuildTools(); });

            EditClick         = new RelayCommand(o => { redoStack = new Stack <PostFilter>();  Editing = false; });
            OpenPopup         = new RelayCommand(x => PopupOpen = true);
            ColorColumnConfig = new ColumnConfig();

            var columns = new ObservableCollection <Column>();

            columns.Add(new Column()
            {
                DataField = "DominoColor.mediaColor", Header = ""
            });
            columns.Add(new Column()
            {
                DataField = "DominoColor.name", Header = "Name"
            });
            columns.Add(new Column()
            {
                DataField = "DominoColor.count", Header = "Total"
            });
            columns.Add(new Column()
            {
                DataField = "SumAll", Header = "Used", HighlightDataField = "DominoColor.count"
            });
            columns.Add(new Column()
            {
                DataField = "Weight", Header = "Weight"
            });
            ColorColumnConfig.Columns = columns;

            AllowRegeneration = AllowRegenerate;
        }
Esempio n. 12
0
        public EditProjectVM(IDominoProvider dominoProvider) : base()
        {
            HaveBuildtools = dominoProvider.HasProtocolDefinition;

            UICursor = null;
            Dominoes = new AvaloniaList <EditingDominoVM>();
            PossiblePastePositions = new List <int>();
            UnsavedChanges         = false;
            CurrentProject         = dominoProvider;

            _DominoList = new ObservableCollection <ColorListEntry>();

            _DominoList.Clear();
            CurrentProject.colors.Anzeigeindizes.CollectionChanged += Anzeigeindizes_CollectionChanged;
            RefreshList();
            selectedColors       = new int[CurrentProject.colors.Length];
            SaveField            = new RelayCommand(o => { Save(); });
            RestoreBasicSettings = new RelayCommand(o => { redoStack = new Stack <PostFilter>(); Editing = false; });

            SelectColor       = new RelayCommand(o => { SelectAllStonesWithColor(); });
            MouseClickCommand = new RelayCommand(o => { ChangeColor(); });
            ClearSelection    = new RelayCommand(o => { ClearFullSelection(true); });
            CopyCom           = new RelayCommand(o => { Copy(); });

            AddRowAbove         = new RelayCommand(o => { AddRow(false); });
            AddRowBelow         = new RelayCommand(o => { AddRow(true); });
            AddColumnRight      = new RelayCommand(o => { AddColumn(true); });
            AddColumnLeft       = new RelayCommand(o => { AddColumn(false); });
            RemoveRows          = new RelayCommand(o => { RemoveSelRows(); });
            RemoveColumns       = new RelayCommand(o => { RemoveSelColumns(); });
            FlipHorizontallyCom = new RelayCommand(o => { System.Diagnostics.Debug.WriteLine("asdf");; });
            FlipVerticallyCom   = new RelayCommand(o => { System.Diagnostics.Debug.WriteLine("asdf");; });
            MouseInPicture      = new RelayCommand(o => { UICursor = new Cursor(StandardCursorType.Hand); });
            MouseOutPicture     = new RelayCommand(o => { UICursor = null; });
            SelectAllCom        = new RelayCommand(o => { SelectAll(); });
            ChangeColorCom      = new RelayCommand(o => { if (o is IDominoColor dc)
                                                          {
                                                              ChangeColor(dc);
                                                          }
                                                   });
            UnsavedChanges      = false;
            SelectionTool       = new SelectionToolVM(this);
            DisplaySettingsTool = new DisplaySettingsToolVM(this);
            ZoomTool            = new ZoomToolVM(this);
            RulerTool           = new RulerToolVM(this);
            EditingTools        = new ObservableCollection <EditingToolVM>()
            {
                SelectionTool,
                RulerTool,
                new EditingToolVM(this)
                {
                    Image = "textDrawingImage", Name = "Write text"
                },
                ZoomTool,
                DisplaySettingsTool
            };
            if (this.CurrentProject is IRowColumnAddableDeletable)
            {
                RowColumnTool = new RowColumnInsertionVM(this);
                EditingTools.Insert(2, RowColumnTool);
            }
            SelectedTool = SelectionTool;
            UpdateUIElements();
        }
Esempio n. 13
0
        public EditProjectVM(IDominoProvider dominoProvider) : base()
        {
            HaveBuildtools = dominoProvider.HasProtocolDefinition ? Visibility.Visible : Visibility.Hidden;

            UICursor         = null;
            selectedDominoes = new List <int>();
            UnsavedChanges   = false;
            CurrentProject   = dominoProvider;

            _DominoList = new ObservableCollection <ColorListEntry>();

            _DominoList.Clear();
            CurrentProject.colors.Anzeigeindizes.CollectionChanged += Anzeigeindizes_CollectionChanged;
            refreshList();
            selectedColors       = new int[CurrentProject.colors.Length];
            SaveField            = new RelayCommand(o => { Save(); });
            RestoreBasicSettings = new RelayCommand(o => { redoStack = new Stack <PostFilter>(); Editing = false; });

            SelectColor       = new RelayCommand(o => { SelectAllStonesWithColor(); });
            MouseClickCommand = new RelayCommand(o => { ChangeColor(); });
            ClearSelection    = new RelayCommand(o => { ClearFullSelection(true); });
            CopyCom           = new RelayCommand(o => { Copy(); });
            PasteCom          = new RelayCommand(o => { Paste(); });

            AddRowAbove         = new RelayCommand(o => { AddRow(false); });
            AddRowBelow         = new RelayCommand(o => { AddRow(true); });
            AddColumnRight      = new RelayCommand(o => { AddColumn(true); });
            AddColumnLeft       = new RelayCommand(o => { AddColumn(false); });
            RemoveRows          = new RelayCommand(o => { RemoveSelRows(); });
            RemoveColumns       = new RelayCommand(o => { RemoveSelColumns(); });
            FlipHorizontallyCom = new RelayCommand(o => { System.Diagnostics.Debug.WriteLine("asdf");; });
            FlipVerticallyCom   = new RelayCommand(o => { System.Diagnostics.Debug.WriteLine("asdf");; });
            MouseInPicture      = new RelayCommand(o => { UICursor = Cursors.Hand; });
            MouseOutPicture     = new RelayCommand(o => { UICursor = null; });
            SelectAllCom        = new RelayCommand(o => { SelectAll(); });
            UnsavedChanges      = false;
            SelectionTool       = new SelectionToolVM(this);
            DisplaySettingsTool = new DisplaySettingsToolVM(this);
            ZoomTool            = new ZoomToolVM(this);
            EditingTools        = new ObservableCollection <EditingToolVM>()
            {
                SelectionTool,
                new EditingToolVM()
                {
                    Image = "ruler2DrawingImage", Name = "Measure distance"
                },
                new EditingToolVM()
                {
                    Image = "add_delete_rowDrawingImage", Name = "Add or delete rows and columns"
                },
                new EditingToolVM()
                {
                    Image = "textDrawingImage", Name = "Write text"
                },
                new EditingToolVM()
                {
                    Image = "fill_bucketDrawingImage", Name = "Fill area"
                },
                ZoomTool,
                DisplaySettingsTool
            };
            SelectedTool = SelectionTool;
            UpdateUIElements();
        }
Esempio n. 14
0
        static void CircleTest(string path)
        {
            Console.WriteLine("=======   CIRCLE TEST   =======");
            Progress <String> progress = new Progress <string>(pr => Console.WriteLine(pr));

            //Mat mat = CvInvoke.Imread(path, ImreadModes.AnyColor);
            CircleParameters p = new CircleParameters(Path.GetFullPath("tests/Circle.DObject"), path, 150, "colors.DColor",
                                                      ColorDetectionMode.CieDe2000Comparison, new FloydSteinbergDithering(), AverageMode.Corner, new NoColorRestriction());

            p.AngleShiftFactor  = -0.02;
            p.ForceDivisibility = 5;
            p.StartDiameter     = 200;
            ((NonEmptyCalculation)p.PrimaryCalculation).Dithering = new FloydSteinbergDithering();

            var watch = System.Diagnostics.Stopwatch.StartNew();
            //DominoTransfer t = await Dispatcher.CurrentDispatcher.Invoke(async () => await Task.Run(() => p.Generate(wb, progress)));

            DominoTransfer t = p.Generate();

            Console.WriteLine(t.length);
            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds);
            watch = System.Diagnostics.Stopwatch.StartNew();
            Mat b2 = t.GenerateImage();

            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds);
            b2.Save("tests/CircleTest.png");
            FileStream   fs = new FileStream(@"SpiralPlanTest.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("ExcelFieldPlanTest.xlsx", new ObjectProtocolParameters()
            //{
            //    backColorMode = ColorMode.Normal,
            //    foreColorMode = ColorMode.Intelligent,
            //    orientation = Orientation.Horizontal,
            //    reverse = false,
            //    summaryMode = SummaryMode.Large,
            //    textFormat = "<font face=\"Verdana\">",
            //    templateLength = 20,
            //    textRegex = "%count%",
            //    title = "Field",
            //    path = Directory.GetCurrentDirectory()

            //});
            sw.Close();
            p.Save();
            IDominoProvider c = Workspace.Load <IDominoProvider>("circle.DObject");
        }