From 6926e798fe9cd4d889976630782d4c3cbb7f98d7 Mon Sep 17 00:00:00 2001 From: Fahad Date: Fri, 14 Jan 2022 14:06:14 +0400 Subject: [PATCH 1/2] Produce a dynamic library too --- Package.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Package.swift b/Package.swift index a284da1..083268f 100644 --- a/Package.swift +++ b/Package.swift @@ -8,6 +8,10 @@ let package = Package( .library( name: "SmoothGradient", targets: ["SmoothGradient"]), + .library( + name: "SmoothGradientDynamic", + type: .dynamic, + targets: ["SmoothGradient"]), ], targets: [ .target( From af18962068f1ecd1e87ee5d8199ea4fdb8d0c275 Mon Sep 17 00:00:00 2001 From: Fahad Date: Fri, 14 Jan 2022 14:30:56 +0400 Subject: [PATCH 2/2] Added support for custom precision --- .../SmoothGradientGenerator.swift | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/Sources/SmoothGradient/SmoothGradientGenerator.swift b/Sources/SmoothGradient/SmoothGradientGenerator.swift index aebd6f4..7d677b9 100644 --- a/Sources/SmoothGradient/SmoothGradientGenerator.swift +++ b/Sources/SmoothGradient/SmoothGradientGenerator.swift @@ -6,12 +6,24 @@ public enum SmoothGradientInterpolation { } /// Define the number of intermediate colors to generate. -public enum SmoothGradientPrecision: Int { - case low = 1 - case lowMedium = 3 - case medium = 5 - case mediumHigh = 7 - case high = 9 +public enum SmoothGradientPrecision { + case low + case lowMedium + case medium + case mediumHigh + case high + case custom(Int) + + func precisionToCount() -> Int { + switch self { + case .low: return 1 + case .lowMedium: return 3 + case .medium: return 5 + case .mediumHigh: return 7 + case .high: return 9 + case .custom(let value): return value + } + } } protocol RGBColorConvertible { @@ -35,7 +47,7 @@ public struct SmoothGradientGenerator { interpolation: SmoothGradientInterpolation = .hcl, precision: SmoothGradientPrecision = .medium ) -> [RGBColor] { - let count = precision.rawValue + let count = precision.precisionToCount() return interpolate(from: from, to: to, count: count, interpolation: interpolation) } @@ -68,7 +80,7 @@ public struct SmoothGradientGenerator { ) -> [LCHColor] { switch interpolation { case .hcl: - let count = precision.rawValue + let count = precision.precisionToCount() return interpolate(from: from, to: to, count: count) default: return generateAsRGBColor( @@ -93,7 +105,7 @@ public struct SmoothGradientGenerator { ) -> [HSLColor] { switch interpolation { case .hsl: - let count = precision.rawValue + let count = precision.precisionToCount() return interpolate(from: from, to: to, count: count) default: return generateAsRGBColor( @@ -118,7 +130,7 @@ public struct SmoothGradientGenerator { ) -> [HSBColor] { switch interpolation { case .hsb: - let count = precision.rawValue + let count = precision.precisionToCount() return interpolate(from: from, to: to, count: count) default: return generateAsRGBColor(