示例#1
0
        /// <summary>
        /// MouseDown method for AxisDrag interaction
        /// </summary>
        /// <param name="X">mouse X position</param>
        /// <param name="Y">mouse Y position</param>
        /// <param name="keys">mouse and keyboard modifiers</param>
        /// <param name="ps">the InteractivePlotSurface2D</param>
        public override bool DoMouseDown(int X, int Y, Modifier keys, InteractivePlotSurface2D ps)
        {
            // if the mouse is inside the plot area [the tick marks may be here,
            // and are counted as part of the axis], then don't invoke drag.
            if (ps.PlotAreaBoundingBoxCache.Contains(X, Y))
            {
                return(false);
            }
            if ((keys & Modifier.Button1) != 0)
            {
                // see if hit with axis. NB Only one axis object will be returned
                ArrayList objects = ps.HitTest(new Point(X, Y));

                foreach (object o in objects)
                {
                    if (o is Florence.Axis)
                    {
                        dragging_ = true;
                        axis_     = (Axis)o;

                        if (ps.PhysicalXAxis1Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalXAxis1Cache;
                            ps.plotCursor = CursorType.LeftRight;
                        }
                        else if (ps.PhysicalXAxis2Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalXAxis2Cache;
                            ps.plotCursor = CursorType.LeftRight;
                        }
                        else if (ps.PhysicalYAxis1Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalYAxis1Cache;
                            ps.plotCursor = CursorType.UpDown;
                        }
                        else if (ps.PhysicalYAxis2Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalYAxis2Cache;
                            ps.plotCursor = CursorType.UpDown;
                        }

                        startPoint_ = new Point(X, Y);  // don't combine these - Mono
                        lastPoint_  = startPoint_;      // bug #475205 prior to 2.4
                        // evaluate focusRatio about which axis is expanded
                        float  x = startPoint_.X - physicalAxis_.PhysicalMin.X;
                        float  y = startPoint_.Y - physicalAxis_.PhysicalMin.Y;
                        double r = Math.Sqrt(x * x + y * y);
                        focusRatio_ = r / physicalAxis_.PhysicalLength;

                        return(false);
                    }
                }
            }
            return(false);
        }
示例#2
0
        /// <summary>
        /// MouseDown method for AxisDrag interaction
        /// </summary>
        /// <param name="X">mouse X position</param>
        /// <param name="Y">mouse Y position</param>
        /// <param name="keys">mouse and keyboard modifiers</param>
        /// <param name="ps">the InteractivePlotSurface2D</param>
        public override bool DoMouseDown(int X, int Y, Modifier keys, InteractivePlotSurface2D ps)
        {
            // if the mouse is inside the plot area [the tick marks may be here,
            // and are counted as part of the axis], then don't invoke drag.
            if (ps.PlotAreaBoundingBoxCache.Contains(X, Y))
            {
                return false;
            }
            if ((keys & Modifier.Button1) != 0)
            {
                // see if hit with axis. NB Only one axis object will be returned
                ArrayList objects = ps.HitTest(new Point(X, Y));

                foreach (object o in objects)
                {
                    if (o is Florence.Axis)
                    {
                        dragging_ = true;
                        axis_ = (Axis)o;

                        if (ps.PhysicalXAxis1Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalXAxis1Cache;
                            ps.plotCursor = CursorType.LeftRight;
                        }
                        else if (ps.PhysicalXAxis2Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalXAxis2Cache;
                            ps.plotCursor = CursorType.LeftRight;
                        }
                        else if (ps.PhysicalYAxis1Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalYAxis1Cache;
                            ps.plotCursor = CursorType.UpDown;
                        }
                        else if (ps.PhysicalYAxis2Cache.Axis == axis_)
                        {
                            physicalAxis_ = ps.PhysicalYAxis2Cache;
                            ps.plotCursor = CursorType.UpDown;
                        }

                        startPoint_ = new Point(X, Y);	// don't combine these - Mono
                        lastPoint_ = startPoint_;		// bug #475205 prior to 2.4
                        // evaluate focusRatio about which axis is expanded
                        float x = startPoint_.X - physicalAxis_.PhysicalMin.X;
                        float y = startPoint_.Y - physicalAxis_.PhysicalMin.Y;
                        double r = Math.Sqrt(x * x + y * y);
                        focusRatio_ = r / physicalAxis_.PhysicalLength;

                        return false;
                    }
                }
            }
            return false;
        }