31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
import logging
|
|
from collections import defaultdict
|
|
|
|
class GlobalState:
|
|
def __init__(self):
|
|
self.listeners = defaultdict(list)
|
|
|
|
self.raw_params = {
|
|
"use_auto_wb": False,
|
|
"use_camera_wb": True,
|
|
"no_auto_bright": True,
|
|
"output_bps": 16,
|
|
"gamma": (2.222, 4.5), # Default sRGB gamma
|
|
}
|
|
self.raw_image_data = None
|
|
|
|
def subscribe(self, event_name: str, callback):
|
|
"""Register a function to be called when an event is dispatched."""
|
|
logging.info(f"Subscribing '{callback.__qualname__}' to event '{event_name}'")
|
|
self.listeners[event_name].append(callback)
|
|
|
|
def dispatch(self, event_name: str, *args, **kwargs):
|
|
"""Call all registered callbacks for a given event."""
|
|
logging.debug(f"Dispatching event '{event_name}' with data: {kwargs}")
|
|
if event_name in self.listeners:
|
|
for callback in self.listeners[event_name]:
|
|
try:
|
|
# Pass the arguments and keyword arguments to the callback
|
|
callback(*args, **kwargs)
|
|
except Exception as e:
|
|
logging.error(f"Error in event callback for '{event_name}': {e}") |