コード例 #1
0
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));
}
コード例 #2
0
ファイル: MainWindow.cpp プロジェクト: 0x4d52/JUCE
    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());
    }
コード例 #3
0
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;
}
コード例 #4
0
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)));
			
		}
	}
}
コード例 #5
0
DocumentWindow::~DocumentWindow()
{
    for (int i = numElementsInArray (titleBarButtons); --i >= 0;)
        titleBarButtons[i] = 0;

    menuBar = 0;
}
コード例 #6
0
void CatmullRomInterpolator::reset() noexcept
{
    subSamplePos = 1.0;

    for (int i = 0; i < numElementsInArray (lastInputSamples); ++i)
        lastInputSamples[i] = 0;
}
コード例 #7
0
ファイル: AudioDemoTabComponent.cpp プロジェクト: Frongo/JUCE
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);
}
コード例 #8
0
File getModuleFileName (HINSTANCE moduleHandle)
{
    WCHAR dest [MAX_PATH + 256];
    dest[0] = 0;
    GetModuleFileName (moduleHandle, dest, (DWORD) numElementsInArray (dest));
    return File (String (dest));
}
コード例 #9
0
//==============================================================================
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;
}
コード例 #10
0
ファイル: juce_KeyPress.cpp プロジェクト: AGenews/GUI
//==============================================================================
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);
}
コード例 #11
0
ファイル: juce_Synthesiser.cpp プロジェクト: 0x4d52/ugen
//==============================================================================
Synthesiser::Synthesiser()
    : sampleRate (0),
      lastNoteOnCounter (0),
      shouldStealNotes (true)
{
    for (int i = 0; i < numElementsInArray (lastPitchWheelValues); ++i)
        lastPitchWheelValues[i] = 0x2000;
}
コード例 #12
0
ファイル: AudioDemoTabComponent.cpp プロジェクト: Krewn/LIOS
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);
}
コード例 #13
0
ファイル: juce_Synthesiser.cpp プロジェクト: Hanley1/JUCE
//==============================================================================
Synthesiser::Synthesiser()
    : sampleRate (0),
      lastNoteOnCounter (0),
      minimumSubBlockSize (32),
      subBlockSubdivisionIsStrict (false),
      shouldStealNotes (true)
{
    for (int i = 0; i < numElementsInArray (lastPitchWheelValues); ++i)
        lastPitchWheelValues[i] = 0x2000;
}
コード例 #14
0
    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;
    }
コード例 #15
0
ファイル: ugen_Impulse.cpp プロジェクト: kazu2012/ofxUGen
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);
	}
}
コード例 #16
0
    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));
    }
コード例 #17
0
ファイル: ugen_Schmidt.cpp プロジェクト: kazu2012/ofxUGen
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);
	}
}
コード例 #18
0
ファイル: MainComponent.cpp プロジェクト: stekyne/Ananke
void MainContentComponent::getAllCommands (Array<CommandID>& commands)
{
    const CommandID ids[] = {
        Ananke::menuFileOption,
        Ananke::menuExitOption,
        Ananke::menuSettingsOption,
        Ananke::menuHelpOption
    };

    commands.addArray (ids, numElementsInArray (ids));
}
コード例 #19
0
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());
}
コード例 #20
0
ファイル: ugen_Pause.cpp プロジェクト: kazu2012/ofxUGen
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));
	}
}
コード例 #21
0
ファイル: MainApp.cpp プロジェクト: COx2/DSPFilters
void MainApp::getAllCommands (Array <CommandID>& commands)
{
  JUCEApplication::getAllCommands (commands);

  const CommandID ids[] = {
    cmdSettings,
    cmdAbout
  };

  commands.addArray (ids, numElementsInArray (ids));
}
コード例 #22
0
void MainWindow::getAllCommands (Array <CommandID>& commands)
{
    const CommandID ids[] =
    {
        CommandIDs::closeWindow,
        CommandIDs::goToPreviousWindow,
        CommandIDs::goToNextWindow
    };

    commands.addArray (ids, numElementsInArray (ids));
}
コード例 #23
0
ファイル: jucer_MainWindow.cpp プロジェクト: Frongo/JUCE
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));
}
コード例 #24
0
ファイル: juce_MouseInputSource.cpp プロジェクト: zabrus/JUCE
    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;
    }
コード例 #25
0
//==============================================================================
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));
}
コード例 #26
0
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));
}
コード例 #27
0
ファイル: ugen_Lag.cpp プロジェクト: kazu2012/ofxUGen
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));
	}
}
コード例 #28
0
ファイル: Engine.cpp プロジェクト: Bk8/mordaw
    /*
     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));
    }
コード例 #29
0
    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]);
        }
    }
コード例 #30
0
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;
}