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); }
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()); }
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); }
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; }