mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-16 23:08:05 +08:00
Scaffolding merge for the reconcile; the final series to master is authored fresh. Rank plumbing resolves to our axis-IR model, the node macro and the LaneSource render walk stay ours, master's vector restructure and gradient vocabulary are adopted, and the paint and appearance adoption is deliberately deferred behind our fill and stroke markers.
37 lines
1.4 KiB
Rust
37 lines
1.4 KiB
Rust
use core_types::ExtractAll;
|
|
use core_types::runtime::SourceFuture;
|
|
use core_types::{Ctx, ops::Convert, ops::ConvertAsync, transform::Footprint};
|
|
use std::marker::PhantomData;
|
|
|
|
/// Passes-through the input value without changing it. This is useful for rerouting wires for organization purposes.
|
|
#[node_macro::node(category("General"), skip_impl)]
|
|
fn passthrough<T: Send>(_: impl Ctx, content: T) -> T {
|
|
content
|
|
}
|
|
|
|
/// Shifts a whole value onto a connector's type through the std `Into` trait, serving the whole-`List` erasure onto `ListDyn` under the input adapter identifier.
|
|
#[node_macro::node(category(""), skip_impl)]
|
|
fn into<T: Send + Into<O>, O: Send>(_: impl Ctx, value: T, #[data] _out_ty: PhantomData<O>) -> O {
|
|
value.into()
|
|
}
|
|
|
|
#[node_macro::node(category(""), skip_impl)]
|
|
fn convert<T: Send + Convert<O, C>, O: Send, C: Send>(ctx: impl Ctx + ExtractAll, value: T, converter: C, #[data] _out_ty: PhantomData<O>) -> O {
|
|
value.convert(*ctx.try_footprint().unwrap_or(&Footprint::DEFAULT), converter)
|
|
}
|
|
|
|
#[node_macro::node(category(""), skip_impl)]
|
|
fn convert_async<T: Send + ConvertAsync<O, C>, O: Send + 'static, C: Send>(ctx: impl Ctx + ExtractAll, value: T, converter: C, #[data] _out_ty: PhantomData<O>) -> SourceFuture<O> {
|
|
value.convert(*ctx.try_footprint().unwrap_or(&Footprint::DEFAULT), converter)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
use super::*;
|
|
|
|
#[test]
|
|
pub fn passthrough_node() {
|
|
assert_eq!(passthrough(&(), &4), &4);
|
|
}
|
|
}
|