NDEVR
API Documentation
LocalPhysicalCameraView

Provides access to a local camera on the system, such as a webcam or camera for a phone. More...

Inheritance diagram for LocalPhysicalCameraView:
[legend]
Collaboration diagram for LocalPhysicalCameraView:
[legend]

Public Member Functions

 LocalPhysicalCameraView ()
 Default constructor.
 LocalPhysicalCameraView (const DynamicPointer< Camera > &camera, QWidget *parent=nullptr)
 Constructs a view for a specific camera.
virtual ~LocalPhysicalCameraView ()
 Destructor.
void adjustCrossHairs ()
 Adjusts the cross-hair overlay to match the current view size.
fltp08 defaultScale () const
 Gets the default scale factor for the camera view.
bool event (QEvent *event) override
 Handles general events for the camera view.
void findBestFormat (const QCameraDevice &camera_evice)
 Selects the best camera format for the given device.
virtual void refreshInstance () override
 Refreshes the camera instance and reconnects if needed.
virtual void resizeEvent (QResizeEvent *event) override
 Handles resize events by adjusting the video and cross-hairs.
virtual bool setCameraSource (const QCameraDevice &connection_id)
 Sets the camera source from a QCameraDevice.
virtual bool setCameraSource (const StringView &connection_id) override
 Sets the camera source by connection identifier string.
virtual void setCameraZoom (fltp08 zoom) override
 Sets the zoom level for the camera display.
virtual void setRemoteSource (const StringView &remote)
 Sets a remote media source URL for the camera view.
void setToDefaultCamera ()
 Sets the camera source to the system default camera.
LocalVideoRenderervideoWidget ()
 Gets the video renderer widget.
Public Member Functions inherited from PhysicalCameraView
StringView activeCodec () const
 Returns the currently active codec identifier.
StringView activeVideoMux () const
 Returns the currently active video muxer identifier.
QWidget * activeWidget () const
 Returns the currently active widget in the stacked display.
virtual void addWidget (const QPointer< QWidget > &button) override
 Adds an overlay widget to the camera view.
ToolButtonSettings buttonSettings () const
 Returns the current toolbar button visibility settings.
virtual ConstPointer< Cameracamera () const override
 Returns a read-only pointer to the Camera.
virtual DynamicPointer< Cameracamera () override
 Returns a mutable pointer to the Camera.
bool event (QEvent *event) override
 Processes a Qt event.
virtual QImage grabFramebuffer ()
 Captures the current frame as a QImage.
virtual UUID id () const override
 Returns the unique identifier for this camera view.
ButtoninvertImageButton () const
 Returns the invert colors button.
void leaveEvent (QEvent *leave) override
 Handles the mouse leaving the widget area.
ButtonlightButton () const
 Returns the light toggle button.
virtual QPointer< QWidget > lightingSliderWidget ()
 Returns the lighting brightness slider widget.
LogPtr log () const
 Returns the current logger.
fltp08 maxZoomOut () const
 Returns the maximum zoom-out factor for this camera.
void mediaEnd ()
 Slot called when media playback reaches the end.
void mediaError ()
 Slot called when a media playback error occurs.
void mediaOpening ()
 Slot called when media is opening/buffering.
void mediaPlayingSlot ()
 Slot called when media playback begins.
void mediaStateChanged ()
 Slot called when the media player state changes.
void mediaStopped ()
 Slot called when media playback is stopped.
void mouseReleaseEvent (QMouseEvent *releaseEvent) override
 Handles mouse release events for the camera view.
RecordingState recordingState () const override
 Returns the current recording state.
ButtonrefreshButton () const
 Returns the refresh/reconnect button.
virtual void removeWidget (const QPointer< QWidget > &button) override
 Removes an overlay widget from the camera view.
void requestLight (bool light_on)
 Emitted to request turning the camera light on or off.
void requestLightBrightness (fltp04 percent)
 Emitted to request a specific light brightness level.
virtual void resetToolRibbon () override
 Resets the tool ribbon to its default configuration.
File screenshotPath () const
 Returns the configured screenshot output path.
void setAutoRotateCamera (bool auto_rotate)
 Enables or disables automatic camera rotation based on device orientation.
void setButtonSettings (const ToolButtonSettings &settings)
 Applies new toolbar button visibility settings.
void setConnectingIcon (const StringView &image)
 Sets the icon shown while the camera is connecting.
void setConnectingMessage (const TranslatedString &message)
 Sets the message displayed while the camera is connecting.
void setErrorIcon (const StringView &image)
 Sets the icon shown when the camera is in an error state.
void setErrorState (bool is_in_error_state)
 Sets whether the camera is in an error state, updating the display accordingly.
virtual void setIconSizeMultiplier (fltp04 multiplier) override
 Sets a multiplier for toolbar icon sizes.
void setLightBrightness (fltp04 percent)
 Sets the brightness level of the camera light.
void setLog (LogPtr log)
 Sets the logger for this camera view.
void setReadyForImageCapture (bool ready)
 Sets whether the camera is ready to capture an image.
void setRecordingElapsedTime (const TimeSpan &span)
 Updates the displayed recording elapsed time.
virtual void setRecordingState (RecordingState recording_state)
 Sets the video recording state and updates the UI accordingly.
void setScreenshotFileName (const StringView &file_name)
 Sets the base file name used for screenshot files.
void setScreenshotPath (const File &file)
 Sets the file path used for saving screenshots.
void setSettingsVisible (bool visible, PopupInfo info)
 Shows or hides the settings widget.
void setSettingsWidget (QWidget *settings_widget, bool is_popup=false)
 Sets a custom settings widget for camera configuration.
virtual void setSwapMode (SwapMode mode) override
 Sets the buffer swap mode for rendering.
virtual void setTouchTheme (bool touch_theme) override
 Enables or disables the touch-optimized theme.
void setupForCaptureMode (bool capture_mode)
 Configures the view for image capture mode, adjusting UI elements.
void setVideoOutputPath (const File &file)
 Sets the file path used for saving recorded video.
virtual void showToolRibbon (bool show_ribbon) override
 Shows or hides the tool ribbon overlay.
QWidget * stack () const
 Returns the stacked widget used for switching between view modes.
virtual void startNewRecording (StringView file_name=StringView())
 Begins a new video recording session.
virtual void stopAndSaveRecording ()
 Stops the current recording and saves the video file.
void takeImage ()
 Captures a screenshot from the current camera frame.
ButtontakeImageButton () const
 Returns the screenshot capture button.
void tryToConnect ()
 Attempts to establish a connection to the camera source.
virtual void updateView () override
 Refreshes the camera view display.
File videoPath () const
 Returns the configured video output path.
void windowCapturedEvent (QEvent *event)
 Handles events forwarded from the embedded window container.

Protected Member Functions

bool finishRecord (File file) override
 Finishes recording and saves the video file.
void handleCameraError (int camera_error)
 Handles a camera error.
void handleScreenshotError (int id, int error, const QString &errorString)
 Handles a screenshot capture error.
void handleVideoError ()
 Handles a video recording error.
void init () override
 Initializes the camera view UI and connections.
virtual void invertScreenColors (bool invert) override
 Inverts the screen colors.
virtual bool pauseRecord (bool paused, const File &file) override
 Pauses or resumes recording.
void processCapturedImage (int index, const QImage &img)
 Processes a captured image frame.
bool startRecord (const File &file) override
 Starts recording video to a file.
virtual bool takeImage (const File &file) override
 Captures a single image to a file.
void updateCameraSourceCombo ()
 Updates the camera source combo box with available devices.
void updateCameraState (bool state)
 Updates the UI based on the camera active state.
void updateRecorderState (int state)
 Updates the UI based on the recorder state.
void updateRecorderTimespan ()
 Updates the displayed recording timespan.
Protected Member Functions inherited from PhysicalCameraView
 PhysicalCameraView ()
 Default constructor for subclass use only.
 PhysicalCameraView (const DynamicPointer< Camera > &camera, QWidget *parent=nullptr)
 Constructs a PhysicalCameraView for the given camera.
virtual QWidget * cameraToolbar () override
 Returns the camera toolbar widget.
virtual void cleanup ()
 Performs cleanup of camera resources before destruction.
void closeEvent (QCloseEvent *event) override
 Handles the widget close event, performing cleanup.
virtual ToolButtonSettings defaultButtonSettings () const
 Returns the default toolbar button visibility settings for this camera type.
void displayCamera (QCustomStackedWidget::StackAnimationDirection=QCustomStackedWidget::e_automatic)
 Displays the live camera panel.
virtual void displayCurrentViewTab (QCustomStackedWidget::StackAnimationDirection=QCustomStackedWidget::e_automatic)
 Switches to the appropriate view tab based on the current view mode.
void displayError (const TranslatedString &error, QCustomStackedWidget::StackAnimationDirection=QCustomStackedWidget::e_automatic)
 Displays the error panel with a message.
void displayFinder (QCustomStackedWidget::StackAnimationDirection=QCustomStackedWidget::e_automatic)
 Displays the connection/finder panel.
virtual void handleError ()
 Handles a camera error by updating the display and notifying the user.
virtual int heightForWidth (int w) const override
 Returns the preferred height for the given width, maintaining aspect ratio.
void keyPressEvent (QKeyEvent *event) override
 Handles key press events for camera shortcuts.
void keyReleaseEvent (QKeyEvent *event) override
 Handles key release events.
void networkRequestReady ()
 Handles a completed network request for the camera stream.
void pause ()
 Pauses the camera stream playback.
void processCapturedImage (const QPixmap &img)
 Processes a captured image for saving or display.
virtual File recordPath (StringView name, bool is_finished_recording) const
 Computes the file path for a recording.
void setExposureCompensation (int index)
 Sets the exposure compensation level.
void setMuted (bool)
 Mutes or unmutes the audio from the camera stream.
virtual QPointer< QWidget > settingsWidget ()
 Returns the settings widget for this camera view.
void setupRulers ()
 Creates and configures the measurement ruler overlays.
virtual QSize sizeHint () const override
 Returns the recommended size for this widget.
void sourceChanged ()
 Handles a change in the camera source.
QCustomStackedWidgetstackedWidget () const
 Returns the stacked widget used for switching between view panels.
void startCamera ()
 Starts the camera stream.
void stop ()
 Stops the camera stream completely.
void stopCamera ()
 Stops the camera stream.
void toggleLock ()
 Toggles the lock state of the camera controls.
void updateCameraRotation ()
 Updates the camera rotation based on device orientation or user settings.
void updateCameraWindowSize ()
 Resizes the camera rendering surface to match the widget dimensions.
void updateRulers ()
 Updates the ruler display to match the current zoom and position.
WindowContainerwindowContainer () const
 Returns the window container holding the camera rendering surface.

Protected Attributes

QAudioInput * m_audio_input = nullptr
 The audio input for recording.
Buttonm_camera_flash_button
 Button for toggling camera flash.
QMediaCaptureSession * m_capture_session = nullptr
 The media capture session.
QGraphicsLineItem * m_cross_hair_x = nullptr
 Horizontal cross-hair overlay line.
QGraphicsLineItem * m_cross_hair_y = nullptr
 Vertical cross-hair overlay line.
QGraphicsView * m_graphics_view
 The graphics view for video display.
QImageCapture * m_image_capture = nullptr
 The image capture handler.
QMediaPlayer * m_media_player = nullptr
 The media player for remote sources.
QMediaRecorder * m_media_recorder = nullptr
 The media recorder for video recording.
QCamera * m_q_camera = nullptr
 The Qt camera device.
File m_screenshot_location
 The file path for screenshot output.
QCustomComboBoxm_selection_combo
 Combo box for selecting camera sources.
LocalVideoRendererm_video_widget = nullptr
 The video renderer widget.
Protected Attributes inherited from PhysicalCameraView
File m_active_record_path
 The file path of the active recording.
bool m_application_exiting = false
 Whether the application is shutting down.
QPointer< QCustomSliderm_brightness_slider
 The slider controlling light brightness.
QPointer< QWidget > m_brightness_slider_widget
 Container widget for the brightness slider.
DynamicPointer< Cameram_camera
 The camera being displayed.
String m_connecting_icon
 Resource identifier for the connecting state icon.
TranslatedString m_connecting_message
 The message displayed while connecting.
String m_error_icon
 Resource identifier for the error state icon.
String m_file_name
 The current recording file name.
bool m_is_black_and_white = false
 Whether the display is in black and white mode.
bool m_is_capturing_image = false
 Whether an image capture is in progress.
bool m_is_in_error_state = false
 Whether the camera is in an error state.
bool m_is_inverted_color = false
 Whether the display colors are inverted.
bool m_is_playing = false
 Whether the camera stream is currently playing.
TranslatedString m_last_error
 The most recent error message.
bool m_lock_controls = false
 Whether the camera controls are locked.
LogPtr m_log
 Logger for camera events and errors.
String m_output_codec
 The active video codec identifier.
String m_output_mux
 The active video container/muxer identifier.
RecordingState m_recording_state = RecordingState::e_stopped
 The current video recording state.
Buttonm_ruler_button = nullptr
 The button to toggle ruler visibility.
QPointer< CameraRulerMenum_ruler_combo
 The ruler configuration menu widget.
String m_screenshot_file_name
 Base file name template for screenshots.
File m_screenshot_path
 The directory path for saving screenshots.
bool m_settings_popup = true
 Whether the settings widget displays as a popup.
QPointer< QWidget > m_settings_widget
 The optional settings widget for camera configuration.
bool m_show_edge_ruler = false
 Whether the side ruler is visible.
bool m_show_top_ruler = false
 Whether the top ruler is visible.
Rulerm_side_ruler = nullptr
 The side measurement ruler overlay.
QTimer * m_timeout_timer = nullptr
 Timer for connection timeout detection.
ToolButtonSettings m_tool_button_settings
 Current toolbar button visibility configuration.
bool m_tool_temp_showing = false
 Whether the toolbar is temporarily shown on hover.
Toolbarm_toolbar = nullptr
 The camera toolbar widget.
Rulerm_top_ruler = nullptr
 The top measurement ruler overlay.
File m_video_path
 The directory path for saving videos.
ViewMode m_view_mode = e_loading
 The current display mode of the view.
WindowContainerm_view_panel
 The container holding the camera rendering surface.
Ui::PhysicalCameraViewUI * ui
 The auto-generated UI form.

Additional Inherited Members

Public Types inherited from PhysicalCameraView
enum  ViewMode { e_loading , e_error , e_camera }
 Describes the current display mode of the camera view. More...
Static Public Member Functions inherited from PhysicalCameraView
static void ResetSettingsToDefaults ()
 Resets all camera-related application settings to their defaults.
static Buffer< PhysicalCameraView::OutputCodecSupportedOutputCodecs ()
 Returns a list of all video codecs supported by the current backend.
static Buffer< PhysicalCameraView::OutputMuxSupportedOutputMuxes ()
 Returns a list of all container/muxer formats supported by the current backend.
Static Public Attributes inherited from PhysicalCameraView
static ApplicationOption< TimeSpandefault_buffer_time
 Default video buffer duration.
static ApplicationOption< Angle< fltp08 > > default_camera_angle_offset
 Default camera rotation angle offset.
static ApplicationOption< Stringdefault_camera_server_location
 Default camera server URL or address.
static ApplicationOption< Stringdefault_camera_server_password
 Default camera server password.
static ApplicationOption< uint04default_output_bitrate
 Default video output bitrate.
static ApplicationOption< Stringdefault_output_codec
 Default video codec.
static ApplicationOption< Stringdefault_output_extension
 Default video file extension.
static ApplicationOption< uint04default_output_fps
 Default video output frames per second.
static ApplicationOption< Stringdefault_output_mux
 Default video container/muxer format.
static Resource< Filedefault_screenshot_folder
 Default folder for saving screenshots.
static Resource< Filedefault_video_folder
 Default folder for saving recorded videos.
static Dictionary< UUID, PhysicalCameraView * > s_active_logging
 Registry of camera views with active logging.
static ApplicationOption< bool > write_video_to_memory
 Whether to buffer video in memory before writing to disk.

Detailed Description

Provides access to a local camera on the system, such as a webcam or camera for a phone.


Definition at line 67 of file LocalPhysicalCameraView.h.

Constructor & Destructor Documentation

◆ LocalPhysicalCameraView()

LocalPhysicalCameraView::LocalPhysicalCameraView ( const DynamicPointer< Camera > & camera,
QWidget * parent = nullptr )

Constructs a view for a specific camera.

Parameters
[in]cameraThe camera design object.
[in]parentThe parent widget.

References PhysicalCameraView::camera().

◆ ~LocalPhysicalCameraView()

virtual LocalPhysicalCameraView::~LocalPhysicalCameraView ( )
virtual

Destructor.

Cleans up camera resources.

Member Function Documentation

◆ defaultScale()

fltp08 LocalPhysicalCameraView::defaultScale ( ) const

Gets the default scale factor for the camera view.

Returns
The default scale factor.

◆ event()

bool LocalPhysicalCameraView::event ( QEvent * event)
override

Handles general events for the camera view.

Parameters
[in]eventThe event to process.
Returns
True if the event was handled.

References event().

Referenced by event(), and resizeEvent().

◆ findBestFormat()

void LocalPhysicalCameraView::findBestFormat ( const QCameraDevice & camera_evice)

Selects the best camera format for the given device.

Parameters
[in]camera_eviceThe camera device to query formats from.

◆ finishRecord()

bool LocalPhysicalCameraView::finishRecord ( File file)
overrideprotectedvirtual

Finishes recording and saves the video file.

Parameters
[in]fileThe output file.
Returns
True if recording finished successfully.

Reimplemented from PhysicalCameraView.

◆ handleCameraError()

void LocalPhysicalCameraView::handleCameraError ( int camera_error)
protected

Handles a camera error.

Parameters
[in]camera_errorThe error code.

◆ handleScreenshotError()

void LocalPhysicalCameraView::handleScreenshotError ( int id,
int error,
const QString & errorString )
protected

Handles a screenshot capture error.

Parameters
[in]idThe capture ID.
[in]errorThe error code.
[in]errorStringThe error description.

◆ invertScreenColors()

virtual void LocalPhysicalCameraView::invertScreenColors ( bool invert)
overrideprotectedvirtual

Inverts the screen colors.

Parameters
[in]invertTrue to invert.

Reimplemented from PhysicalCameraView.

◆ pauseRecord()

virtual bool LocalPhysicalCameraView::pauseRecord ( bool paused,
const File & file )
overrideprotectedvirtual

Pauses or resumes recording.

Parameters
[in]pausedTrue to pause, false to resume.
[in]fileThe recording file.
Returns
True if the operation succeeded.

Reimplemented from PhysicalCameraView.

◆ processCapturedImage()

void LocalPhysicalCameraView::processCapturedImage ( int index,
const QImage & img )
protected

Processes a captured image frame.

Parameters
[in]indexThe capture index.
[in]imgThe captured image.

◆ resizeEvent()

virtual void LocalPhysicalCameraView::resizeEvent ( QResizeEvent * event)
overridevirtual

Handles resize events by adjusting the video and cross-hairs.

Parameters
[in]eventThe resize event.

References event().

◆ setCameraSource() [1/2]

virtual bool LocalPhysicalCameraView::setCameraSource ( const QCameraDevice & connection_id)
virtual

Sets the camera source from a QCameraDevice.

Parameters
[in]connection_idThe camera device to use.
Returns
True if the source was set successfully.

◆ setCameraSource() [2/2]

virtual bool LocalPhysicalCameraView::setCameraSource ( const StringView & connection_id)
overridevirtual

Sets the camera source by connection identifier string.

Parameters
[in]connection_idThe connection identifier.
Returns
True if the source was set successfully.

Reimplemented from PhysicalCameraView.

◆ setCameraZoom()

virtual void LocalPhysicalCameraView::setCameraZoom ( fltp08 zoom)
overridevirtual

Sets the zoom level for the camera display.

Parameters
[in]zoomThe zoom factor.

◆ setRemoteSource()

virtual void LocalPhysicalCameraView::setRemoteSource ( const StringView & remote)
virtual

Sets a remote media source URL for the camera view.

Parameters
[in]remoteThe remote source URL.

◆ startRecord()

bool LocalPhysicalCameraView::startRecord ( const File & file)
overrideprotectedvirtual

Starts recording video to a file.

Parameters
[in]fileThe output file.
Returns
True if recording started successfully.

Reimplemented from PhysicalCameraView.

◆ takeImage()

virtual bool LocalPhysicalCameraView::takeImage ( const File & file)
overrideprotectedvirtual

Captures a single image to a file.

Parameters
[in]fileThe output file.
Returns
True if the image was captured.

Reimplemented from PhysicalCameraView.

◆ updateCameraState()

void LocalPhysicalCameraView::updateCameraState ( bool state)
protected

Updates the UI based on the camera active state.

Parameters
[in]stateThe active state.

◆ updateRecorderState()

void LocalPhysicalCameraView::updateRecorderState ( int state)
protected

Updates the UI based on the recorder state.

Parameters
[in]stateThe recorder state.

◆ videoWidget()

LocalVideoRenderer * LocalPhysicalCameraView::videoWidget ( )

Gets the video renderer widget.

Returns
A pointer to the LocalVideoRenderer.

The documentation for this class was generated from the following file: