本文整理汇总了C++中SparseSet类的典型用法代码示例。如果您正苦于以下问题:C++ SparseSet类的具体用法?C++ SparseSet怎么用?C++ SparseSet使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SparseSet类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mouseDrag
void mouseDrag (const MouseEvent& e) override
{
if (auto* m = owner.getModel())
{
if (isEnabled() && e.mouseWasDraggedSinceMouseDown() && ! isDragging)
{
SparseSet<int> rowsToDrag;
if (owner.selectOnMouseDown || owner.isRowSelected (row))
rowsToDrag = owner.getSelectedRows();
else
rowsToDrag.addRange (Range<int>::withStartAndLength (row, 1));
if (rowsToDrag.size() > 0)
{
auto dragDescription = m->getDragSourceDescription (rowsToDrag);
if (! (dragDescription.isVoid() || (dragDescription.isString() && dragDescription.toString().isEmpty())))
{
isDragging = true;
owner.startDragAndDrop (e, rowsToDrag, dragDescription, true);
}
}
}
}
if (! isDraggingToScroll)
if (auto* vp = owner.getViewport())
isDraggingToScroll = vp->isCurrentlyScrollingOnDrag();
}
示例2: getSelectedSceneName
std::string SceneComponent::getSelectedSceneName() {
SparseSet< int > rows = listBox->getSelectedRows ();
if( !rows.size() )
return 0;
int idx = rows[0];
return sceneinfo[idx]->getSceneName();
}
示例3: selected
void PluginListComponent::removeSelectedPlugins()
{
const SparseSet<int> selected (table.getSelectedRows());
for (int i = table.getNumRows(); --i >= 0;)
if (selected.contains (i))
removePluginItem (i);
}
示例4: selected
void PluginListComponent::removeSelected()
{
const SparseSet <int> selected (listBox.getSelectedRows());
for (int i = list.getNumTypes(); --i >= 0;)
if (selected.contains (i))
removePluginItem (list, i);
}
示例5: syncSelectedItemsWithDeviceList
//==============================================================================
void syncSelectedItemsWithDeviceList (const ReferenceCountedArray<MidiDeviceListEntry>& midiDevices)
{
SparseSet<int> selectedRows;
for (int i = 0; i < midiDevices.size(); ++i)
if (midiDevices[i]->inDevice != nullptr || midiDevices[i]->outDevice != nullptr)
selectedRows.addRange (Range<int> (i, i+1));
lastSelectedItems = selectedRows;
updateContent();
setSelectedRows (selectedRows, dontSendNotification);
}
示例6: switch
void PluginListComponent::optionsMenuCallback (int result)
{
switch (result)
{
case 1: list.clear(); break;
case 2: list.sort (KnownPluginList::sortAlphabetically); break;
case 3: list.sort (KnownPluginList::sortByCategory); break;
case 4: list.sort (KnownPluginList::sortByManufacturer); break;
case 5:
{
const SparseSet <int> selected (listBox.getSelectedRows());
for (int i = list.getNumTypes(); --i >= 0;)
if (selected.contains (i))
list.removeType (i);
break;
}
case 6:
{
const PluginDescription* const desc = list.getType (listBox.getSelectedRow());
if (desc != nullptr && File (desc->fileOrIdentifier).existsAsFile())
File (desc->fileOrIdentifier).getParentDirectory().startAsProcess();
break;
}
case 7:
for (int i = list.getNumTypes(); --i >= 0;)
if (! AudioPluginFormatManager::getInstance()->doesPluginStillExist (*list.getType (i)))
list.removeType (i);
break;
default:
if (result != 0)
{
typeToScan = result - 10;
startTimer (1);
}
break;
}
}
示例7: hasRegAlias
/// Return true if Reg aliases a register in Regs SparseSet.
static bool hasRegAlias(unsigned Reg, SparseSet<unsigned> &Regs,
const TargetRegisterInfo *TRI) {
assert(!TargetRegisterInfo::isVirtualRegister(Reg) && "only for physregs");
for (const uint16_t *Alias = TRI->getOverlaps(Reg); *Alias; ++Alias) {
if (Regs.count(*Alias))
return true;
}
return false;
}
示例8: mouseDrag
void mouseDrag (const MouseEvent& e)
{
if (isEnabled() && owner.getModel() != nullptr && ! (e.mouseWasClicked() || isDragging))
{
const SparseSet<int> selectedRows (owner.getSelectedRows());
if (selectedRows.size() > 0)
{
const var dragDescription (owner.getModel()->getDragSourceDescription (selectedRows));
if (! (dragDescription.isVoid() || (dragDescription.isString() && dragDescription.toString().isEmpty())))
{
isDragging = true;
owner.startDragAndDrop (e, dragDescription);
}
}
}
}
示例9: getDragSourceDescription
var RemoteDirectoryListBoxModel::getDragSourceDescription (const SparseSet<int> ¤tlySelectedRows)
{
if (currentlySelectedRows.size() > 0) {
String path (curlSession->getRemotePath().upToLastOccurrenceOf ("/", true, false) + itemList[currentlySelectedRows[0]]);
return path;
}
return String::empty;
}
示例10: selectedRowsChanged
//==============================================================================
void selectedRowsChanged (int) override
{
SparseSet<int> newSelectedItems = getSelectedRows();
if (newSelectedItems != lastSelectedItems)
{
for (int i = 0; i < lastSelectedItems.size(); ++i)
{
if (! newSelectedItems.contains (lastSelectedItems[i]))
parent.closeDevice (isInput, lastSelectedItems[i]);
}
for (int i = 0; i < newSelectedItems.size(); ++i)
{
if (! lastSelectedItems.contains (newSelectedItems[i]))
parent.openDevice (isInput, newSelectedItems[i]);
}
lastSelectedItems = newSelectedItems;
}
}
示例11: getDragSourceDescription
var getDragSourceDescription (const SparseSet<int>& selectedRows)
{
// for our drag desctription, we'll just make a list of the selected
// row numbers - this will be picked up by the drag target and displayed in
// its box.
String desc;
for (int i = 0; i < selectedRows.size(); ++i)
desc << (selectedRows [i] + 1) << " ";
return desc.trim();
}
示例12: mouseDrag
void mouseDrag (const MouseEvent& e) override
{
if (isEnabled() && owner.getModel() != nullptr && ! (e.mouseWasClicked() || isDragging))
{
SparseSet<int> rowsToDrag;
if (owner.selectOnMouseDown || owner.isRowSelected (row))
rowsToDrag = owner.getSelectedRows();
else
rowsToDrag.addRange (Range<int>::withStartAndLength (row, 1));
if (rowsToDrag.size() > 0)
{
const var dragDescription (owner.getModel()->getDragSourceDescription (rowsToDrag));
if (! (dragDescription.isVoid() || (dragDescription.isString() && dragDescription.toString().isEmpty())))
{
isDragging = true;
owner.startDragAndDrop (e, rowsToDrag, dragDescription, true);
}
}
}
}
示例13: jlimit
void Image::createSolidAreaMask (RectangleList& result, const float alphaThreshold) const
{
if (hasAlphaChannel())
{
const uint8 threshold = (uint8) jlimit (0, 255, roundToInt (alphaThreshold * 255.0f));
SparseSet<int> pixelsOnRow;
const BitmapData srcData (*this, 0, 0, getWidth(), getHeight());
for (int y = 0; y < srcData.height; ++y)
{
pixelsOnRow.clear();
const uint8* lineData = srcData.getLinePointer (y);
if (isARGB())
{
for (int x = 0; x < srcData.width; ++x)
{
if (((const PixelARGB*) lineData)->getAlpha() >= threshold)
pixelsOnRow.addRange (Range<int> (x, x + 1));
lineData += srcData.pixelStride;
}
}
else
{
for (int x = 0; x < srcData.width; ++x)
{
if (*lineData >= threshold)
pixelsOnRow.addRange (Range<int> (x, x + 1));
lineData += srcData.pixelStride;
}
}
for (int i = 0; i < pixelsOnRow.getNumRanges(); ++i)
{
const Range<int> range (pixelsOnRow.getRange (i));
result.add (Rectangle<int> (range.getStart(), y, range.getLength(), 1));
}
result.consolidate();
}
}
else
{
result.add (0, 0, getWidth(), getHeight());
}
}
示例14: MidiMapping
void MappingsDialog::buttonClicked (Button* buttonThatWasClicked)
{
//[UserbuttonClicked_Pre]
//[/UserbuttonClicked_Pre]
if (buttonThatWasClicked == addMidiButton)
{
//[UserButtonCode_addMidiButton] -- add your button handler code here..
MidiMapping *mapping = new MidiMapping(midiManager,
pluginField->getFilterGraph(),
pluginNode->nodeId,
0,
0,
false,
0.0f,
1.0f);
midiManager->registerMapping(0, mapping);
mappings.add(mapping);
pluginField->addMapping(mapping);
mappingsList->updateContent();
repaint();
//[/UserButtonCode_addMidiButton]
}
else if (buttonThatWasClicked == addOscButton)
{
//[UserButtonCode_addOscButton] -- add your button handler code here..
OscMapping *mapping = new OscMapping(oscManager,
pluginField->getFilterGraph(),
pluginNode->nodeId,
0,
"",
0);
oscManager->registerMapping("", mapping);
mappings.add(mapping);
pluginField->addMapping(mapping);
mappingsList->updateContent();
repaint();
//[/UserButtonCode_addOscButton]
}
else if (buttonThatWasClicked == deleteButton)
{
//[UserButtonCode_deleteButton] -- add your button handler code here..
int i;
Array<int> mappingsToDelete;
const SparseSet<int> selectedRows = mappingsList->getSelectedRows();
for(i=0;i<selectedRows.size();++i)
{
jassert(selectedRows[i] < mappings.size());
mappingsToDelete.add(selectedRows[i]);
}
mappingsToDelete.sort(comparator);
for(i=(mappingsToDelete.size()-1);i>=0;--i)
{
pluginField->removeMapping(mappings[mappingsToDelete[i]]);
mappings.remove(mappingsToDelete[i]);
}
mappingsList->updateContent();
//[/UserButtonCode_deleteButton]
}
else if (buttonThatWasClicked == overrideMidiButton)
{
//[UserButtonCode_overrideMidiButton] -- add your button handler code here..
pluginField->enableMidiForNode(pluginNode,
overrideMidiButton->getToggleState());
//[/UserButtonCode_overrideMidiButton]
}
//[UserbuttonClicked_Post]
//[/UserbuttonClicked_Post]
}
示例15: fl
//.........这里部分代码省略.........
o.resizable = false;
o.runModal();
ScopedPointer<XmlElement> audioState(deviceManager.createStateXml());
getAppProperties().getUserSettings()->setValue("audioDeviceState", audioState);
getAppProperties().getUserSettings()->saveIfNeeded();
//[/UserButtonCode_settingsButton]
}
else if (buttonThatWasClicked == playButton)
{
//[UserButtonCode_playButton] -- add your button handler code here..
const ScopedLock pal(playheadAudioLock);
playheadState = PlayheadState::playing;
playheadAudioSamplesCompleted = 0;
//[/UserButtonCode_playButton]
}
else if (buttonThatWasClicked == loopButton)
{
//[UserButtonCode_loopButton] -- add your button handler code here..
const ScopedLock pal(playheadAudioLock);
playheadState = PlayheadState::looping;
//[/UserButtonCode_loopButton]
}
else if (buttonThatWasClicked == stopButton)
{
//[UserButtonCode_stopButton] -- add your button handler code here..
const ScopedLock pal(playheadAudioLock);
playheadState = PlayheadState::stopped;
playheadAudioSamplesCompleted = 0;
//[/UserButtonCode_stopButton]
}
else if (buttonThatWasClicked == qDefaultButton)
{
//[UserButtonCode_qDefaultButton] -- add your button handler code here..
qSlider->setValue(1.0);
//[/UserButtonCode_qDefaultButton]
}
else if (buttonThatWasClicked == sDefaultButton)
{
//[UserButtonCode_sDefaultButton] -- add your button handler code here..
sSlider->setValue(1.0);
//[/UserButtonCode_sDefaultButton]
}
else if (buttonThatWasClicked == saveButton)
{
//[UserButtonCode_saveButton] -- add your button handler code here..
const ScopedLock pal(playheadAudioLock);
if (playheadAudio.getNumChannels() > 0 && playheadAudio.getNumSamples() > 0) {
FileChooser fileChooser("Save as...", File::nonexistent, "*.wav", true);
if (fileChooser.browseForFileToSave(true)) {
File outputFile = fileChooser.getResult();
outputFile.deleteFile();
WavAudioFormat wavFormat;
ScopedPointer<FileOutputStream> outputFileStream = outputFile.createOutputStream();
ScopedPointer<AudioFormatWriter> writer = wavFormat.createWriterFor(outputFileStream, 44100.0, playheadAudio.getNumChannels(), 16, StringPairArray(), 0);
writer->writeFromAudioSampleBuffer(playheadAudio, 0, playheadAudio.getNumSamples());
outputFileStream.release();
}
}
//[/UserButtonCode_saveButton]
}
else if (buttonThatWasClicked == inputRemoveButton)
{
//[UserButtonCode_inputRemoveButton] -- add your button handler code here..
const ScopedLock fl(soundListLock);
SparseSet<int> selectedRows = inputFileListComponent->getSelectedRows();
for (int i = 0; i < selectedRows.size(); ++i) {
int row = selectedRows[i];
int id = inputFileListComponent->getIdForRow(row);
const auto& iter = idToSound.find(id);
jassert(iter != idToSound.end());
idToSound.erase(iter);
}
if (selectedRows.size() > 0) {
inputFilesChanged(dontSendNotification);
}
//[/UserButtonCode_inputRemoveButton]
}
else if (buttonThatWasClicked == inputAddButton)
{
//[UserButtonCode_inputAddButton] -- add your button handler code here..
const ScopedLock fl(soundListLock);
FileChooser fileChooser("Add sound...", File::nonexistent, "*.wav;*.aif;*.aiff;*.ogg", true);
if (fileChooser.browseForMultipleFilesToOpen()) {
Array<File> files = fileChooser.getResults();
StringArray filePaths;
for (int i = 0; i < files.size(); ++i) {
filePaths.add(files[i].getFullPathName());
}
filesDropped(filePaths, -1, -1);
}
//[/UserButtonCode_inputAddButton]
}
//[UserbuttonClicked_Post]
//[/UserbuttonClicked_Post]
}