{
    "$id": "https://raw.githubusercontent.com/wraith13/flounder.style.js/master/generated/schema.json#",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$ref": "#/definitions/Type.Arguments",
    "definitions": {
        "Type.FlounderType": {
            "oneOf": [
                {
                    "enum": [
                        "trispot",
                        "tetraspot"
                    ]
                },
                {
                    "enum": [
                        "stripe",
                        "diline",
                        "triline"
                    ]
                }
            ]
        },
        "Type.LayoutAngle": {
            "enum": [
                "regular",
                "alternative"
            ]
        },
        "Type.HexColor": {
            "type": "string",
            "pattern": "^#(?:[0-9A-Fa-f]){3,4,6,8}$"
        },
        "Type.NamedColor": {
            "enum": [
                "black",
                "silver",
                "gray",
                "white",
                "maroon",
                "red",
                "purple",
                "fuchsia",
                "green",
                "lime",
                "olive",
                "yellow",
                "navy",
                "blue",
                "teal",
                "aqua",
                "aliceblue",
                "antiquewhite",
                "aquamarine",
                "azure",
                "beige",
                "bisque",
                "blanchedalmond",
                "blueviolet",
                "brown",
                "burlywood",
                "cadetblue",
                "chartreuse",
                "chocolate",
                "coral",
                "cornflowerblue",
                "cornsilk",
                "crimson",
                "cyan",
                "darkblue",
                "darkcyan",
                "darkgoldenrod",
                "darkgray",
                "darkgreen",
                "darkgrey",
                "darkkhaki",
                "darkmagenta",
                "darkolivegreen",
                "darkorange",
                "darkorchid",
                "darkred",
                "darksalmon",
                "darkseagreen",
                "darkslateblue",
                "darkslategray",
                "darkslategrey",
                "darkturquoise",
                "darkviolet",
                "deeppink",
                "deepskyblue",
                "dimgray",
                "dimgrey",
                "dodgerblue",
                "firebrick",
                "floralwhite",
                "forestgreen",
                "gainsboro",
                "ghostwhite",
                "gold",
                "goldenrod",
                "greenyellow",
                "grey",
                "honeydew",
                "hotpink",
                "indianred",
                "indigo",
                "ivory",
                "khaki",
                "lavender",
                "lavenderblush",
                "lawngreen",
                "lemonchiffon",
                "lightblue",
                "lightcoral",
                "lightcyan",
                "lightgoldenrodyellow",
                "lightgray",
                "lightgreen",
                "lightgrey",
                "lightpink",
                "lightsalmon",
                "lightseagreen",
                "lightskyblue",
                "lightslategray",
                "lightslategrey",
                "lightsteelblue",
                "lightyellow",
                "limegreen",
                "linen",
                "magenta",
                "mediumaquamarine",
                "mediumblue",
                "mediumorchid",
                "mediumpurple",
                "mediumseagreen",
                "mediumslateblue",
                "mediumspringgreen",
                "mediumturquoise",
                "mediumvioletred",
                "midnightblue",
                "mintcream",
                "mistyrose",
                "moccasin",
                "navajowhite",
                "oldlace",
                "olivedrab",
                "orange",
                "orangered",
                "orchid",
                "palegoldenrod",
                "palegreen",
                "paleturquoise",
                "palevioletred",
                "papayawhip",
                "peachpuff",
                "peru",
                "pink",
                "plum",
                "powderblue",
                "rebeccapurple",
                "rosybrown",
                "royalblue",
                "saddlebrown",
                "salmon",
                "sandybrown",
                "seagreen",
                "seashell",
                "sienna",
                "skyblue",
                "slateblue",
                "slategray",
                "slategrey",
                "snow",
                "springgreen",
                "steelblue",
                "tan",
                "thistle",
                "tomato",
                "transparent",
                "turquoise",
                "violet",
                "wheat",
                "whitesmoke",
                "yellowgreen"
            ]
        },
        "Type.Color": {
            "oneOf": [
                {
                    "$ref": "#/definitions/Type.HexColor"
                },
                {
                    "$ref": "#/definitions/Type.NamedColor"
                }
            ]
        },
        "Type.Rate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
        },
        "Type.SignedRate": {
            "type": "number",
            "minimum": -1,
            "maximum": 1
        },
        "Type.Pixel": {
            "type": "number",
            "minimum": 0
        },
        "Type.SignedPixel": {
            "type": "number"
        },
        "Type.Count": {
            "type": "integer",
            "minimum": 0
        },
        "Type.NamedDirectionAngle": {
            "enum": [
                "right",
                "right-down",
                "down",
                "left-down",
                "left",
                "left-up",
                "up",
                "right-up"
            ]
        },
        "Type.DirectionAngle": {
            "oneOf": [
                {
                    "$ref": "#/definitions/Type.NamedDirectionAngle"
                },
                {
                    "$ref": "#/definitions/Type.SignedRate"
                }
            ]
        },
        "Type.ArgumentsBase": {
            "type": "object",
            "properties": {
                "$schema": {
                    "const": "https://raw.githubusercontent.com/wraith13/flounder.style.js/master/generated/schema.json#"
                },
                "type": {
                    "$ref": "#/definitions/Type.FlounderType"
                },
                "layoutAngle": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.LayoutAngle"
                        },
                        {
                            "$ref": "#/definitions/Type.SignedRate"
                        }
                    ]
                },
                "offsetX": {
                    "$ref": "#/definitions/Type.SignedPixel"
                },
                "offsetY": {
                    "$ref": "#/definitions/Type.SignedPixel"
                },
                "foregroundColor": {
                    "$ref": "#/definitions/Type.Color"
                },
                "backgroundColor": {
                    "$ref": "#/definitions/Type.Color"
                },
                "intervalSize": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "depth": {
                    "$ref": "#/definitions/Type.Rate"
                },
                "blur": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "maxPatternSize": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "reverseRate": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.SignedRate"
                        },
                        {
                            "const": "auto"
                        },
                        {
                            "const": "-auto"
                        }
                    ]
                },
                "anglePerDepth": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.SignedRate"
                        },
                        {
                            "const": "auto"
                        },
                        {
                            "const": "-auto"
                        }
                    ]
                },
                "maximumFractionDigits": {
                    "$ref": "#/definitions/Type.Count"
                }
            },
            "required": [
                "type",
                "foregroundColor",
                "depth"
            ],
            "additionalProperties": false
        },
        "Type.SpotArguments": {
            "type": "object",
            "properties": {
                "$schema": {
                    "const": "https://raw.githubusercontent.com/wraith13/flounder.style.js/master/generated/schema.json#"
                },
                "type": {
                    "enum": [
                        "trispot",
                        "tetraspot"
                    ]
                },
                "layoutAngle": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.LayoutAngle"
                        },
                        {
                            "const": 0
                        }
                    ]
                },
                "offsetX": {
                    "$ref": "#/definitions/Type.SignedPixel"
                },
                "offsetY": {
                    "$ref": "#/definitions/Type.SignedPixel"
                },
                "foregroundColor": {
                    "$ref": "#/definitions/Type.Color"
                },
                "backgroundColor": {
                    "$ref": "#/definitions/Type.Color"
                },
                "intervalSize": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "depth": {
                    "$ref": "#/definitions/Type.Rate"
                },
                "blur": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "maxPatternSize": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "reverseRate": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.SignedRate"
                        },
                        {
                            "const": "auto"
                        },
                        {
                            "const": "-auto"
                        }
                    ]
                },
                "anglePerDepth": {
                    "const": 0
                },
                "maximumFractionDigits": {
                    "$ref": "#/definitions/Type.Count"
                }
            },
            "required": [
                "type",
                "foregroundColor",
                "depth"
            ],
            "additionalProperties": false
        },
        "Type.LineArguments": {
            "type": "object",
            "properties": {
                "$schema": {
                    "const": "https://raw.githubusercontent.com/wraith13/flounder.style.js/master/generated/schema.json#"
                },
                "type": {
                    "enum": [
                        "stripe",
                        "diline",
                        "triline"
                    ]
                },
                "layoutAngle": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.LayoutAngle"
                        },
                        {
                            "$ref": "#/definitions/Type.SignedRate"
                        }
                    ]
                },
                "offsetX": {
                    "$ref": "#/definitions/Type.SignedPixel"
                },
                "offsetY": {
                    "$ref": "#/definitions/Type.SignedPixel"
                },
                "foregroundColor": {
                    "$ref": "#/definitions/Type.Color"
                },
                "backgroundColor": {
                    "$ref": "#/definitions/Type.Color"
                },
                "intervalSize": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "depth": {
                    "$ref": "#/definitions/Type.Rate"
                },
                "blur": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "maxPatternSize": {
                    "$ref": "#/definitions/Type.Pixel"
                },
                "reverseRate": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.SignedRate"
                        },
                        {
                            "const": "auto"
                        },
                        {
                            "const": "-auto"
                        }
                    ]
                },
                "anglePerDepth": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Type.SignedRate"
                        },
                        {
                            "const": "auto"
                        },
                        {
                            "const": "-auto"
                        }
                    ]
                },
                "maximumFractionDigits": {
                    "$ref": "#/definitions/Type.Count"
                }
            },
            "required": [
                "type",
                "foregroundColor",
                "depth"
            ],
            "additionalProperties": false
        },
        "Type.Arguments": {
            "oneOf": [
                {
                    "$ref": "#/definitions/Type.SpotArguments"
                },
                {
                    "$ref": "#/definitions/Type.LineArguments"
                }
            ]
        }
    }
}