// 画图形单元
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);
		}
		
		
	}
}
Пример #2
0
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;
}