diff --git a/examples/gradient.nim b/examples/gradient.nim index 9a93ef2..fae47f7 100644 --- a/examples/gradient.nim +++ b/examples/gradient.nim @@ -11,8 +11,8 @@ let paint = Paint( vec2(100, 200) ], gradientStops: @[ - ColorStop(color: rgba(255, 0, 0, 255).color, position: 0), - ColorStop(color: rgba(255, 0, 0, 40).color, position: 1.0), + ColorStop(color: rgba(255, 0, 0, 255), position: 0), + ColorStop(color: rgba(255, 0, 0, 40), position: 1.0), ] ) @@ -28,4 +28,4 @@ image.fillPath( paint ) -image.writeFile("examples/paint.png") +image.writeFile("examples/gradient.png") diff --git a/examples/gradient.png b/examples/gradient.png index a7f5574..9e76abb 100644 Binary files a/examples/gradient.png and b/examples/gradient.png differ diff --git a/examples/paint.png b/examples/paint.png deleted file mode 100644 index a7f5574..0000000 Binary files a/examples/paint.png and /dev/null differ diff --git a/examples/tiger.png b/examples/tiger.png index 77c23fe..1a77f38 100644 Binary files a/examples/tiger.png and b/examples/tiger.png differ diff --git a/src/pixie/paints.nim b/src/pixie/paints.nim index 32daa68..dbc02c6 100644 --- a/src/pixie/paints.nim +++ b/src/pixie/paints.nim @@ -24,7 +24,7 @@ type ColorStop* = object ## Color stop on a gradient curve. - color*: Color ## Color of the stop + color*: ColorRGBX ## Color of the stop position*: float32 ## Gradient Stop position 0..1. proc toLineSpace(at, to, point: Vec2): float32 = @@ -46,17 +46,17 @@ proc gradientPut(image: Image, x, y: int, a: float32, stops: seq[ColorStop]) = var color: Color if index == -1: # first stop solid - color = stops[0].color + color = stops[0].color.color elif index + 1 >= stops.len: # last stop solid - color = stops[index].color + color = stops[index].color.color else: let gs1 = stops[index] gs2 = stops[index+1] color = mix( - gs1.color, - gs2.color, + gs1.color.color, + gs2.color.color, (a - gs1.position) / (gs2.position - gs1.position) ) image.setRgbaUnsafe(x, y, color.rgba.toPremultipliedAlpha()) diff --git a/tests/images/paths/gradientAngular.png b/tests/images/paths/gradientAngular.png index e2e3f00..b6b8d6e 100644 Binary files a/tests/images/paths/gradientAngular.png and b/tests/images/paths/gradientAngular.png differ diff --git a/tests/images/paths/gradientLinear.png b/tests/images/paths/gradientLinear.png index 081446c..e1a15fc 100644 Binary files a/tests/images/paths/gradientLinear.png and b/tests/images/paths/gradientLinear.png differ diff --git a/tests/images/paths/gradientRadial.png b/tests/images/paths/gradientRadial.png index 5258c50..cb2c7ee 100644 Binary files a/tests/images/paths/gradientRadial.png and b/tests/images/paths/gradientRadial.png differ diff --git a/tests/test_paints.nim b/tests/test_paints.nim index a832d86..8b7b439 100644 --- a/tests/test_paints.nim +++ b/tests/test_paints.nim @@ -58,8 +58,8 @@ block: vec2(100, 50), ], gradientStops: @[ - ColorStop(color: rgba(255, 0, 0, 255).color, position: 0), - ColorStop(color: rgba(255, 0, 0, 40).color, position: 1.0), + ColorStop(color: rgba(255, 0, 0, 255), position: 0), + ColorStop(color: rgba(255, 0, 0, 40), position: 1.0), ] ) ) @@ -78,8 +78,8 @@ block: vec2(50, 100) ], gradientStops: @[ - ColorStop(color: rgba(255, 0, 0, 255).color, position: 0), - ColorStop(color: rgba(255, 0, 0, 40).color, position: 1.0), + ColorStop(color: rgba(255, 0, 0, 255), position: 0), + ColorStop(color: rgba(255, 0, 0, 40), position: 1.0), ] ) ) @@ -99,8 +99,8 @@ block: vec2(50, 100) ], gradientStops: @[ - ColorStop(color: rgba(255, 0, 0, 255).color, position: 0), - ColorStop(color: rgba(255, 0, 0, 40).color, position: 1.0), + ColorStop(color: rgba(255, 0, 0, 255), position: 0), + ColorStop(color: rgba(255, 0, 0, 40), position: 1.0), ] ) )