95 return std::make_unique<LowLevelGraphicsSoftwareRenderer> (
Image (*
this));
118 std::unique_ptr<ImageType>
createType()
const override {
return std::make_unique<SoftwareImageType>(); }
149#if JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD
169 g->clipToRectangle (
area);
170 g->setOrigin (
area.getPosition());
191 g.drawImageAt (
Image (*
this), 0, 0);
217 if (validArea.isEmpty())
230 :
image (std::move (instance))
245 :
image (other.image)
256 :
image (std::move (other.image))
262 image = std::move (other.image);
282 if (
image !=
nullptr)
283 return image->createLowLevelContext();
296 if (
image !=
nullptr)
304 if (
image ==
nullptr || (
image->width == newWidth &&
image->height == newHeight))
311 g.setImageResamplingQuality (
quality);
313 (
float) newHeight / (
float)
image->height),
false);
319 if (
image ==
nullptr || newFormat ==
image->pixelFormat)
325 Image newImage (
type->create (newFormat,
w,
h,
false));
338 for (
int y = 0;
y <
h; ++
y)
343 for (
int x = 0;
x <
w; ++
x)
344 dst[
x] = src[
x].getAlpha();
353 for (
int y = 0;
y <
h; ++
y)
358 for (
int x = 0;
x <
w; ++
x)
368 g.drawImageAt (*
this, 0, 0);
440 auto col = colour.getPixelARGB();
455 if (
image !=
nullptr)
457 auto g =
image->createLowLevelContext();
458 g->setFill (colourToClearTo);
459 g->fillRect (area,
true);
492 reinterpret_cast<PixelARGB*
> (destData.
data)->multiplyAlpha (multiplier);
498template <
class PixelType>
501 template <
class PixelOperation>
504 for (
int y = 0;
y <
data.height; ++
y)
506 auto p =
data.getLinePointer (
y);
508 for (
int x = 0;
x <
data.width; ++
x)
510 pixelOp (*
reinterpret_cast<PixelType*
> (
p));
511 p +=
data.pixelStride;
517template <
class PixelOperation>
520 switch (
data.pixelFormat)
534 template <
class PixelType>
535 void operator() (PixelType& pixel)
const
537 pixel.multiplyAlpha (
alpha);
551 template <
class PixelType>
552 void operator() (PixelType& pixel)
const
583 for (
int x = 0;
x < srcData.
width; ++
x)
585 if (
reinterpret_cast<const PixelARGB*
> (lineData)->getAlpha() >= threshold)
593 for (
int x = 0;
x < srcData.
width; ++
x)
595 if (*lineData >= threshold)
665 auto lineSize = (size_t) destData.
pixelStride * (
size_t)
w;
672 memmove (dst + offset, src + offset, lineSize);
679 memmove (dst, src, lineSize);
688#if JUCE_ALLOW_STATIC_NULL_VARIABLES
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
#define nullptr
Definition DistrhoDefines.h:75
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
Definition juce_Colour.h:38
Definition juce_GraphicsContext.h:45
ResamplingQuality
Definition juce_GraphicsContext.h:462
Definition juce_HeapBlock.h:87
Definition juce_Image.h:310
int pixelStride
Definition juce_Image.h:355
int height
Definition juce_Image.h:356
ReadWriteMode
Definition juce_Image.h:313
@ writeOnly
Definition juce_Image.h:315
@ readOnly
Definition juce_Image.h:314
@ readWrite
Definition juce_Image.h:316
uint8 * getPixelPointer(int x, int y) const noexcept
Definition juce_Image.h:334
int lineStride
Definition juce_Image.h:354
uint8 * getLinePointer(int y) const noexcept
Definition juce_Image.h:328
void setPixelColour(int x, int y, Colour colour) const noexcept
Definition juce_Image.cpp:435
Colour getPixelColour(int x, int y) const noexcept
Definition juce_Image.cpp:417
BitmapData(Image &image, int x, int y, int w, int h, ReadWriteMode mode)
Definition juce_Image.cpp:380
int width
Definition juce_Image.h:356
PixelFormat pixelFormat
Definition juce_Image.h:353
~BitmapData()
Definition juce_Image.cpp:413
uint8 * data
Definition juce_Image.h:351
size_t size
Definition juce_Image.h:352
Definition juce_Image.h:58
int getWidth() const noexcept
Definition juce_Image.cpp:271
bool isRGB() const noexcept
Definition juce_Image.cpp:276
std::unique_ptr< LowLevelGraphicsContext > createLowLevelContext() const
Definition juce_Image.cpp:280
Image() noexcept
Definition juce_Image.cpp:225
void clear(const Rectangle< int > &area, Colour colourToClearTo=Colour(0x00000000))
Definition juce_Image.cpp:453
bool isARGB() const noexcept
Definition juce_Image.cpp:275
void desaturate()
Definition juce_Image.cpp:558
bool hasAlphaChannel() const noexcept
Definition juce_Image.cpp:278
~Image()
Definition juce_Image.cpp:266
Colour getPixelAt(int x, int y) const
Definition juce_Image.cpp:464
PixelFormat getFormat() const noexcept
Definition juce_Image.cpp:274
void moveImageSection(int destX, int destY, int sourceX, int sourceY, int width, int height)
Definition juce_Image.cpp:617
Image getClippedImage(const Rectangle< int > &area) const
Definition juce_Image.cpp:210
void multiplyAllAlphas(float amountToMultiplyBy)
Definition juce_Image.cpp:541
ReferenceCountedObjectPtr< ImagePixelData > image
Definition juce_Image.h:426
int getHeight() const noexcept
Definition juce_Image.cpp:272
Rectangle< int > getBounds() const noexcept
Definition juce_Image.cpp:273
void multiplyAlphaAt(int x, int y, float multiplier)
Definition juce_Image.cpp:484
void setPixelAt(int x, int y, Colour colour)
Definition juce_Image.cpp:475
void createSolidAreaMask(RectangleList< int > &result, float alphaThreshold) const
Definition juce_Image.cpp:567
Image convertedToFormat(PixelFormat newFormat) const
Definition juce_Image.cpp:317
ImagePixelData * getPixelData() const noexcept
Definition juce_Image.h:412
bool isSingleChannel() const noexcept
Definition juce_Image.cpp:277
bool isNull() const noexcept
Definition juce_Image.h:155
Image rescaled(int newWidth, int newHeight, Graphics::ResamplingQuality quality=Graphics::mediumResamplingQuality) const
Definition juce_Image.cpp:302
void duplicateIfShared()
Definition juce_Image.cpp:288
Image createCopy() const
Definition juce_Image.cpp:294
NamedValueSet * getProperties() const
Definition juce_Image.cpp:374
PixelFormat
Definition juce_Image.h:64
@ SingleChannel
Definition juce_Image.h:68
@ UnknownFormat
Definition juce_Image.h:65
@ ARGB
Definition juce_Image.h:67
@ RGB
Definition juce_Image.h:66
int getReferenceCount() const noexcept
Definition juce_Image.cpp:270
ListenerList< Listener > listeners
Definition juce_Image.h:486
~ImagePixelData() override
Definition juce_Image.cpp:36
const int width
Definition juce_Image.h:469
virtual void initialiseBitmapData(Image::BitmapData &, int x, int y, Image::BitmapData::ReadWriteMode)=0
ImagePixelData(Image::PixelFormat, int width, int height)
Definition juce_Image.cpp:29
virtual std::unique_ptr< ImageType > createType() const =0
void sendDataChangeMessage()
Definition juce_Image.cpp:41
ReferenceCountedObjectPtr< ImagePixelData > Ptr
Definition juce_Image.h:451
virtual int getSharedCount() const noexcept
Definition juce_Image.cpp:46
const int height
Definition juce_Image.h:469
const Image::PixelFormat pixelFormat
Definition juce_Image.h:468
Definition juce_Image.h:504
virtual ~ImageType()
Definition juce_Image.cpp:53
virtual ImagePixelData::Ptr create(Image::PixelFormat, int width, int height, bool shouldClearImage) const =0
ImageType()
Definition juce_Image.cpp:52
virtual Image convert(const Image &source) const
Definition juce_Image.cpp:55
virtual int getTypeID() const =0
Definition juce_NamedValueSet.h:35
Definition juce_Image.h:548
ImagePixelData::Ptr create(Image::PixelFormat, int width, int height, bool clearImage) const override
NativeImageType()
Definition juce_Image.cpp:141
~NativeImageType() override
Definition juce_Image.cpp:142
int getTypeID() const override
Definition juce_Image.cpp:144
Definition juce_PixelFormats.h:59
Definition juce_PixelFormats.h:600
Definition juce_PixelFormats.h:354
Definition juce_Range.h:40
Definition juce_Rectangle.h:67
bool contains(ValueType xCoord, ValueType yCoord) const noexcept
Definition juce_Rectangle.h:622
Rectangle getIntersection(Rectangle other) const noexcept
Definition juce_Rectangle.h:664
Definition juce_RectangleList.h:43
int getReferenceCount() const noexcept
Definition juce_ReferenceCountedObject.h:101
Definition juce_ReferenceCountedObject.h:247
ImagePixelData::Ptr create(Image::PixelFormat, int width, int height, bool clearImage) const override
Definition juce_Image.cpp:130
~SoftwareImageType() override
Definition juce_Image.cpp:128
int getTypeID() const override
Definition juce_Image.cpp:135
SoftwareImageType()
Definition juce_Image.cpp:127
Definition juce_Image.cpp:82
const int pixelStride
Definition juce_Image.cpp:122
HeapBlock< uint8 > imageData
Definition juce_Image.cpp:121
SoftwarePixelData(Image::PixelFormat formatToUse, int w, int h, bool clearImage)
Definition juce_Image.cpp:84
std::unique_ptr< ImageType > createType() const override
Definition juce_Image.cpp:118
std::unique_ptr< LowLevelGraphicsContext > createLowLevelContext() override
Definition juce_Image.cpp:92
void initialiseBitmapData(Image::BitmapData &bitmap, int x, int y, Image::BitmapData::ReadWriteMode mode) override
Definition juce_Image.cpp:98
ImagePixelData::Ptr clone() override
Definition juce_Image.cpp:111
const int lineStride
Definition juce_Image.cpp:122
Definition juce_SparseSet.h:41
Range< Type > getRange(int rangeIndex) const noexcept
Definition juce_SparseSet.h:125
void clear()
Definition juce_SparseSet.h:54
void addRange(Range< Type > range)
Definition juce_SparseSet.h:143
int getNumRanges() const noexcept
Definition juce_SparseSet.h:118
Definition juce_Image.cpp:158
void initialiseBitmapData(Image::BitmapData &bitmap, int x, int y, Image::BitmapData::ReadWriteMode mode) override
Definition juce_Image.cpp:174
const Rectangle< int > area
Definition juce_Image.cpp:205
std::unique_ptr< ImageType > createType() const override
Definition juce_Image.cpp:197
friend class Image
Definition juce_Image.cpp:203
int getSharedCount() const noexcept override
Definition juce_Image.cpp:200
const ImagePixelData::Ptr sourceImage
Definition juce_Image.cpp:204
std::unique_ptr< LowLevelGraphicsContext > createLowLevelContext() override
Definition juce_Image.cpp:166
SubsectionPixelData(ImagePixelData::Ptr source, Rectangle< int > r)
Definition juce_Image.cpp:160
ImagePixelData::Ptr clone() override
Definition juce_Image.cpp:182
UINT_D64 w
Definition inflate.c:942
int * l
Definition inflate.c:1579
int y
Definition inflate.c:1588
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned x[BMAX+1]
Definition inflate.c:1586
static int int minY
Definition pugl.h:1627
static int minX
Definition pugl.h:1626
static int int height
Definition pugl.h:1594
static int int int int maxY
Definition pugl.h:1630
static int width
Definition pugl.h:1593
static int int int maxX
Definition pugl.h:1628
JSAMPIMAGE data
Definition jpeglib.h:945
int quality
Definition jpeglib.h:919
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
Definition juce_CompilerWarnings.h:198
#define JUCE_END_IGNORE_WARNINGS_MSVC
Definition juce_CompilerWarnings.h:199
#define JUCE_LEAK_DETECTOR(OwnerClass)
Definition juce_LeakedObjectDetector.h:138
const Colour black
Definition juce_Colours.h:50
Definition carla_juce.cpp:31
constexpr Type jmax(Type a, Type b)
Definition juce_MathsFunctions.h:94
Type jlimit(Type lowerLimit, Type upperLimit, Type valueToConstrain) noexcept
Definition juce_MathsFunctions.h:262
static void performPixelOp(const Image::BitmapData &data, const PixelOperation &pixelOp)
Definition juce_Image.cpp:518
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
unsigned char uint8
Definition juce_MathsFunctions.h:37
int roundToInt(const FloatType value) noexcept
Definition juce_MathsFunctions.h:465
Definition juce_Uuid.h:141
png_structrp int mode
Definition png.h:1139
Definition juce_Image.cpp:531
float alpha
Definition juce_Image.cpp:532
Definition juce_Image.cpp:550
Definition juce_Image.h:479
Definition juce_Image.cpp:500
static void iterate(const Image::BitmapData &data, const PixelOperation &pixelOp)
Definition juce_Image.cpp:502
uch * p
Definition crypt.c:594
memcpy(hh, h, RAND_HEAD_LEN)
int r
Definition crypt.c:458
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
int result
Definition process.c:1455
dy
Definition zipinfo.c:2288
_WDL_CSTRING_PREFIX void INT_PTR const char * format
Definition wdlcstring.h:263
#define const
Definition zconf.h:137