--- 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.