Skip to content
This repository has been archived by the owner on Feb 8, 2025. It is now read-only.

#299 Juce compiling error on ubuntu - fixed. #306

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 2 additions & 23 deletions JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,23 +107,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.

Expand Down Expand Up @@ -342,9 +328,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
Expand Down Expand Up @@ -433,10 +416,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.

Expand Down
48 changes: 2 additions & 46 deletions JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -690,43 +681,8 @@ 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<const int*> (filler);

while (width > 8 && (((pointer_sized_int) dest) & 7) != 0)
{
dest->set (colour);
++dest;
--width;
}

while (width > 4)
{
auto 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))
Expand Down