The purpose of this repository is to provide a way for people to create placeholder images quickly. https://www.craigoates.net/Software/project/11
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.6 KiB

module internal Validation
open System.Drawing
open SmoulderingBeachBall.Domain.DomainTypes
open System
let colourList =
[ "blue", Brushes.AliceBlue;
"brown", Brushes.Brown;
"black", Brushes.Black;
"gray", Brushes.Gray;
"green", Brushes.Green;
"purple", Brushes.Purple;
"red", Brushes.Red;
"white", Brushes.White;
"yellow", Brushes.Yellow;]
|> Map.ofList
let isColourValid (colour: string) =
colourList
|> Map.containsKey (colour.ToLower())
let parseColour colour =
match (isColourValid colour) with
| true ->
colourList
|> Map.find (colour.ToLower())
| false ->
invalidArg "Colour"
(String.Concat("[ERROR] The colour specifed is invalid.\n",
"Please use the 'list-colours' command to see what you can use."))
let parsePath (path: string) =
match path with
| path when ((path.ToLower()).Equals "desktop") ->
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
| path when ((path.ToLower()).Equals "d") ->
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
| _ -> path
let buildBasicSpec iWidth iHeight mainColour path =
let brush = (parseColour mainColour)
let parsedPath = parsePath path
let spec =
{ width = iWidth;
height = iHeight;
colour = brush
filePath = parsedPath
overlay = None }
spec