1个不稳定版本
0.1.0 | 2020年4月29日 |
---|
在解析器实现中排名第1650
每月下载量1,024次
在nannou_laser中使用
31KB
702 行
ilda-idtf
ILDA图像数据传输格式规范(版本011,2014-11-16)的完整实现。
此库提供了高效读取和写入IDTF。读取器实现使用零拷贝方法,将结构直接映射到读取的内存。
用法
可以使用SectionReader类型从任何实现std::io::Read
的类型中读取IDTF部分。这允许从任何字节源(例如文件、内存、套接字等)高效地读取格式。
let mut reader = ilda_idtf::SectionReader::new(reader);
提供了open函数,方便打开给定路径文件的缓冲IDTF SectionReader。
let mut reader = ilda_idtf::open(path).unwrap();
SectionReader::read_next方法允许遍历包含的各个部分。
while let Ok(Some(section)) = reader.read_next() {
// ...
}
每个生成的Section提供对Header和内部reader
的访问。确切的reader
类型通过头文件中指定的Format来确定。用户必须对部分的reader
字段进行模式匹配,以获取正确子部分读取器类型的实例。然后,用户可以读取相关子部分数据。
match section.reader {
ilda_idtf::SubsectionReaderKind::Coords3dIndexedColor(mut r) => {
while let Some(point) = r.read_next().unwrap() {
// ...
}
}
ilda_idtf::SubsectionReaderKind::Coords2dIndexedColor(mut r) => {
while let Some(point) = r.read_next().unwrap() {
// ...
}
}
ilda_idtf::SubsectionReaderKind::ColorPalette(mut r) => {
while let Some(palette) = r.read_next().unwrap() {
// ...
}
}
ilda_idtf::SubsectionReaderKind::Coords3dTrueColor(mut r) => {
while let Some(point) = r.read_next().unwrap() {
// ...
}
}
ilda_idtf::SubsectionReaderKind::Coords2dTrueColor(mut r) => {
while let Some(point) = r.read_next().unwrap() {
// ...
}
}
}
为了解释索引颜色数据格式,必须使用调色板。调色板是一个有序的RGB颜色列表。虽然调色板应该由前面的Section
指定,但这并不总是如此。ILDA IDTF规范推荐使用默认调色板。此调色板通过DEFAULT_PALETTE常量提供。
许可证
根据以下许可证之一授权
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您提交的任何有意包含在作品中的贡献都将根据上述方式双授权,不附加任何额外的条款或条件。
测试文件
test_files
目录中的文件是从以下网站获取的
http://www.laserfx.com/Backstage.LaserFX.com/Archives/DownloadIndex.html
这些文件不包括在上述许可证下。每个test_files/
子目录是由不同的激光艺术家提供的。请参阅每个目录中的ReadMe.txt
,以获取有关其来源和使用条件的更多信息。
依赖关系
~2.5MB
~51K SLoC