public override void MoveBarInDirection(MovementDirection movementDirection, float distance, CaliperComponent component)
        {
            CaliperComponent adjustedComponent = MoveCrossbarInsteadOfSideBar(movementDirection, component) ? CaliperComponent.Apex : component;

            if (adjustedComponent == CaliperComponent.Apex)
            {
                base.MoveBarInDirection(movementDirection, distance, CaliperComponent.CrossBar);
            }
            // TODO: test this
            // We use smaller increments for angle calipers, otherwise movement is too large.
            distance = distance / 2.0f;
            if (movementDirection == MovementDirection.Left)
            {
                distance = -distance;
            }
            switch (adjustedComponent)
            {
            case CaliperComponent.LeftBar:
                angleBar1 -= (float)(DegreesToRadians(distance));
                break;

            case CaliperComponent.RightBar:
                angleBar2 -= (float)(DegreesToRadians(distance));
                break;

            default:
                break;
            }
        }
Exemple #2
0
        // NB: Window coordinates origin are upper left corner, like iOS, not like macOS
        public virtual void MoveBarInDirection(MovementDirection movementDirection, float distance, CaliperComponent component)
        {
            if (component == CaliperComponent.NoComponent)
            {
                return;
            }
            CaliperComponent adjustedComponent = MoveCrossbarInsteadOfSideBar(movementDirection, component) ? CaliperComponent.CrossBar : component;

            if (adjustedComponent == CaliperComponent.CrossBar)
            {
                MoveCrossbarInDirection(movementDirection, distance);
                return;
            }

            if (movementDirection == MovementDirection.Up || movementDirection == MovementDirection.Left)
            {
                distance = -distance;
            }
            // TODO: make sure directions are correct, c.f. iOS version
            switch (adjustedComponent)
            {
            case CaliperComponent.LeftBar:
            case CaliperComponent.UpperBar:
                Bar1Position += distance;
                break;

            case CaliperComponent.RightBar:
            case CaliperComponent.LowerBar:
                Bar2Position += distance;
                break;

            default:
                break;
            }
        }
Exemple #3
0
        public static String ComponentName(CaliperComponent component)
        {
            switch (component)
            {
            case CaliperComponent.LeftBar:
                return("left bar");

            case CaliperComponent.RightBar:
                return("right bar");

            case CaliperComponent.CrossBar:
                return("crossbar");

            case CaliperComponent.UpperBar:
                return("upper bar");

            case CaliperComponent.LowerBar:
                return("lower bar");

            case CaliperComponent.Apex:
                return("apex");

            default:
                return("unknown component");
            }
        }
Exemple #4
0
 protected bool MoveCrossbarInsteadOfSideBar(MovementDirection movementDirection, CaliperComponent component)
 {
     if (component == CaliperComponent.CrossBar || component == CaliperComponent.Apex)
     {
         return(false);
     }
     return((Direction == CaliperDirection.Horizontal &&
             (movementDirection == MovementDirection.Up || movementDirection == MovementDirection.Down))
            ||
            (Direction == CaliperDirection.Vertical &&
             (movementDirection == MovementDirection.Left || movementDirection == MovementDirection.Right)));
 }