Пример #1
0
void ccAlignDlg::dataSliderReleased()
{
    float rate = (float)dataSample->sliderPosition()/(float)dataSample->maximum();
    if (getSamplingMethod() == SPACE)
        rate = 1.0f-rate;
    rate *= dataSamplingRate->maximum();
    dataSamplingRate->setValue(rate);
    dataSamplingRateChanged(rate);
}
Пример #2
0
void
ReSID::saveToBuffer(uint8_t **buffer)
{
	debug(4, "  Saving ReSID state...\n");

    write8(buffer, (uint8_t)getChipModel());
    write8(buffer, (uint8_t)getAudioFilter());
    write8(buffer, (uint8_t)getSamplingMethod());
    write32(buffer, getSampleRate());
    write32(buffer, getClockFrequency());
}
Пример #3
0
void ccAlignDlg::dataSamplingRateChanged(double value)
{
    QString message("An error occured");

    CC_SAMPLING_METHOD method = getSamplingMethod();
    float rate = (float)dataSamplingRate->value()/(float)dataSamplingRate->maximum();
    if(method == SPACE)
        rate = 1.0f-rate;
    dataSample->setSliderPosition((unsigned)((float)dataSample->maximum()*rate));

    switch(method)
    {
        case SPACE:
			{
				CCLib::ReferenceCloud* tmpCloud = getSampledData(); //DGM FIXME: wow! you generate a spatially sampled cloud just to display its size?!
				if (tmpCloud)
				{
					message = QString("distance units (%1 remaining points)").arg(tmpCloud->size());
					delete tmpCloud;
				}
			}
            break;
        case RANDOM:
			{
				message = QString("remaining points (%1%)").arg(rate*100.0f,0,'f',1);
			}
            break;
        case OCTREE:
			{
				CCLib::ReferenceCloud* tmpCloud = getSampledData();  //DGM FIXME: wow! you generate a spatially sampled cloud just to display its size?!
				if (tmpCloud)
				{
					message = QString("%1 remaining points").arg(tmpCloud->size());
					delete tmpCloud;
				}
			}
            break;
        default:
			{
				unsigned remaining = (unsigned)(rate * (float)dataObject->size());
				message = QString("%1 remaining points").arg(remaining);
			}
            break;
    }
    dataRemaining->setText(message);
}
Пример #4
0
CCLib::ReferenceCloud *ccAlignDlg::getSampledData()
{
    CCLib::ReferenceCloud* sampledCloud=0;

    switch (getSamplingMethod())
    {
        case SPACE:
			{
				sampledCloud = CCLib::CloudSamplingTools::resampleCloudSpatially(dataObject, dataSamplingRate->value());
			}
            break;
        case OCTREE:
            if (dataObject->getOctree())
			{
                sampledCloud = CCLib::CloudSamplingTools::subsampleCloudWithOctreeAtLevel(dataObject,
																							(uchar)dataSamplingRate->value(),
																							CCLib::CloudSamplingTools::NEAREST_POINT_TO_CELL_CENTER,
																							NULL,
																							(CCLib::DgmOctree*)dataObject->getOctree());
			}
			else
			{
				ccLog::Error("[ccAlignDlg::getSampledData] Failed to get/compute data octree!");
			}
            break;
        case RANDOM:
			{
				sampledCloud = CCLib::CloudSamplingTools::subsampleCloudRandomly(dataObject, (unsigned)(dataSamplingRate->value()));
			}
			break;
        default:
			{
				sampledCloud = new CCLib::ReferenceCloud(dataObject);
				if (!sampledCloud->addPointIndex(0,dataObject->size()))
				{
					delete sampledCloud;
					sampledCloud=0;
					ccLog::Error("[ccAlignDlg::getSampledData] Not enough memory!");
				}
			}
            break;
    }

    return sampledCloud;
}