Source code for cuvis.Viewer

from ._cuvis_il import cuvis_il
from .Measurement import ImageData, Measurement
from .cuvis_aux import SDKException
from .cuvis_types import CUVIS_imbuffer_format

from .FileWriteSettings import ViewerSettings

from typing import Union


[docs] class Viewer(object): def __init__(self, settings: Union[int, ViewerSettings]): self._handle = None if isinstance(settings, int): self._handle = settings elif isinstance(settings, ViewerSettings): _ptr = cuvis_il.new_p_int() if cuvis_il.status_ok != cuvis_il.cuvis_viewer_create( _ptr, settings._get_internal()): raise SDKException() self._handle = cuvis_il.p_int_value(_ptr) else: raise SDKException( "Could not open ViewerSettings of type {}!".format( type(settings))) pass def _create_view_data(self, new_handle: int) -> Union[dict[str, ImageData], ImageData]: _ptr = cuvis_il.new_p_int() if cuvis_il.status_ok != cuvis_il.cuvis_view_get_data_count( new_handle, _ptr): raise SDKException() dataCount = cuvis_il.p_int_value(_ptr) view_array = {} for i in range(dataCount): view_data = cuvis_il.cuvis_view_data_t() if cuvis_il.status_ok != cuvis_il.cuvis_view_get_data( new_handle, i, view_data): raise SDKException() view_array[view_data.id] = ImageData(img_buf=view_data.data, dformat=view_data.data.format) if len(view_array.keys()) == 1: # if only one value is available, do not wrap in dictionary return list(view_array.values())[0] else: return view_array
[docs] def apply(self, mesu: Measurement) -> dict[str, ImageData]: _ptr = cuvis_il.new_p_int() if cuvis_il.status_ok != cuvis_il.cuvis_viewer_apply(self._handle, mesu._handle, _ptr): raise SDKException() currentView = cuvis_il.p_int_value(_ptr) return self._create_view_data(currentView)
def __del__(self): _ptr = cuvis_il.new_p_int() cuvis_il.p_int_assign(_ptr, self._handle) cuvis_il.cuvis_viewer_free(_ptr) self._handle = cuvis_il.p_int_value(_ptr) def __deepcopy__(self, memo): '''This functions is not permitted due to the class only keeping a handle, that is managed by the cuvis sdk.''' raise TypeError('Deep copying is not supported for Viewer') def __copy__(self): '''This functions is not permitted due to the class only keeping a handle, that is managed by the cuvis sdk.''' raise TypeError('Shallow copying is not supported for Viewer')