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); }
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); } } }
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)); }
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); } }