Пример #1
0
        public override void ProcessUserAction(eUserAction action, double param)
        {
            NeedsUpdate = true;
            double oldOffset;

            switch (action)
            {
            case eUserAction.YOffset:
                oldOffset = DisplayYOffset;

                param         += oldOffset;
                param          = Math.Min(10 * DirectXHeight, param);
                DisplayYOffset = Math.Max(-10 * DirectXHeight, param);

                if (oldOffset != DisplayYOffset)
                {
                    UpdateAxis     = true;
                    UpdateCursor   = true;
                    UpdateOverlays = true;
                }

                break;

            case eUserAction.YZoomIn:
                if (YZoomFactor < YZoomFactorMax)
                {
                    DisplayYOffset = (LastMousePos.Y + DisplayYOffset) * YZoomStep - LastMousePos.Y;
                    YZoomFactor   *= YZoomStep;

                    /* call ourselves again for min/max fitting */
                    ProcessUserAction(eUserAction.YOffset, 0);

                    UpdateAxis     = true;
                    UpdateCursor   = true;
                    UpdateOverlays = true;
                }

                break;

            case eUserAction.YZoomOut:
                if (YZoomFactor > YZoomFactorMin)
                {
                    DisplayYOffset = (LastMousePos.Y + DisplayYOffset) / YZoomStep - LastMousePos.Y;
                    YZoomFactor   /= YZoomStep;

                    /* call ourselves again for min/max fitting */
                    ProcessUserAction(eUserAction.YOffset, 0);

                    UpdateAxis     = true;
                    UpdateCursor   = true;
                    UpdateOverlays = true;
                }

                break;

            default:
                base.ProcessUserAction(action, param);
                break;
            }

            NeedsRender = true;
        }
Пример #2
0
        public override void ProcessUserAction(eUserAction action, double param)
        {
            NeedsUpdate = true;
            double oldOffset;

            switch (action)
            {
            case eUserAction.XOffset:
                oldOffset = DisplayXOffset;

                param         += oldOffset;
                param          = Math.Min(DirectXWidth * XZoomFactor, param);
                DisplayXOffset = Math.Max(-DirectXWidth * XZoomFactor, param);

                if (oldOffset != DisplayXOffset)
                {
                    UpdateAxis     = true;
                    UpdateCursor   = true;
                    UpdateOverlays = true;
                }

                break;

            case eUserAction.YOffset:
                oldOffset = DisplayYOffset;

                param         += oldOffset;
                param          = Math.Min(DirectXHeight * YZoomFactor, param);
                DisplayYOffset = Math.Max(-DirectXHeight * YZoomFactor, param);

                if (oldOffset != DisplayYOffset)
                {
                    UpdateAxis     = true;
                    UpdateCursor   = true;
                    UpdateOverlays = true;
                }

                break;

            case eUserAction.YZoomIn:
                if (YZoomFactor < YZoomFactorMax)
                {
                    YZoomFactor *= YZoomStep;
                    XZoomFactor  = YZoomFactor;

                    ProcessUserAction(eUserAction.XOffset, 0);
                    ProcessUserAction(eUserAction.YOffset, 0);

                    UpdateAxis     = true;
                    UpdateCursor   = true;
                    UpdateOverlays = true;
                }

                break;

            case eUserAction.YZoomOut:
                if (YZoomFactor > YZoomFactorMin)
                {
                    YZoomFactor /= YZoomStep;
                    XZoomFactor  = YZoomFactor;

                    ProcessUserAction(eUserAction.XOffset, 0);
                    ProcessUserAction(eUserAction.YOffset, 0);

                    UpdateAxis     = true;
                    UpdateCursor   = true;
                    UpdateOverlays = true;
                }

                break;

            default:
                base.ProcessUserAction(action, param);
                break;
            }

            NeedsRender = true;
        }