diff --git a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h index 4b1ba87d..e5437730 100644 --- a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h +++ b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h @@ -107,22 +107,9 @@ public: //============================================================================== forcedinline uint8 getAlpha() const noexcept { return components.a; } - forcedinline uint8 getRed() const noexcept { return components.r; } + forcedinline uint8 getRed() const noexcept { return components.r; } forcedinline uint8 getGreen() const noexcept { return components.g; } - forcedinline uint8 getBlue() const noexcept { return components.b; } - - #if JUCE_GCC - // NB these are here as a workaround because GCC refuses to bind to packed values. - forcedinline uint8& getAlpha() noexcept { return comps [indexA]; } - forcedinline uint8& getRed() noexcept { return comps [indexR]; } - forcedinline uint8& getGreen() noexcept { return comps [indexG]; } - forcedinline uint8& getBlue() noexcept { return comps [indexB]; } - #else - forcedinline uint8& getAlpha() noexcept { return components.a; } - forcedinline uint8& getRed() noexcept { return components.r; } - forcedinline uint8& getGreen() noexcept { return components.g; } - forcedinline uint8& getBlue() noexcept { return components.b; } - #endif + forcedinline uint8 getBlue() const noexcept { return components.b; } //============================================================================== /** Copies another pixel colour over this one. @@ -342,9 +329,6 @@ private: { uint32 internal; Components components; - #if JUCE_GCC - uint8 comps[4]; // helper struct needed because gcc does not allow references to packed union members - #endif }; } #ifndef DOXYGEN @@ -429,13 +413,9 @@ public: //============================================================================== forcedinline uint8 getAlpha() const noexcept { return 0xff; } - forcedinline uint8 getRed() const noexcept { return r; } + forcedinline uint8 getRed() const noexcept { return r; } forcedinline uint8 getGreen() const noexcept { return g; } - forcedinline uint8 getBlue() const noexcept { return b; } - - forcedinline uint8& getRed() noexcept { return r; } - forcedinline uint8& getGreen() noexcept { return g; } - forcedinline uint8& getBlue() noexcept { return b; } + forcedinline uint8 getBlue() const noexcept { return b; } //============================================================================== /** Copies another pixel colour over this one. @@ -652,11 +632,9 @@ public: //============================================================================== forcedinline uint8 getAlpha() const noexcept { return a; } - forcedinline uint8& getAlpha() noexcept { return a; } - - forcedinline uint8 getRed() const noexcept { return 0; } + forcedinline uint8 getRed() const noexcept { return 0; } forcedinline uint8 getGreen() const noexcept { return 0; } - forcedinline uint8 getBlue() const noexcept { return 0; } + forcedinline uint8 getBlue() const noexcept { return 0; } //============================================================================== /** Copies another pixel colour over this one. diff --git a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h index 9ac3ae20..1863ca89 100644 --- a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h +++ b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h @@ -582,18 +582,10 @@ namespace EdgeTableFillers : destData (image), sourceColour (colour) { if (sizeof (PixelType) == 3 && destData.pixelStride == sizeof (PixelType)) - { areRGBComponentsEqual = sourceColour.getRed() == sourceColour.getGreen() && sourceColour.getGreen() == sourceColour.getBlue(); - filler[0].set (sourceColour); - filler[1].set (sourceColour); - filler[2].set (sourceColour); - filler[3].set (sourceColour); - } else - { areRGBComponentsEqual = false; - } } forcedinline void setEdgeTableYPos (int y) noexcept @@ -675,7 +667,6 @@ namespace EdgeTableFillers const Image::BitmapData& destData; PixelType* linePixels; PixelARGB sourceColour; - PixelRGB filler[4]; bool areRGBComponentsEqual; forcedinline PixelType* getPixel (int x) const noexcept @@ -690,46 +681,11 @@ namespace EdgeTableFillers forcedinline void replaceLine (PixelRGB* dest, PixelARGB colour, int width) const noexcept { - if (destData.pixelStride == sizeof (*dest)) - { - if (areRGBComponentsEqual) // if all the component values are the same, we can cheat.. - { - memset (dest, colour.getRed(), (size_t) width * 3); - } - else - { - if (width >> 5) - { - auto intFiller = reinterpret_cast (filler); - - while (width > 8 && (((pointer_sized_int) dest) & 7) != 0) - { - dest->set (colour); - ++dest; - --width; - } - - while (width > 4) - { - auto d = reinterpret_cast (dest); - *d++ = intFiller[0]; - *d++ = intFiller[1]; - *d++ = intFiller[2]; - dest = reinterpret_cast (d); - width -= 4; - } - } - - while (--width >= 0) - { - dest->set (colour); - ++dest; - } - } - } + if ((size_t) destData.pixelStride == sizeof (*dest) && areRGBComponentsEqual) + memset ((void*) dest, colour.getRed(), (size_t) width * 3); // if all the component values are the same, we can cheat.. else { - JUCE_PERFORM_PIXEL_OP_LOOP (set (colour)) + JUCE_PERFORM_PIXEL_OP_LOOP (set (colour)); } }