예제 #1
0
        public UzorItem(UzorData data, string path, MainPage p)
        {
            InitializeComponent();
            this.Data = data;
            this.path = path;
            UzorPixelFieldView upv = this.preview;

            DemonstrateUzorEditorObject udb = new DemonstrateUzorEditorObject();

            udb.Data         = data;
            udb.GradientMode = false;

            //upv.ThisData = data;
            upv.EditorObjectssList.Add(udb);
            upv.DrawView();
            this.itemName.Text = data.Name.Split("/".ToCharArray()).Last();
            this.itemDate.Text = data.DataOfCreation.ToString();

            /** WTF??? **/

            /*this.mineFrame.BackgroundColor = new Xamarin.Forms.Color( data.Layers[0].BackColor.R,
             *                                          data.Layers[0].BackColor.G,
             *                                          data.Layers[0].BackColor.B,
             *                                          data.Layers[0].BackColor.A);*/

            this.mineFrame.BackgroundColor = Color.FromRgba(data.Layers[0].BackColor.R,
                                                            data.Layers[0].BackColor.G,
                                                            data.Layers[0].BackColor.B,
                                                            data.Layers[0].BackColor.A);
            this.pageForAlert = p;
        }
예제 #2
0
        public static string SaveInInternalStorage(UzorData data) // returns the save path
        {
            return(saveObjectInInternalStorage(data, data.Name, ".ubf"));

            /* string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
             *
             * string fileName = data.Name + ".ubf";
             *
             * if (File.Exists(Path.Combine(folderPath, data.Name + ".ubf")))
             *   for (int i = 0; i < 999; i++)
             *       if (File.Exists(Path.Combine(folderPath, data.Name + i.ToString() + ".ubf")))
             *           continue;
             *       else
             *       {
             *           fileName = data.Name + i.ToString() + ".ubf";
             *           //data.Name = data.Name + i.ToString();
             *           break;
             *       }
             *
             *
             * var savedFilePath = folderPath + "/" + fileName;
             *
             * FileStream fs = new FileStream(savedFilePath, FileMode.OpenOrCreate);
             * new BinaryFormatter().Serialize(fs, data);
             * fs.Dispose();
             *
             * return savedFilePath;*/
        }
예제 #3
0
        public static void ReSave(UzorData data, string path)
        {
            FileStream fsr = new FileStream(path, FileMode.Truncate);

            new BinaryFormatter().Serialize(fsr, data);
            fsr.Dispose();
        }
예제 #4
0
        public UzorItem(UzorData data) // for SelectionItemPage
        {
            InitializeComponent();

            selectItemMode = true;
            this.Data      = data;

            UzorPixelFieldView upv = this.preview;

            DemonstrateUzorEditorObject udb = new DemonstrateUzorEditorObject();

            udb.Data         = data;
            udb.GradientMode = false;

            //upv.ThisData = data;
            upv.EditorObjectssList.Add(udb);
            upv.DrawView();

            if (data.Name == null)
            {
                data.Name = "";
            }

            this.itemName.Text             = data.Name.Split("/".ToCharArray()).Last();
            this.itemDate.Text             = data.DataOfCreation.ToString();
            this.mineFrame.BackgroundColor = Color.FromRgba(data.Layers[0].BackColor.R,
                                                            data.Layers[0].BackColor.G,
                                                            data.Layers[0].BackColor.B,
                                                            data.Layers[0].BackColor.A);

            this.deleteButton.IsVisible = false;
            this.shadow.IsVisible       = false;
        }
예제 #5
0
 public NameEditorView(UzorData data, Grid grid)
 {
     InitializeComponent();
     this.grid = grid;
     grid.Children.Add(this);
     this.data           = data;
     this.nameEntry.Text = data.Name == null ? "" : data.Name;
 }
예제 #6
0
 public ColorPickerView(UzorData data)
 {
     this.data = data;
     InitializeComponent();
     this.frontColor           = data.Layers[0].FrontColor.ToNativeColor();
     this.backColor            = data.Layers[0].BackColor.ToNativeColor();
     this.picker.SelectedIndex = 0;
     setColorSliderValues();
     updateView();
 }
예제 #7
0
 public ImageBufferSaveView(UzorData data)
 {
     this.uzorData     = data;
     this.bitmapWidth  = data.FieldSize * currentPixelSize;
     this.bitmapHeight = bitmapWidth;
     InitializeComponent();
     setDefaultPickerValue();
     this.heightSlider.IsVisible         = false;
     this.bitmapPreviewViewFrame.Content = new BitmapPreviewView(bitmap);
     updateSquareUzorBitmap();
 }
예제 #8
0
        public UzorItemPage(UzorData data, string path, MainPage p)
        {
            NavigationPage.SetHasNavigationBar(this, false);
            InitializeComponent();
            this.path         = path;
            this.data         = data;
            this.pageForAlert = p;
            var upfView = new UzorPixelFieldView();

            this.uzorFieldFrame.Content = upfView;
            buildUzorPreview();
            itemNameLabel.Text = data.Name;
        }
예제 #9
0
 public UzorEditElementView(UzorData data, Grid backGroundGrid = null)
 {
     InitializeComponent();
     this.Data = data;
     Device.StartTimer(TimeSpan.FromMilliseconds(350), OnTimerTick);
     this.BackgroundGrid = backGroundGrid == null ? this.mainGrid : backGroundGrid;
     //
     //Device.StartTimer(TimeSpan.FromSeconds(1), () => {
     //    var v = new TipsViewer(BackgroundGrid);
     //    this.BackgroundGrid.Children.Add(v);
     //    return false;
     //});
 }
예제 #10
0
        public void SaveSetting(UzorData data)
        {
            creatingPageGrid.Children.Remove(newUzorSettingView);

            var v = new UzorEditElementView(data, this.mainGrid);

            v.IsNewUzor    = true; // only for set cropMask as standart figure
            v.PageForAlert = this.pageForAlert;
            //uzorDataList.Add(v.UzorView.ThisData);
            uzorEditElementViewList.Add(v);

            creatingPageGrid.Children.Add(v, 0, 1);

            if (newUzorSettingView.IsSquareUzorMode)
            {
                this.saveTopPanel = new UzorEditorSaveTopPanel();
                saveTopPanel.SaveButton.Clicked += v.SaveButton_Click;
                saveTopPanel.BackButton.Clicked += BackButton_Clicked;
                creatingPageGrid.Children.Add(saveTopPanel, 0, 0);
                v.cropButton.IsVisible       = false;
                v.cropButtonShadow.IsVisible = false;
                isSquareMode = true;
                //v.cropSlider.IsVisible = false;
            }
            else
            {
                this.stepsPanel           = new UzorEditorStepsTopPanel();
                this.longUzorData         = new LongUzorData();
                longUzorData.UzorElements = new UzorData[2] {
                    data, null
                };
                stepsPanel.NextButton.Clicked   += NextButton_Clicked;
                stepsPanel.BeforeButton.Clicked += BeforeButton_Clicked;
                creatingPageGrid.Children.Add(stepsPanel, 0, 0);

                this.stepsPanel.StepLabel.Text = this.stepNumber + "/" + this.maxStepValue;
            }
            // gridCreatingPage.Children.Add(new NewUzorSetting(SaveSetting));

            creatingPageGrid.RowDefinitions[0].Height = 60;

            if (Preferences.Get("TipViewShow", true))
            {
                Device.StartTimer(TimeSpan.FromSeconds(1), () => {
                    var t = new TipsViewer(this.mainGrid, !newUzorSettingView.IsSquareUzorMode);
                    this.mainGrid.Children.Add(t);
                    return(false);
                });
            }
        }
예제 #11
0
        private UzorData makeDemonstrateUzor()
        {
            var d = new UzorData("", DateTime.Now, 24);

            d.Clear();

            var b = new bool[24, 24];

            b[11, 11] = true;
            b[11, 12] = true;
            b[12, 11] = true;
            b[12, 12] = true;
            d.Layers[0].AddNextState(b);

            return(d);
        }
예제 #12
0
        public CropIndicator(UzorData data)
        {
            this.Data = data;

            if (data.CropMaskIsEmpty())
            {
                //this.crop = data.FieldSize / 2 - 1;
                this.cropFieldMask = null;
            }
            else
            {
                //this.cropFieldMask = data.CropMask;
                this.crop = data.GetMaskSize() / 2;
            }

            this.IsVisible = false;
        }
예제 #13
0
        private UzorData makeRoundDemonstrateUzor()
        {
            var d = new UzorData("", DateTime.Now, 27);

            d.Clear();

            var b = new bool[27, 27];

            b[13, 13] = true;
            b[13, 12] = true;
            b[13, 14] = true;
            b[12, 13] = true;
            b[14, 13] = true;
            d.Layers[0].AddNextState(b);

            return(d);
        }
예제 #14
0
        private void uzorCreatingPage_Closed(object sender, EventArgs e)
        {
            var p = (UzorCreatingPage)sender;

            if (p.Action == UzorCreatingPage.ActionStatus.Saved)
            {
                UzorProjectFileManager.ReSave(this.data, path);
                pageForAlert.MakeUzorItemList();
            }

            else if (p.Action == UzorCreatingPage.ActionStatus.Canceled)
            {
                this.data = UzorProjectFileManager.LoadUzorData(path);
            }

            buildUzorPreview();
        }
예제 #15
0
        public static UzorData LoadUzorData(string path)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      fs        = new FileStream(path, FileMode.Open);

            UzorData d = null;

            try
            {
                d = (UzorData)formatter.Deserialize(fs);
            }
            catch (System.Runtime.Serialization.SerializationException e)
            {
                return(new UzorData("SERIALIZATION ERROR", System.DateTime.Now, 20));
            }

            fs.Dispose();
            return(d);
        }
예제 #16
0
        public UzorCreatingPage(UzorData data, MainPage p) // for editing a previously created Uzor
        {
            InitializeComponent();
            NavigationPage.SetHasNavigationBar(this, false);
            var v = new UzorEditElementView(data, this.mainGrid);

            this.pageForAlert = p;
            uzorEditElementViewList.Add(v);
            creatingPageGrid.Children.Add(v, 0, 1);

            this.saveTopPanel = new UzorEditorSaveTopPanel();
            saveTopPanel.SaveButton.Clicked  += saveChanges_Clicked;
            saveTopPanel.BackButton.Clicked  += cancelChanges_Clicked;
            saveTopPanel.BackButton.Text      = AppResource.Cancel;
            saveTopPanel.SaveButton.Text      = AppResource.Ok;
            saveTopPanel.BackButton.IsEnabled = false; // canceling does not working
            creatingPageGrid.Children.Add(saveTopPanel, 0, 0);
            creatingPageGrid.RowDefinitions[0].Height = 60;
            v.cropButton.IsVisible = true;
        }
예제 #17
0
        public static UzorData GetNewSideUzor(int fieldSize)
        {
            if (fieldSize % 2 == 0)
            {
                fieldSize--;
            }

            var data = new UzorData("", DateTime.Now, fieldSize < 5 ? 7 : fieldSize);

            bool[,] field = new bool[fieldSize, fieldSize];
            fillFieldInBaseSample(ref field, fieldSize);
            data.Layers[0].AddNextState(field);

            do
            {
                BasicDrawingAlgorithm.Calculate(data.Layers[0]);
            } while (!edgeFilled(data.Layers[0].GetLastState()));

            data.CropMask = RhombAlgorithm.GetRhombMask(fieldSize / 2, fieldSize);
            return(data);
        }
예제 #18
0
 public Background(UzorData data)
 {
     this.Data = data;
 }
예제 #19
0
 public UzorDrawingObject(UzorData data)
 {
     this.Data       = data;
     this.renderMode = Preferences.Get("RenderMode", true);
 }
예제 #20
0
        private UzorData makeAndFillUzor()
        {
            var d = new UzorData(entryName.Text, DateTime.Now, (int)sizeSlider.Value);

            if (d.FieldSize % 2 == 0)
            {
                switch (new Random().Next(1, 3))
                {
                case 1:     //while (new Random().Next(1, 3) != 3) { }
                    var b = new bool[d.FieldSize, d.FieldSize];
                    b[d.FieldSize / 2, d.FieldSize / 2]         = true;
                    b[d.FieldSize / 2, d.FieldSize / 2 - 1]     = true;
                    b[d.FieldSize / 2 - 1, d.FieldSize / 2 - 1] = true;
                    b[d.FieldSize / 2 - 1, d.FieldSize / 2]     = true;

                    d.Layers[0].AddNextState(b);

                    return(d);

                case 2:
                case 3:
                    var b2 = new bool[d.FieldSize, d.FieldSize];
                    //Central
                    b2[d.FieldSize / 2, d.FieldSize / 2]         = true;
                    b2[d.FieldSize / 2, d.FieldSize / 2 - 1]     = true;
                    b2[d.FieldSize / 2 - 1, d.FieldSize / 2 - 1] = true;
                    b2[d.FieldSize / 2 - 1, d.FieldSize / 2]     = true;

                    b2[d.FieldSize / 2, d.FieldSize / 2 + 1]     = true;
                    b2[d.FieldSize / 2 - 1, d.FieldSize / 2 + 1] = true;
                    b2[d.FieldSize / 2, d.FieldSize / 2 + 2]     = true;
                    b2[d.FieldSize / 2 - 1, d.FieldSize / 2 + 2] = true;

                    b2[d.FieldSize / 2 - 1, d.FieldSize / 2 - 2] = true;
                    b2[d.FieldSize / 2, d.FieldSize / 2 - 2]     = true;
                    b2[d.FieldSize / 2 - 1, d.FieldSize / 2 - 3] = true;
                    b2[d.FieldSize / 2, d.FieldSize / 2 - 3]     = true;

                    b2[d.FieldSize / 2 - 2, d.FieldSize / 2 - 1] = true;
                    b2[d.FieldSize / 2 - 2, d.FieldSize / 2]     = true;
                    b2[d.FieldSize / 2 - 3, d.FieldSize / 2 - 1] = true;
                    b2[d.FieldSize / 2 - 3, d.FieldSize / 2]     = true;

                    b2[d.FieldSize / 2 + 1, d.FieldSize / 2 - 1] = true;
                    b2[d.FieldSize / 2 + 1, d.FieldSize / 2]     = true;
                    b2[d.FieldSize / 2 + 2, d.FieldSize / 2 - 1] = true;
                    b2[d.FieldSize / 2 + 2, d.FieldSize / 2]     = true;

                    d.Layers[0].AddNextState(b2);

                    return(d);
                }
            }
            else
            {
                switch (new Random().Next(1, 3))
                {
                case 1:
                    var b = new bool[d.FieldSize, d.FieldSize];
                    b[d.FieldSize / 2, d.FieldSize / 2]     = true;
                    b[d.FieldSize / 2, d.FieldSize / 2 - 1] = true;
                    b[d.FieldSize / 2, d.FieldSize / 2 + 1] = true;
                    b[d.FieldSize / 2 - 1, d.FieldSize / 2] = true;
                    b[d.FieldSize / 2 + 1, d.FieldSize / 2] = true;

                    d.Layers[0].AddNextState(b);

                    return(d);

                case 2:
                case 3:
                    // TODO: remake
                    var b2 = new bool[d.FieldSize, d.FieldSize];
                    //Central
                    var arr = new bool[5, 5]
                    {
                        { false, false, true, false, false },
                        { false, true, true, true, false },
                        { true, true, true, true, true },
                        { false, true, true, true, false },
                        { false, false, true, false, false },
                    };

                    for (int i = b2.GetLength(0) / 2 - 2; i <= b2.GetLength(0) / 2 + 2; i++)
                    {
                        for (int j = b2.GetLength(1) / 2 - 2; j <= b2.GetLength(1) / 2 + 2; j++)
                        {
                            b2[i, j] = arr[i - (b2.GetLength(0) / 2 - 2), j - (b2.GetLength(1) / 2 - 2)];
                        }
                    }

                    d.Layers[0].AddNextState(b2);

                    return(d);
                }
            }

            return(null);
        }
예제 #21
0
        private async void NextButton_Clicked(object sender, EventArgs e)
        {
            if (stepNumber < maxStepValue)
            {
                if (this.longUzorData.UzorElements[stepNumber - 1].CropMaskIsEmpty())
                {
                    uzorEditElementViewList[stepNumber - 1].sliderPanel.IsVisible       = true;
                    uzorEditElementViewList[stepNumber - 1].sliderPanelShadow.IsVisible = true;
                    uzorEditElementViewList[stepNumber - 1].cropSlider.Value            = uzorEditElementViewList[stepNumber - 1].Data.FieldSize / 2 - 1;
                    uzorEditElementViewList[stepNumber - 1].IsNewUzor          = false;
                    uzorEditElementViewList[stepNumber - 1].cropIndicator.Crop = (int)uzorEditElementViewList[stepNumber - 1].cropSlider.Value;

                    if (uzorEditElementViewList[stepNumber - 1].mirrorIndicator.IsVisible)
                    {
                        uzorEditElementViewList[stepNumber - 1].MirrorButtonClick(null, null);
                    }

                    uzorEditElementViewList[stepNumber - 1].UzorView.DrawView();

                    if (nextButtonPressed)
                    {
                        uzorEditElementViewList[stepNumber - 1].sliderPanel.ScaleTo(1.1);
                    }

                    nextButtonPressed = true;
                    return;
                }

                nextButtonPressed = false;

                if (this.longUzorData.UzorElements[stepNumber] == null)  // expand array of UzorElements and creating new View
                {
                    var current = this.longUzorData.UzorElements[0];

                    var nextUzorData = new UzorData(current.Name, current.DataOfCreation, current.GetMaskSize());

                    nextUzorData.Layers[0].FrontColor = new PixelColor(current.Layers[0].FrontColor.R,
                                                                       current.Layers[0].FrontColor.G,
                                                                       current.Layers[0].FrontColor.B,
                                                                       current.Layers[0].FrontColor.A);

                    nextUzorData.Layers[0].BackColor = new PixelColor(current.Layers[0].BackColor.R,
                                                                      current.Layers[0].BackColor.G,
                                                                      current.Layers[0].BackColor.B,
                                                                      current.Layers[0].BackColor.A);

                    this.longUzorData.UzorElements[stepNumber - 1 + 1] = nextUzorData;

                    var v = new UzorEditElementView(nextUzorData, this.mainGrid);
                    uzorEditElementViewList.Add(v);

                    uzorEditElementViewList[uzorEditElementViewList.Count - 1].UzorView.BecomeSquare();
                }

                this.creatingPageGrid.Children.Remove(uzorEditElementViewList[stepNumber - 1]);
                stepNumber++;
                this.creatingPageGrid.Children.Add(uzorEditElementViewList[stepNumber - 1], 0, 1);

                this.stepsPanel.StepLabel.Text = this.stepNumber + "/" + this.maxStepValue;


                if (stepNumber == maxStepValue)
                {
                    // TODO: replace icon
                }


                /*************** CRUTCHES ***************/

                uzorEditElementViewList[stepNumber - 1].UzorView.MinimumHeightRequest = 0;
                uzorEditElementViewList[stepNumber - 1].BatchBegin();

                /***  UzorView does not change its size ***/
            }
            else
            {
                longUzorData.SidePattern = SideUzorGenerator.GetNewSideUzor(longUzorData.UzorElements[0].FieldSize);
                longUzorData.SidePattern.Layers[0].FrontColor = longUzorData.UzorElements[0].Layers[0].FrontColor;

                longUzorData.SidePattern.Layers[0].FrontColor = new PixelColor(longUzorData.UzorElements[0].Layers[0].FrontColor.R,
                                                                               longUzorData.UzorElements[0].Layers[0].FrontColor.G,
                                                                               longUzorData.UzorElements[0].Layers[0].FrontColor.B,
                                                                               longUzorData.UzorElements[0].Layers[0].FrontColor.A);

                LongUzorEditorPage longUzorPage = new LongUzorEditorPage(longUzorData, pageForAlert, true);
                longUzorPage.Closed += longUzorEditorPage_Closed;

                if (!pushModalAsyncWorked)
                {
                    pushModalAsyncWorked = true;
                    await Navigation.PushModalAsync(new NavigationPage(longUzorPage), true);
                }
            }
        }