\doxysection{ui.\+Image\+Display\+App Class Reference}
\hypertarget{classui_1_1_image_display_app}{}\label{classui_1_1_image_display_app}\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}}


Main application class for projection blending controller.  


\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classui_1_1_image_display_app_aa56c628eca26a862ec05465bd4698bf7}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, tk.\+Tk \mbox{\hyperlink{classui_1_1_image_display_app_a9b59223fb188c673396bdc930299d02d}{root}})
\begin{DoxyCompactList}\small\item\em Constructor that initializes the application. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_a68fc529a1f92a1c8e456aceb652449e9}{setup\+\_\+window}} (self)
\begin{DoxyCompactList}\small\item\em Sets up the main application window properties. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_acc7e66f7ca990af1250f6ce9add2b986}{setup\+\_\+ui}} (self)
\begin{DoxyCompactList}\small\item\em Creates and arranges all UI components. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_afec8abdba89899738ecd00f58787c863}{run\+\_\+processing\+\_\+update}} (self)
\begin{DoxyCompactList}\small\item\em Executes image processing with current parameters. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_a61c54c4ab4dda7abe88b6475eb59e5d6}{update\+\_\+display}} (self, images\+\_\+dict)
\begin{DoxyCompactList}\small\item\em Updates the GUI with processed images. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_aaa2052381e1b7991ff226cbac7f04b6a}{show\+\_\+fullscreen}} (self, key)
\begin{DoxyCompactList}\small\item\em Displays an image in fullscreen mode. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_a94415b8834dec67edd50c09c7b289dba}{run\+\_\+calibration}} (self)
\begin{DoxyCompactList}\small\item\em Runs the auto-\/calibration process. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classui_1_1_image_display_app_a9b59223fb188c673396bdc930299d02d}\label{classui_1_1_image_display_app_a9b59223fb188c673396bdc930299d02d} 
{\bfseries root}
\begin{DoxyCompactList}\small\item\em The main Tkinter root window. \end{DoxyCompactList}\item 
\Hypertarget{classui_1_1_image_display_app_a2e281cccd1d363a011ea0b56dc2c568d}\label{classui_1_1_image_display_app_a2e281cccd1d363a011ea0b56dc2c568d} 
{\bfseries cfg}
\begin{DoxyCompactList}\small\item\em Configuration reader instance for loading settings. \end{DoxyCompactList}\item 
\Hypertarget{classui_1_1_image_display_app_a0e6cc384390aef20daf32bd0f1bca468}\label{classui_1_1_image_display_app_a0e6cc384390aef20daf32bd0f1bca468} 
{\bfseries processor}
\begin{DoxyCompactList}\small\item\em Image processor instance for handling projections. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_a0f4772379cd4a2a59f8ede817ed8806c}{labels}}
\begin{DoxyCompactList}\small\item\em Dictionary of image label widgets. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classui_1_1_image_display_app_a0834d46e490d3b16445ee07c9a7b64f5}{image\+\_\+paths}}
\begin{DoxyCompactList}\small\item\em Dictionary of image file paths. \end{DoxyCompactList}\item 
\Hypertarget{classui_1_1_image_display_app_a551f268494fd41927565e781a467b23c}\label{classui_1_1_image_display_app_a551f268494fd41927565e781a467b23c} 
{\bfseries image\+\_\+frame}
\item 
\Hypertarget{classui_1_1_image_display_app_a32a8b88602aed97ce4902e3e3b155276}\label{classui_1_1_image_display_app_a32a8b88602aed97ce4902e3e3b155276} 
{\bfseries param\+\_\+var}
\begin{DoxyCompactList}\small\item\em Integer variable for overlap parameter. \end{DoxyCompactList}\item 
\Hypertarget{classui_1_1_image_display_app_a50039b26844f6f1075840ae36ee542b8}\label{classui_1_1_image_display_app_a50039b26844f6f1075840ae36ee542b8} 
{\bfseries blend\+\_\+var}
\begin{DoxyCompactList}\small\item\em String variable for blend mode selection. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classui_1_1_image_display_app_a0ab9a8844429d5793e2d2463dafde946}{debounced\+\_\+update}} (self)
\begin{DoxyCompactList}\small\item\em Schedules a debounced update after parameter changes. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classui_1_1_image_display_app_ad9f321bcc16009d0c6b160c43f5366c3}{\+\_\+update\+\_\+job}}
\begin{DoxyCompactList}\small\item\em Job ID for debounced update scheduling. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Main application class for projection blending controller. 

The Image\+Display\+App class creates a GUI application that allows users to\+:
\begin{DoxyItemize}
\item View main, left, and right projection images
\item Adjust overlap and blend mode parameters
\item Display images in fullscreen mode
\item Run auto-\/calibration for optimal projection settings
\end{DoxyItemize}

The application uses configuration files to load initial settings and processes images in real-\/time based on user input.\hypertarget{classui_1_1_image_display_app_usage}{}\doxysubsection{\texorpdfstring{Usage Example}{Usage Example}}\label{classui_1_1_image_display_app_usage}

\begin{DoxyCode}{0}
\DoxyCodeLine{root\ =\ tk.Tk()}
\DoxyCodeLine{app\ =\ ImageDisplayApp(root)}
\DoxyCodeLine{root.mainloop()}

\end{DoxyCode}
 

\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classui_1_1_image_display_app_aa56c628eca26a862ec05465bd4698bf7}\label{classui_1_1_image_display_app_aa56c628eca26a862ec05465bd4698bf7} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!\_\_init\_\_@{\_\_init\_\_}}
\index{\_\_init\_\_@{\_\_init\_\_}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self,  }\item[{tk.\+Tk}]{root }\end{DoxyParamCaption})}



Constructor that initializes the application. 

Initializes the projection blending controller application by\+:
\begin{DoxyItemize}
\item Setting up the main window
\item Loading configuration from config.\+ini
\item Creating the image processor
\item Building the user interface
\end{DoxyItemize}


\begin{DoxyParams}{Parameters}
{\em root} & The Tkinter root window instance\\
\hline
\end{DoxyParams}

\begin{DoxyExceptions}{Exceptions}
{\em Exception} & If configuration file is missing or initialization fails \\
\hline
\end{DoxyExceptions}


\doxysubsection{Member Function Documentation}
\Hypertarget{classui_1_1_image_display_app_a0ab9a8844429d5793e2d2463dafde946}\label{classui_1_1_image_display_app_a0ab9a8844429d5793e2d2463dafde946} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!debounced\_update@{debounced\_update}}
\index{debounced\_update@{debounced\_update}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{debounced\_update()}{debounced\_update()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+debounced\+\_\+update (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}



Schedules a debounced update after parameter changes. 

Cancels any pending updates and schedules a new update after 500ms delay. This prevents excessive processing during rapid parameter changes.

\begin{DoxyReturn}{Returns}
None 
\end{DoxyReturn}
\Hypertarget{classui_1_1_image_display_app_a94415b8834dec67edd50c09c7b289dba}\label{classui_1_1_image_display_app_a94415b8834dec67edd50c09c7b289dba} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!run\_calibration@{run\_calibration}}
\index{run\_calibration@{run\_calibration}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{run\_calibration()}{run\_calibration()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+run\+\_\+calibration (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})}



Runs the auto-\/calibration process. 

Executes calibration to automatically adjust the overlap parameter for optimal projection alignment. Updates the overlap value and triggers image reprocessing.

\begin{DoxyReturn}{Returns}
None
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em Exception} & Shows error dialog if calibration fails \\
\hline
\end{DoxyExceptions}
\Hypertarget{classui_1_1_image_display_app_afec8abdba89899738ecd00f58787c863}\label{classui_1_1_image_display_app_afec8abdba89899738ecd00f58787c863} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!run\_processing\_update@{run\_processing\_update}}
\index{run\_processing\_update@{run\_processing\_update}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{run\_processing\_update()}{run\_processing\_update()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+run\+\_\+processing\+\_\+update (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})}



Executes image processing with current parameters. 

Retrieves current overlap and blend mode values, processes the images, and updates the display with the results.

\begin{DoxyReturn}{Returns}
None
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em Exception} & Prints error message if processing fails \\
\hline
\end{DoxyExceptions}
\Hypertarget{classui_1_1_image_display_app_acc7e66f7ca990af1250f6ce9add2b986}\label{classui_1_1_image_display_app_acc7e66f7ca990af1250f6ce9add2b986} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!setup\_ui@{setup\_ui}}
\index{setup\_ui@{setup\_ui}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{setup\_ui()}{setup\_ui()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+setup\+\_\+ui (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})}



Creates and arranges all UI components. 

Sets up the user interface including\+:
\begin{DoxyItemize}
\item Image display labels for main, left, and right projections
\item Control widgets for overlap and blend mode
\item Action buttons for fullscreen and calibration
\item Event bindings for parameter updates
\end{DoxyItemize}

\begin{DoxyReturn}{Returns}
None 
\end{DoxyReturn}
\Hypertarget{classui_1_1_image_display_app_a68fc529a1f92a1c8e456aceb652449e9}\label{classui_1_1_image_display_app_a68fc529a1f92a1c8e456aceb652449e9} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!setup\_window@{setup\_window}}
\index{setup\_window@{setup\_window}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{setup\_window()}{setup\_window()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+setup\+\_\+window (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})}



Sets up the main application window properties. 

Configures the window title, size, and background color.

\begin{DoxyReturn}{Returns}
None 
\end{DoxyReturn}
\Hypertarget{classui_1_1_image_display_app_aaa2052381e1b7991ff226cbac7f04b6a}\label{classui_1_1_image_display_app_aaa2052381e1b7991ff226cbac7f04b6a} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!show\_fullscreen@{show\_fullscreen}}
\index{show\_fullscreen@{show\_fullscreen}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{show\_fullscreen()}{show\_fullscreen()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+show\+\_\+fullscreen (\begin{DoxyParamCaption}\item[{}]{self,  }\item[{}]{key }\end{DoxyParamCaption})}



Displays an image in fullscreen mode. 

Opens a fullscreen window displaying the specified image. The window can be closed by pressing the Escape key. The image refreshes every 100ms to show updates.


\begin{DoxyParams}{Parameters}
{\em key} & The image key ("{}main"{}, "{}left"{}, or "{}right"{})\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
None
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
Shows warning message if image file doesn\textquotesingle{}t exist 
\end{DoxyWarning}
\Hypertarget{classui_1_1_image_display_app_a61c54c4ab4dda7abe88b6475eb59e5d6}\label{classui_1_1_image_display_app_a61c54c4ab4dda7abe88b6475eb59e5d6} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!update\_display@{update\_display}}
\index{update\_display@{update\_display}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{update\_display()}{update\_display()}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+update\+\_\+display (\begin{DoxyParamCaption}\item[{}]{self,  }\item[{}]{images\+\_\+dict }\end{DoxyParamCaption})}



Updates the GUI with processed images. 

Converts numpy arrays to Photo\+Image objects and displays them in the corresponding label widgets. Handles both BGR and BGRA formats.


\begin{DoxyParams}{Parameters}
{\em images\+\_\+dict} & Dictionary mapping image keys to numpy arrays\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
None 
\end{DoxyReturn}


\doxysubsection{Member Data Documentation}
\Hypertarget{classui_1_1_image_display_app_ad9f321bcc16009d0c6b160c43f5366c3}\label{classui_1_1_image_display_app_ad9f321bcc16009d0c6b160c43f5366c3} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!\_update\_job@{\_update\_job}}
\index{\_update\_job@{\_update\_job}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{\_update\_job}{\_update\_job}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+\_\+update\+\_\+job\hspace{0.3cm}{\ttfamily [protected]}}



Job ID for debounced update scheduling. 

Used to cancel pending updates when new changes occur \Hypertarget{classui_1_1_image_display_app_a0834d46e490d3b16445ee07c9a7b64f5}\label{classui_1_1_image_display_app_a0834d46e490d3b16445ee07c9a7b64f5} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!image\_paths@{image\_paths}}
\index{image\_paths@{image\_paths}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{image\_paths}{image\_paths}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+image\+\_\+paths}



Dictionary of image file paths. 

Maps image types to their file paths \Hypertarget{classui_1_1_image_display_app_a0f4772379cd4a2a59f8ede817ed8806c}\label{classui_1_1_image_display_app_a0f4772379cd4a2a59f8ede817ed8806c} 
\index{ui.ImageDisplayApp@{ui.ImageDisplayApp}!labels@{labels}}
\index{labels@{labels}!ui.ImageDisplayApp@{ui.ImageDisplayApp}}
\doxysubsubsection{\texorpdfstring{labels}{labels}}
{\footnotesize\ttfamily ui.\+Image\+Display\+App.\+labels}



Dictionary of image label widgets. 

Maps keys ("{}main"{}, "{}left"{}, "{}right"{}) to their Label widgets 

The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
Doxygen\+\_\+\+Final/\mbox{\hyperlink{ui_8py}{ui.\+py}}\end{DoxyCompactItemize}
