APIRET APIENTRY kvaWoInit( HWND hwnd, ULONG ulKeyColor, PKVAAPIS pkva ) { BOOL fWOInited = FALSE; HWATTRIBUTE attr; int i; CHAR szClassName[ 80 ]; CLASSINFO ci; ULONG rc; m_HWVideoHandle = NULLHANDLE; memset( &m_hwvc, 0, sizeof( HWVIDEOCAPS )); memset( &m_hwvs, 0, sizeof( HWVIDEOSETUP )); m_pfnwpOld = NULL; rc = KVAE_NO_ERROR; if( !LoadOverlay()) { rc = KVAE_CANNOT_LOAD_WO; goto exit_error; } rc = m_pfnHWVIDEOInit(); if( rc ) goto exit_error; fWOInited = TRUE; // Query overlay capabilities m_hwvc.ulLength = sizeof( m_hwvc ); // First time we need to call with zero value m_hwvc.ulNumColors = 0; m_hwvc.fccColorType = NULL; m_pfnHWVIDEOCaps( &m_hwvc ); // this time hwvc.ulNumColors filled with actual count of supported FOURCCs // but need to check this if( m_hwvc.ulNumColors ) { m_hwvc.fccColorType = malloc( m_hwvc.ulNumColors * sizeof( FOURCC )); m_pfnHWVIDEOCaps( &m_hwvc ); } else { rc = KVAE_NO_SUPPORTED_FOURCC; goto exit_error; } if( m_hwvc.fccDstColor == FOURCC_LUT8 ) { // WO doesn't supports palettized mode. rc = KVAE_WO_PALETTIZED_MODE; goto exit_error; } attr.ulLength = sizeof( HWATTRIBUTE ); for( i = 0; i < m_hwvc.ulAttrCount; i++ ) { m_pfnHWVIDEOGetAttrib( i, &attr ); if( !strcmp( attr.szAttrDesc, ATTRIBUTE_BRIGHTNESS )) m_aulAttr[ KVAA_BRIGHTNESS ] = i; else if ( !strcmp( attr.szAttrDesc, ATTRIBUTE_CONTRAST )) m_aulAttr[ KVAA_CONTRAST ] = i; else if( !strcmp( attr.szAttrDesc, ATTRIBUTE_SATURATION )) m_aulAttr[ KVAA_SATURATION ] = i; else if( !strcmp( attr.szAttrDesc, ATTRIBUTE_HUE )) m_aulAttr[ KVAA_HUE ] = i; } m_hwndKVA = hwnd; m_hwvs.ulKeyColor = ulKeyColor; WinQueryClassName( m_hwndKVA, sizeof( szClassName ), szClassName ); WinQueryClassInfo( WinQueryAnchorBlock( m_hwndKVA ), szClassName, &ci ); if( !( ci.flClassStyle & CS_MOVENOTIFY )) { ci.flClassStyle |= CS_MOVENOTIFY; WinRegisterClass( WinQueryAnchorBlock( m_hwndKVA ), szClassName, ci.pfnWindowProc, ci.flClassStyle, ci.cbWindowData ); } m_pfnwpOld = WinSubclassWindow( m_hwndKVA, woNewWindowProc ); if( m_pfnwpOld ) { pkva->pfnDone = woDone; pkva->pfnLockBuffer = woLockBuffer; pkva->pfnUnlockBuffer = woUnlockBuffer; pkva->pfnSetup = woSetup; pkva->pfnCaps = woCaps; pkva->pfnQueryAttr = woQueryAttr; pkva->pfnSetAttr = woSetAttr; } else { rc = KVAE_CANNOT_SUBCLASS; goto exit_error; } return KVAE_NO_ERROR; exit_error : if( m_HWVideoHandle ) { if( m_hwvc.fccColorType ) free( m_hwvc.fccColorType ); if( fWOInited ) m_pfnHWVIDEOClose(); DosFreeModule( m_HWVideoHandle ); } return rc; }
MriWatcherGUI::MriWatcherGUI(QWidget *parent) { setupUi(this); installEventFilter(this); setAcceptDrops(true); connect(g_loadimg, SIGNAL( clicked() ), this, SLOT( LoadImg() ) ); connect(g_loadoverlay, SIGNAL( clicked() ), this, SLOT( LoadOverlay() ) ); connect(g_loadimg2, SIGNAL( clicked() ), this, SLOT( LoadImg2() ) ); connect(g_reset_view, SIGNAL( clicked() ), this, SLOT( ResetView() ) ); connect(g_screenshot, SIGNAL( clicked() ), this, SLOT( ScreenShot() ) ); connect(g_combine, SIGNAL( clicked() ), this, SLOT( Combine() ) ); connect(g_help, SIGNAL( clicked() ), this, SLOT( Help() ) ); connect(g_xview, SIGNAL( toggled(bool) ), this, SLOT( ChangeView() ) ); connect(g_yview, SIGNAL( toggled(bool) ), this, SLOT( ChangeView() ) ); connect(g_zview, SIGNAL( toggled(bool) ), this, SLOT( ChangeView() ) ); connect(g_slice_slider, SIGNAL( sliderMoved(int) ), this, SLOT( ChangeSlice(int) ) ); // connect(g_slice_slider, SIGNAL( valueChanged(int) ), this, SLOT( ChangeSlice(int) )); connect(g_overlay_alpha_slider, SIGNAL( valueChanged(int) ), this, SLOT( ChangeOverlayAlpha(int) ) ); connect(g_draw_name, SIGNAL( stateChanged(int) ), this, SLOT( DrawImageName(int) ) ); connect(g_draw_info, SIGNAL( stateChanged(int) ), this, SLOT( DrawImageInfo(int) ) ); connect(g_draw_position, SIGNAL( stateChanged(int) ), this, SLOT( DrawImagePosition(int) ) ); connect(g_draw_intensity, SIGNAL( stateChanged(int) ), this, SLOT( DrawImageIntensity(int) ) ); connect(g_overlayzero, SIGNAL( stateChanged(int) ), this, SLOT( ChangeOverlayZero() ) ); connect(g_intensity_min_slider, SIGNAL( valueChanged(int) ), this, SLOT( ChangeIntensityMin(int) ) ); connect(g_intensity_max_slider, SIGNAL( valueChanged(int) ), this, SLOT( ChangeIntensityMax(int) ) ); connect(g_blending_mode, SIGNAL( stateChanged(int) ), this, SLOT( SetBlendingMode() ) ); connect(g_alpha, SIGNAL( valueChanged(int) ), this, SLOT( ChangeImageAlpha(int) ) ); connect(g_viewall, SIGNAL( toggled(bool) ), this, SLOT( ViewOptions() ) ); connect(g_viewcolumn, SIGNAL( toggled(bool) ), this, SLOT( ViewOptions() ) ); // connect(g_nbcolumn, SIGNAL( returnPressed() ), this, SLOT( ViewOptions() ) ); connect(g_nbcolumn, SIGNAL( valueChanged(int) ), this, SLOT( ChangeColumn() )); connect(g_overlaymin, SIGNAL( returnPressed() ), this, SLOT( ChangeOverlayMinMax() ) ); connect(g_overlaymax, SIGNAL( returnPressed() ), this, SLOT( ChangeOverlayMinMax() ) ); m_direction = 0; m_numberofimages = 0; m_maxsize[0] = 0; m_maxsize[1] = 0; m_maxsize[2] = 0; m_imagemin = 999999; m_imagemax = 0; m_keyalt = false; m_keyctrl = false; // multiselection m_overlaymin = 0; m_overlaymax = 0; m_imagemanager.ChangeAlpha(100); g_slice_slider->setEnabled(false); g_overlay_alpha_slider->setEnabled(false); g_intensity_min_slider->setMinimum(0); g_intensity_max_slider->setMinimum(0); g_intensity_min_slider->setMaximum(static_cast<int>(MAX_PERCENTAGE) ); g_intensity_max_slider->setMaximum(static_cast<int>(MAX_PERCENTAGE) ); g_intensity_min_slider->setValue(0); g_intensity_max_slider->setValue(static_cast<int>(MAX_PERCENTAGE) ); m_frame = new MriWatcherFrame(g_scrollArea); connect(m_frame, SIGNAL( UnSelectAll() ), this, SLOT( UnSelectAll() ) ); connect(m_frame, SIGNAL( GetFiles(const QString &) ), this, SLOT( LoadFile(const QString &) ) ); // m_imageframelayout = new ImageFrameLayout(); // QBoxLayout* gm = new QVBoxLayout(m_frame); m_imageframelayout = new ImageFrameLayout(); // g_scrollArea->setLayout(m_imageframelayout); g_scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); g_scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // g_scrollArea->verticalScrollBar()->setRange(); g_scrollArea->setWidget(m_frame); m_frame->setLayout(m_imageframelayout); g_name_version->setText(QString("MriWatcher") + " " + MriWatcher_VERSION); g_tips->setText( "\nQuick Tips:\n- Left mouse drag: Move image\n- Right mouse drag: Zoom in/out\n- Middle mouse: Pick one voxel\n- Control + mouse: Pick images\n- Shift + mouse: Global operatation\n- Left or right key: Switch order\n- Delete key: Remove image"); /* imageLabel = new QLabel; imageLabel->setBackgroundRole(QPalette::Base); imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); imageLabel->setScaledContents(true); g_scrollArea->setBackgroundRole(QPalette::Dark); g_scrollArea->setWidget(imageLabel); */ }