impeller/bindings/impeller_api

Search:
Group by:

This module provides low-level bindings to the Impeller graphics library. These bindings are designed to be as thin and direct as possible, closely mirroring the C API of Impeller.

They are intended for users who want maximum control and flexibility when using Impeller from Nim.

Types

ImpellerBlendMode {.size: 4.} = enum
  kImpellerBlendModeClear, kImpellerBlendModeSource,
  kImpellerBlendModeDestination, kImpellerBlendModeSourceOver,
  kImpellerBlendModeDestinationOver, kImpellerBlendModeSourceIn,
  kImpellerBlendModeDestinationIn, kImpellerBlendModeSourceOut,
  kImpellerBlendModeDestinationOut, kImpellerBlendModeSourceATop,
  kImpellerBlendModeDestinationATop, kImpellerBlendModeXor,
  kImpellerBlendModePlus, kImpellerBlendModeModulate, kImpellerBlendModeScreen,
  kImpellerBlendModeOverlay, kImpellerBlendModeDarken,
  kImpellerBlendModeLighten, kImpellerBlendModeColorDodge,
  kImpellerBlendModeColorBurn, kImpellerBlendModeHardLight,
  kImpellerBlendModeSoftLight, kImpellerBlendModeDifference,
  kImpellerBlendModeExclusion, kImpellerBlendModeMultiply,
  kImpellerBlendModeHue, kImpellerBlendModeSaturation, kImpellerBlendModeColor,
  kImpellerBlendModeLuminosity
ImpellerBlurStyle {.size: 4.} = enum
  kImpellerBlurStyleNormal, kImpellerBlurStyleSolid, kImpellerBlurStyleOuter,
  kImpellerBlurStyleInner
ImpellerCallback = proc (user_data: pointer) {.cdecl.}
ImpellerClipOperation {.size: 4.} = enum
  kImpellerClipOperationDifference, kImpellerClipOperationIntersect
ImpellerColor {.byCopy.} = object
  red*, green*, blue*, alpha*: cfloat
  color_space*: ImpellerColorSpace
ImpellerColorMatrix {.byCopy.} = object
  m*: array[20, cfloat]
ImpellerColorSpace {.size: 4.} = enum
  kImpellerColorSpaceSRGB, kImpellerColorSpaceExtendedSRGB,
  kImpellerColorSpaceDisplayP3
ImpellerContext = pointer
ImpellerContextVulkanInfo {.byCopy.} = object
  vk_instance*: pointer
  vk_physical_device*: pointer
  vk_logical_device*: pointer
  graphics_queue_family_index*: uint32
  graphics_queue_index*: uint32
ImpellerContextVulkanSettings {.byCopy.} = object
  user_data*: pointer
  proc_address_callback*: ImpellerVulkanProcAddressCallback
  enable_vulkan_validation*: bool
ImpellerDrawStyle {.size: 4.} = enum
  kImpellerDrawStyleFill, kImpellerDrawStyleStroke,
  kImpellerDrawStyleStrokeAndFill
ImpellerFillType {.size: 4.} = enum
  kImpellerFillTypeNonZero, kImpellerFillTypeOdd
ImpellerFontStyle {.size: 4.} = enum
  kImpellerFontStyleNormal, kImpellerFontStyleItalic
ImpellerFontWeight {.size: 4.} = enum
  kImpellerFontWeight100, kImpellerFontWeight200, kImpellerFontWeight300,
  kImpellerFontWeight400, kImpellerFontWeight500, kImpellerFontWeight600,
  kImpellerFontWeight700, kImpellerFontWeight800, kImpellerFontWeight900
ImpellerGlyphInfo = pointer
ImpellerISize {.byCopy.} = object
  width*, height*: int64
ImpellerMapping {.byCopy.} = object
  data*: ptr uint8
  length*: uint64
  on_release*: ImpellerCallback
ImpellerMaskFilter = pointer
ImpellerMatrix {.byCopy.} = object
  m*: array[16, cfloat]
ImpellerPaint = pointer
ImpellerParagraph = pointer
ImpellerPath = pointer
ImpellerPixelFormat {.size: 4.} = enum
  kImpellerPixelFormatRGBA8888
ImpellerPoint {.byCopy.} = object
  x*, y*: cfloat
ImpellerProcAddressCallback = proc (proc_name: cstring; user_data: pointer): pointer {.
    cdecl.}
ImpellerRange {.byCopy.} = object
  start*, `end`*: uint64
ImpellerRect {.byCopy.} = object
  x*, y*, width*, height*: cfloat
ImpellerRoundingRadii {.byCopy.} = object
  top_left*, bottom_left*, top_right*, bottom_right*: ImpellerPoint
ImpellerSize {.byCopy.} = object
  width*, height*: cfloat
ImpellerStrokeCap {.size: 4.} = enum
  kImpellerStrokeCapButt, kImpellerStrokeCapRound, kImpellerStrokeCapSquare
ImpellerStrokeJoin {.size: 4.} = enum
  kImpellerStrokeJoinMiter, kImpellerStrokeJoinRound, kImpellerStrokeJoinBevel
ImpellerSurface = pointer
ImpellerTextAlignment {.size: 4.} = enum
  kImpellerTextAlignmentLeft, kImpellerTextAlignmentRight,
  kImpellerTextAlignmentCenter, kImpellerTextAlignmentJustify,
  kImpellerTextAlignmentStart, kImpellerTextAlignmentEnd
ImpellerTextDecoration {.byCopy.} = object
  types*: cint
  color*: ImpellerColor
  style*: ImpellerTextDecorationStyle
  thickness_multiplier*: cfloat
ImpellerTextDecorationStyle {.size: 4.} = enum
  kImpellerTextDecorationStyleSolid, kImpellerTextDecorationStyleDouble,
  kImpellerTextDecorationStyleDotted, kImpellerTextDecorationStyleDashed,
  kImpellerTextDecorationStyleWavy
ImpellerTextDecorationType {.size: 4.} = enum
  kImpellerTextDecorationTypeNone = 0, kImpellerTextDecorationTypeUnderline = 1,
  kImpellerTextDecorationTypeOverline = 2,
  kImpellerTextDecorationTypeLineThrough = 4
ImpellerTextDirection {.size: 4.} = enum
  kImpellerTextDirectionRTL, kImpellerTextDirectionLTR
ImpellerTexture = pointer
ImpellerTextureDescriptor {.byCopy.} = object
  pixel_format*: ImpellerPixelFormat
  size*: ImpellerISize
  mip_count*: uint32
ImpellerTextureSampling {.size: 4.} = enum
  kImpellerTextureSamplingNearestNeighbor, kImpellerTextureSamplingLinear
ImpellerTileMode {.size: 4.} = enum
  kImpellerTileModeClamp, kImpellerTileModeRepeat, kImpellerTileModeMirror,
  kImpellerTileModeDecal
ImpellerVulkanProcAddressCallback = proc (vulkan_instance: pointer;
    vulkan_proc_name: cstring; user_data: pointer): pointer {.cdecl.}

Procs

proc ImpellerColorFilterCreateBlendNew(color: ptr ImpellerColor;
                                       blend_mode: ImpellerBlendMode): ImpellerColorFilter {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorFilterCreateColorMatrixNew(
    color_matrix: ptr ImpellerColorMatrix): ImpellerColorFilter {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorFilterRelease(color_filter: ImpellerColorFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorFilterRetain(color_filter: ImpellerColorFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceCreateConicalGradientNew(
    start_center: ptr ImpellerPoint; start_radius: cfloat;
    end_center: ptr ImpellerPoint; end_radius: cfloat; stop_count: uint32;
    colors: ptr ImpellerColor; stops: ptr cfloat; tile_mode: ImpellerTileMode;
    transformation: ptr ImpellerMatrix): ImpellerColorSource {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceCreateFragmentProgramNew(context: ImpellerContext;
    fragment_program: ImpellerFragmentProgram; samplers: ptr ImpellerTexture;
    samplers_count: csize_t; data: ptr uint8; data_bytes_length: csize_t): ImpellerColorSource {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceCreateImageNew(image: ImpellerTexture;
                                       horizontal_tile_mode: ImpellerTileMode;
                                       vertical_tile_mode: ImpellerTileMode;
                                       sampling: ImpellerTextureSampling;
                                       transformation: ptr ImpellerMatrix): ImpellerColorSource {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceCreateLinearGradientNew(start_point: ptr ImpellerPoint;
    end_point: ptr ImpellerPoint; stop_count: uint32; colors: ptr ImpellerColor;
    stops: ptr cfloat; tile_mode: ImpellerTileMode;
    transformation: ptr ImpellerMatrix): ImpellerColorSource {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceCreateRadialGradientNew(center: ptr ImpellerPoint;
    radius: cfloat; stop_count: uint32; colors: ptr ImpellerColor;
    stops: ptr cfloat; tile_mode: ImpellerTileMode;
    transformation: ptr ImpellerMatrix): ImpellerColorSource {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceCreateSweepGradientNew(center: ptr ImpellerPoint;
    start: cfloat; end: cfloat; stop_count: uint32; colors: ptr ImpellerColor;
    stops: ptr cfloat; tile_mode: ImpellerTileMode;
    transformation: ptr ImpellerMatrix): ImpellerColorSource {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceRelease(color_source: ImpellerColorSource) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerColorSourceRetain(color_source: ImpellerColorSource) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerContextCreateMetalNew(version: uint32): ImpellerContext {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerContextCreateOpenGLESNew(version: uint32; gl_proc_address_callback: ImpellerProcAddressCallback;
    gl_proc_address_callback_user_data: pointer): ImpellerContext {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerContextCreateVulkanNew(version: uint32;
                                    settings: ptr ImpellerContextVulkanSettings): ImpellerContext {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerContextGetVulkanInfo(context: ImpellerContext; out_vulkan_info: ptr ImpellerContextVulkanInfo): bool {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerContextRelease(context: ImpellerContext) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerContextRetain(context: ImpellerContext) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderClipOval(builder: ImpellerDisplayListBuilder;
                                        oval_bounds: ptr ImpellerRect;
                                        op: ImpellerClipOperation) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderClipPath(builder: ImpellerDisplayListBuilder;
                                        path: ImpellerPath;
                                        op: ImpellerClipOperation) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderClipRect(builder: ImpellerDisplayListBuilder;
                                        rect: ptr ImpellerRect;
                                        op: ImpellerClipOperation) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderClipRoundedRect(
    builder: ImpellerDisplayListBuilder; rect: ptr ImpellerRect;
    radii: ptr ImpellerRoundingRadii; op: ImpellerClipOperation) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderCreateDisplayListNew(
    builder: ImpellerDisplayListBuilder): ImpellerDisplayList {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawDashedLine(
    builder: ImpellerDisplayListBuilder; from: ptr ImpellerPoint;
    to: ptr ImpellerPoint; on_length, off_length: cfloat; paint: ImpellerPaint) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawDisplayList(
    builder: ImpellerDisplayListBuilder; display_list: ImpellerDisplayList;
    opacity: cfloat) {.importc, header: "<impeller.h>", ...raises: [], tags: [],
                       forbids: [].}
proc ImpellerDisplayListBuilderDrawLine(builder: ImpellerDisplayListBuilder;
                                        from: ptr ImpellerPoint;
                                        to: ptr ImpellerPoint;
                                        paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawOval(builder: ImpellerDisplayListBuilder;
                                        oval_bounds: ptr ImpellerRect;
                                        paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawPaint(builder: ImpellerDisplayListBuilder;
    paint: ImpellerPaint) {.importc, header: "<impeller.h>", ...raises: [],
                            tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawParagraph(
    builder: ImpellerDisplayListBuilder; paragraph: ImpellerParagraph;
    point: ptr ImpellerPoint) {.importc, header: "<impeller.h>", ...raises: [],
                                tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawPath(builder: ImpellerDisplayListBuilder;
                                        path: ImpellerPath; paint: ImpellerPaint) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawRect(builder: ImpellerDisplayListBuilder;
                                        rect: ptr ImpellerRect;
                                        paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawRoundedRect(
    builder: ImpellerDisplayListBuilder; rect: ptr ImpellerRect;
    radii: ptr ImpellerRoundingRadii; paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawRoundedRectDifference(
    builder: ImpellerDisplayListBuilder; outer_rect: ptr ImpellerRect;
    outer_radii: ptr ImpellerRoundingRadii; inner_rect: ptr ImpellerRect;
    inner_radii: ptr ImpellerRoundingRadii; paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawShadow(builder: ImpellerDisplayListBuilder;
    path: ImpellerPath; color: ptr ImpellerColor; elevation: cfloat;
    occluder_is_transparent: bool; device_pixel_ratio: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawTexture(builder: ImpellerDisplayListBuilder;
    texture: ImpellerTexture; point: ptr ImpellerPoint;
    sampling: ImpellerTextureSampling; paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderDrawTextureRect(
    builder: ImpellerDisplayListBuilder; texture: ImpellerTexture;
    src_rect: ptr ImpellerRect; dst_rect: ptr ImpellerRect;
    sampling: ImpellerTextureSampling; paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderGetSaveCount(builder: ImpellerDisplayListBuilder): uint32 {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderGetTransform(builder: ImpellerDisplayListBuilder;
    out_transform: ptr ImpellerMatrix) {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderNew(cull_rect: ptr ImpellerRect): ImpellerDisplayListBuilder {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderRelease(builder: ImpellerDisplayListBuilder) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderResetTransform(
    builder: ImpellerDisplayListBuilder) {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderRestore(builder: ImpellerDisplayListBuilder) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderRestoreToCount(
    builder: ImpellerDisplayListBuilder; count: uint32) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderRetain(builder: ImpellerDisplayListBuilder) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderRotate(builder: ImpellerDisplayListBuilder;
                                      angle_degrees: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderSave(builder: ImpellerDisplayListBuilder) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderSaveLayer(builder: ImpellerDisplayListBuilder;
    bounds: ptr ImpellerRect; paint: ImpellerPaint;
    backdrop: ImpellerImageFilter) {.importc, header: "<impeller.h>",
                                     ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderScale(builder: ImpellerDisplayListBuilder;
                                     x_scale, y_scale: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderSetTransform(builder: ImpellerDisplayListBuilder;
    transform: ptr ImpellerMatrix) {.importc, header: "<impeller.h>",
                                     ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderTransform(builder: ImpellerDisplayListBuilder;
    transform: ptr ImpellerMatrix) {.importc, header: "<impeller.h>",
                                     ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListBuilderTranslate(builder: ImpellerDisplayListBuilder;
    x_translation, y_translation: cfloat) {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListRelease(display_list: ImpellerDisplayList) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerDisplayListRetain(display_list: ImpellerDisplayList) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerFragmentProgramNew(data: ptr ImpellerMapping;
                                data_release_user_data: pointer): ImpellerFragmentProgram {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerFragmentProgramRelease(fragment_program: ImpellerFragmentProgram) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerFragmentProgramRetain(fragment_program: ImpellerFragmentProgram) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerGetVersion(): uint32 {.importc, header: "<impeller.h>", ...raises: [],
                                    tags: [], forbids: [].}
proc ImpellerGlyphInfoGetGraphemeClusterBounds(glyph_info: ImpellerGlyphInfo;
    out_bounds: ptr ImpellerRect) {.importc, header: "<impeller.h>", ...raises: [],
                                    tags: [], forbids: [].}
proc ImpellerGlyphInfoGetGraphemeClusterCodeUnitRangeBegin(
    glyph_info: ImpellerGlyphInfo): csize_t {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerGlyphInfoGetGraphemeClusterCodeUnitRangeEnd(
    glyph_info: ImpellerGlyphInfo): csize_t {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerGlyphInfoGetTextDirection(glyph_info: ImpellerGlyphInfo): ImpellerTextDirection {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerGlyphInfoIsEllipsis(glyph_info: ImpellerGlyphInfo): bool {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerGlyphInfoRelease(glyph_info: ImpellerGlyphInfo) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerGlyphInfoRetain(glyph_info: ImpellerGlyphInfo) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterCreateBlurNew(x_sigma: cfloat; y_sigma: cfloat;
                                      tile_mode: ImpellerTileMode): ImpellerImageFilter {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterCreateComposeNew(outer: ImpellerImageFilter;
    inner: ImpellerImageFilter): ImpellerImageFilter {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterCreateDilateNew(x_radius: cfloat; y_radius: cfloat): ImpellerImageFilter {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterCreateErodeNew(x_radius: cfloat; y_radius: cfloat): ImpellerImageFilter {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterCreateFragmentProgramNew(context: ImpellerContext;
    fragment_program: ImpellerFragmentProgram; samplers: ptr ImpellerTexture;
    samplers_count: csize_t; data: ptr uint8; data_bytes_length: csize_t): ImpellerImageFilter {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterCreateMatrixNew(matrix: ptr ImpellerMatrix;
                                        sampling: ImpellerTextureSampling): ImpellerImageFilter {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterRelease(image_filter: ImpellerImageFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerImageFilterRetain(image_filter: ImpellerImageFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetAscent(metrics: ImpellerLineMetrics; line: csize_t): cdouble {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetBaseline(metrics: ImpellerLineMetrics; line: csize_t): cdouble {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetCodeUnitEndIndex(metrics: ImpellerLineMetrics;
    line: csize_t): csize_t {.importc, header: "<impeller.h>", ...raises: [],
                              tags: [], forbids: [].}
proc ImpellerLineMetricsGetCodeUnitEndIndexExcludingWhitespace(
    metrics: ImpellerLineMetrics; line: csize_t): csize_t {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetCodeUnitEndIndexIncludingNewline(
    metrics: ImpellerLineMetrics; line: csize_t): csize_t {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetCodeUnitStartIndex(metrics: ImpellerLineMetrics;
    line: csize_t): csize_t {.importc, header: "<impeller.h>", ...raises: [],
                              tags: [], forbids: [].}
proc ImpellerLineMetricsGetDescent(metrics: ImpellerLineMetrics; line: csize_t): cdouble {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetHeight(metrics: ImpellerLineMetrics; line: csize_t): cdouble {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetLeft(metrics: ImpellerLineMetrics; line: csize_t): cdouble {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsGetUnscaledAscent(metrics: ImpellerLineMetrics;
    line: csize_t): cdouble {.importc, header: "<impeller.h>", ...raises: [],
                              tags: [], forbids: [].}
proc ImpellerLineMetricsGetWidth(metrics: ImpellerLineMetrics; line: csize_t): cdouble {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsIsHardbreak(metrics: ImpellerLineMetrics; line: csize_t): bool {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsRelease(line_metrics: ImpellerLineMetrics) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerLineMetricsRetain(line_metrics: ImpellerLineMetrics) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerMaskFilterCreateBlurNew(style: ImpellerBlurStyle; sigma: cfloat): ImpellerMaskFilter {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerMaskFilterRelease(mask_filter: ImpellerMaskFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerMaskFilterRetain(mask_filter: ImpellerMaskFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintNew(): ImpellerPaint {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintRelease(paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintRetain(paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetBlendMode(paint: ImpellerPaint; mode: ImpellerBlendMode) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetColor(paint: ImpellerPaint; color: ptr ImpellerColor) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetColorFilter(paint: ImpellerPaint;
                                 color_filter: ImpellerColorFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetColorSource(paint: ImpellerPaint;
                                 color_source: ImpellerColorSource) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetDrawStyle(paint: ImpellerPaint; style: ImpellerDrawStyle) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetImageFilter(paint: ImpellerPaint;
                                 image_filter: ImpellerImageFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetMaskFilter(paint: ImpellerPaint;
                                mask_filter: ImpellerMaskFilter) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetStrokeCap(paint: ImpellerPaint; cap: ImpellerStrokeCap) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetStrokeJoin(paint: ImpellerPaint; join: ImpellerStrokeJoin) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetStrokeMiter(paint: ImpellerPaint; miter: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPaintSetStrokeWidth(paint: ImpellerPaint; width: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphBuilderAddText(paragraph_builder: ImpellerParagraphBuilder;
                                     data: ptr uint8; length: uint32) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphBuilderBuildParagraphNew(
    paragraph_builder: ImpellerParagraphBuilder; width: cfloat): ImpellerParagraph {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphBuilderNew(context: ImpellerTypographyContext): ImpellerParagraphBuilder {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphBuilderPopStyle(paragraph_builder: ImpellerParagraphBuilder) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphBuilderPushStyle(paragraph_builder: ImpellerParagraphBuilder;
                                       style: ImpellerParagraphStyle) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphBuilderRelease(paragraph_builder: ImpellerParagraphBuilder) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphBuilderRetain(paragraph_builder: ImpellerParagraphBuilder) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphCreateGlyphInfoAtCodeUnitIndexNew(
    paragraph: ImpellerParagraph; code_unit_index: csize_t): ImpellerGlyphInfo {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphCreateGlyphInfoAtParagraphCoordinatesNew(
    paragraph: ImpellerParagraph; x, y: cdouble): ImpellerGlyphInfo {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetAlphabeticBaseline(paragraph: ImpellerParagraph): cfloat {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetHeight(paragraph: ImpellerParagraph): cfloat {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetIdeographicBaseline(paragraph: ImpellerParagraph): cfloat {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetLineCount(paragraph: ImpellerParagraph): uint32 {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetLineMetrics(paragraph: ImpellerParagraph): ImpellerLineMetrics {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetLongestLineWidth(paragraph: ImpellerParagraph): cfloat {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetMaxIntrinsicWidth(paragraph: ImpellerParagraph): cfloat {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetMaxWidth(paragraph: ImpellerParagraph): cfloat {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetMinIntrinsicWidth(paragraph: ImpellerParagraph): cfloat {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphGetWordBoundary(paragraph: ImpellerParagraph;
                                      code_unit_index: csize_t;
                                      out_range: ptr ImpellerRange) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphRelease(paragraph: ImpellerParagraph) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphRetain(paragraph: ImpellerParagraph) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleNew(): ImpellerParagraphStyle {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleRelease(paragraph_style: ImpellerParagraphStyle) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleRetain(paragraph_style: ImpellerParagraphStyle) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetBackground(
    paragraph_style: ImpellerParagraphStyle; paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetEllipsis(paragraph_style: ImpellerParagraphStyle;
                                       ellipsis: cstring) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetFontFamily(
    paragraph_style: ImpellerParagraphStyle; family_name: cstring) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetFontSize(paragraph_style: ImpellerParagraphStyle;
                                       size: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetFontStyle(paragraph_style: ImpellerParagraphStyle;
                                        style: ImpellerFontStyle) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetFontWeight(
    paragraph_style: ImpellerParagraphStyle; weight: ImpellerFontWeight) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetForeground(
    paragraph_style: ImpellerParagraphStyle; paint: ImpellerPaint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetHeight(paragraph_style: ImpellerParagraphStyle;
                                     height: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetLocale(paragraph_style: ImpellerParagraphStyle;
                                     locale: cstring) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetMaxLines(paragraph_style: ImpellerParagraphStyle;
                                       max_lines: uint32) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetTextAlignment(
    paragraph_style: ImpellerParagraphStyle; align: ImpellerTextAlignment) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetTextDecoration(
    paragraph_style: ImpellerParagraphStyle;
    decoration: ptr ImpellerTextDecoration) {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerParagraphStyleSetTextDirection(
    paragraph_style: ImpellerParagraphStyle; direction: ImpellerTextDirection) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderAddArc(builder: ImpellerPathBuilder;
                               oval_bounds: ptr ImpellerRect;
                               start_angle_degrees: cfloat;
                               end_angle_degrees: cfloat) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderAddOval(builder: ImpellerPathBuilder;
                                oval_bounds: ptr ImpellerRect) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderAddRect(builder: ImpellerPathBuilder;
                                rect: ptr ImpellerRect) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderAddRoundedRect(builder: ImpellerPathBuilder;
                                       rect: ptr ImpellerRect; rounding_radii: ptr ImpellerRoundingRadii) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderClose(builder: ImpellerPathBuilder) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderCopyPathNew(builder: ImpellerPathBuilder;
                                    fill: ImpellerFillType): ImpellerPath {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderCubicCurveTo(builder: ImpellerPathBuilder;
                                     control_point_1: ptr ImpellerPoint;
                                     control_point_2: ptr ImpellerPoint;
                                     end_point: ptr ImpellerPoint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderLineTo(builder: ImpellerPathBuilder;
                               location: ptr ImpellerPoint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderMoveTo(builder: ImpellerPathBuilder;
                               location: ptr ImpellerPoint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderNew(): ImpellerPathBuilder {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderQuadraticCurveTo(builder: ImpellerPathBuilder;
    control_point: ptr ImpellerPoint; end_point: ptr ImpellerPoint) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderRelease(builder: ImpellerPathBuilder) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderRetain(builder: ImpellerPathBuilder) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathBuilderTakePathNew(builder: ImpellerPathBuilder;
                                    fill: ImpellerFillType): ImpellerPath {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathGetBounds(path: ImpellerPath; out_bounds: ptr ImpellerRect) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerPathRelease(path: ImpellerPath) {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerPathRetain(path: ImpellerPath) {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerSurfaceCreateWrappedFBONew(context: ImpellerContext; fbo: uint64;
                                        format: ImpellerPixelFormat;
                                        size: ptr ImpellerISize): ImpellerSurface {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerSurfaceCreateWrappedMetalDrawableNew(context: ImpellerContext;
    metal_drawable: pointer): ImpellerSurface {.importc, header: "<impeller.h>",
    ...raises: [], tags: [], forbids: [].}
proc ImpellerSurfaceDrawDisplayList(surface: ImpellerSurface;
                                    display_list: ImpellerDisplayList): bool {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerSurfacePresent(surface: ImpellerSurface): bool {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerSurfaceRelease(surface: ImpellerSurface) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerSurfaceRetain(surface: ImpellerSurface) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTextureCreateWithContentsNew(context: ImpellerContext;
    descriptor: ptr ImpellerTextureDescriptor; contents: ptr ImpellerMapping;
    contents_on_release_user_data: pointer): ImpellerTexture {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTextureCreateWithOpenGLTextureHandleNew(context: ImpellerContext;
    descriptor: ptr ImpellerTextureDescriptor; handle: uint64): ImpellerTexture {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTextureGetOpenGLHandle(texture: ImpellerTexture): uint64 {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTextureRelease(texture: ImpellerTexture) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTextureRetain(texture: ImpellerTexture) {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTypographyContextNew(): ImpellerTypographyContext {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTypographyContextRegisterFont(context: ImpellerTypographyContext;
    contents: ptr ImpellerMapping; contents_on_release_user_data: pointer;
    family_name_alias: cstring): bool {.importc, header: "<impeller.h>",
                                        ...raises: [], tags: [], forbids: [].}
proc ImpellerTypographyContextRelease(context: ImpellerTypographyContext) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerTypographyContextRetain(context: ImpellerTypographyContext) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerVulkanSwapchainAcquireNextSurfaceNew(
    swapchain: ImpellerVulkanSwapchain): ImpellerSurface {.importc,
    header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerVulkanSwapchainCreateNew(context: ImpellerContext;
                                      vulkan_surface_khr: pointer): ImpellerVulkanSwapchain {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerVulkanSwapchainRelease(swapchain: ImpellerVulkanSwapchain) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}
proc ImpellerVulkanSwapchainRetain(swapchain: ImpellerVulkanSwapchain) {.
    importc, header: "<impeller.h>", ...raises: [], tags: [], forbids: [].}