public override void CalculateOffsets()
        {
            var offset = CalculateLegendOffsets();

            var offsetLeft   = offset.Left;
            var offsetTop    = offset.Top;
            var offsetRight  = offset.Right;
            var offsetBottom = offset.Bottom;

            // offsets for y-labels
            if (AxisLeft.NeedsOffset)
            {
                offsetTop += AxisLeft.GetRequiredHeightSpace(axisRendererLeft
                                                             .AxisLabelPaint);
            }

            if (AxisRight.NeedsOffset)
            {
                offsetBottom += AxisRight.GetRequiredHeightSpace(axisRendererRight.AxisLabelPaint);
            }

            if (XAxis.IsEnabled && XAxis.IsDrawLabelsEnabled)
            {
                float xLabelWidth = XAxis.LabelRotatedWidth;

                // offsets for x-labels
                if (XAxis.Position == XAxis.XAxisPosition.Bottom)
                {
                    offsetLeft += xLabelWidth;
                }
                else if (XAxis.Position == XAxis.XAxisPosition.Top)
                {
                    offsetRight += xLabelWidth;
                }
                else if (XAxis.Position == XAxis.XAxisPosition.BottomInside)
                {
                    offsetBottom += xLabelWidth;
                    offsetTop    += xLabelWidth;
                }
            }

            offsetTop    += ExtraTopOffset;
            offsetRight  += ExtraRightOffset;
            offsetBottom += ExtraBottomOffset;
            offsetLeft   += ExtraLeftOffset;

            float minOffset = MinOffset.DpToPixel();

            ViewPortHandler.RestrainViewPort(
                Math.Max(minOffset, offsetLeft),
                Math.Max(minOffset, offsetTop),
                Math.Max(minOffset, offsetRight),
                Math.Max(minOffset, offsetBottom));



            PrepareOffsetMatrix();
            PrepareValuePxMatrix();
        }
Exemplo n.º 2
0
        private void AddYRight_Click(object sender, EventArgs e)
        {
            var newAxis = new AxisRight()
            {
                Color = Renderer.Color.Random(), Label = "Additional Axis"
            };

            interactivePlot1.Plot.Axes.Add(newAxis);
            interactivePlot1.Render();
        }
Exemplo n.º 3
0
        protected override void CalcMinMax()
        {
            if (FitBars)
            {
                XAxis.Calculate(data.xMin - Data.BarWidth / 2f, data.xMax + data.BarWidth / 2f);
            }
            else
            {
                XAxis.Calculate(data.xMin, data.xMax);
            }

            // calculate axis range (min / max) according to provided data
            AxisLeft.Calculate(data.GetYMin(Components.YAxisDependency.Left), data.GetYMax(Components.YAxisDependency.Left));
            AxisRight.Calculate(data.GetYMin(Components.YAxisDependency.Right), data.GetYMax(Components.YAxisDependency.Right));
        }
Exemplo n.º 4
0
        public override void UpdateFirst()
        {
            base.UpdateFirst();

            AxisLeft.Enabled       = Enabled;
            AxisRight.Enabled      = Enabled;
            AxisDPad.Enabled       = Enabled;
            Up.Enabled             = Enabled;
            Down.Enabled           = Enabled;
            Left.Enabled           = Enabled;
            Right.Enabled          = Enabled;
            A.Enabled              = Enabled;
            B.Enabled              = Enabled;
            X.Enabled              = Enabled;
            Y.Enabled              = Enabled;
            R1.Enabled             = Enabled;
            R2.Enabled             = Enabled;
            L1.Enabled             = Enabled;
            L2.Enabled             = Enabled;
            Start.Enabled          = Enabled;
            Select.Enabled         = Enabled;
            Home.Enabled           = Enabled;
            AxisLeftClick.Enabled  = Enabled;
            AxisRightClick.Enabled = Enabled;

            Up.UpdateFirst();
            Down.UpdateFirst();
            Left.UpdateFirst();
            Right.UpdateFirst();
            A.UpdateFirst();
            B.UpdateFirst();
            X.UpdateFirst();
            Y.UpdateFirst();
            R1.UpdateFirst();
            R2.UpdateFirst();
            L1.UpdateFirst();
            L2.UpdateFirst();
            Start.UpdateFirst();
            Select.UpdateFirst();
            Home.UpdateFirst();
            AxisLeftClick.UpdateFirst();
            AxisRightClick.UpdateFirst();
            AxisLeft.UpdateFirst();
            AxisRight.UpdateFirst();
            AxisDPad.UpdateFirst();

            // The recording and playback code is pretty ugly, sorry :I
            if (Recording)
            {
                foreach (var b in buttonNames)
                {
                    if (b.Value.Pressed || b.Value.Released)
                    {
                        if (!recordedButtonData.ContainsKey(recordingTimer))
                        {
                            recordedButtonData.Add(recordingTimer, new Dictionary <string, int>());
                        }
                    }
                    if (b.Value.Pressed)
                    {
                        recordedButtonData[recordingTimer].Add(b.Key, 1);
                    }
                    if (b.Value.Released)
                    {
                        recordedButtonData[recordingTimer].Add(b.Key, 0);
                    }
                }

                if (RecordAxes)
                {
                    if (AxisLeft.HasInput && (AxisLeft.X != AxisLeft.LastX || AxisLeft.Y != AxisLeft.LastY))
                    {
                        recordedAxisData[0].Add(recordingTimer, new AxisData {
                            X = AxisLeft.X, Y = AxisLeft.Y
                        });
                        //Console.WriteLine("Time: " + recordingTimer + " X: " + AxisLeft.X + " Y: " + AxisLeft.Y);
                    }

                    if (AxisRight.HasInput && (AxisRight.X != AxisRight.LastX || AxisRight.Y != AxisRight.LastY))
                    {
                        recordedAxisData[1].Add(recordingTimer, new AxisData {
                            X = AxisRight.X, Y = AxisRight.Y
                        });
                    }

                    if (AxisDPad.HasInput && (AxisDPad.X != AxisDPad.LastX || AxisDPad.Y != AxisDPad.LastY))
                    {
                        recordedAxisData[2].Add(recordingTimer, new AxisData {
                            X = AxisDPad.X, Y = AxisDPad.Y
                        });
                    }

                    if (AxisTriggers.HasInput && (AxisTriggers.X != AxisTriggers.LastX || AxisTriggers.LastY != 0))
                    {
                        recordedAxisData[3].Add(recordingTimer, new AxisData {
                            X = AxisTriggers.X, Y = AxisTriggers.Y
                        });
                    }
                }

                recordingTimer++;
            }
            if (Playing)
            {
                if (playingTimer > playbackMax)
                {
                    Stop();
                }

                if (playbackButtonData.ContainsKey(playingTimer))
                {
                    foreach (var act in playbackButtonData[playingTimer])
                    {
                        if (act.Value == 0)
                        {
                            buttonNames[act.Key].ForceState(false);
                            //Util.Log("Time: " + playingTimer + " " + act.Key + " Released");
                        }
                        else
                        {
                            buttonNames[act.Key].ForceState(true);
                            //Util.Log("Time: " + playingTimer + " " + act.Key + " Pressed");
                        }
                    }
                }

                var i = 0;
                foreach (var a in axes)
                {
                    if (playbackAxisData[i].ContainsKey(playingTimer))
                    {
                        a.ForceState(playbackAxisData[i][playingTimer].X, playbackAxisData[i][playingTimer].Y);
                        //Util.Log("Time: " + playingTimer + " X: " + playbackAxisData[i][playingTimer].X + " Y: " + playbackAxisData[i][playingTimer].Y);
                    }
                    i++;
                }

                playingTimer++;
            }
        }