// 画图形单元 void CGraphInstrumentList::DrawUnitAll(CDC* pDC, int iGridX, int iGridY, unsigned int uiTestType, bool bShowCross, bool bShowPower, bool bShowCollect) { int iUnitWidth; // 图形单元宽度 int iUnitHight; // 图形单元高度 int iUnitSizeMode; // 图形单元尺寸模式;1-最小;2-正常;3-最大 // 得到图形单元尺寸 GetUnitSize(iGridX, iUnitWidth, iUnitHight, iUnitSizeMode); POSITION pos = m_oGraphInstrumentMap.GetStartPosition(); CGraphInstrumentData* pGraphInstrumentData = NULL; unsigned int uiPosIndex; // 仪器位置索引 while(NULL != pos) { // 得到一个绘图单元 m_oGraphInstrumentMap.GetNextAssoc(pos, uiPosIndex, pGraphInstrumentData); if((pGraphInstrumentData->m_pInstrument->m_uiInstrumentType == 1) && (bShowCross == true)) { pGraphInstrumentData->DrawUnit(pDC, iGridX, iGridY, iUnitWidth, iUnitHight, iUnitSizeMode, uiTestType); } else if((pGraphInstrumentData->m_pInstrument->m_uiInstrumentType == 2) && (bShowPower == true)) { pGraphInstrumentData->DrawUnit(pDC, iGridX, iGridY, iUnitWidth, iUnitHight, iUnitSizeMode, uiTestType); } else if((pGraphInstrumentData->m_pInstrument->m_uiInstrumentType == 3) && (bShowCollect == true)) { pGraphInstrumentData->DrawUnit(pDC, iGridX, iGridY, iUnitWidth, iUnitHight, iUnitSizeMode, uiTestType); } } }
int YsWavFile::GetSignedValue(int atTimeStep,int channel) const { const size_t sampleIdx=GetSamplePosition(atTimeStep); const size_t unitSize=GetUnitSize(); if(sampleIdx+unitSize<=sizeInBytes && 0<=channel && channel<GetNumChannel()) { int rawSignedValue=0; size_t offset=sampleIdx+channel*BytePerSample(); switch(BitPerSample()) { case 8: if(YSTRUE==isSigned) { rawSignedValue=dat[offset]; if(128<=rawSignedValue) { rawSignedValue-=256; } } else { rawSignedValue=dat[offset]-128; } break; case 16: // Assume little endian rawSignedValue=dat[offset]+256*dat[offset+1]; if(YSTRUE==isSigned) { if(32768<=rawSignedValue) { rawSignedValue-=65536; } } else { rawSignedValue-=32768; } break; } return rawSignedValue; } return 0; }