37 lines
3.0 KiB
Markdown
37 lines
3.0 KiB
Markdown
|
|
---
|
|||
|
|
source_files:
|
|||
|
|
- Common/DTS.CommonCore/Events/RegionOfInterest/RegionOfInterestChangedEvent.cs
|
|||
|
|
generated_at: "2026-04-16T02:47:49.374454+00:00"
|
|||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
|||
|
|
schema_version: 1
|
|||
|
|
sha256: "a47f2325776df1cf"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# RegionOfInterest
|
|||
|
|
|
|||
|
|
1. **Purpose**
|
|||
|
|
This module defines a Prism `CompositePresentationEvent`-based event (`RegionOfInterestChangedEvent`) used to publish and subscribe to notifications when a region of interest (ROI) changes within the system. It serves as the messaging mechanism in the event-driven architecture to decouple components that generate or consume ROI updates—enabling loose coupling between ROI management logic and UI or processing modules that react to ROI changes.
|
|||
|
|
|
|||
|
|
2. **Public Interface**
|
|||
|
|
- **`RegionOfInterestChangedEvent`**
|
|||
|
|
- *Type*: `class` (inherits from `CompositePresentationEvent<IRegionOfInterest>`)
|
|||
|
|
- *Behavior*: A Prism event type used for publishing and subscribing to ROI change notifications. When published, the event carries an `IRegionOfInterest` instance representing the new or updated region of interest. Subscribers receive the payload via their event handler.
|
|||
|
|
|
|||
|
|
3. **Invariants**
|
|||
|
|
- The event payload is guaranteed to be of type `IRegionOfInterest` (as per the generic parameter of the base class).
|
|||
|
|
- The event must be published only with a non-null `IRegionOfInterest` instance (though the source does not enforce this at compile time; runtime enforcement would depend on publisher code).
|
|||
|
|
- As a `CompositePresentationEvent`, it supports multiple subscribers and thread-safe publication/subscription (per Prism’s implementation), but ordering of subscriber invocation is not guaranteed.
|
|||
|
|
|
|||
|
|
4. **Dependencies**
|
|||
|
|
- **External Dependencies**:
|
|||
|
|
- `Microsoft.Practices.Prism.Events` — provides the `CompositePresentationEvent<T>` base class.
|
|||
|
|
- `DTS.Common.Interface.RegionOfInterest` — defines the `IRegionOfInterest` interface used as the event payload.
|
|||
|
|
- **Depended upon by**:
|
|||
|
|
- Any module or component that needs to react to ROI changes (e.g., UI views, analysis pipelines) will subscribe to this event.
|
|||
|
|
- ROI management components (e.g., ROI editors, trackers) are expected to publish this event when an ROI is modified.
|
|||
|
|
|
|||
|
|
5. **Gotchas**
|
|||
|
|
- The class is a *pure event definition*—it contains no logic, validation, or helper methods. All behavior (e.g., payload construction, null checks) resides in the publisher/consumer code.
|
|||
|
|
- No explicit documentation is present about whether the event is intended for *synchronous* or *asynchronous* use; Prism’s `CompositePresentationEvent` defaults to synchronous dispatch on the calling thread unless configured otherwise (e.g., via `ThreadOption.Background` in subscription), but this is not specified here.
|
|||
|
|
- The event name `RegionOfInterestChangedEvent` suggests a *change* occurred, but the payload is the *current* ROI state—not a diff or delta. Consumers must infer what changed by comparing with prior state if needed.
|
|||
|
|
- None identified from source alone.
|