private LiveryIconEditor(CarSkinObject skin, bool quickMode, bool randomMode) {
_quickMode = quickMode;
Skin = skin;
DataContext = this;
InitializeComponent();
if (randomMode) {
SelectedShape = Shapes.RandomElement();
} else {
SelectedShape = Shapes.GetByIdOrDefault(ValuesStorage.GetString(KeyShape)) ?? Shapes.FirstOrDefault();
}
SelectedStyle = Styles.GetByIdOrDefault(ValuesStorage.GetString(KeyStyle)) ?? Styles.FirstOrDefault();
SelectedNumbers = string.IsNullOrWhiteSpace(skin.SkinNumber) || skin.SkinNumber == @"0"
? Numbers.FirstOrDefault() : Numbers.GetByIdOrDefault(ValuesStorage.GetString(KeyNumbers)) ?? Numbers.FirstOrDefault();
Buttons = new[] { OkButton, CancelButton };
Model.Value = string.IsNullOrWhiteSpace(skin.SkinNumber) ? @"0" : skin.SkinNumber;
Model.TextColorValue = Colors.White;
try {
using (var bitmap = Image.FromFile(skin.PreviewImage)) {
var colors = ImageUtils.GetBaseColors((Bitmap)bitmap);
Model.ColorValue = colors.Select(x => (System.Drawing.Color?)x).FirstOrDefault()?.ToColor() ?? Colors.White;
Model.SecondaryColorValue = colors.Select(x => (System.Drawing.Color?)x).ElementAtOrDefault(1)?.ToColor() ?? Colors.Black;
Model.TertiaryColorValue = colors.Select(x => (System.Drawing.Color?)x).ElementAtOrDefault(2)?.ToColor() ?? Colors.Black;
}
} catch (Exception e) {
Logging.Warning("Can’t find base colors: " + e);
Model.ColorValue = Colors.White;
Model.SecondaryColorValue = Colors.Black;
Model.TertiaryColorValue = Colors.Black;
}
}