Ejemplo n.º 1
0
        public CAForm()
        {
            // CONSTRUCTOR
            DoubleBuffered = true;
            Text = "CA 2011";
            Size = new Size(WIDTH, HEIGHT);
            ToolTip tooltip = new ToolTip();
            tooltip.SetToolTip(this, "Click or draw to add cells!");
            Bitmap bm;
            try {
            bm = LoadBitmap("bgr.jpg");
            } catch (Exception) {
            bm = CreateBitmap(SP_WIDTH, SP_HEIGHT);
            }
            caController = new Controller(bm, bm.Width, bm.Height); // ClientSize.Width, ClientSize.Height);
            ResizeRedraw = true;
            Graphics gf = CreateGraphics();
            gf.DrawImageUnscaled(caController.Surface, 0, 0);

            //Bitmap shade = new Bitmap(ClientSize.Width, 50);
            //Graphics g = Graphics.FromImage(shade);
            //Brush b = new SolidBrush(Color.FromArgb(20, 200, 200, 200));
            //gf.FillRectangle(b, new Rectangle(0, 0, ClientSize.Width, 50));
            //g.DrawImageUnscaled(shade, 0, 0);
            //g.Dispose();
            //Graphics gs = CreateGraphics();
            //gf.DrawImageUnscaled(shade, 0, 0);

            tmr = new Timer();
            tmr.Enabled = false;
            tmr.Interval = 50;
            tmr.Tick += new EventHandler(HandleTick);
            if (!caController.Calc.GradientTest) {
            //tmr.Start();
            }

            Panel p = new Panel();
            p.Width = ClientSize.Width - bm.Width;
            p.Dock = DockStyle.Right;
            p.Parent = this;

            Button startButton = new Button();
            startButton.Text = "Start";
            startButton.Location = new Point(p.Width - startButton.Width - 10, 20);
            startButton.Anchor = AnchorStyles.Right;
            startButton.Click += new EventHandler(OnStartClick);
            startButton.Parent = p;

            sb = new StatusBar();
            sb.Parent = this;
            sb.Text = "Generations: 0";
            caController.Calc.PropertyChanged += new PropertyChangedEventHandler(OnGenerationsChanged);

            //Controls.Add();
            CenterToScreen();
        }
Ejemplo n.º 2
0
        public CAForm()
        {
            // CONSTRUCTOR
            DoubleBuffered = true;
            Text = "CA 2011";
            Size = new Size(WIDTH, HEIGHT);
            ToolTip tooltip = new ToolTip();
            tooltip.SetToolTip(this, "Click or draw to add cells!");
            Bitmap bm;
            try {
                bm = LoadBitmap("bgr.jpg");
            } catch (Exception) {
                bm = CreateBitmap(SP_WIDTH, SP_HEIGHT);
            }
            // Creating palette
            //Gfx.Palette.Map paletteMap = new Gfx.Palette.Map();

            //paletteMap.setColorStop(0, new Gfx.Palette.ColorStop(0, Color.White));
            //paletteMap.setColorStop(3, new Gfx.Palette.ColorStop(3, Color.LightSteelBlue)); // Color.Yellow));
            //paletteMap.setColorStop(10, new Gfx.Palette.ColorStop(10, Color.SteelBlue)); // Color.Lime));
            //paletteMap.setColorStop(95, new Gfx.Palette.ColorStop(99, Color.DarkBlue)); //.SaddleBrown));
            //paletteMap.setColorStop(100, new Gfx.Palette.ColorStop(100, Color.DarkTurquoise));

            //paletteMap.setColorStop(0, new Gfx.Palette.GradientEditor.GradientStop(Color.White, 0));
            //paletteMap.setColorStop(3, new Gfx.Palette.GradientEditor.GradientStop(Color.LightSteelBlue, 3)); // Color.Yellow));
            //paletteMap.setColorStop(10, new Gfx.Palette.GradientEditor.GradientStop(Color.SteelBlue, 10)); // Color.Lime));
            //paletteMap.setColorStop(95, new Gfx.Palette.GradientEditor.GradientStop(Color.DarkBlue, 99)); //.SaddleBrown));
            //paletteMap.setColorStop(100, new Gfx.Palette.GradientEditor.GradientStop(Color.DarkTurquoise, 100));

            //paletteMap.setColorStop(0, new ColorStop(0, Color.Yellow));
            //paletteMap.setColorStop(10, new ColorStop(10, Color.Lime));
            //paletteMap.setColorStop(80, new ColorStop(85, Color.DarkRed));
            //paletteMap.setColorStop(100, new ColorStop(100, Color.SaddleBrown));

            Panel p = new TableLayoutPanel();
            p.Width = ClientSize.Width - bm.Width;
            p.Padding = new Padding(5);
            p.Dock = DockStyle.Right;
            p.Parent = this;

            //GradientEditor gedit = new GradientEditor(paletteMap);
            gedit = new GradientEditor();
            gedit.Anchor = AnchorStyles.Left | AnchorStyles.Right;
            gedit.setColorStop(new Gfx.Palette.GradientEditor.GradientStop(Color.White, 0));
            gedit.setColorStop(new Gfx.Palette.GradientEditor.GradientStop(Color.LightSteelBlue, 3)); // Color.Yellow));
            gedit.setColorStop(new Gfx.Palette.GradientEditor.GradientStop(Color.SteelBlue, 10)); // Color.Lime));
            gedit.setColorStop(new Gfx.Palette.GradientEditor.GradientStop(Color.DarkBlue, 95)); //.SaddleBrown));
            gedit.setColorStop(new Gfx.Palette.GradientEditor.GradientStop(Color.DarkTurquoise, 100));
            gedit.MapChanged += new GradientEditor.MapChangedEventHandler(GeditMapChangedHandler);

            //caController = new Controller(bm, bm.Width, bm.Height, paletteMap); // ClientSize.Width, ClientSize.Height);
            caController = new Controller(bm, bm.Width, bm.Height, gedit.getMap());
            ResizeRedraw = true;
            Graphics gf = CreateGraphics();
            gf.DrawImageUnscaled(caController.Surface, 0, 0);

            //Bitmap shade = new Bitmap(ClientSize.Width, 50);
            //Graphics g = Graphics.FromImage(shade);
            //Brush b = new SolidBrush(Color.FromArgb(20, 200, 200, 200));
            //gf.FillRectangle(b, new Rectangle(0, 0, ClientSize.Width, 50));
            //g.DrawImageUnscaled(shade, 0, 0);
            //g.Dispose();
            //Graphics gs = CreateGraphics();
            //gf.DrawImageUnscaled(shade, 0, 0);

            startButton = new Button();
            startButton.Text = "Start";
            startButton.Anchor = AnchorStyles.Left | AnchorStyles.Right;
            startButton.Click += new EventHandler(OnStartClick);
            startButton.Parent = p;

            Button randomButton = new Button();
            randomButton.Text = "Randomize";
            randomButton.Anchor = AnchorStyles.Left | AnchorStyles.Right;
            randomButton.Click += new EventHandler(OnRandomClick);
            randomButton.Parent = p;

            Button resetButton = new Button();
            resetButton.Text = "Reset";
            resetButton.Anchor = AnchorStyles.Left | AnchorStyles.Right;
            resetButton.Click += new EventHandler(OnResetClick);
            resetButton.Parent = p;

            crmGB = new GroupBox();
            crmGB.Text = "Cell relations";
            crmGB.Anchor = AnchorStyles.Left | AnchorStyles.Right;
            crmGB.Width = p.Width - 20;
            crmGB.Parent = p;

            crmCB = new CellRelationCheckBox[3, 3];
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    if (!(i == 1 && j == 1)) {
                        crmCB[i, j] = new CellRelationCheckBox(i, j);
                        crmCB[i, j].Location = new Point(j * 20 + 20, i * 20 + 20);
                        crmCB[i, j].Width = 20;
                        crmCB[i, j].Checked = caController.Calc.sm[i, j];
                        crmCB[i, j].CheckedChanged += new EventHandler(OnCrmCBChanged);
                        crmCB[i, j].Parent = crmGB;
                    }
                }
            }

            Label livLabel = new Label();
            livLabel.Text = "Create cells on:";
            livLabel.AutoSize = true;
            livLabel.Parent = p;

            livTB = new TextBox();
            livTB.Anchor = AnchorStyles.Left | AnchorStyles.Right;
            livTB.KeyUp += new KeyEventHandler(OnKeyUp);
            livTB.Name = "livTB";
            RefreshLivDthTB(livTB);
            livTB.Validating += OnLivDthTextValidating;
            livTB.Parent = p;

            ToolTip livTT = new ToolTip();
            livTT.SetToolTip(livTB, "Comma separated numbers of neighboring cells that makes an empty space filled (eg: 0,3,5,8).");

            Label dthLabel = new Label();
            dthLabel.Text = "Destroy cells on:";
            dthLabel.AutoSize = true;
            dthLabel.Parent = p;

            dthTB = new TextBox();
            dthTB.Anchor = AnchorStyles.Left | AnchorStyles.Right;
            dthTB.KeyUp += new KeyEventHandler(OnKeyUp);
            dthTB.Name = "dthTB";
            RefreshLivDthTB(dthTB);
            dthTB.Validating += OnLivDthTextValidating;
            dthTB.Parent = p;

            ToolTip dthTT = new ToolTip();
            dthTT.SetToolTip(dthTB, "Comma separated numbers of neighboring cells that makes a filled space empty (eg: 0,1,4,8).");

            ageingCB = new CheckBox();
            ageingCB.Location = new Point(10, 40);
            ageingCB.Text = "Ageing";
            ageingCB.Checked = true;
            ageingCB.Parent = p;
            ageingCB.CheckedChanged += new EventHandler(OnAgeingCBChanged);

            Label geditLabel = new Label();
            geditLabel.Text = "Colors of ageing:";
            geditLabel.Location = new Point(10, 280);
            geditLabel.AutoSize = true;
            geditLabel.Parent = p;

            gedit.Parent = p;

            Button saveImg = new Button();
            saveImg.Text = "Export image...";
            saveImg.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
            saveImg.Click += new EventHandler(OnSaveImgClick);
            saveImg.Parent = p;

            Button loadImg = new Button();
            loadImg.Text = "Import image...";
            loadImg.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
            loadImg.Click += new EventHandler(OnLoadImgClick);
            loadImg.Parent = p;

            Button saveSettings = new Button();
            saveSettings.Text = "Save config...";
            saveSettings.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
            saveSettings.Click += new EventHandler(OnSaveSettingsClick);
            saveSettings.Parent = p;

            Button loadSettings = new Button();
            loadSettings.Text = "Load config...";
            loadSettings.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
            loadSettings.Click += new EventHandler(OnLoadSettingsClick);
            loadSettings.Parent = p;

            tmr = new Timer();
            tmr.Enabled = false;
            tmr.Interval = 50;
            tmr.Tick += new EventHandler(HandleTick);
            if (!caController.Calc.GradientTest) {
                //tmr.Start();
            }

            Button quitButton = new Button();
            quitButton.Text = "Quit";
            quitButton.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
            //quitButton.Dock = DockStyle.Top;
            quitButton.Click += new EventHandler(OnQuitClick);
            quitButton.Parent = p;

            sb = new StatusBar();
            sb.Text = "Generations: 0";
            sb.Parent = this;
            caController.Calc.PropertyChanged += new PropertyChangedEventHandler(OnGenerationsChanged);

            //Controls.Add();
            CenterToScreen();
        }