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
ImpellerColorFilter = pointer
ImpellerColorMatrix {.byCopy.} = object m*: array[20, cfloat]
ImpellerColorSource = pointer
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
ImpellerDisplayList = pointer
ImpellerDisplayListBuilder = pointer
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
ImpellerFragmentProgram = pointer
ImpellerGlyphInfo = pointer
ImpellerImageFilter = pointer
ImpellerISize {.byCopy.} = object width*, height*: int64
ImpellerLineMetrics = pointer
ImpellerMapping {.byCopy.} = object data*: ptr uint8 length*: uint64 on_release*: ImpellerCallback
ImpellerMaskFilter = pointer
ImpellerMatrix {.byCopy.} = object m*: array[16, cfloat]
ImpellerPaint = pointer
ImpellerParagraph = pointer
ImpellerParagraphBuilder = pointer
ImpellerParagraphStyle = pointer
ImpellerPath = pointer
ImpellerPathBuilder = 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
ImpellerTypographyContext = pointer
ImpellerVulkanProcAddressCallback = proc (vulkan_instance: pointer; vulkan_proc_name: cstring; user_data: pointer): pointer {.cdecl.}
ImpellerVulkanSwapchain = pointer
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: [].}