private static AdaptiveSubgroup CreateDailySubGroup(DayDataPoint day) { return(new AdaptiveSubgroup() { HintWeight = 1, Children = { new AdaptiveText() { Text = day.Time.ToString("ddd"), HintAlign = AdaptiveTextAlign.Center, HintStyle = AdaptiveTextStyle.Caption }, new AdaptiveImage() { Source = GetIcon(day.Icon), HintRemoveMargin = true }, new AdaptiveText() { Text = ((int)day.ApparentMaxTemperature).ToString() + "°", HintAlign = AdaptiveTextAlign.Center, HintStyle = AdaptiveTextStyle.Caption }, new AdaptiveText() { Text = ((int)day.ApparentMinTemperature).ToString() + "°", HintAlign = AdaptiveTextAlign.Center, HintStyle = AdaptiveTextStyle.CaptionSubtle } } }); }
static void InitializeVariables(DayDataPoint day) { CalculateDeviceSize(); var afterSunrise = DateTime.Now - day.SunriseTime > TimeSpan.FromMinutes(1); var beforeSunset = DateTime.Now - day.SunsetTime < TimeSpan.FromMinutes(0); _IsDay = afterSunrise && beforeSunset; }
private static Canvas CreatePartlyCloudyNightIcon(DayDataPoint day) { var moonRadius = 140; var container = new Canvas() { HorizontalAlignment = HorizontalAlignment.Center, Margin = new Thickness(-120, -50, 0, 0) }; var compositor = ElementCompositionPreview.GetElementVisual(container).Compositor; var containerVisual = compositor.CreateContainerVisual(); containerVisual.Size = new Vector2(moonRadius * 4, moonRadius * 4); var moonColor = Color.FromArgb(255, 245, 215, 110); moonColor = _isPremiumUser ? Color.FromArgb(255, 192, 57, 43) : moonColor; var moon = CreateMoon(day.MoonPhase, compositor, moonColor); var cloudImage = Visuals.CreateDarkCloudImage(100); var cloudVisual = ElementCompositionPreview.GetElementVisual(cloudImage); var cloudImage2 = Visuals.CreateDarkCloudImage(100); var cloudVisual2 = ElementCompositionPreview.GetElementVisual(cloudImage2); cloudVisual2.Offset = new Vector3(80, 80, 0); var offsetAnimation = Animations.CreateOffsetAnimation(compositor, -30, 6); cloudVisual.StartAnimation("Offset.x", offsetAnimation); offsetAnimation.InsertKeyFrame(1f, 60); offsetAnimation.Duration = TimeSpan.FromSeconds(8); cloudVisual2.StartAnimation("Offset.x", offsetAnimation); container.Children.Add(cloudImage); container.Children.Add(cloudImage2); container.Children.Add(moon); containerVisual.Children.InsertAtTop(cloudVisual); containerVisual.Children.InsertAtTop(cloudVisual2); Visuals.AddShadow(cloudImage, compositor, cloudVisual, containerVisual); Visuals.AddShadow(cloudImage2, compositor, cloudVisual2, containerVisual); ElementCompositionPreview.SetElementChildVisual(container, containerVisual); return(container); }
private static Grid TransformMoon(Grid scene, DayDataPoint dayDataPoint) { var moonContainer = (Grid)scene.FindName("MoonContainer"); if (moonContainer == null) { return(scene); } moonContainer = Icons.CreateMoon(dayDataPoint.MoonPhase, s_compositor, Color.FromArgb(255, 192, 57, 43)); return(scene); }
private void SetMoonPhase(DayDataPoint weatherToday) { var moonPhase = weatherToday.MoonPhase; if (moonPhase == 0) { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseNewMoon"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_new.png"); } else if (moonPhase > 0 && moonPhase < .25) { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseWaxingCrescent"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_waxing_crescent.png"); } else if (moonPhase == .25) { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseFirstQuarter"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_first_quarter.png"); } else if (moonPhase > .25 && moonPhase < .5) { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseWaxingGibbous"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_waxing_gibbous.png"); } else if (moonPhase == .5) { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseFullMoon"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_full.png"); } else if (moonPhase > .5 && moonPhase < .75) { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseWaningGibbous"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_waning_gibbous.png"); } else if (moonPhase == .75) { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseThirdQuarter"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_third_quarter.png"); } else // moonPhase > .75 { MoonPhaseValue.Text = App.ResourceLoader.GetString("MoonPhaseWaningCrescent"); MoonPhaseIcon.UriSource = new Uri("ms-appx:///Assets/Icons/moon_waning_crescent.png"); } }
private void PopulateForecastView(DayDataPoint todayWeather, CurrentDataPoint currentWeather) { Status.Text = currentWeather.Summary; //FeelsLike.Text = string.Format("{0} {1}°{2}", App.ResourceLoader.GetString("FeelsLike"), // currentWeather.ApparentTemperature, Settings.GetTemperatureUnit()); PrecipProbaValue.Text = $"{todayWeather.PrecipitationProbability * 100}%"; HumidityValue.Text = $"{currentWeather.Humidity * 100}%"; UVIndexValue.Text = $"{currentWeather.UVIndex}"; VisibilityValue.Text = $"{currentWeather.Visibility}"; SunriseTime.Text = todayWeather.SunriseTime.ToLocalTime().ToString("HH:mm"); SunsetTime.Text = todayWeather.SunsetTime.ToLocalTime().ToString("HH:mm"); MoonriseTime.Text = todayWeather.SunsetTime.ToLocalTime().ToString("HH:mm"); MoonsetTime.Text = todayWeather.SunriseTime.ToLocalTime().ToString("HH:mm"); WindSpeed.Text = $"{currentWeather.WindSpeed}{GetWindSpeedUnits()}"; WindDirection.Text = $"{currentWeather.WindBearing}°"; CloudCover.Text = $"{currentWeather.CloudCover * 100}%"; SetPressureValue(currentWeather, true); if (_pageDataSource.Forecast.Daily.Days == null || _pageDataSource.Forecast.Daily.Days.Count == 0) { return; } var currentDay = _pageDataSource.Forecast.Daily.Days[0]; MaxTempValue.Text = $"{(int)currentDay.MaxTemperature}°"; MinTempValue.Text = $"{(int)currentDay.MinTemperature}°"; // TODO: Make a pull request to avoid UNIX time conversion (https://github.com/jcheng31/DarkSkyApi) DateTimeOffset baseUnixTime = new DateTimeOffset(1970, 1, 1, 0, 0, 0, new TimeSpan()); var converted = baseUnixTime.AddSeconds(currentDay.UVIndexTime); UVIndexTimeValue.Text = $"{converted.ToLocalTime().ToString("HH:mm")}"; }
private static Canvas CreateClearNightIcon(DayDataPoint day) { var container = new Canvas() { HorizontalAlignment = HorizontalAlignment.Center, Margin = new Thickness(-130, -50, 0, 0) }; var compositor = ElementCompositionPreview.GetElementVisual(container).Compositor; var moon = CreateMoon(day.MoonPhase, compositor, Color.FromArgb(255, 236, 240, 241)); container.Children.Add(moon); // black orbs shadow //var shadowBallVisual1 = CreateEllipseVisual(compositor, 20, Color.FromArgb(255, 189, 195, 199)); //shadowBallVisual1.Offset = new Vector3(moonRadius/2, moonRadius/2, 0); //containerVisual.Children.InsertAtTop(shadowBallVisual1); return(container); }
private static string GetMoonPhaseIcon(DayDataPoint todayForecast) { var moonPhase = todayForecast.MoonPhase; string path = null; if (moonPhase == 0) { path = "ms-appx:///Assets/TileIcons/moon_new.png"; } else if (moonPhase > 0 && moonPhase < .25) { path = "ms-appx:///Assets/TileIcons/moon_waxing_crescent.png"; } else if (moonPhase == .25) { path = "ms-appx:///Assets/TileIcons/moon_first_quarter.png"; } else if (moonPhase > .25 && moonPhase < .5) { path = "ms-appx:///Assets/TileIcons/moon_waxing_gibbous.png"; } else if (moonPhase == .5) { path = "ms-appx:///Assets/TileIcons/moon_full.png"; } else if (moonPhase > .5 && moonPhase < .75) { path = "ms-appx:///Assets/TileIcons/moon_waning_gibbous.png"; } else if (moonPhase == .75) { path = "ms-appx:///Assets/TileIcons/moon_third_quarter.png"; } else // moonPhase > .75 { path = "ms-appx:///Assets/TileIcons/moon_waning_crescent.png"; } return(path); }
public static Grid CreateNew(Forecast forecast, bool isPremiumUser, bool deactivateBackgroundColorAnimation = false) { CurrentDataPoint currentForecast = forecast.Currently; DayDataPoint todayForecast = forecast.Daily.Days[0]; InitializeVariables(todayForecast); var scene = new Grid(); scene = Backgrounds.PaintBackground(scene, currentForecast, todayForecast); if (!deactivateBackgroundColorAnimation) { scene = Backgrounds.AnimateBackgroundColor(scene, currentForecast.Icon, _screenSize); } scene = AddAnimations(scene, currentForecast.Icon); scene = Icons.AddWeatherIconCondition(scene, forecast, _IsDay, isPremiumUser); //scene = isPremiumUser ? AddSpecialEvents(scene, forecast) : scene; return(scene); }
private static Canvas CreateCloudyNightIcon(DayDataPoint day) { var moonRadius = 120; var container = new Canvas() { Margin = new Thickness(-60, 0, 0, 0) }; var compositor = ElementCompositionPreview.GetElementVisual(container).Compositor; var containerVisual = compositor.CreateContainerVisual(); containerVisual.Size = new Vector2(moonRadius * 2, moonRadius * 2); var moon = CreateMoon(day.MoonPhase, compositor, Color.FromArgb(255, 245, 215, 110), 120); // ------ // CLOUDS // ------ var cloudImage = Visuals.CreateDarkCloudImage(100); var cloudVisual = ElementCompositionPreview.GetElementVisual(cloudImage); cloudVisual.Offset = new Vector3(0, 50, 0); var cloudImage2 = Visuals.CreateDarkCloudImage(70); var cloudVisual2 = ElementCompositionPreview.GetElementVisual(cloudImage2); cloudVisual2.Offset = new Vector3(-30, -20, 0); var cloudImage3 = Visuals.CreateDarkCloudImage(70); var cloudVisual3 = ElementCompositionPreview.GetElementVisual(cloudImage3); cloudVisual3.Offset = new Vector3(-90, -40, 0); container.Children.Add(moon); container.Children.Add(cloudImage); container.Children.Add(cloudImage2); container.Children.Add(cloudImage3); containerVisual.Children.InsertAtTop(cloudVisual); containerVisual.Children.InsertAtTop(cloudVisual2); containerVisual.Children.InsertAtBottom(cloudVisual3); Visuals.AddShadow(cloudImage, compositor, cloudVisual, containerVisual); Visuals.AddShadow(cloudImage2, compositor, cloudVisual2, containerVisual); Visuals.AddShadow(cloudImage3, compositor, cloudVisual3, containerVisual); // ---------- // ANIMATIONS // ---------- var animationOffset = Animations.CreateOffsetAnimation(compositor, -30, 6); cloudVisual.StartAnimation("Offset.x", animationOffset); animationOffset.Duration = TimeSpan.FromSeconds(5); animationOffset.InsertKeyFrame(1f, 70); cloudVisual2.StartAnimation("Offset.x", animationOffset); animationOffset.Duration = TimeSpan.FromSeconds(7); cloudVisual3.StartAnimation("Offset.x", animationOffset); ElementCompositionPreview.SetElementChildVisual(container, containerVisual); return(container); }
public static Grid AddWeatherIconCondition(Grid scene, Forecast forecast, bool isDay = true, bool isPremiumUser = false) { _isPremiumUser = isPremiumUser; CurrentDataPoint currentForecast = forecast.Currently; DayDataPoint todayForecast = forecast.Daily.Days[0]; var topScene = new Grid() { Name = "PrimaryConditionScene", VerticalAlignment = VerticalAlignment.Top, HorizontalAlignment = HorizontalAlignment.Center, Margin = new Thickness(0, 200, 0, 0) }; var condition = currentForecast.Icon; Canvas weatherCondition = null; switch (condition) { case "clear-day": weatherCondition = CreateClearDayIcon(); break; case "clear-night": weatherCondition = CreateClearNightIcon(todayForecast); break; case "partly-cloudy-day": weatherCondition = CreatePartlyCloudyDayIcon(); break; case "partly-cloudy-night": weatherCondition = CreatePartlyCloudyNightIcon(todayForecast); break; case "cloudy": weatherCondition = isDay == true? CreateCloudyDayIcon() : CreateCloudyNightIcon(todayForecast); break; case "rain": weatherCondition = CreateRainIcon(); break; case "sleet": // neige fondu weatherCondition = CreateSnowIcon(); break; case "snow": weatherCondition = CreateSnowIcon(); break; case "wind": weatherCondition = CreateWindIcon(); break; case "fog": weatherCondition = CreateFogIcon(); break; default: break; } //weatherCondition = GetWeatherIcon(); // test prupose topScene.Children.Add(weatherCondition); scene.Children.Add(topScene); return(scene); }
public static Grid PaintBackground(Grid scene, CurrentDataPoint current, DayDataPoint day) { var condition = current.Icon; var gradient = new LinearGradientBrush(); var firstStop = new GradientStop() { Offset = 0.0 }; var lastStop = new GradientStop() { Offset = 0.5 }; switch (condition) { case "clear-day": firstStop.Color = Color.FromArgb(255, 249, 191, 59); lastStop.Color = Color.FromArgb(255, 249, 105, 14); break; case "clear-night": firstStop.Color = Color.FromArgb(255, 51, 110, 123); lastStop.Color = Color.FromArgb(255, 31, 58, 147); break; case "partly-cloudy-day": firstStop.Color = Color.FromArgb(255, 58, 83, 155); lastStop.Color = Color.FromArgb(255, 34, 49, 63); break; case "partly-cloudy-night": firstStop.Color = Color.FromArgb(255, 58, 83, 155); lastStop.Color = Color.FromArgb(255, 34, 49, 63); break; case "cloudy": firstStop.Color = Color.FromArgb(255, 34, 49, 63); lastStop.Color = Color.FromArgb(255, 103, 128, 159); break; case "rain": firstStop.Color = Color.FromArgb(255, 31, 58, 147); lastStop.Color = Color.FromArgb(255, 75, 119, 190); break; case "sleet": // neige fondu firstStop.Color = Color.FromArgb(255, 236, 240, 241); lastStop.Color = Color.FromArgb(255, 191, 191, 191); break; case "snow": firstStop.Color = Color.FromArgb(255, 236, 236, 236); lastStop.Color = Color.FromArgb(255, 255, 255, 255); break; case "wind": firstStop.Color = Color.FromArgb(255, 236, 236, 236); lastStop.Color = Color.FromArgb(255, 137, 196, 244); break; case "fog": firstStop.Color = Color.FromArgb(255, 107, 185, 240); lastStop.Color = Color.FromArgb(255, 174, 168, 211); break; default: firstStop.Color = Color.FromArgb(255, 249, 191, 59); lastStop.Color = Color.FromArgb(255, 211, 84, 0); break; } gradient.GradientStops.Add(firstStop); gradient.GradientStops.Add(lastStop); scene.Background = gradient; return(scene); }