void ChangeResolutionAction::PerformFrequencyChange(class ArtifactSet &artifacts, class ProgressListener &listener) { if(_frequencyDecreaseFactor != 1) { ArtifactSet artifactsCopy(artifacts); artifactsCopy.SetNoImageSet(); TimeFrequencyData oldContaminated = artifacts.ContaminatedData(); DecreaseFrequency(artifactsCopy.OriginalData()); DecreaseFrequency(artifactsCopy.ContaminatedData()); DecreaseFrequency(artifactsCopy.RevisedData()); ActionBlock::Perform(artifactsCopy, listener); IncreaseFrequency(artifacts.OriginalData(), artifactsCopy.OriginalData(), false, false); IncreaseFrequency(artifacts.ContaminatedData(), artifactsCopy.ContaminatedData(), _restoreContaminated, _restoreMasks); IncreaseFrequency(artifacts.RevisedData(), artifactsCopy.RevisedData(), _restoreRevised, _restoreMasks); if(_restoreRevised) { TimeFrequencyData *contaminatedData = TimeFrequencyData::CreateTFDataFromDiff(oldContaminated, artifacts.RevisedData()); contaminatedData->SetMask(oldContaminated); artifacts.SetContaminatedData(*contaminatedData); delete contaminatedData; } } else { ActionBlock::Perform(artifacts, listener); } }
void ChangeResolutionAction::PerformFrequencyChange(class ArtifactSet &artifacts, class ProgressListener &listener) { TimeFrequencyData oldContaminated = artifacts.ContaminatedData(); if(_frequencyDecreaseFactor != 1) { ArtifactSet artifactsCopy(artifacts); artifactsCopy.SetNoImageSet(); DecreaseFrequency(artifactsCopy.OriginalData()); DecreaseFrequency(artifactsCopy.ContaminatedData()); DecreaseFrequency(artifactsCopy.RevisedData()); ActionBlock::Perform(artifactsCopy, listener); IncreaseFrequency(artifacts.OriginalData(), artifactsCopy.OriginalData(), false, false); IncreaseFrequency(artifacts.ContaminatedData(), artifactsCopy.ContaminatedData(), _restoreContaminated, _restoreMasks); IncreaseFrequency(artifacts.RevisedData(), artifactsCopy.RevisedData(), _restoreRevised, _restoreMasks); } else { ActionBlock::Perform(artifacts, listener); } if(_restoreRevised && !_restoreContaminated) { oldContaminated.Subtract(artifacts.RevisedData()); if(_restoreMasks) oldContaminated.SetMask(artifacts.ContaminatedData()); artifacts.SetContaminatedData(oldContaminated); } }
void GPIOF_Handler(void) { if (GPIOF->RIS & (0x1UL<<4) && !(GPIOF->RIS & (0x1UL<<0))) { IncreaseFrequency(); GPIOF->ICR |= (0x1UL<<4); // Clear interrupt at 4. } else if (GPIOF->RIS & (0x1UL<<0) && !((GPIOF->RIS & (0x1UL<<4)))) { DecreaseFrequency(); GPIOF->ICR |= (0x1UL<<0); // Clear interrupt at 0. } NVIC->ICPR[0] = 0x1UL<<30; // Clear pending bit. }