+-------------+ +------+
| | <-----> | User | ----.
| | +------+ |
| | A V
| | | +-----------+ +--------------+ +---------+
| | <---------+--> |VkvmDevice | <--> | SerialCommon | <--> | tSerial |
| | | +-----------+ +--------------+ +---------+
| VkvmControl | |
| | +----------+ +---------------+ +-----------------+
| | <--> | VkvmView | <--- | CaptureDevice | <--- | DirectShow/V4L2 |
| | +----------+ +---------------+ +-----------------+
| |
| | +--------------------------+
| | <--- | NativeSerialPortProvider |
| | +--------------------------+
| | +----------------------------+
| | <--- | NativeVideoCaptureProvider |
+-------------+ +----------------------------+
The VkvmControl
provides the main application window.
pcf::gui::VkvmControl
main control GUIpcf::video::NativeVideoCaptureProvider videoSource
instance which provides capture devicespcf::serial::NativeSerialPortProvider serialPortSource
instance which provides serial devicespcf::serial::VkvmDevice videoDevices
actual video capture handlepcf::serial::SerialPort serialPorts
actual serial handle
It receives device change notifications for serial and capture devices to
update the source lists and handle source device disconnections.
The VkvmControl
also owns sub classes for GUI control.
pcf::gui::<anonymous>::LicenseInfoWindow
shows the license in a new windowpcf::gui::<anonymous>::OnClickBox
helper class to add a mouse push callback to the status barpcf::gui::VkvmControlRotationPopup
pop-up window for the possible capture rotation settingspcf::gui::VkvmControlStatusPopup
pop-up window for the status bar event history
And a control background thread to forward longer inputs (paste text) to the periphery.
pcf::gui::VkvmControlSerialSend
forwards text in the given encoding to the periphery
The following classes implement further GUI functions used by VkvmControl
.
pcf::gui::DynWidthButton
add automatic width from label text function toHoverButton
pcf::gui::HoverButton
flatFl_Button
with hover style used for toolbar iconspcf::gui::HoverChoice
flatFl_Menu_
with hover style used for toolbar menu entriespcf::gui::HoverDropDown
flatFl_Menu_
with hover style used for toolbar drop-down listspcf::gui::SvgButton
button with optional hover style which shows an SVG image instead of text used for toolbar iconspcf::gui::ScrollableValueInput
adds value manipulation via mouse wheel to Fl_Value_Input (used insrc/pcf/video/CaptureVideo4Linux2.ipp
)pcf::gui::SvgView
SVG image viewer widget used for status bar iconspcf::gui::VkvmView
video capture device viewer
The SVG images used in this application can be found in src/pcf/gui/SvgData.hpp
and as original file in src/*.svg
.
These classes provide functions to list and handle serial devices for VKVM.
pcf::serial::SerialPort
single serial port descriptionpcf::serial::SerialPortList
list of serial port descriptionspcf::serial::SerialPortListChangeCallback
interface to receive serial port change notifications (plug/unplug)pcf::serial::NativeSerialPortProvider
platform specific serial port description provider (e.g. list available ports)pcf::serial::VkvmCallback
interface to receive VKVM command responsespcf::serial::VkvmDevice
handles a VKVM periphery device which all available commands; also allows to grab and forward the keyboard
The actual implementation of VkvmDevice
and NativeSerialPortProvider
is hidden
via PIMPLE pattern to allow easy replacement when linked dynamically.
VkvmDevice
and VkvmCallback
can be used to implement a custom interface
(e.g. for scripting) to the VKVM device. NativeSerialPortProvider
acts as helper
for this task.
The actual OS portable serial device implementation is done in src/libpcf/serial.h
and src/libpcf/serial.c
.
These classes provide functions to list and handle video capture devices for VKVM.
pcf::serial::CaptureCallback
interface to receive VKVM capture framespcf::serial::CaptureDeviceChangeCallback
interface to receive video capture device change notifications (plug/unplug)pcf::serial::CaptureDevice
handles a VKVM video capture devicepcf::serial::CaptureDeviceList
list of multiple capture device instancespcf::serial::CaptureDeviceProvider
interface to handle video capture device listspcf::serial::NativeVideoCaptureProvider
platform specific implementation ofCaptureDeviceProvider
NativeVideoCaptureProvider
uses DirectShow on Windows and Video4Linux2 on Linux.
The DirectShow implementations uses the native configuration dialog for the capture device.
The Video4Linux2 implementation uses a custom FLTK dialog to configure the capture device.
pcf::color::Rgb555
helper for RBG555 color formatpcf::color::Rgb565
helper for RBG565 color formatpcf::color::Rgb24
helper for RGB24 color formatpcf::color::Bgr24
helper for BGR24 color formatpcf::color::Rgb32
helper for RGB32 color formatpcf::color::Bgr32
helper for BGR32 color formatpcf::color::SplitColor
helper to hold and convert between RGB and HSV color values
pcf::image::blendOver()
blend foreground color over the opaque background colorpcf::image::drawCircleAA()
draw anti-aliased circlepcf::image::drawEllipseAA()
draw anti-aliased ellipsepcf::image::Filter
helper class to render an RGBA32 image with different visual filterspcf::image::SvgRenderer
SVG renderer based on nanosvg
pcf::gui::noSymLabelDraw()
FLTK drawing function to draw text without symbol interpretionpcf::gui::noSymLabelMeasure()
FLTK measurement function to draw text without symbol interpretionpcf::gui::adjDpiH()
returns pixel width equivalent for 96 DPIpcf::gui::adjDpiV()
returns pixel height equivalent for 96 DPIpcf::gui::LinkedHoverState
interface used to link the hover state of multiple widgets (implemented inSvgButton
)PCF_GUI_BIND()
creates a static member function which maps the FLTK callback to a class methodPCF_GUI_CALLBACK()
derives the static member function name created viaPCF_GUI_BIND()
cvutf8_toUtf16()
converts a null-terminated UTF-8 string to UTF-16cvutf8_toUtf16N()
converts a fixed length UTF-8 string to UTF-16cvutf8_fromUtf16()
converts a null-terminated UTF-16 string to UTF-8cvutf8_fromUtf16N()
converts a fixed length UTF-16 string to UTF-8ncs_cmp()
compares two null-terminated string with natural orderncs_icmp()
compares two null-terminated string with natural order case-insensitive
pcf::CloneableInterface<Base>
interface for classes that implement the cloneable APIpcf::Cloneable
implements theCloneableInterface<Derived, Base>
pcf::ScopeExit
helper class to implementmakeScopeExit()
pcf::makeScopeExit()
executes the given function at end of scopepcf::xEINTR()
Linux specific helper to redo an ioctl onEINTR
errorPCF_IS_WIN
macro which is1
for Windows platforms and not defined otherwisePCF_IS_NO_WIN
macro which is1
for non-Windows platforms and not defined otherwisePCF_IS_LINUX
macro which is1
for Linux platforms and not defined otherwisePCF_IS_NO_LINUX
macro which is1
for non-Linux platforms and not defined otherwisePCF_PATH_SEP
macro which evaluates to the platform typical path separatorPCF_UNUSED()
macro to suppress variable not used warningsPCF_PRINTF()
macro to tell the compiler to warn if incorrect arguments have been passed to aprintf()
-like function
Firmware �--------
@todo