136 lines
6 KiB
Diff
136 lines
6 KiB
Diff
commit fa0e4ef1c4969ac1f6c54d306e66b27a31da5b87
|
|
Author: q66 <daniel@octaforge.org>
|
|
Date: Mon Dec 23 18:23:28 2019 +0100
|
|
|
|
fix build with gcc9
|
|
|
|
Adapted from upstream.
|
|
|
|
diff --git JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
index 0df5987..ea2e990 100644
|
|
--- JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
+++ JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
@@ -108,19 +108,6 @@ public:
|
|
forcedinline uint8 getGreen() const noexcept { return components.g; }
|
|
forcedinline uint8 getBlue() const noexcept { return components.b; }
|
|
|
|
- #if JUCE_GCC && ! JUCE_CLANG
|
|
- // 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
|
|
-
|
|
//==============================================================================
|
|
/** Copies another pixel colour over this one.
|
|
|
|
@@ -339,9 +326,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
|
|
@@ -428,10 +412,6 @@ public:
|
|
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; }
|
|
-
|
|
//==============================================================================
|
|
/** Copies another pixel colour over this one.
|
|
|
|
@@ -645,7 +625,6 @@ public:
|
|
|
|
//==============================================================================
|
|
forcedinline uint8 getAlpha() const noexcept { return a; }
|
|
- forcedinline uint8& getAlpha() noexcept { return a; }
|
|
|
|
forcedinline uint8 getRed() const noexcept { return 0; }
|
|
forcedinline uint8 getGreen() const noexcept { return 0; }
|
|
diff --git JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h
|
|
index cd8cd36..87bf33e 100644
|
|
--- JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h
|
|
+++ JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h
|
|
@@ -583,10 +583,6 @@ namespace EdgeTableFillers
|
|
{
|
|
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
|
|
{
|
|
@@ -642,7 +638,6 @@ namespace EdgeTableFillers
|
|
const Image::BitmapData& destData;
|
|
PixelType* linePixels;
|
|
PixelARGB sourceColour;
|
|
- PixelRGB filler [4];
|
|
bool areRGBComponentsEqual;
|
|
|
|
forcedinline PixelType* getPixel (const int x) const noexcept
|
|
@@ -657,47 +652,10 @@ namespace EdgeTableFillers
|
|
|
|
forcedinline void replaceLine (PixelRGB* dest, const 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)
|
|
- {
|
|
- const int* const intFiller = reinterpret_cast<const int*> (filler);
|
|
-
|
|
- while (width > 8 && (((pointer_sized_int) dest) & 7) != 0)
|
|
- {
|
|
- dest->set (colour);
|
|
- ++dest;
|
|
- --width;
|
|
- }
|
|
-
|
|
- while (width > 4)
|
|
- {
|
|
- int* d = reinterpret_cast<int*> (dest);
|
|
- *d++ = intFiller[0];
|
|
- *d++ = intFiller[1];
|
|
- *d++ = intFiller[2];
|
|
- dest = reinterpret_cast<PixelRGB*> (d);
|
|
- width -= 4;
|
|
- }
|
|
- }
|
|
-
|
|
- while (--width >= 0)
|
|
- {
|
|
- dest->set (colour);
|
|
- ++dest;
|
|
- }
|
|
- }
|
|
- }
|
|
- else
|
|
- {
|
|
- JUCE_PERFORM_PIXEL_OP_LOOP (set (colour))
|
|
- }
|
|
+ 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));
|
|
}
|
|
|
|
forcedinline void replaceLine (PixelAlpha* dest, const PixelARGB colour, int width) const noexcept
|