From 1caad35b46a9b8ef16bb55fa171fd6dafbbf70e8 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 21 Jun 2019 11:35:18 -0700 Subject: [PATCH] Use `cbindgen` instead of hand-writing a header file --- c/cbindgen.toml | 8 +- c/include/pathfinder/pathfinder.h | 222 ----------------------------- examples/c_canvas_minimal/Makefile | 2 +- 3 files changed, 8 insertions(+), 224 deletions(-) delete mode 100644 c/include/pathfinder/pathfinder.h diff --git a/c/cbindgen.toml b/c/cbindgen.toml index d5f73f3a..4d096e5d 100644 --- a/c/cbindgen.toml +++ b/c/cbindgen.toml @@ -1,5 +1,10 @@ language = "C" -header = "/* Generated code. Do not edit; instead run `cargo build` in `pathfinder_c`. */" +header = """\ +/* Generated code. Do not edit; instead run `cargo build` in `pathfinder_c`. */ + +extern \"C\" { +""" +trailer = "}" include_guard = "PF_PATHFINDER_H" include_version = true @@ -7,6 +12,7 @@ include_version = true parse_deps = true include = [ "pathfinder_canvas", + "pathfinder_content", "pathfinder_geometry", "pathfinder_gl", "pathfinder_renderer", diff --git a/c/include/pathfinder/pathfinder.h b/c/include/pathfinder/pathfinder.h deleted file mode 100644 index 7ded8d08..00000000 --- a/c/include/pathfinder/pathfinder.h +++ /dev/null @@ -1,222 +0,0 @@ -// pathfinder/c/include/pathfinder/pathfinder.h -// -// Copyright © 2019 The Pathfinder Project Developers. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -#ifndef PF_PATHFINDER_H -#define PF_PATHFINDER_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// Macros - -// `canvas` - -#define PF_LINE_CAP_BUTT 0 -#define PF_LINE_CAP_SQUARE 1 -#define PF_LINE_CAP_ROUND 2 - -#define PF_LINE_JOIN_MITER 0 -#define PF_LINE_JOIN_BEVEL 1 -#define PF_LINE_JOIN_ROUND 2 - -// `geometry` - -#define PF_ARC_DIRECTION_CW 0 -#define PF_ARC_DIRECTION_CCW 1 - -// `gl` - -#define PF_GL_VERSION_GL3 0 -#define PF_GL_VERSION_GLES3 1 - -// `renderer` - -#define PF_RENDERER_OPTIONS_FLAGS_HAS_BACKGROUND_COLOR 0x1 - -// Types - -// `canvas` - -struct PFCanvas; -typedef struct PFCanvas *PFCanvasRef; -struct PFPath; -typedef struct PFPath *PFPathRef; -struct PFCanvasFontContext; -typedef struct PFCanvasFontContext *PFCanvasFontContextRef; -struct PFFillStyle; -typedef struct PFFillStyle *PFFillStyleRef; -typedef uint8_t PFLineCap; -typedef uint8_t PFLineJoin; -typedef uint8_t PFArcDirection; -struct PFTextMetrics { - float width; -}; -typedef struct PFTextMetrics PFTextMetrics; - -// `geometry` - -struct PFColorF { - float r, g, b, a; -}; -typedef struct PFColorF PFColorF; -struct PFColorU { - uint8_t r, g, b, a; -}; -typedef struct PFColorU PFColorU; -struct PFVector2F { - float x, y; -}; -typedef struct PFVector2F PFVector2F; -struct PFVector2I { - int32_t x, y; -}; -typedef struct PFVector2I PFVector2I; -struct PFRectF { - PFVector2F origin, lower_right; -}; -typedef struct PFRectF PFRectF; -struct PFRectI { - PFVector2I origin, lower_right; -}; -typedef struct PFRectI PFRectI; - -// `gl` - -struct PFGLDevice; -typedef struct PFGLDevice *PFGLDeviceRef; -struct PFGLDestFramebuffer; -typedef struct PFGLDestFramebuffer *PFGLDestFramebufferRef; -typedef const void *(*PFGLFunctionLoader)(const char *data, void *userdata); -struct PFGLRenderer; -typedef struct PFGLRenderer *PFGLRendererRef; -typedef uint32_t PFGLVersion; - -// `gpu` - -struct PFResourceLoader; -typedef struct PFResourceLoader *PFResourceLoaderRef; - -// `renderer` - -typedef uint8_t PFRendererOptionsFlags; -struct PFRendererOptions { - PFColorF background_color; - PFRendererOptionsFlags flags; -}; -struct PFBuildOptions { - uint32_t placeholder; -}; -typedef struct PFRendererOptions PFRendererOptions; -typedef struct PFBuildOptions PFBuildOptions; -struct PFScene; -typedef struct PFScene *PFSceneRef; -struct PFSceneProxy; -typedef struct PFSceneProxy *PFSceneProxyRef; - -// Functions - -// `canvas` - -PFCanvasRef PFCanvasCreate(PFCanvasFontContextRef font_context, const PFVector2F *size); -void PFCanvasDestroy(PFCanvasRef canvas); -PFCanvasFontContextRef PFCanvasFontContextCreateWithSystemSource(); -void PFCanvasFontContextDestroy(PFCanvasFontContextRef font_context); -PFCanvasFontContextRef PFCanvasFontContextClone(PFCanvasFontContextRef font_context); -PFSceneRef PFCanvasCreateScene(PFCanvasRef canvas); -void PFCanvasFillRect(PFCanvasRef canvas, const PFRectF *rect); -void PFCanvasStrokeRect(PFCanvasRef canvas, const PFRectF *rect); -void PFCanvasFillText(PFCanvasRef canvas, - const char *string, - size_t string_len, - const PFVector2F *position); -void PFCanvasStrokeText(PFCanvasRef canvas, - const char *string, - size_t string_len, - const PFVector2F *position); -void PFCanvasMeasureText(PFCanvasRef canvas, - const char *string, - size_t string_len, - PFTextMetrics *out_text_metrics); -void PFCanvasSetLineWidth(PFCanvasRef canvas, float new_line_width); -void PFCanvasSetLineCap(PFCanvasRef canvas, PFLineCap new_line_cap); -void PFCanvasSetLineJoin(PFCanvasRef canvas, PFLineJoin new_line_join); -void PFCanvasSetMiterLimit(PFCanvasRef canvas, float new_miter_limit); -void PFCanvasSetLineDash(PFCanvasRef canvas, - const float *new_line_dashes, - size_t new_line_dash_count); -void PFCanvasSetLineDashOffset(PFCanvasRef canvas, float offset); -void PFCanvasSetFillStyle(PFCanvasRef canvas, PFFillStyleRef fill_style); -void PFCanvasSetStrokeStyle(PFCanvasRef canvas, PFFillStyleRef stroke_style); -void PFCanvasFillPath(PFCanvasRef canvas, PFPathRef path); -void PFCanvasStrokePath(PFCanvasRef canvas, PFPathRef path); -PFPathRef PFPathCreate(); -void PFPathDestroy(PFPathRef path); -PFPathRef PFPathClone(PFPathRef path); -void PFPathMoveTo(PFPathRef path, const PFVector2F *to); -void PFPathLineTo(PFPathRef path, const PFVector2F *to); -void PFPathQuadraticCurveTo(PFPathRef path, const PFVector2F *ctrl, const PFVector2F *to); -void PFPathBezierCurveTo(PFPathRef path, - const PFVector2F *ctrl0, - const PFVector2F *ctrl1, - const PFVector2F *to); -void PFPathArc(PFPathRef path, - const PFVector2F *center, - float radius, - float start_angle, - float end_angle, - PFArcDirection direction); -void PFPathArcTo(PFPathRef path, const PFVector2F *ctrl, const PFVector2F *to, float radius); -void PFPathRect(PFPathRef path, const PFRectF *rect); -void PFPathEllipse(PFPathRef path, - const PFVector2F *center, - const PFVector2F *axes, - float rotation, - float start_angle, - float end_angle); -void PFPathClosePath(PFPathRef path); -PFFillStyleRef PFFillStyleCreateColor(PFColorU color); -void PFFillStyleDestroy(PFFillStyleRef fill_style); - -// `gl` - -PFGLDestFramebufferRef PFGLDestFramebufferCreateFullWindow(const PFVector2I *window_size); -void PFGLDestFramebufferDestroy(PFGLDestFramebufferRef dest_framebuffer); -PFGLDeviceRef PFGLDeviceCreate(PFGLVersion version, uint32_t default_framebuffer); -void PFGLDeviceDestroy(PFGLDeviceRef device); -void PFGLLoadWith(PFGLFunctionLoader loader, void *userdata); -PFGLRendererRef PFGLRendererCreate(PFGLDeviceRef device, - PFResourceLoaderRef resources, - PFGLDestFramebufferRef dest_framebuffer, - const PFRendererOptions *options); -void PFGLRendererDestroy(PFGLRendererRef renderer); -/// Returns a borrowed reference to the device. -PFGLDeviceRef PFGLRendererGetDevice(PFGLRendererRef renderer); -void PFSceneProxyBuildAndRenderGL(PFSceneProxyRef scene_proxy, - PFGLRendererRef renderer, - const PFBuildOptions *build_options); - -// `gpu` - -PFResourceLoaderRef PFFilesystemResourceLoaderLocate(); -void PFResourceLoaderDestroy(PFResourceLoaderRef loader); - -// `renderer` - -PFSceneProxyRef PFSceneProxyCreateFromSceneAndRayonExecutor(PFSceneRef scene); -void PFSceneProxyDestroy(PFSceneProxyRef scene_proxy); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/examples/c_canvas_minimal/Makefile b/examples/c_canvas_minimal/Makefile index 35f4b9ef..14563401 100644 --- a/examples/c_canvas_minimal/Makefile +++ b/examples/c_canvas_minimal/Makefile @@ -5,7 +5,7 @@ RUST_TARGET_DIR?=../../target RUST_SRC_DIR?=../../c RUSTFLAGS?=-C target-cpu=native -CFLAGS?=-Wall -g -I../../c/include +CFLAGS?=-Wall -g -I../../c/build/include LIBS?=-lpathfinder_c MKDIR?=mkdir -p RM?=rm