JUCE v8.0.9
JUCE API
 
Loading...
Searching...
No Matches
juce::ImagePixelData Class Referenceabstract

This is a base class for holding image data in implementation-specific ways. More...

#include <juce_Image.h>

Inheritance diagram for juce::ImagePixelData:
Collaboration diagram for juce::ImagePixelData:

Classes

struct  Listener
 Used to receive callbacks for image data changes. More...
 

Public Types

using BackupExtensions = ImagePixelDataBackupExtensions
 
using NativeExtensions = ImagePixelDataNativeExtensions
 
using Ptr = ReferenceCountedObjectPtr< ImagePixelData >
 

Public Member Functions

 ImagePixelData (Image::PixelFormat, int width, int height)
 
 ~ImagePixelData () override
 
void applyGaussianBlurEffect (float radius)
 
virtual void applyGaussianBlurEffectInArea (Rectangle< int > bounds, float radius)
 Applies a native blur effect to this image, if available.
 
void applySingleChannelBoxBlurEffect (int radius)
 
virtual void applySingleChannelBoxBlurEffectInArea (Rectangle< int > bounds, int radius)
 Applies a native blur effect to this image, if available.
 
virtual Ptr clone ()=0
 Creates a copy of this image.
 
virtual std::unique_ptr< LowLevelGraphicsContextcreateLowLevelContext ()=0
 Creates a context that will draw into this image.
 
virtual std::unique_ptr< ImageTypecreateType () const =0
 Creates an instance of the type of this image.
 
void decReferenceCount () noexcept
 Decreases the object's reference count.
 
bool decReferenceCountWithoutDeleting () noexcept
 Decreases the object's reference count.
 
void desaturate ()
 
virtual void desaturateInArea (Rectangle< int > bounds)
 Changes all the colours to be shades of grey, based on their current luminosity.
 
virtual BackupExtensionsgetBackupExtensions ()
 Returns a raw pointer to an instance of ImagePixelDataBackupExtensions if this ImagePixelData provides this extension, or nullptr otherwise.
 
virtual const BackupExtensionsgetBackupExtensions () const
 
virtual NativeExtensions getNativeExtensions ()
 
int getReferenceCount () const noexcept
 Returns the object's current reference count.
 
virtual int getSharedCount () const noexcept
 Returns the number of Image objects which are currently referring to the same internal shared image data.
 
void incReferenceCount () noexcept
 Increments the object's reference count.
 
virtual void initialiseBitmapData (Image::BitmapData &, int x, int y, Image::BitmapData::ReadWriteMode)=0
 Initialises a BitmapData object.
 
void moveImageSection (Point< int > destTopLeft, Rectangle< int > sourceRect)
 Copies a section of the image to somewhere else within itself.
 
void multiplyAllAlphas (float amount)
 
virtual void multiplyAllAlphasInArea (Rectangle< int > bounds, float amount)
 Multiples all alpha-channel values in the image by the specified amount.
 
void sendDataChangeMessage ()
 

Public Attributes

const int height
 
ListenerList< Listenerlisteners
 
const Image::PixelFormat pixelFormat
 The pixel format of the image data.
 
NamedValueSet userData
 User-defined settings that are attached to this image.
 
const int width
 

Protected Member Functions

void resetReferenceCount () noexcept
 Resets the reference count to zero without deleting the object.
 

Private Member Functions

virtual void moveValidatedImageSection (Point< int > destTopLeft, Rectangle< int > sourceRect)
 

Private Attributes

Atomic< int > refCount { 0 }
 

Detailed Description

This is a base class for holding image data in implementation-specific ways.

You may never need to use this class directly - it's used internally by the Image class to store the actual image data. To access pixel data directly, you should use Image::BitmapData rather than this class.

ImagePixelData objects are created indirectly, by subclasses of ImageType.

See also
Image, ImageType

@tags{Graphics}

Member Typedef Documentation

◆ BackupExtensions

◆ NativeExtensions

◆ Ptr

Constructor & Destructor Documentation

◆ ImagePixelData()

juce::ImagePixelData::ImagePixelData ( Image::PixelFormat  ,
int  width,
int  height 
)

◆ ~ImagePixelData()

juce::ImagePixelData::~ImagePixelData ( )
override

Member Function Documentation

◆ applyGaussianBlurEffect()

void juce::ImagePixelData::applyGaussianBlurEffect ( float  radius)
inline

◆ applyGaussianBlurEffectInArea()

virtual void juce::ImagePixelData::applyGaussianBlurEffectInArea ( Rectangle< int >  bounds,
float  radius 
)
virtual

Applies a native blur effect to this image, if available.

This blur applies to all channels of the input image. It may be more expensive to calculate than a box blur, but should produce higher-quality results.

The default implementation will modify the image pixel-by-pixel on the CPU, which will be slow. Native image types may provide optimised implementations.

Reimplemented in juce::Direct2DPixelData.

◆ applySingleChannelBoxBlurEffect()

void juce::ImagePixelData::applySingleChannelBoxBlurEffect ( int  radius)
inline

◆ applySingleChannelBoxBlurEffectInArea()

virtual void juce::ImagePixelData::applySingleChannelBoxBlurEffectInArea ( Rectangle< int >  bounds,
int  radius 
)
virtual

Applies a native blur effect to this image, if available.

This is intended for blurring single-channel images, which is useful when rendering drop shadows. This is implemented as several box-blurs in series. The results should be visually similar to a Gaussian blur, but less accurate.

The default implementation will modify the image pixel-by-pixel on the CPU, which will be slow. Native image types may provide optimised implementations.

Reimplemented in juce::Direct2DPixelData.

◆ clone()

virtual Ptr juce::ImagePixelData::clone ( )
pure virtual

Creates a copy of this image.

Implemented in juce::Direct2DPixelData.

◆ createLowLevelContext()

virtual std::unique_ptr< LowLevelGraphicsContext > juce::ImagePixelData::createLowLevelContext ( )
pure virtual

Creates a context that will draw into this image.

Implemented in juce::Direct2DPixelData.

Referenced by juce::RenderingHelpers::SoftwareRendererSavedState::beginTransparencyLayer().

◆ createType()

virtual std::unique_ptr< ImageType > juce::ImagePixelData::createType ( ) const
pure virtual

Creates an instance of the type of this image.

Implemented in juce::Direct2DPixelData.

◆ decReferenceCount()

void juce::ReferenceCountedObject::decReferenceCount ( )
inlinenoexceptinherited

Decreases the object's reference count.

If the count gets to zero, the object will be deleted.

References jassert.

◆ decReferenceCountWithoutDeleting()

bool juce::ReferenceCountedObject::decReferenceCountWithoutDeleting ( )
inlinenoexceptinherited

Decreases the object's reference count.

If the count gets to zero, the object will not be deleted, but this method will return true, allowing the caller to take care of deletion.

References jassert.

◆ desaturate()

void juce::ImagePixelData::desaturate ( )
inline

◆ desaturateInArea()

virtual void juce::ImagePixelData::desaturateInArea ( Rectangle< int >  bounds)
virtual

Changes all the colours to be shades of grey, based on their current luminosity.

The default implementation will modify the image pixel-by-pixel on the CPU, which will be slow. Native image types may provide optimised implementations.

Reimplemented in juce::Direct2DPixelData.

◆ getBackupExtensions() [1/2]

virtual BackupExtensions * juce::ImagePixelData::getBackupExtensions ( )
inlinevirtual

Returns a raw pointer to an instance of ImagePixelDataBackupExtensions if this ImagePixelData provides this extension, or nullptr otherwise.

Reimplemented in juce::Direct2DPixelData.

◆ getBackupExtensions() [2/2]

virtual const BackupExtensions * juce::ImagePixelData::getBackupExtensions ( ) const
inlinevirtual

Reimplemented in juce::Direct2DPixelData.

◆ getNativeExtensions()

virtual NativeExtensions juce::ImagePixelData::getNativeExtensions ( )
virtual

intentionally not callable from user code

Reimplemented in juce::Direct2DPixelData.

◆ getReferenceCount()

int juce::ReferenceCountedObject::getReferenceCount ( ) const
inlinenoexceptinherited

Returns the object's current reference count.

◆ getSharedCount()

virtual int juce::ImagePixelData::getSharedCount ( ) const
virtualnoexcept

Returns the number of Image objects which are currently referring to the same internal shared image data.

This is different to the reference count as an instance of ImagePixelData can internally depend on another ImagePixelData via it's member variables.

◆ incReferenceCount()

void juce::ReferenceCountedObject::incReferenceCount ( )
inlinenoexceptinherited

Increments the object's reference count.

This is done automatically by the smart pointer, but is public just in case it's needed for nefarious purposes.

◆ initialiseBitmapData()

virtual void juce::ImagePixelData::initialiseBitmapData ( Image::BitmapData ,
int  x,
int  y,
Image::BitmapData::ReadWriteMode   
)
pure virtual

Initialises a BitmapData object.

Implemented in juce::Direct2DPixelData.

◆ moveImageSection()

void juce::ImagePixelData::moveImageSection ( Point< int >  destTopLeft,
Rectangle< int >  sourceRect 
)

Copies a section of the image to somewhere else within itself.

◆ moveValidatedImageSection()

virtual void juce::ImagePixelData::moveValidatedImageSection ( Point< int >  destTopLeft,
Rectangle< int >  sourceRect 
)
privatevirtual

Reimplemented in juce::Direct2DPixelData.

◆ multiplyAllAlphas()

void juce::ImagePixelData::multiplyAllAlphas ( float  amount)
inline

◆ multiplyAllAlphasInArea()

virtual void juce::ImagePixelData::multiplyAllAlphasInArea ( Rectangle< int >  bounds,
float  amount 
)
virtual

Multiples all alpha-channel values in the image by the specified amount.

The default implementation will modify the image pixel-by-pixel on the CPU, which will be slow. Native image types may provide optimised implementations.

Reimplemented in juce::Direct2DPixelData.

◆ resetReferenceCount()

void juce::ReferenceCountedObject::resetReferenceCount ( )
inlineprotectednoexceptinherited

Resets the reference count to zero without deleting the object.

You should probably never need to use this!

◆ sendDataChangeMessage()

void juce::ImagePixelData::sendDataChangeMessage ( )

Member Data Documentation

◆ height

const int juce::ImagePixelData::height

◆ listeners

ListenerList<Listener> juce::ImagePixelData::listeners

◆ pixelFormat

const Image::PixelFormat juce::ImagePixelData::pixelFormat

The pixel format of the image data.

◆ refCount

Atomic<int> juce::ReferenceCountedObject::refCount { 0 }
privateinherited

◆ userData

NamedValueSet juce::ImagePixelData::userData

User-defined settings that are attached to this image.

See also
Image::getProperties().

◆ width

const int juce::ImagePixelData::width

The documentation for this class was generated from the following file: