105个版本 (10个破坏性版本)
新版本 0.18.0 | 2024年8月16日 |
---|---|
0.17.0 | 2024年7月8日 |
0.15.0-alpha.5 | 2024年3月29日 |
0.12.0-alpha.2 | 2023年12月26日 |
0.8.0 | 2023年7月27日 |
#105 in 图像
每月48,393次下载
用于 45 个crate(直接使用33个)
2.5MB
54K SLoC
re_types
是 rerun
crate系列的一部分。
标准的Rerun数据类型、组件类型和架构类型。
该crate包含语言无关的定义(flatbuffers IDL)以及生成的代码。
使用 just codegen
生成的代码。
lib.rs
:
标准的Rerun数据类型、组件类型和架构类型。
该crate包含Rerun类型(flatbuffers)的IDL定义以及使用 re_types_builder
生成的代码。
所有内置的架构、组件、数据类型和空间视图定义都可以在其各自的顶层模块中找到。
贡献
组织
definitions/
包含所有Rerun类型(数据、组件、架构)的IDL定义。src/
包含为Rust生成的代码。rerun_py/rerun/rerun2/
(此工作区的根目录)包含为Python生成的代码。
尽管这个包中的大部分代码都是自动生成的,但也有一些手动扩展散布在其中:寻找以_ext.rs
、_ext.py
或_ext.cpp
结尾的文件(也参见本文件的“扩展”部分)。
构建缓存
更新代码生成器本身的源代码(例如re_types_builder
)或任何.fbs文件,应该在下次构建re_types
时重新触发代码生成过程。手动扩展文件将保持不变。
缓存由存储在store_hash.txt
中的版本哈希来控制。如果您怀疑缓存机制有问题,并且当应该考虑您的更改时,您的更改没有被考虑在内,请尝试删除source_hash.txt
。如果这解决了问题,那么您已经找到了一个bug。
如何:添加新的数据类型/组件/架构
在适当的位置创建适当的.fbs文件,并确保以某种方式(最可能是间接方式)被archetypes.fbs
包含,这是代码生成的入口点。通常,最简单的方法是将您的新类型添加到集中式的清单之一中,例如,对于新的组件,将其包含在components.fbs
中。
您的文件应该会被代码生成器自动获取。一旦生成您新组件的代码,实现您需要的任何扩展,并确保测试您添加的任何自定义构造函数。
如何:删除现有的数据类型/组件/架构
只需删除相关的类型,并重新构建re_types
以触发代码生成即可。
请注意:如果您删除整个定义文件,重新运行代码生成器不会删除相关的生成文件,您需要自己删除。
扩展
Rust
可以通过添加具有_ext.rs
前缀的兄弟文件来手动扩展生成的Rust代码。例如,要扩展vec2d.rs
,创建一个vec2d_ext.rs
。
触发代码生成(例如,通过删除source_hash.txt
)以自动生成正确的mod
子句。
开始的最简单方法是查看任何现有的示例。
Python
可以通过添加具有_ext.py
前缀的兄弟文件来手动扩展生成的Python代码。例如,要扩展vec2d.py
,创建一个vec2d_ext.py
。
此兄弟文件需要实现一个扩展类,该类与自动生成的类混合在一起。开始的最简单方法是查看任何现有的示例。
C++
可以通过添加具有_ext.cpp
后缀的兄弟文件来手动扩展生成的C++代码。例如,要扩展vec2d.cpp
,创建一个vec2d_ext.cpp
。
此兄弟文件作为rerun_cpp
包的一部分编译。
在扩展中使用的任何包含指令都会自动添加到生成的头文件中,除了生成的头文件本身。
为了扩展头文件中生成的类型声明,您可以通过以<CODEGEN_COPY_TO_HEADER>
开头并以</CODEGEN_COPY_TO_HEADER>
结尾的单个代码块来指定您想要注入到类型声明中的代码块。请注意,确保cpp文件是有效的C++代码是你的责任 - 代码生成器和构建将不会为您调整扩展文件!
语言特定的文档
您可以在任何文档注释行前加上前缀 \{tag}
,其中 {tag}
是以下之一:py
、cpp
、rs
,并且这部分文档将仅存在于为该特定语言生成的文件中。
示例
您可以将示例添加到 docs/snippets/all
,然后使用 \example
标签将其源代码包含在文档中。该示例也将包含在为该类型生成的文档的示例列表中。
\example
标签支持以下参数
title
:示例的简短描述,将在源代码之前显示image
:图片的链接,对使用scripts/upload_image.py
上传到static.rerun.io
的图片进行特殊处理!api
:如果存在,示例将不会包含在生成的代码中嵌入的注释中
\example example_file_name title="Some title" image="https://link.to/any_image.png"
如果 URL 不是以 https://static.rerun.io/
开头,则它将作为 src
属性在 img
HTML 标签中使用,不进行任何更改
<img src="https://link.to/any_image.png">
否则,URL 被视为 rerun 截图,它期望以下链接格式
https://static.rerun.io/{name}/{hash}/{max_width}.{ext}
这些参数将用于生成图像堆栈
name
:上传截图的原始文件名,不包括扩展名hash
:原始截图的内容哈希max_width
:此截图可用的最大宽度- 如果该值不是以
w
结尾的有效整数(例如1200w
),则图像堆栈将仅包括full
大小 - 如果该值 是 有效整数,则将省略大于该值的尺寸
- 如果该值不是以
ext
:图像的文件扩展名(png
、jpeg
等)
给定一个类似 https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/1024w.png
的 URL,文档代码生成器将生成以下图像堆栈
<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/1024w.png">
<img src="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/full.png" alt="screenshot of {title} example">
</picture>
堆栈中省略了 1200px
尺寸。
如何与 scripts/upload_image.py
一起使用
运行 scripts/upload_image.py {file}
将生成图像堆栈。您需要获取该堆栈中可用的 最大宽度,并将其用作 \example
中的 image=
的值。
例如,如果脚本生成的图像堆栈是
<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/1024w.png">
<img src="https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/full.png">
</picture>
那么您应该使用的 URL 是 https://static.rerun.io/my_screenshot/9066060e59ee9d2d7d98b214b8db0b8f2e8ab4b8/1024w.png
。
它之所以这样工作,是因为upload_image.py
不会放大截图,它只会缩小。我们需要知道我们可以使用的最大宽度是多少,因为我们不能总是提供所有宽度。如果当前使用的max-width
源加载失败,它将显示空白图像图标。如果在<picture>
中某个特定的max-width
源加载失败,则无法提供回退。如果某个特定的max-width
源加载失败,浏览器不会自动尝试加载其他源!
功能标志
依赖关系
~17-30MB
~472K SLoC