📄 wgl_32doc.cpp
字号:
xlstart--;
while(xlstart < ShortNodeNum)
{
while(xlstart < ShortNodeNum && m_pShortNode[xlstart].bShow==0)
{
if(lli == m_pShortNode[xlstart].lend)
{
if(lli >= index) return;
xpos += ShortWidth;
}
else
{
if(lli >= index) return;
xpos += ShortWidth/2;
}
xlstart++;
lli = m_pShortNode[xlstart].lend;
}
if(xlstart == ShortNodeNum-1)
return;
lle = m_pShortNode[xlstart+1].lend;
if(lle >= index)
{
xpos += intINT((index-lli)*m_XSizeFactor);
return;
}
xpos += intINT((lle-lli)*m_XSizeFactor);
xlstart ++;
lli = m_pShortNode[xlstart].lend;
}
}
void CWgl_32Doc::GetNextHPage(unsigned long& EPage)
{
int Page = 0;
int xlstart = 0;
unsigned long lli=PageFromSampNum;
while(xlstart<ShortNodeNum && m_pShortNode[xlstart].lend<=lli)
xlstart ++;
xlstart--;
while(xlstart < ShortNodeNum)
{
while(xlstart < ShortNodeNum && m_pShortNode[xlstart].bShow==0)
{
if(m_pShortNode[xlstart].lend == lli)
Page = Page+ShortWidth;
else
Page = Page+ShortWidth/2;
if(Page > pageHWidth)
{
EPage = m_pShortNode[xlstart].lend+1;
return;
}
else
{
xlstart ++;
if(Page == pageHWidth)
{
EPage = m_pShortNode[xlstart].lend;
return;
}
}
lli = m_pShortNode[xlstart].lend;
} // end in while
if(xlstart+1 == ShortNodeNum)
{
EPage = EndSampNum-1;
return;
}
unsigned long tul;
tul=m_pShortNode[xlstart+1].lend-lli;
int v = pageHWidth-Page;
Page = Page+intINT(tul*m_XSizeFactor);
if(Page > pageHWidth)
{
Page = intINT(v/m_XSizeFactor);
EPage = lli+Page;
if(EPage > EndSampNum-1)
EPage = EndSampNum-1;
return;
}
else
{
xlstart ++;
if(Page == pageHWidth)
{
EPage = m_pShortNode[xlstart].lend;
if(EPage > EndSampNum-1)
EPage = EndSampNum;
return;
}
}
lli = m_pShortNode[xlstart].lend;
} // end out while
EPage = 0;
}
void CWgl_32Doc::GetPrevHPage(unsigned long& EPage)
{
int Page = 0;
int xlstart = ShortNodeNum-1;
unsigned long lli=PageFromSampNum;
while(xlstart>0 && m_pShortNode[xlstart].lend>=lli)
xlstart --;
while(xlstart >= 0)
{
while(xlstart >= 0 && m_pShortNode[xlstart].bShow==0)
{
if(m_pShortNode[xlstart+1].lend == lli)
Page = Page+ShortWidth;
else
Page = Page+ShortWidth/2;
if(Page > pageHWidth)
{
EPage = m_pShortNode[xlstart].lend+1;
return;
}
else
{
lli = m_pShortNode[xlstart].lend;
xlstart --;
if(Page == pageHWidth)
{
EPage = m_pShortNode[xlstart].lend;
return;
}
}
} // end in while
double tul;
tul=lli-m_pShortNode[xlstart].lend;
double v=pageHWidth-Page;
Page = Page+intINT(tul*m_XSizeFactor);
if(Page >= pageHWidth)
{
Page = intINT(v/m_XSizeFactor);
EPage = lli-Page;
if(EPage<0)
EPage = 0;
return;
}
else
{
lli = m_pShortNode[xlstart].lend;
xlstart --;
if(xlstart < 0) break;
if(Page == pageHWidth)
{
EPage = m_pShortNode[xlstart].lend;
if(EPage<0)
EPage = 0;
return;
}
}
} // end out while
EPage = 0;
}
void CWgl_32Doc::GetNextHLine(unsigned long& Line)
{
int xlstart = 0;
unsigned long lli=PageFromSampNum;
while(xlstart<ShortNodeNum && m_pShortNode[xlstart].lend<=lli)
xlstart ++;
xlstart --;
if(m_pShortNode[xlstart].bShow==0)
{
if(m_pShortNode[xlstart].lend==lli)
{
if(lli < EndSampNum-1)
Line = lli+1;
return;
}
if(xlstart<ShortNodeNum) xlstart++;
Line = m_pShortNode[xlstart].lend;
if(Line > EndSampNum-1)
Line = EndSampNum-1;
return;
}
if(lli < EndSampNum-1)
Line = lli+1;
}
void CWgl_32Doc::GetPrevHLine(unsigned long& Line)
{
int xlstart = 0;
unsigned long lli=PageFromSampNum;
while(xlstart<ShortNodeNum && m_pShortNode[xlstart].lend<=lli)
xlstart ++;
xlstart --;
if(m_pShortNode[xlstart].bShow==0)
{
if(m_pShortNode[xlstart].lend<lli)
{
Line = m_pShortNode[xlstart].lend;
return;
}
if(m_pShortNode[xlstart].lend>0)
Line = m_pShortNode[xlstart].lend-1;
else
Line = 0;
return;
}
if(lli>0)
Line = lli-1;
}
//////////////////////////////////////////////////////////////////////////////
// Command Handlers
void CWgl_32Doc::OnEditSegment()
{
CSegment seg;
CString strTemp;
seg.m_editmax = EndSampNum;
for(int i=0; i<ShortNodeNum; i++)
{
strTemp.Format(seg.strFormat,m_pShortNode[i].lend);
if(m_pShortNode[i].lend != EndSampNum)
if(m_pShortNode[i].bShow)
strTemp += seg.strShow;
else
strTemp += seg.strHide;
seg.List.Add(strTemp);
}
do
{
if(seg.DoModal() != IDOK)
return;
strTemp = seg.strShow;
} while(!RelocalShortNode(seg.List,strTemp));
AdjustSampIndex(LCursor,FALSE);
AdjustSampIndex(RCursor,FALSE);
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd *pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();
CWgl_32View *pView = (CWgl_32View *)pChild->GetActiveView();
CRect rect;
pView->GetClientRect(&rect);
pView->SetResynScroll(rect.right,rect.bottom);
UpdateAllViews( NULL );
}
void CWgl_32Doc::OnChangeCurveColor()
{
if(bReadError) return;
CCurveColor ClrDlg(this);
ClrDlg.DoModal();
if(ClrDlg.bChange)
UpdateAllViews( NULL );
return;
}
void CWgl_32Doc::UpdateView(BOOL bTree, BOOL bRigh)
{
CMDIFrameWnd *pFrame=(CMDIFrameWnd *)AfxGetApp()->m_pMainWnd;
CChildFrame *pChild=(CChildFrame *)pFrame->GetActiveFrame();
if(bTree)
{
CTreeDisp *pTreeView =
(CTreeDisp *)pChild->m_wndSplitter.GetPane(0,0);
pTreeView->SetVScroll();
}
if(bRigh)
{
CRighView *pRighView =
(CRighView *)pChild->m_wndSplitter.GetPane(1,1);
pRighView->InvalidateRect( NULL );
}
}
void CWgl_32Doc::OnViewGroupShow()
{
CViewLine viewgroup(this);
if(viewgroup.DoModal()==IDCANCEL) return;
mNumViewChannel = 0;
for(int i=0; i<m_ChannelNum; i++)
if(m_pChannelIndex[i].bShow) mNumViewChannel ++;
CMDIFrameWnd *pFrame=(CMDIFrameWnd *)AfxGetApp()->m_pMainWnd;
CMDIChildWnd *pChild=(CMDIChildWnd *)pFrame->GetActiveFrame();
CWgl_32View *pView=(CWgl_32View *)pChild->GetActiveView();
m_ViewChannelMax = m_ChannelNum;
for(i=0; i<pView->nRemaindCurve; i++)
{
while(m_ViewChannelMax >= 0
&& m_pChannelIndex[m_ViewChannelMax].bShow==0)
m_ViewChannelMax --;
m_ViewChannelMax --;
}
m_ViewChannelMax ++;
m_ViewChannelMin = 0;
while(m_ViewChannelMin < m_ViewChannelMax
&& m_pChannelIndex[m_ViewChannelMin].bShow==0)
m_ViewChannelMin ++;
if(m_ViewChannel >= m_ViewChannelMax)
m_ViewChannel = m_ViewChannelMax;
else if(m_ViewChannel <= m_ViewChannelMin)
m_ViewChannel = m_ViewChannelMin;
else
while(m_ViewChannel>m_ViewChannelMin
&& m_pChannelIndex[m_ViewChannel].bShow==0)
m_ViewChannel --;
CRect rect;
pView->GetClientRect(&rect);
pView->SetResynScroll(rect.right,rect.bottom);
UpdateAllViews( NULL );
}
void CWgl_32Doc::OnViewWhichValue()
{
bFirstValue = !bFirstValue;
if(bFirstValue)
{
DblVVT = DblVT;
DblAAT = DblAT;
if(m_pChannel[nWhichCurve].VAD==0)
{
LCursorA *= DblAAT;
RCursorA *= DblAAT;
}
if(m_pChannel[nWhichCurve].VAD==1)
{
LCursorA *= DblVVT;
RCursorA *= DblVVT;
}
}
else
{
if(m_pChannel[nWhichCurve].VAD==0)
{
LCursorA /= DblAAT;
RCursorA /= DblAAT;
}
if(m_pChannel[nWhichCurve].VAD==1)
{
LCursorA /= DblVVT;
RCursorA /= DblVVT;
}
DblVVT = DblAAT = 1.0;
}
UpdateView( TRUE, TRUE );
}
void CWgl_32Doc::OnUpdateViewWhichValue(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( bFirstValue );
}
void CWgl_32Doc::OnVirtueValue()
{
bVirtualValue = !bVirtualValue;
UpdateView( TRUE, TRUE );
}
void CWgl_32Doc::OnUpdateVirtueValue(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( bVirtualValue );
}
void CWgl_32Doc::GetDisplayValue(WORD wChannel,double& dmin,double& dmax)
{
if(!bVirtualValue && !bFirstValue) return;
double SampRate,a,b;
a = m_pChannel[wChannel].a;
b = m_pChannel[wChannel].b;
int i=0;
while(i < m_NumRates && m_pSampRates[i].EndSampNum<LCursor)
i++;
if(i == m_NumRates) goto RV;
if(m_pSampRates[i].SampRate < 1000) goto RV;
SampRate=m_pSampRates[i].SampRate/m_FreqPhase;
if(bVirtualValue)
{
int r = m_pSampRates[i].EndSampNum-LCursor;
if( r < SampRate) goto RV;
double v=0.0;
for(i=0; i<SampRate; i++)
{
double vi=PSamplData[wChannel][LCursor+i]*a+b;
v += vi*vi;
}
v = v/SampRate;
v = sqrt(v);
dmin = v;
}
RV:
i=0;
while(i < m_NumRates && m_pSampRates[i].EndSampNum<RCursor)
i++;
if(i == m_NumRates) goto FS;
if(m_pSampRates[i].SampRate < 1000) goto FS;
SampRate=m_pSampRates[i].SampRate/m_FreqPhase;
if(bVirtualValue)
{
int r = m_pSampRates[i].EndSampNum-RCursor;
if( r < SampRate) goto FS;
double v=0.0;
for(i=0; i<SampRate; i++)
{
double vi=PSamplData[wChannel][RCursor+i]*a+b;
v += vi*vi;
}
v = v/SampRate;
v = sqrt(v);
dmax = v;
}
FS:
if(bFirstValue)
{
if(m_pChannel[wChannel].VAD==0)
{
dmin *= DblAAT;
dmax *= DblAAT;
}
else
if(m_pChannel[wChannel].VAD==1)
{
dmin *= DblVVT;
dmax *= DblVVT;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -