Beispiel #1
0
		public image_resample()
		{
			m_gamma_lut = new GammaLookUpTable(2.0);
			m_quad = new MatterHackers.Agg.UI.PolygonEditWidget(4, 5.0);
			m_trans_type = new MatterHackers.Agg.UI.RadioButtonGroup(new Vector2(400, 5.0), new Vector2(30 + 170.0, 95));
			m_gamma = new MatterHackers.Agg.UI.Slider(5.0, 5.0 + 15 * 0, 400 - 5, 10.0 + 15 * 0);
			m_blur = new MatterHackers.Agg.UI.Slider(5.0, 5.0 + 15 * 1, 400 - 5, 10.0 + 15 * 1);
			m_blur.ValueChanged += new EventHandler(NeedRedraw);
			m_gamma.ValueChanged += new EventHandler(NeedRedraw);
			m_old_gamma = 2.0;

			g_rasterizer = new ScanlineRasterizer();
			g_scanline = new scanline_unpacked_8();

			m_trans_type.AddRadioButton("Affine No Resample");
			m_trans_type.AddRadioButton("Affine Resample");
			m_trans_type.AddRadioButton("Perspective No Resample LERP");
			m_trans_type.AddRadioButton("Perspective No Resample Exact");
			m_trans_type.AddRadioButton("Perspective Resample LERP");
			m_trans_type.AddRadioButton("Perspective Resample Exact");
			m_trans_type.SelectedIndex = 4;
			AddChild(m_trans_type);

			m_gamma.SetRange(0.5, 3.0);
			m_gamma.Value = 2.0;
			m_gamma.Text = "Gamma={0:F3}";
			AddChild(m_gamma);

			m_blur.SetRange(0.5, 5.0);
			m_blur.Value = 1.0;
			m_blur.Text = "Blur={0:F3}";
			AddChild(m_blur);
		}
Beispiel #2
0
		public trans_curve1_application()
		{
			AnchorAll();

			m_poly = new PolygonEditWidget(6, 5);
			on_init();
			m_poly.Changed += NeedsRedraw;
			AddChild(m_poly);

			m_num_points = new MatterHackers.Agg.UI.Slider(5, 5, 340, 12);

			m_num_points.ValueChanged += new EventHandler(NeedsRedraw);

			AddChild(m_num_points);

			m_num_points.Text = "Number of intermediate Points = {0:F3}";
			m_num_points.SetRange(10, 400);
			m_num_points.Value = 200;

			m_close = new CheckBox(350, 5.0, "Close");
			m_close.CheckedStateChanged += NeedsRedraw;
			AddChild(m_close);

			m_preserve_x_scale = new CheckBox(460, 5, "Preserve X scale");
			m_preserve_x_scale.CheckedStateChanged += NeedsRedraw;
			AddChild(m_preserve_x_scale);

			m_fixed_len = new CheckBox(350, 25, "Fixed Length");
			m_fixed_len.CheckedStateChanged += NeedsRedraw;
			AddChild(m_fixed_len);

			m_animate = new CheckBox(460, 25, "Animate");
			m_animate.CheckedStateChanged += m_animate_CheckedStateChanged;
			AddChild(m_animate);
		}
Beispiel #3
0
        public image1Widget()
        {
            AnchorAll();
            string img_name = "spheres.bmp";

            if (!ImageIO.LoadImageData(img_name, sourceImage))
            {
                string buf;
                buf = "File not found: "
                      + img_name
                      + ".bmp"
                      + ". Download http://www.antigrain.com/" + img_name + ".bmp" + "\n"
                      + "or copy it from another directory if available.";
                MessageBox.ShowMessageBox(buf, "Missing Files");
            }
            else
            {
                WindowSize.x = sourceImage.Width + 20;
                WindowSize.y = sourceImage.Height + 40 + 20;
            }

            drawAngle = new MatterHackers.Agg.UI.Slider(new Vector2(5, 5 + 15), new Vector2(295, 7));
            drawScale = new MatterHackers.Agg.UI.Slider(new Vector2(5, 5 + 55), new Vector2(295, 7));
            drawAngle.ValueChanged += new EventHandler(NeedsRedraw);
            drawScale.ValueChanged += new EventHandler(NeedsRedraw);

            AddChild(drawAngle);
            AddChild(drawScale);
            //drawAngle.Text = "Angle={0:F2}";
            //drawScale.Text = "Scale={0:F2}";
            drawAngle.SetRange(-180.0, 180.0);
            drawAngle.Value = 0.0;
            drawScale.SetRange(0.1, 5.0);
            drawScale.Value = 1.0;
        }
Beispiel #4
0
		public image1Widget()
		{
			AnchorAll();
			string img_name = "spheres.bmp";
			if (!ImageIO.LoadImageData(img_name, sourceImage))
			{
				string buf;
				buf = "File not found: "
					+ img_name
					+ ".bmp"
					+ ". Download http://www.antigrain.com/" + img_name + ".bmp" + "\n"
					+ "or copy it from another directory if available.";
				MessageBox.ShowMessageBox(buf, "Missing Files");
			}
			else
			{
				WindowSize.x = sourceImage.Width + 20;
				WindowSize.y = sourceImage.Height + 40 + 20;
			}

			drawAngle = new MatterHackers.Agg.UI.Slider(new Vector2(5, 5 + 15), new Vector2(295, 7));
			drawScale = new MatterHackers.Agg.UI.Slider(new Vector2(5, 5 + 55), new Vector2(295, 7));
			drawAngle.ValueChanged += new EventHandler(NeedsRedraw);
			drawScale.ValueChanged += new EventHandler(NeedsRedraw);

			AddChild(drawAngle);
			AddChild(drawScale);
			//drawAngle.Text = "Angle={0:F2}";
			//drawScale.Text = "Scale={0:F2}";
			drawAngle.SetRange(-180.0, 180.0);
			drawAngle.Value = 0.0;
			drawScale.SetRange(0.1, 5.0);
			drawScale.Value = 1.0;
		}
Beispiel #5
0
        public image_resample()
        {
            m_gamma_lut           = new GammaLookUpTable(2.0);
            m_quad                = new MatterHackers.Agg.UI.PolygonEditWidget(4, 5.0);
            m_trans_type          = new MatterHackers.Agg.UI.RadioButtonGroup(new Vector2(400, 5.0), new Vector2(30 + 170.0, 95));
            m_gamma               = new MatterHackers.Agg.UI.Slider(5.0, 5.0 + 15 * 0, 400 - 5, 10.0 + 15 * 0);
            m_blur                = new MatterHackers.Agg.UI.Slider(5.0, 5.0 + 15 * 1, 400 - 5, 10.0 + 15 * 1);
            m_blur.ValueChanged  += new EventHandler(NeedRedraw);
            m_gamma.ValueChanged += new EventHandler(NeedRedraw);
            m_old_gamma           = 2.0;

            g_rasterizer = new ScanlineRasterizer();
            g_scanline   = new scanline_unpacked_8();

            m_trans_type.AddRadioButton("Affine No Resample");
            m_trans_type.AddRadioButton("Affine Resample");
            m_trans_type.AddRadioButton("Perspective No Resample LERP");
            m_trans_type.AddRadioButton("Perspective No Resample Exact");
            m_trans_type.AddRadioButton("Perspective Resample LERP");
            m_trans_type.AddRadioButton("Perspective Resample Exact");
            m_trans_type.SelectedIndex = 4;
            AddChild(m_trans_type);

            m_gamma.SetRange(0.5, 3.0);
            m_gamma.Value = 2.0;
            m_gamma.Text  = "Gamma={0:F3}";
            AddChild(m_gamma);

            m_blur.SetRange(0.5, 5.0);
            m_blur.Value = 1.0;
            m_blur.Text  = "Blur={0:F3}";
            AddChild(m_blur);
        }
Beispiel #6
0
		public blur()
		{
			m_rbuf2 = new ImageBuffer();
			m_shape_bounds = new RectangleDouble();
			m_method = new RadioButtonGroup(new Vector2(10.0, 10.0), new Vector2(130.0, 60.0));
			m_radius = new Slider(new Vector2(130 + 10.0, 10.0 + 4.0), new Vector2(290, 8.0));
			m_shadow_ctrl = new PolygonEditWidget(4);
			m_channel_r = new CheckBox(10.0, 80.0, "Red");
			m_channel_g = new CheckBox(10.0, 95.0, "Green");
			m_channel_b = new CheckBox(10.0, 110.0, "Blue");
			m_FlattenCurves = new CheckBox(10, 315, "Convert And Flatten Curves");
			m_FlattenCurves.Checked = true;

			AddChild(m_method);
			m_method.AddRadioButton("Stack Blur");
			m_method.AddRadioButton("Recursive Blur");
			m_method.AddRadioButton("Channels");
			m_method.SelectedIndex = 1;

			AddChild(m_radius);
			m_radius.SetRange(0.0, 40.0);
			m_radius.Value = 15.0;
			m_radius.Text = "Blur Radius={0:F2}";

			AddChild(m_shadow_ctrl);

			AddChild(m_channel_r);
			AddChild(m_channel_g);
			AddChild(m_channel_b);
			AddChild(m_FlattenCurves);
			m_channel_g.Checked = true;

			m_sl = new ScanlineCachePacked8();

			StyledTypeFace typeFaceForLargeA = new StyledTypeFace(LiberationSansFont.Instance, 300, flatenCurves: false);
			m_path = typeFaceForLargeA.GetGlyphForCharacter('a');

			Affine shape_mtx = Affine.NewIdentity();
			shape_mtx *= Affine.NewTranslation(150, 100);
			m_path = new VertexSourceApplyTransform(m_path, shape_mtx);
			m_shape = new FlattenCurves(m_path);

			bounding_rect.bounding_rect_single(m_shape, 0, ref m_shape_bounds);

			m_shadow_ctrl.SetXN(0, m_shape_bounds.Left);
			m_shadow_ctrl.SetYN(0, m_shape_bounds.Bottom);
			m_shadow_ctrl.SetXN(1, m_shape_bounds.Right);
			m_shadow_ctrl.SetYN(1, m_shape_bounds.Bottom);
			m_shadow_ctrl.SetXN(2, m_shape_bounds.Right);
			m_shadow_ctrl.SetYN(2, m_shape_bounds.Top);
			m_shadow_ctrl.SetXN(3, m_shape_bounds.Left);
			m_shadow_ctrl.SetYN(3, m_shape_bounds.Top);
			m_shadow_ctrl.line_color(new RGBA_Floats(0, 0.3, 0.5, 0.3));
		}
Beispiel #7
0
        public aa_test()
        {
            AnchorAll();
            m_idx   = (-1);
            m_gamma = new MatterHackers.Agg.UI.Slider(3, 3, 480 - 3, 8);

            m_x[0] = 100; m_y[0] = 100;
            m_x[1] = 500; m_y[1] = 350;
            AddChild(m_gamma);
            m_gamma.Text = "gamma={0:F3}";
            m_gamma.SetRange(0.0, 3.0);
            m_gamma.Value = 1.8;
        }
Beispiel #8
0
        public aa_test()
        {
            AnchorAll();
            m_idx = (-1);
            m_gamma = new MatterHackers.Agg.UI.Slider(3, 3, 480 - 3, 8);

            m_x[0] = 100;   m_y[0] = 100;
            m_x[1] = 500;   m_y[1] = 350;
            AddChild(m_gamma);
            m_gamma.Text = "gamma={0:F3}";
            m_gamma.SetRange(0.0, 3.0);
            m_gamma.Value = 1.8;
        }
Beispiel #9
0
        public alpha_mask2_application()
        {
            AnchorAll();
            alphaMaskImageBuffer = new ImageBuffer();
#if USE_CLIPPING_ALPHA_MASK
            alphaMask = new AlphaMaskByteClipped(alphaMaskImageBuffer, 1, 0);
#else
            alphaMask = new AlphaMaskByteUnclipped(alphaMaskImageBuffer, 1, 0);
#endif

            numMasksSlider = new UI.Slider(5, 5, 150, 12);
            sliderValue    = 0.0;
            AddChild(numMasksSlider);
            numMasksSlider.SetRange(5, 100);
            numMasksSlider.Value = 10;
            numMasksSlider.Text  = "N={0:F3}";
            numMasksSlider.OriginRelativeParent = Vector2.Zero;
        }
Beispiel #10
0
        public alpha_mask2_application()
        {
            AnchorAll();
            alphaMaskImageBuffer = new ImageBuffer();
#if USE_CLIPPING_ALPHA_MASK
            alphaMask = new AlphaMaskByteClipped(alphaMaskImageBuffer, 1, 0);
#else
            alphaMask = new AlphaMaskByteUnclipped(alphaMaskImageBuffer, 1, 0);
#endif

            numMasksSlider = new UI.Slider(5, 5, 150, 12);
            sliderValue = 0.0;
            AddChild(numMasksSlider);
            numMasksSlider.SetRange(5, 100);
            numMasksSlider.Value = 10;
            numMasksSlider.Text = "N={0:F3}";
            numMasksSlider.OriginRelativeParent = Vector2.Zero;
        }
Beispiel #11
0
        public lion_outline()
        {
            widthSlider = new MatterHackers.Agg.UI.Slider(new Vector2(5, 5), 498);
            renderAsScanlineCheckBox                      = new MatterHackers.Agg.UI.CheckBox(160, 5, "Use Scanline Rasterizer");
            renderAsScanlineCheckBox.Checked              = false;
            widthSlider.ValueChanged                     += new EventHandler(NeedsRedraw);
            renderAsScanlineCheckBox.CheckedStateChanged += NeedsRedraw;
            AddChild(widthSlider);
            widthSlider.OriginRelativeParent = Vector2.Zero;
            widthSlider.SetRange(0.0, 4.0);
            widthSlider.Value = 1.0;
            widthSlider.Text  = "Width {0:F2}";

            AddChild(renderAsScanlineCheckBox);
            //renderAsScanlineCheckBox.Transform = Affine.NewIdentity();

            renderAccurateJoinsCheckBox = new CheckBox(200 + 10.0, 10.0 + 4.0 + 16.0, "Accurate Joins");
            AddChild(renderAccurateJoinsCheckBox);
        }
Beispiel #12
0
		public lion_outline()
		{
			widthSlider = new MatterHackers.Agg.UI.Slider(new Vector2(5, 5), 498);
			renderAsScanlineCheckBox = new MatterHackers.Agg.UI.CheckBox(160, 5, "Use Scanline Rasterizer");
			renderAsScanlineCheckBox.Checked = false;
			widthSlider.ValueChanged += new EventHandler(NeedsRedraw);
			renderAsScanlineCheckBox.CheckedStateChanged += NeedsRedraw;
			AddChild(widthSlider);
			widthSlider.OriginRelativeParent = Vector2.Zero;
			widthSlider.SetRange(0.0, 4.0);
			widthSlider.Value = 1.0;
			widthSlider.Text = "Width {0:F2}";

			AddChild(renderAsScanlineCheckBox);
			//renderAsScanlineCheckBox.Transform = Affine.NewIdentity();

			renderAccurateJoinsCheckBox = new CheckBox(200 + 10.0, 10.0 + 4.0 + 16.0, "Accurate Joins");
			AddChild(renderAccurateJoinsCheckBox);
		}
Beispiel #13
0
        public rounded_rect_application()
        {
            AnchorAll();
            m_idx = (-1);
            m_radius = new MatterHackers.Agg.UI.Slider(new Vector2(10, 10), new Vector2(580, 9));
            m_gamma = new MatterHackers.Agg.UI.Slider(new Vector2(10, 10 + 40), new Vector2(580, 9));
            m_offset = new MatterHackers.Agg.UI.Slider(new Vector2(10, 10 + 80), new Vector2(580, 9));
            m_white_on_black = new CheckBox(10, 10+60, "White on black");
            m_DrawAsOutlineCheckBox = new CheckBox(10 + 180, 10 + 60, "Fill Rounded Rect");

            m_radius.ValueChanged += new EventHandler(NeedsRedraw);
            m_gamma.ValueChanged += new EventHandler(NeedsRedraw);
            m_offset.ValueChanged += new EventHandler(NeedsRedraw);
            m_white_on_black.CheckedStateChanged += new CheckBox.CheckedStateChangedEventHandler(NeedsRedraw);
            m_DrawAsOutlineCheckBox.CheckedStateChanged += new CheckBox.CheckedStateChangedEventHandler(NeedsRedraw);

            m_x[0] = 100;   m_y[0] = 100;
            m_x[1] = 500;   m_y[1] = 350;
            AddChild(m_radius);
            AddChild(m_gamma);
            AddChild(m_offset);
            AddChild(m_white_on_black);
            AddChild(m_DrawAsOutlineCheckBox);
            m_gamma.Text = "gamma={0:F3}";
            m_gamma.SetRange(0.0, 3.0);
            m_gamma.Value = 1.8;

            m_radius.Text = "radius={0:F3}";
            m_radius.SetRange(0.0, 50.0);
            m_radius.Value = 25.0;

            m_offset.Text = "subpixel offset={0:F3}";
            m_offset.SetRange(-2.0, 3.0);

            m_white_on_black.TextColor = new RGBA_Bytes(127, 127, 127);
            //m_white_on_black.inactive_color(new RGBA_Bytes(127, 127, 127));

            m_DrawAsOutlineCheckBox.TextColor = new RGBA_Floats(.5, .5, .5).GetAsRGBA_Bytes();
            //m_DrawAsOutlineCheckBox.inactive_color(new RGBA_Bytes(127, 127, 127));
        }
Beispiel #14
0
        public rounded_rect_application()
        {
            AnchorAll();
            m_idx                   = (-1);
            m_radius                = new MatterHackers.Agg.UI.Slider(new Vector2(10, 10), new Vector2(580, 9));
            m_gamma                 = new MatterHackers.Agg.UI.Slider(new Vector2(10, 10 + 40), new Vector2(580, 9));
            m_offset                = new MatterHackers.Agg.UI.Slider(new Vector2(10, 10 + 80), new Vector2(580, 9));
            m_white_on_black        = new CheckBox(10, 10 + 60, "White on black");
            m_DrawAsOutlineCheckBox = new CheckBox(10 + 180, 10 + 60, "Fill Rounded Rect");

            m_radius.ValueChanged += new EventHandler(NeedsRedraw);
            m_gamma.ValueChanged  += new EventHandler(NeedsRedraw);
            m_offset.ValueChanged += new EventHandler(NeedsRedraw);
            m_white_on_black.CheckedStateChanged        += NeedsRedraw;
            m_DrawAsOutlineCheckBox.CheckedStateChanged += NeedsRedraw;

            m_x[0] = 100; m_y[0] = 100;
            m_x[1] = 500; m_y[1] = 350;
            AddChild(m_radius);
            AddChild(m_gamma);
            AddChild(m_offset);
            AddChild(m_white_on_black);
            AddChild(m_DrawAsOutlineCheckBox);
            m_gamma.Text = "gamma={0:F3}";
            m_gamma.SetRange(0.0, 3.0);
            m_gamma.Value = 1.8;

            m_radius.Text = "radius={0:F3}";
            m_radius.SetRange(0.0, 50.0);
            m_radius.Value = 25.0;

            m_offset.Text = "subpixel offset={0:F3}";
            m_offset.SetRange(-2.0, 3.0);

            m_white_on_black.TextColor = new Color(127, 127, 127);
            //m_white_on_black.inactive_color(new RGBA_Bytes(127, 127, 127));

            m_DrawAsOutlineCheckBox.TextColor = new ColorF(.5, .5, .5).ToColor();
            //m_DrawAsOutlineCheckBox.inactive_color(new RGBA_Bytes(127, 127, 127));
        }
Beispiel #15
0
        public FloodFillDemo()
        {
            BackgroundColor = RGBA_Bytes.White;
            imageToFillOn = new ImageBuffer(400, 300, 32, new BlenderBGRA());
            Graphics2D imageToFillGraphics = imageToFillOn.NewGraphics2D();
            imageToFillGraphics.Clear(RGBA_Bytes.White);
            imageToFillGraphics.DrawString("Click to fill", 20, 30);
            imageToFillGraphics.Circle(new Vector2(200, 150), 35, RGBA_Bytes.Black);
            imageToFillGraphics.Circle(new Vector2(200, 150), 30, RGBA_Bytes.Green);
            imageToFillGraphics.Rectangle(20, 50, 210, 280, RGBA_Bytes.Black);
            imageToFillGraphics.Rectangle(imageToFillOn.GetBounds(), RGBA_Bytes.Blue);

            Random rand = new Random();
            for (int i = 0; i < 20; i++)
            {
                Ellipse elipse = new Ellipse(rand.Next(imageToFillOn.Width), rand.Next(imageToFillOn.Height), rand.Next(10, 60), rand.Next(10, 60));
                Stroke outline = new Stroke(elipse);
                imageToFillGraphics.Render(outline, RGBA_Bytes.Black);
            }
            

            m_slider1 = new Slider(new Vector2(80, 10), 510);
            m_slider2 = new Slider(new Vector2(80, 10 + 20), 510);

            m_slider1.ValueChanged += new EventHandler(NeedsRedraw);
            m_slider2.ValueChanged += new EventHandler(NeedsRedraw);

            AddChild(m_slider1);
            AddChild(m_slider2);

            m_slider1.Text = "Pixel size={0:F3}";
            m_slider1.SetRange(8, 100);
            m_slider1.NumTicks = 23;
            m_slider1.Value = 32;

            m_slider2.Text = "gamma={0:F3}";
            m_slider2.SetRange(0.0, 3.0);
            m_slider2.Value = 1.0;
        }
Beispiel #16
0
		public FontHinter()
		{
			AnchorAll();
			FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);
			topToBottom.AnchorAll();
			pixelSizeSlider = new Slider(new Vector2(30, 30), 600 - 60);
			gammaSlider = new Slider(new Vector2(30, 70), 600 - 60);

			pixelSizeSlider.Text = "Pixel size={0:F3}";
			pixelSizeSlider.SetRange(2, 20);
			pixelSizeSlider.NumTicks = 23;
			pixelSizeSlider.Value = 6;

			gammaSlider.Text = "Gamma={0:F3}";
			gammaSlider.SetRange(0.0, 3.0);
			gammaSlider.Value = 1.0;

			topToBottom.AddChild(pixelSizeSlider);
			topToBottom.AddChild(gammaSlider);

			AddChild(topToBottom);
		}
Beispiel #17
0
		public aa_demo()
		{
			m_idx = -1;
			m_x[0] = 57; m_y[0] = 100;
			m_x[1] = 369; m_y[1] = 170;
			m_x[2] = 143; m_y[2] = 310;

			pixelSizeSlider = new Slider(new Vector2(30, 30), 600 - 60);
			gammaSlider = new Slider(new Vector2(30, 70), 600 - 60);

			pixelSizeSlider.ValueChanged += new EventHandler(NeedsRedraw);
			gammaSlider.ValueChanged += new EventHandler(NeedsRedraw);

			AddChild(pixelSizeSlider);
			AddChild(gammaSlider);

			pixelSizeSlider.Text = "Pixel size={0:F3}";
			pixelSizeSlider.SetRange(8, 100);
			pixelSizeSlider.NumTicks = 23;
			pixelSizeSlider.Value = 32;

			gammaSlider.Text = "Gamma={0:F3}";
			gammaSlider.SetRange(0.0, 3.0);
			gammaSlider.Value = 1.0;
		}
Beispiel #18
0
		public line_patterns_application()
		{
			AnchorAll();
			m_ctrl_color = new RGBA_Bytes(0, 0.3, 0.5, 0.3);
			m_scale_x = new Slider(5.0, 5.0, 240.0, 12.0);
			m_start_x = new Slider(250.0, 5.0, 495.0, 12.0);
			m_approximation_method = new CheckBox(10, 30, "Approximation Method = curve_div");

			m_curve1.line_color(m_ctrl_color);
			m_curve2.line_color(m_ctrl_color);
			m_curve3.line_color(m_ctrl_color);
			m_curve4.line_color(m_ctrl_color);
			m_curve5.line_color(m_ctrl_color);
			m_curve6.line_color(m_ctrl_color);
			m_curve7.line_color(m_ctrl_color);
			m_curve8.line_color(m_ctrl_color);
			m_curve9.line_color(m_ctrl_color);

			m_curve1.curve(64, 19, 14, 126, 118, 266, 19, 265);
			m_curve2.curve(112, 113, 178, 32, 200, 132, 125, 438);
			m_curve3.curve(401, 24, 326, 149, 285, 11, 177, 77);
			m_curve4.curve(188, 427, 129, 295, 19, 283, 25, 410);
			m_curve5.curve(451, 346, 302, 218, 265, 441, 459, 400);
			m_curve6.curve(454, 198, 14, 13, 220, 291, 483, 283);
			m_curve7.curve(301, 398, 355, 231, 209, 211, 170, 353);
			m_curve8.curve(484, 101, 222, 33, 486, 435, 487, 138);
			m_curve9.curve(143, 147, 11, 45, 83, 427, 132, 197);

			AddChild(m_curve1);
			AddChild(m_curve2);
			AddChild(m_curve3);
			AddChild(m_curve4);
			AddChild(m_curve5);
			AddChild(m_curve6);
			AddChild(m_curve7);
			AddChild(m_curve8);
			AddChild(m_curve9);
			AddChild(m_approximation_method);

			m_scale_x.Text = "Scale X=%.2f";
			m_scale_x.SetRange(0.2, 3.0);
			m_scale_x.Value = 1.0;
			AddChild(m_scale_x);

			m_start_x.Text = "Start X=%.2f";
			m_start_x.SetRange(0.0, 10.0);
			m_start_x.Value = 0.0;
			AddChild(m_start_x);

			m_approximation_method.CheckedStateChanged += m_approximation_method_CheckedStateChanged;
		}