v2.0.0 add transform to pixie.nim helpers
This commit is contained in:
parent
fcc947ea60
commit
d87b423430
4 changed files with 118 additions and 51 deletions
|
@ -1,4 +1,4 @@
|
|||
version = "1.2.0"
|
||||
version = "2.0.0"
|
||||
author = "Andre von Houck and Ryan Oldenburg"
|
||||
description = "Full-featured 2d graphics library for Nim."
|
||||
license = "MIT"
|
||||
|
|
147
src/pixie.nim
147
src/pixie.nim
|
@ -77,231 +77,292 @@ proc writeFile*(image: Image, filePath: string) =
|
|||
raise newException(PixieError, "Unsupported image file extension")
|
||||
image.writeFile(filePath, fileformat)
|
||||
|
||||
proc fillRect*(image: Image, rect: Rect, color: SomeColor) =
|
||||
proc fillRect*(
|
||||
image: Image,
|
||||
rect: Rect,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a rectangle.
|
||||
var path: Path
|
||||
path.rect(rect)
|
||||
image.fillPath(path, color)
|
||||
image.fillPath(path, color, transform)
|
||||
|
||||
proc fillRect*(mask: Mask, rect: Rect) =
|
||||
proc fillRect*(
|
||||
mask: Mask,
|
||||
rect: Rect,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a rectangle.
|
||||
var path: Path
|
||||
path.rect(rect)
|
||||
mask.fillPath(path)
|
||||
mask.fillPath(path, transform)
|
||||
|
||||
proc strokeRect*(
|
||||
image: Image, rect: Rect, color: SomeColor, strokeWidth = 1.0
|
||||
image: Image,
|
||||
rect: Rect,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a rectangle.
|
||||
var path: Path
|
||||
path.rect(rect)
|
||||
image.strokePath(path, color, strokeWidth)
|
||||
image.strokePath(path, color, transform, strokeWidth)
|
||||
|
||||
proc strokeRect*(mask: Mask, rect: Rect, strokeWidth = 1.0) =
|
||||
proc strokeRect*(
|
||||
mask: Mask,
|
||||
rect: Rect,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a rectangle.
|
||||
var path: Path
|
||||
path.rect(rect)
|
||||
mask.strokePath(path, strokeWidth)
|
||||
mask.strokePath(path, transform, strokeWidth)
|
||||
|
||||
proc fillRoundedRect*(
|
||||
image: Image,
|
||||
rect: Rect,
|
||||
nw, ne, se, sw: float32,
|
||||
color: SomeColor
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, nw, ne, se, sw)
|
||||
image.fillPath(path, color)
|
||||
image.fillPath(path, color, transform)
|
||||
|
||||
proc fillRoundedRect*(
|
||||
image: Image,
|
||||
rect: Rect,
|
||||
radius: float32,
|
||||
color: SomeColor
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, radius, radius, radius, radius)
|
||||
image.fillPath(path, color)
|
||||
image.fillPath(path, color, transform)
|
||||
|
||||
proc fillRoundedRect*(mask: Mask, rect: Rect, nw, ne, se, sw: float32) =
|
||||
proc fillRoundedRect*(
|
||||
mask: Mask,
|
||||
rect: Rect,
|
||||
nw, ne, se, sw: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, nw, ne, se, sw)
|
||||
mask.fillPath(path)
|
||||
mask.fillPath(path, transform)
|
||||
|
||||
proc fillRoundedRect*(mask: Mask, rect: Rect, radius: float32) =
|
||||
proc fillRoundedRect*(
|
||||
mask: Mask,
|
||||
rect: Rect,
|
||||
radius: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, radius, radius, radius, radius)
|
||||
mask.fillPath(path)
|
||||
mask.fillPath(path, transform)
|
||||
|
||||
proc strokeRoundedRect*(
|
||||
image: Image,
|
||||
rect: Rect,
|
||||
nw, ne, se, sw: float32,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, nw, ne, se, sw)
|
||||
image.strokePath(path, color, strokeWidth)
|
||||
image.strokePath(path, color, transform, strokeWidth)
|
||||
|
||||
proc strokeRoundedRect*(
|
||||
image: Image,
|
||||
rect: Rect,
|
||||
radius: float32,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, radius, radius, radius, radius)
|
||||
image.strokePath(path, color, strokeWidth)
|
||||
image.strokePath(path, color, transform, strokeWidth)
|
||||
|
||||
proc strokeRoundedRect*(
|
||||
mask: Mask, rect: Rect, nw, ne, se, sw: float32, strokeWidth = 1.0
|
||||
mask: Mask,
|
||||
rect: Rect,
|
||||
nw, ne, se, sw: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, nw, ne, se, sw)
|
||||
mask.strokePath(path, strokeWidth)
|
||||
mask.strokePath(path, transform, strokeWidth)
|
||||
|
||||
proc strokeRoundedRect*(
|
||||
mask: Mask, rect: Rect, radius: float32, strokeWidth = 1.0
|
||||
mask: Mask,
|
||||
rect: Rect,
|
||||
radius: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a rounded rectangle.
|
||||
var path: Path
|
||||
path.roundedRect(rect, radius, radius, radius, radius)
|
||||
mask.strokePath(path, strokeWidth)
|
||||
mask.strokePath(path, transform, strokeWidth)
|
||||
|
||||
proc strokeSegment*(
|
||||
image: Image,
|
||||
segment: Segment,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a segment (draws a line from segment.at to segment.to).
|
||||
var path: Path
|
||||
path.moveTo(segment.at)
|
||||
path.lineTo(segment.to)
|
||||
image.strokePath(path, color, strokeWidth)
|
||||
image.strokePath(path, color, transform, strokeWidth)
|
||||
|
||||
proc strokeSegment*(mask: Mask, segment: Segment, strokeWidth: float32) =
|
||||
proc strokeSegment*(
|
||||
mask: Mask,
|
||||
segment: Segment,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a segment (draws a line from segment.at to segment.to).
|
||||
var path: Path
|
||||
path.moveTo(segment.at)
|
||||
path.lineTo(segment.to)
|
||||
mask.strokePath(path, strokeWidth)
|
||||
mask.strokePath(path, transform, strokeWidth)
|
||||
|
||||
proc fillEllipse*(
|
||||
image: Image,
|
||||
center: Vec2,
|
||||
rx, ry: float32,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
blendMode = bmNormal
|
||||
) =
|
||||
## Fills an ellipse.
|
||||
var path: Path
|
||||
path.ellipse(center, rx, ry)
|
||||
image.fillPath(path, color, wrNonZero, blendMode)
|
||||
image.fillPath(path, color, transform, wrNonZero, blendMode)
|
||||
|
||||
proc fillEllipse*(
|
||||
mask: Mask,
|
||||
center: Vec2,
|
||||
rx, ry: float32
|
||||
rx, ry: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills an ellipse.
|
||||
var path: Path
|
||||
path.ellipse(center, rx, ry)
|
||||
mask.fillPath(path)
|
||||
mask.fillPath(path, transform)
|
||||
|
||||
proc strokeEllipse*(
|
||||
image: Image,
|
||||
center: Vec2,
|
||||
rx, ry: float32,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes an ellipse.
|
||||
var path: Path
|
||||
path.ellipse(center, rx, ry)
|
||||
image.strokePath(path, color, strokeWidth)
|
||||
image.strokePath(path, color, transform, strokeWidth)
|
||||
|
||||
proc strokeEllipse*(
|
||||
mask: Mask,
|
||||
center: Vec2,
|
||||
rx, ry: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes an ellipse.
|
||||
var path: Path
|
||||
path.ellipse(center, rx, ry)
|
||||
mask.strokePath(path, strokeWidth)
|
||||
mask.strokePath(path, transform, strokeWidth)
|
||||
|
||||
proc fillCircle*(
|
||||
image: Image,
|
||||
center: Vec2,
|
||||
radius: float32,
|
||||
color: SomeColor
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a circle.
|
||||
var path: Path
|
||||
path.ellipse(center, radius, radius)
|
||||
image.fillPath(path, color)
|
||||
image.fillPath(path, color, transform)
|
||||
|
||||
proc fillCircle*(
|
||||
mask: Mask,
|
||||
center: Vec2,
|
||||
radius: float32
|
||||
radius: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a circle.
|
||||
var path: Path
|
||||
path.ellipse(center, radius, radius)
|
||||
mask.fillPath(path)
|
||||
mask.fillPath(path, transform)
|
||||
|
||||
proc strokeCircle*(
|
||||
image: Image,
|
||||
center: Vec2,
|
||||
radius: float32,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a circle.
|
||||
var path: Path
|
||||
path.ellipse(center, radius, radius)
|
||||
image.strokePath(path, color, strokeWidth)
|
||||
image.strokePath(path, color, transform, strokeWidth)
|
||||
|
||||
proc strokeCircle*(
|
||||
mask: Mask,
|
||||
center: Vec2,
|
||||
radius: float32,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a circle.
|
||||
var path: Path
|
||||
path.ellipse(center, radius, radius)
|
||||
mask.fillPath(path)
|
||||
mask.fillPath(path, transform, strokeWidth)
|
||||
|
||||
proc fillPolygon*(
|
||||
image: Image,
|
||||
pos: Vec2,
|
||||
size: float32,
|
||||
sides: int,
|
||||
color: SomeColor
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a polygon.
|
||||
var path: Path
|
||||
path.polygon(pos, size, sides)
|
||||
image.fillPath(path, color)
|
||||
image.fillPath(path, color, transform)
|
||||
|
||||
proc fillPolygon*(mask: Mask, pos: Vec2, size: float32, sides: int) =
|
||||
proc fillPolygon*(
|
||||
mask: Mask,
|
||||
pos: Vec2,
|
||||
size: float32,
|
||||
sides: int,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0)
|
||||
) =
|
||||
## Fills a polygon.
|
||||
var path: Path
|
||||
path.polygon(pos, size, sides)
|
||||
mask.fillPath(path)
|
||||
mask.fillPath(path, transform)
|
||||
|
||||
proc strokePolygon*(
|
||||
image: Image,
|
||||
|
@ -309,24 +370,26 @@ proc strokePolygon*(
|
|||
size: float32,
|
||||
sides: int,
|
||||
color: SomeColor,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a polygon.
|
||||
var path: Path
|
||||
path.polygon(pos, size, sides)
|
||||
image.strokePath(path, color, strokeWidth)
|
||||
image.strokePath(path, color, transform, strokeWidth)
|
||||
|
||||
proc strokePolygon*(
|
||||
mask: Mask,
|
||||
pos: Vec2,
|
||||
size: float32,
|
||||
sides: int,
|
||||
transform: Vec2 | Mat3 = vec2(0, 0),
|
||||
strokeWidth = 1.0
|
||||
) =
|
||||
## Strokes a polygon.
|
||||
var path: Path
|
||||
path.polygon(pos, size, sides)
|
||||
mask.strokePath(path, strokeWidth)
|
||||
mask.strokePath(path, transform, strokeWidth)
|
||||
|
||||
proc fillText*(
|
||||
target: Image | Mask,
|
||||
|
|
|
@ -59,7 +59,11 @@ block:
|
|||
block:
|
||||
let image = newImage(100, 100)
|
||||
image.fill(rgba(0, 255, 255, 255))
|
||||
image.strokeRect(rect(vec2(10, 10), vec2(30, 30)), rgba(255, 255, 0, 255), 10)
|
||||
image.strokeRect(
|
||||
rect(vec2(10, 10), vec2(30, 30)),
|
||||
rgba(255, 255, 0, 255),
|
||||
strokeWidth = 10
|
||||
)
|
||||
image.writeFile("tests/images/strokeRect.png")
|
||||
|
||||
block:
|
||||
|
@ -79,7 +83,7 @@ block:
|
|||
rect(vec2(10, 10), vec2(30, 30)),
|
||||
10,
|
||||
rgba(255, 255, 0, 255),
|
||||
10
|
||||
strokeWidth = 10
|
||||
)
|
||||
image.writeFile("tests/images/strokeRoundedRect.png")
|
||||
|
||||
|
@ -112,7 +116,7 @@ block:
|
|||
25,
|
||||
25,
|
||||
rgba(255, 255, 0, 255),
|
||||
10
|
||||
strokeWidth = 10
|
||||
)
|
||||
image.writeFile("tests/images/strokeEllipse.png")
|
||||
|
||||
|
@ -135,6 +139,6 @@ block:
|
|||
30,
|
||||
6,
|
||||
rgba(255, 255, 0, 255),
|
||||
10
|
||||
strokeWidth = 10
|
||||
)
|
||||
image.writeFile("tests/images/strokePolygon.png")
|
||||
|
|
|
@ -109,7 +109,7 @@ block:
|
|||
|
||||
block:
|
||||
let mask = newMask(100, 100)
|
||||
mask.strokeRect(rect(vec2(10, 10), vec2(30, 30)), 10)
|
||||
mask.strokeRect(rect(vec2(10, 10), vec2(30, 30)), strokeWidth = 10)
|
||||
writeFile("tests/images/masks/strokeRect.png", mask.encodePng())
|
||||
|
||||
block:
|
||||
|
@ -119,7 +119,7 @@ block:
|
|||
|
||||
block:
|
||||
let mask = newMask(100, 100)
|
||||
mask.strokeRoundedRect(rect(vec2(10, 10), vec2(30, 30)), 10, 10)
|
||||
mask.strokeRoundedRect(rect(vec2(10, 10), vec2(30, 30)), 10, strokeWidth = 10)
|
||||
writeFile("tests/images/masks/strokeRoundedRect.png", mask.encodePng())
|
||||
|
||||
block:
|
||||
|
@ -137,7 +137,7 @@ block:
|
|||
|
||||
block:
|
||||
let mask = newMask(100, 100)
|
||||
mask.strokeEllipse(vec2(50, 50), 20, 10, 10)
|
||||
mask.strokeEllipse(vec2(50, 50), 20, 10, strokeWidth = 10)
|
||||
writeFile("tests/images/masks/strokeEllipse.png", mask.encodePng())
|
||||
|
||||
block:
|
||||
|
@ -147,7 +147,7 @@ block:
|
|||
|
||||
block:
|
||||
let mask = newMask(100, 100)
|
||||
mask.strokePolygon(vec2(50, 50), 30, 6, 10)
|
||||
mask.strokePolygon(vec2(50, 50), 30, 6, strokeWidth = 10)
|
||||
writeFile("tests/images/masks/strokePolygon.png", mask.encodePng())
|
||||
|
||||
block:
|
||||
|
|
Loading…
Reference in a new issue