1525 lines
62 KiB
Nim
1525 lines
62 KiB
Nim
import bumpy, chroma, os, unicode, vmath
|
|
|
|
export bumpy, chroma, unicode, vmath
|
|
|
|
let
|
|
srcPath = currentSourcePath()
|
|
srcDir = srcPath.parentDir()
|
|
|
|
when defined(windows):
|
|
const dllPath = "pixie.dll"
|
|
elif defined(macosx):
|
|
const dllPath = "libpixie.dll"
|
|
else:
|
|
const dllPath = "libpixie.so"
|
|
|
|
{.push dynlib: srcDir / dllPath.}
|
|
|
|
type PixieError = object of ValueError
|
|
|
|
type FileFormat* = enum
|
|
ffPng
|
|
ffBmp
|
|
ffJpg
|
|
ffGif
|
|
|
|
type BlendMode* = enum
|
|
bmNormal
|
|
bmDarken
|
|
bmMultiply
|
|
bmColorBurn
|
|
bmLighten
|
|
bmScreen
|
|
bmColorDodge
|
|
bmOverlay
|
|
bmSoftLight
|
|
bmHardLight
|
|
bmDifference
|
|
bmExclusion
|
|
bmHue
|
|
bmSaturation
|
|
bmColor
|
|
bmLuminosity
|
|
bmMask
|
|
bmOverwrite
|
|
bmSubtractMask
|
|
bmExcludeMask
|
|
|
|
type PaintKind* = enum
|
|
pkSolid
|
|
pkImage
|
|
pkImageTiled
|
|
pkGradientLinear
|
|
pkGradientRadial
|
|
pkGradientAngular
|
|
|
|
type WindingRule* = enum
|
|
wrNonZero
|
|
wrEvenOdd
|
|
|
|
type LineCap* = enum
|
|
lcButt
|
|
lcRound
|
|
lcSquare
|
|
|
|
type LineJoin* = enum
|
|
ljMiter
|
|
ljRound
|
|
ljBevel
|
|
|
|
type HorizontalAlignment* = enum
|
|
haLeft
|
|
haCenter
|
|
haRight
|
|
|
|
type VerticalAlignment* = enum
|
|
vaTop
|
|
vaMiddle
|
|
vaBottom
|
|
|
|
type TextCase* = enum
|
|
tcNormal
|
|
tcUpper
|
|
tcLower
|
|
tcTitle
|
|
|
|
type Rect* = object
|
|
x*: float32
|
|
y*: float32
|
|
w*: float32
|
|
h*: float32
|
|
|
|
type ColorStop* = object
|
|
color*: Color
|
|
position*: float32
|
|
|
|
type TextMetrics* = object
|
|
width*: float32
|
|
|
|
type SeqFloat32Obj* = object
|
|
reference: pointer
|
|
|
|
type SeqFloat32* = ref SeqFloat32Obj
|
|
|
|
proc pixie_seq_float_32_unref(x: SeqFloat32Obj) {.importc: "pixie_seq_float_32_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var SeqFloat32Obj) =
|
|
pixie_seq_float_32_unref(x)
|
|
|
|
type SeqSpanObj* = object
|
|
reference: pointer
|
|
|
|
type SeqSpan* = ref SeqSpanObj
|
|
|
|
proc pixie_seq_span_unref(x: SeqSpanObj) {.importc: "pixie_seq_span_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var SeqSpanObj) =
|
|
pixie_seq_span_unref(x)
|
|
|
|
type ImageObj* = object
|
|
reference: pointer
|
|
|
|
type Image* = ref ImageObj
|
|
|
|
proc pixie_image_unref(x: ImageObj) {.importc: "pixie_image_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var ImageObj) =
|
|
pixie_image_unref(x)
|
|
|
|
type MaskObj* = object
|
|
reference: pointer
|
|
|
|
type Mask* = ref MaskObj
|
|
|
|
proc pixie_mask_unref(x: MaskObj) {.importc: "pixie_mask_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var MaskObj) =
|
|
pixie_mask_unref(x)
|
|
|
|
type PaintObj* = object
|
|
reference: pointer
|
|
|
|
type Paint* = ref PaintObj
|
|
|
|
proc pixie_paint_unref(x: PaintObj) {.importc: "pixie_paint_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var PaintObj) =
|
|
pixie_paint_unref(x)
|
|
|
|
type PathObj* = object
|
|
reference: pointer
|
|
|
|
type Path* = ref PathObj
|
|
|
|
proc pixie_path_unref(x: PathObj) {.importc: "pixie_path_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var PathObj) =
|
|
pixie_path_unref(x)
|
|
|
|
type TypefaceObj* = object
|
|
reference: pointer
|
|
|
|
type Typeface* = ref TypefaceObj
|
|
|
|
proc pixie_typeface_unref(x: TypefaceObj) {.importc: "pixie_typeface_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var TypefaceObj) =
|
|
pixie_typeface_unref(x)
|
|
|
|
type FontObj* = object
|
|
reference: pointer
|
|
|
|
type Font* = ref FontObj
|
|
|
|
proc pixie_font_unref(x: FontObj) {.importc: "pixie_font_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var FontObj) =
|
|
pixie_font_unref(x)
|
|
|
|
type SpanObj* = object
|
|
reference: pointer
|
|
|
|
type Span* = ref SpanObj
|
|
|
|
proc pixie_span_unref(x: SpanObj) {.importc: "pixie_span_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var SpanObj) =
|
|
pixie_span_unref(x)
|
|
|
|
type ArrangementObj* = object
|
|
reference: pointer
|
|
|
|
type Arrangement* = ref ArrangementObj
|
|
|
|
proc pixie_arrangement_unref(x: ArrangementObj) {.importc: "pixie_arrangement_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var ArrangementObj) =
|
|
pixie_arrangement_unref(x)
|
|
|
|
type ContextObj* = object
|
|
reference: pointer
|
|
|
|
type Context* = ref ContextObj
|
|
|
|
proc pixie_context_unref(x: ContextObj) {.importc: "pixie_context_unref", cdecl.}
|
|
|
|
proc `=destroy`(x: var ContextObj) =
|
|
pixie_context_unref(x)
|
|
|
|
proc pixie_check_error(): bool {.importc: "pixie_check_error", cdecl.}
|
|
|
|
proc checkError*(): bool {.inline.} =
|
|
result = pixie_check_error()
|
|
|
|
proc pixie_take_error(): cstring {.importc: "pixie_take_error", cdecl.}
|
|
|
|
proc takeError*(): cstring {.inline.} =
|
|
result = pixie_take_error()
|
|
|
|
proc pixie_seq_float_32_len(s: SeqFloat32): int {.importc: "pixie_seq_float_32_len", cdecl.}
|
|
|
|
proc len*(s: SeqFloat32): int =
|
|
pixie_seq_float_32_len(s)
|
|
|
|
proc pixie_seq_float_32_add(s: SeqFloat32, v: float32) {.importc: "pixie_seq_float_32_add", cdecl.}
|
|
|
|
proc add*(s: SeqFloat32, v: float32) =
|
|
pixie_seq_float_32_add(s, v)
|
|
|
|
proc pixie_seq_float_32_get(s: SeqFloat32, i: int): float32 {.importc: "pixie_seq_float_32_get", cdecl.}
|
|
|
|
proc `[]`*(s: SeqFloat32, i: int): float32 =
|
|
pixie_seq_float_32_get(s, i)
|
|
|
|
proc pixie_seq_float_32_set(s: SeqFloat32, i: int, v: float32) {.importc: "pixie_seq_float_32_set", cdecl.}
|
|
|
|
proc `[]=`*(s: SeqFloat32, i: int, v: float32) =
|
|
pixie_seq_float_32_set(s, i, v)
|
|
|
|
proc pixie_seq_float_32_remove(s: SeqFloat32, i: int) {.importc: "pixie_seq_float_32_remove", cdecl.}
|
|
|
|
proc remove*(s: SeqFloat32, i: int) =
|
|
pixie_seq_float_32_remove(s, i)
|
|
|
|
proc pixie_seq_float_32_clear(s: SeqFloat32) {.importc: "pixie_seq_float_32_clear", cdecl.}
|
|
|
|
proc clear*(s: SeqFloat32) =
|
|
pixie_seq_float_32_clear(s)
|
|
|
|
proc pixie_new_seq_float_32*(): SeqFloat32 {.importc: "pixie_new_seq_float_32", cdecl.}
|
|
|
|
proc newSeqFloat32*(): SeqFloat32 =
|
|
pixie_new_seq_float_32()
|
|
|
|
proc pixie_seq_span_len(s: SeqSpan): int {.importc: "pixie_seq_span_len", cdecl.}
|
|
|
|
proc len*(s: SeqSpan): int =
|
|
pixie_seq_span_len(s)
|
|
|
|
proc pixie_seq_span_add(s: SeqSpan, v: Span) {.importc: "pixie_seq_span_add", cdecl.}
|
|
|
|
proc add*(s: SeqSpan, v: Span) =
|
|
pixie_seq_span_add(s, v)
|
|
|
|
proc pixie_seq_span_get(s: SeqSpan, i: int): Span {.importc: "pixie_seq_span_get", cdecl.}
|
|
|
|
proc `[]`*(s: SeqSpan, i: int): Span =
|
|
pixie_seq_span_get(s, i)
|
|
|
|
proc pixie_seq_span_set(s: SeqSpan, i: int, v: Span) {.importc: "pixie_seq_span_set", cdecl.}
|
|
|
|
proc `[]=`*(s: SeqSpan, i: int, v: Span) =
|
|
pixie_seq_span_set(s, i, v)
|
|
|
|
proc pixie_seq_span_remove(s: SeqSpan, i: int) {.importc: "pixie_seq_span_remove", cdecl.}
|
|
|
|
proc remove*(s: SeqSpan, i: int) =
|
|
pixie_seq_span_remove(s, i)
|
|
|
|
proc pixie_seq_span_clear(s: SeqSpan) {.importc: "pixie_seq_span_clear", cdecl.}
|
|
|
|
proc clear*(s: SeqSpan) =
|
|
pixie_seq_span_clear(s)
|
|
|
|
proc pixie_new_seq_span*(): SeqSpan {.importc: "pixie_new_seq_span", cdecl.}
|
|
|
|
proc newSeqSpan*(): SeqSpan =
|
|
pixie_new_seq_span()
|
|
|
|
proc pixie_seq_span_typeset(spans: SeqSpan, bounds: Vec2, h_align: HorizontalAlignment, v_align: VerticalAlignment, wrap: bool): Arrangement {.importc: "pixie_seq_span_typeset", cdecl.}
|
|
|
|
proc typeset*(spans: SeqSpan, bounds: Vec2, hAlign: HorizontalAlignment, vAlign: VerticalAlignment, wrap: bool): Arrangement {.inline.} =
|
|
result = pixie_seq_span_typeset(spans, bounds, hAlign, vAlign, wrap)
|
|
|
|
proc pixie_seq_span_compute_bounds(spans: SeqSpan): Vec2 {.importc: "pixie_seq_span_compute_bounds", cdecl.}
|
|
|
|
proc computeBounds*(spans: SeqSpan): Vec2 {.inline.} =
|
|
result = pixie_seq_span_compute_bounds(spans)
|
|
|
|
proc pixie_image_get_width(image: Image): int {.importc: "pixie_image_get_width", cdecl.}
|
|
|
|
proc width*(image: Image): int {.inline.} =
|
|
pixie_image_get_width(image)
|
|
|
|
proc pixie_image_set_width(image: Image, width: int) {.importc: "pixie_image_set_width", cdecl.}
|
|
|
|
proc `width=`*(image: Image, width: int) =
|
|
pixie_image_set_width(image, width)
|
|
|
|
proc pixie_image_get_height(image: Image): int {.importc: "pixie_image_get_height", cdecl.}
|
|
|
|
proc height*(image: Image): int {.inline.} =
|
|
pixie_image_get_height(image)
|
|
|
|
proc pixie_image_set_height(image: Image, height: int) {.importc: "pixie_image_set_height", cdecl.}
|
|
|
|
proc `height=`*(image: Image, height: int) =
|
|
pixie_image_set_height(image, height)
|
|
|
|
proc pixie_image_write_file(image: Image, file_path: cstring) {.importc: "pixie_image_write_file", cdecl.}
|
|
|
|
proc writeFile*(image: Image, filePath: string) {.inline.} =
|
|
pixie_image_write_file(image, filePath.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_wh(image: Image): Vec2 {.importc: "pixie_image_wh", cdecl.}
|
|
|
|
proc wh*(image: Image): Vec2 {.inline.} =
|
|
result = pixie_image_wh(image)
|
|
|
|
proc pixie_image_copy(image: Image): Image {.importc: "pixie_image_copy", cdecl.}
|
|
|
|
proc copy*(image: Image): Image {.inline.} =
|
|
result = pixie_image_copy(image)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_get_color(image: Image, x: int, y: int): Color {.importc: "pixie_image_get_color", cdecl.}
|
|
|
|
proc getColor*(image: Image, x: int, y: int): Color {.inline.} =
|
|
result = pixie_image_get_color(image, x, y)
|
|
|
|
proc pixie_image_set_color(image: Image, x: int, y: int, color: Color) {.importc: "pixie_image_set_color", cdecl.}
|
|
|
|
proc setColor*(image: Image, x: int, y: int, color: Color) {.inline.} =
|
|
pixie_image_set_color(image, x, y, color)
|
|
|
|
proc pixie_image_fill(image: Image, color: Color) {.importc: "pixie_image_fill", cdecl.}
|
|
|
|
proc fill*(image: Image, color: Color) {.inline.} =
|
|
pixie_image_fill(image, color)
|
|
|
|
proc pixie_image_flip_horizontal(image: Image) {.importc: "pixie_image_flip_horizontal", cdecl.}
|
|
|
|
proc flipHorizontal*(image: Image) {.inline.} =
|
|
pixie_image_flip_horizontal(image)
|
|
|
|
proc pixie_image_flip_vertical(image: Image) {.importc: "pixie_image_flip_vertical", cdecl.}
|
|
|
|
proc flipVertical*(image: Image) {.inline.} =
|
|
pixie_image_flip_vertical(image)
|
|
|
|
proc pixie_image_sub_image(image: Image, x: int, y: int, w: int, h: int): Image {.importc: "pixie_image_sub_image", cdecl.}
|
|
|
|
proc subImage*(image: Image, x: int, y: int, w: int, h: int): Image {.inline.} =
|
|
result = pixie_image_sub_image(image, x, y, w, h)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_minify_by_2(image: Image, power: int): Image {.importc: "pixie_image_minify_by_2", cdecl.}
|
|
|
|
proc minifyBy2*(image: Image, power: int): Image {.inline.} =
|
|
result = pixie_image_minify_by_2(image, power)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_magnify_by_2(image: Image, power: int): Image {.importc: "pixie_image_magnify_by_2", cdecl.}
|
|
|
|
proc magnifyBy2*(image: Image, power: int): Image {.inline.} =
|
|
result = pixie_image_magnify_by_2(image, power)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_apply_opacity(target: Image, opacity: float32) {.importc: "pixie_image_apply_opacity", cdecl.}
|
|
|
|
proc applyOpacity*(target: Image, opacity: float32) {.inline.} =
|
|
pixie_image_apply_opacity(target, opacity)
|
|
|
|
proc pixie_image_invert(target: Image) {.importc: "pixie_image_invert", cdecl.}
|
|
|
|
proc invert*(target: Image) {.inline.} =
|
|
pixie_image_invert(target)
|
|
|
|
proc pixie_image_blur(image: Image, radius: float32, out_of_bounds: Color) {.importc: "pixie_image_blur", cdecl.}
|
|
|
|
proc blur*(image: Image, radius: float32, outOfBounds: Color) {.inline.} =
|
|
pixie_image_blur(image, radius, outOfBounds)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_new_mask(image: Image): Mask {.importc: "pixie_image_new_mask", cdecl.}
|
|
|
|
proc newMask*(image: Image): Mask {.inline.} =
|
|
result = pixie_image_new_mask(image)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_resize(src_image: Image, width: int, height: int): Image {.importc: "pixie_image_resize", cdecl.}
|
|
|
|
proc resize*(srcImage: Image, width: int, height: int): Image {.inline.} =
|
|
result = pixie_image_resize(srcImage, width, height)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_shadow(image: Image, offset: Vec2, spread: float32, blur: float32, color: Color): Image {.importc: "pixie_image_shadow", cdecl.}
|
|
|
|
proc shadow*(image: Image, offset: Vec2, spread: float32, blur: float32, color: Color): Image {.inline.} =
|
|
result = pixie_image_shadow(image, offset, spread, blur, color)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_super_image(image: Image, x: int, y: int, w: int, h: int): Image {.importc: "pixie_image_super_image", cdecl.}
|
|
|
|
proc superImage*(image: Image, x: int, y: int, w: int, h: int): Image {.inline.} =
|
|
result = pixie_image_super_image(image, x, y, w, h)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_mask_draw(image: Image, mask: Mask, transform: Mat3, blend_mode: BlendMode) {.importc: "pixie_image_mask_draw", cdecl.}
|
|
|
|
proc draw*(image: Image, mask: Mask, transform: Mat3, blendMode: BlendMode) {.inline.} =
|
|
pixie_image_mask_draw(image, mask, transform, blendMode)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_image_draw(a: Image, b: Image, transform: Mat3, blend_mode: BlendMode) {.importc: "pixie_image_image_draw", cdecl.}
|
|
|
|
proc draw*(a: Image, b: Image, transform: Mat3, blendMode: BlendMode) {.inline.} =
|
|
pixie_image_image_draw(a, b, transform, blendMode)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_fill_gradient(image: Image, paint: Paint) {.importc: "pixie_image_fill_gradient", cdecl.}
|
|
|
|
proc fillGradient*(image: Image, paint: Paint) {.inline.} =
|
|
pixie_image_fill_gradient(image, paint)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_arrangement_fill_text(target: Image, arrangement: Arrangement, transform: Mat3) {.importc: "pixie_image_arrangement_fill_text", cdecl.}
|
|
|
|
proc fillText*(target: Image, arrangement: Arrangement, transform: Mat3) {.inline.} =
|
|
pixie_image_arrangement_fill_text(target, arrangement, transform)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_font_fill_text(target: Image, font: Font, text: cstring, transform: Mat3, bounds: Vec2, h_align: HorizontalAlignment, v_align: VerticalAlignment) {.importc: "pixie_image_font_fill_text", cdecl.}
|
|
|
|
proc fillText*(target: Image, font: Font, text: string, transform: Mat3, bounds: Vec2, hAlign: HorizontalAlignment, vAlign: VerticalAlignment) {.inline.} =
|
|
pixie_image_font_fill_text(target, font, text.cstring, transform, bounds, hAlign, vAlign)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_arrangement_stroke_text(target: Image, arrangement: Arrangement, transform: Mat3, stroke_width: float32, line_cap: LineCap, line_join: LineJoin, miter_limit: float32, dashes: SeqFloat32) {.importc: "pixie_image_arrangement_stroke_text", cdecl.}
|
|
|
|
proc strokeText*(target: Image, arrangement: Arrangement, transform: Mat3, strokeWidth: float32, lineCap: LineCap, lineJoin: LineJoin, miterLimit: float32, dashes: SeqFloat32) {.inline.} =
|
|
pixie_image_arrangement_stroke_text(target, arrangement, transform, strokeWidth, lineCap, lineJoin, miterLimit, dashes)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_font_stroke_text(target: Image, font: Font, text: cstring, transform: Mat3, stroke_width: float32, bounds: Vec2, h_align: HorizontalAlignment, v_align: VerticalAlignment, line_cap: LineCap, line_join: LineJoin, miter_limit: float32, dashes: SeqFloat32) {.importc: "pixie_image_font_stroke_text", cdecl.}
|
|
|
|
proc strokeText*(target: Image, font: Font, text: string, transform: Mat3, strokeWidth: float32, bounds: Vec2, hAlign: HorizontalAlignment, vAlign: VerticalAlignment, lineCap: LineCap, lineJoin: LineJoin, miterLimit: float32, dashes: SeqFloat32) {.inline.} =
|
|
pixie_image_font_stroke_text(target, font, text.cstring, transform, strokeWidth, bounds, hAlign, vAlign, lineCap, lineJoin, miterLimit, dashes)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_fill_path(image: Image, path: Path, paint: Paint, transform: Mat3, winding_rule: WindingRule) {.importc: "pixie_image_fill_path", cdecl.}
|
|
|
|
proc fillPath*(image: Image, path: Path, paint: Paint, transform: Mat3, windingRule: WindingRule) {.inline.} =
|
|
pixie_image_fill_path(image, path, paint, transform, windingRule)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_stroke_path(image: Image, path: Path, paint: Paint, transform: Mat3, stroke_width: float32, line_cap: LineCap, line_join: LineJoin, miter_limit: float32, dashes: SeqFloat32) {.importc: "pixie_image_stroke_path", cdecl.}
|
|
|
|
proc strokePath*(image: Image, path: Path, paint: Paint, transform: Mat3, strokeWidth: float32, lineCap: LineCap, lineJoin: LineJoin, miterLimit: float32, dashes: SeqFloat32) {.inline.} =
|
|
pixie_image_stroke_path(image, path, paint, transform, strokeWidth, lineCap, lineJoin, miterLimit, dashes)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_image_new_context(image: Image): Context {.importc: "pixie_image_new_context", cdecl.}
|
|
|
|
proc newContext*(image: Image): Context {.inline.} =
|
|
result = pixie_image_new_context(image)
|
|
|
|
proc pixie_mask_get_width(mask: Mask): int {.importc: "pixie_mask_get_width", cdecl.}
|
|
|
|
proc width*(mask: Mask): int {.inline.} =
|
|
pixie_mask_get_width(mask)
|
|
|
|
proc pixie_mask_set_width(mask: Mask, width: int) {.importc: "pixie_mask_set_width", cdecl.}
|
|
|
|
proc `width=`*(mask: Mask, width: int) =
|
|
pixie_mask_set_width(mask, width)
|
|
|
|
proc pixie_mask_get_height(mask: Mask): int {.importc: "pixie_mask_get_height", cdecl.}
|
|
|
|
proc height*(mask: Mask): int {.inline.} =
|
|
pixie_mask_get_height(mask)
|
|
|
|
proc pixie_mask_set_height(mask: Mask, height: int) {.importc: "pixie_mask_set_height", cdecl.}
|
|
|
|
proc `height=`*(mask: Mask, height: int) =
|
|
pixie_mask_set_height(mask, height)
|
|
|
|
proc pixie_mask_write_file(mask: Mask, file_path: cstring) {.importc: "pixie_mask_write_file", cdecl.}
|
|
|
|
proc writeFile*(mask: Mask, filePath: string) {.inline.} =
|
|
pixie_mask_write_file(mask, filePath.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_wh(mask: Mask): Vec2 {.importc: "pixie_mask_wh", cdecl.}
|
|
|
|
proc wh*(mask: Mask): Vec2 {.inline.} =
|
|
result = pixie_mask_wh(mask)
|
|
|
|
proc pixie_mask_copy(mask: Mask): Mask {.importc: "pixie_mask_copy", cdecl.}
|
|
|
|
proc copy*(mask: Mask): Mask {.inline.} =
|
|
result = pixie_mask_copy(mask)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_get_value(mask: Mask, x: int, y: int): uint8 {.importc: "pixie_mask_get_value", cdecl.}
|
|
|
|
proc getValue*(mask: Mask, x: int, y: int): uint8 {.inline.} =
|
|
result = pixie_mask_get_value(mask, x, y)
|
|
|
|
proc pixie_mask_set_value(mask: Mask, x: int, y: int, value: uint8) {.importc: "pixie_mask_set_value", cdecl.}
|
|
|
|
proc setValue*(mask: Mask, x: int, y: int, value: uint8) {.inline.} =
|
|
pixie_mask_set_value(mask, x, y, value)
|
|
|
|
proc pixie_mask_fill(mask: Mask, value: uint8) {.importc: "pixie_mask_fill", cdecl.}
|
|
|
|
proc fill*(mask: Mask, value: uint8) {.inline.} =
|
|
pixie_mask_fill(mask, value)
|
|
|
|
proc pixie_mask_minify_by_2(mask: Mask, power: int): Mask {.importc: "pixie_mask_minify_by_2", cdecl.}
|
|
|
|
proc minifyBy2*(mask: Mask, power: int): Mask {.inline.} =
|
|
result = pixie_mask_minify_by_2(mask, power)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_spread(mask: Mask, spread: float32) {.importc: "pixie_mask_spread", cdecl.}
|
|
|
|
proc spread*(mask: Mask, spread: float32) {.inline.} =
|
|
pixie_mask_spread(mask, spread)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_ceil(mask: Mask) {.importc: "pixie_mask_ceil", cdecl.}
|
|
|
|
proc ceil*(mask: Mask) {.inline.} =
|
|
pixie_mask_ceil(mask)
|
|
|
|
proc pixie_mask_new_image(mask: Mask): Image {.importc: "pixie_mask_new_image", cdecl.}
|
|
|
|
proc newImage*(mask: Mask): Image {.inline.} =
|
|
result = pixie_mask_new_image(mask)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_apply_opacity(target: Mask, opacity: float32) {.importc: "pixie_mask_apply_opacity", cdecl.}
|
|
|
|
proc applyOpacity*(target: Mask, opacity: float32) {.inline.} =
|
|
pixie_mask_apply_opacity(target, opacity)
|
|
|
|
proc pixie_mask_invert(target: Mask) {.importc: "pixie_mask_invert", cdecl.}
|
|
|
|
proc invert*(target: Mask) {.inline.} =
|
|
pixie_mask_invert(target)
|
|
|
|
proc pixie_mask_blur(mask: Mask, radius: float32, out_of_bounds: uint8) {.importc: "pixie_mask_blur", cdecl.}
|
|
|
|
proc blur*(mask: Mask, radius: float32, outOfBounds: uint8) {.inline.} =
|
|
pixie_mask_blur(mask, radius, outOfBounds)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_mask_draw(a: Mask, b: Mask, transform: Mat3, blend_mode: BlendMode) {.importc: "pixie_mask_mask_draw", cdecl.}
|
|
|
|
proc draw*(a: Mask, b: Mask, transform: Mat3, blendMode: BlendMode) {.inline.} =
|
|
pixie_mask_mask_draw(a, b, transform, blendMode)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_image_draw(mask: Mask, image: Image, transform: Mat3, blend_mode: BlendMode) {.importc: "pixie_mask_image_draw", cdecl.}
|
|
|
|
proc draw*(mask: Mask, image: Image, transform: Mat3, blendMode: BlendMode) {.inline.} =
|
|
pixie_mask_image_draw(mask, image, transform, blendMode)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_arrangement_fill_text(target: Mask, arrangement: Arrangement, transform: Mat3) {.importc: "pixie_mask_arrangement_fill_text", cdecl.}
|
|
|
|
proc fillText*(target: Mask, arrangement: Arrangement, transform: Mat3) {.inline.} =
|
|
pixie_mask_arrangement_fill_text(target, arrangement, transform)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_font_fill_text(target: Mask, font: Font, text: cstring, transform: Mat3, bounds: Vec2, h_align: HorizontalAlignment, v_align: VerticalAlignment) {.importc: "pixie_mask_font_fill_text", cdecl.}
|
|
|
|
proc fillText*(target: Mask, font: Font, text: string, transform: Mat3, bounds: Vec2, hAlign: HorizontalAlignment, vAlign: VerticalAlignment) {.inline.} =
|
|
pixie_mask_font_fill_text(target, font, text.cstring, transform, bounds, hAlign, vAlign)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_arrangement_stroke_text(target: Mask, arrangement: Arrangement, transform: Mat3, stroke_width: float32, line_cap: LineCap, line_join: LineJoin, miter_limit: float32, dashes: SeqFloat32) {.importc: "pixie_mask_arrangement_stroke_text", cdecl.}
|
|
|
|
proc strokeText*(target: Mask, arrangement: Arrangement, transform: Mat3, strokeWidth: float32, lineCap: LineCap, lineJoin: LineJoin, miterLimit: float32, dashes: SeqFloat32) {.inline.} =
|
|
pixie_mask_arrangement_stroke_text(target, arrangement, transform, strokeWidth, lineCap, lineJoin, miterLimit, dashes)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_font_stroke_text(target: Mask, font: Font, text: cstring, transform: Mat3, stroke_width: float32, bounds: Vec2, h_align: HorizontalAlignment, v_align: VerticalAlignment, line_cap: LineCap, line_join: LineJoin, miter_limit: float32, dashes: SeqFloat32) {.importc: "pixie_mask_font_stroke_text", cdecl.}
|
|
|
|
proc strokeText*(target: Mask, font: Font, text: string, transform: Mat3, strokeWidth: float32, bounds: Vec2, hAlign: HorizontalAlignment, vAlign: VerticalAlignment, lineCap: LineCap, lineJoin: LineJoin, miterLimit: float32, dashes: SeqFloat32) {.inline.} =
|
|
pixie_mask_font_stroke_text(target, font, text.cstring, transform, strokeWidth, bounds, hAlign, vAlign, lineCap, lineJoin, miterLimit, dashes)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_fill_path(mask: Mask, path: Path, transform: Mat3, winding_rule: WindingRule, blend_mode: BlendMode) {.importc: "pixie_mask_fill_path", cdecl.}
|
|
|
|
proc fillPath*(mask: Mask, path: Path, transform: Mat3, windingRule: WindingRule, blendMode: BlendMode) {.inline.} =
|
|
pixie_mask_fill_path(mask, path, transform, windingRule, blendMode)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_mask_stroke_path(mask: Mask, path: Path, transform: Mat3, stroke_width: float32, line_cap: LineCap, line_join: LineJoin, miter_limit: float32, dashes: SeqFloat32, blend_mode: BlendMode) {.importc: "pixie_mask_stroke_path", cdecl.}
|
|
|
|
proc strokePath*(mask: Mask, path: Path, transform: Mat3, strokeWidth: float32, lineCap: LineCap, lineJoin: LineJoin, miterLimit: float32, dashes: SeqFloat32, blendMode: BlendMode) {.inline.} =
|
|
pixie_mask_stroke_path(mask, path, transform, strokeWidth, lineCap, lineJoin, miterLimit, dashes, blendMode)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_paint_get_kind(paint: Paint): PaintKind {.importc: "pixie_paint_get_kind", cdecl.}
|
|
|
|
proc kind*(paint: Paint): PaintKind {.inline.} =
|
|
pixie_paint_get_kind(paint)
|
|
|
|
proc pixie_paint_set_kind(paint: Paint, kind: PaintKind) {.importc: "pixie_paint_set_kind", cdecl.}
|
|
|
|
proc `kind=`*(paint: Paint, kind: PaintKind) =
|
|
pixie_paint_set_kind(paint, kind)
|
|
|
|
proc pixie_paint_get_blend_mode(paint: Paint): BlendMode {.importc: "pixie_paint_get_blend_mode", cdecl.}
|
|
|
|
proc blendMode*(paint: Paint): BlendMode {.inline.} =
|
|
pixie_paint_get_blend_mode(paint)
|
|
|
|
proc pixie_paint_set_blend_mode(paint: Paint, blendMode: BlendMode) {.importc: "pixie_paint_set_blend_mode", cdecl.}
|
|
|
|
proc `blendMode=`*(paint: Paint, blendMode: BlendMode) =
|
|
pixie_paint_set_blend_mode(paint, blendMode)
|
|
|
|
proc pixie_paint_get_opacity(paint: Paint): float32 {.importc: "pixie_paint_get_opacity", cdecl.}
|
|
|
|
proc opacity*(paint: Paint): float32 {.inline.} =
|
|
pixie_paint_get_opacity(paint)
|
|
|
|
proc pixie_paint_set_opacity(paint: Paint, opacity: float32) {.importc: "pixie_paint_set_opacity", cdecl.}
|
|
|
|
proc `opacity=`*(paint: Paint, opacity: float32) =
|
|
pixie_paint_set_opacity(paint, opacity)
|
|
|
|
proc pixie_paint_get_color(paint: Paint): Color {.importc: "pixie_paint_get_color", cdecl.}
|
|
|
|
proc color*(paint: Paint): Color {.inline.} =
|
|
pixie_paint_get_color(paint)
|
|
|
|
proc pixie_paint_set_color(paint: Paint, color: Color) {.importc: "pixie_paint_set_color", cdecl.}
|
|
|
|
proc `color=`*(paint: Paint, color: Color) =
|
|
pixie_paint_set_color(paint, color)
|
|
|
|
proc pixie_paint_get_image(paint: Paint): Image {.importc: "pixie_paint_get_image", cdecl.}
|
|
|
|
proc image*(paint: Paint): Image {.inline.} =
|
|
pixie_paint_get_image(paint)
|
|
|
|
proc pixie_paint_set_image(paint: Paint, image: Image) {.importc: "pixie_paint_set_image", cdecl.}
|
|
|
|
proc `image=`*(paint: Paint, image: Image) =
|
|
pixie_paint_set_image(paint, image)
|
|
|
|
proc pixie_paint_get_image_mat(paint: Paint): Mat3 {.importc: "pixie_paint_get_image_mat", cdecl.}
|
|
|
|
proc imageMat*(paint: Paint): Mat3 {.inline.} =
|
|
pixie_paint_get_image_mat(paint)
|
|
|
|
proc pixie_paint_set_image_mat(paint: Paint, imageMat: Mat3) {.importc: "pixie_paint_set_image_mat", cdecl.}
|
|
|
|
proc `imageMat=`*(paint: Paint, imageMat: Mat3) =
|
|
pixie_paint_set_image_mat(paint, imageMat)
|
|
|
|
type PaintGradientHandlePositions = object
|
|
paint: Paint
|
|
|
|
proc gradientHandlePositions*(paint: Paint): PaintGradientHandlePositions =
|
|
PaintGradientHandlePositions(paint: paint)
|
|
|
|
proc pixie_paint_gradient_handle_positions_len(s: Paint): int {.importc: "pixie_paint_gradient_handle_positions_len", cdecl.}
|
|
|
|
proc len*(s: PaintGradientHandlePositions): int =
|
|
pixie_paint_gradient_handle_positions_len(s.paint)
|
|
|
|
proc pixie_paint_gradient_handle_positions_add(s: Paint, v: Vec2) {.importc: "pixie_paint_gradient_handle_positions_add", cdecl.}
|
|
|
|
proc add*(s: PaintGradientHandlePositions, v: Vec2) =
|
|
pixie_paint_gradient_handle_positions_add(s.paint, v)
|
|
|
|
proc pixie_paint_gradient_handle_positions_get(s: Paint, i: int): Vec2 {.importc: "pixie_paint_gradient_handle_positions_get", cdecl.}
|
|
|
|
proc `[]`*(s: PaintGradientHandlePositions, i: int): Vec2 =
|
|
pixie_paint_gradient_handle_positions_get(s.paint, i)
|
|
|
|
proc pixie_paint_gradient_handle_positions_set(s: Paint, i: int, v: Vec2) {.importc: "pixie_paint_gradient_handle_positions_set", cdecl.}
|
|
|
|
proc `[]=`*(s: PaintGradientHandlePositions, i: int, v: Vec2) =
|
|
pixie_paint_gradient_handle_positions_set(s.paint, i, v)
|
|
|
|
proc pixie_paint_gradient_handle_positions_remove(s: Paint, i: int) {.importc: "pixie_paint_gradient_handle_positions_remove", cdecl.}
|
|
|
|
proc remove*(s: PaintGradientHandlePositions, i: int) =
|
|
pixie_paint_gradient_handle_positions_remove(s.paint, i)
|
|
|
|
proc pixie_paint_gradient_handle_positions_clear(s: Paint) {.importc: "pixie_paint_gradient_handle_positions_clear", cdecl.}
|
|
|
|
proc clear*(s: PaintGradientHandlePositions) =
|
|
pixie_paint_gradient_handle_positions_clear(s.paint)
|
|
|
|
type PaintGradientStops = object
|
|
paint: Paint
|
|
|
|
proc gradientStops*(paint: Paint): PaintGradientStops =
|
|
PaintGradientStops(paint: paint)
|
|
|
|
proc pixie_paint_gradient_stops_len(s: Paint): int {.importc: "pixie_paint_gradient_stops_len", cdecl.}
|
|
|
|
proc len*(s: PaintGradientStops): int =
|
|
pixie_paint_gradient_stops_len(s.paint)
|
|
|
|
proc pixie_paint_gradient_stops_add(s: Paint, v: ColorStop) {.importc: "pixie_paint_gradient_stops_add", cdecl.}
|
|
|
|
proc add*(s: PaintGradientStops, v: ColorStop) =
|
|
pixie_paint_gradient_stops_add(s.paint, v)
|
|
|
|
proc pixie_paint_gradient_stops_get(s: Paint, i: int): ColorStop {.importc: "pixie_paint_gradient_stops_get", cdecl.}
|
|
|
|
proc `[]`*(s: PaintGradientStops, i: int): ColorStop =
|
|
pixie_paint_gradient_stops_get(s.paint, i)
|
|
|
|
proc pixie_paint_gradient_stops_set(s: Paint, i: int, v: ColorStop) {.importc: "pixie_paint_gradient_stops_set", cdecl.}
|
|
|
|
proc `[]=`*(s: PaintGradientStops, i: int, v: ColorStop) =
|
|
pixie_paint_gradient_stops_set(s.paint, i, v)
|
|
|
|
proc pixie_paint_gradient_stops_remove(s: Paint, i: int) {.importc: "pixie_paint_gradient_stops_remove", cdecl.}
|
|
|
|
proc remove*(s: PaintGradientStops, i: int) =
|
|
pixie_paint_gradient_stops_remove(s.paint, i)
|
|
|
|
proc pixie_paint_gradient_stops_clear(s: Paint) {.importc: "pixie_paint_gradient_stops_clear", cdecl.}
|
|
|
|
proc clear*(s: PaintGradientStops) =
|
|
pixie_paint_gradient_stops_clear(s.paint)
|
|
|
|
proc pixie_paint_new_paint(paint: Paint): Paint {.importc: "pixie_paint_new_paint", cdecl.}
|
|
|
|
proc newPaint*(paint: Paint): Paint {.inline.} =
|
|
result = pixie_paint_new_paint(paint)
|
|
|
|
proc pixie_path_transform(path: Path, mat: Mat3) {.importc: "pixie_path_transform", cdecl.}
|
|
|
|
proc transform*(path: Path, mat: Mat3) {.inline.} =
|
|
pixie_path_transform(path, mat)
|
|
|
|
proc pixie_path_add_path(path: Path, other: Path) {.importc: "pixie_path_add_path", cdecl.}
|
|
|
|
proc addPath*(path: Path, other: Path) {.inline.} =
|
|
pixie_path_add_path(path, other)
|
|
|
|
proc pixie_path_close_path(path: Path) {.importc: "pixie_path_close_path", cdecl.}
|
|
|
|
proc closePath*(path: Path) {.inline.} =
|
|
pixie_path_close_path(path)
|
|
|
|
proc pixie_path_compute_bounds(path: Path, transform: Mat3): Rect {.importc: "pixie_path_compute_bounds", cdecl.}
|
|
|
|
proc computeBounds*(path: Path, transform: Mat3): Rect {.inline.} =
|
|
result = pixie_path_compute_bounds(path, transform)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_path_fill_overlaps(path: Path, test: Vec2, transform: Mat3, winding_rule: WindingRule): bool {.importc: "pixie_path_fill_overlaps", cdecl.}
|
|
|
|
proc fillOverlaps*(path: Path, test: Vec2, transform: Mat3, windingRule: WindingRule): bool {.inline.} =
|
|
result = pixie_path_fill_overlaps(path, test, transform, windingRule)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_path_stroke_overlaps(path: Path, test: Vec2, transform: Mat3, stroke_width: float32, line_cap: LineCap, line_join: LineJoin, miter_limit: float32, dashes: SeqFloat32): bool {.importc: "pixie_path_stroke_overlaps", cdecl.}
|
|
|
|
proc strokeOverlaps*(path: Path, test: Vec2, transform: Mat3, strokeWidth: float32, lineCap: LineCap, lineJoin: LineJoin, miterLimit: float32, dashes: SeqFloat32): bool {.inline.} =
|
|
result = pixie_path_stroke_overlaps(path, test, transform, strokeWidth, lineCap, lineJoin, miterLimit, dashes)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_path_move_to(path: Path, x: float32, y: float32) {.importc: "pixie_path_move_to", cdecl.}
|
|
|
|
proc moveTo*(path: Path, x: float32, y: float32) {.inline.} =
|
|
pixie_path_move_to(path, x, y)
|
|
|
|
proc pixie_path_line_to(path: Path, x: float32, y: float32) {.importc: "pixie_path_line_to", cdecl.}
|
|
|
|
proc lineTo*(path: Path, x: float32, y: float32) {.inline.} =
|
|
pixie_path_line_to(path, x, y)
|
|
|
|
proc pixie_path_bezier_curve_to(path: Path, x_1: float32, y_1: float32, x_2: float32, y_2: float32, x_3: float32, y_3: float32) {.importc: "pixie_path_bezier_curve_to", cdecl.}
|
|
|
|
proc bezierCurveTo*(path: Path, x1: float32, y1: float32, x2: float32, y2: float32, x3: float32, y3: float32) {.inline.} =
|
|
pixie_path_bezier_curve_to(path, x1, y1, x2, y2, x3, y3)
|
|
|
|
proc pixie_path_quadratic_curve_to(path: Path, x_1: float32, y_1: float32, x_2: float32, y_2: float32) {.importc: "pixie_path_quadratic_curve_to", cdecl.}
|
|
|
|
proc quadraticCurveTo*(path: Path, x1: float32, y1: float32, x2: float32, y2: float32) {.inline.} =
|
|
pixie_path_quadratic_curve_to(path, x1, y1, x2, y2)
|
|
|
|
proc pixie_path_elliptical_arc_to(path: Path, rx: float32, ry: float32, x_axis_rotation: float32, large_arc_flag: bool, sweep_flag: bool, x: float32, y: float32) {.importc: "pixie_path_elliptical_arc_to", cdecl.}
|
|
|
|
proc ellipticalArcTo*(path: Path, rx: float32, ry: float32, xAxisRotation: float32, largeArcFlag: bool, sweepFlag: bool, x: float32, y: float32) {.inline.} =
|
|
pixie_path_elliptical_arc_to(path, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, x, y)
|
|
|
|
proc pixie_path_arc(path: Path, x: float32, y: float32, r: float32, a_0: float32, a_1: float32, ccw: bool) {.importc: "pixie_path_arc", cdecl.}
|
|
|
|
proc arc*(path: Path, x: float32, y: float32, r: float32, a0: float32, a1: float32, ccw: bool) {.inline.} =
|
|
pixie_path_arc(path, x, y, r, a0, a1, ccw)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_path_arc_to(path: Path, x_1: float32, y_1: float32, x_2: float32, y_2: float32, r: float32) {.importc: "pixie_path_arc_to", cdecl.}
|
|
|
|
proc arcTo*(path: Path, x1: float32, y1: float32, x2: float32, y2: float32, r: float32) {.inline.} =
|
|
pixie_path_arc_to(path, x1, y1, x2, y2, r)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_path_rect(path: Path, x: float32, y: float32, w: float32, h: float32, clockwise: bool) {.importc: "pixie_path_rect", cdecl.}
|
|
|
|
proc rect*(path: Path, x: float32, y: float32, w: float32, h: float32, clockwise: bool) {.inline.} =
|
|
pixie_path_rect(path, x, y, w, h, clockwise)
|
|
|
|
proc pixie_path_rounded_rect(path: Path, x: float32, y: float32, w: float32, h: float32, nw: float32, ne: float32, se: float32, sw: float32, clockwise: bool) {.importc: "pixie_path_rounded_rect", cdecl.}
|
|
|
|
proc roundedRect*(path: Path, x: float32, y: float32, w: float32, h: float32, nw: float32, ne: float32, se: float32, sw: float32, clockwise: bool) {.inline.} =
|
|
pixie_path_rounded_rect(path, x, y, w, h, nw, ne, se, sw, clockwise)
|
|
|
|
proc pixie_path_ellipse(path: Path, cx: float32, cy: float32, rx: float32, ry: float32) {.importc: "pixie_path_ellipse", cdecl.}
|
|
|
|
proc ellipse*(path: Path, cx: float32, cy: float32, rx: float32, ry: float32) {.inline.} =
|
|
pixie_path_ellipse(path, cx, cy, rx, ry)
|
|
|
|
proc pixie_path_circle(path: Path, cx: float32, cy: float32, r: float32) {.importc: "pixie_path_circle", cdecl.}
|
|
|
|
proc circle*(path: Path, cx: float32, cy: float32, r: float32) {.inline.} =
|
|
pixie_path_circle(path, cx, cy, r)
|
|
|
|
proc pixie_path_polygon(path: Path, x: float32, y: float32, size: float32, sides: int) {.importc: "pixie_path_polygon", cdecl.}
|
|
|
|
proc polygon*(path: Path, x: float32, y: float32, size: float32, sides: int) {.inline.} =
|
|
pixie_path_polygon(path, x, y, size, sides)
|
|
|
|
proc pixie_typeface_get_file_path(typeface: Typeface): cstring {.importc: "pixie_typeface_get_file_path", cdecl.}
|
|
|
|
proc filePath*(typeface: Typeface): cstring {.inline.} =
|
|
pixie_typeface_get_file_path(typeface).`$`
|
|
|
|
proc pixie_typeface_set_file_path(typeface: Typeface, filePath: cstring) {.importc: "pixie_typeface_set_file_path", cdecl.}
|
|
|
|
proc `filePath=`*(typeface: Typeface, filePath: string) =
|
|
pixie_typeface_set_file_path(typeface, filePath.cstring)
|
|
|
|
proc pixie_typeface_ascent(typeface: Typeface): float32 {.importc: "pixie_typeface_ascent", cdecl.}
|
|
|
|
proc ascent*(typeface: Typeface): float32 {.inline.} =
|
|
result = pixie_typeface_ascent(typeface)
|
|
|
|
proc pixie_typeface_descent(typeface: Typeface): float32 {.importc: "pixie_typeface_descent", cdecl.}
|
|
|
|
proc descent*(typeface: Typeface): float32 {.inline.} =
|
|
result = pixie_typeface_descent(typeface)
|
|
|
|
proc pixie_typeface_line_gap(typeface: Typeface): float32 {.importc: "pixie_typeface_line_gap", cdecl.}
|
|
|
|
proc lineGap*(typeface: Typeface): float32 {.inline.} =
|
|
result = pixie_typeface_line_gap(typeface)
|
|
|
|
proc pixie_typeface_line_height(typeface: Typeface): float32 {.importc: "pixie_typeface_line_height", cdecl.}
|
|
|
|
proc lineHeight*(typeface: Typeface): float32 {.inline.} =
|
|
result = pixie_typeface_line_height(typeface)
|
|
|
|
proc pixie_typeface_get_glyph_path(typeface: Typeface, rune: int32): Path {.importc: "pixie_typeface_get_glyph_path", cdecl.}
|
|
|
|
proc getGlyphPath*(typeface: Typeface, rune: Rune): Path {.inline.} =
|
|
result = pixie_typeface_get_glyph_path(typeface, rune.int32)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_typeface_get_advance(typeface: Typeface, rune: int32): float32 {.importc: "pixie_typeface_get_advance", cdecl.}
|
|
|
|
proc getAdvance*(typeface: Typeface, rune: Rune): float32 {.inline.} =
|
|
result = pixie_typeface_get_advance(typeface, rune.int32)
|
|
|
|
proc pixie_typeface_get_kerning_adjustment(typeface: Typeface, left: int32, right: int32): float32 {.importc: "pixie_typeface_get_kerning_adjustment", cdecl.}
|
|
|
|
proc getKerningAdjustment*(typeface: Typeface, left: Rune, right: Rune): float32 {.inline.} =
|
|
result = pixie_typeface_get_kerning_adjustment(typeface, left.int32, right.int32)
|
|
|
|
proc pixie_typeface_new_font(typeface: Typeface): Font {.importc: "pixie_typeface_new_font", cdecl.}
|
|
|
|
proc newFont*(typeface: Typeface): Font {.inline.} =
|
|
result = pixie_typeface_new_font(typeface)
|
|
|
|
proc pixie_font_get_typeface(font: Font): Typeface {.importc: "pixie_font_get_typeface", cdecl.}
|
|
|
|
proc typeface*(font: Font): Typeface {.inline.} =
|
|
pixie_font_get_typeface(font)
|
|
|
|
proc pixie_font_set_typeface(font: Font, typeface: Typeface) {.importc: "pixie_font_set_typeface", cdecl.}
|
|
|
|
proc `typeface=`*(font: Font, typeface: Typeface) =
|
|
pixie_font_set_typeface(font, typeface)
|
|
|
|
proc pixie_font_get_size(font: Font): float32 {.importc: "pixie_font_get_size", cdecl.}
|
|
|
|
proc size*(font: Font): float32 {.inline.} =
|
|
pixie_font_get_size(font)
|
|
|
|
proc pixie_font_set_size(font: Font, size: float32) {.importc: "pixie_font_set_size", cdecl.}
|
|
|
|
proc `size=`*(font: Font, size: float32) =
|
|
pixie_font_set_size(font, size)
|
|
|
|
proc pixie_font_get_line_height(font: Font): float32 {.importc: "pixie_font_get_line_height", cdecl.}
|
|
|
|
proc lineHeight*(font: Font): float32 {.inline.} =
|
|
pixie_font_get_line_height(font)
|
|
|
|
proc pixie_font_set_line_height(font: Font, lineHeight: float32) {.importc: "pixie_font_set_line_height", cdecl.}
|
|
|
|
proc `lineHeight=`*(font: Font, lineHeight: float32) =
|
|
pixie_font_set_line_height(font, lineHeight)
|
|
|
|
type FontPaints = object
|
|
font: Font
|
|
|
|
proc paints*(font: Font): FontPaints =
|
|
FontPaints(font: font)
|
|
|
|
proc pixie_font_paints_len(s: Font): int {.importc: "pixie_font_paints_len", cdecl.}
|
|
|
|
proc len*(s: FontPaints): int =
|
|
pixie_font_paints_len(s.font)
|
|
|
|
proc pixie_font_paints_add(s: Font, v: Paint) {.importc: "pixie_font_paints_add", cdecl.}
|
|
|
|
proc add*(s: FontPaints, v: Paint) =
|
|
pixie_font_paints_add(s.font, v)
|
|
|
|
proc pixie_font_paints_get(s: Font, i: int): Paint {.importc: "pixie_font_paints_get", cdecl.}
|
|
|
|
proc `[]`*(s: FontPaints, i: int): Paint =
|
|
pixie_font_paints_get(s.font, i)
|
|
|
|
proc pixie_font_paints_set(s: Font, i: int, v: Paint) {.importc: "pixie_font_paints_set", cdecl.}
|
|
|
|
proc `[]=`*(s: FontPaints, i: int, v: Paint) =
|
|
pixie_font_paints_set(s.font, i, v)
|
|
|
|
proc pixie_font_paints_remove(s: Font, i: int) {.importc: "pixie_font_paints_remove", cdecl.}
|
|
|
|
proc remove*(s: FontPaints, i: int) =
|
|
pixie_font_paints_remove(s.font, i)
|
|
|
|
proc pixie_font_paints_clear(s: Font) {.importc: "pixie_font_paints_clear", cdecl.}
|
|
|
|
proc clear*(s: FontPaints) =
|
|
pixie_font_paints_clear(s.font)
|
|
|
|
proc pixie_font_get_text_case(font: Font): TextCase {.importc: "pixie_font_get_text_case", cdecl.}
|
|
|
|
proc textCase*(font: Font): TextCase {.inline.} =
|
|
pixie_font_get_text_case(font)
|
|
|
|
proc pixie_font_set_text_case(font: Font, textCase: TextCase) {.importc: "pixie_font_set_text_case", cdecl.}
|
|
|
|
proc `textCase=`*(font: Font, textCase: TextCase) =
|
|
pixie_font_set_text_case(font, textCase)
|
|
|
|
proc pixie_font_get_underline(font: Font): bool {.importc: "pixie_font_get_underline", cdecl.}
|
|
|
|
proc underline*(font: Font): bool {.inline.} =
|
|
pixie_font_get_underline(font)
|
|
|
|
proc pixie_font_set_underline(font: Font, underline: bool) {.importc: "pixie_font_set_underline", cdecl.}
|
|
|
|
proc `underline=`*(font: Font, underline: bool) =
|
|
pixie_font_set_underline(font, underline)
|
|
|
|
proc pixie_font_get_strikethrough(font: Font): bool {.importc: "pixie_font_get_strikethrough", cdecl.}
|
|
|
|
proc strikethrough*(font: Font): bool {.inline.} =
|
|
pixie_font_get_strikethrough(font)
|
|
|
|
proc pixie_font_set_strikethrough(font: Font, strikethrough: bool) {.importc: "pixie_font_set_strikethrough", cdecl.}
|
|
|
|
proc `strikethrough=`*(font: Font, strikethrough: bool) =
|
|
pixie_font_set_strikethrough(font, strikethrough)
|
|
|
|
proc pixie_font_get_no_kerning_adjustments(font: Font): bool {.importc: "pixie_font_get_no_kerning_adjustments", cdecl.}
|
|
|
|
proc noKerningAdjustments*(font: Font): bool {.inline.} =
|
|
pixie_font_get_no_kerning_adjustments(font)
|
|
|
|
proc pixie_font_set_no_kerning_adjustments(font: Font, noKerningAdjustments: bool) {.importc: "pixie_font_set_no_kerning_adjustments", cdecl.}
|
|
|
|
proc `noKerningAdjustments=`*(font: Font, noKerningAdjustments: bool) =
|
|
pixie_font_set_no_kerning_adjustments(font, noKerningAdjustments)
|
|
|
|
proc pixie_font_scale(font: Font): float32 {.importc: "pixie_font_scale", cdecl.}
|
|
|
|
proc scale*(font: Font): float32 {.inline.} =
|
|
result = pixie_font_scale(font)
|
|
|
|
proc pixie_font_default_line_height(font: Font): float32 {.importc: "pixie_font_default_line_height", cdecl.}
|
|
|
|
proc defaultLineHeight*(font: Font): float32 {.inline.} =
|
|
result = pixie_font_default_line_height(font)
|
|
|
|
proc pixie_font_typeset(font: Font, text: cstring, bounds: Vec2, h_align: HorizontalAlignment, v_align: VerticalAlignment, wrap: bool): Arrangement {.importc: "pixie_font_typeset", cdecl.}
|
|
|
|
proc typeset*(font: Font, text: string, bounds: Vec2, hAlign: HorizontalAlignment, vAlign: VerticalAlignment, wrap: bool): Arrangement {.inline.} =
|
|
result = pixie_font_typeset(font, text.cstring, bounds, hAlign, vAlign, wrap)
|
|
|
|
proc pixie_font_compute_bounds(font: Font, text: cstring): Vec2 {.importc: "pixie_font_compute_bounds", cdecl.}
|
|
|
|
proc computeBounds*(font: Font, text: string): Vec2 {.inline.} =
|
|
result = pixie_font_compute_bounds(font, text.cstring)
|
|
|
|
proc pixie_span_get_text(span: Span): cstring {.importc: "pixie_span_get_text", cdecl.}
|
|
|
|
proc text*(span: Span): cstring {.inline.} =
|
|
pixie_span_get_text(span).`$`
|
|
|
|
proc pixie_span_set_text(span: Span, text: cstring) {.importc: "pixie_span_set_text", cdecl.}
|
|
|
|
proc `text=`*(span: Span, text: string) =
|
|
pixie_span_set_text(span, text.cstring)
|
|
|
|
proc pixie_span_get_font(span: Span): Font {.importc: "pixie_span_get_font", cdecl.}
|
|
|
|
proc font*(span: Span): Font {.inline.} =
|
|
pixie_span_get_font(span)
|
|
|
|
proc pixie_span_set_font(span: Span, font: Font) {.importc: "pixie_span_set_font", cdecl.}
|
|
|
|
proc `font=`*(span: Span, font: Font) =
|
|
pixie_span_set_font(span, font)
|
|
|
|
proc pixie_arrangement_compute_bounds(arrangement: Arrangement): Vec2 {.importc: "pixie_arrangement_compute_bounds", cdecl.}
|
|
|
|
proc computeBounds*(arrangement: Arrangement): Vec2 {.inline.} =
|
|
result = pixie_arrangement_compute_bounds(arrangement)
|
|
|
|
proc pixie_context_get_image(context: Context): Image {.importc: "pixie_context_get_image", cdecl.}
|
|
|
|
proc image*(context: Context): Image {.inline.} =
|
|
pixie_context_get_image(context)
|
|
|
|
proc pixie_context_set_image(context: Context, image: Image) {.importc: "pixie_context_set_image", cdecl.}
|
|
|
|
proc `image=`*(context: Context, image: Image) =
|
|
pixie_context_set_image(context, image)
|
|
|
|
proc pixie_context_get_fill_style(context: Context): Paint {.importc: "pixie_context_get_fill_style", cdecl.}
|
|
|
|
proc fillStyle*(context: Context): Paint {.inline.} =
|
|
pixie_context_get_fill_style(context)
|
|
|
|
proc pixie_context_set_fill_style(context: Context, fillStyle: Paint) {.importc: "pixie_context_set_fill_style", cdecl.}
|
|
|
|
proc `fillStyle=`*(context: Context, fillStyle: Paint) =
|
|
pixie_context_set_fill_style(context, fillStyle)
|
|
|
|
proc pixie_context_get_stroke_style(context: Context): Paint {.importc: "pixie_context_get_stroke_style", cdecl.}
|
|
|
|
proc strokeStyle*(context: Context): Paint {.inline.} =
|
|
pixie_context_get_stroke_style(context)
|
|
|
|
proc pixie_context_set_stroke_style(context: Context, strokeStyle: Paint) {.importc: "pixie_context_set_stroke_style", cdecl.}
|
|
|
|
proc `strokeStyle=`*(context: Context, strokeStyle: Paint) =
|
|
pixie_context_set_stroke_style(context, strokeStyle)
|
|
|
|
proc pixie_context_get_global_alpha(context: Context): float32 {.importc: "pixie_context_get_global_alpha", cdecl.}
|
|
|
|
proc globalAlpha*(context: Context): float32 {.inline.} =
|
|
pixie_context_get_global_alpha(context)
|
|
|
|
proc pixie_context_set_global_alpha(context: Context, globalAlpha: float32) {.importc: "pixie_context_set_global_alpha", cdecl.}
|
|
|
|
proc `globalAlpha=`*(context: Context, globalAlpha: float32) =
|
|
pixie_context_set_global_alpha(context, globalAlpha)
|
|
|
|
proc pixie_context_get_line_width(context: Context): float32 {.importc: "pixie_context_get_line_width", cdecl.}
|
|
|
|
proc lineWidth*(context: Context): float32 {.inline.} =
|
|
pixie_context_get_line_width(context)
|
|
|
|
proc pixie_context_set_line_width(context: Context, lineWidth: float32) {.importc: "pixie_context_set_line_width", cdecl.}
|
|
|
|
proc `lineWidth=`*(context: Context, lineWidth: float32) =
|
|
pixie_context_set_line_width(context, lineWidth)
|
|
|
|
proc pixie_context_get_miter_limit(context: Context): float32 {.importc: "pixie_context_get_miter_limit", cdecl.}
|
|
|
|
proc miterLimit*(context: Context): float32 {.inline.} =
|
|
pixie_context_get_miter_limit(context)
|
|
|
|
proc pixie_context_set_miter_limit(context: Context, miterLimit: float32) {.importc: "pixie_context_set_miter_limit", cdecl.}
|
|
|
|
proc `miterLimit=`*(context: Context, miterLimit: float32) =
|
|
pixie_context_set_miter_limit(context, miterLimit)
|
|
|
|
proc pixie_context_get_line_cap(context: Context): LineCap {.importc: "pixie_context_get_line_cap", cdecl.}
|
|
|
|
proc lineCap*(context: Context): LineCap {.inline.} =
|
|
pixie_context_get_line_cap(context)
|
|
|
|
proc pixie_context_set_line_cap(context: Context, lineCap: LineCap) {.importc: "pixie_context_set_line_cap", cdecl.}
|
|
|
|
proc `lineCap=`*(context: Context, lineCap: LineCap) =
|
|
pixie_context_set_line_cap(context, lineCap)
|
|
|
|
proc pixie_context_get_line_join(context: Context): LineJoin {.importc: "pixie_context_get_line_join", cdecl.}
|
|
|
|
proc lineJoin*(context: Context): LineJoin {.inline.} =
|
|
pixie_context_get_line_join(context)
|
|
|
|
proc pixie_context_set_line_join(context: Context, lineJoin: LineJoin) {.importc: "pixie_context_set_line_join", cdecl.}
|
|
|
|
proc `lineJoin=`*(context: Context, lineJoin: LineJoin) =
|
|
pixie_context_set_line_join(context, lineJoin)
|
|
|
|
proc pixie_context_get_font(context: Context): cstring {.importc: "pixie_context_get_font", cdecl.}
|
|
|
|
proc font*(context: Context): cstring {.inline.} =
|
|
pixie_context_get_font(context).`$`
|
|
|
|
proc pixie_context_set_font(context: Context, font: cstring) {.importc: "pixie_context_set_font", cdecl.}
|
|
|
|
proc `font=`*(context: Context, font: string) =
|
|
pixie_context_set_font(context, font.cstring)
|
|
|
|
proc pixie_context_get_font_size(context: Context): float32 {.importc: "pixie_context_get_font_size", cdecl.}
|
|
|
|
proc fontSize*(context: Context): float32 {.inline.} =
|
|
pixie_context_get_font_size(context)
|
|
|
|
proc pixie_context_set_font_size(context: Context, fontSize: float32) {.importc: "pixie_context_set_font_size", cdecl.}
|
|
|
|
proc `fontSize=`*(context: Context, fontSize: float32) =
|
|
pixie_context_set_font_size(context, fontSize)
|
|
|
|
proc pixie_context_get_text_align(context: Context): HorizontalAlignment {.importc: "pixie_context_get_text_align", cdecl.}
|
|
|
|
proc textAlign*(context: Context): HorizontalAlignment {.inline.} =
|
|
pixie_context_get_text_align(context)
|
|
|
|
proc pixie_context_set_text_align(context: Context, textAlign: HorizontalAlignment) {.importc: "pixie_context_set_text_align", cdecl.}
|
|
|
|
proc `textAlign=`*(context: Context, textAlign: HorizontalAlignment) =
|
|
pixie_context_set_text_align(context, textAlign)
|
|
|
|
proc pixie_context_save(ctx: Context) {.importc: "pixie_context_save", cdecl.}
|
|
|
|
proc save*(ctx: Context) {.inline.} =
|
|
pixie_context_save(ctx)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_save_layer(ctx: Context) {.importc: "pixie_context_save_layer", cdecl.}
|
|
|
|
proc saveLayer*(ctx: Context) {.inline.} =
|
|
pixie_context_save_layer(ctx)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_restore(ctx: Context) {.importc: "pixie_context_restore", cdecl.}
|
|
|
|
proc restore*(ctx: Context) {.inline.} =
|
|
pixie_context_restore(ctx)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_begin_path(ctx: Context) {.importc: "pixie_context_begin_path", cdecl.}
|
|
|
|
proc beginPath*(ctx: Context) {.inline.} =
|
|
pixie_context_begin_path(ctx)
|
|
|
|
proc pixie_context_close_path(ctx: Context) {.importc: "pixie_context_close_path", cdecl.}
|
|
|
|
proc closePath*(ctx: Context) {.inline.} =
|
|
pixie_context_close_path(ctx)
|
|
|
|
proc pixie_context_path_fill(ctx: Context, path: Path, winding_rule: WindingRule) {.importc: "pixie_context_path_fill", cdecl.}
|
|
|
|
proc fill*(ctx: Context, path: Path, windingRule: WindingRule) {.inline.} =
|
|
pixie_context_path_fill(ctx, path, windingRule)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_winding_rule_fill(ctx: Context, winding_rule: WindingRule) {.importc: "pixie_context_winding_rule_fill", cdecl.}
|
|
|
|
proc fill*(ctx: Context, windingRule: WindingRule) {.inline.} =
|
|
pixie_context_winding_rule_fill(ctx, windingRule)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_path_clip(ctx: Context, path: Path, winding_rule: WindingRule) {.importc: "pixie_context_path_clip", cdecl.}
|
|
|
|
proc clip*(ctx: Context, path: Path, windingRule: WindingRule) {.inline.} =
|
|
pixie_context_path_clip(ctx, path, windingRule)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_winding_rule_clip(ctx: Context, winding_rule: WindingRule) {.importc: "pixie_context_winding_rule_clip", cdecl.}
|
|
|
|
proc clip*(ctx: Context, windingRule: WindingRule) {.inline.} =
|
|
pixie_context_winding_rule_clip(ctx, windingRule)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_path_stroke(ctx: Context, path: Path) {.importc: "pixie_context_path_stroke", cdecl.}
|
|
|
|
proc stroke*(ctx: Context, path: Path) {.inline.} =
|
|
pixie_context_path_stroke(ctx, path)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_stroke(ctx: Context) {.importc: "pixie_context_stroke", cdecl.}
|
|
|
|
proc stroke*(ctx: Context) {.inline.} =
|
|
pixie_context_stroke(ctx)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_measure_text(ctx: Context, text: cstring): TextMetrics {.importc: "pixie_context_measure_text", cdecl.}
|
|
|
|
proc measureText*(ctx: Context, text: string): TextMetrics {.inline.} =
|
|
result = pixie_context_measure_text(ctx, text.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_get_transform(ctx: Context): Mat3 {.importc: "pixie_context_get_transform", cdecl.}
|
|
|
|
proc getTransform*(ctx: Context): Mat3 {.inline.} =
|
|
result = pixie_context_get_transform(ctx)
|
|
|
|
proc pixie_context_set_transform(ctx: Context, transform: Mat3) {.importc: "pixie_context_set_transform", cdecl.}
|
|
|
|
proc setTransform*(ctx: Context, transform: Mat3) {.inline.} =
|
|
pixie_context_set_transform(ctx, transform)
|
|
|
|
proc pixie_context_transform(ctx: Context, transform: Mat3) {.importc: "pixie_context_transform", cdecl.}
|
|
|
|
proc transform*(ctx: Context, transform: Mat3) {.inline.} =
|
|
pixie_context_transform(ctx, transform)
|
|
|
|
proc pixie_context_reset_transform(ctx: Context) {.importc: "pixie_context_reset_transform", cdecl.}
|
|
|
|
proc resetTransform*(ctx: Context) {.inline.} =
|
|
pixie_context_reset_transform(ctx)
|
|
|
|
proc pixie_context_draw_image_1(ctx: Context, image: Image, dx: float32, dy: float32) {.importc: "pixie_context_draw_image_1", cdecl.}
|
|
|
|
proc drawImage1*(ctx: Context, image: Image, dx: float32, dy: float32) {.inline.} =
|
|
pixie_context_draw_image_1(ctx, image, dx, dy)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_draw_image_2(ctx: Context, image: Image, dx: float32, dy: float32, d_width: float32, d_height: float32) {.importc: "pixie_context_draw_image_2", cdecl.}
|
|
|
|
proc drawImage2*(ctx: Context, image: Image, dx: float32, dy: float32, dWidth: float32, dHeight: float32) {.inline.} =
|
|
pixie_context_draw_image_2(ctx, image, dx, dy, dWidth, dHeight)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_draw_image_3(ctx: Context, image: Image, sx: float32, sy: float32, s_width: float32, s_height: float32, dx: float32, dy: float32, d_width: float32, d_height: float32) {.importc: "pixie_context_draw_image_3", cdecl.}
|
|
|
|
proc drawImage3*(ctx: Context, image: Image, sx: float32, sy: float32, sWidth: float32, sHeight: float32, dx: float32, dy: float32, dWidth: float32, dHeight: float32) {.inline.} =
|
|
pixie_context_draw_image_3(ctx, image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_move_to(ctx: Context, x: float32, y: float32) {.importc: "pixie_context_move_to", cdecl.}
|
|
|
|
proc moveTo*(ctx: Context, x: float32, y: float32) {.inline.} =
|
|
pixie_context_move_to(ctx, x, y)
|
|
|
|
proc pixie_context_line_to(ctx: Context, x: float32, y: float32) {.importc: "pixie_context_line_to", cdecl.}
|
|
|
|
proc lineTo*(ctx: Context, x: float32, y: float32) {.inline.} =
|
|
pixie_context_line_to(ctx, x, y)
|
|
|
|
proc pixie_context_bezier_curve_to(ctx: Context, cp_1x: float32, cp_1y: float32, cp_2x: float32, cp_2y: float32, x: float32, y: float32) {.importc: "pixie_context_bezier_curve_to", cdecl.}
|
|
|
|
proc bezierCurveTo*(ctx: Context, cp1x: float32, cp1y: float32, cp2x: float32, cp2y: float32, x: float32, y: float32) {.inline.} =
|
|
pixie_context_bezier_curve_to(ctx, cp1x, cp1y, cp2x, cp2y, x, y)
|
|
|
|
proc pixie_context_quadratic_curve_to(ctx: Context, cpx: float32, cpy: float32, x: float32, y: float32) {.importc: "pixie_context_quadratic_curve_to", cdecl.}
|
|
|
|
proc quadraticCurveTo*(ctx: Context, cpx: float32, cpy: float32, x: float32, y: float32) {.inline.} =
|
|
pixie_context_quadratic_curve_to(ctx, cpx, cpy, x, y)
|
|
|
|
proc pixie_context_arc(ctx: Context, x: float32, y: float32, r: float32, a_0: float32, a_1: float32, ccw: bool) {.importc: "pixie_context_arc", cdecl.}
|
|
|
|
proc arc*(ctx: Context, x: float32, y: float32, r: float32, a0: float32, a1: float32, ccw: bool) {.inline.} =
|
|
pixie_context_arc(ctx, x, y, r, a0, a1, ccw)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_arc_to(ctx: Context, x_1: float32, y_1: float32, x_2: float32, y_2: float32, radius: float32) {.importc: "pixie_context_arc_to", cdecl.}
|
|
|
|
proc arcTo*(ctx: Context, x1: float32, y1: float32, x2: float32, y2: float32, radius: float32) {.inline.} =
|
|
pixie_context_arc_to(ctx, x1, y1, x2, y2, radius)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_rect(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.importc: "pixie_context_rect", cdecl.}
|
|
|
|
proc rect*(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.inline.} =
|
|
pixie_context_rect(ctx, x, y, width, height)
|
|
|
|
proc pixie_context_rounded_rect(ctx: Context, x: float32, y: float32, w: float32, h: float32, nw: float32, ne: float32, se: float32, sw: float32) {.importc: "pixie_context_rounded_rect", cdecl.}
|
|
|
|
proc roundedRect*(ctx: Context, x: float32, y: float32, w: float32, h: float32, nw: float32, ne: float32, se: float32, sw: float32) {.inline.} =
|
|
pixie_context_rounded_rect(ctx, x, y, w, h, nw, ne, se, sw)
|
|
|
|
proc pixie_context_ellipse(ctx: Context, x: float32, y: float32, rx: float32, ry: float32) {.importc: "pixie_context_ellipse", cdecl.}
|
|
|
|
proc ellipse*(ctx: Context, x: float32, y: float32, rx: float32, ry: float32) {.inline.} =
|
|
pixie_context_ellipse(ctx, x, y, rx, ry)
|
|
|
|
proc pixie_context_circle(ctx: Context, cx: float32, cy: float32, r: float32) {.importc: "pixie_context_circle", cdecl.}
|
|
|
|
proc circle*(ctx: Context, cx: float32, cy: float32, r: float32) {.inline.} =
|
|
pixie_context_circle(ctx, cx, cy, r)
|
|
|
|
proc pixie_context_polygon(ctx: Context, x: float32, y: float32, size: float32, sides: int) {.importc: "pixie_context_polygon", cdecl.}
|
|
|
|
proc polygon*(ctx: Context, x: float32, y: float32, size: float32, sides: int) {.inline.} =
|
|
pixie_context_polygon(ctx, x, y, size, sides)
|
|
|
|
proc pixie_context_clear_rect(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.importc: "pixie_context_clear_rect", cdecl.}
|
|
|
|
proc clearRect*(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.inline.} =
|
|
pixie_context_clear_rect(ctx, x, y, width, height)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_fill_rect(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.importc: "pixie_context_fill_rect", cdecl.}
|
|
|
|
proc fillRect*(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.inline.} =
|
|
pixie_context_fill_rect(ctx, x, y, width, height)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_stroke_rect(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.importc: "pixie_context_stroke_rect", cdecl.}
|
|
|
|
proc strokeRect*(ctx: Context, x: float32, y: float32, width: float32, height: float32) {.inline.} =
|
|
pixie_context_stroke_rect(ctx, x, y, width, height)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_fill_text(ctx: Context, text: cstring, x: float32, y: float32) {.importc: "pixie_context_fill_text", cdecl.}
|
|
|
|
proc fillText*(ctx: Context, text: string, x: float32, y: float32) {.inline.} =
|
|
pixie_context_fill_text(ctx, text.cstring, x, y)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_stroke_text(ctx: Context, text: cstring, x: float32, y: float32) {.importc: "pixie_context_stroke_text", cdecl.}
|
|
|
|
proc strokeText*(ctx: Context, text: string, x: float32, y: float32) {.inline.} =
|
|
pixie_context_stroke_text(ctx, text.cstring, x, y)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_translate(ctx: Context, x: float32, y: float32) {.importc: "pixie_context_translate", cdecl.}
|
|
|
|
proc translate*(ctx: Context, x: float32, y: float32) {.inline.} =
|
|
pixie_context_translate(ctx, x, y)
|
|
|
|
proc pixie_context_scale(ctx: Context, x: float32, y: float32) {.importc: "pixie_context_scale", cdecl.}
|
|
|
|
proc scale*(ctx: Context, x: float32, y: float32) {.inline.} =
|
|
pixie_context_scale(ctx, x, y)
|
|
|
|
proc pixie_context_rotate(ctx: Context, angle: float32) {.importc: "pixie_context_rotate", cdecl.}
|
|
|
|
proc rotate*(ctx: Context, angle: float32) {.inline.} =
|
|
pixie_context_rotate(ctx, angle)
|
|
|
|
proc pixie_context_is_point_in_path(ctx: Context, x: float32, y: float32, winding_rule: WindingRule): bool {.importc: "pixie_context_is_point_in_path", cdecl.}
|
|
|
|
proc isPointInPath*(ctx: Context, x: float32, y: float32, windingRule: WindingRule): bool {.inline.} =
|
|
result = pixie_context_is_point_in_path(ctx, x, y, windingRule)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_context_is_point_in_stroke(ctx: Context, x: float32, y: float32): bool {.importc: "pixie_context_is_point_in_stroke", cdecl.}
|
|
|
|
proc isPointInStroke*(ctx: Context, x: float32, y: float32): bool {.inline.} =
|
|
result = pixie_context_is_point_in_stroke(ctx, x, y)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_new_image(width: int, height: int): Image {.importc: "pixie_new_image", cdecl.}
|
|
|
|
proc newImage*(width: int, height: int): Image {.inline.} =
|
|
result = pixie_new_image(width, height)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_new_mask(width: int, height: int): Mask {.importc: "pixie_new_mask", cdecl.}
|
|
|
|
proc newMask*(width: int, height: int): Mask {.inline.} =
|
|
result = pixie_new_mask(width, height)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_new_paint(kind: PaintKind): Paint {.importc: "pixie_new_paint", cdecl.}
|
|
|
|
proc newPaint*(kind: PaintKind): Paint {.inline.} =
|
|
result = pixie_new_paint(kind)
|
|
|
|
proc pixie_new_path(): Path {.importc: "pixie_new_path", cdecl.}
|
|
|
|
proc newPath*(): Path {.inline.} =
|
|
result = pixie_new_path()
|
|
|
|
proc pixie_new_span(text: cstring, font: Font): Span {.importc: "pixie_new_span", cdecl.}
|
|
|
|
proc newSpan*(text: string, font: Font): Span {.inline.} =
|
|
result = pixie_new_span(text.cstring, font)
|
|
|
|
proc pixie_new_context(width: int, height: int): Context {.importc: "pixie_new_context", cdecl.}
|
|
|
|
proc newContext*(width: int, height: int): Context {.inline.} =
|
|
result = pixie_new_context(width, height)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_read_image(file_path: cstring): Image {.importc: "pixie_read_image", cdecl.}
|
|
|
|
proc readImage*(filePath: string): Image {.inline.} =
|
|
result = pixie_read_image(filePath.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_read_mask(file_path: cstring): Mask {.importc: "pixie_read_mask", cdecl.}
|
|
|
|
proc readMask*(filePath: string): Mask {.inline.} =
|
|
result = pixie_read_mask(filePath.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_read_typeface(file_path: cstring): Typeface {.importc: "pixie_read_typeface", cdecl.}
|
|
|
|
proc readTypeface*(filePath: string): Typeface {.inline.} =
|
|
result = pixie_read_typeface(filePath.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_read_font(file_path: cstring): Font {.importc: "pixie_read_font", cdecl.}
|
|
|
|
proc readFont*(filePath: string): Font {.inline.} =
|
|
result = pixie_read_font(filePath.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_parse_path(path: cstring): Path {.importc: "pixie_parse_path", cdecl.}
|
|
|
|
proc parsePath*(path: string): Path {.inline.} =
|
|
result = pixie_parse_path(path.cstring)
|
|
if checkError():
|
|
raise newException(PixieError, $takeError())
|
|
|
|
proc pixie_miter_limit_to_angle(limit: float32): float32 {.importc: "pixie_miter_limit_to_angle", cdecl.}
|
|
|
|
proc miterLimitToAngle*(limit: float32): float32 {.inline.} =
|
|
result = pixie_miter_limit_to_angle(limit)
|
|
|
|
proc pixie_angle_to_miter_limit(angle: float32): float32 {.importc: "pixie_angle_to_miter_limit", cdecl.}
|
|
|
|
proc angleToMiterLimit*(angle: float32): float32 {.inline.} =
|
|
result = pixie_angle_to_miter_limit(angle)
|
|
|