static void writeIntToStream (OutputStream& stream, IntegerType number) { char buffer [NumberToStringConverters::charsNeededForInt]; char* end = buffer + numElementsInArray (buffer); const char* start = NumberToStringConverters::numberToString (end, number); stream.write (start, (size_t) (end - start - 1)); }
void getAllCommands (Array<CommandID>& commands) override { // this returns the set of all commands that this target can perform.. const CommandID ids[] = { MainAppWindow::showPreviousDemo, MainAppWindow::showNextDemo, MainAppWindow::welcome, MainAppWindow::componentsAnimation, MainAppWindow::componentsDialogBoxes, MainAppWindow::componentsKeyMappings, MainAppWindow::componentsMDI, MainAppWindow::componentsPropertyEditors, MainAppWindow::componentsTransforms, MainAppWindow::componentsWebBrowsers, MainAppWindow::componentsWidgets, MainAppWindow::useLookAndFeelV1, MainAppWindow::useLookAndFeelV2, MainAppWindow::useLookAndFeelV3, MainAppWindow::toggleRepaintDebugging, #if ! JUCE_LINUX MainAppWindow::goToKioskMode, #endif MainAppWindow::useNativeTitleBar }; commands.addArray (ids, numElementsInArray (ids)); const CommandID engineIDs[] = { MainAppWindow::renderingEngineOne, MainAppWindow::renderingEngineTwo, MainAppWindow::renderingEngineThree }; StringArray renderingEngines (MainAppWindow::getMainAppWindow()->getRenderingEngines()); commands.addArray (engineIDs, renderingEngines.size()); }
void AudioSampleBuffer::allocateChannels (float* const* const dataToReferTo, int offset) { jassert (offset >= 0); // (try to avoid doing a malloc here, as that'll blow up things like Pro-Tools) if (numChannels < (int) numElementsInArray (preallocatedChannelSpace)) { channels = static_cast<float**> (preallocatedChannelSpace); } else { allocatedData.malloc ((size_t) numChannels + 1, sizeof (float*)); channels = reinterpret_cast<float**> (allocatedData.getData()); } for (int i = 0; i < numChannels; ++i) { // you have to pass in the same number of valid pointers as numChannels jassert (dataToReferTo[i] != nullptr); channels[i] = dataToReferTo[i] + offset; } channels [numChannels] = nullptr; isClear = false; }
LinSin::LinSin(MappingBase_InputsWithTypesOnly) throw() { UGen inputs[] = { MappingBase_InputsNoTypes }; const int numInputChannels = findMaxInputChannels(numElementsInArray(inputs), inputs); initInternal(numInputChannels); bool hasScalarRanges = inLow.isScalar() && inHigh.isScalar() && outLow.isScalar() && outHigh.isScalar(); if(hasScalarRanges == true) { for(unsigned int i = 0; i < numInternalUGens; i++) { internalUGens[i] = new LinSinScalarUGenInternal(MappingBase_InputsNoTypes); internalUGens[i]->initValue(ugen::linsin(input.getValue(i), inLow.getValue(i), inHigh.getValue(i), outLow.getValue(i), outHigh.getValue(i))); } } else { for(unsigned int i = 0; i < numInternalUGens; i++) { internalUGens[i] = new LinSinSignalUGenInternal(MappingBase_InputsNoTypes); internalUGens[i]->initValue(ugen::linsin(input.getValue(i), inLow.getValue(i), inHigh.getValue(i), outLow.getValue(i), outHigh.getValue(i))); } } }
DocumentWindow::~DocumentWindow() { for (int i = numElementsInArray (titleBarButtons); --i >= 0;) titleBarButtons[i] = 0; menuBar = 0; }
void CatmullRomInterpolator::reset() noexcept { subSamplePos = 1.0; for (int i = 0; i < numElementsInArray (lastInputSamples); ++i) lastInputSamples[i] = 0; }
void LiveAudioInputDisplayComp::audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, float** outputChannelData, int numOutputChannels, int numSamples) { for (int i = 0; i < numSamples; ++i) { for (int chan = 0; chan < numInputChannels; ++chan) { if (inputChannelData[chan] != 0) accumulator += fabsf (inputChannelData[chan][i]); } const int numSubSamples = 100; // how many input samples go onto one pixel. const float boost = 10.0f; // how much to boost the levels to make it more visible. if (subSample == 0) { samples[nextSample] = accumulator * boost / numSubSamples; nextSample = (nextSample + 1) % numElementsInArray (samples); subSample = numSubSamples; accumulator = 0; } else { --subSample; } } // We need to clear the output buffers, in case they're full of junk.. for (int i = 0; i < numOutputChannels; ++i) if (outputChannelData[i] != 0) zeromem (outputChannelData[i], sizeof (float) * (size_t) numSamples); }
File getModuleFileName (HINSTANCE moduleHandle) { WCHAR dest [MAX_PATH + 256]; dest[0] = 0; GetModuleFileName (moduleHandle, dest, (DWORD) numElementsInArray (dest)); return File (String (dest)); }
//============================================================================== bool MainContentComponent::perform(const InvocationInfo &info) { MainWindow *pMainWindow = MainWindow::getMainWindow(); if(pMainWindow == nullptr) { return true; } switch (info.commandID) { case MainWindow::fileOpen: openImageFile(); break; case MainWindow::useLookAndFeelV1: LookAndFeel::setDefaultLookAndFeel(&mLookAndFeelV1); break; case MainWindow::useLookAndFeelV2: LookAndFeel::setDefaultLookAndFeel(&mLookAndFeelV2); break; case MainWindow::useLookAndFeelV3: LookAndFeel::setDefaultLookAndFeel(&mLookAndFeelV3); break; case MainWindow::useNativeStyle: pMainWindow->setUsingNativeTitleBar(!pMainWindow->isUsingNativeTitleBar()); break; case MainWindow::showFileTreeView: { if (mFileTreeVisible) //> change to ImageComponent only { mStretchableManager.setItemLayout(0, 0, 0, 0); mStretchableManager.setItemLayout(1, 0, 0, 0); mStretchableManager.setItemLayout(2, -1.0, -1.0, -1.0); } else //> FileTreeComponent + StretchableLayoutResizerBar + ImageComponent { mStretchableManager.setItemLayout(0, -0.1, -0.8, -0.1); mStretchableManager.setItemLayout(1, 5, 5, 5); mStretchableManager.setItemLayout(2, -0.2, -0.9, -0.9); } //> change state mFileTreeVisible = !mFileTreeVisible; //> relayout Component *comps[] = { &mFileTree, &mResizerBar, &mImgViewer }; const int pxShift = 4; Rectangle<int> r(getBounds().reduced(pxShift)); mStretchableManager.layOutComponents(comps, numElementsInArray(comps), r.getX(), r.getY() + LookAndFeel::getDefaultLookAndFeel().getDefaultMenuBarHeight(), r.getWidth(), r.getHeight() - LookAndFeel::getDefaultLookAndFeel().getDefaultMenuBarHeight(), false, true); break; } default: return false; } return true; }
//============================================================================== KeyPress KeyPress::createFromDescription (const String& desc) { int modifiers = 0; for (int i = 0; i < numElementsInArray (KeyPressHelpers::modifierNames); ++i) if (desc.containsWholeWordIgnoreCase (KeyPressHelpers::modifierNames[i].name)) modifiers |= KeyPressHelpers::modifierNames[i].flag; int key = 0; for (int i = 0; i < numElementsInArray (KeyPressHelpers::translations); ++i) { if (desc.containsWholeWordIgnoreCase (String (KeyPressHelpers::translations[i].name))) { key = KeyPressHelpers::translations[i].code; break; } } if (key == 0) key = KeyPressHelpers::getNumpadKeyCode (desc); if (key == 0) { // see if it's a function key.. if (! desc.containsChar ('#')) // avoid mistaking hex-codes like "#f1" for (int i = 1; i <= 12; ++i) if (desc.containsWholeWordIgnoreCase ("f" + String (i))) key = F1Key + i - 1; if (key == 0) { // give up and use the hex code.. const int hexCode = desc.fromFirstOccurrenceOf ("#", false, false) .retainCharacters ("0123456789abcdefABCDEF") .getHexValue32(); if (hexCode > 0) key = hexCode; else key = (int) CharacterFunctions::toUpperCase (desc.getLastCharacter()); } } return KeyPress (key, ModifierKeys (modifiers), 0); }
//============================================================================== Synthesiser::Synthesiser() : sampleRate (0), lastNoteOnCounter (0), shouldStealNotes (true) { for (int i = 0; i < numElementsInArray (lastPitchWheelValues); ++i) lastPitchWheelValues[i] = 0x2000; }
void LiveAudioInputDisplayComp::paint (Graphics& g) { RectangleList<float> waveform; const float midY = getHeight() * 0.5f; int sampleNum = (nextSample + numElementsInArray (samples) - 1); for (int x = jmin (getWidth(), (int) numElementsInArray (samples)); --x >= 0;) { const float sampleSize = midY * samples [sampleNum-- % numElementsInArray (samples)]; waveform.addWithoutMerging (Rectangle<float> ((float) x, midY - sampleSize, 1.0f, sampleSize * 2.0f)); } g.fillAll (Colours::black); g.setColour (Colours::green); g.fillRectList (waveform); }
//============================================================================== Synthesiser::Synthesiser() : sampleRate (0), lastNoteOnCounter (0), minimumSubBlockSize (32), subBlockSubdivisionIsStrict (false), shouldStealNotes (true) { for (int i = 0; i < numElementsInArray (lastPitchWheelValues); ++i) lastPitchWheelValues[i] = 0x2000; }
static bool isFaceSansSerif (const String& family) { static const char* sansNames[] = { "Sans", "Verdana", "Arial", "Ubuntu" }; for (int i = 0; i < numElementsInArray (sansNames); ++i) if (family.containsIgnoreCase (sansNames[i])) return true; return false; }
Impulse::Impulse(Impulse_InputsWithTypesOnly) throw() { UGen inputs[] = { Impulse_InputsNoTypes }; const int numInputChannels = findMaxInputChannels(numElementsInArray(inputs), inputs); initInternal(numInputChannels); for(unsigned int i = 0; i < numInternalUGens; i++) { internalUGens[i] = new ImpulseUGenInternal(Impulse_InputsNoTypes); } }
Result getResultForLastError() { TCHAR messageBuffer [256] = { 0 }; FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, GetLastError(), MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), messageBuffer, (DWORD) numElementsInArray (messageBuffer) - 1, nullptr); return Result::fail (String (messageBuffer)); }
Schmidt::Schmidt(UGen const& input, UGen const& lo, UGen const& hi) throw() { UGen inputs[] = { input, lo, hi }; const int numInputChannels = findMaxInputChannels(numElementsInArray(inputs), inputs); initInternal(numInputChannels); for(unsigned int i = 0; i < numInternalUGens; i++) { internalUGens[i] = new SchmidtUGenInternal(input, lo, hi); } }
void MainContentComponent::getAllCommands (Array<CommandID>& commands) { const CommandID ids[] = { Ananke::menuFileOption, Ananke::menuExitOption, Ananke::menuSettingsOption, Ananke::menuHelpOption }; commands.addArray (ids, numElementsInArray (ids)); }
void DocumentWindow::activeWindowStatusChanged() { ResizableWindow::activeWindowStatusChanged(); for (int i = numElementsInArray (titleBarButtons); --i >= 0;) if (titleBarButtons[i] != 0) titleBarButtons[i]->setEnabled (isActiveWindow()); if (menuBar != 0) menuBar->setEnabled (isActiveWindow()); }
Pause::Pause(Pause_InputsWithTypesOnly) throw() { UGen inputs[] = { Pause_InputsNoTypes }; const int numInputChannels = findMaxInputChannels(numElementsInArray(inputs), inputs); initInternal(numInputChannels); for(unsigned int i = 0; i < numInternalUGens; i++) { internalUGens[i] = new PauseUGenInternal(Pause_InputsNoTypes); internalUGens[i]->initValue(input.getValue(i) * level.getValue(i)); } }
void MainApp::getAllCommands (Array <CommandID>& commands) { JUCEApplication::getAllCommands (commands); const CommandID ids[] = { cmdSettings, cmdAbout }; commands.addArray (ids, numElementsInArray (ids)); }
void MainWindow::getAllCommands (Array <CommandID>& commands) { const CommandID ids[] = { CommandIDs::closeWindow, CommandIDs::goToPreviousWindow, CommandIDs::goToNextWindow }; commands.addArray (ids, numElementsInArray (ids)); }
void MainWindow::getAllCommands (Array <CommandID>& commands) { for (int i = 0; i < ObjectTypes::numDocumentTypes; ++i) commands.add (CommandIDs::newDocumentBase + i); const CommandID ids[] = { CommandIDs::open, CommandIDs::showPrefs, CommandIDs::useTabbedWindows }; commands.addArray (ids, numElementsInArray (ids)); }
void registerMouseDown (const Point<int>& screenPos, const Time& time, Component* const component, const ModifierKeys& modifiers) noexcept { for (int i = numElementsInArray (mouseDowns); --i > 0;) mouseDowns[i] = mouseDowns[i - 1]; mouseDowns[0].position = screenPos; mouseDowns[0].time = time; mouseDowns[0].component = component; mouseDowns[0].buttons = modifiers.withOnlyMouseButtons(); mouseMovedSignificantlySincePressed = false; }
//============================================================================== void MainContentComponent::getAllCommands(Array<CommandID> &commands) { //> this returns the set of all commands that this target can perform const CommandID ids[] = { MainWindow::fileOpen, MainWindow::useLookAndFeelV1, MainWindow::useLookAndFeelV2, MainWindow::useLookAndFeelV3, MainWindow::useNativeStyle, MainWindow::showFileTreeView }; commands.addArray(ids, numElementsInArray(ids)); }
void CodeEditorComponent::getAllCommands (Array <CommandID>& commands) { const CommandID ids[] = { StandardApplicationCommandIDs::cut, StandardApplicationCommandIDs::copy, StandardApplicationCommandIDs::paste, StandardApplicationCommandIDs::del, StandardApplicationCommandIDs::selectAll, StandardApplicationCommandIDs::undo, StandardApplicationCommandIDs::redo }; commands.addArray (ids, numElementsInArray (ids)); }
LagUD::LagUD(UGen const& input, UGen const& lagTimeUp, UGen const& lagTimeDown) throw() { UGen inputs[] = { input, lagTimeUp, lagTimeDown }; const int numInputChannels = findMaxInputChannels(numElementsInArray(inputs), inputs); initInternal(numInputChannels); for(unsigned int i = 0; i < numInternalUGens; i++) { internalUGens[i] = new LagUDUGenInternal(input, lagTimeUp, lagTimeDown); internalUGens[i]->initValue(input.getValue(i)); } }
/* Gets an array of all the commands. */ void Engine::getAllCommands(Array<CommandID>& commands) const { const CommandID ids[] = { start, pause, stop, rewind, forward, record }; commands.addArray(ids, numElementsInArray(ids)); }
WASAPIDeviceBase (const ComSmartPtr <IMMDevice>& d, const bool exclusiveMode) : device (d), sampleRate (0), defaultSampleRate (0), numChannels (0), actualNumChannels (0), minBufferSize (0), defaultBufferSize (0), latencySamples (0), useExclusiveMode (exclusiveMode), sampleRateHasChanged (false) { clientEvent = CreateEvent (0, false, false, _T("JuceWASAPI")); ComSmartPtr <IAudioClient> tempClient (createClient()); if (tempClient == nullptr) return; REFERENCE_TIME defaultPeriod, minPeriod; if (! check (tempClient->GetDevicePeriod (&defaultPeriod, &minPeriod))) return; WAVEFORMATEX* mixFormat = nullptr; if (! check (tempClient->GetMixFormat (&mixFormat))) return; WAVEFORMATEXTENSIBLE format; copyWavFormat (format, mixFormat); CoTaskMemFree (mixFormat); actualNumChannels = numChannels = format.Format.nChannels; defaultSampleRate = format.Format.nSamplesPerSec; minBufferSize = refTimeToSamples (minPeriod, defaultSampleRate); defaultBufferSize = refTimeToSamples (defaultPeriod, defaultSampleRate); rates.addUsingDefaultSort (defaultSampleRate); static const int ratesToTest[] = { 44100, 48000, 88200, 96000, 176400, 192000 }; for (int i = 0; i < numElementsInArray (ratesToTest); ++i) { if (ratesToTest[i] == defaultSampleRate) continue; format.Format.nSamplesPerSec = (DWORD) ratesToTest[i]; if (SUCCEEDED (tempClient->IsFormatSupported (useExclusiveMode ? AUDCLNT_SHAREMODE_EXCLUSIVE : AUDCLNT_SHAREMODE_SHARED, (WAVEFORMATEX*) &format, 0))) if (! rates.contains (ratesToTest[i])) rates.addUsingDefaultSort (ratesToTest[i]); } }
Array<int> AudioCDBurner::getAvailableWriteSpeeds() const { Array<int> results; const int maxSpeed = pimpl->getIntProperty (L"MaxWriteSpeed", 1); const int speeds[] = { 1, 2, 4, 8, 12, 16, 20, 24, 32, 40, 64, 80 }; for (int i = 0; i < numElementsInArray (speeds); ++i) if (speeds[i] <= maxSpeed) results.add (speeds[i]); results.addIfNotAlreadyThere (maxSpeed); return results; }