Skip to content

Commit 9da8e64

Browse files
committed
Resolve into min, and hard_min
1 parent 20305b4 commit 9da8e64

File tree

6 files changed

+27
-10
lines changed

6 files changed

+27
-10
lines changed

node-graph/gcore/src/raster/adjustments.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1399,7 +1399,7 @@ async fn posterize<T: Adjust<Color>>(
13991399
)]
14001400
mut input: T,
14011401
#[default(4)]
1402-
#[min(2.)]
1402+
#[hard_min(2.)]
14031403
levels: u32,
14041404
) -> T {
14051405
input.adjust(|color| {

node-graph/gcore/src/vector/generator_nodes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ fn regular_polygon(
7474
_: impl Ctx,
7575
_primary: (),
7676
#[default(6)]
77-
#[min(3.)]
77+
#[hard_min(3.)]
7878
sides: u32,
7979
#[default(50)] radius: f64,
8080
) -> VectorDataTable {
@@ -88,7 +88,7 @@ fn star(
8888
_: impl Ctx,
8989
_primary: (),
9090
#[default(5)]
91-
#[min(2.)]
91+
#[hard_min(2.)]
9292
sides: u32,
9393
#[default(50)] radius: f64,
9494
#[default(25)] inner_radius: f64,

node-graph/gcore/src/vector/vector_nodes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ async fn poisson_disk_points(
625625
_: impl Ctx,
626626
vector_data: VectorDataTable,
627627
#[default(10.)]
628-
#[min(0.01)]
628+
#[hard_min(0.01)]
629629
separation_disk_diameter: f64,
630630
seed: SeedValue,
631631
) -> VectorDataTable {
@@ -785,7 +785,7 @@ async fn morph(
785785
#[range((0., 1.))]
786786
#[default(0.5)]
787787
time: Fraction,
788-
#[min(0.)] start_index: IntegerCount,
788+
#[hard_min(0.)] start_index: IntegerCount,
789789
) -> VectorDataTable {
790790
let time = time.clamp(0., 1.);
791791

node-graph/gstd/src/image_color_palette.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ async fn image_color_palette(
66
_: impl Ctx,
77
image: ImageFrameTable<Color>,
88
#[min(1.)]
9-
#[max(28.)]
9+
#[hard_max(28.)]
1010
max_size: u32,
1111
) -> Vec<Color> {
1212
const GRID: f32 = 3.;

node-graph/node-macro/src/codegen.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,17 +177,17 @@ pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result<TokenStre
177177

178178
let min_max_args = fields.iter().map(|field| match field {
179179
ParsedField::Regular {
180-
pat_ident, number_min, number_max, ..
180+
pat_ident, number_hard_min, number_hard_max, ..
181181
} => {
182182
let name = &pat_ident.ident;
183183
let mut tokens = quote!();
184-
if let Some(min) = number_min {
184+
if let Some(min) = number_hard_min {
185185
tokens.extend(quote! {
186186
let #name = #graphene_core::num_traits::clamp_min(#name, #graphene_core::num_traits::FromPrimitive::from_f64(#min).unwrap());
187187
});
188188
}
189189

190-
if let Some(max) = number_max {
190+
if let Some(max) = number_hard_max {
191191
tokens.extend(quote! {
192192
let #name = #graphene_core::num_traits::clamp_max(#name, #graphene_core::num_traits::FromPrimitive::from_f64(#max).unwrap());
193193
});

node-graph/node-macro/src/parsing.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ pub(crate) enum ParsedField {
107107
value_source: ParsedValueSource,
108108
number_min: Option<LitFloat>,
109109
number_max: Option<LitFloat>,
110+
number_hard_min: Option<LitFloat>,
111+
number_hard_max: Option<LitFloat>,
110112
number_mode_range: Option<ExprTuple>,
111113
implementations: Punctuated<Type, Comma>,
112114
},
@@ -230,7 +232,7 @@ impl Parse for NodeFnAttributes {
230232
r#"
231233
Unsupported attribute in `node`.
232234
Supported attributes are 'category', 'path' and 'name'.
233-
235+
234236
Example usage:
235237
#[node_macro::node(category("Value"), name("Test Node"))]
236238
"#
@@ -432,6 +434,19 @@ fn parse_field(pat_ident: PatIdent, ty: Type, attrs: &[Attribute]) -> syn::Resul
432434
})
433435
.transpose()?;
434436

437+
let number_hard_min = extract_attribute(attrs, "hard_min")
438+
.map(|attr| {
439+
attr.parse_args()
440+
.map_err(|e| Error::new_spanned(attr, format!("Invalid numerical `hard_min` value for argument '{}': {}", ident, e)))
441+
})
442+
.transpose()?;
443+
let number_hard_max = extract_attribute(attrs, "hard_max")
444+
.map(|attr| {
445+
attr.parse_args()
446+
.map_err(|e| Error::new_spanned(attr, format!("Invalid numerical `hard_max` value for argument '{}': {}", ident, e)))
447+
})
448+
.transpose()?;
449+
435450
let number_mode_range = extract_attribute(attrs, "range")
436451
.map(|attr| {
437452
attr.parse_args::<ExprTuple>().map_err(|e| {
@@ -502,6 +517,8 @@ fn parse_field(pat_ident: PatIdent, ty: Type, attrs: &[Attribute]) -> syn::Resul
502517
exposed,
503518
number_min,
504519
number_max,
520+
number_hard_min,
521+
number_hard_max,
505522
number_mode_range,
506523
ty,
507524
value_source,

0 commit comments

Comments
 (0)