Пример #1
0
void GCamera::SelectAOI()
{
	if(!m_IsOpened)
		return;
	SelectFullAOI();
	ImageProcessor()->AoiSelector()->open();
}
Пример #2
0
void GCamera::LatterInitialization()
{
	m_IsOpened = OpenCamera();
	if(!m_IsOpened)
		return;

	if(ImageProcessor()) {
		disconnect(ImageProcessor(), SIGNAL(OutputImageDouble(GImageDouble)), this, SLOT(NotifyImageSent()));
		disconnect(ImageProcessor(), SIGNAL(ProcessorFailed()), this, SLOT(NotifyImageFailed()));
		connect(ImageProcessor(), SIGNAL(OutputImageDouble(GImageDouble)), this, SLOT(NotifyImageSent()), Qt::QueuedConnection);
		connect(ImageProcessor(), SIGNAL(ProcessorFailed()), this, SLOT(NotifyImageFailed()), Qt::QueuedConnection);
	}

	ChangeExposureTime(m_Expo_ms);
	ChangeGainFactor(m_Gain);
	emit CapabilitiesMayHaveChanged();

	GDevice::LatterInitialization();
}
Пример #3
0
void GCamera::InterpretSettings( QSettings& fromQsettings )
{
	GDevice::InterpretSettings(fromQsettings);
	if(!SupportsExternalTrigger())
		m_HardwareTrigger = false;

	// processor
	fromQsettings.beginGroup("Processor");
	//TOGO: false just for compatibility with previous version
	ImageProcessor()->ReadDeviceSettings(fromQsettings, false);
	// no display of the AOI for the camera
	ImageProcessor()->ShowAOI(false);
	fromQsettings.endGroup();

	fromQsettings.beginGroup("Acquire");
	LatterReadCurrentGroup(fromQsettings);
	fromQsettings.endGroup();

}
Пример #4
0
void GCamera::PopulateSettings( QSettings& inQsettings )
{
	GDevice::PopulateSettings(inQsettings);
	inQsettings.beginGroup("Acquire");
	m_DoAquireContinuously.SaveDeviceSettings(inQsettings);
	inQsettings.endGroup();
	// processor
	inQsettings.beginGroup("Processor");
	//TOGO: false just for compatibility with previous version
	ImageProcessor()->SaveDeviceSettings(inQsettings, false);
	inQsettings.endGroup();
}
Пример #5
0
QRect GCamera::ChangeSensorAOI( QRect AoiRect )
{	
	if(!m_IsOpened)
		return QRect();
	QRect oldAoi = SensorAOI();
	if(oldAoi == AoiRect)
		return oldAoi;

	QRect usedRect = SetSensorAOI(AoiRect);

	if(oldAoi != usedRect)
		ImageProcessor()->SetAoiRect(usedRect);

	return usedRect;
}
Пример #6
0
// Called by the framework to process frame data
TFrameState CPngReadCodec::ProcessFrameL(TBufPtr8& aSrc)
	{
	CImageProcessor*const imageProc = ImageProcessor();
	CImageProcessor*const maskProc = MaskProcessor();

	TUint8* startDataPtr = const_cast<TUint8*>(aSrc.Ptr());
	TUint8* dataPtr = startDataPtr;
	const TUint8* dataPtrLimit = dataPtr + aSrc.Length();
	while (dataPtr < dataPtrLimit)
		{
		// If at the end of a PNG chunk
		if (iChunkBytesRemaining == 0)
			{
			if (iChunkId == KPngIDATChunkId) // Need to skip IDAT chunk CRCs
				{
				if (dataPtr + KPngChunkCRCSize + KPngChunkLengthSize + KPngChunkIdSize > dataPtrLimit)
					break;

				dataPtr += KPngChunkCRCSize;
				}
			else
				{
				if (dataPtr + KPngChunkLengthSize + KPngChunkIdSize > dataPtrLimit)
					break;
				}

			iChunkBytesRemaining = PtrReadUtil::ReadBigEndianUint32Inc(const_cast<const TUint8*&>(dataPtr));
			iChunkId = TPtr8(dataPtr,KPngChunkIdSize,KPngChunkIdSize);
			dataPtr += KPngChunkIdSize;
			}
		// Process an image data chunk
		if (iChunkId == KPngIDATChunkId)
			DoProcessDataL(const_cast<const TUint8*&>(dataPtr),dataPtrLimit);
		// Process an END chunk -- frame is complete
		else if (iChunkId == KPngIENDChunkId)
			{
			iDecompressor->InflateL();
			imageProc->FlushPixels();
			if (maskProc)
				maskProc->FlushPixels();
			return EFrameComplete;
			}
		else 
		// Skip other chunks
			{
			TInt bytesLeft = dataPtrLimit - dataPtr;
			if (bytesLeft >= iChunkBytesRemaining + KPngChunkCRCSize)
				{
				dataPtr += iChunkBytesRemaining + KPngChunkCRCSize;
				iChunkBytesRemaining = 0;
				}
			else
				{
				dataPtr += bytesLeft;
				iChunkBytesRemaining -= bytesLeft;
				}
			}
		}

	aSrc.Shift(dataPtr - startDataPtr);
	return EFrameIncomplete;
	}