Ejemplo n.º 1
0
        /// <summary>
        /// Draw the button graph
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void PictureBoxPaint(object sender, PaintEventArgs e)
        {
            const int padding = 30;
            int       p, x, y;
            bool      val;
            var       par = Parameters;
            var       w   = pictureBox.Width - 2 * padding;
            var       h   = pictureBox.Height - 2 * padding;
            int       max;

            int y1 = !(par.invert & !par.Trigger) ? padding + h : padding;
            int y2 = (par.invert & !par.Trigger) ? padding + h : padding;

            GraphicsPath graphPath = new GraphicsPath();
            List <Point> points    = new List <Point>();

            if (par.notch)
            {
                max = par.thresh2 + par.thresh1;
                int t1 = (int)(par.thresh1 / (double)max * w);
                int t2 = (int)(par.thresh2 / (double)max * w);

                points.Add(new Point(padding, y1));                     // left start point
                points.Add(new Point(padding + t1, y1));                // left horizontal
                points.Add(new Point(padding + t1, y2));                // left vertical
                points.Add(new Point(padding + t2, y2));                // middle horizontal
                points.Add(new Point(padding + t2, y1));                // right vertical
                points.Add(new Point(padding + w, y1));                 // right horizontal
            }
            else
            {
                max = 2 * par.thresh1;

                points.Add(new Point(padding, y1));                      // left start point
                points.Add(new Point(padding + w / 2, y1));              // left horizontal
                points.Add(new Point(padding + w / 2, y2));              // middle vertical
                points.Add(new Point(padding + w, y2));                  // right horizontal
            }

            graphPath.AddLines(points.ToArray());
            e.Graphics.DrawPath(linePen, graphPath);

            p   = Math.Min(max, Math.Max(0, buttonMapping.Input));           // clamp
            val = par.Transform(p);
            if (par.Trigger)
            {
                val = par.invert ^ trigger.Trigger(val, par.TriggerEdge, par.TriggerDuration);
            }

            x = padding + (int)(p / (double)max * w);
            y = !val ? padding + h: padding;



            e.Graphics.DrawLine(inputPen, x, h + padding, x, y);
            e.Graphics.DrawLine(outputPen, padding, y, x, y);
            e.Graphics.DrawString(buttonMapping.Input.ToString(), DefaultFont, Brushes.Green, x, h + padding);
            e.Graphics.DrawString(val ? "On" : "Off", DefaultFont, Brushes.Red, 0, y);
        }
Ejemplo n.º 2
0
        protected override float Transform(int val)
        {
            var  p     = Parameters;
            bool state = p.Transform(val);;

            if (p.Trigger)
            {
                state = trigger.Trigger(state, p.TriggerEdge, p.TriggerDuration) ^ p.invert;
            }

            return(state ? 1f : 0f);
        }