From 7fa77f92ec974c782f3e603e135474ebf74a7ef7 Mon Sep 17 00:00:00 2001 From: Samuel Canadi Date: Mon, 12 Aug 2024 14:04:01 +0200 Subject: [PATCH] stubs for 3.3.0 --- cuvis/AcquisitionContext.py | 46 +++++++++++++++++++++++++++++-------- cuvis/Calibration.py | 15 +++++++++++- cuvis/Export.py | 4 ++++ cuvis/SessionFile.py | 17 +++++++++++--- cuvis/__init__.py | 2 +- cuvis/cuvis_aux.py | 19 ++++++++++++++- 6 files changed, 87 insertions(+), 16 deletions(-) diff --git a/cuvis/AcquisitionContext.py b/cuvis/AcquisitionContext.py index 2a5ed20..d8b48b2 100644 --- a/cuvis/AcquisitionContext.py +++ b/cuvis/AcquisitionContext.py @@ -235,6 +235,32 @@ def set_fps_async(self, val: float) -> Async: raise SDKException() return Async(cuvis_il.p_int_value(_pasync)) + @property + @copydoc(cuvis_il.cuvis_acq_cont_get_pixel_format_swig) + def pixel_format(self, id: int) -> str: + return cuvis_il.cuvis_acq_cont_get_pixel_format_swig(self._handle, id) + + @pixel_format.setter + @copydoc(cuvis_il.cuvis_acq_cont_fps_set) + def pixel_format(self, id: int, val: str) -> None: + if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_set_pixel_format( + self._handle, val): + raise SDKException() + pass + + @property + @copydoc(cuvis_il.cuvis_acq_cont_get_pixel_format_swig) + def available_pixel_formats(self, id: int) -> list[str]: + pCount = cuvis_il.new_p_int() + if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_get_available_pixel_format_count( + self._handle, id, pCount): + raise SDKException() + count = cuvis_il.p_int_value(pCount) + formats = [] + for i in range(count): + formats.append(str(cuvis_il.cuvis_acq_cont_get_available_pixel_format_swig(self._handle, id, i))) + return formats + @copydoc(cuvis_il.cuvis_acq_cont_has_next_measurement) def has_next_measurement(self) -> bool: val = cuvis_il.new_p_int() @@ -427,26 +453,26 @@ def set_auto_exp_comp_async(self, val: float) -> Async: return Async(cuvis_il.p_int_value(_pasync)) @property - @copydoc(cuvis_il.cuvis_acq_cont_preview_mode_get) - def preview_mode(self) -> bool: + @copydoc(cuvis_il.cuvis_acq_cont_binning_get) + def binning(self) -> bool: _ptr = cuvis_il.new_p_int() - if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_preview_mode_get( + if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_binning_get( self._handle, _ptr): raise SDKException() return bool(cuvis_il.p_int_value(_ptr)) - @preview_mode.setter - @copydoc(cuvis_il.cuvis_acq_cont_preview_mode_set) - def preview_mode(self, val: bool) -> None: - if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_preview_mode_set( + @binning.setter + @copydoc(cuvis_il.cuvis_acq_cont_binning_set) + def binning(self, val: bool) -> None: + if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_binning_set( self._handle, val): raise SDKException() return - @copydoc(cuvis_il.cuvis_acq_cont_preview_mode_set_async) - def set_preview_mode_async(self, val: bool) -> Async: + @copydoc(cuvis_il.cuvis_acq_cont_binning_set_async) + def set_binning_async(self, val: bool) -> Async: _pasync = cuvis_il.new_p_int() - if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_preview_mode_set_async( + if cuvis_il.status_ok != cuvis_il.cuvis_acq_cont_binning_set_async( self._handle, _pasync, int(val)): raise SDKException() return Async(cuvis_il.p_int_value(_pasync)) diff --git a/cuvis/Calibration.py b/cuvis/Calibration.py index 0b323a2..6cbc1e3 100644 --- a/cuvis/Calibration.py +++ b/cuvis/Calibration.py @@ -3,7 +3,7 @@ from ._cuvis_il import cuvis_il from .SessionFile import SessionFile -from .cuvis_aux import SDKException, Capabilities +from .cuvis_aux import SDKException, Capabilities, CalibrationInfo from .cuvis_types import OperationMode import cuvis.cuvis_types as internal @@ -34,6 +34,19 @@ def get_capabilities(self, operation_mode: OperationMode) -> Capabilities: raise SDKException() return Capabilities(cuvis_il.p_int_value(_ptr)) + def get_info(self) -> cuvis_il.cuvis_calibration_info_t: + info = cuvis_il.cuvis_calibration_info_t() + if cuvis_il.status_ok != cuvis_il.cuvis_calib_get_info( + self._handle, info): + raise SDKException() + return CalibrationInfo( + self.model_name, + self.serial_no, + self.calibration_date, + self.annotation_name, + self.unique_id, + self.file_path) + @property def id(self) -> str: _id = cuvis_il.cuvis_calib_get_id_swig(self._handle) diff --git a/cuvis/Export.py b/cuvis/Export.py index ccdaaf6..81cc71f 100644 --- a/cuvis/Export.py +++ b/cuvis/Export.py @@ -22,6 +22,10 @@ def apply(self, mesu: Measurement) -> Measurement: mesu.refresh() return mesu + def flush(self): + if cuvis_il.status_ok != cuvis_il.cuvis_exporter_flush(self._handle): + raise SDKException() + @property def queue_used(self) -> int: _ptr = cuvis_il.new_p_int() diff --git a/cuvis/SessionFile.py b/cuvis/SessionFile.py index 1f59d82..07eea1a 100644 --- a/cuvis/SessionFile.py +++ b/cuvis/SessionFile.py @@ -2,9 +2,9 @@ from pathlib import Path from ._cuvis_il import cuvis_il -from .Measurement import Measurement +from .Measurement import Measurement, ImageData from .cuvis_aux import SDKException -from .cuvis_types import OperationMode, SessionItemType, ReferenceType +from .cuvis_types import OperationMode, SessionItemType, ReferenceType, CUVIS_imbuffer_format import cuvis.cuvis_types as internal @@ -45,7 +45,18 @@ def get_reference(self, frameNo: int, reftype: ReferenceType) -> Optional[Measu if cuvis_il.status_ok != ret: raise SDKException() return Measurement(cuvis_il.p_int_value(_ptr)) - + + def get_thumbnail(self) -> ImageData: + thumbnail_data = cuvis_il.cuvis_view_data_t() + if cuvis_il.status_ok != cuvis_il.cuvis_session_file_get_thumbnail(self, thumbnail_data): + raise SDKException() + + if thumbnail_data.data.format == CUVIS_imbuffer_format["imbuffer_format_uint8"]: + return ImageData(img_buf=thumbnail_data.data, + dformat=thumbnail_data.data.format) + else: + raise SDKException("Unsupported viewer bit depth!") + def get_size(self, itemtype: SessionItemType = SessionItemType.no_gaps) -> int: val = cuvis_il.new_p_int() if cuvis_il.status_ok != cuvis_il.cuvis_session_file_get_size( diff --git a/cuvis/__init__.py b/cuvis/__init__.py index 5c839fc..fec9d66 100644 --- a/cuvis/__init__.py +++ b/cuvis/__init__.py @@ -34,6 +34,6 @@ from .cuvis_types import OperationMode, HardwareState, ProcessingMode, PanSharpeningInterpolationType, \ PanSharpeningAlgorithm, TiffCompressionMode, TiffFormat, ComponentType, ReferenceType, SessionItemType -from .cuvis_aux import SessionData, Capabilities, MeasurementFlags, SensorInfo, GPSData +from .cuvis_aux import SessionData, Capabilities, MeasurementFlags, SensorInfo, GPSData, CalibrationInfo del os, platform, sys \ No newline at end of file diff --git a/cuvis/cuvis_aux.py b/cuvis/cuvis_aux.py index 718e92b..81e9caf 100644 --- a/cuvis/cuvis_aux.py +++ b/cuvis/cuvis_aux.py @@ -35,7 +35,6 @@ def __init__(self, *args): super().__init__(self.message) pass - @dataclass class SessionData(object): name: str @@ -47,6 +46,24 @@ def __repr__(self): self.session_number, self.sequence_number) +@dataclass +class CalibrationInfo(object): + model_name: str + serial_no: str + calibration_date: datetime.datetime + annotation_name: str + unique_id: str + file_path: str + + def __repr__(self): + return "'Calibration: model: {}, serial no.: {}, calibration date: {}, annotation: {}, unique ID: {}, file: {}'".format( + self.model_name, + self.serial_no, + self.calibration_date, + self.annotation_name, + self.unique_id, + self.file_path) + @dataclass class GPSData(object): longitude: float