123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- From cb611a80bd5a36d31bfc31212ebbf79aa86c6f08 Mon Sep 17 00:00:00 2001
- From: jikstra <jikstra@disroot.org>
- Date: Tue, 20 Aug 2019 03:00:51 +0200
- Subject: [PATCH] Backport
- https://github.com/WeAreROLI/JUCE/commit/4e0adb2af8b424c43d22bd431011c9a6c57d36b6
- to the bundled JUCE framework to make helm compile on gcc 9.1 again
- ---
- .../juce_graphics/colour/juce_PixelFormats.h | 25 +---------
- .../native/juce_RenderingHelpers.h | 48 +------------------
- 2 files changed, 4 insertions(+), 69 deletions(-)
- diff --git a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
- index 9be9ba09c..3535eab80 100644
- --- a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
- +++ b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
- @@ -105,23 +105,9 @@ class JUCE_API PixelARGB
-
- //==============================================================================
- 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.
-
- @@ -340,9 +326,6 @@ class JUCE_API PixelARGB
- {
- 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,10 +412,6 @@ class JUCE_API PixelRGB
- 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.
-
- diff --git a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
- index 1c4cd31ef..29519cb5a 100644
- --- a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
- +++ b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
- @@ -581,18 +581,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 (const int y) noexcept
- @@ -643,7 +635,6 @@ namespace EdgeTableFillers
- const Image::BitmapData& destData;
- PixelType* linePixels;
- PixelARGB sourceColour;
- - PixelRGB filler [4];
- bool areRGBComponentsEqual;
-
- forcedinline PixelType* getPixel (const int x) const noexcept
- @@ -658,43 +649,8 @@ 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;
- - }
- - }
- - }
- + 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))
|