diff --git a/source/app/ModulesHandle.cpp b/source/app/ModulesHandle.cpp index 44cbc9e..31ecc94 100644 --- a/source/app/ModulesHandle.cpp +++ b/source/app/ModulesHandle.cpp @@ -96,16 +96,36 @@ SubWindowHandle* ModulesHandle::toggleSelectedModuleIf() else { pcSubWindow->enableModule( currModuleIf ); + currModuleIf->m_pcDisplaySubWindow = pcSubWindow; } currModuleIf->m_pcSubWindow = pcSubWindow; } else { + QCoreApplication::processEvents(); destroyModuleIf( currModuleIf ); } return interfaceChild; } +PlaYUVerFrame* ModulesHandle::applyModuleIf( PlaYUVerModuleIf *pcCurrModuleIf ) +{ + PlaYUVerFrame* processedFrame; + + switch( pcCurrModuleIf->m_cModuleDef.m_uiNumberOfFrames ) + { + case MODULE_REQUIRES_ONE_FRAME: + processedFrame = pcCurrModuleIf->process( pcCurrModuleIf->m_pcSubWindow->getCurrFrame() ); + break; + case MODULE_REQUIRES_TWO_FRAMES: + break; + case MODULE_REQUIRES_THREE_FRAMES: + break; + } + pcCurrModuleIf->m_pcDisplaySubWindow->setCurrFrame( processedFrame ); + return processedFrame; +} + Void ModulesHandle::destroyModuleIf( PlaYUVerModuleIf *pcCurrModuleIf ) { pcCurrModuleIf->m_pcAction->setChecked( false ); @@ -140,7 +160,7 @@ QMenu* ModulesHandle::createMenus( QMenuBar *MainAppMenuBar ) m_pcModulesMenu = MainAppMenuBar->addMenu( "&Modules" ); - //m_arrayModulesActions.resize( m_uiModulesCount ); +//m_arrayModulesActions.resize( m_uiModulesCount ); for( Int i = 0; i < m_pcPlaYUVerModules.size(); i++ ) { diff --git a/source/app/ModulesHandle.h b/source/app/ModulesHandle.h index 30db126..8ea628e 100644 --- a/source/app/ModulesHandle.h +++ b/source/app/ModulesHandle.h @@ -55,6 +55,7 @@ public: Void updateMenus( Bool hasSubWindow ); SubWindowHandle* toggleSelectedModuleIf(); + static PlaYUVerFrame* applyModuleIf( PlaYUVerModuleIf *pcCurrModuleIf ); static Void destroyModuleIf( PlaYUVerModuleIf* pcCurrModuleIf ); private: diff --git a/source/app/PlaYUVerModuleIf.h b/source/app/PlaYUVerModuleIf.h index f8d3bcc..178a1c5 100644 --- a/source/app/PlaYUVerModuleIf.h +++ b/source/app/PlaYUVerModuleIf.h @@ -47,10 +47,12 @@ enum __PlaYUVerModuleTypes enum __PlaYUVerModuleRequirements { - MODULE_REQUIRES_FRAME = 1, - MODULE_REQUIRES_TWOFRAMES = 2, - MODULE_REQUIRES_NEW_WINDOW = 4, - MODULE_REQUIRES_SIDEBAR = 8, + MODULE_REQUIRES_ONE_FRAME = 1, + MODULE_REQUIRES_TWO_FRAMES = 2, + MODULE_REQUIRES_THREE_FRAMES = 3, + MODULE_REQUIRES_NOTHING = 0, + MODULE_REQUIRES_NEW_WINDOW = 2, + MODULE_REQUIRES_SIDEBAR = 4, MODULES_REQUIREMENTS_TOTAL, }; @@ -69,6 +71,7 @@ typedef struct __PlaYUVerModuleDefinition const Char* m_pchModuleCategory; const Char* m_pchModuleName; const Char* m_pchModuleTooltip; + UInt m_uiNumberOfFrames; UInt m_uiModuleRequirements; } PlaYUVerModuleDefinition; diff --git a/source/modules/FilterFrame.cpp b/source/modules/FilterFrame.cpp index 6a40d0a..16a6d80 100644 --- a/source/modules/FilterFrame.cpp +++ b/source/modules/FilterFrame.cpp @@ -35,7 +35,8 @@ PlaYUVerModuleDefinition FilterFrameDef = { "Filters", "Y_Filter", "Filter Y matrix of YUV frame", - MODULE_REQUIRES_FRAME, + MODULE_REQUIRES_ONE_FRAME, + MODULE_REQUIRES_NOTHING, }; FilterFrame::FilterFrame() diff --git a/source/modules/FrameDifference.cpp b/source/modules/FrameDifference.cpp index 7199c2c..87d89d5 100644 --- a/source/modules/FrameDifference.cpp +++ b/source/modules/FrameDifference.cpp @@ -36,7 +36,8 @@ static PlaYUVerModuleDefinition FrameDifferenceDef = "Measurements", "FrameDifference", "Measure the difference between two images (Y plane)", - MODULE_REQUIRES_TWOFRAMES | MODULE_REQUIRES_NEW_WINDOW, + MODULE_REQUIRES_TWO_FRAMES, + MODULE_REQUIRES_NEW_WINDOW, }; FrameDifference::FrameDifference() diff --git a/source/modules/MeasurePSNR.cpp b/source/modules/MeasurePSNR.cpp index 9cf2b0c..d60ffc6 100644 --- a/source/modules/MeasurePSNR.cpp +++ b/source/modules/MeasurePSNR.cpp @@ -36,7 +36,8 @@ static PlaYUVerModuleDefinition MeasurePSNRDef = "Measurements", "PSNR", "Measure the PSNR between two images", - MODULE_REQUIRES_TWOFRAMES | MODULE_REQUIRES_SIDEBAR, + MODULE_REQUIRES_TWO_FRAMES, + MODULE_REQUIRES_NEW_WINDOW, }; MeasurePSNR::MeasurePSNR()