📄 frametuning.cpp
字号:
{ m_pHistogramWnd[0]->ShowWindow(SW_HIDE); m_pHistogramWnd[1]->ShowWindow(SW_HIDE); m_pStcOTF->ShowWindow(SW_HIDE); m_pStcThreshold4->ShowWindow(SW_HIDE); m_pStcOpacity->ShowWindow(SW_HIDE); } } else if(nCurMainMenuID == IDF_TOP_REPORT) { } }}// 矫府令啊 函版瞪 版快void RxFrameTuning::OnChangedSeries(int nSeries){ if(nSeries == RXSERIES_REF) { m_pHistogramWnd[1]->ShowWindow(SW_HIDE); m_pHistogramWnd[0]->ShowWindow(SW_SHOW); m_pStcOTF->ShowWindow(SW_SHOW); m_pStcThreshold4->ShowWindow(SW_SHOW); m_pStcOpacity->ShowWindow(SW_SHOW); } else if(nSeries == RXSERIES_FLT) { m_pHistogramWnd[0]->ShowWindow(SW_HIDE); m_pHistogramWnd[1]->ShowWindow(SW_SHOW); m_pStcOTF->ShowWindow(SW_SHOW); m_pStcThreshold4->ShowWindow(SW_SHOW); m_pStcOpacity->ShowWindow(SW_SHOW); } else { m_pHistogramWnd[0]->ShowWindow(SW_HIDE); m_pHistogramWnd[1]->ShowWindow(SW_HIDE); m_pStcOTF->ShowWindow(SW_HIDE); m_pStcThreshold4->ShowWindow(SW_HIDE); m_pStcOpacity->ShowWindow(SW_HIDE); }}/////////////////////////////////////////////////////////////////////////////// 洒胶配弊伐 努贰胶肺何磐 OTF 框流看阑版快 罐霸等促.void RxFrameTuning::OnOTFPosChanged(NMHDR* pNMHDR, LRESULT* pResult){ int nSeries; if(pNMHDR->idFrom == IDF_TUNING_WND_HISTOGRAM_REF) nSeries = RXSERIES_REF; else if(pNMHDR->idFrom == IDF_TUNING_WND_HISTOGRAM_FLT) nSeries = RXSERIES_FLT; UpdateThreshold(nSeries); _NMHISTO_CTRL *pHistoCtrl = (_NMHISTO_CTRL *)pNMHDR; RxHistogram *pHistogram = (RxHistogram *)pHistoCtrl->pHistogram; if(pHistogram->IsEnableOTFPolygon()) UpdateVRWnd(nSeries); *pResult = 0;}void RxFrameTuning::OnOTFActiveChanged(NMHDR* pNMHDR, LRESULT* pResult){ int nSeries; if(pNMHDR->idFrom == IDF_TUNING_WND_HISTOGRAM_REF) nSeries = RXSERIES_REF; else if(pNMHDR->idFrom == IDF_TUNING_WND_HISTOGRAM_FLT) nSeries = RXSERIES_FLT; UpdateThreshold(nSeries); *pResult = 0;}void RxFrameTuning::OnOTFColorChanged(NMHDR* pNMHDR, LRESULT* pResult){ int nSeries; if(pNMHDR->idFrom == IDF_TUNING_WND_HISTOGRAM_REF) nSeries = RXSERIES_REF; else if(pNMHDR->idFrom == IDF_TUNING_WND_HISTOGRAM_FLT) nSeries = RXSERIES_FLT; UpdateVRWnd(nSeries); *pResult = 0;}void RxFrameTuning::OnDeltaposSpinOpacity(NMHDR* pNMHDR, LRESULT* pResult){ NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; // 胶巧 滚瓢狼 困 肚绰 酒贰甫 喘范绰瘤 牢侥茄促. if(pNMUpDown->iDelta < 0 ) m_pEdOpacity->IncreaseEdit(); else m_pEdOpacity->DecreaseEdit(); *pResult = 0;}void RxFrameTuning::OnOTFEditChanged(NMHDR* pNMHDR, LRESULT* pResult){ NMED_INT *pNMED = (NMED_INT *)pNMHDR; int nSeries = RxGetCurSeries(); if(nSeries != RXSERIES_REF && nSeries != RXSERIES_FLT) return; int nEdit = pNMED->nEdit; switch(pNMED->hdr.idFrom) { case IDF_TUNING_ED_THRESHOLD1 : m_pHistogramWnd[nSeries]->SetOTFPointX(HGARG_1, nEdit, -1, -1, -1); m_pEdThreshold2->SetRange(nEdit, -1, EMASK_MIN); UpdateVRWnd(nSeries); break; case IDF_TUNING_ED_THRESHOLD2 : m_pHistogramWnd[nSeries]->SetOTFPointX(HGARG_2, -1, nEdit, -1, -1); m_pEdThreshold1->SetRange(-1, nEdit, EMASK_MAX); m_pEdThreshold3->SetRange(nEdit, -1, EMASK_MIN); UpdateVRWnd(nSeries); break; case IDF_TUNING_ED_THRESHOLD3 : m_pHistogramWnd[nSeries]->SetOTFPointX(HGARG_3, -1, -1, nEdit, -1); m_pEdThreshold2->SetRange(-1, nEdit, EMASK_MAX); m_pEdThreshold4->SetRange(nEdit, -1, EMASK_MIN); UpdateVRWnd(nSeries); break; case IDF_TUNING_ED_THRESHOLD4 : m_pHistogramWnd[nSeries]->SetOTFPointX(HGARG_4, -1, -1, -1, nEdit); m_pEdThreshold3->SetRange(-1, nEdit, EMASK_MAX); UpdateVRWnd(nSeries); break; } *pResult = 0;}void RxFrameTuning::OnOpacityEditChanged(NMHDR* pNMHDR, LRESULT* pResult){ NMED_FLOAT *pNMED = (NMED_FLOAT *)pNMHDR; int nSeries = RxGetCurSeries(); if(nSeries != RXSERIES_REF && nSeries != RXSERIES_FLT) return; m_pHistogramWnd[nSeries]->SetOTFOpacity(pNMED->fEdit); UpdateVRWnd(nSeries); *pResult = 0;}void RxFrameTuning::OnBtnThreshold(){ CString strPathPreset = _T(""); RxRegistry reg; reg.QueryValueSZ(_T("Data Directory"), &strPathPreset); strPathPreset += _T("Preset"); // Check directory from registry CString strTemp = strPathPreset; if(strTemp.GetAt(strTemp.GetLength()-1) != '\\') strTemp += _T("\\"); strTemp += _T("."); CFileStatus status; if (!CFile::GetStatus(strPathPreset, status)) ::CreateDirectory((LPCTSTR)strPathPreset, NULL); strPathPreset = strPathPreset + _T("\\"); int iModality = 1; CString strFileName; if(iModality == 0) strFileName = _T("OTFMR.dat"); else if(iModality == 1) strFileName = _T("OTFCT.dat"); strFileName = strPathPreset + strFileName; m_pPresetOTF->ReadPresetOTFFile(iModality, strFileName); // combo box initialize InitOTFComboBox(); m_pCBPresetOTF->ShowDropDown(TRUE); m_pCBPresetOTF->SetFocus();}void RxFrameTuning::OnBtnAddOTF(){ AddOTFPolygon(); UpdateVRWnd();}void RxFrameTuning::OnBtnDelOTF(){ DelOTFPolygon(); UpdateVRWnd();}/////////////////////////////////////////////////////////////////////////////void RxFrameTuning::InitOTFComboBox(){ m_pCBPresetOTF->ResetContent(); int iCount = m_pPresetOTF->GetPresetOTFCount(); _PRESET_OTF_PTR stpPresetOTF; for(int i = 0; i < iCount; i++) { stpPresetOTF = m_pPresetOTF->GetPresetOTF(i); m_pCBPresetOTF->AddString(stpPresetOTF->strTitle); } m_pCBPresetOTF->AddString(_T("User Define"));}void RxFrameTuning::UpdateThreshold(int nSeries){ if(nSeries < 0) nSeries = RxGetCurSeries(); if(nSeries != RXSERIES_REF && nSeries != RXSERIES_FLT) return; // Update Controls _OTF_POLYGON *pOTFPolygon = m_pHistogramWnd[nSeries]->GetOTFPolygon(); m_pEdThreshold1->SetRange(-1, pOTFPolygon->nPointPoX[1], EMASK_MAX); m_pEdThreshold1->SetEdit(pOTFPolygon->nPointPoX[0]); m_pEdThreshold2->SetRange(pOTFPolygon->nPointPoX[0], pOTFPolygon->nPointPoX[2]); m_pEdThreshold2->SetEdit(pOTFPolygon->nPointPoX[1]); m_pEdThreshold3->SetRange(pOTFPolygon->nPointPoX[1], pOTFPolygon->nPointPoX[3]); m_pEdThreshold3->SetEdit(pOTFPolygon->nPointPoX[2]); m_pEdThreshold4->SetRange(pOTFPolygon->nPointPoX[2], -1, EMASK_MIN); m_pEdThreshold4->SetEdit(pOTFPolygon->nPointPoX[3]); m_pEdOpacity->SetEdit(pOTFPolygon->fOpacityPo);}void RxFrameTuning::UpdateVRWnd(int nSeries){ if(nSeries < 0) nSeries = RxGetCurSeries(); if(nSeries != RXSERIES_REF && nSeries != RXSERIES_FLT) return; RxFMWndVR *pWndVR = RxGetFrameMain()->m_pFMWndVR[nSeries]; RxLocalizerManager *pLocalizerManager = RxGetFrameMain()->m_pLocalizerManager[nSeries]; pWndVR->SetChangedOTF(m_pHistogramWnd[nSeries]->GetSpectrum()); pLocalizerManager->SetChangedOTF(m_pHistogramWnd[nSeries]->GetSpectrum());}void RxFrameTuning::AddOTFPolygon(int nSeries){ if(nSeries < 0) nSeries = RxGetCurSeries(); if(nSeries != RXSERIES_REF && nSeries != RXSERIES_FLT) return; CString strModality; int nType; int nPoint[4]; COLORREF crPoint[4]; RxVolumeData* pVolumeData = RxGetVolumeData(nSeries); RxDicomObject Dcm = pVolumeData->m_pDicomInfo[nSeries]; Dcm.GetDicomInfo(DI_MODALITY, &strModality, &nType); if(strModality == _T("MR")) { nPoint[0] = 30; nPoint[1] = 100; nPoint[2] = 300; nPoint[3] = 320; crPoint[0] = RGB(255, 98, 98); crPoint[1] = RGB(255, 255, 180); crPoint[2] = RGB(255, 255, 255); crPoint[3] = RGB(255, 255, 255); } else { nPoint[0] = 120+1024; nPoint[1] = 250+1024; nPoint[2] = 520+1024; nPoint[3] = 650+1024; nPoint[0] = -800; nPoint[1] = -720; nPoint[2] = -300; nPoint[3] = -220; crPoint[0] = RGB(255, 98, 98); crPoint[1] = RGB(255, 255, 180); crPoint[2] = RGB(255, 255, 255); crPoint[3] = RGB(255, 255, 255); } m_pHistogramWnd[nSeries]->AddOTFPolygon(nPoint, crPoint, 1.0f, TRUE); UpdateThreshold(nSeries);}void RxFrameTuning::DelOTFPolygon(int nSeries){ if(nSeries < 0) nSeries = RxGetCurSeries(); if(nSeries != RXSERIES_REF && nSeries != RXSERIES_FLT) return; int nCount = m_pHistogramWnd[nSeries]->GetOTFCount(); if(nCount < 2) return; m_pHistogramWnd[nSeries]->RemoveOTFPolygon(); UpdateThreshold(nSeries);}void* RxFrameTuning::GetSpectrumMPR(int nSeries){ return m_pHistogramWnd[nSeries]->GetSpectrumMPR();}void* RxFrameTuning::GetSpectrum(int nSeries){ return m_pHistogramWnd[nSeries]->GetSpectrum();}void RxFrameTuning::SetWindowing(int nSeries, int nLevel, int nWidth){ m_pHistogramWnd[nSeries]->SetWindowing(nLevel, nWidth);}void RxFrameTuning::SetWindowingLevel(int nSeries, int nLevel){ m_pHistogramWnd[nSeries]->SetWindowingLevel(nLevel);}void RxFrameTuning::SetWindowingWidth(int nSeries, int nWidth){ m_pHistogramWnd[nSeries]->SetWindowingWidth(nWidth);}void RxFrameTuning::SetWindowingVisible(int nSeries, BOOL bShow){ m_pHistogramWnd[nSeries]->SetWindowingVisible(bShow);}void RxFrameTuning::GetWindowing(int nSeries, int &nLevel, int &nWidth){ nLevel = m_pHistogramWnd[nSeries]->GetWindowing()->nLevel; nWidth = m_pHistogramWnd[nSeries]->GetWindowing()->nWidth;}BYTE* RxFrameTuning::GetWindowingTable(int nSeries){ return m_pHistogramWnd[nSeries]->GetWindowing()->byTable;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -