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-sys
v0.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