using System.Windows;
using System.Windows.Media;
using Newtonsoft.Json;
using System.Windows.Threading;

namespace HistoryWallEditTool.Utilities
{
    public partial class DataCollect
    {
        [JsonProperty("MainBackgroundCollect")]
        public MainBackground MainBackgroundCollect { get; set; }
        [JsonProperty("TimelineCollect")]
        public Timeline TimelineCollect { get; set; }
        [JsonProperty("TimelineExtentCollect")]
        public TimelineExtent TimelineExtentCollect { get; set; }
        [JsonProperty("EventCollect")]
        public Event EventCollect { get; set; }
        [JsonProperty("EventContentCollect")]
        public EventContent EventContentCollect { get; set; }
        [JsonProperty("ButtonSelectCollect")]
        public ButtonSelect ButtonSelectCollect { get; set; }
    }

    public partial class MainBackground
    {
        [JsonProperty("BackgroundColor")]
        public Color BackgroundColor { get; set; }
        [JsonProperty("BackgroundColorPoint")]
        public Point? BackgroundColorPoint { get; set; }

        [JsonProperty("ImgBackground")]
        public string ImgBackground { get; set; }
        [JsonProperty("ImgLogo")]
        public string ImgLogo { get; set; }

        [JsonProperty("LangText")]
        public string[] LangText { get; set; }

        [JsonProperty("LangFlowDir")]
        public FlowDirection[] LangFlowDir { get; set; }

        [JsonProperty("DefaultLangIndex")]
        public int DefaultLangIndex { get; set; }

        [JsonProperty("BackHomeMillisecond")]
        public int BackHomeMillisecond { get; set; }

        [JsonProperty("ScreenSetting")]
        public int ScreenSetting { get; set; }

        [JsonProperty("IsUsing4kResolution")]
        public bool IsUsing4kResolution { set; get; }
    }

    public partial class Timeline
    {
        [JsonProperty("TextColor")]
        public Color TextColor { get; set; }
        [JsonProperty("TextColorPoint")]
        public Point? TextColorPoint { get; set; }

        [JsonProperty("BackgroundColor")]
        public Color BackgroundColor { get; set; }
        [JsonProperty("BackgroundColorPoint")]
        public Point? BackgroundColorPoint { get; set; }

        [JsonProperty("ThicknessColor")]
        public Color ThicknessColor { get; set; }
        [JsonProperty("ThicknessColorPoint")]
        public Point? ThicknessColorPoint { get; set; }
    }

    public partial class Event
    {
        [JsonProperty("TextColor")]
        public Color TextColor { get; set; }
        [JsonProperty("TextColorPoint")]
        public Point? TextColorPoint { get; set; }

        [JsonProperty("BackgroundColor")]
        public Color BackgroundColor { get; set; }
        [JsonProperty("BackgroundColorPoint")]
        public Point? BackgroundColorPoint { get; set; }

        [JsonProperty("ThicknessColor")]
        public Color ThicknessColor { get; set; }
        [JsonProperty("ThicknessColorPoint")]
        public Point? ThicknessColorPoint { get; set; }
    }

    public partial class EventContent
    {
        [JsonProperty("TextColor")]
        public Color TextColor { get; set; }
        [JsonProperty("TextColorPoint")]
        public Point? TextColorPoint { get; set; }

        [JsonProperty("BackgroundColor")]
        public Color BackgroundColor { get; set; }
        [JsonProperty("BackgroundColorPoint")]
        public Point? BackgroundColorPoint { get; set; }

        [JsonProperty("ThicknessColor")]
        public Color ThicknessColor { get; set; }
        [JsonProperty("ThicknessColorPoint")]
        public Point? ThicknessColorPoint { get; set; }
    }

    public partial class TimelineExtent
    {
        [JsonProperty("TextColor")]
        public Color TextColor { get; set; }
        [JsonProperty("TextColorPoint")]
        public Point? TextColorPoint { get; set; }

        [JsonProperty("BackgroundColor")]
        public Color BackgroundColor { get; set; }
        [JsonProperty("BackgroundColorPoint")]
        public Point? BackgroundColorPoint { get; set; }

        [JsonProperty("ThicknessColor")]
        public Color ThicknessColor { get; set; }
        [JsonProperty("ThicknessColorPoint")]
        public Point? ThicknessColorPoint { get; set; }
    }

    public partial class ButtonSelect
    {
        [JsonProperty("TextColor")]
        public Color TextColor { get; set; }
        [JsonProperty("TextColorPoint")]
        public Point? TextColorPoint { get; set; }

        [JsonProperty("TextColorUnselect")]
        public Color TextColorUnselect { get; set; }
        [JsonProperty("TextColorUnselectPoint")]
        public Point? TextColorUnselectPoint { get; set; }

        [JsonProperty("BackgroundColor")]
        public Color BackgroundColor { get; set; }
        [JsonProperty("BackgroundColorPoint")]
        public Point? BackgroundColorPoint { get; set; }

        [JsonProperty("BackgroundColorUnselect")]
        public Color BackgroundColorUnselect { get; set; }
        [JsonProperty("BackgroundColorUnselectPoint")]
        public Point? BackgroundColorUnselectPoint { get; set; }
    }
}
