2 个版本
| 0.1.1 | 2021 年 9 月 13 日 |
|---|---|
| 0.1.0 | 2021 年 9 月 13 日 |
#5 in #pic
用于 pikt
285KB
7K SLoC
Pikchr-sys
Pikchr 为 Rust 编程语言提供的绑定。
高级 API
这个包提供了对原始低级 C API 的绑定。要使用 Pikchr 的更高级、更安全的 API,请参见 pikt。
版本支持
pikchr-sysv0.1:pikchr检出 d9e1502ed74c6aabcb055cf7983c897a28cbe09c。
许可证
pikchr-sys 采用 BSD 无条款许可证。
它捆绑了来自 Pikchr 的编译后的 C89 源代码(pikchr.c)和头文件(pikchr.h),Pikchr 同样采用 BSD 无条款许可证。
贡献
除非您明确说明,否则您提交给 pikchr-sys 的任何贡献都将按照上述许可证授予,不附加任何额外条款或条件。
lib.rs:
为 pikchr.c 提供原始绑定。
使用 pikchr 将需要手动释放缓冲区。引用 C 源代码
此文件实现了一个 C 语言子程序,它接受 PIKCHR 语言文本的字符串并生成一个 SVG 输出的第二个字符串,该输出渲染由输入定义的绘图。从 malloc() 获得存储返回字符串的空间,应由调用者释放。如果发生内存分配错误,可能会返回 NULL。
pikchr 参数定义如下
zText: 输入 PIKCHR 标记。以 null 结尾。zClass: 要添加到 SVGclass属性的值。它可以 NULL。mFlags: 控制渲染行为的标志。pnWidth: SVGwidth属性的值。它可以 NULL。pnHeight: SVGheight属性的值。它可以 NULL。
示例
let input = "box \"example\"";
let mut width: c_int = 0;
let mut height: c_int = 0;
let input = CString::new(input)?;
let res: *mut c_char = unsafe {
pikchr(
input.as_ptr() as *const c_char,
std::ptr::null(),
PIKCHR_PLAINTEXT_ERRORS,
&mut width as *mut c_int,
&mut height as *mut c_int,
)
};
let cstr = unsafe { CStr::from_ptr(res) };
let output = String::from_utf8_lossy(cstr.to_bytes()).into_owned();
unsafe { free(res as *mut c_void) };
错误
如果发生错误,宽度将变为 -1,缓冲区将包含错误信息。
无运行时依赖
~0–2MB
~37K SLoC