Inheritance: PointCourseObj
        private void CreateControlNumber(CourseView.ControlView controlView, ControlPosition controlPosition)
        {
            Id<ControlPoint> controlId = controlView.controlId;
            Id<CourseControl> courseControlId = controlView.courseControlIds[0];
            ControlPoint control = eventDB.GetControl(controlId);
            PointF location = LocationFromAbstractPosition(controlPosition.x, controlPosition.y);

            CourseLayer layer;

            if (ControlViewInSpecificVariation(controlView))
                layer = courseLayerSpecificVariation;
            else
                layer = courseLayerAllVariationsAndParts;

            CourseObj courseObj;

            switch (control.kind) {
                case ControlPointKind.Start:
                case ControlPointKind.MapExchange:
                    // Triangle looks best if we displace it down a bit (0.8 looks right).
                    courseObj = new StartCourseObj(controlId, courseControlId, scaleRatio * 0.75F, appearance, 0, new PointF(location.X, location.Y - 0.8F), CrossHairOptions.NoCrossHair);
                    break;

                case ControlPointKind.Finish:
                    courseObj = new FinishCourseObj(controlId, courseControlId, scaleRatio * 0.75F, appearance, null, location, CrossHairOptions.NoCrossHair);
                    break;

                case ControlPointKind.Normal:
                    courseObj = new ControlNumberCourseObj(controlId, courseControlId, scaleRatio, appearance, control.code, location);
                    break;

                case ControlPointKind.CrossingPoint:
                    courseObj = new CrossingCourseObj(controlId, courseControlId, Id<Special>.None, scaleRatio * 1.5F, appearance, 0, location);
                    break;

                default:
                    Debug.Fail("bad control kind");
                    return;
            }

            courseObj.layer = layer;
            courseLayout.AddCourseObject(courseObj);
        }
Example #2
0
        static CourseObj CreateCourseObject(EventDB eventDB, float scaleRatio, CourseAppearance appearance, float printScale, 
            Id<ControlPoint> controlId, Id<CourseControl> courseControlId, double angleOut)
        {
            ControlPoint control = eventDB.GetControl(controlId);
            CircleGap[] gaps = QueryEvent.GetControlGaps(eventDB, controlId, printScale);
            CourseObj courseObj = null;

            switch (control.kind) {
            case ControlPointKind.Start:
            case ControlPointKind.MapExchange:
                courseObj = new StartCourseObj(controlId, courseControlId, scaleRatio, appearance, double.IsNaN(angleOut) ? 0 : (float)Geometry.RadiansToDegrees(angleOut), control.location, CrossHairOptions.HighlightCrossHair);
                break;

            case ControlPointKind.Finish:
                courseObj = new FinishCourseObj(controlId, courseControlId, scaleRatio, appearance, gaps, control.location, CrossHairOptions.HighlightCrossHair);
                break;

            case ControlPointKind.Normal:
                courseObj = new ControlCourseObj(controlId, courseControlId, scaleRatio, appearance, gaps, control.location);
                break;

            case ControlPointKind.CrossingPoint:
                courseObj = new CrossingCourseObj(controlId, courseControlId, Id<Special>.None, scaleRatio, appearance, control.orientation, control.location);
                break;

            default:
                Debug.Fail("bad control kind");
                return null;
            }

            return courseObj;
        }