Browse Source

set obsolete attributes and refactor replacement to applyGridToImageAsync.

master
Craig Oates 5 years ago
parent
commit
392151692f
  1. 52
      DeathSocket/GridPainter.fs
  2. 88
      DeathSocket/ScratchPad.fsx
  3. 8
      DeathSocketCLI/Commands.fs
  4. 1
      TestCentre/LibraryTests.fs

52
DeathSocket/GridPainter.fs

@ -15,6 +15,29 @@ namespace DeathSocket
open Validation open Validation
open ImageServices open ImageServices
open System
// Not tested
let applyGridToImageAsync (spec: ImageSpec) =
async {
try
match spec with
| Brush b ->
validateIO b.originalPath b.savePath |> ignore
drawBrushSpecGrid b
| RGBA r ->
validateIO r.originalPath r.savePath |> ignore
drawRGBAGrid r
| Skia s ->
validateIO s.originalPath s.savePath |> ignore
drawSkiaGrid s
| SkiaRGB sR ->
validateIO sR.originalPath sR.savePath |> ignore
drawSkiaRGBGrid sR
with
| :? FileNotFoundException as ex ->
printfn "File could not be found at %s" ex.Message
}
// System.Drawing Functions // System.Drawing Functions
// ======================================================================== // ========================================================================
@ -62,6 +85,7 @@ namespace DeathSocket
/// is not in use or needed by another program/process. /// is not in use or needed by another program/process.
/// This is because it is locked whilst in this function. /// This is because it is locked whilst in this function.
/// </remarks> /// </remarks>
[<Obsolete("Method is deprecated, use applyGridToImage instead.")>]
let applyBrushSpecGridAsync (spec: BrushSpec) = let applyBrushSpecGridAsync (spec: BrushSpec) =
async { async {
try try
@ -90,6 +114,7 @@ namespace DeathSocket
/// is not in use or needed by another program/process. /// is not in use or needed by another program/process.
/// This is because it is locked whilst in this function. /// This is because it is locked whilst in this function.
/// </remarks> /// </remarks>
[<Obsolete("Method is deprecated, use applyGridToImage instead.")>]
let applyRGBAGridAsync (spec: RGBASpec) = let applyRGBAGridAsync (spec: RGBASpec) =
async { async {
try try
@ -162,7 +187,6 @@ namespace DeathSocket
let determineSKVerticalLines (width: int) (height: int) (columns: int) = let determineSKVerticalLines (width: int) (height: int) (columns: int) =
createSKVerticalLines width height columns createSKVerticalLines width height columns
/// <summary> /// <summary>
/// Uses the information included in spec to create a gridded image. /// Uses the information included in spec to create a gridded image.
/// It then asynchronously saves it. Uses .jpg or .png formats only. /// It then asynchronously saves it. Uses .jpg or .png formats only.
@ -178,6 +202,7 @@ namespace DeathSocket
/// is not in use or needed by another program/process. /// is not in use or needed by another program/process.
/// This is because it is locked whilst in this function. /// This is because it is locked whilst in this function.
/// </remarks> /// </remarks>
[<Obsolete("Method is deprecated, use applyGridToImage instead.")>]
let applySkiaGridAsync (spec: SkiaSpec) = let applySkiaGridAsync (spec: SkiaSpec) =
async { async {
try try
@ -204,6 +229,7 @@ namespace DeathSocket
/// is not in use or needed by another program/process. /// is not in use or needed by another program/process.
/// This is because it is locked whilst in this function. /// This is because it is locked whilst in this function.
/// </remarks> /// </remarks>
[<Obsolete("Method is deprecated, use applyGridToImage instead.")>]
let applySkiaRGBGridAsync (spec: SkiaRGBSpec) = let applySkiaRGBGridAsync (spec: SkiaRGBSpec) =
async { async {
try try
@ -213,26 +239,4 @@ namespace DeathSocket
with with
| :? FileNotFoundException as ex -> | :? FileNotFoundException as ex ->
printfn "File could not be found at %s" ex.Message printfn "File could not be found at %s" ex.Message
} }
// Not tested
let applyImageToGrid (spec: ImageSpec) =
async {
try
match spec with
| Brush b ->
validateIO b.originalPath b.savePath |> ignore
drawBrushSpecGrid b
| RGBA r ->
validateIO r.originalPath r.savePath |> ignore
drawRGBAGrid r
| Skia s ->
validateIO s.originalPath s.savePath |> ignore
drawSkiaGrid s
| SkiaRGB sR ->
validateIO sR.originalPath sR.savePath |> ignore
drawSkiaRGBGrid sR
with
| :? FileNotFoundException as ex ->
printfn "File could not be found at %s" ex.Message
}

88
DeathSocket/ScratchPad.fsx

@ -1,5 +1,6 @@
#r @"C:\Users\craig\.nuget\packages\skiasharp\1.60.3\lib\netstandard1.3\SkiaSharp.dll" #r @"C:/Users/craig/.nuget/packages/skiasharp/1.60.3/lib/netstandard1.3/SkiaSharp.dll"
#r @"C:\Users\craig\.nuget\packages\skiasharp\1.60.3\lib\net45\SkiaSharp.dll" #r @"C:/Users/craig/.nuget/packages/skiasharp/1.60.3/lib/net45/SkiaSharp.dll"
#r @"C:/Users/craig/.nuget/packages/skiasharp/1.60.3/lib/Xamarin.Mac20/SkiaSharp.dll"
#load "Domain.fs" #load "Domain.fs"
#load "Validation.fs" #load "Validation.fs"
@ -12,6 +13,8 @@ open System
open DeathSocket open DeathSocket
open Validation open Validation
open ImageServices open ImageServices
open SkiaSharp
(* Death Socket Scripts (* Death Socket Scripts
=============================================================================== ===============================================================================
@ -21,36 +24,63 @@ a nerw image. *)
let desktop = Environment.GetFolderPath (Environment.SpecialFolder.Desktop) let desktop = Environment.GetFolderPath (Environment.SpecialFolder.Desktop)
(* You will need to provide the image at the location specified. It will throw (* You will need to provide the image at the location specified. Both throw an
an exception if the file cannnot be found.*) exception if the file cannot be found or is the wrong extension. Death Socket
let validationTest = validateFilePath (desktop + "/test.jpg") only works with JPG and PNG.*)
let IOTest = validateFilePath (desktop + "/test.jpg")
let extentionTest = validateSaveFileType (desktop + "/test.jpg")
(* These are not needed to create an image. There here for you to check the (* These are not needed by you to create an image. They here for you to check
start and end points of each pen stroke/path. *) the start and end points of each pen stroke/path. *)
let horizontalLines = createHorizontalLines 1000 500 10 let horizontalLines = createHorizontalLines 1000 500 10
let verticalLines = createVerticalLines 300 600 10 let verticalLines = createVerticalLines 300 600 10
let skHorizontalLines = createSKHorizontalLines 550 520 10
let skVerticalLines = createSKVerticalLines 120 450 22
(* You will need to provide the image and specify its load/save location. (* You will need to provide the image and specify its load/save location.
Death Socket assumes either JPEG or PNG files so use other files at your own Death Socket assumes either JPEG or PNG files.*)
risk. Cannot guarantee they will work. Also, either in this spec. can be
changed to suit your needs. *) // Brush Specification (uses System.Drawing)
let spec: BrushSpec = Brush ({ originalPath = desktop + "/test.jpg"
{ originalPath = desktop + "/test.jpg" savePath = desktop + "/grid.png"
savePath = desktop + "/grid.png" colour = Brushes.Chartreuse
colour = Brushes.Chartreuse penWidth = (float32 1)
penWidth = (float32 1) rows = 10
rows = 10 columns = 10 })
columns = 10 } |> GridPainter.applyGridToImageAsync
|> Async.Start
// Run this when you have finished building the spec.
GridPainter.applyBrushSpecGridAsync spec |> Async.RunSynchronously // RGBA Specification (uses System.Drawing)
RGBA ({ originalPath = desktop + "/test.jpg"
//***************************************************************************** savePath = desktop + "/grid.png"
alpha = float 1
(* Skia Sharp Draft red = float 122
=============================================================================== green = float 222
The code below here will eventually be worked into the main codebase or thrown blue = float 100
away. It is here acting as a first draft for integrating the Skia Sharp NuGet penWidth = (float32 1)
package into Death Socket. *) rows = 10
columns = 10 })
|> GridPainter.applyGridToImageAsync
|> Async.Start
// Skia Specification (uses SkiaSharp -- use with Xamarin)
Skia ({ originalPath = desktop + "/test.jpg"
savePath = desktop + "/grid.png"
skColour = SKColors.BlueViolet
penWidth = (float32 1)
rows = 10
columns = 10})
|> GridPainter.applyGridToImageAsync
|> Async.Start
drawSkiaGrid() // SkiaRGB Specification (uses SkiaSharp -- use with Xamarin)
SkiaRGB ({ originalPath = desktop + "/test.jpg"
savePath = desktop + "/grid.png"
red = (float32 102)
green = (float32 124)
blue = (float32 224)
penWidth = (float32 1)
rows = 10
columns = 10})
|> GridPainter.applyGridToImageAsync
|> Async.RunSynchronously

8
DeathSocketCLI/Commands.fs

@ -40,7 +40,7 @@
try try
printfn "[INFO.] Adding default grid to image..." printfn "[INFO.] Adding default grid to image..."
Brush (buildDefaultSpec imgPath newPath) Brush (buildDefaultSpec imgPath newPath)
|> applyImageToGrid |> applyGridToImageAsync
|> Async.Start |> Async.Start
showEndOfCommandMessage showEndOfCommandMessage
with with
@ -59,7 +59,7 @@
try try
printfn "[INFO.] Adding grid to image..." printfn "[INFO.] Adding grid to image..."
Brush (buildSpec imgPath numRows numColumns pWidth colour newPath) Brush (buildSpec imgPath numRows numColumns pWidth colour newPath)
|> applyImageToGrid |> applyGridToImageAsync
|> Async.Start |> Async.Start
showEndOfCommandMessage showEndOfCommandMessage
with with
@ -112,13 +112,13 @@
let``add-skia-grid`` imgPath numRows numColumns pWidth colour newPath = let``add-skia-grid`` imgPath numRows numColumns pWidth colour newPath =
printfn "[INFO.] Adding SkiaSharp grid to image..." printfn "[INFO.] Adding SkiaSharp grid to image..."
Skia (buildSkiaSpec imgPath numRows numColumns pWidth colour newPath) Skia (buildSkiaSpec imgPath numRows numColumns pWidth colour newPath)
|> applyImageToGrid |> applyGridToImageAsync
|> Async.Start |> Async.Start
showEndOfCommandMessage showEndOfCommandMessage
let``add-skia-rgb-grid`` imgPath numRows numColumns pWidth r g b newPath = let``add-skia-rgb-grid`` imgPath numRows numColumns pWidth r g b newPath =
printfn "[INFO.] Adding SkiaSharp grid to image..." printfn "[INFO.] Adding SkiaSharp grid to image..."
SkiaRGB (buildSkiaRGBSpec imgPath numRows numColumns pWidth r g b newPath) SkiaRGB (buildSkiaRGBSpec imgPath numRows numColumns pWidth r g b newPath)
|> applyImageToGrid |> applyGridToImageAsync
|> Async.Start |> Async.Start
showEndOfCommandMessage showEndOfCommandMessage

1
TestCentre/LibraryTests.fs

@ -105,7 +105,6 @@
open DeathSocket.GridPainter open DeathSocket.GridPainter
open TestingHelpers open TestingHelpers
open System.IO open System.IO
open SkiaSharp
(* With regards to the "saving images" tests, you should end up with (* With regards to the "saving images" tests, you should end up with
one image left over in the SavingTestArea folder. Comment out the one image left over in the SavingTestArea folder. Comment out the

Loading…
Cancel
Save