| @@ -11,14 +11,15 @@ | |||
| #include "PluginProcessor.h" | |||
| #include "PluginEditor.h" | |||
| AudioProcessor* JUCE_CALLTYPE createPluginFilter(); | |||
| //============================================================================== | |||
| /** A demo synth sound that's just a basic sine wave.. */ | |||
| class SineWaveSound : public SynthesiserSound | |||
| { | |||
| public: | |||
| SineWaveSound() | |||
| { | |||
| } | |||
| SineWaveSound() {} | |||
| bool appliesToNote (const int /*midiNoteNumber*/) { return true; } | |||
| bool appliesToChannel (const int /*midiChannel*/) { return true; } | |||
| @@ -273,7 +274,7 @@ void JuceDemoPluginAudioProcessor::processBlock (AudioSampleBuffer& buffer, Midi | |||
| // ask the host for the current time so we can display it... | |||
| AudioPlayHead::CurrentPositionInfo newTime; | |||
| if (getPlayHead() != 0 && getPlayHead()->getCurrentPosition (newTime)) | |||
| if (getPlayHead() != nullptr && getPlayHead()->getCurrentPosition (newTime)) | |||
| { | |||
| // Successfully got the current time from the host.. | |||
| lastPosInfo = newTime; | |||
| @@ -318,7 +319,7 @@ void JuceDemoPluginAudioProcessor::setStateInformation (const void* data, int si | |||
| // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. | |||
| ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); | |||
| if (xmlState != 0) | |||
| if (xmlState != nullptr) | |||
| { | |||
| // make sure that it's actually our type of XML object.. | |||
| if (xmlState->hasTagName ("MYPLUGINSETTINGS")) | |||
| @@ -355,20 +356,20 @@ bool JuceDemoPluginAudioProcessor::isOutputChannelStereoPair (int /*index*/) con | |||
| bool JuceDemoPluginAudioProcessor::acceptsMidi() const | |||
| { | |||
| #if JucePlugin_WantsMidiInput | |||
| #if JucePlugin_WantsMidiInput | |||
| return true; | |||
| #else | |||
| #else | |||
| return false; | |||
| #endif | |||
| #endif | |||
| } | |||
| bool JuceDemoPluginAudioProcessor::producesMidi() const | |||
| { | |||
| #if JucePlugin_ProducesMidiOutput | |||
| #if JucePlugin_ProducesMidiOutput | |||
| return true; | |||
| #else | |||
| #else | |||
| return false; | |||
| #endif | |||
| #endif | |||
| } | |||
| //============================================================================== | |||
| @@ -48,10 +48,10 @@ public: | |||
| pendingDataTime = 0; | |||
| } | |||
| void pushMidiData (const void* data, int numBytes, double time, | |||
| void pushMidiData (const void* inputData, int numBytes, double time, | |||
| MidiInput* input, MidiInputCallback& callback) | |||
| { | |||
| const uint8* d = static_cast <const uint8*> (data); | |||
| const uint8* d = static_cast <const uint8*> (inputData); | |||
| while (numBytes > 0) | |||
| { | |||
| @@ -46,6 +46,12 @@ namespace FlacNamespace | |||
| #define SIZE_MAX 0xffffffff | |||
| #endif | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic push | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wshadow" | |||
| #endif | |||
| #define __STDC_LIMIT_MACROS 1 | |||
| #include "flac/all.h" | |||
| #include "flac/libFLAC/bitmath.c" | |||
| @@ -67,6 +73,10 @@ namespace FlacNamespace | |||
| #else | |||
| #include <FLAC/all.h> | |||
| #endif | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic pop | |||
| #endif | |||
| } | |||
| #undef max | |||
| @@ -37,6 +37,12 @@ namespace OggVorbisNamespace | |||
| #pragma warning (disable: 4267 4127 4244 4996 4100 4701 4702 4013 4133 4206 4305 4189 4706 4995 4365) | |||
| #endif | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic push | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wshadow" | |||
| #endif | |||
| #include "oggvorbis/vorbisenc.h" | |||
| #include "oggvorbis/codec.h" | |||
| #include "oggvorbis/vorbisfile.h" | |||
| @@ -68,6 +74,10 @@ namespace OggVorbisNamespace | |||
| #if JUCE_MSVC | |||
| #pragma warning (pop) | |||
| #endif | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic pop | |||
| #endif | |||
| #else | |||
| #include <vorbis/vorbisenc.h> | |||
| #include <vorbis/codec.h> | |||
| @@ -170,11 +170,11 @@ class AudioFormatWriter::ThreadedWriter::Buffer : public AbstractFifo, | |||
| private TimeSliceClient | |||
| { | |||
| public: | |||
| Buffer (TimeSliceThread& timeSliceThread_, AudioFormatWriter* writer_, int numChannels, int bufferSize_) | |||
| : AbstractFifo (bufferSize_), | |||
| buffer (numChannels, bufferSize_), | |||
| timeSliceThread (timeSliceThread_), | |||
| writer (writer_), | |||
| Buffer (TimeSliceThread& tst, AudioFormatWriter* w, int channels, int bufferSize) | |||
| : AbstractFifo (bufferSize), | |||
| buffer (channels, bufferSize), | |||
| timeSliceThread (tst), | |||
| writer (w), | |||
| receiver (nullptr), | |||
| samplesWritten (0), | |||
| isRunning (true) | |||
| @@ -687,8 +687,7 @@ public: | |||
| const int numIn = juceFilter->getNumInputChannels(); | |||
| const int numOut = juceFilter->getNumOutputChannels(); | |||
| unsigned int i; | |||
| for (i = 0; i < outBuffer.mNumberBuffers; ++i) | |||
| for (unsigned int i = 0; i < outBuffer.mNumberBuffers; ++i) | |||
| { | |||
| AudioBuffer& buf = outBuffer.mBuffers[i]; | |||
| @@ -710,7 +709,7 @@ public: | |||
| int numInChans = 0; | |||
| for (i = 0; i < inBuffer.mNumberBuffers; ++i) | |||
| for (unsigned int i = 0; i < inBuffer.mNumberBuffers; ++i) | |||
| { | |||
| const AudioBuffer& buf = inBuffer.mBuffers[i]; | |||
| @@ -767,8 +766,8 @@ public: | |||
| if (juceFilter->isSuspended()) | |||
| { | |||
| for (int i = 0; i < numOut; ++i) | |||
| zeromem (channels [i], sizeof (float) * numSamples); | |||
| for (int j = 0; j < numOut; ++j) | |||
| zeromem (channels [j], sizeof (float) * numSamples); | |||
| } | |||
| else | |||
| { | |||
| @@ -805,7 +804,7 @@ public: | |||
| { | |||
| nextSpareBufferChan = 0; | |||
| for (i = 0; i < outBuffer.mNumberBuffers; ++i) | |||
| for (unsigned int i = 0; i < outBuffer.mNumberBuffers; ++i) | |||
| { | |||
| AudioBuffer& buf = outBuffer.mBuffers[i]; | |||
| @@ -872,17 +871,17 @@ protected: | |||
| presetsArray.ensureSize (sizeof (AUPreset) * numPrograms, true); | |||
| AUPreset* const presets = (AUPreset*) presetsArray.getData(); | |||
| CFMutableArrayRef presetsArray = CFArrayCreateMutable (0, numPrograms, 0); | |||
| CFMutableArrayRef presetsArrayRef = CFArrayCreateMutable (0, numPrograms, 0); | |||
| for (int i = 0; i < numPrograms; ++i) | |||
| { | |||
| presets[i].presetNumber = i; | |||
| presets[i].presetName = juceFilter->getProgramName(i).toCFString(); | |||
| CFArrayAppendValue (presetsArray, presets + i); | |||
| CFArrayAppendValue (presetsArrayRef, presets + i); | |||
| } | |||
| *outData = (CFArrayRef) presetsArray; | |||
| *outData = (CFArrayRef) presetsArrayRef; | |||
| } | |||
| return noErr; | |||
| @@ -1273,7 +1272,7 @@ private: | |||
| setBroughtToFrontOnMouseClick (true); | |||
| setSize (editor.getWidth(), editor.getHeight()); | |||
| SizeControl (parentHIView, editor.getWidth(), editor.getHeight()); | |||
| SizeControl (parentHIView, (SInt16) editor.getWidth(), (SInt16) editor.getHeight()); | |||
| WindowRef windowRef = HIViewGetWindow (parentHIView); | |||
| hostWindow = [[NSWindow alloc] initWithWindowRef: windowRef]; | |||
| @@ -1355,7 +1354,7 @@ private: | |||
| const int w = jmax (32, editor.getWidth()); | |||
| const int h = jmax (32, editor.getHeight()); | |||
| SizeControl (parentView, w, h); | |||
| SizeControl (parentView, (SInt16) w, (SInt16) h); | |||
| if (getWidth() != w || getHeight() != h) | |||
| setSize (w, h); | |||
| @@ -66,6 +66,12 @@ | |||
| #define __cdecl | |||
| #endif | |||
| #ifdef __clang__ | |||
| #pragma clang diagnostic push | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wshadow" | |||
| #endif | |||
| // VSTSDK V2.4 includes.. | |||
| #include <public.sdk/source/vst2.x/audioeffectx.h> | |||
| #include <public.sdk/source/vst2.x/aeffeditor.h> | |||
| @@ -76,6 +82,10 @@ | |||
| #error "It looks like you're trying to include an out-of-date VSTSDK version - make sure you have at least version 2.4" | |||
| #endif | |||
| #ifdef __clang__ | |||
| #pragma clang diagnostic pop | |||
| #endif | |||
| //============================================================================== | |||
| #ifdef _MSC_VER | |||
| #pragma pack (push, 8) | |||
| @@ -1471,12 +1481,14 @@ namespace | |||
| // Mac startup code.. | |||
| #if JUCE_MAC | |||
| extern "C" __attribute__ ((visibility("default"))) AEffect* VSTPluginMain (audioMasterCallback audioMaster); | |||
| extern "C" __attribute__ ((visibility("default"))) AEffect* VSTPluginMain (audioMasterCallback audioMaster) | |||
| { | |||
| initialiseMac(); | |||
| return pluginEntryPoint (audioMaster); | |||
| } | |||
| extern "C" __attribute__ ((visibility("default"))) AEffect* main_macho (audioMasterCallback audioMaster); | |||
| extern "C" __attribute__ ((visibility("default"))) AEffect* main_macho (audioMasterCallback audioMaster) | |||
| { | |||
| initialiseMac(); | |||
| @@ -70,6 +70,7 @@ static pascal OSStatus viewBoundsChangedEvent (EventHandlerCallRef, EventRef, vo | |||
| #endif | |||
| //============================================================================== | |||
| void initialiseMac(); | |||
| void initialiseMac() | |||
| { | |||
| #if ! JUCE_64BIT | |||
| @@ -77,6 +78,7 @@ void initialiseMac() | |||
| #endif | |||
| } | |||
| void* attachComponentToWindowRef (Component* comp, void* windowRef); | |||
| void* attachComponentToWindowRef (Component* comp, void* windowRef) | |||
| { | |||
| JUCE_AUTORELEASEPOOL | |||
| @@ -166,6 +168,7 @@ void* attachComponentToWindowRef (Component* comp, void* windowRef) | |||
| #endif | |||
| } | |||
| void detachComponentFromWindowRef (Component* comp, void* nsWindow); | |||
| void detachComponentFromWindowRef (Component* comp, void* nsWindow) | |||
| { | |||
| #if JUCE_64BIT | |||
| @@ -206,6 +209,7 @@ void detachComponentFromWindowRef (Component* comp, void* nsWindow) | |||
| #endif | |||
| } | |||
| void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight, const PluginHostType& host); | |||
| void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight, const PluginHostType& host) | |||
| { | |||
| JUCE_AUTORELEASEPOOL | |||
| @@ -233,6 +237,7 @@ void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth | |||
| #endif | |||
| } | |||
| void checkWindowVisibility (void* nsWindow, Component* comp); | |||
| void checkWindowVisibility (void* nsWindow, Component* comp) | |||
| { | |||
| #if ! JUCE_64BIT | |||
| @@ -240,6 +245,7 @@ void checkWindowVisibility (void* nsWindow, Component* comp) | |||
| #endif | |||
| } | |||
| bool forwardCurrentKeyEventToHost (Component* comp); | |||
| bool forwardCurrentKeyEventToHost (Component* comp) | |||
| { | |||
| #if JUCE_64BIT | |||
| @@ -313,7 +313,7 @@ public: | |||
| result.set (1, 0); | |||
| } | |||
| void write (const MinMaxValue* const source, const int startIndex, const int numValues) | |||
| void write (const MinMaxValue* const values, const int startIndex, const int numValues) | |||
| { | |||
| resetPeak(); | |||
| @@ -323,7 +323,7 @@ public: | |||
| MinMaxValue* const dest = getData (startIndex); | |||
| for (int i = 0; i < numValues; ++i) | |||
| dest[i] = source[i]; | |||
| dest[i] = values[i]; | |||
| } | |||
| void resetPeak() noexcept | |||
| @@ -377,11 +377,11 @@ public: | |||
| void drawChannel (Graphics& g, const Rectangle<int>& area, | |||
| const double startTime, const double endTime, | |||
| const int channelNum, const float verticalZoomFactor, | |||
| const double sampleRate, const int numChannels, const int samplesPerThumbSample, | |||
| LevelDataSource* levelData, const OwnedArray<ThumbData>& channels) | |||
| const double rate, const int numChans, const int sampsPerThumbSample, | |||
| LevelDataSource* levelData, const OwnedArray<ThumbData>& chans) | |||
| { | |||
| refillCache (area.getWidth(), startTime, endTime, sampleRate, | |||
| numChannels, samplesPerThumbSample, levelData, channels); | |||
| refillCache (area.getWidth(), startTime, endTime, rate, | |||
| numChans, sampsPerThumbSample, levelData, chans); | |||
| if (isPositiveAndBelow (channelNum, numChannelsCached)) | |||
| { | |||
| @@ -417,19 +417,19 @@ private: | |||
| bool cacheNeedsRefilling; | |||
| void refillCache (const int numSamples, double startTime, const double endTime, | |||
| const double sampleRate, const int numChannels, const int samplesPerThumbSample, | |||
| LevelDataSource* levelData, const OwnedArray<ThumbData>& channels) | |||
| const double rate, const int numChans, const int sampsPerThumbSample, | |||
| LevelDataSource* levelData, const OwnedArray<ThumbData>& chans) | |||
| { | |||
| const double timePerPixel = (endTime - startTime) / numSamples; | |||
| if (numSamples <= 0 || timePerPixel <= 0.0 || sampleRate <= 0) | |||
| if (numSamples <= 0 || timePerPixel <= 0.0 || rate <= 0) | |||
| { | |||
| invalidate(); | |||
| return; | |||
| } | |||
| if (numSamples == numSamplesCached | |||
| && numChannelsCached == numChannels | |||
| && numChannelsCached == numChans | |||
| && startTime == cachedStart | |||
| && timePerPixel == cachedTimePerPixel | |||
| && ! cacheNeedsRefilling) | |||
| @@ -438,22 +438,22 @@ private: | |||
| } | |||
| numSamplesCached = numSamples; | |||
| numChannelsCached = numChannels; | |||
| numChannelsCached = numChans; | |||
| cachedStart = startTime; | |||
| cachedTimePerPixel = timePerPixel; | |||
| cacheNeedsRefilling = false; | |||
| ensureSize (numSamples); | |||
| if (timePerPixel * sampleRate <= samplesPerThumbSample && levelData != nullptr) | |||
| if (timePerPixel * rate <= sampsPerThumbSample && levelData != nullptr) | |||
| { | |||
| int sample = roundToInt (startTime * sampleRate); | |||
| int sample = roundToInt (startTime * rate); | |||
| Array<float> levels; | |||
| int i; | |||
| for (i = 0; i < numSamples; ++i) | |||
| { | |||
| const int nextSample = roundToInt ((startTime + timePerPixel) * sampleRate); | |||
| const int nextSample = roundToInt ((startTime + timePerPixel) * rate); | |||
| if (sample >= 0) | |||
| { | |||
| @@ -462,9 +462,9 @@ private: | |||
| levelData->getLevels (sample, jmax (1, nextSample - sample), levels); | |||
| const int numChans = jmin (levels.size() / 2, numChannelsCached); | |||
| const int totalChans = jmin (levels.size() / 2, numChannelsCached); | |||
| for (int chan = 0; chan < numChans; ++chan) | |||
| for (int chan = 0; chan < totalChans; ++chan) | |||
| getData (chan, i)->setFloat (levels.getUnchecked (chan * 2), | |||
| levels.getUnchecked (chan * 2 + 1)); | |||
| } | |||
| @@ -477,14 +477,14 @@ private: | |||
| } | |||
| else | |||
| { | |||
| jassert (channels.size() == numChannelsCached); | |||
| jassert (chans.size() == numChannelsCached); | |||
| for (int channelNum = 0; channelNum < numChannelsCached; ++channelNum) | |||
| { | |||
| ThumbData* channelData = channels.getUnchecked (channelNum); | |||
| ThumbData* channelData = chans.getUnchecked (channelNum); | |||
| MinMaxValue* cacheData = getData (channelNum, 0); | |||
| const double timeToThumbSampleFactor = sampleRate / (double) samplesPerThumbSample; | |||
| const double timeToThumbSampleFactor = rate / (double) sampsPerThumbSample; | |||
| startTime = cachedStart; | |||
| int sample = roundToInt (startTime * timeToThumbSampleFactor); | |||
| @@ -350,8 +350,8 @@ struct Expression::Helpers | |||
| class EvaluationVisitor : public Scope::Visitor | |||
| { | |||
| public: | |||
| EvaluationVisitor (const TermPtr& term, const int recursion) | |||
| : input (term), output (term), recursionCount (recursion) {} | |||
| EvaluationVisitor (const TermPtr& t, const int recursion) | |||
| : input (t), output (t), recursionCount (recursion) {} | |||
| void visit (const Scope& scope) { output = input->resolve (scope, recursionCount); } | |||
| @@ -366,8 +366,8 @@ struct Expression::Helpers | |||
| class SymbolVisitingVisitor : public Scope::Visitor | |||
| { | |||
| public: | |||
| SymbolVisitingVisitor (const TermPtr& term, SymbolVisitor& v, const int recursion) | |||
| : input (term), visitor (v), recursionCount (recursion) {} | |||
| SymbolVisitingVisitor (const TermPtr& t, SymbolVisitor& v, const int recursion) | |||
| : input (t), visitor (v), recursionCount (recursion) {} | |||
| void visit (const Scope& scope) { input->visitAllSymbols (visitor, scope, recursionCount); } | |||
| @@ -382,8 +382,8 @@ struct Expression::Helpers | |||
| class SymbolRenamingVisitor : public Scope::Visitor | |||
| { | |||
| public: | |||
| SymbolRenamingVisitor (const TermPtr& term, const Expression::Symbol& symbol_, const String& newName_, const int recursionCount_) | |||
| : input (term), symbol (symbol_), newName (newName_), recursionCount (recursionCount_) {} | |||
| SymbolRenamingVisitor (const TermPtr& t, const Expression::Symbol& symbol_, const String& newName_, const int recursionCount_) | |||
| : input (t), symbol (symbol_), newName (newName_), recursionCount (recursionCount_) {} | |||
| void visit (const Scope& scope) { input->renameSymbol (symbol, newName, scope, recursionCount); } | |||
| @@ -405,9 +405,9 @@ struct Expression::Helpers | |||
| class Negate : public Term | |||
| { | |||
| public: | |||
| explicit Negate (const TermPtr& term) : input (term) | |||
| explicit Negate (const TermPtr& t) : input (t) | |||
| { | |||
| jassert (term != nullptr); | |||
| jassert (t != nullptr); | |||
| } | |||
| Type getType() const noexcept { return operatorType; } | |||
| @@ -424,10 +424,10 @@ struct Expression::Helpers | |||
| String getName() const { return "-"; } | |||
| TermPtr negated() { return input; } | |||
| TermPtr createTermToEvaluateInput (const Scope& scope, const Term* term, double overallTarget, Term* topLevelTerm) const | |||
| TermPtr createTermToEvaluateInput (const Scope& scope, const Term* t, double overallTarget, Term* topLevelTerm) const | |||
| { | |||
| (void) term; | |||
| jassert (term == input); | |||
| (void) t; | |||
| jassert (t == input); | |||
| const Term* const dest = findDestinationFor (topLevelTerm, this); | |||
| @@ -813,15 +813,15 @@ struct Expression::Helpers | |||
| char opType; | |||
| if (readOperator ("+-", &opType)) | |||
| { | |||
| TermPtr term (readUnaryExpression()); | |||
| TermPtr e (readUnaryExpression()); | |||
| if (term == nullptr) | |||
| if (e == nullptr) | |||
| throw ParseError ("Expected expression after \"" + String::charToString ((juce_wchar) (uint8) opType) + "\""); | |||
| if (opType == '-') | |||
| term = term->negated(); | |||
| e = e->negated(); | |||
| return term; | |||
| return e; | |||
| } | |||
| return readPrimaryExpression(); | |||
| @@ -351,11 +351,11 @@ public: | |||
| if (fnmatch (wildcardUTF8, filenameFound.toUTF8(), FNM_CASEFOLD) != 0) | |||
| continue; | |||
| const String path (parentDir + filenameFound); | |||
| updateStatInfoForFile (path, isDir, fileSize, modTime, creationTime, isReadOnly); | |||
| const String fullPath (parentDir + filenameFound); | |||
| updateStatInfoForFile (fullPath, isDir, fileSize, modTime, creationTime, isReadOnly); | |||
| if (isHidden != nullptr) | |||
| *isHidden = FileHelpers::isHiddenFile (path); | |||
| *isHidden = FileHelpers::isHiddenFile (fullPath); | |||
| return true; | |||
| } | |||
| @@ -368,8 +368,8 @@ private: | |||
| JUCE_DECLARE_NON_COPYABLE (Pimpl); | |||
| }; | |||
| DirectoryIterator::NativeIterator::NativeIterator (const File& directory, const String& wildCard) | |||
| : pimpl (new DirectoryIterator::NativeIterator::Pimpl (directory, wildCard)) | |||
| DirectoryIterator::NativeIterator::NativeIterator (const File& directory, const String& wildcard) | |||
| : pimpl (new DirectoryIterator::NativeIterator::Pimpl (directory, wildcard)) | |||
| { | |||
| } | |||
| @@ -701,7 +701,7 @@ String juce_getOutputFromCommand (const String& command) | |||
| class InterProcessLock::Pimpl | |||
| { | |||
| public: | |||
| Pimpl (const String& name, const int timeOutMillisecs) | |||
| Pimpl (const String& lockName, const int timeOutMillisecs) | |||
| : handle (0), refCount (1) | |||
| { | |||
| #if JUCE_IOS | |||
| @@ -718,7 +718,7 @@ public: | |||
| tempFolder = "/tmp"; | |||
| #endif | |||
| const File temp (tempFolder.getChildFile (name)); | |||
| const File temp (tempFolder.getChildFile (lockName)); | |||
| temp.create(); | |||
| handle = open (temp.getFullPathName().toUTF8(), O_RDWR); | |||
| @@ -180,9 +180,8 @@ String translate (const String& text, const String& resultIfNotFound) | |||
| { | |||
| const SpinLock::ScopedLockType sl (currentMappingsLock); | |||
| const LocalisedStrings* const currentMappings = LocalisedStrings::getCurrentMappings(); | |||
| if (currentMappings != nullptr) | |||
| return currentMappings->translate (text, resultIfNotFound); | |||
| if (const LocalisedStrings* const mappings = LocalisedStrings::getCurrentMappings()) | |||
| return mappings->translate (text, resultIfNotFound); | |||
| return resultIfNotFound; | |||
| } | |||
| @@ -90,7 +90,7 @@ public: | |||
| otherwise there are no guarantees what will happen! Best just to use it | |||
| as a local stack object, rather than creating one with the new() operator. | |||
| */ | |||
| explicit ScopedLockType (InterProcessLock& lock) : ipLock (lock) { lockWasSuccessful = lock.enter(); } | |||
| explicit ScopedLockType (InterProcessLock& l) : ipLock (l) { lockWasSuccessful = l.enter(); } | |||
| /** Destructor. | |||
| @@ -99,10 +99,10 @@ public: | |||
| Make sure this object is created and deleted by the same thread, | |||
| otherwise there are no guarantees what will happen! | |||
| */ | |||
| inline ~ScopedLockType() { ipLock.exit(); } | |||
| inline ~ScopedLockType() { ipLock.exit(); } | |||
| /** Returns true if the InterProcessLock was successfully locked. */ | |||
| bool isLocked() const noexcept { return lockWasSuccessful; } | |||
| bool isLocked() const noexcept { return lockWasSuccessful; } | |||
| private: | |||
| //============================================================================== | |||
| @@ -46,26 +46,26 @@ public: | |||
| zlibNamespace::deflateEnd (&stream); | |||
| } | |||
| bool write (const uint8* data, int dataSize, OutputStream& destStream) | |||
| bool write (const uint8* data, int dataSize, OutputStream& out) | |||
| { | |||
| // When you call flush() on a gzip stream, the stream is closed, and you can | |||
| // no longer continue to write data to it! | |||
| jassert (! finished); | |||
| while (dataSize > 0) | |||
| if (! doNextBlock (data, dataSize, destStream, Z_NO_FLUSH)) | |||
| if (! doNextBlock (data, dataSize, out, Z_NO_FLUSH)) | |||
| return false; | |||
| return true; | |||
| } | |||
| void finish (OutputStream& destStream) | |||
| void finish (OutputStream& out) | |||
| { | |||
| const uint8* data = nullptr; | |||
| int dataSize = 0; | |||
| while (! finished) | |||
| doNextBlock (data, dataSize, destStream, Z_FINISH); | |||
| doNextBlock (data, dataSize, out, Z_FINISH); | |||
| } | |||
| private: | |||
| @@ -76,7 +76,7 @@ private: | |||
| bool isFirstDeflate, streamIsValid, finished; | |||
| zlibNamespace::Bytef buffer[32768]; | |||
| bool doNextBlock (const uint8*& data, int& dataSize, OutputStream& destStream, const int flushMode) | |||
| bool doNextBlock (const uint8*& data, int& dataSize, OutputStream& out, const int flushMode) | |||
| { | |||
| using namespace zlibNamespace; | |||
| if (streamIsValid) | |||
| @@ -100,7 +100,7 @@ private: | |||
| data += dataSize - stream.avail_in; | |||
| dataSize = (int) stream.avail_in; | |||
| const int bytesDone = ((int) sizeof (buffer)) - (int) stream.avail_out; | |||
| return bytesDone <= 0 || destStream.write (buffer, bytesDone); | |||
| return bytesDone <= 0 || out.write (buffer, bytesDone); | |||
| } | |||
| default: | |||
| @@ -115,14 +115,14 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| GZIPCompressorOutputStream::GZIPCompressorOutputStream (OutputStream* const destStream_, | |||
| GZIPCompressorOutputStream::GZIPCompressorOutputStream (OutputStream* const out, | |||
| const int compressionLevel, | |||
| const bool deleteDestStream, | |||
| const int windowBits) | |||
| : destStream (destStream_, deleteDestStream), | |||
| : destStream (out, deleteDestStream), | |||
| helper (new GZIPCompressorHelper (compressionLevel, windowBits)) | |||
| { | |||
| jassert (destStream_ != nullptr); | |||
| jassert (out != nullptr); | |||
| } | |||
| GZIPCompressorOutputStream::~GZIPCompressorOutputStream() | |||
| @@ -31,6 +31,12 @@ | |||
| namespace zlibNamespace | |||
| { | |||
| #if JUCE_INCLUDE_ZLIB_CODE | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic push | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wshadow" | |||
| #endif | |||
| #undef OS_CODE | |||
| #undef fdopen | |||
| #define ZLIB_INTERNAL | |||
| @@ -55,6 +61,10 @@ namespace zlibNamespace | |||
| #include "zlib/trees.c" | |||
| #include "zlib/zutil.c" | |||
| #undef Byte | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic pop | |||
| #endif | |||
| #else | |||
| #include JUCE_ZLIB_INCLUDE_PATH | |||
| #endif | |||
| @@ -70,7 +80,7 @@ namespace zlibNamespace | |||
| class GZIPDecompressorInputStream::GZIPDecompressHelper | |||
| { | |||
| public: | |||
| GZIPDecompressHelper (const bool noWrap) | |||
| GZIPDecompressHelper (const bool dontWrap) | |||
| : finished (true), | |||
| needsDictionary (false), | |||
| error (true), | |||
| @@ -80,7 +90,7 @@ public: | |||
| { | |||
| using namespace zlibNamespace; | |||
| zerostruct (stream); | |||
| streamIsValid = (inflateInit2 (&stream, noWrap ? -MAX_WBITS : MAX_WBITS) == Z_OK); | |||
| streamIsValid = (inflateInit2 (&stream, dontWrap ? -MAX_WBITS : MAX_WBITS) == Z_OK); | |||
| finished = error = ! streamIsValid; | |||
| } | |||
| @@ -31,7 +31,7 @@ Display* display = nullptr; | |||
| Window juce_messageWindowHandle = None; | |||
| XContext windowHandleXContext; // This is referenced from Windowing.cpp | |||
| extern void juce_windowMessageReceive (XEvent*); // Defined in Windowing.cpp | |||
| extern void juce_windowMessageReceive (XEvent* event); // Defined in Windowing.cpp | |||
| extern void juce_handleSelectionRequest (XSelectionRequestEvent&); // Defined in Clipboard.cpp | |||
| //============================================================================== | |||
| @@ -941,15 +941,15 @@ AffineTransform Path::getTransformToScaleToFit (const float x, const float y, | |||
| const bool preserveProportions, | |||
| const Justification& justification) const | |||
| { | |||
| Rectangle<float> bounds (getBounds()); | |||
| Rectangle<float> boundsRect (getBounds()); | |||
| if (preserveProportions) | |||
| { | |||
| if (w <= 0 || h <= 0 || bounds.isEmpty()) | |||
| if (w <= 0 || h <= 0 || boundsRect.isEmpty()) | |||
| return AffineTransform::identity; | |||
| float newW, newH; | |||
| const float srcRatio = bounds.getHeight() / bounds.getWidth(); | |||
| const float srcRatio = boundsRect.getHeight() / boundsRect.getWidth(); | |||
| if (srcRatio > h / w) | |||
| { | |||
| @@ -973,17 +973,17 @@ AffineTransform Path::getTransformToScaleToFit (const float x, const float y, | |||
| else if (justification.testFlags (Justification::bottom)) newYCentre += h - newH * 0.5f; | |||
| else newYCentre += h * 0.5f; | |||
| return AffineTransform::translation (bounds.getWidth() * -0.5f - bounds.getX(), | |||
| bounds.getHeight() * -0.5f - bounds.getY()) | |||
| .scaled (newW / bounds.getWidth(), | |||
| newH / bounds.getHeight()) | |||
| return AffineTransform::translation (boundsRect.getWidth() * -0.5f - boundsRect.getX(), | |||
| boundsRect.getHeight() * -0.5f - boundsRect.getY()) | |||
| .scaled (newW / boundsRect.getWidth(), | |||
| newH / boundsRect.getHeight()) | |||
| .translated (newXCentre, newYCentre); | |||
| } | |||
| else | |||
| { | |||
| return AffineTransform::translation (-bounds.getX(), -bounds.getY()) | |||
| .scaled (w / bounds.getWidth(), | |||
| h / bounds.getHeight()) | |||
| return AffineTransform::translation (-boundsRect.getX(), -boundsRect.getY()) | |||
| .scaled (w / boundsRect.getWidth(), | |||
| h / boundsRect.getHeight()) | |||
| .translated (x, y); | |||
| } | |||
| } | |||
| @@ -34,6 +34,13 @@ namespace jpeglibNamespace | |||
| #if JUCE_MINGW | |||
| typedef unsigned char boolean; | |||
| #endif | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic push | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #endif | |||
| #define JPEG_INTERNALS | |||
| #undef FAR | |||
| #include "jpglib/jpeglib.h" | |||
| @@ -106,6 +113,10 @@ namespace jpeglibNamespace | |||
| #include "jpglib/jquant2.c" | |||
| #include "jpglib/jutils.c" | |||
| #include "jpglib/transupp.c" | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic pop | |||
| #endif | |||
| #else | |||
| #define JPEG_INTERNALS | |||
| #undef FAR | |||
| @@ -338,36 +338,36 @@ NamedValueSet* Image::getProperties() const | |||
| } | |||
| //============================================================================== | |||
| Image::BitmapData::BitmapData (Image& image, const int x, const int y, const int w, const int h, BitmapData::ReadWriteMode mode) | |||
| Image::BitmapData::BitmapData (Image& im, const int x, const int y, const int w, const int h, BitmapData::ReadWriteMode mode) | |||
| : width (w), height (h) | |||
| { | |||
| // The BitmapData class must be given a valid image, and a valid rectangle within it! | |||
| jassert (image.image != nullptr); | |||
| jassert (x >= 0 && y >= 0 && w > 0 && h > 0 && x + w <= image.getWidth() && y + h <= image.getHeight()); | |||
| jassert (im.image != nullptr); | |||
| jassert (x >= 0 && y >= 0 && w > 0 && h > 0 && x + w <= im.getWidth() && y + h <= im.getHeight()); | |||
| image.image->initialiseBitmapData (*this, x, y, mode); | |||
| im.image->initialiseBitmapData (*this, x, y, mode); | |||
| jassert (data != nullptr && pixelStride > 0 && lineStride != 0); | |||
| } | |||
| Image::BitmapData::BitmapData (const Image& image, const int x, const int y, const int w, const int h) | |||
| Image::BitmapData::BitmapData (const Image& im, const int x, const int y, const int w, const int h) | |||
| : width (w), height (h) | |||
| { | |||
| // The BitmapData class must be given a valid image, and a valid rectangle within it! | |||
| jassert (image.image != nullptr); | |||
| jassert (x >= 0 && y >= 0 && w > 0 && h > 0 && x + w <= image.getWidth() && y + h <= image.getHeight()); | |||
| jassert (im.image != nullptr); | |||
| jassert (x >= 0 && y >= 0 && w > 0 && h > 0 && x + w <= im.getWidth() && y + h <= im.getHeight()); | |||
| image.image->initialiseBitmapData (*this, x, y, readOnly); | |||
| im.image->initialiseBitmapData (*this, x, y, readOnly); | |||
| jassert (data != nullptr && pixelStride > 0 && lineStride != 0); | |||
| } | |||
| Image::BitmapData::BitmapData (const Image& image, BitmapData::ReadWriteMode mode) | |||
| : width (image.getWidth()), | |||
| height (image.getHeight()) | |||
| Image::BitmapData::BitmapData (const Image& im, BitmapData::ReadWriteMode mode) | |||
| : width (im.getWidth()), | |||
| height (im.getHeight()) | |||
| { | |||
| // The BitmapData class must be given a valid image! | |||
| jassert (image.image != nullptr); | |||
| jassert (im.image != nullptr); | |||
| image.image->initialiseBitmapData (*this, 0, 0, mode); | |||
| im.image->initialiseBitmapData (*this, 0, 0, mode); | |||
| jassert (data != nullptr && pixelStride > 0 && lineStride != 0); | |||
| } | |||
| @@ -1357,24 +1357,24 @@ namespace EdgeTableFillers | |||
| pixelOffset (offsetFloat), pixelOffsetInt (offsetInt) | |||
| {} | |||
| void setStartOfLine (float x, float y, const int numPixels) noexcept | |||
| void setStartOfLine (float sx, float sy, const int numPixels) noexcept | |||
| { | |||
| jassert (numPixels > 0); | |||
| x += pixelOffset; | |||
| y += pixelOffset; | |||
| float x1 = x, y1 = y; | |||
| x += numPixels; | |||
| inverseTransform.transformPoints (x1, y1, x, y); | |||
| sx += pixelOffset; | |||
| sy += pixelOffset; | |||
| float x1 = sx, y1 = sy; | |||
| sx += numPixels; | |||
| inverseTransform.transformPoints (x1, y1, sx, sy); | |||
| xBresenham.set ((int) (x1 * 256.0f), (int) (x * 256.0f), numPixels, pixelOffsetInt); | |||
| yBresenham.set ((int) (y1 * 256.0f), (int) (y * 256.0f), numPixels, pixelOffsetInt); | |||
| xBresenham.set ((int) (x1 * 256.0f), (int) (sx * 256.0f), numPixels, pixelOffsetInt); | |||
| yBresenham.set ((int) (y1 * 256.0f), (int) (sy * 256.0f), numPixels, pixelOffsetInt); | |||
| } | |||
| void next (int& x, int& y) noexcept | |||
| void next (int& px, int& py) noexcept | |||
| { | |||
| x = xBresenham.n; xBresenham.stepToNext(); | |||
| y = yBresenham.n; yBresenham.stepToNext(); | |||
| px = xBresenham.n; xBresenham.stepToNext(); | |||
| py = yBresenham.n; yBresenham.stepToNext(); | |||
| } | |||
| private: | |||
| @@ -1383,12 +1383,12 @@ namespace EdgeTableFillers | |||
| public: | |||
| BresenhamInterpolator() noexcept {} | |||
| void set (const int n1, const int n2, const int numSteps_, const int pixelOffsetInt) noexcept | |||
| void set (const int n1, const int n2, const int numSteps_, const int offsetInt) noexcept | |||
| { | |||
| numSteps = numSteps_; | |||
| step = (n2 - n1) / numSteps; | |||
| remainder = modulo = (n2 - n1) % numSteps; | |||
| n = n1 + pixelOffsetInt; | |||
| n = n1 + offsetInt; | |||
| if (modulo <= 0) | |||
| { | |||
| @@ -585,7 +585,7 @@ void CoreGraphicsContext::drawGlyph (int glyphNumber, const AffineTransform& tra | |||
| { | |||
| CGContextSetTextMatrix (context, state->fontTransform); // have to set this each time, as it's not saved as part of the state | |||
| CGGlyph g = glyphNumber; | |||
| CGGlyph g = (CGGlyph) glyphNumber; | |||
| CGContextShowGlyphsAtPoint (context, transform.getTranslationX(), | |||
| flipHeight - roundToInt (transform.getTranslationY()), &g, 1); | |||
| } | |||
| @@ -599,7 +599,7 @@ void CoreGraphicsContext::drawGlyph (int glyphNumber, const AffineTransform& tra | |||
| t.d = -t.d; | |||
| CGContextSetTextMatrix (context, t); | |||
| CGGlyph g = glyphNumber; | |||
| CGGlyph g = (CGGlyph) glyphNumber; | |||
| CGContextShowGlyphsAtPoint (context, 0, 0, &g, 1); | |||
| CGContextRestoreGState (context); | |||
| @@ -426,8 +426,8 @@ public: | |||
| fontRef = CTFontCopyGraphicsFont (ctFontRef, nullptr); | |||
| const int totalHeight = abs (CGFontGetAscent (fontRef)) + abs (CGFontGetDescent (fontRef)); | |||
| const float ctTotalHeight = abs (CTFontGetAscent (ctFontRef)) + abs (CTFontGetDescent (ctFontRef)); | |||
| const int totalHeight = std::abs (CGFontGetAscent (fontRef)) + std::abs (CGFontGetDescent (fontRef)); | |||
| const float ctTotalHeight = std::abs (CTFontGetAscent (ctFontRef)) + std::abs (CTFontGetDescent (ctFontRef)); | |||
| unitsToHeightScaleFactor = 1.0f / ctTotalHeight; | |||
| fontHeightToCGSizeFactor = CGFontGetUnitsPerEm (fontRef) / (float) totalHeight; | |||
| @@ -1427,11 +1427,11 @@ void Component::addAndMakeVisible (Component* const child, int zOrder) | |||
| } | |||
| } | |||
| void Component::addChildAndSetID (Component* const child, const String& componentID) | |||
| void Component::addChildAndSetID (Component* const child, const String& childID) | |||
| { | |||
| if (child != nullptr) | |||
| { | |||
| child->setComponentID (componentID); | |||
| child->setComponentID (childID); | |||
| addAndMakeVisible (child); | |||
| } | |||
| } | |||
| @@ -379,6 +379,7 @@ Rectangle<int> Desktop::Displays::getTotalBounds (bool userAreasOnly) const | |||
| return getRectangleList (userAreasOnly).getBounds(); | |||
| } | |||
| bool operator== (const Desktop::Displays::Display& d1, const Desktop::Displays::Display& d2) noexcept; | |||
| bool operator== (const Desktop::Displays::Display& d1, const Desktop::Displays::Display& d2) noexcept | |||
| { | |||
| return d1.userArea == d2.userArea | |||
| @@ -387,6 +388,7 @@ bool operator== (const Desktop::Displays::Display& d1, const Desktop::Displays:: | |||
| && d1.isMain == d2.isMain; | |||
| } | |||
| bool operator!= (const Desktop::Displays::Display& d1, const Desktop::Displays::Display& d2) noexcept; | |||
| bool operator!= (const Desktop::Displays::Display& d1, const Desktop::Displays::Display& d2) noexcept | |||
| { | |||
| return ! (d1 == d2); | |||
| @@ -271,24 +271,24 @@ void DrawableComposite::ValueTreeWrapper::resetBoundingBoxToContentArea (UndoMan | |||
| RelativeRectangle DrawableComposite::ValueTreeWrapper::getContentArea() const | |||
| { | |||
| MarkerList::ValueTreeWrapper markersX (getMarkerList (true)); | |||
| MarkerList::ValueTreeWrapper markersY (getMarkerList (false)); | |||
| MarkerList::ValueTreeWrapper marksX (getMarkerList (true)); | |||
| MarkerList::ValueTreeWrapper marksY (getMarkerList (false)); | |||
| return RelativeRectangle (markersX.getMarker (markersX.getMarkerState (0)).position, | |||
| markersX.getMarker (markersX.getMarkerState (1)).position, | |||
| markersY.getMarker (markersY.getMarkerState (0)).position, | |||
| markersY.getMarker (markersY.getMarkerState (1)).position); | |||
| return RelativeRectangle (marksX.getMarker (marksX.getMarkerState (0)).position, | |||
| marksX.getMarker (marksX.getMarkerState (1)).position, | |||
| marksY.getMarker (marksY.getMarkerState (0)).position, | |||
| marksY.getMarker (marksY.getMarkerState (1)).position); | |||
| } | |||
| void DrawableComposite::ValueTreeWrapper::setContentArea (const RelativeRectangle& newArea, UndoManager* undoManager) | |||
| { | |||
| MarkerList::ValueTreeWrapper markersX (getMarkerListCreating (true, nullptr)); | |||
| MarkerList::ValueTreeWrapper markersY (getMarkerListCreating (false, nullptr)); | |||
| MarkerList::ValueTreeWrapper marksX (getMarkerListCreating (true, nullptr)); | |||
| MarkerList::ValueTreeWrapper marksY (getMarkerListCreating (false, nullptr)); | |||
| markersX.setMarker (MarkerList::Marker (contentLeftMarkerName, newArea.left), undoManager); | |||
| markersX.setMarker (MarkerList::Marker (contentRightMarkerName, newArea.right), undoManager); | |||
| markersY.setMarker (MarkerList::Marker (contentTopMarkerName, newArea.top), undoManager); | |||
| markersY.setMarker (MarkerList::Marker (contentBottomMarkerName, newArea.bottom), undoManager); | |||
| marksX.setMarker (MarkerList::Marker (contentLeftMarkerName, newArea.left), undoManager); | |||
| marksX.setMarker (MarkerList::Marker (contentRightMarkerName, newArea.right), undoManager); | |||
| marksY.setMarker (MarkerList::Marker (contentTopMarkerName, newArea.top), undoManager); | |||
| marksY.setMarker (MarkerList::Marker (contentBottomMarkerName, newArea.bottom), undoManager); | |||
| } | |||
| MarkerList::ValueTreeWrapper DrawableComposite::ValueTreeWrapper::getMarkerList (bool xAxis) const | |||
| @@ -174,20 +174,20 @@ void DrawablePath::ValueTreeWrapper::setUsesNonZeroWinding (bool b, UndoManager* | |||
| state.setProperty (nonZeroWinding, b, undoManager); | |||
| } | |||
| void DrawablePath::ValueTreeWrapper::readFrom (const RelativePointPath& relativePath, UndoManager* undoManager) | |||
| void DrawablePath::ValueTreeWrapper::readFrom (const RelativePointPath& p, UndoManager* undoManager) | |||
| { | |||
| setUsesNonZeroWinding (relativePath.usesNonZeroWinding, undoManager); | |||
| setUsesNonZeroWinding (p.usesNonZeroWinding, undoManager); | |||
| ValueTree pathTree (getPathState()); | |||
| pathTree.removeAllChildren (undoManager); | |||
| for (int i = 0; i < relativePath.elements.size(); ++i) | |||
| pathTree.addChild (relativePath.elements.getUnchecked(i)->createTree(), -1, undoManager); | |||
| for (int i = 0; i < p.elements.size(); ++i) | |||
| pathTree.addChild (p.elements.getUnchecked(i)->createTree(), -1, undoManager); | |||
| } | |||
| void DrawablePath::ValueTreeWrapper::writeTo (RelativePointPath& relativePath) const | |||
| void DrawablePath::ValueTreeWrapper::writeTo (RelativePointPath& p) const | |||
| { | |||
| relativePath.usesNonZeroWinding = usesNonZeroWinding(); | |||
| p.usesNonZeroWinding = usesNonZeroWinding(); | |||
| RelativePoint points[3]; | |||
| const ValueTree pathTree (state.getChildWithName (path)); | |||
| @@ -210,7 +210,7 @@ void DrawablePath::ValueTreeWrapper::writeTo (RelativePointPath& relativePath) c | |||
| else if (t == Element::cubicToElement) newElement = new RelativePointPath::CubicTo (points[0], points[1], points[2]); | |||
| else jassertfalse; | |||
| relativePath.addElement (newElement); | |||
| p.addElement (newElement); | |||
| } | |||
| } | |||
| @@ -138,25 +138,25 @@ public: | |||
| class ProxyComponent : public Component | |||
| { | |||
| public: | |||
| ProxyComponent (Component& component) | |||
| : image (component.createComponentSnapshot (component.getLocalBounds())) | |||
| ProxyComponent (Component& c) | |||
| : image (c.createComponentSnapshot (c.getLocalBounds())) | |||
| { | |||
| setBounds (component.getBounds()); | |||
| setTransform (component.getTransform()); | |||
| setAlpha (component.getAlpha()); | |||
| setBounds (c.getBounds()); | |||
| setTransform (c.getTransform()); | |||
| setAlpha (c.getAlpha()); | |||
| setInterceptsMouseClicks (false, false); | |||
| Component* const parent = component.getParentComponent(); | |||
| Component* const parent = c.getParentComponent(); | |||
| if (parent != nullptr) | |||
| parent->addAndMakeVisible (this); | |||
| else if (component.isOnDesktop() && component.getPeer() != nullptr) | |||
| addToDesktop (component.getPeer()->getStyleFlags() | ComponentPeer::windowIgnoresKeyPresses); | |||
| else if (c.isOnDesktop() && c.getPeer() != nullptr) | |||
| addToDesktop (c.getPeer()->getStyleFlags() | ComponentPeer::windowIgnoresKeyPresses); | |||
| else | |||
| jassertfalse; // seem to be trying to animate a component that's not visible.. | |||
| setVisible (true); | |||
| toBehind (&component); | |||
| toBehind (&c); | |||
| } | |||
| void paint (Graphics& g) | |||
| @@ -26,24 +26,24 @@ | |||
| class DropShadower::ShadowWindow : public Component | |||
| { | |||
| public: | |||
| ShadowWindow (Component& owner, const int type_, const Image shadowImageSections [12]) | |||
| : topLeft (shadowImageSections [type_ * 3]), | |||
| bottomRight (shadowImageSections [type_ * 3 + 1]), | |||
| filler (shadowImageSections [type_ * 3 + 2]), | |||
| type (type_) | |||
| ShadowWindow (Component& comp, const int shadowType, const Image imageSections [12]) | |||
| : topLeft (imageSections [shadowType * 3]), | |||
| bottomRight (imageSections [shadowType * 3 + 1]), | |||
| filler (imageSections [shadowType * 3 + 2]), | |||
| type (shadowType) | |||
| { | |||
| setInterceptsMouseClicks (false, false); | |||
| if (owner.isOnDesktop()) | |||
| if (comp.isOnDesktop()) | |||
| { | |||
| setSize (1, 1); // to keep the OS happy by not having zero-size windows | |||
| addToDesktop (ComponentPeer::windowIgnoresMouseClicks | |||
| | ComponentPeer::windowIsTemporary | |||
| | ComponentPeer::windowIgnoresKeyPresses); | |||
| } | |||
| else if (owner.getParentComponent() != nullptr) | |||
| else if (Component* const parent = comp.getParentComponent()) | |||
| { | |||
| owner.getParentComponent()->addChildComponent (this); | |||
| parent->addChildComponent (this); | |||
| } | |||
| } | |||
| @@ -241,16 +241,16 @@ public: | |||
| Rectangle<int> getBounds (const bool global) const | |||
| { | |||
| NSRect r = [view frame]; | |||
| NSWindow* window = [view window]; | |||
| NSWindow* viewWindow = [view window]; | |||
| if (global && window != nil) | |||
| if (global && viewWindow != nil) | |||
| { | |||
| r = [[view superview] convertRect: r toView: nil]; | |||
| #if defined (MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7 | |||
| r = [window convertRectToScreen: r]; | |||
| r = [viewWindow convertRectToScreen: r]; | |||
| #else | |||
| r.origin = [window convertBaseToScreen: r.origin]; | |||
| r.origin = [viewWindow convertBaseToScreen: r.origin]; | |||
| #endif | |||
| r.origin.y = [[[NSScreen screens] objectAtIndex: 0] frame].size.height - r.origin.y - r.size.height; | |||
| @@ -396,9 +396,8 @@ public: | |||
| if (hasNativeTitleBar()) | |||
| { | |||
| const Rectangle<int> screen (getFrameSize().subtractedFrom (component.getParentMonitorArea())); | |||
| const Rectangle<int> window (component.getScreenBounds()); | |||
| fullScreen = window.expanded (2, 2).contains (screen); | |||
| fullScreen = component.getScreenBounds().expanded (2, 2).contains (screen); | |||
| } | |||
| } | |||
| @@ -1791,16 +1790,16 @@ void Desktop::createMouseInputSources() | |||
| } | |||
| //============================================================================== | |||
| void Desktop::setKioskComponent (Component* kioskModeComponent, bool enableOrDisable, bool allowMenusAndBars) | |||
| void Desktop::setKioskComponent (Component* kioskComp, bool enableOrDisable, bool allowMenusAndBars) | |||
| { | |||
| #if defined (MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 | |||
| NSViewComponentPeer* const peer = dynamic_cast<NSViewComponentPeer*> (kioskModeComponent->getPeer()); | |||
| NSViewComponentPeer* const peer = dynamic_cast<NSViewComponentPeer*> (kioskComp->getPeer()); | |||
| jassert (peer != nullptr); // (this should have been checked by the caller) | |||
| #if defined (MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 | |||
| if (peer != nullptr | |||
| && peer->hasNativeTitleBar() | |||
| && [peer->window respondsToSelector: @selector (toggleFullScreen:)]) | |||
| if (peer->hasNativeTitleBar() | |||
| && [peer->window respondsToSelector: @selector (toggleFullScreen:)]) | |||
| { | |||
| [peer->window performSelector: @selector (toggleFullScreen:) | |||
| withObject: [NSNumber numberWithBool: (BOOL) enableOrDisable]]; | |||
| @@ -1815,7 +1814,7 @@ void Desktop::setKioskComponent (Component* kioskModeComponent, bool enableOrDis | |||
| [NSApp setPresentationOptions: (allowMenusAndBars ? (NSApplicationPresentationAutoHideDock | NSApplicationPresentationAutoHideMenuBar) | |||
| : (NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar))]; | |||
| kioskModeComponent->setBounds (Desktop::getInstance().getDisplays().getMainDisplay().totalArea); | |||
| kioskComp->setBounds (Desktop::getInstance().getDisplays().getMainDisplay().totalArea); | |||
| peer->becomeKeyWindow(); | |||
| } | |||
| else | |||
| @@ -1833,7 +1832,7 @@ void Desktop::setKioskComponent (Component* kioskModeComponent, bool enableOrDis | |||
| if (enableOrDisable) | |||
| { | |||
| SetSystemUIMode (kUIModeAllSuppressed, allowMenusAndBars ? kUIOptionAutoShowMenuBar : 0); | |||
| kioskModeComponent->setBounds (Desktop::getInstance().getDisplays().getMainDisplay().totalArea); | |||
| kioskComp->setBounds (Desktop::getInstance().getDisplays().getMainDisplay().totalArea); | |||
| } | |||
| else | |||
| { | |||
| @@ -42,16 +42,16 @@ public: | |||
| TextEditor* createEditorComponent() | |||
| { | |||
| TextEditor* const textEditor = Label::createEditorComponent(); | |||
| textEditor->setInputRestrictions (maxChars); | |||
| TextEditor* const ed = Label::createEditorComponent(); | |||
| ed->setInputRestrictions (maxChars); | |||
| if (isMultiline) | |||
| { | |||
| textEditor->setMultiLine (true, true); | |||
| textEditor->setReturnKeyStartsNewLine (true); | |||
| ed->setMultiLine (true, true); | |||
| ed->setReturnKeyStartsNewLine (true); | |||
| } | |||
| return textEditor; | |||
| return ed; | |||
| } | |||
| void textWasEdited() | |||
| @@ -118,10 +118,10 @@ void ComboBox::addItem (const String& newItemText, const int newItemId) | |||
| } | |||
| } | |||
| void ComboBox::addItemList (const StringArray& items, const int firstItemIdOffset) | |||
| void ComboBox::addItemList (const StringArray& itemsToAdd, const int firstItemIdOffset) | |||
| { | |||
| for (int i = 0; i < items.size(); ++i) | |||
| addItem (items[i], i + firstItemIdOffset); | |||
| for (int i = 0; i < itemsToAdd.size(); ++i) | |||
| addItem (itemsToAdd[i], i + firstItemIdOffset); | |||
| } | |||
| void ComboBox::addSeparator() | |||
| @@ -209,14 +209,14 @@ public: | |||
| void updateContents() | |||
| { | |||
| hasUpdated = true; | |||
| const int rowHeight = owner.getRowHeight(); | |||
| const int rowH = owner.getRowHeight(); | |||
| if (rowHeight > 0) | |||
| if (rowH > 0) | |||
| { | |||
| const int y = getViewPositionY(); | |||
| const int w = getViewedComponent()->getWidth(); | |||
| const int numNeeded = 2 + getMaximumVisibleHeight() / rowHeight; | |||
| const int numNeeded = 2 + getMaximumVisibleHeight() / rowH; | |||
| rows.removeRange (numNeeded, rows.size()); | |||
| while (numNeeded > rows.size()) | |||
| @@ -226,9 +226,9 @@ public: | |||
| getViewedComponent()->addAndMakeVisible (newRow); | |||
| } | |||
| firstIndex = y / rowHeight; | |||
| firstWholeIndex = (y + rowHeight - 1) / rowHeight; | |||
| lastWholeIndex = (y + getMaximumVisibleHeight() - 1) / rowHeight; | |||
| firstIndex = y / rowH; | |||
| firstWholeIndex = (y + rowH - 1) / rowH; | |||
| lastWholeIndex = (y + getMaximumVisibleHeight() - 1) / rowH; | |||
| for (int i = 0; i < numNeeded; ++i) | |||
| { | |||
| @@ -237,7 +237,7 @@ public: | |||
| if (rowComp != nullptr) | |||
| { | |||
| rowComp->setBounds (0, row * rowHeight, w, rowHeight); | |||
| rowComp->setBounds (0, row * rowH, w, rowH); | |||
| rowComp->update (row, owner.isRowSelected (row)); | |||
| } | |||
| } | |||
| @@ -251,30 +251,30 @@ public: | |||
| owner.headerComponent->getHeight()); | |||
| } | |||
| void selectRow (const int row, const int rowHeight, const bool dontScroll, | |||
| const int lastRowSelected, const int totalItems, const bool isMouseClick) | |||
| void selectRow (const int row, const int rowH, const bool dontScroll, | |||
| const int lastSelectedRow, const int totalRows, const bool isMouseClick) | |||
| { | |||
| hasUpdated = false; | |||
| if (row < firstWholeIndex && ! dontScroll) | |||
| { | |||
| setViewPosition (getViewPositionX(), row * rowHeight); | |||
| setViewPosition (getViewPositionX(), row * rowH); | |||
| } | |||
| else if (row >= lastWholeIndex && ! dontScroll) | |||
| { | |||
| const int rowsOnScreen = lastWholeIndex - firstWholeIndex; | |||
| if (row >= lastRowSelected + rowsOnScreen | |||
| && rowsOnScreen < totalItems - 1 | |||
| if (row >= lastSelectedRow + rowsOnScreen | |||
| && rowsOnScreen < totalRows - 1 | |||
| && ! isMouseClick) | |||
| { | |||
| setViewPosition (getViewPositionX(), | |||
| jlimit (0, jmax (0, totalItems - rowsOnScreen), row) * rowHeight); | |||
| jlimit (0, jmax (0, totalRows - rowsOnScreen), row) * rowH); | |||
| } | |||
| else | |||
| { | |||
| setViewPosition (getViewPositionX(), | |||
| jmax (0, (row + 1) * rowHeight - getMaximumVisibleHeight())); | |||
| jmax (0, (row + 1) * rowH - getMaximumVisibleHeight())); | |||
| } | |||
| } | |||
| @@ -282,16 +282,16 @@ public: | |||
| updateContents(); | |||
| } | |||
| void scrollToEnsureRowIsOnscreen (const int row, const int rowHeight) | |||
| void scrollToEnsureRowIsOnscreen (const int row, const int rowH) | |||
| { | |||
| if (row < firstWholeIndex) | |||
| { | |||
| setViewPosition (getViewPositionX(), row * rowHeight); | |||
| setViewPosition (getViewPositionX(), row * rowH); | |||
| } | |||
| else if (row >= lastWholeIndex) | |||
| { | |||
| setViewPosition (getViewPositionX(), | |||
| jmax (0, (row + 1) * rowHeight - getMaximumVisibleHeight())); | |||
| jmax (0, (row + 1) * rowH - getMaximumVisibleHeight())); | |||
| } | |||
| } | |||
| @@ -27,34 +27,31 @@ class TableListBox::RowComp : public Component, | |||
| public TooltipClient | |||
| { | |||
| public: | |||
| RowComp (TableListBox& owner_) | |||
| : owner (owner_), row (-1), isSelected (false) | |||
| RowComp (TableListBox& tlb) : owner (tlb), row (-1), isSelected (false) | |||
| { | |||
| } | |||
| void paint (Graphics& g) | |||
| { | |||
| TableListBoxModel* const model = owner.getModel(); | |||
| if (model != nullptr) | |||
| if (TableListBoxModel* const tableModel = owner.getModel()) | |||
| { | |||
| model->paintRowBackground (g, row, getWidth(), getHeight(), isSelected); | |||
| tableModel->paintRowBackground (g, row, getWidth(), getHeight(), isSelected); | |||
| const TableHeaderComponent& header = owner.getHeader(); | |||
| const int numColumns = header.getNumColumns (true); | |||
| const TableHeaderComponent& headerComp = owner.getHeader(); | |||
| const int numColumns = headerComp.getNumColumns (true); | |||
| for (int i = 0; i < numColumns; ++i) | |||
| { | |||
| if (columnComponents[i] == nullptr) | |||
| { | |||
| const int columnId = header.getColumnIdOfIndex (i, true); | |||
| const Rectangle<int> columnRect (header.getColumnPosition(i).withHeight (getHeight())); | |||
| const int columnId = headerComp.getColumnIdOfIndex (i, true); | |||
| const Rectangle<int> columnRect (headerComp.getColumnPosition(i).withHeight (getHeight())); | |||
| Graphics::ScopedSaveState ss (g); | |||
| g.reduceClipRegion (columnRect); | |||
| g.setOrigin (columnRect.getX(), 0); | |||
| model->paintCell (g, row, columnId, columnRect.getWidth(), columnRect.getHeight(), isSelected); | |||
| tableModel->paintCell (g, row, columnId, columnRect.getWidth(), columnRect.getHeight(), isSelected); | |||
| } | |||
| } | |||
| } | |||
| @@ -71,9 +68,9 @@ public: | |||
| repaint(); | |||
| } | |||
| TableListBoxModel* const model = owner.getModel(); | |||
| TableListBoxModel* const tableModel = owner.getModel(); | |||
| if (model != nullptr && row < owner.getNumRows()) | |||
| if (tableModel != nullptr && row < owner.getNumRows()) | |||
| { | |||
| const Identifier columnProperty ("_tableColumnId"); | |||
| const int numColumns = owner.getHeader().getNumColumns (true); | |||
| @@ -89,7 +86,7 @@ public: | |||
| comp = nullptr; | |||
| } | |||
| comp = model->refreshComponentForCell (row, columnId, isSelected, comp); | |||
| comp = tableModel->refreshComponentForCell (row, columnId, isSelected, comp); | |||
| columnComponents.set (i, comp, false); | |||
| if (comp != nullptr) | |||
| @@ -117,9 +114,7 @@ public: | |||
| void resizeCustomComp (const int index) | |||
| { | |||
| Component* const c = columnComponents.getUnchecked (index); | |||
| if (c != nullptr) | |||
| if (Component* const c = columnComponents.getUnchecked (index)) | |||
| c->setBounds (owner.getHeader().getColumnPosition (index) | |||
| .withY (0).withHeight (getHeight())); | |||
| } | |||
| @@ -216,10 +211,7 @@ private: | |||
| class TableListBox::Header : public TableHeaderComponent | |||
| { | |||
| public: | |||
| Header (TableListBox& owner_) | |||
| : owner (owner_) | |||
| { | |||
| } | |||
| Header (TableListBox& tlb) : owner (tlb) {} | |||
| void addMenuItems (PopupMenu& menu, int columnIdClicked) | |||
| { | |||
| @@ -252,10 +244,10 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| TableListBox::TableListBox (const String& name, TableListBoxModel* const model_) | |||
| TableListBox::TableListBox (const String& name, TableListBoxModel* const m) | |||
| : ListBox (name, nullptr), | |||
| header (nullptr), | |||
| model (model_), | |||
| model (m), | |||
| autoSizeOptionsShown (true) | |||
| { | |||
| ListBox::model = this; | |||
| @@ -30,41 +30,41 @@ public: | |||
| { | |||
| } | |||
| bool update (CodeDocument& document, int lineNum, | |||
| bool update (CodeDocument& codeDoc, int lineNum, | |||
| CodeDocument::Iterator& source, | |||
| CodeTokeniser* tokeniser, const int spacesPerTab, | |||
| const CodeDocument::Position& selectionStart, | |||
| const CodeDocument::Position& selectionEnd) | |||
| CodeTokeniser* tokeniser, const int tabSpaces, | |||
| const CodeDocument::Position& selStart, | |||
| const CodeDocument::Position& selEnd) | |||
| { | |||
| Array <SyntaxToken> newTokens; | |||
| newTokens.ensureStorageAllocated (8); | |||
| if (tokeniser == nullptr) | |||
| { | |||
| const String line (document.getLine (lineNum)); | |||
| const String line (codeDoc.getLine (lineNum)); | |||
| addToken (newTokens, line, line.length(), -1); | |||
| } | |||
| else if (lineNum < document.getNumLines()) | |||
| else if (lineNum < codeDoc.getNumLines()) | |||
| { | |||
| const CodeDocument::Position pos (document, lineNum, 0); | |||
| const CodeDocument::Position pos (codeDoc, lineNum, 0); | |||
| createTokens (pos.getPosition(), pos.getLineText(), | |||
| source, *tokeniser, newTokens); | |||
| } | |||
| replaceTabsWithSpaces (newTokens, spacesPerTab); | |||
| replaceTabsWithSpaces (newTokens, tabSpaces); | |||
| int newHighlightStart = 0; | |||
| int newHighlightEnd = 0; | |||
| if (selectionStart.getLineNumber() <= lineNum && selectionEnd.getLineNumber() >= lineNum) | |||
| if (selStart.getLineNumber() <= lineNum && selEnd.getLineNumber() >= lineNum) | |||
| { | |||
| const String line (document.getLine (lineNum)); | |||
| const String line (codeDoc.getLine (lineNum)); | |||
| CodeDocument::Position lineStart (document, lineNum, 0), lineEnd (document, lineNum + 1, 0); | |||
| newHighlightStart = indexToColumn (jmax (0, selectionStart.getPosition() - lineStart.getPosition()), | |||
| line, spacesPerTab); | |||
| newHighlightEnd = indexToColumn (jmin (lineEnd.getPosition() - lineStart.getPosition(), selectionEnd.getPosition() - lineStart.getPosition()), | |||
| line, spacesPerTab); | |||
| CodeDocument::Position lineStart (codeDoc, lineNum, 0), lineEnd (codeDoc, lineNum + 1, 0); | |||
| newHighlightStart = indexToColumn (jmax (0, selStart.getPosition() - lineStart.getPosition()), | |||
| line, tabSpaces); | |||
| newHighlightEnd = indexToColumn (jmin (lineEnd.getPosition() - lineStart.getPosition(), selEnd.getPosition() - lineStart.getPosition()), | |||
| line, tabSpaces); | |||
| } | |||
| if (newHighlightStart != highlightColumnStart || newHighlightEnd != highlightColumnEnd) | |||
| @@ -81,17 +81,17 @@ public: | |||
| return true; | |||
| } | |||
| void draw (CodeEditorComponent& owner, Graphics& g, const Font& font, | |||
| void draw (CodeEditorComponent& owner, Graphics& g, const Font& fontToUse, | |||
| const float leftClip, const float rightClip, | |||
| const float xOffset, const int y, const int baselineOffset, | |||
| const int lineHeight, const float charWidth, | |||
| const float x, const int y, const int baselineOffset, | |||
| const int lineH, const float characterWidth, | |||
| const Colour& highlightColour) const | |||
| { | |||
| if (highlightColumnStart < highlightColumnEnd) | |||
| { | |||
| g.setColour (highlightColour); | |||
| g.fillRect (roundToInt (xOffset + highlightColumnStart * owner.getCharWidth()), y, | |||
| roundToInt ((highlightColumnEnd - highlightColumnStart) * owner.getCharWidth()), lineHeight); | |||
| g.fillRect (roundToInt (x + highlightColumnStart * characterWidth), y, | |||
| roundToInt ((highlightColumnEnd - highlightColumnStart) * characterWidth), lineH); | |||
| } | |||
| const float baselineY = (float) (y + baselineOffset); | |||
| @@ -101,7 +101,7 @@ public: | |||
| for (int i = 0; i < tokens.size(); ++i) | |||
| { | |||
| const float tokenX = xOffset + column * charWidth; | |||
| const float tokenX = x + column * characterWidth; | |||
| if (tokenX > rightClip) | |||
| break; | |||
| @@ -119,9 +119,9 @@ public: | |||
| column += token.length; | |||
| if (xOffset + column * charWidth >= leftClip) | |||
| ga.addCurtailedLineOfText (font, token.text, tokenX, baselineY, | |||
| (rightClip - tokenX) + charWidth, false); | |||
| if (x + column * characterWidth >= leftClip) | |||
| ga.addCurtailedLineOfText (fontToUse, token.text, tokenX, baselineY, | |||
| (rightClip - tokenX) + characterWidth, false); | |||
| } | |||
| ga.draw (g); | |||
| @@ -207,7 +207,7 @@ private: | |||
| } | |||
| } | |||
| int indexToColumn (int index, const String& line, int spacesPerTab) const noexcept | |||
| int indexToColumn (int index, const String& line, int tabSpaces) const noexcept | |||
| { | |||
| jassert (index <= line.length()); | |||
| @@ -218,7 +218,7 @@ private: | |||
| if (t.getAndAdvance() != '\t') | |||
| ++col; | |||
| else | |||
| col += spacesPerTab - (col % spacesPerTab); | |||
| col += tabSpaces - (col % tabSpaces); | |||
| } | |||
| return col; | |||
| @@ -316,10 +316,10 @@ public: | |||
| .overlaidWith (editor.findColour (lineNumberBackgroundId))); | |||
| const Rectangle<int> clip (g.getClipBounds()); | |||
| const int lineHeight = editor.lineHeight; | |||
| const float lineHeightFloat = (float) lineHeight; | |||
| const int firstLineToDraw = jmax (0, clip.getY() / lineHeight); | |||
| const int lastLineToDraw = jmin (editor.lines.size(), clip.getBottom() / lineHeight + 1, | |||
| const int lineH = editor.lineHeight; | |||
| const float lineHeightFloat = (float) lineH; | |||
| const int firstLineToDraw = jmax (0, clip.getY() / lineH); | |||
| const int lastLineToDraw = jmin (editor.lines.size(), clip.getBottom() / lineH + 1, | |||
| lastNumLines - editor.firstLineOnScreen); | |||
| const Font lineNumberFont (editor.getFont().withHeight (jmin (13.0f, lineHeightFloat * 0.8f))); | |||
| @@ -328,7 +328,7 @@ public: | |||
| GlyphArrangement ga; | |||
| for (int i = firstLineToDraw; i < lastLineToDraw; ++i) | |||
| ga.addFittedText (lineNumberFont, String (editor.firstLineOnScreen + i + 1), | |||
| 0, (float) (lineHeight * i), w, lineHeightFloat, | |||
| 0, (float) (lineH * i), w, lineHeightFloat, | |||
| Justification::centredRight, 1, 0.2f); | |||
| g.setColour (editor.findColour (lineNumberTextId)); | |||
| @@ -481,8 +481,8 @@ void CodeEditorComponent::paint (Graphics& g) | |||
| g.fillAll (findColour (CodeEditorComponent::backgroundColourId)); | |||
| const int gutter = getGutterSize(); | |||
| g.reduceClipRegion (gutter, 0, verticalScrollBar.getX() - gutter, horizontalScrollBar.getY()); | |||
| const int gutterSize = getGutterSize(); | |||
| g.reduceClipRegion (gutterSize, 0, verticalScrollBar.getX() - gutterSize, horizontalScrollBar.getY()); | |||
| g.setFont (font); | |||
| const int baselineOffset = (int) font.getAscent(); | |||
| @@ -491,7 +491,7 @@ void CodeEditorComponent::paint (Graphics& g) | |||
| const Rectangle<int> clip (g.getClipBounds()); | |||
| const int firstLineToDraw = jmax (0, clip.getY() / lineHeight); | |||
| const int lastLineToDraw = jmin (lines.size(), clip.getBottom() / lineHeight + 1); | |||
| const float x = (float) (gutter - xOffset * charWidth); | |||
| const float x = (float) (gutterSize - xOffset * charWidth); | |||
| const float leftClip = (float) clip.getX(); | |||
| const float rightClip = (float) clip.getRight(); | |||
| @@ -709,12 +709,12 @@ void CodeEditorComponent::scrollBy (int deltaLines) | |||
| scrollToLine (firstLineOnScreen + deltaLines); | |||
| } | |||
| void CodeEditorComponent::scrollToKeepLinesOnScreen (const Range<int>& lines) | |||
| void CodeEditorComponent::scrollToKeepLinesOnScreen (const Range<int>& rangeToShow) | |||
| { | |||
| if (lines.getStart() < firstLineOnScreen) | |||
| scrollBy (lines.getStart() - firstLineOnScreen); | |||
| else if (lines.getEnd() >= firstLineOnScreen + linesOnScreen) | |||
| scrollBy (lines.getEnd() - (firstLineOnScreen + linesOnScreen - 1)); | |||
| if (rangeToShow.getStart() < firstLineOnScreen) | |||
| scrollBy (rangeToShow.getStart() - firstLineOnScreen); | |||
| else if (rangeToShow.getEnd() >= firstLineOnScreen + linesOnScreen) | |||
| scrollBy (rangeToShow.getEnd() - (firstLineOnScreen + linesOnScreen - 1)); | |||
| } | |||
| void CodeEditorComponent::scrollToKeepCaretOnScreen() | |||
| @@ -167,17 +167,17 @@ public: | |||
| void paint (Graphics& g) | |||
| { | |||
| const float w = (float) getWidth(); | |||
| const float h = (float) getHeight(); | |||
| const float cw = (float) getWidth(); | |||
| const float ch = (float) getHeight(); | |||
| Path p; | |||
| p.addTriangle (1.0f, 1.0f, | |||
| w * 0.3f, h * 0.5f, | |||
| 1.0f, h - 1.0f); | |||
| cw * 0.3f, ch * 0.5f, | |||
| 1.0f, ch - 1.0f); | |||
| p.addTriangle (w - 1.0f, 1.0f, | |||
| w * 0.7f, h * 0.5f, | |||
| w - 1.0f, h - 1.0f); | |||
| p.addTriangle (cw - 1.0f, 1.0f, | |||
| cw * 0.7f, ch * 0.5f, | |||
| cw - 1.0f, ch - 1.0f); | |||
| g.setColour (Colours::white.withAlpha (0.75f)); | |||
| g.fillPath (p); | |||
| @@ -255,11 +255,11 @@ public: | |||
| void paint (Graphics& g) | |||
| { | |||
| const Colour colour (owner.getSwatchColour (index)); | |||
| const Colour c (owner.getSwatchColour (index)); | |||
| g.fillCheckerBoard (getLocalBounds(), 6, 6, | |||
| Colour (0xffdddddd).overlaidWith (colour), | |||
| Colour (0xffffffff).overlaidWith (colour)); | |||
| Colour (0xffdddddd).overlaidWith (c), | |||
| Colour (0xffffffff).overlaidWith (c)); | |||
| } | |||
| void mouseDown (const MouseEvent&) | |||