rr: add rect_xyxy

develop
Kinch 2023-09-27 11:46:17 +02:00
parent 9df43797a1
commit 9ba4dee953
5 changed files with 61 additions and 10 deletions

33
Cargo.lock generated
View File

@ -1551,6 +1551,15 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "erased-serde"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c"
dependencies = [
"serde",
]
[[package]]
name = "err-derive"
version = "0.3.1"
@ -2727,12 +2736,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c3a7a7ff4481ec91b951a733390211a8ace1caba57266ccb5f4d4966704e560"
dependencies = [
"bstr 1.6.2",
"erased-serde",
"mlua-sys",
"mlua_derive",
"num-traits",
"once_cell",
"rustc-hash",
"serde",
"serde-value",
]
[[package]]
@ -3098,6 +3109,15 @@ dependencies = [
"redox_syscall 0.3.5",
]
[[package]]
name = "ordered-float"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
dependencies = [
"num-traits",
]
[[package]]
name = "ordered-float"
version = "3.9.1"
@ -3799,7 +3819,7 @@ dependencies = [
"macaw",
"never",
"notify",
"ordered-float",
"ordered-float 3.9.1",
"parking_lot",
"pathdiff",
"re_build_tools",
@ -4459,6 +4479,7 @@ dependencies = [
"image",
"mlua",
"rerun",
"serde_json",
]
[[package]]
@ -4712,6 +4733,16 @@ dependencies = [
"serde_derive",
]
[[package]]
name = "serde-value"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
dependencies = [
"ordered-float 2.10.0",
"serde",
]
[[package]]
name = "serde_bytes"
version = "0.11.12"

View File

@ -6,4 +6,4 @@ members = [
]
[workspace.dependencies]
mlua = { version = "0.9.1", features = ["lua54", "module", "serde"] }
mlua = { version = "0.9.1", features = ["lua54", "module", "serde", "serialize"] }

View File

@ -1,5 +1,10 @@
local rr = require("rerun_lua")
local record = rr.recording("example")
--local record = rr.recording("example")
--record:image("54-0.png", "/Users/tbr/Desktop/00054-0.png")
record:image("54-0.png", "/Users/tbr/Desktop/00054-0.png")
function bbox(boundings)
end
local json = rr.json("/Users/tbr/Desktop/ms_form.json")

View File

@ -11,3 +11,4 @@ crate-type = ["cdylib"]
image = { version = "0.24.7", features = ["png", "jpeg", "tiff"] }
mlua = { workspace = true }
rerun = "0.8.2"
serde_json = "1.0.107"

View File

@ -1,9 +1,20 @@
use std::fmt::format;
use std::fs::File;
use std::io::BufReader;
use std::path::PathBuf;
use mlua::AnyUserData;
use mlua::prelude::*;
use rerun::{MsgSender, RecordingStream, RecordingStreamBuilder};
use rerun::components::Tensor;
use rerun::components::{Rect2D, Tensor, Vec4D};
fn json(lua: &Lua, path: String) -> LuaResult<LuaValue> {
let file = File::open(path.as_str())
.map_err(|error| LuaError::RuntimeError(format!("could not open json path: {path}. Error: {error}")))?;
let reader = BufReader::new(file);
let json_value: serde_json::Value = serde_json::from_reader(reader)
.map_err(|error| LuaError::RuntimeError(format!("could not parse json at: {path}. Error: {error}")))?;
lua.to_value(&json_value)
}
fn recording(lua: &Lua, name: String) -> LuaResult<AnyUserData> {
let stream = RecordingStreamBuilder::new(name)
@ -12,13 +23,14 @@ fn recording(lua: &Lua, name: String) -> LuaResult<AnyUserData> {
lua.create_any_userdata(stream)
}
fn rect_xyxy(lua: &Lua, points: [f32;4]) -> LuaResult<AnyUserData> {
let rect = Rect2D::XYXY(Vec4D(points).into());
lua.create_any_userdata(rect)
}
fn register_bindings(lua: &Lua) -> LuaResult<()> {
lua.register_userdata_type::<RecordingStream>(|reg|{
reg.add_method("image", |lua, this, (entity_path, image_path): (String,String)| {
// let image = ImageReader::open(image_path.as_str())
// .map_err(|error| LuaError::RuntimeError(format!("Could not open image file: {}. Error: {}", image_path, error)))?
// .decode()
// .map_err(|error| LuaError::RuntimeError(format!("Could not read image file: {}. Error: {}", image_path, error)))?;
let image_tensor = Tensor::from_image_file(PathBuf::from(image_path.as_str()).as_path())
.map_err(|error| LuaError::RuntimeError(format!("Could not read image file {image_path}. Error: {error}")))?;
MsgSender::new(entity_path)
@ -38,5 +50,7 @@ fn rerun_lua(lua: &Lua) -> LuaResult<LuaTable> {
register_bindings(lua)?;
let exports = lua.create_table()?;
exports.set("recording", lua.create_function(recording)?)?;
exports.set("json", lua.create_function(json)?)?;
exports.set("rect_xyxy", lua.create_function(rect_xyxy)?)?;
Ok(exports)
}