\hypertarget{class_laser_cutter}{}\doxysection{Laser\+Cutter Class Reference}
\label{class_laser_cutter}\index{LaserCutter@{LaserCutter}}


Main Class for the whole application.  




{\ttfamily \#include $<$lasercutter.\+h$>$}

Inheritance diagram for Laser\+Cutter\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{class_laser_cutter}
\end{center}
\end{figure}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct_laser_cutter_1_1s_camera}{s\+Camera}}
\begin{DoxyCompactList}\small\item\em Structure for Camera info, maximum resolution and currenlty seleceted camera. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_laser_cutter_a0d39994a9179da72d8ceda7c829056af}{Laser\+Cutter}} ()
\begin{DoxyCompactList}\small\item\em Default c\textquotesingle{}tor. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_laser_cutter_a3a5b764ea850b2975b064b9d46375f28}{$\sim$\+Laser\+Cutter}} ()
\begin{DoxyCompactList}\small\item\em Default d\textquotesingle{}tor. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a7c6056bb34aab125078d4be37bee90c4}{Rotate\+Init}} (int a\+Rotate)
\begin{DoxyCompactList}\small\item\em Initializes the dial in the ui. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_ad6bf3dcb61aac4d6252b6994e634ce84}{Svg\+Label\+Info}} (const \mbox{\hyperlink{class_svg_label}{Svg\+Label}} \&a\+Slabel)
\begin{DoxyCompactList}\small\item\em Obtains the information about the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instance. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{class_laser_cutter_a4b291d8ceffc822968f3119e845f8025}{mouse\+Press\+Event}} (Q\+Mouse\+Event $\ast$event) override
\begin{DoxyCompactList}\small\item\em mouse\+Press\+Event Overloaded event of the mouse\+Press handling \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a116fac55bb07565c8dbefa4f4dfe1eb3}{key\+Release\+Event}} (Q\+Key\+Event $\ast$event) override
\begin{DoxyCompactList}\small\item\em key\+Release\+Event Overloaded event of the key\+Release handling \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a3b1b28cafcc82dbd85566ebfc7a60def}{close\+Event}} (Q\+Close\+Event $\ast$event) override
\begin{DoxyCompactList}\small\item\em close\+Event Overloaded event of the close\+Event handling \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Private Slots}
\begin{DoxyCompactItemize}
\item 
bool \mbox{\hyperlink{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}{Perspective\+Transform}} ()
\begin{DoxyCompactList}\small\item\em Perspective\+Transform. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a9fe84a6cfa66fe18ec0825ba587b6f56}{Show\+Port\+Info}} (int idx)
\begin{DoxyCompactList}\small\item\em Shows the ports info based on the idx. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a3b4c27e3856cc39788c4ea8e5f3cc1f3}{Initialize}} ()
\begin{DoxyCompactList}\small\item\em Initialization of the app. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a0fc3a6d1223b33e1c66c3bdb5ce876ee}{Reset\+App}} ()
\begin{DoxyCompactList}\small\item\em Reset of the app. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a1696e3574cc417835d3bfa6a7a360625}{Cutting\+Finished}} (int exit\+Code, Q\+Process\+::\+Exit\+Status exit\+Status)
\begin{DoxyCompactList}\small\item\em Prompts the user if the cutting process has finished. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{class_laser_cutter_a85f8f7673d12cf09a41741a4f08f11bf}{Update\+Cameras\+Menu}} ()
\begin{DoxyCompactList}\small\item\em Updates the Devices menu when it is about to show. \end{DoxyCompactList}\item 
Q\+PointF \mbox{\hyperlink{class_laser_cutter_a204369615ceeaf8e3d27cae966b84ea9}{Get\+Rotated\+Point}} (const Q\+PointF \&p, const Q\+PointF \&center, const qreal \&angle\+Rads)
\begin{DoxyCompactList}\small\item\em Get\+Rotated\+Point Calculates the coordinates of a point rotated around a refernce point. \end{DoxyCompactList}\item 
Q\+RectF \mbox{\hyperlink{class_laser_cutter_acddea249377ffe7c1377fc67fa3a6531}{Get\+Minimum\+Bounding\+Rect}} (const Q\+Rect \&r, const qreal \&angle\+Rads)
\begin{DoxyCompactList}\small\item\em Get\+Minimum\+Bounding\+Rect Calculates the minimum bounding box of a rotated image. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a6dd272800105787ee15d1570e87a60d2}{Rotate\+Label}} ()
\begin{DoxyCompactList}\small\item\em Rotate\+Label Rotates an \mbox{\hyperlink{class_svg_label}{Svg\+Label}}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_ad9772844389cc726460c7a6bbff21b15}{Init\+Cutter\+Info}} ()
\begin{DoxyCompactList}\small\item\em Initializes the cutter parameters. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a9667a227b1867463ffc60def05cfecc3}{Set\+Camera}} (const Q\+Camera\+Info \&camera\+Info)
\begin{DoxyCompactList}\small\item\em Sets the Camera. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_aaaf303a9d8533230ed37b00524ec754d}{Display\+Camera\+Error}} ()
\begin{DoxyCompactList}\small\item\em Displays the camera error. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_ad8702f736c96e6cda150ea8bd5b3d529}{Open\+Files}} ()
\begin{DoxyCompactList}\small\item\em Opens S\+VG files from the selected folder. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_adb2be13114dac3d249683c17deb010fe}{Save\+X\+M\+L\+\_\+copies}} ()
\begin{DoxyCompactList}\small\item\em Saves the currently displayed Svg\+Labels. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a9c811bc7bbd24267a9c6b0e25bf1c571}{Clear\+Workspace}} ()
\begin{DoxyCompactList}\small\item\em Clears the workspace (image\+\_\+destination \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance) \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a8a3cbbc7c1e91826a306dc659b7e8864}{Get\+Image\+Positions}} ()
\begin{DoxyCompactList}\small\item\em Acquires the position of each of the images. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a32e4bec55a7013974aed2a8feafb6c8c}{Setup\+Ui\+Frame\+Size}} ()
\begin{DoxyCompactList}\small\item\em Sets up the dimensions of the {\ttfamily camera} frame and the {\ttfamily image\+\_\+destination} \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_ae78edbaeebd3e6e4017fcd55ff7f347e}{Update\+Camera\+Device}} (Q\+Action $\ast$action)
\begin{DoxyCompactList}\small\item\em Updates the camera device on action trigger. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_laser_cutter_aca73fbea5f93bfc1b494862cd5780e6f}{Camera\+Marker\+Detection}} ()
\begin{DoxyCompactList}\small\item\em Detection of Aruco\+Markers from camera input. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a9349a8d6ca83f11ca0f565612c8efff0}{Get\+Transfer\+Ratio}} ()
\begin{DoxyCompactList}\small\item\em Calculates the transform ratio for each axis (px$\sim$mm) \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_ad7bc1e6fd46c31b5ac21d1f355d55399}{Transform\+\_\+to\+\_\+normalized}} (double $\ast$a\+Transform\+\_\+ratio, Q\+Label \&label)
\begin{DoxyCompactList}\small\item\em Normalizes a Q\+Label\textquotesingle{}s dimensions. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_aa2b3344923891eb2bd262d764c09faa5}{Set\+Image\+Source}} (Q\+String a\+Path)
\begin{DoxyCompactList}\small\item\em Sets up the image\+\_\+source \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance. \end{DoxyCompactList}\item 
double \mbox{\hyperlink{class_laser_cutter_af4715575eb24965fafaac80c680f6735}{Pythagoras}} (const cv\+::\+Point2d \&a\+Uno, const cv\+::\+Point2d \&a\+Duo)
\begin{DoxyCompactList}\small\item\em Calculates the Euclidian distance between two points in the image. \end{DoxyCompactList}\item 
Q\+Pixmap \mbox{\hyperlink{class_laser_cutter_af68198ceee750956147daff672855ec7}{Mat\+To\+Pixmap}} (cv\+::\+Mat src)
\begin{DoxyCompactList}\small\item\em Converts cv\+::\+Mat to Q\+Pixmap. \end{DoxyCompactList}\item 
cv\+::\+Mat \mbox{\hyperlink{class_laser_cutter_a06c1296661731fc44a0396f1c5714cdc}{Q\+Image\+To\+Mat}} (const Q\+Image \&in\+Image, bool in\+Clone\+Image\+Data)
\begin{DoxyCompactList}\small\item\em Converts Q\+Image to cv\+::\+Mat. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_laser_cutter_a5c9e5ebbc98f67459a174774941657a2}{Mat\+Is\+Equal}} (const cv\+::\+Mat \&mat1, const cv\+::\+Mat \&mat2)
\begin{DoxyCompactList}\small\item\em Determines whether two cv\+::\+Mat instances are equal. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_laser_cutter_a56376616b9512dcacd1366d4e7f9778f}{Check\+Svgs\+Positions}} ()
\begin{DoxyCompactList}\small\item\em Checks the positions of the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instance whether they are within the bounds of the material. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_af1d88d15db8c365d638c036c09ecdb3d}{Track\+Material}} (bool tracking\+\_\+enabled)
\begin{DoxyCompactList}\small\item\em Track the material. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_afdfbed1bd13fc54a294761ff67768a36}{Fill\+Ports\+Info}} ()
\begin{DoxyCompactList}\small\item\em Fills the C\+OM ports Info. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_a0c2da6132023342c279dec0ccf2f6126}{Hotkeys\+Dialog}} ()
\begin{DoxyCompactList}\small\item\em Creates an instance of the \mbox{\hyperlink{class_hotkeys}{Hotkeys}} class.(new window) \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_laser_cutter_aa703bb05e9af3b5eda0cadd35f46ffa4}{Show\+Manual}} ()
\begin{DoxyCompactList}\small\item\em Shows the user manual. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
Ui\+::\+Laser\+Cutter $\ast$ \mbox{\hyperlink{class_laser_cutter_ab006d99ba478285e689a6674c7b0e2f0}{ui}}
\item 
size\+\_\+t \mbox{\hyperlink{class_laser_cutter_a2afaf8dd7222093a7693fdd35b35bd3a}{m\+\_\+image\+\_\+source\+\_\+counter}}
\begin{DoxyCompactList}\small\item\em Holds the counter for the image placement. \end{DoxyCompactList}\item 
Q\+Scoped\+Pointer$<$ Q\+Camera $>$ \mbox{\hyperlink{class_laser_cutter_a5f7d44c741b7b6fe10c1fc20ee6e4015}{m\+\_\+camera}}
\begin{DoxyCompactList}\small\item\em Used for Camera Hanlding, before the start of the application. \end{DoxyCompactList}\item 
Q\+Action\+Group $\ast$ \mbox{\hyperlink{class_laser_cutter_abc2a8babe8c63b26816b6ff9e5fd2bca}{m\+\_\+video\+Devices\+Group}}
\begin{DoxyCompactList}\small\item\em Action\+Group for the Devices menu. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{struct_laser_cutter_1_1s_camera}{Laser\+Cutter\+::s\+Camera}} \mbox{\hyperlink{class_laser_cutter_aba40aca03dc5b3dcf2922581bb34862a}{m\+\_\+\+Cam\+Info}}
\item 
std\+::vector$<$ cv\+::\+Point\+\_\+$<$ double $>$ $>$ \mbox{\hyperlink{class_laser_cutter_a677df0b94bf5340a004b28cc856cff39}{m\+\_\+corners}}
\begin{DoxyCompactList}\small\item\em Holds the position of the Aruco\+Marker\textquotesingle{}s corners (corners with index 0) \end{DoxyCompactList}\item 
double \mbox{\hyperlink{class_laser_cutter_a6087667cb976880e254bdd4b369fa234}{m\+\_\+transfer\+\_\+ratio}} \mbox{[}2\mbox{]}
\begin{DoxyCompactList}\small\item\em Transform ratio of px$\sim$mm for each axis (x;y) \end{DoxyCompactList}\item 
std\+::vector$<$ double $>$ \mbox{\hyperlink{class_laser_cutter_ae2d5de0b22517b3fe986fbe61f0e2e45}{m\+\_\+cutting\+\_\+area}}
\begin{DoxyCompactList}\small\item\em Cutting area dimensions of the laser cutter (width, height) \end{DoxyCompactList}\item 
Q\+String \mbox{\hyperlink{class_laser_cutter_a66d4c4147a8d20ef49b09089cb2c080d}{m\+\_\+\+Path\+\_\+to\+\_\+source}}
\begin{DoxyCompactList}\small\item\em Holds the path to the folder of the source images. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{class_laser_cutter_a2cf4916339530d42a7152ed5ba0e3e0a}{m\+\_\+rotate}}
\begin{DoxyCompactList}\small\item\em Rotation of the currently selected \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instance. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{class_laser_cutter_ae9eceb497fb301322cde1e62415a08b7}{m\+\_\+label\+\_\+tab\+\_\+index}}
\begin{DoxyCompactList}\small\item\em Used for cycling through the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instances by pressing \textquotesingle{}Tab\textquotesingle{}. \end{DoxyCompactList}\item 
std\+::array$<$ size\+\_\+t, 2 $>$ \mbox{\hyperlink{class_laser_cutter_a2d7f17374dc04951a9715b65cd2434b0}{m\+\_\+img\+\_\+source\+\_\+placement}}
\begin{DoxyCompactList}\small\item\em Utilized for placing the image in the image\+\_\+source \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance. \end{DoxyCompactList}\item 
std\+::vector$<$ Q\+String $>$ \mbox{\hyperlink{class_laser_cutter_a521680ae7e3a134c44fff0294764732e}{m\+\_\+res}}
\begin{DoxyCompactList}\small\item\em Vector of paths to the source images. \end{DoxyCompactList}\item 
Q\+Elapsed\+Timer $\ast$ \mbox{\hyperlink{class_laser_cutter_a24a03ffd8ff9fe207b609df82a7ee561}{m\+\_\+tm}}
\begin{DoxyCompactList}\small\item\em Timer used for \mbox{\hyperlink{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}{Perspective\+Transform()}} \end{DoxyCompactList}\item 
Q\+Timer $\ast$ \mbox{\hyperlink{class_laser_cutter_a692bd6a91ea939eadf31cda7b0383d67}{m\+\_\+timer}}
\begin{DoxyCompactList}\small\item\em Timer, its timeout used to call \mbox{\hyperlink{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}{Perspective\+Transform()}} \end{DoxyCompactList}\item 
cv\+::\+Video\+Capture \mbox{\hyperlink{class_laser_cutter_a3459f9abf461d5e3527cf199728d912d}{input\+Video}}
\begin{DoxyCompactList}\small\item\em Used for Camera Hanlding, after the start of the application. \end{DoxyCompactList}\item 
Q\+Size \mbox{\hyperlink{class_laser_cutter_a9ad0e95614e99a0a06fe73bca7abe522}{m\+\_\+dimensions}}
\begin{DoxyCompactList}\small\item\em Dimensions of the cutting area. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_laser_cutter_a44fdc49479047cb7b1c3073deec074ad}{m\+\_\+tracking\+\_\+flag}}
\item 
Q\+Point \mbox{\hyperlink{class_laser_cutter_a4f22d6121f0bfc2401f9290ce6f793c2}{m\+\_\+centroid}}
\begin{DoxyCompactList}\small\item\em New position of the tracked centroid. \end{DoxyCompactList}\item 
Q\+Point \mbox{\hyperlink{class_laser_cutter_a59d99f2a0bedd10ac189d1296696a199}{m\+\_\+old\+\_\+centroid}}
\begin{DoxyCompactList}\small\item\em Old position of the tracked centroid. \end{DoxyCompactList}\item 
Q\+String \mbox{\hyperlink{class_laser_cutter_a44a6af355c1bce769787f048e5d7bfeb}{final\+\_\+port}}
\begin{DoxyCompactList}\small\item\em Selected C\+OM port, used for the Svg2\+Gcode\+Send as an argument. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_hotkeys}{Hotkeys}} $\ast$ \mbox{\hyperlink{class_laser_cutter_a129a6b7440e3c5142025b793200a42d4}{m\+\_\+hotkeys}}
\begin{DoxyCompactList}\small\item\em Pointer to the \mbox{\hyperlink{class_hotkeys}{Hotkeys}} class instance. \end{DoxyCompactList}\item 
Q\+Process $\ast$ \mbox{\hyperlink{class_laser_cutter_a03238529f8b415207f01f3ac10f436d3}{m\+\_\+process\+\_\+cut}}
\begin{DoxyCompactList}\small\item\em Pointer to the Svg2\+Gcode\+Send process. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Main Class for the whole application. 

Handles most of the funcionalities of from the user\textquotesingle{}s side. Implements the Open\+CV methods and controls the workflow of the application. 

\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_laser_cutter_a0d39994a9179da72d8ceda7c829056af}\label{class_laser_cutter_a0d39994a9179da72d8ceda7c829056af}} 
\index{LaserCutter@{LaserCutter}!LaserCutter@{LaserCutter}}
\index{LaserCutter@{LaserCutter}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{LaserCutter()}{LaserCutter()}}
{\footnotesize\ttfamily Laser\+Cutter\+::\+Laser\+Cutter (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Default c\textquotesingle{}tor. 

Initializes the UI, connects majority of the signals and creates a list of available cameras \mbox{\Hypertarget{class_laser_cutter_a3a5b764ea850b2975b064b9d46375f28}\label{class_laser_cutter_a3a5b764ea850b2975b064b9d46375f28}} 
\index{LaserCutter@{LaserCutter}!````~LaserCutter@{$\sim$LaserCutter}}
\index{````~LaserCutter@{$\sim$LaserCutter}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{$\sim$LaserCutter()}{~LaserCutter()}}
{\footnotesize\ttfamily Laser\+Cutter\+::$\sim$\+Laser\+Cutter (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Default d\textquotesingle{}tor. 

Deletes the UI and removes the T\+E\+MP directories 

\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{class_laser_cutter_aca73fbea5f93bfc1b494862cd5780e6f}\label{class_laser_cutter_aca73fbea5f93bfc1b494862cd5780e6f}} 
\index{LaserCutter@{LaserCutter}!CameraMarkerDetection@{CameraMarkerDetection}}
\index{CameraMarkerDetection@{CameraMarkerDetection}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{CameraMarkerDetection()}{CameraMarkerDetection()}}
{\footnotesize\ttfamily bool Laser\+Cutter\+::\+Camera\+Marker\+Detection (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Detection of Aruco\+Markers from camera input. 

Detects the four markers from the selected camera. If the markers are not detected after five seconds, returns false. Also stores the positions of each of the \mbox{[}0\mbox{]} corneres of the Arucos to m\+\_\+corners variable \begin{DoxyReturn}{Returns}
Returns true if the all four markers are found, otherwise false 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_a56376616b9512dcacd1366d4e7f9778f}\label{class_laser_cutter_a56376616b9512dcacd1366d4e7f9778f}} 
\index{LaserCutter@{LaserCutter}!CheckSvgsPositions@{CheckSvgsPositions}}
\index{CheckSvgsPositions@{CheckSvgsPositions}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{CheckSvgsPositions()}{CheckSvgsPositions()}}
{\footnotesize\ttfamily bool Laser\+Cutter\+::\+Check\+Svgs\+Positions (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Checks the positions of the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instance whether they are within the bounds of the material. 

Takes an image from the camera input and applies binary thresholding (inverse, non-\/inverse). Grabs the image from the image\+\_\+destination \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance with black and white background. Applies the same thresholding. The white\+\_\+label is then negated. A\+N\+Ds the corresponding images and compares them with original(of the camera frame thresholded images). If the Images are equal, objects are within the bounds of the material \begin{DoxyReturn}{Returns}
Returns true if images are within the bounds of the material, otherwise false. 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_a9c811bc7bbd24267a9c6b0e25bf1c571}\label{class_laser_cutter_a9c811bc7bbd24267a9c6b0e25bf1c571}} 
\index{LaserCutter@{LaserCutter}!ClearWorkspace@{ClearWorkspace}}
\index{ClearWorkspace@{ClearWorkspace}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{ClearWorkspace()}{ClearWorkspace()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Clear\+Workspace (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Clears the workspace (image\+\_\+destination \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance) 

\mbox{\Hypertarget{class_laser_cutter_a3b1b28cafcc82dbd85566ebfc7a60def}\label{class_laser_cutter_a3b1b28cafcc82dbd85566ebfc7a60def}} 
\index{LaserCutter@{LaserCutter}!closeEvent@{closeEvent}}
\index{closeEvent@{closeEvent}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{closeEvent()}{closeEvent()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::close\+Event (\begin{DoxyParamCaption}\item[{Q\+Close\+Event $\ast$}]{event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}}



close\+Event Overloaded event of the close\+Event handling 

Pops a dialog about quitting the application, automatically saves the {\bfseries{path}} to the image source folder to the config file 
\begin{DoxyParams}{Parameters}
{\em event} & close event \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_a1696e3574cc417835d3bfa6a7a360625}\label{class_laser_cutter_a1696e3574cc417835d3bfa6a7a360625}} 
\index{LaserCutter@{LaserCutter}!CuttingFinished@{CuttingFinished}}
\index{CuttingFinished@{CuttingFinished}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{CuttingFinished}{CuttingFinished}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Cutting\+Finished (\begin{DoxyParamCaption}\item[{int}]{exit\+Code,  }\item[{Q\+Process\+::\+Exit\+Status}]{exit\+Status }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}



Prompts the user if the cutting process has finished. 


\begin{DoxyParams}{Parameters}
{\em exit\+Code} & Exit\+Code of the Svg2\+Gcode\+Send process \\
\hline
{\em exit\+Status} & \{Parameter unused\} \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_aaaf303a9d8533230ed37b00524ec754d}\label{class_laser_cutter_aaaf303a9d8533230ed37b00524ec754d}} 
\index{LaserCutter@{LaserCutter}!DisplayCameraError@{DisplayCameraError}}
\index{DisplayCameraError@{DisplayCameraError}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{DisplayCameraError()}{DisplayCameraError()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Display\+Camera\+Error (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Displays the camera error. 

\mbox{\Hypertarget{class_laser_cutter_afdfbed1bd13fc54a294761ff67768a36}\label{class_laser_cutter_afdfbed1bd13fc54a294761ff67768a36}} 
\index{LaserCutter@{LaserCutter}!FillPortsInfo@{FillPortsInfo}}
\index{FillPortsInfo@{FillPortsInfo}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{FillPortsInfo()}{FillPortsInfo()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Fill\+Ports\+Info (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Fills the C\+OM ports Info. 

\mbox{\Hypertarget{class_laser_cutter_a8a3cbbc7c1e91826a306dc659b7e8864}\label{class_laser_cutter_a8a3cbbc7c1e91826a306dc659b7e8864}} 
\index{LaserCutter@{LaserCutter}!GetImagePositions@{GetImagePositions}}
\index{GetImagePositions@{GetImagePositions}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{GetImagePositions()}{GetImagePositions()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Get\+Image\+Positions (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Acquires the position of each of the images. 

The position is with regards to the top left corner \mbox{[}0,0\mbox{]}. All of the images on the image\+\_\+destination \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance \mbox{\Hypertarget{class_laser_cutter_acddea249377ffe7c1377fc67fa3a6531}\label{class_laser_cutter_acddea249377ffe7c1377fc67fa3a6531}} 
\index{LaserCutter@{LaserCutter}!GetMinimumBoundingRect@{GetMinimumBoundingRect}}
\index{GetMinimumBoundingRect@{GetMinimumBoundingRect}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{GetMinimumBoundingRect()}{GetMinimumBoundingRect()}}
{\footnotesize\ttfamily Q\+RectF Laser\+Cutter\+::\+Get\+Minimum\+Bounding\+Rect (\begin{DoxyParamCaption}\item[{const Q\+Rect \&}]{r,  }\item[{const qreal \&}]{angle\+Rads }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Get\+Minimum\+Bounding\+Rect Calculates the minimum bounding box of a rotated image. 


\begin{DoxyParams}{Parameters}
{\em r} & The bounding box of the image \\
\hline
{\em angle\+Rads} & Angle of rotation \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Returns the minimum bounding box 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_a204369615ceeaf8e3d27cae966b84ea9}\label{class_laser_cutter_a204369615ceeaf8e3d27cae966b84ea9}} 
\index{LaserCutter@{LaserCutter}!GetRotatedPoint@{GetRotatedPoint}}
\index{GetRotatedPoint@{GetRotatedPoint}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{GetRotatedPoint()}{GetRotatedPoint()}}
{\footnotesize\ttfamily Q\+PointF Laser\+Cutter\+::\+Get\+Rotated\+Point (\begin{DoxyParamCaption}\item[{const Q\+PointF \&}]{p,  }\item[{const Q\+PointF \&}]{center,  }\item[{const qreal \&}]{angle\+Rads }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Get\+Rotated\+Point Calculates the coordinates of a point rotated around a refernce point. 


\begin{DoxyParams}{Parameters}
{\em p} & Point being rotated \\
\hline
{\em center} & Point of rotation (reference point) \\
\hline
{\em angle\+Rads} & Angle of rotation on radians \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Returns the new coordinates of the rotated point 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_a9349a8d6ca83f11ca0f565612c8efff0}\label{class_laser_cutter_a9349a8d6ca83f11ca0f565612c8efff0}} 
\index{LaserCutter@{LaserCutter}!GetTransferRatio@{GetTransferRatio}}
\index{GetTransferRatio@{GetTransferRatio}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{GetTransferRatio()}{GetTransferRatio()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Get\+Transfer\+Ratio (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Calculates the transform ratio for each axis (px$\sim$mm) 

\mbox{\Hypertarget{class_laser_cutter_a0c2da6132023342c279dec0ccf2f6126}\label{class_laser_cutter_a0c2da6132023342c279dec0ccf2f6126}} 
\index{LaserCutter@{LaserCutter}!HotkeysDialog@{HotkeysDialog}}
\index{HotkeysDialog@{HotkeysDialog}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{HotkeysDialog()}{HotkeysDialog()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Hotkeys\+Dialog (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Creates an instance of the \mbox{\hyperlink{class_hotkeys}{Hotkeys}} class.(new window) 

\mbox{\Hypertarget{class_laser_cutter_ad9772844389cc726460c7a6bbff21b15}\label{class_laser_cutter_ad9772844389cc726460c7a6bbff21b15}} 
\index{LaserCutter@{LaserCutter}!InitCutterInfo@{InitCutterInfo}}
\index{InitCutterInfo@{InitCutterInfo}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{InitCutterInfo()}{InitCutterInfo()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Init\+Cutter\+Info (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Initializes the cutter parameters. 

Initializes the cutter parameters, width and height of the cutting area and the path to the image source folder, from the config.\+xml file. \mbox{\Hypertarget{class_laser_cutter_a3b4c27e3856cc39788c4ea8e5f3cc1f3}\label{class_laser_cutter_a3b4c27e3856cc39788c4ea8e5f3cc1f3}} 
\index{LaserCutter@{LaserCutter}!Initialize@{Initialize}}
\index{Initialize@{Initialize}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{Initialize}{Initialize}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Initialize (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}



Initialization of the app. 

Calls the \mbox{\hyperlink{class_laser_cutter_ad9772844389cc726460c7a6bbff21b15}{Init\+Cutter\+Info()}} method to obtain the neccessary paramters. Hands over the camera transmission to the \mbox{\hyperlink{class_laser_cutter_aca73fbea5f93bfc1b494862cd5780e6f}{Camera\+Marker\+Detection()}} method, and later to the \mbox{\hyperlink{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}{Perspective\+Transform()}} method. Restarts the timers in place. and initializes the spin\+Box values. If marker detection succeeds, calls \mbox{\hyperlink{class_laser_cutter_a32e4bec55a7013974aed2a8feafb6c8c}{Setup\+Ui\+Frame\+Size()}}, \mbox{\hyperlink{class_laser_cutter_a9349a8d6ca83f11ca0f565612c8efff0}{Get\+Transfer\+Ratio()}} methods, creates the Temp folders, calls \mbox{\hyperlink{namespace_file_handler_a74b90199052d0d380ae6bebf642f69a1}{Copy\+Svgs\+From\+Dir()}}. Connects the neccessary signals. \mbox{\Hypertarget{class_laser_cutter_a116fac55bb07565c8dbefa4f4dfe1eb3}\label{class_laser_cutter_a116fac55bb07565c8dbefa4f4dfe1eb3}} 
\index{LaserCutter@{LaserCutter}!keyReleaseEvent@{keyReleaseEvent}}
\index{keyReleaseEvent@{keyReleaseEvent}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{keyReleaseEvent()}{keyReleaseEvent()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::key\+Release\+Event (\begin{DoxyParamCaption}\item[{Q\+Key\+Event $\ast$}]{event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}}



key\+Release\+Event Overloaded event of the key\+Release handling 

The event allows for the usage of hotkeys in the application 
\begin{DoxyParams}{Parameters}
{\em event} & key release event \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_a5c9e5ebbc98f67459a174774941657a2}\label{class_laser_cutter_a5c9e5ebbc98f67459a174774941657a2}} 
\index{LaserCutter@{LaserCutter}!MatIsEqual@{MatIsEqual}}
\index{MatIsEqual@{MatIsEqual}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{MatIsEqual()}{MatIsEqual()}}
{\footnotesize\ttfamily bool Laser\+Cutter\+::\+Mat\+Is\+Equal (\begin{DoxyParamCaption}\item[{const cv\+::\+Mat \&}]{mat1,  }\item[{const cv\+::\+Mat \&}]{mat2 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Determines whether two cv\+::\+Mat instances are equal. 


\begin{DoxyParams}{Parameters}
{\em mat1} & Matrix A \\
\hline
{\em mat2} & Matrix B \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Returns true, if A and B are equal, otherwise false 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_af68198ceee750956147daff672855ec7}\label{class_laser_cutter_af68198ceee750956147daff672855ec7}} 
\index{LaserCutter@{LaserCutter}!MatToPixmap@{MatToPixmap}}
\index{MatToPixmap@{MatToPixmap}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{MatToPixmap()}{MatToPixmap()}}
{\footnotesize\ttfamily Q\+Pixmap Laser\+Cutter\+::\+Mat\+To\+Pixmap (\begin{DoxyParamCaption}\item[{cv\+::\+Mat}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Converts cv\+::\+Mat to Q\+Pixmap. 


\begin{DoxyParams}{Parameters}
{\em src} & Source image \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Returns the converted Q\+Pixmap 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_a4b291d8ceffc822968f3119e845f8025}\label{class_laser_cutter_a4b291d8ceffc822968f3119e845f8025}} 
\index{LaserCutter@{LaserCutter}!mousePressEvent@{mousePressEvent}}
\index{mousePressEvent@{mousePressEvent}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{mousePressEvent()}{mousePressEvent()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::mouse\+Press\+Event (\begin{DoxyParamCaption}\item[{Q\+Mouse\+Event $\ast$}]{event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}}



mouse\+Press\+Event Overloaded event of the mouse\+Press handling 

The press event clears focus (deselects) of the UI components 
\begin{DoxyParams}{Parameters}
{\em event} & mouse press event \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_ad8702f736c96e6cda150ea8bd5b3d529}\label{class_laser_cutter_ad8702f736c96e6cda150ea8bd5b3d529}} 
\index{LaserCutter@{LaserCutter}!OpenFiles@{OpenFiles}}
\index{OpenFiles@{OpenFiles}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{OpenFiles()}{OpenFiles()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Open\+Files (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Opens S\+VG files from the selected folder. 

A dialog window appears wanting to select the source image folder. Clears the {\bfseries{T\+E\+MP}} dirs and the {\bfseries{image\+\_\+source}}, {\bfseries{image\+\_\+destinantion}} \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instances. Copies the images from the selected folder to the {\ttfamily Temp\+\_\+img\+\_\+source} folder \mbox{\Hypertarget{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}\label{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}} 
\index{LaserCutter@{LaserCutter}!PerspectiveTransform@{PerspectiveTransform}}
\index{PerspectiveTransform@{PerspectiveTransform}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{PerspectiveTransform}{PerspectiveTransform}}
{\footnotesize\ttfamily bool Laser\+Cutter\+::\+Perspective\+Transform (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}



Perspective\+Transform. 

\begin{DoxyReturn}{Returns}

\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_af4715575eb24965fafaac80c680f6735}\label{class_laser_cutter_af4715575eb24965fafaac80c680f6735}} 
\index{LaserCutter@{LaserCutter}!Pythagoras@{Pythagoras}}
\index{Pythagoras@{Pythagoras}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{Pythagoras()}{Pythagoras()}}
{\footnotesize\ttfamily double Laser\+Cutter\+::\+Pythagoras (\begin{DoxyParamCaption}\item[{const cv\+::\+Point2d \&}]{a\+Uno,  }\item[{const cv\+::\+Point2d \&}]{a\+Duo }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Calculates the Euclidian distance between two points in the image. 


\begin{DoxyParams}{Parameters}
{\em a\+Uno} & Point 1 \\
\hline
{\em a\+Duo} & Point 2 \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Returns the Euclidian distance 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_a06c1296661731fc44a0396f1c5714cdc}\label{class_laser_cutter_a06c1296661731fc44a0396f1c5714cdc}} 
\index{LaserCutter@{LaserCutter}!QImageToMat@{QImageToMat}}
\index{QImageToMat@{QImageToMat}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{QImageToMat()}{QImageToMat()}}
{\footnotesize\ttfamily cv\+::\+Mat Laser\+Cutter\+::\+Q\+Image\+To\+Mat (\begin{DoxyParamCaption}\item[{const Q\+Image \&}]{in\+Image,  }\item[{bool}]{in\+Clone\+Image\+Data = {\ttfamily true} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Converts Q\+Image to cv\+::\+Mat. 


\begin{DoxyParams}{Parameters}
{\em in\+Image} & Input Q\+Image \\
\hline
{\em in\+Clone\+Image\+Data} & Flag for creatin a copy \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Returns the converted cv\+::\+Mat 
\end{DoxyReturn}
\mbox{\Hypertarget{class_laser_cutter_a0fc3a6d1223b33e1c66c3bdb5ce876ee}\label{class_laser_cutter_a0fc3a6d1223b33e1c66c3bdb5ce876ee}} 
\index{LaserCutter@{LaserCutter}!ResetApp@{ResetApp}}
\index{ResetApp@{ResetApp}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{ResetApp}{ResetApp}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Reset\+App (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}



Reset of the app. 

Stops the perspective transform and reinitializes the app to the default state. Clearing the Temp folders and \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instances. \mbox{\Hypertarget{class_laser_cutter_a7c6056bb34aab125078d4be37bee90c4}\label{class_laser_cutter_a7c6056bb34aab125078d4be37bee90c4}} 
\index{LaserCutter@{LaserCutter}!RotateInit@{RotateInit}}
\index{RotateInit@{RotateInit}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{RotateInit()}{RotateInit()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Rotate\+Init (\begin{DoxyParamCaption}\item[{int}]{a\+Rotate }\end{DoxyParamCaption})}



Initializes the dial in the ui. 

Sets the value of the rotate dial based on the argument of the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} m\+\_\+rotate member variable 
\begin{DoxyParams}{Parameters}
{\em a\+Rotate} & Value used as the initializer \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_a6dd272800105787ee15d1570e87a60d2}\label{class_laser_cutter_a6dd272800105787ee15d1570e87a60d2}} 
\index{LaserCutter@{LaserCutter}!RotateLabel@{RotateLabel}}
\index{RotateLabel@{RotateLabel}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{RotateLabel()}{RotateLabel()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Rotate\+Label (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Rotate\+Label Rotates an \mbox{\hyperlink{class_svg_label}{Svg\+Label}}. 

Rotates the currently selected Svg\+Labels. Uses the {\ttfamily Get\+Minimum\+Bounding\+Rect} method to calculate the dimensions of the bounding box. Moves the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} by the offset regarding the rotation. Utilizes {\ttfamily Q\+Transform} (affine transformation) to rotate the \mbox{\hyperlink{class_svg_label}{Svg\+Label}}. \mbox{\Hypertarget{class_laser_cutter_adb2be13114dac3d249683c17deb010fe}\label{class_laser_cutter_adb2be13114dac3d249683c17deb010fe}} 
\index{LaserCutter@{LaserCutter}!SaveXML\_copies@{SaveXML\_copies}}
\index{SaveXML\_copies@{SaveXML\_copies}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{SaveXML\_copies()}{SaveXML\_copies()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Save\+X\+M\+L\+\_\+copies (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Saves the currently displayed Svg\+Labels. 

Copies each displayed \mbox{\hyperlink{class_svg_label}{Svg\+Label}} from the {\ttfamily Temp\+\_\+img\+\_\+source} to the {\ttfamily Temp\+\_\+img} folder. Edits the S\+VG file according to the applied transformation (transfrom matrix) \mbox{\Hypertarget{class_laser_cutter_a9667a227b1867463ffc60def05cfecc3}\label{class_laser_cutter_a9667a227b1867463ffc60def05cfecc3}} 
\index{LaserCutter@{LaserCutter}!SetCamera@{SetCamera}}
\index{SetCamera@{SetCamera}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{SetCamera()}{SetCamera()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Set\+Camera (\begin{DoxyParamCaption}\item[{const Q\+Camera\+Info \&}]{camera\+Info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Sets the Camera. 

Sets the currently selected camera and displays the transmission 
\begin{DoxyParams}{Parameters}
{\em camera\+Info} & Neccessary camera info \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_aa2b3344923891eb2bd262d764c09faa5}\label{class_laser_cutter_aa2b3344923891eb2bd262d764c09faa5}} 
\index{LaserCutter@{LaserCutter}!SetImageSource@{SetImageSource}}
\index{SetImageSource@{SetImageSource}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{SetImageSource()}{SetImageSource()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Set\+Image\+Source (\begin{DoxyParamCaption}\item[{Q\+String}]{a\+Path }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Sets up the image\+\_\+source \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance. 

Places each Q\+Label to image\+\_\+source \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance. Maximum of 60 images. 
\begin{DoxyParams}{Parameters}
{\em a\+Path} & Path to the image. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_a32e4bec55a7013974aed2a8feafb6c8c}\label{class_laser_cutter_a32e4bec55a7013974aed2a8feafb6c8c}} 
\index{LaserCutter@{LaserCutter}!SetupUiFrameSize@{SetupUiFrameSize}}
\index{SetupUiFrameSize@{SetupUiFrameSize}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{SetupUiFrameSize()}{SetupUiFrameSize()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Setup\+Ui\+Frame\+Size (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Sets up the dimensions of the {\ttfamily camera} frame and the {\ttfamily image\+\_\+destination} \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance. 

\mbox{\Hypertarget{class_laser_cutter_aa703bb05e9af3b5eda0cadd35f46ffa4}\label{class_laser_cutter_aa703bb05e9af3b5eda0cadd35f46ffa4}} 
\index{LaserCutter@{LaserCutter}!ShowManual@{ShowManual}}
\index{ShowManual@{ShowManual}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{ShowManual()}{ShowManual()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Show\+Manual (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Shows the user manual. 

\mbox{\Hypertarget{class_laser_cutter_a9fe84a6cfa66fe18ec0825ba587b6f56}\label{class_laser_cutter_a9fe84a6cfa66fe18ec0825ba587b6f56}} 
\index{LaserCutter@{LaserCutter}!ShowPortInfo@{ShowPortInfo}}
\index{ShowPortInfo@{ShowPortInfo}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{ShowPortInfo}{ShowPortInfo}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Show\+Port\+Info (\begin{DoxyParamCaption}\item[{int}]{idx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}



Shows the ports info based on the idx. 


\begin{DoxyParams}{Parameters}
{\em idx} & Index of the list (C\+OM port) \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_ad6bf3dcb61aac4d6252b6994e634ce84}\label{class_laser_cutter_ad6bf3dcb61aac4d6252b6994e634ce84}} 
\index{LaserCutter@{LaserCutter}!SvgLabelInfo@{SvgLabelInfo}}
\index{SvgLabelInfo@{SvgLabelInfo}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{SvgLabelInfo()}{SvgLabelInfo()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Svg\+Label\+Info (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_svg_label}{Svg\+Label}} \&}]{a\+Slabel }\end{DoxyParamCaption})}



Obtains the information about the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instance. 

Acquires the position of the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} within the bounds of the cutting area(camera frame). Position \char`\"{}x\char`\"{}, position \char`\"{}y\char`\"{} and rotation of the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} The parameters are shown in the UI. Positions are calculated with regards to the top left corner \mbox{[}0,0\mbox{]}. 
\begin{DoxyParams}{Parameters}
{\em a\+Slabel} & The Targeted \mbox{\hyperlink{class_svg_label}{Svg\+Label}} \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_af1d88d15db8c365d638c036c09ecdb3d}\label{class_laser_cutter_af1d88d15db8c365d638c036c09ecdb3d}} 
\index{LaserCutter@{LaserCutter}!TrackMaterial@{TrackMaterial}}
\index{TrackMaterial@{TrackMaterial}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{TrackMaterial()}{TrackMaterial()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Track\+Material (\begin{DoxyParamCaption}\item[{bool}]{tracking\+\_\+enabled }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Track the material. 

Tracks the centroid of the conours (= material) and moves all the images based on the difference with the previous centroid position 
\begin{DoxyParams}{Parameters}
{\em tracking\+\_\+enabled} & Flag for enabling the tracking \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_ad7bc1e6fd46c31b5ac21d1f355d55399}\label{class_laser_cutter_ad7bc1e6fd46c31b5ac21d1f355d55399}} 
\index{LaserCutter@{LaserCutter}!Transform\_to\_normalized@{Transform\_to\_normalized}}
\index{Transform\_to\_normalized@{Transform\_to\_normalized}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{Transform\_to\_normalized()}{Transform\_to\_normalized()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Transform\+\_\+to\+\_\+normalized (\begin{DoxyParamCaption}\item[{double $\ast$}]{a\+Transform\+\_\+ratio,  }\item[{Q\+Label \&}]{label }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Normalizes a Q\+Label\textquotesingle{}s dimensions. 

Utilizes the Q\+Transform class to apply the scale transform 
\begin{DoxyParams}{Parameters}
{\em a\+Transform\+\_\+ratio} & Transform ratio used for each axis (x,y) \\
\hline
{\em label} & The Q\+Label to be transformed \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_ae78edbaeebd3e6e4017fcd55ff7f347e}\label{class_laser_cutter_ae78edbaeebd3e6e4017fcd55ff7f347e}} 
\index{LaserCutter@{LaserCutter}!UpdateCameraDevice@{UpdateCameraDevice}}
\index{UpdateCameraDevice@{UpdateCameraDevice}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{UpdateCameraDevice()}{UpdateCameraDevice()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Update\+Camera\+Device (\begin{DoxyParamCaption}\item[{Q\+Action $\ast$}]{action }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Updates the camera device on action trigger. 


\begin{DoxyParams}{Parameters}
{\em action} & Trigger for the method (change of the camera in the Devices menu) \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_laser_cutter_a85f8f7673d12cf09a41741a4f08f11bf}\label{class_laser_cutter_a85f8f7673d12cf09a41741a4f08f11bf}} 
\index{LaserCutter@{LaserCutter}!UpdateCamerasMenu@{UpdateCamerasMenu}}
\index{UpdateCamerasMenu@{UpdateCamerasMenu}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{UpdateCamerasMenu()}{UpdateCamerasMenu()}}
{\footnotesize\ttfamily void Laser\+Cutter\+::\+Update\+Cameras\+Menu (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Updates the Devices menu when it is about to show. 



\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{class_laser_cutter_a44a6af355c1bce769787f048e5d7bfeb}\label{class_laser_cutter_a44a6af355c1bce769787f048e5d7bfeb}} 
\index{LaserCutter@{LaserCutter}!final\_port@{final\_port}}
\index{final\_port@{final\_port}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{final\_port}{final\_port}}
{\footnotesize\ttfamily Q\+String Laser\+Cutter\+::final\+\_\+port\hspace{0.3cm}{\ttfamily [private]}}



Selected C\+OM port, used for the Svg2\+Gcode\+Send as an argument. 

\mbox{\Hypertarget{class_laser_cutter_a3459f9abf461d5e3527cf199728d912d}\label{class_laser_cutter_a3459f9abf461d5e3527cf199728d912d}} 
\index{LaserCutter@{LaserCutter}!inputVideo@{inputVideo}}
\index{inputVideo@{inputVideo}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{inputVideo}{inputVideo}}
{\footnotesize\ttfamily cv\+::\+Video\+Capture Laser\+Cutter\+::input\+Video\hspace{0.3cm}{\ttfamily [private]}}



Used for Camera Hanlding, after the start of the application. 

\mbox{\Hypertarget{class_laser_cutter_a5f7d44c741b7b6fe10c1fc20ee6e4015}\label{class_laser_cutter_a5f7d44c741b7b6fe10c1fc20ee6e4015}} 
\index{LaserCutter@{LaserCutter}!m\_camera@{m\_camera}}
\index{m\_camera@{m\_camera}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_camera}{m\_camera}}
{\footnotesize\ttfamily Q\+Scoped\+Pointer$<$Q\+Camera$>$ Laser\+Cutter\+::m\+\_\+camera\hspace{0.3cm}{\ttfamily [private]}}



Used for Camera Hanlding, before the start of the application. 

\mbox{\Hypertarget{class_laser_cutter_aba40aca03dc5b3dcf2922581bb34862a}\label{class_laser_cutter_aba40aca03dc5b3dcf2922581bb34862a}} 
\index{LaserCutter@{LaserCutter}!m\_CamInfo@{m\_CamInfo}}
\index{m\_CamInfo@{m\_CamInfo}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_CamInfo}{m\_CamInfo}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{struct_laser_cutter_1_1s_camera}{Laser\+Cutter\+::s\+Camera}} Laser\+Cutter\+::m\+\_\+\+Cam\+Info\hspace{0.3cm}{\ttfamily [private]}}

\mbox{\Hypertarget{class_laser_cutter_a4f22d6121f0bfc2401f9290ce6f793c2}\label{class_laser_cutter_a4f22d6121f0bfc2401f9290ce6f793c2}} 
\index{LaserCutter@{LaserCutter}!m\_centroid@{m\_centroid}}
\index{m\_centroid@{m\_centroid}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_centroid}{m\_centroid}}
{\footnotesize\ttfamily Q\+Point Laser\+Cutter\+::m\+\_\+centroid\hspace{0.3cm}{\ttfamily [private]}}



New position of the tracked centroid. 

\mbox{\Hypertarget{class_laser_cutter_a677df0b94bf5340a004b28cc856cff39}\label{class_laser_cutter_a677df0b94bf5340a004b28cc856cff39}} 
\index{LaserCutter@{LaserCutter}!m\_corners@{m\_corners}}
\index{m\_corners@{m\_corners}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_corners}{m\_corners}}
{\footnotesize\ttfamily std\+::vector$<$cv\+::\+Point\+\_\+$<$double$>$ $>$ Laser\+Cutter\+::m\+\_\+corners\hspace{0.3cm}{\ttfamily [private]}}



Holds the position of the Aruco\+Marker\textquotesingle{}s corners (corners with index 0) 

\mbox{\Hypertarget{class_laser_cutter_ae2d5de0b22517b3fe986fbe61f0e2e45}\label{class_laser_cutter_ae2d5de0b22517b3fe986fbe61f0e2e45}} 
\index{LaserCutter@{LaserCutter}!m\_cutting\_area@{m\_cutting\_area}}
\index{m\_cutting\_area@{m\_cutting\_area}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_cutting\_area}{m\_cutting\_area}}
{\footnotesize\ttfamily std\+::vector$<$double$>$ Laser\+Cutter\+::m\+\_\+cutting\+\_\+area\hspace{0.3cm}{\ttfamily [private]}}



Cutting area dimensions of the laser cutter (width, height) 

\mbox{\Hypertarget{class_laser_cutter_a9ad0e95614e99a0a06fe73bca7abe522}\label{class_laser_cutter_a9ad0e95614e99a0a06fe73bca7abe522}} 
\index{LaserCutter@{LaserCutter}!m\_dimensions@{m\_dimensions}}
\index{m\_dimensions@{m\_dimensions}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_dimensions}{m\_dimensions}}
{\footnotesize\ttfamily Q\+Size Laser\+Cutter\+::m\+\_\+dimensions\hspace{0.3cm}{\ttfamily [private]}}



Dimensions of the cutting area. 

\mbox{\Hypertarget{class_laser_cutter_a129a6b7440e3c5142025b793200a42d4}\label{class_laser_cutter_a129a6b7440e3c5142025b793200a42d4}} 
\index{LaserCutter@{LaserCutter}!m\_hotkeys@{m\_hotkeys}}
\index{m\_hotkeys@{m\_hotkeys}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_hotkeys}{m\_hotkeys}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_hotkeys}{Hotkeys}}$\ast$ Laser\+Cutter\+::m\+\_\+hotkeys\hspace{0.3cm}{\ttfamily [private]}}



Pointer to the \mbox{\hyperlink{class_hotkeys}{Hotkeys}} class instance. 

\mbox{\Hypertarget{class_laser_cutter_a2afaf8dd7222093a7693fdd35b35bd3a}\label{class_laser_cutter_a2afaf8dd7222093a7693fdd35b35bd3a}} 
\index{LaserCutter@{LaserCutter}!m\_image\_source\_counter@{m\_image\_source\_counter}}
\index{m\_image\_source\_counter@{m\_image\_source\_counter}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_image\_source\_counter}{m\_image\_source\_counter}}
{\footnotesize\ttfamily size\+\_\+t Laser\+Cutter\+::m\+\_\+image\+\_\+source\+\_\+counter\hspace{0.3cm}{\ttfamily [private]}}



Holds the counter for the image placement. 

\mbox{\Hypertarget{class_laser_cutter_a2d7f17374dc04951a9715b65cd2434b0}\label{class_laser_cutter_a2d7f17374dc04951a9715b65cd2434b0}} 
\index{LaserCutter@{LaserCutter}!m\_img\_source\_placement@{m\_img\_source\_placement}}
\index{m\_img\_source\_placement@{m\_img\_source\_placement}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_img\_source\_placement}{m\_img\_source\_placement}}
{\footnotesize\ttfamily std\+::array$<$size\+\_\+t,2$>$ Laser\+Cutter\+::m\+\_\+img\+\_\+source\+\_\+placement\hspace{0.3cm}{\ttfamily [private]}}



Utilized for placing the image in the image\+\_\+source \mbox{\hyperlink{class_drag_widget}{Drag\+Widget}} instance. 

\mbox{\Hypertarget{class_laser_cutter_ae9eceb497fb301322cde1e62415a08b7}\label{class_laser_cutter_ae9eceb497fb301322cde1e62415a08b7}} 
\index{LaserCutter@{LaserCutter}!m\_label\_tab\_index@{m\_label\_tab\_index}}
\index{m\_label\_tab\_index@{m\_label\_tab\_index}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_label\_tab\_index}{m\_label\_tab\_index}}
{\footnotesize\ttfamily int Laser\+Cutter\+::m\+\_\+label\+\_\+tab\+\_\+index\hspace{0.3cm}{\ttfamily [private]}}



Used for cycling through the \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instances by pressing \textquotesingle{}Tab\textquotesingle{}. 

\mbox{\Hypertarget{class_laser_cutter_a59d99f2a0bedd10ac189d1296696a199}\label{class_laser_cutter_a59d99f2a0bedd10ac189d1296696a199}} 
\index{LaserCutter@{LaserCutter}!m\_old\_centroid@{m\_old\_centroid}}
\index{m\_old\_centroid@{m\_old\_centroid}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_old\_centroid}{m\_old\_centroid}}
{\footnotesize\ttfamily Q\+Point Laser\+Cutter\+::m\+\_\+old\+\_\+centroid\hspace{0.3cm}{\ttfamily [private]}}



Old position of the tracked centroid. 

\mbox{\Hypertarget{class_laser_cutter_a66d4c4147a8d20ef49b09089cb2c080d}\label{class_laser_cutter_a66d4c4147a8d20ef49b09089cb2c080d}} 
\index{LaserCutter@{LaserCutter}!m\_Path\_to\_source@{m\_Path\_to\_source}}
\index{m\_Path\_to\_source@{m\_Path\_to\_source}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_Path\_to\_source}{m\_Path\_to\_source}}
{\footnotesize\ttfamily Q\+String Laser\+Cutter\+::m\+\_\+\+Path\+\_\+to\+\_\+source\hspace{0.3cm}{\ttfamily [private]}}



Holds the path to the folder of the source images. 

\mbox{\Hypertarget{class_laser_cutter_a03238529f8b415207f01f3ac10f436d3}\label{class_laser_cutter_a03238529f8b415207f01f3ac10f436d3}} 
\index{LaserCutter@{LaserCutter}!m\_process\_cut@{m\_process\_cut}}
\index{m\_process\_cut@{m\_process\_cut}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_process\_cut}{m\_process\_cut}}
{\footnotesize\ttfamily Q\+Process$\ast$ Laser\+Cutter\+::m\+\_\+process\+\_\+cut\hspace{0.3cm}{\ttfamily [private]}}



Pointer to the Svg2\+Gcode\+Send process. 

\mbox{\Hypertarget{class_laser_cutter_a521680ae7e3a134c44fff0294764732e}\label{class_laser_cutter_a521680ae7e3a134c44fff0294764732e}} 
\index{LaserCutter@{LaserCutter}!m\_res@{m\_res}}
\index{m\_res@{m\_res}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_res}{m\_res}}
{\footnotesize\ttfamily std\+::vector$<$Q\+String$>$ Laser\+Cutter\+::m\+\_\+res\hspace{0.3cm}{\ttfamily [private]}}



Vector of paths to the source images. 

\mbox{\Hypertarget{class_laser_cutter_a2cf4916339530d42a7152ed5ba0e3e0a}\label{class_laser_cutter_a2cf4916339530d42a7152ed5ba0e3e0a}} 
\index{LaserCutter@{LaserCutter}!m\_rotate@{m\_rotate}}
\index{m\_rotate@{m\_rotate}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_rotate}{m\_rotate}}
{\footnotesize\ttfamily int Laser\+Cutter\+::m\+\_\+rotate\hspace{0.3cm}{\ttfamily [private]}}



Rotation of the currently selected \mbox{\hyperlink{class_svg_label}{Svg\+Label}} instance. 

\mbox{\Hypertarget{class_laser_cutter_a692bd6a91ea939eadf31cda7b0383d67}\label{class_laser_cutter_a692bd6a91ea939eadf31cda7b0383d67}} 
\index{LaserCutter@{LaserCutter}!m\_timer@{m\_timer}}
\index{m\_timer@{m\_timer}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_timer}{m\_timer}}
{\footnotesize\ttfamily Q\+Timer$\ast$ Laser\+Cutter\+::m\+\_\+timer\hspace{0.3cm}{\ttfamily [private]}}



Timer, its timeout used to call \mbox{\hyperlink{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}{Perspective\+Transform()}} 

\mbox{\Hypertarget{class_laser_cutter_a24a03ffd8ff9fe207b609df82a7ee561}\label{class_laser_cutter_a24a03ffd8ff9fe207b609df82a7ee561}} 
\index{LaserCutter@{LaserCutter}!m\_tm@{m\_tm}}
\index{m\_tm@{m\_tm}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_tm}{m\_tm}}
{\footnotesize\ttfamily Q\+Elapsed\+Timer$\ast$ Laser\+Cutter\+::m\+\_\+tm\hspace{0.3cm}{\ttfamily [private]}}



Timer used for \mbox{\hyperlink{class_laser_cutter_a06ccf9519f308aa5b828ab6ddf0db4b8}{Perspective\+Transform()}} 

\mbox{\Hypertarget{class_laser_cutter_a44fdc49479047cb7b1c3073deec074ad}\label{class_laser_cutter_a44fdc49479047cb7b1c3073deec074ad}} 
\index{LaserCutter@{LaserCutter}!m\_tracking\_flag@{m\_tracking\_flag}}
\index{m\_tracking\_flag@{m\_tracking\_flag}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_tracking\_flag}{m\_tracking\_flag}}
{\footnotesize\ttfamily bool Laser\+Cutter\+::m\+\_\+tracking\+\_\+flag\hspace{0.3cm}{\ttfamily [private]}}

\mbox{\Hypertarget{class_laser_cutter_a6087667cb976880e254bdd4b369fa234}\label{class_laser_cutter_a6087667cb976880e254bdd4b369fa234}} 
\index{LaserCutter@{LaserCutter}!m\_transfer\_ratio@{m\_transfer\_ratio}}
\index{m\_transfer\_ratio@{m\_transfer\_ratio}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_transfer\_ratio}{m\_transfer\_ratio}}
{\footnotesize\ttfamily double Laser\+Cutter\+::m\+\_\+transfer\+\_\+ratio\mbox{[}2\mbox{]}\hspace{0.3cm}{\ttfamily [private]}}



Transform ratio of px$\sim$mm for each axis (x;y) 

\mbox{\Hypertarget{class_laser_cutter_abc2a8babe8c63b26816b6ff9e5fd2bca}\label{class_laser_cutter_abc2a8babe8c63b26816b6ff9e5fd2bca}} 
\index{LaserCutter@{LaserCutter}!m\_videoDevicesGroup@{m\_videoDevicesGroup}}
\index{m\_videoDevicesGroup@{m\_videoDevicesGroup}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{m\_videoDevicesGroup}{m\_videoDevicesGroup}}
{\footnotesize\ttfamily Q\+Action\+Group$\ast$ Laser\+Cutter\+::m\+\_\+video\+Devices\+Group\hspace{0.3cm}{\ttfamily [private]}}



Action\+Group for the Devices menu. 

\mbox{\Hypertarget{class_laser_cutter_ab006d99ba478285e689a6674c7b0e2f0}\label{class_laser_cutter_ab006d99ba478285e689a6674c7b0e2f0}} 
\index{LaserCutter@{LaserCutter}!ui@{ui}}
\index{ui@{ui}!LaserCutter@{LaserCutter}}
\doxysubsubsection{\texorpdfstring{ui}{ui}}
{\footnotesize\ttfamily Ui\+::\+Laser\+Cutter$\ast$ Laser\+Cutter\+::ui\hspace{0.3cm}{\ttfamily [private]}}



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{lasercutter_8h}{lasercutter.\+h}}\item 
\mbox{\hyperlink{lasercutter_8cpp}{lasercutter.\+cpp}}\end{DoxyCompactItemize}
