clippy: clear the workspace errors and apply the machine fixes
- Mark the raw-pointer interop entry points unsafe with # Safety docs (oak-core upload/download/frame-from-pixels, oak-audio convert) and satisfy the existing callers (tests). - mut_from_ref: allow with the ABI contract documented (the handle get_mut helpers in oak-timeline/oak-render/oak-task take the shared reference the C ABI passes; exclusivity is the caller's unsafe contract). - Fix the eq_op in the white-balance normalization (green / green). - Apply cargo clippy --fix across the workspace (redundant closures and field names, field reassignment, items after test modules, ...). - Revert the replace_box fix in image_effect's clip_define: a redefinition must allocate a new box, otherwise the old clip handle stays valid and the HS-map replace contract (clip != clip2) breaks. - 283 warnings remain; they are all non-machine-applicable (chunks_exact -> as_chunks needs a manual iter_mut, too_many_arguments, complex types, missing Safety docs, ...) and are tracked as the follow-up.
This commit is contained in:
@@ -364,12 +364,11 @@ impl NodeBehavior for BlurFilterNode {
|
||||
let mut can_push_job = true;
|
||||
if radius > 0.0 {
|
||||
// Method-specific considerations.
|
||||
if method == Method::Box as i64 || method == Method::Gaussian as i64 {
|
||||
if !horiz && !vert {
|
||||
if (method == Method::Box as i64 || method == Method::Gaussian as i64)
|
||||
&& !horiz && !vert {
|
||||
// Disable the job if both directions are unchecked.
|
||||
can_push_job = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
can_push_job = false;
|
||||
}
|
||||
@@ -378,11 +377,10 @@ impl NodeBehavior for BlurFilterNode {
|
||||
// all other methods are single-pass (C++ `iterations = 2` only for
|
||||
// the double-pass case).
|
||||
let mut iterations = 1;
|
||||
if method == Method::Box as i64 || method == Method::Gaussian as i64 {
|
||||
if horiz && vert {
|
||||
if (method == Method::Box as i64 || method == Method::Gaussian as i64)
|
||||
&& horiz && vert {
|
||||
iterations = 2;
|
||||
}
|
||||
}
|
||||
|
||||
if can_push_job {
|
||||
// The shader-job box (C++ ShaderJob): the behavior's type id
|
||||
@@ -578,6 +576,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(BlurFilterNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_blur_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.blur",
|
||||
name: "Blur",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -736,14 +745,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Blur");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_blur_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.blur",
|
||||
name: "Blur",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -234,6 +234,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(CheckerBoardNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.checkerboard",
|
||||
name: "Checkerboard",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -398,13 +408,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Checkerboard");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.checkerboard",
|
||||
name: "Checkerboard",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -257,6 +257,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(ColorBarsNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.colorbars",
|
||||
name: "Color Bars",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -383,13 +393,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Color Bars");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.colorbars",
|
||||
name: "Color Bars",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -198,6 +198,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(ColorMatrixNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.colormatrix",
|
||||
name: "Color Matrix",
|
||||
categories: &[Category::Color],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -329,13 +339,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Color Matrix");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.colormatrix",
|
||||
name: "Color Matrix",
|
||||
categories: &[Category::Color],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -518,6 +518,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
)
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.cornerpin`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.cornerpin",
|
||||
name: "Corner Pin",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -675,14 +686,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Corner Pin");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.cornerpin`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.cornerpin",
|
||||
name: "Corner Pin",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -410,6 +410,17 @@ fn create_crop_side_input(core: &mut NodeCore, id: &str) {
|
||||
core.add_input(input);
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.crop`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.crop",
|
||||
name: "Crop",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -528,14 +539,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Crop");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.crop`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.crop",
|
||||
name: "Crop",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -196,6 +196,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(DilateNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dilate",
|
||||
name: "Dilate",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -318,13 +328,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Dilate");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dilate",
|
||||
name: "Dilate",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -244,6 +244,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(DirBlurNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dirblur",
|
||||
name: "Directional Blur",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -394,13 +404,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Directional Blur");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dirblur",
|
||||
name: "Directional Blur",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -243,6 +243,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(DissolveNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dissolve",
|
||||
name: "Dissolve",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -402,13 +412,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Dissolve");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dissolve",
|
||||
name: "Dissolve",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -367,6 +367,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(DropShadowFilter))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_drop_shadow_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dropshadow",
|
||||
name: "Drop Shadow",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -485,14 +496,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Drop Shadow");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_drop_shadow_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.dropshadow",
|
||||
name: "Drop Shadow",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -190,6 +190,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(EdgeDetectNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.edgedetect",
|
||||
name: "Edge Detect",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -307,13 +317,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Edge Detect");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.edgedetect",
|
||||
name: "Edge Detect",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -196,6 +196,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(ErodeNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.erode",
|
||||
name: "Erode",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -318,13 +328,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Erode");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.erode",
|
||||
name: "Erode",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -199,6 +199,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(FlipDistortNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.flip`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.flip",
|
||||
name: "Flip",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -315,14 +326,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Flip");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.flip`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.flip",
|
||||
name: "Flip",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -219,6 +219,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(KeyMixNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.keymix",
|
||||
name: "KeyMix",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -357,13 +367,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "KeyMix");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.keymix",
|
||||
name: "KeyMix",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -406,6 +406,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(MatrixGenerator))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.ortho`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.ortho",
|
||||
name: "Orthographic Matrix",
|
||||
categories: &[Category::Generator, Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -587,14 +598,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Orthographic Matrix");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.ortho`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.ortho",
|
||||
name: "Orthographic Matrix",
|
||||
categories: &[Category::Generator, Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -208,6 +208,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(MergeNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_merge_node` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.merge",
|
||||
name: "Merge",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -306,14 +317,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Merge");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_merge_node` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.merge",
|
||||
name: "Merge",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -189,6 +189,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(MirrorNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.mirror",
|
||||
name: "Mirror",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -327,13 +337,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Mirror");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.mirror",
|
||||
name: "Mirror",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -214,6 +214,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(MosaicFilterNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_mosaic_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.mosaicfilter",
|
||||
name: "Mosaic",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -312,14 +323,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Mosaic");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_mosaic_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.mosaicfilter",
|
||||
name: "Mosaic",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -219,6 +219,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(NoiseGeneratorNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.noise`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.noise",
|
||||
name: "Noise",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -310,14 +321,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Noise");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.noise`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.noise",
|
||||
name: "Noise",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -244,6 +244,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
)
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_opacity_effect` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.opacity",
|
||||
name: "Opacity",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -396,14 +407,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Opacity");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_opacity_effect` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.opacity",
|
||||
name: "Opacity",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -196,6 +196,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(PanNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_audio_panning` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.pan",
|
||||
name: "Pan",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -338,14 +349,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Pan");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_audio_panning` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.pan",
|
||||
name: "Pan",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -546,7 +546,7 @@ mod tests {
|
||||
sample_count: 3,
|
||||
// Planar layout: channel 0 plane [1, 2, 3], channel 1 plane
|
||||
// [4, 5, 6].
|
||||
data: vec![1.0f32, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
data: [1.0f32, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
.iter()
|
||||
.flat_map(|f| f.to_le_bytes())
|
||||
.collect(),
|
||||
@@ -580,7 +580,7 @@ mod tests {
|
||||
format: oak_core::SampleFormat::F32,
|
||||
channels: 1,
|
||||
sample_count: 2,
|
||||
data: vec![1.0f32, 2.0]
|
||||
data: [1.0f32, 2.0]
|
||||
.iter()
|
||||
.flat_map(|f| f.to_le_bytes())
|
||||
.collect(),
|
||||
|
||||
@@ -112,7 +112,7 @@ pub fn point_array(core: &NodeCore, inputs: &crate::value::NodeValueRow, time: o
|
||||
.inputs
|
||||
.iter()
|
||||
.find(|i| i.id == POINTS_INPUT)
|
||||
.map(|i| (i.array_size as usize).min(64))
|
||||
.map(|i| i.array_size.min(64))
|
||||
.unwrap_or(5);
|
||||
let mut points: Vec<[f64; 4]> = Vec::new();
|
||||
for i in 0..size {
|
||||
@@ -380,6 +380,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(PolygonGenerator))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.polygon`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.polygon",
|
||||
name: "Polygon",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -507,14 +518,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Polygon");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.polygon`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.polygon",
|
||||
name: "Polygon",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -193,6 +193,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(PositionNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.position",
|
||||
name: "Position",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -307,13 +317,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Position");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.position",
|
||||
name: "Position",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -233,6 +233,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(PremultiplyNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.premult",
|
||||
name: "Premultiply",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -372,13 +382,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Premultiply");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.premult",
|
||||
name: "Premultiply",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -233,6 +233,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(RampNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.ramp",
|
||||
name: "Ramp",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -394,13 +404,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Ramp");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.ramp",
|
||||
name: "Ramp",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -299,6 +299,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(RippleDistortNode { gizmo }))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.ripple`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.ripple",
|
||||
name: "Ripple",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -404,14 +415,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Ripple");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.ripple`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.ripple",
|
||||
name: "Ripple",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -359,6 +359,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(ShapeNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.shape`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.shape",
|
||||
name: "Shape",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -516,14 +527,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Shape");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.shape`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.shape",
|
||||
name: "Shape",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -209,6 +209,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(SharpenNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.sharpen",
|
||||
name: "Sharpen",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -327,13 +337,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Sharpen");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.sharpen",
|
||||
name: "Sharpen",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -139,6 +139,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(SolidGenerator))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.solidgenerator`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.solidgenerator",
|
||||
name: "Solid",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -209,14 +220,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Solid");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.solidgenerator`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.solidgenerator",
|
||||
name: "Solid",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -295,6 +295,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(StrokeFilterNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_stroke_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.stroke",
|
||||
name: "Stroke",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -413,14 +424,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Stroke");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_stroke_filter` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.stroke",
|
||||
name: "Stroke",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -274,6 +274,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(SwirlDistortNode { gizmo }))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.swirl`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.swirl",
|
||||
name: "Swirl",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -390,14 +401,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Swirl");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.swirl`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.swirl",
|
||||
name: "Swirl",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ impl TextGeneratorV1 {
|
||||
let text = row
|
||||
.get(TEXT_INPUT)
|
||||
.map(to_text)
|
||||
.unwrap_or_else(|| String::new());
|
||||
.unwrap_or_default();
|
||||
let html = matches!(row.get(HTML_INPUT), Some(NodeValue::Boolean(true)));
|
||||
let mut mode = TextLayoutMode::PlainText;
|
||||
let text = if html {
|
||||
@@ -100,7 +100,7 @@ impl TextGeneratorV1 {
|
||||
TextLayoutRequest {
|
||||
text,
|
||||
mode,
|
||||
font_family: row.get(FONT_INPUT).map(to_text).unwrap_or_else(String::new),
|
||||
font_family: row.get(FONT_INPUT).map(to_text).unwrap_or_default(),
|
||||
font_size_pt: row
|
||||
.get(FONT_SIZE_INPUT)
|
||||
.map(NodeValue::to_double)
|
||||
|
||||
@@ -92,7 +92,7 @@ impl TextGeneratorV2 {
|
||||
let text = row
|
||||
.get(TEXT_INPUT)
|
||||
.map(to_text)
|
||||
.unwrap_or_else(|| String::new());
|
||||
.unwrap_or_default();
|
||||
let html = matches!(row.get(HTML_INPUT), Some(NodeValue::Boolean(true)));
|
||||
let mut mode = TextLayoutMode::PlainText;
|
||||
let text = if html {
|
||||
@@ -111,7 +111,7 @@ impl TextGeneratorV2 {
|
||||
TextLayoutRequest {
|
||||
text,
|
||||
mode,
|
||||
font_family: row.get(FONT_INPUT).map(to_text).unwrap_or_else(String::new),
|
||||
font_family: row.get(FONT_INPUT).map(to_text).unwrap_or_default(),
|
||||
font_size_pt: row
|
||||
.get(FONT_SIZE_INPUT)
|
||||
.map(NodeValue::to_double)
|
||||
|
||||
@@ -760,12 +760,12 @@ impl TextGeneratorV3 {
|
||||
text: row
|
||||
.get(PLAIN_TEXT_INPUT)
|
||||
.map(to_text)
|
||||
.unwrap_or_else(String::new),
|
||||
.unwrap_or_default(),
|
||||
mode: TextLayoutMode::PlainText,
|
||||
font_family: row
|
||||
.get(FONT_FAMILY_INPUT)
|
||||
.map(to_text)
|
||||
.unwrap_or_else(String::new),
|
||||
.unwrap_or_default(),
|
||||
font_size_pt: row
|
||||
.get(FONT_SIZE_INPUT)
|
||||
.map(|v| v.to_double())
|
||||
@@ -776,7 +776,7 @@ impl TextGeneratorV3 {
|
||||
}
|
||||
} else {
|
||||
TextLayoutRequest {
|
||||
text: row.get(TEXT_INPUT).map(to_text).unwrap_or_else(String::new),
|
||||
text: row.get(TEXT_INPUT).map(to_text).unwrap_or_default(),
|
||||
mode: TextLayoutMode::OliveHtml,
|
||||
font_family: String::new(),
|
||||
font_size_pt: 0.0,
|
||||
@@ -2257,7 +2257,7 @@ mod tests {
|
||||
else {
|
||||
panic!("expected a CPU coverage frame");
|
||||
};
|
||||
let stride = frame.linesize_bytes() as usize;
|
||||
let stride = frame.linesize_bytes();
|
||||
let at = y * stride + x * 16;
|
||||
let mut out = [0f32; 4];
|
||||
for (c, v) in out.iter_mut().enumerate() {
|
||||
|
||||
@@ -381,6 +381,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(TileDistortNode { gizmo }))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.tile`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.tile",
|
||||
name: "Tile",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -483,14 +494,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Tile");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.tile`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.tile",
|
||||
name: "Tile",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -246,19 +246,19 @@ impl TransformDistortNode {
|
||||
|
||||
let scale_by_x = sequence_res.0 / texture_res.0;
|
||||
let scale_by_y = sequence_res.1 / texture_res.1;
|
||||
let autoscale_val;
|
||||
|
||||
|
||||
if (autoscale_type == AutoScaleType::Fit) == (sequence_real_ar > footage_real_ar) {
|
||||
let autoscale_val = if (autoscale_type == AutoScaleType::Fit) == (sequence_real_ar > footage_real_ar) {
|
||||
// Scale by height. Either the sequence is wider than
|
||||
// the footage or we're using fill and cutting off the
|
||||
// sides.
|
||||
autoscale_val = scale_by_y;
|
||||
scale_by_y
|
||||
} else {
|
||||
// Scale by width. Either the footage is wider than the
|
||||
// sequence or we're using fill and cutting off the top
|
||||
// and bottom.
|
||||
autoscale_val = scale_by_x;
|
||||
}
|
||||
scale_by_x
|
||||
};
|
||||
|
||||
adjusted_matrix =
|
||||
super::matrix::matrix_scale(adjusted_matrix, autoscale_val, autoscale_val, 1.0);
|
||||
@@ -671,6 +671,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
)
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.transform`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.transform",
|
||||
name: "Transform",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -960,14 +971,3 @@ mod tests {
|
||||
assert_eq!(dup.short_name(), "Transform");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.transform`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.transform",
|
||||
name: "Transform",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -478,6 +478,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(TransitionFxNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.transitionfx",
|
||||
name: "Transition FX",
|
||||
categories: &[Category::Effect],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -754,13 +764,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Transition FX");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.transitionfx",
|
||||
name: "Transition FX",
|
||||
categories: &[Category::Effect],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -403,6 +403,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(TransitionNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.transition",
|
||||
name: "Transition",
|
||||
categories: &[Category::Timeline],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -596,13 +606,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Transition");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.transition",
|
||||
name: "Transition",
|
||||
categories: &[Category::Timeline],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -213,6 +213,17 @@ pub const OPERATION_NAMES: [&str; 9] = [
|
||||
"Hyperbolic Tangent",
|
||||
];
|
||||
|
||||
/// Register this node type (C++ `k_trigonometry_node` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.trigonometry",
|
||||
name: "Trigonometry",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -363,14 +374,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Trigonometry");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_trigonometry_node` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.trigonometry",
|
||||
name: "Trigonometry",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -242,6 +242,16 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(UnpremultiplyNode))
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.unpremult",
|
||||
name: "Unpremultiply",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -370,13 +380,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Unpremultiply");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type.
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.unpremult",
|
||||
name: "Unpremultiply",
|
||||
categories: &[Category::Math],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -171,6 +171,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(ValueNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_value_node` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.value",
|
||||
name: "Value",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -262,14 +273,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Value");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_value_node` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.value",
|
||||
name: "Value",
|
||||
categories: &[Category::Generator],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -177,6 +177,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(VolumeNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_audio_volume` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.volume",
|
||||
name: "Volume",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -331,14 +342,3 @@ mod tests {
|
||||
assert_eq!(dup.type_id(), "org.olivevideoeditor.Olive.volume");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ `k_audio_volume` in
|
||||
/// `factory.cpp::create_from_factory_index`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.volume",
|
||||
name: "Volume",
|
||||
categories: &[Category::Filter],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -241,6 +241,17 @@ pub fn create() -> (NodeCore, Box<dyn NodeBehavior>) {
|
||||
(core, Box::new(WaveDistortNode))
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.wave`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.wave",
|
||||
name: "Wave",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -341,14 +352,3 @@ mod tests {
|
||||
assert_eq!(dup.name(), "Wave");
|
||||
}
|
||||
}
|
||||
|
||||
/// Register this node type (C++ factory entry for
|
||||
/// `org.olivevideoeditor.Olive.wave`).
|
||||
pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
meta.push(NodeMeta {
|
||||
type_id: "org.olivevideoeditor.Olive.wave",
|
||||
name: "Wave",
|
||||
categories: &[Category::Distort],
|
||||
create,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ impl WhiteBalanceNode {
|
||||
// exposure, then let tint move along the green-magenta axis.
|
||||
let tint_gain = (1.0 + tint).clamp(0.0, 2.0);
|
||||
|
||||
[red / green, green / green * tint_gain, blue / green]
|
||||
[red / green, tint_gain, blue / green]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,16 +189,18 @@ impl NodeBehavior for WhiteBalanceNode {
|
||||
params.insert(GAIN_INPUT.to_string(), crate::value::NodeValue::Vec3(gain));
|
||||
table.push(
|
||||
crate::value::ValueType::Texture,
|
||||
crate::value::NodeValue::Texture(crate::handle::make_owned(Job::ShaderJob(ShaderJobPayload {
|
||||
node_id: crate::id::NodeId::INVALID,
|
||||
time,
|
||||
iterations: 1,
|
||||
type_id: self.type_id().to_string(),
|
||||
shader_id: String::new(),
|
||||
effect_input: core.effect_input.clone(),
|
||||
params,
|
||||
iterative_input: String::new(),
|
||||
}))),
|
||||
crate::value::NodeValue::Texture(crate::handle::make_owned(Job::ShaderJob(
|
||||
ShaderJobPayload {
|
||||
node_id: crate::id::NodeId::INVALID,
|
||||
time,
|
||||
iterations: 1,
|
||||
type_id: self.type_id().to_string(),
|
||||
shader_id: String::new(),
|
||||
effect_input: core.effect_input.clone(),
|
||||
params,
|
||||
iterative_input: String::new(),
|
||||
},
|
||||
))),
|
||||
None,
|
||||
);
|
||||
}
|
||||
@@ -270,11 +272,11 @@ pub fn register(meta: &mut Vec<NodeMeta>) {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::value::{NodeValue, NodeValueTable, ValueType};
|
||||
use oak_core::Rational;
|
||||
use super::*;
|
||||
use crate::value::{NodeValue, NodeValueTable, ValueType};
|
||||
use oak_core::Rational;
|
||||
|
||||
#[test]
|
||||
#[test]
|
||||
fn input_names() {
|
||||
let n = WhiteBalanceNode;
|
||||
assert_eq!(n.input_name(TEXTURE_INPUT), "Input");
|
||||
@@ -391,8 +393,7 @@ mod tests {
|
||||
panic!("expected a texture-typed value");
|
||||
};
|
||||
let payload =
|
||||
unsafe { crate::jobs::shader_job(handle) }
|
||||
.expect("payload boxed behind the handle");
|
||||
unsafe { crate::jobs::shader_job(handle) }.expect("payload boxed behind the handle");
|
||||
assert_eq!(payload.type_id, "org.olivevideoeditor.Olive.whitebalance");
|
||||
assert_eq!(payload.shader_id, "");
|
||||
assert_eq!(payload.iterations, 1);
|
||||
|
||||
Reference in New Issue
Block a user