| @@ -63,14 +63,14 @@ LOCAL_SRC_FILES := \ | |||
| ../../../../../modules/juce_video/juce_video.cpp\ | |||
| ifeq ($(CONFIG),Debug) | |||
| LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++0x -std=gnu++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_LDLIBS := -llog -lGLESv2 | |||
| LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++0x -std=gnu++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_LDLIBS := -llog -lGLESv2 | |||
| else | |||
| LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=c++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=c++0x -std=gnu++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_LDLIBS := -llog -lGLESv2 | |||
| LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=c++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=c++0x -std=gnu++0x -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=9" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" | |||
| LOCAL_LDLIBS := -llog -lGLESv2 | |||
| endif | |||
| @@ -183,20 +183,20 @@ public: | |||
| writeLocalPropertiesFile (target.getChildFile ("local.properties")); | |||
| writeStringsFile (target.getChildFile ("res/values/strings.xml")); | |||
| const Image bigIcon (getBigIcon()); | |||
| const Image smallIcon (getSmallIcon()); | |||
| ScopedPointer<Drawable> bigIcon (getBigIcon()); | |||
| ScopedPointer<Drawable> smallIcon (getSmallIcon()); | |||
| if (bigIcon.isValid() && smallIcon.isValid()) | |||
| if (bigIcon != nullptr && smallIcon != nullptr) | |||
| { | |||
| const int step = jmax (bigIcon.getWidth(), bigIcon.getHeight()) / 8; | |||
| const int step = jmax (bigIcon->getWidth(), bigIcon->getHeight()) / 8; | |||
| writeIcon (target.getChildFile ("res/drawable-xhdpi/icon.png"), getBestIconForSize (step * 8, false)); | |||
| writeIcon (target.getChildFile ("res/drawable-hdpi/icon.png"), getBestIconForSize (step * 6, false)); | |||
| writeIcon (target.getChildFile ("res/drawable-mdpi/icon.png"), getBestIconForSize (step * 4, false)); | |||
| writeIcon (target.getChildFile ("res/drawable-ldpi/icon.png"), getBestIconForSize (step * 3, false)); | |||
| } | |||
| else | |||
| else if (Drawable* icon = bigIcon != nullptr ? bigIcon : smallIcon) | |||
| { | |||
| writeIcon (target.getChildFile ("res/drawable-mdpi/icon.png"), bigIcon.isValid() ? bigIcon : smallIcon); | |||
| writeIcon (target.getChildFile ("res/drawable-mdpi/icon.png"), rescaleImageForIcon (*icon, icon->getWidth())); | |||
| } | |||
| } | |||
| @@ -490,7 +490,7 @@ private: | |||
| << " -O" << config.getGCCOptimisationFlag(); | |||
| if (isCPP11Enabled()) | |||
| flags << " -std=c++0x"; | |||
| flags << " -std=c++0x -std=gnu++0x"; // these flags seem to enable slightly different things on gcc, and both seem to be needed | |||
| defines = mergePreprocessorDefs (defines, getAllPreprocessorDefs (config)); | |||
| return flags + createGCCPreprocessorFlags (defines); | |||
| @@ -380,7 +380,7 @@ private: | |||
| addProjectObject(); | |||
| } | |||
| static Image fixMacIconImageSize (Image& image) | |||
| static Image fixMacIconImageSize (Drawable& image) | |||
| { | |||
| const int validSizes[] = { 16, 32, 48, 128, 256, 512, 1024 }; | |||
| @@ -392,7 +392,10 @@ private: | |||
| for (int i = 0; i < numElementsInArray (validSizes); ++i) | |||
| { | |||
| if (w == h && w == validSizes[i]) | |||
| return image; | |||
| { | |||
| bestSize = w; | |||
| break; | |||
| } | |||
| if (jmax (w, h) > validSizes[i]) | |||
| bestSize = validSizes[i]; | |||
| @@ -447,13 +450,13 @@ private: | |||
| out << pngData; | |||
| } | |||
| void writeIcnsFile (const Array<Image>& images, OutputStream& out) const | |||
| void writeIcnsFile (const OwnedArray<Drawable>& images, OutputStream& out) const | |||
| { | |||
| MemoryOutputStream data; | |||
| for (int i = 0; i < images.size(); ++i) | |||
| { | |||
| const Image image (fixMacIconImageSize (images.getReference (i))); | |||
| const Image image (fixMacIconImageSize (*images.getUnchecked(i))); | |||
| jassert (image.getWidth() == image.getHeight()); | |||
| switch (image.getWidth()) | |||
| @@ -478,15 +481,15 @@ private: | |||
| void createIconFile() const | |||
| { | |||
| Array<Image> images; | |||
| OwnedArray<Drawable> images; | |||
| Image bigIcon (getBigIcon()); | |||
| if (bigIcon.isValid()) | |||
| images.add (bigIcon); | |||
| ScopedPointer<Drawable> bigIcon (getBigIcon()); | |||
| if (bigIcon != nullptr) | |||
| images.add (bigIcon.release()); | |||
| Image smallIcon (getSmallIcon()); | |||
| if (smallIcon.isValid()) | |||
| images.add (smallIcon); | |||
| ScopedPointer<Drawable> smallIcon (getSmallIcon()); | |||
| if (smallIcon != nullptr) | |||
| images.add (smallIcon.release()); | |||
| if (images.size() > 0) | |||
| { | |||
| @@ -498,68 +498,77 @@ void ProjectExporter::createDefaultConfigs() | |||
| } | |||
| } | |||
| Image ProjectExporter::getBigIcon() const | |||
| Drawable* ProjectExporter::getBigIcon() const | |||
| { | |||
| return project.getMainGroup().findItemWithID (settings [Ids::bigIcon]).loadAsImageFile(); | |||
| } | |||
| Image ProjectExporter::getSmallIcon() const | |||
| Drawable* ProjectExporter::getSmallIcon() const | |||
| { | |||
| return project.getMainGroup().findItemWithID (settings [Ids::smallIcon]).loadAsImageFile(); | |||
| } | |||
| Image ProjectExporter::getBestIconForSize (int size, bool returnNullIfNothingBigEnough) const | |||
| { | |||
| Image im; | |||
| Drawable* im = nullptr; | |||
| const Image im1 (getSmallIcon()); | |||
| const Image im2 (getBigIcon()); | |||
| ScopedPointer<Drawable> im1 (getSmallIcon()); | |||
| ScopedPointer<Drawable> im2 (getBigIcon()); | |||
| if (im1.isValid() && im2.isValid()) | |||
| if (im1 != nullptr && im2 != nullptr) | |||
| { | |||
| if (im1.getWidth() >= size && im2.getWidth() >= size) | |||
| im = im1.getWidth() < im2.getWidth() ? im1 : im2; | |||
| else if (im1.getWidth() >= size) | |||
| if (im1->getWidth() >= size && im2->getWidth() >= size) | |||
| im = im1->getWidth() < im2->getWidth() ? im1 : im2; | |||
| else if (im1->getWidth() >= size) | |||
| im = im1; | |||
| else if (im2.getWidth() >= size) | |||
| else if (im2->getWidth() >= size) | |||
| im = im2; | |||
| else | |||
| return Image::null; | |||
| } | |||
| else | |||
| { | |||
| im = im1.isValid() ? im1 : im2; | |||
| im = im1 != nullptr ? im1 : im2; | |||
| } | |||
| if (returnNullIfNothingBigEnough && im.getWidth() < size && im.getHeight() < size) | |||
| return Image::null; | |||
| if (im == nullptr) | |||
| return Image(); | |||
| return rescaleImageForIcon (im, size); | |||
| if (returnNullIfNothingBigEnough && im->getWidth() < size && im->getHeight() < size) | |||
| return Image(); | |||
| return rescaleImageForIcon (*im, size); | |||
| } | |||
| Image ProjectExporter::rescaleImageForIcon (Image im, const int size) | |||
| Image ProjectExporter::rescaleImageForIcon (Drawable& d, const int size) | |||
| { | |||
| im = SoftwareImageType().convert (im); | |||
| if (DrawableImage* drawableImage = dynamic_cast<DrawableImage*> (&d)) | |||
| { | |||
| Image im = SoftwareImageType().convert (drawableImage->getImage()); | |||
| if (size == im.getWidth() && size == im.getHeight()) | |||
| return im; | |||
| if (size == im.getWidth() && size == im.getHeight()) | |||
| return im; | |||
| // (scale it down in stages for better resampling) | |||
| while (im.getWidth() > 2 * size && im.getHeight() > 2 * size) | |||
| im = im.rescaled (im.getWidth() / 2, | |||
| im.getHeight() / 2); | |||
| // (scale it down in stages for better resampling) | |||
| while (im.getWidth() > 2 * size && im.getHeight() > 2 * size) | |||
| im = im.rescaled (im.getWidth() / 2, | |||
| im.getHeight() / 2); | |||
| Image newIm (Image::ARGB, size, size, true, SoftwareImageType()); | |||
| Graphics g (newIm); | |||
| g.drawImageWithin (im, 0, 0, size, size, | |||
| RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, false); | |||
| return newIm; | |||
| Image newIm (Image::ARGB, size, size, true, SoftwareImageType()); | |||
| Graphics g (newIm); | |||
| g.drawImageWithin (im, 0, 0, size, size, | |||
| RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, false); | |||
| return newIm; | |||
| } | |||
| Image im (Image::ARGB, size, size, true, SoftwareImageType()); | |||
| Graphics g (im); | |||
| d.drawWithin (g, im.getBounds().toFloat(), RectanglePlacement::centred, 1.0f); | |||
| return im; | |||
| } | |||
| //============================================================================== | |||
| ProjectExporter::ConfigIterator::ConfigIterator (ProjectExporter& exporter_) | |||
| : index (-1), exporter (exporter_) | |||
| ProjectExporter::ConfigIterator::ConfigIterator (ProjectExporter& e) | |||
| : index (-1), exporter (e) | |||
| { | |||
| } | |||
| @@ -120,8 +120,8 @@ public: | |||
| Value getBigIconImageItemID() { return getSetting (Ids::bigIcon); } | |||
| Value getSmallIconImageItemID() { return getSetting (Ids::smallIcon); } | |||
| Image getBigIcon() const; | |||
| Image getSmallIcon() const; | |||
| Drawable* getBigIcon() const; | |||
| Drawable* getSmallIcon() const; | |||
| Image getBestIconForSize (int size, bool returnNullIfNothingBigEnough) const; | |||
| String getExporterIdentifierMacro() const | |||
| @@ -361,7 +361,7 @@ protected: | |||
| } | |||
| } | |||
| static Image rescaleImageForIcon (Image image, int iconSize); | |||
| static Image rescaleImageForIcon (Drawable&, int iconSize); | |||
| private: | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjectExporter) | |||
| @@ -520,10 +520,10 @@ Project::Item Project::Item::createCopy() { Item i (*this); i.state = i. | |||
| String Project::Item::getID() const { return state [Ids::ID]; } | |||
| void Project::Item::setID (const String& newID) { state.setProperty (Ids::ID, newID, nullptr); } | |||
| Image Project::Item::loadAsImageFile() const | |||
| Drawable* Project::Item::loadAsImageFile() const | |||
| { | |||
| return isValid() ? ImageCache::getFromFile (getFile()) | |||
| : Image::null; | |||
| return isValid() ? Drawable::createFromImageFile (getFile()) | |||
| : nullptr; | |||
| } | |||
| Project::Item Project::Item::createGroup (Project& project, const String& name, const String& uid) | |||
| @@ -538,7 +538,12 @@ Project::Item Project::Item::createGroup (Project& project, const String& name, | |||
| bool Project::Item::isFile() const { return state.hasType (Ids::FILE); } | |||
| bool Project::Item::isGroup() const { return state.hasType (Ids::GROUP) || isMainGroup(); } | |||
| bool Project::Item::isMainGroup() const { return state.hasType (Ids::MAINGROUP); } | |||
| bool Project::Item::isImageFile() const { return isFile() && ImageFileFormat::findImageFormatForFileExtension (getFile()) != nullptr; } | |||
| bool Project::Item::isImageFile() const | |||
| { | |||
| return isFile() && (ImageFileFormat::findImageFormatForFileExtension (getFile()) != nullptr | |||
| || getFile().hasFileExtension ("svg")); | |||
| } | |||
| Project::Item Project::Item::findItemWithID (const String& targetId) const | |||
| { | |||
| @@ -147,7 +147,7 @@ public: | |||
| Item findItemWithID (const String& targetId) const; // (recursive search) | |||
| String getImageFileID() const; | |||
| Image loadAsImageFile() const; | |||
| Drawable* loadAsImageFile() const; | |||
| //============================================================================== | |||
| Value getNameValue(); | |||
| @@ -188,12 +188,10 @@ struct Expression::Helpers | |||
| if (input != left && input != right) | |||
| return TermPtr(); | |||
| const Term* const dest = findDestinationFor (topLevelTerm, this); | |||
| if (dest == nullptr) | |||
| return new Constant (overallTarget, false); | |||
| if (const Term* const dest = findDestinationFor (topLevelTerm, this)) | |||
| return dest->createTermToEvaluateInput (scope, this, overallTarget, topLevelTerm); | |||
| return dest->createTermToEvaluateInput (scope, this, overallTarget, topLevelTerm); | |||
| return new Constant (overallTarget, false); | |||
| } | |||
| }; | |||
| @@ -101,7 +101,7 @@ public: | |||
| /** Selects the current set of mappings to be used by the system. | |||
| The object you pass in will be automatically deleted when no longer needed, so | |||
| don't keep a pointer to it. You can also pass in zero to remove the current | |||
| don't keep a pointer to it. You can also pass in nullptr to remove the current | |||
| mappings. | |||
| See also the TRANS() macro, which uses the current set to do its translation. | |||
| @@ -2288,7 +2288,10 @@ void Component::addComponentListener (ComponentListener* const newListener) | |||
| { | |||
| // if component methods are being called from threads other than the message | |||
| // thread, you'll need to use a MessageManagerLock object to make sure it's thread-safe. | |||
| CHECK_MESSAGE_MANAGER_IS_LOCKED | |||
| #if JUCE_DEBUG || JUCE_LOG_ASSERTIONS | |||
| if (getParentComponent() != nullptr) | |||
| CHECK_MESSAGE_MANAGER_IS_LOCKED; | |||
| #endif | |||
| componentListeners.add (newListener); | |||
| } | |||
| @@ -27,7 +27,7 @@ class MarkerListScope : public Expression::Scope | |||
| public: | |||
| MarkerListScope (Component& comp) : component (comp) {} | |||
| Expression getSymbolValue (const String& symbol) const | |||
| Expression getSymbolValue (const String& symbol) const override | |||
| { | |||
| switch (RelativeCoordinate::StandardStrings::getTypeOf (symbol)) | |||
| { | |||
| @@ -44,7 +44,7 @@ public: | |||
| return Expression::Scope::getSymbolValue (symbol); | |||
| } | |||
| void visitRelativeScope (const String& scopeName, Visitor& visitor) const | |||
| void visitRelativeScope (const String& scopeName, Visitor& visitor) const override | |||
| { | |||
| if (scopeName == RelativeCoordinate::Strings::parent) | |||
| { | |||
| @@ -58,7 +58,7 @@ public: | |||
| Expression::Scope::visitRelativeScope (scopeName, visitor); | |||
| } | |||
| String getScopeUID() const | |||
| String getScopeUID() const override | |||
| { | |||
| return String::toHexString ((pointer_sized_int) (void*) &component) + "m"; | |||
| } | |||
| @@ -150,12 +150,12 @@ Component* RelativeCoordinatePositionerBase::ComponentScope::findSiblingComponen | |||
| class RelativeCoordinatePositionerBase::DependencyFinderScope : public ComponentScope | |||
| { | |||
| public: | |||
| DependencyFinderScope (Component& comp, RelativeCoordinatePositionerBase& positioner_, bool& ok_) | |||
| : ComponentScope (comp), positioner (positioner_), ok (ok_) | |||
| DependencyFinderScope (Component& comp, RelativeCoordinatePositionerBase& p, bool& result) | |||
| : ComponentScope (comp), positioner (p), ok (result) | |||
| { | |||
| } | |||
| Expression getSymbolValue (const String& symbol) const | |||
| Expression getSymbolValue (const String& symbol) const override | |||
| { | |||
| switch (RelativeCoordinate::StandardStrings::getTypeOf (symbol)) | |||
| { | |||
| @@ -193,7 +193,7 @@ public: | |||
| return ComponentScope::getSymbolValue (symbol); | |||
| } | |||
| void visitRelativeScope (const String& scopeName, Visitor& visitor) const | |||
| void visitRelativeScope (const String& scopeName, Visitor& visitor) const override | |||
| { | |||
| if (Component* const targetComp = (scopeName == RelativeCoordinate::Strings::parent) | |||
| ? component.getParentComponent() | |||