pub struct PosPluginProcessor { /* private fields */ }Expand description
NDPosPlugin processor: attaches position metadata to arrays from a position list.
Implementations§
Source§impl PosPluginProcessor
impl PosPluginProcessor
pub fn new(mode: PosMode) -> Self
Sourcepub fn load_positions_json(&mut self, json_str: &str) -> Result<usize, Error>
pub fn load_positions_json(&mut self, json_str: &str) -> Result<usize, Error>
Load positions from a JSON string.
Sourcepub fn load_positions_xml(&mut self, xml_str: &str) -> Result<usize, String>
pub fn load_positions_xml(&mut self, xml_str: &str) -> Result<usize, String>
Load positions from an XML string (C++ NDPosPlugin pos_layout format).
Expected XML format (matching NDPosPluginFileReader):
<pos_layout>
<dimensions>
<dimension name="x"/>
<dimension name="y"/>
</dimensions>
<positions>
<position x="1" y="2"/>
<position x="3" y="4"/>
</positions>
</pos_layout>Each <dimension name="N"/> declares an ordered dimension; each
<position .../> carries one attribute per dimension, and the attribute
value (parsed as f64) is stored under the dimension name. A position
missing any declared dimension’s attribute is rejected (matching C
addPosition returning asynError).
Sourcepub fn load_positions_auto(&mut self, content: &str) -> Result<usize, String>
pub fn load_positions_auto(&mut self, content: &str) -> Result<usize, String>
Load positions from a string, auto-detecting format.
If the content starts with ‘<’ (after trimming whitespace), it is treated as XML. Otherwise, it is treated as JSON.
Sourcepub fn load_positions(&mut self, positions: Vec<HashMap<String, f64>>)
pub fn load_positions(&mut self, positions: Vec<HashMap<String, f64>>)
Load positions directly.
Sourcepub fn start(&mut self)
pub fn start(&mut self)
Start processing.
C writeInt32(NDPos_Running) resets ExpectedID to IDStart and does
nothing else (NDPosPlugin.cpp:230-234) — in particular it does not
clear MissingFrames/DuplicateFrames, which persist across runs until a
client writes them (they are zeroed only in the constructor).
pub fn missing_frames(&self) -> usize
pub fn duplicate_frames(&self) -> usize
pub fn remaining_positions(&self) -> usize
Trait Implementations§
Source§impl NDPluginProcess for PosPluginProcessor
impl NDPluginProcess for PosPluginProcessor
Source§fn process_array(
&mut self,
array: &NDArray,
_pool: &NDArrayPool,
) -> ProcessResult
fn process_array( &mut self, array: &NDArray, _pool: &NDArrayPool, ) -> ProcessResult
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Source§fn register_params(&mut self, base: &mut PortDriverBase) -> AsynResult<()>
fn register_params(&mut self, base: &mut PortDriverBase) -> AsynResult<()>
Source§fn on_param_change(
&mut self,
reason: usize,
params: &PluginParamSnapshot,
) -> ParamChangeResult
fn on_param_change( &mut self, reason: usize, params: &PluginParamSnapshot, ) -> ParamChangeResult
Source§fn compression_aware(&self) -> bool
fn compression_aware(&self) -> bool
codec != None) arrays
(C++ compressionAware_, G3). Defaults to false: a plugin that
operates on raw pixels must not be handed compressed bytes — the
runtime drops compressed input and counts it into DroppedArrays.
A codec/file plugin that understands compressed data overrides this.Source§fn does_array_callbacks(&self) -> bool
fn does_array_callbacks(&self) -> bool
NDArrayCallbacks param value. Defaults to true: most plugins
do array callbacks. Terminal plugins that never deliver downstream
(NDPluginStdArrays, NDPluginAttribute, every NDPluginFile writer)
override this to false so the param reflects the behaviour, matching C
(e.g. NDPluginFile.cpp:948 setIntegerParam(NDArrayCallbacks, 0)).Auto Trait Implementations§
impl Freeze for PosPluginProcessor
impl RefUnwindSafe for PosPluginProcessor
impl Send for PosPluginProcessor
impl Sync for PosPluginProcessor
impl Unpin for PosPluginProcessor
impl UnsafeUnpin for PosPluginProcessor
impl UnwindSafe for PosPluginProcessor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more