Beispiel #1
0
        private static int GetCentreValueDistance(int canvasCentre, LocationModel location, DrawOrientation neutralOrientation, DrawParameterModel drawParameters)
        {
            if (drawParameters.Orientation == neutralOrientation)
            {
                return(canvasCentre);
            }

            var orbitRadius = (int)Math.Ceiling(location?.GetOrbitRadius() ?? 0 * drawParameters.OrbitFactor);

            if (orbitRadius > 0)
            {
                orbitRadius += SunRadius;
            }

            if (neutralOrientation == DrawOrientation.Vertical)
            {
                return(canvasCentre - orbitRadius);
            }

            return(canvasCentre + orbitRadius);
        }
Beispiel #2
0
        private static void DrawBodies(this SKCanvas canvas, IEnumerable <CelestialDrawModel> bodies, DrawParameterModel drawParameters)
        {
            var orderedBodies = bodies.OrderByDescending(x => x.Radius).ToList();
            var sizes         = new[] { SunRadius, 20, 18, 16, 14, 8, 8, 6, 4, 4 };

            for (var index = 0; index < orderedBodies.Count; index++)
            {
                try
                {
                    var body = orderedBodies[index];

                    var centreX = GetCentreValue(drawParameters.CentreX, body.Location, DrawOrientation.Vertical, drawParameters);
                    var centreY = GetCentreValue(drawParameters.CentreY, body.Location, DrawOrientation.Horizontal, drawParameters);

                    var draw =
                        new CanvasDrawModel(
                            body.Id,
                            body.Description,
                            sizes[index],
                            centreX,
                            centreY,
                            body.Color,
                            null,
                            null,
                            0);

                    canvas.Draw(draw);
                }
                catch (ArgumentException exception)
                {
                    LogHelper.LogError(exception);
                }
                catch (Exception exception)
                {
                    LogHelper.LogError(exception);
                }
            }
        }
Beispiel #3
0
        private static int GetCentreValue(int canvasCentre, LocationModel location, DrawOrientation neutralOrientation, DrawParameterModel drawParameters)
        {
            if (drawParameters.ObjectCollectionLayout == ObjectCollectionLayout.Position)
            {
                return(GetCentreValuePosition(canvasCentre, location, neutralOrientation, drawParameters.OrbitFactor));
            }

            return(GetCentreValueDistance(canvasCentre, location, neutralOrientation, drawParameters));
        }
Beispiel #4
0
        private static void DrawOrbits(this SKCanvas canvas, IEnumerable <CelestialDrawModel> orbits, DrawParameterModel drawParameters)
        {
            foreach (var orbit in orbits.Where(x => x.Radius > 0))
            {
                var draw =
                    new CanvasDrawModel(
                        orbit.Id,
                        orbit.Description,
                        (int)Math.Ceiling(orbit.Radius * drawParameters.OrbitFactor) + SunRadius,
                        drawParameters.CentreX,
                        drawParameters.CentreY,
                        null,
                        orbit.BorderColor,
                        null,
                        orbit.StrokeWidth);

                canvas.Draw(draw);
            }
        }