2017-11-30 02:46:17 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using WatchFace.Parser.Helpers;
|
|
|
|
|
|
|
|
|
|
namespace WatchFace.Parser.Models.Elements
|
|
|
|
|
{
|
|
|
|
|
public class TemperatureNumberElement : CompositeElement
|
|
|
|
|
{
|
|
|
|
|
public TemperatureNumberElement(Parameter parameter, Element parent = null, string name = null) :
|
|
|
|
|
base(parameter, parent, name) { }
|
|
|
|
|
|
|
|
|
|
public NumberElement Number { get; set; }
|
|
|
|
|
public long MinusImageIndex { get; set; }
|
|
|
|
|
public long? DegreesImageIndex { get; set; }
|
|
|
|
|
|
2017-12-25 11:23:48 +01:00
|
|
|
|
public void Draw(Graphics drawer, Bitmap[] resources, int temperature, CoordinatesElement altCoordinates = null)
|
2017-11-30 02:46:17 +01:00
|
|
|
|
{
|
2017-12-25 11:23:48 +01:00
|
|
|
|
var drawingBox = altCoordinates == null ? Number.GetBox() : Number.GetAltBox(altCoordinates);
|
2017-11-30 02:46:17 +01:00
|
|
|
|
var images = GetImagesForTemperature(resources, temperature);
|
2017-12-25 11:23:48 +01:00
|
|
|
|
DrawerHelper.DrawImages(drawer, images, (int) Number.Spacing, Number.Alignment, drawingBox);
|
2017-11-30 02:46:17 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<Bitmap> GetImagesForTemperature(Bitmap[] resources, int temperature)
|
|
|
|
|
{
|
|
|
|
|
var images = new List<Bitmap>();
|
|
|
|
|
if (temperature < 0)
|
|
|
|
|
images.Add(resources[MinusImageIndex]);
|
|
|
|
|
images.AddRange(Number.GetImagesForNumber(resources, Math.Abs(temperature)));
|
|
|
|
|
if (DegreesImageIndex != null)
|
|
|
|
|
images.Add(resources[DegreesImageIndex.Value]);
|
|
|
|
|
return images;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override Element CreateChildForParameter(Parameter parameter)
|
|
|
|
|
{
|
|
|
|
|
switch (parameter.Id)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
Number = new NumberElement(parameter, this);
|
|
|
|
|
return Number;
|
|
|
|
|
case 2:
|
|
|
|
|
MinusImageIndex = parameter.Value;
|
|
|
|
|
return new ValueElement(parameter, this);
|
|
|
|
|
case 3:
|
|
|
|
|
DegreesImageIndex = parameter.Value;
|
|
|
|
|
return new ValueElement(parameter, this);
|
|
|
|
|
default:
|
|
|
|
|
return base.CreateChildForParameter(parameter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|