This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
---
source_files:
- Common/DTS.CommonCore/Interface/RegionOfInterest/IRegionOfInterest.cs
generated_at: "2026-04-16T12:08:15.186938+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "59ff4edea9524aba"
---
# Documentation: IRegionOfInterest
## 1. Purpose
This module defines the `IRegionOfInterest` interface within the `DTS.Common.Interface.RegionOfInterest` namespace. It establishes a contract for representing a specific bounded interval (defined by `Start` and `End`) that can be toggled, marked as default, and associated with specific data channels. By inheriting from `INotifyPropertyChanged`, this interface is designed to support data-binding scenarios, typically in UI or reactive environments, allowing consumers to react to changes in the region's state.
## 2. Public Interface
### Interface: `IRegionOfInterest`
**Namespace:** `DTS.Common.Interface.RegionOfInterest`
**Inherits:** `INotifyPropertyChanged`
#### Properties
* **`string Suffix { get; set; }`**
* Gets or sets a string suffix associated with the region.
* **`double Start { get; set; }`**
* Gets or sets the starting boundary of the region.
* **`double End { get; set; }`**
* Gets or sets the ending boundary of the region.
* **`bool IsEnabled { get; set; }`**
* Gets or sets a value indicating whether the region is currently active.
* **`bool IsDefault { get; set; }**
* Gets or sets a value indicating whether this region is the default selection.
* **`string[] ChannelNames { get; set; }`**
* Gets or sets an array of strings representing the names of channels associated with this region.
#### Methods
* **`void SetChannelNamesNoNotify(string[] names)`**
* Sets the `ChannelNames` property without raising the `PropertyChanged` event. This is likely used for bulk updates or initialization where UI notification overhead is unnecessary or undesirable.
* **`void ResetSuffix()`**
* Resets the `Suffix` property to a default value. The specific default value is determined by the implementation and is not defined in the interface.
## 3. Invariants
* **Notification Contract:** Implementations must raise the `PropertyChanged` event (from the inherited `INotifyPropertyChanged` interface) when the value of any property changes, with the specific exception of changes made via the `SetChannelNamesNoNotify` method.
* **Boundary Types:** The `Start` and `End` properties are defined as `double`, implying the region operates over a continuous numeric domain (e.g., time, distance, or index).
## 4. Dependencies
* **External Dependencies:**
* `System.ComponentModel`: Required for the `INotifyPropertyChanged` interface.
* **Downstream Dependencies:**
* Unknown from this source file alone. However, classes implementing this interface and ViewModels consuming these regions will depend on this contract.
## 5. Gotchas
* **Silent Updates via `SetChannelNamesNoNotify`:** Consumers listening to `PropertyChanged` events will not be notified when `SetChannelNamesNoNotify` is invoked. Logic that relies on event propagation to validate or synchronize state must account for this silent update path.
* **Array Mutability:** The `ChannelNames` property exposes a `string[]` array. Depending on the implementation, the array itself may be mutable, meaning modifying the array elements after retrieval might bypass the setter and its potential side effects or notifications.
* **Undefined Reset Logic:** The behavior of `ResetSuffix()` is implementation-specific. Developers must inspect the concrete class to determine what string the suffix is reset to.