Class PixelBuffer<T extends Buffer>
- Type Parameters:
-
T- the type ofBufferthat stores the pixel data. OnlyByteBufferandIntBufferare supported.
public class PixelBuffer<T extends Buffer> extends Object
PixelBuffer class represents pixel data that is constructed from a java.nio.Buffer supplied by the application. A WritableImage can use this PixelBuffer directly without copying the pixel data. This PixelBuffer can be shared among multiple WritableImages. Pixel data should be stored either in an IntBuffer using a PixelFormat of type INT_ARGB_PRE or in a ByteBuffer using a PixelFormat of type BYTE_BGRA_PRE. When the Buffer is updated using the PixelBuffer.updateBuffer method, all WritableImages that were created using this PixelBuffer are redrawn. Example code that shows how to create a PixelBuffer:
// Creating a PixelBuffer using BYTE_BGRA_PRE pixel format.
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(width * height * 4);
PixelFormat<ByteBuffer> pixelFormat = PixelFormat.getByteBgraPreInstance();
PixelBuffer<ByteBuffer> pixelBuffer = new PixelBuffer<>(width, height, byteBuffer, pixelFormat);
Image img = new WritableImage(pixelBuffer);
// Creating a PixelBuffer using INT_ARGB_PRE pixel format.
IntBuffer intBuffer = IntBuffer.allocate(width * height);
PixelFormat<IntBuffer> pixelFormat = PixelFormat.getIntArgbPreInstance();
PixelBuffer<IntBuffer> pixelBuffer = new PixelBuffer<>(width, height, intBuffer, pixelFormat);
Image img = new WritableImage(pixelBuffer);
- Since:
- 13
- See Also:
Constructor Summary
| Constructor | Description |
|---|---|
PixelBuffer |
Constructs a PixelBuffer using the specified Buffer and PixelFormat. |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
T |
getBuffer() |
Returns the buffer of this PixelBuffer. |
int |
getHeight() |
Returns the height of this PixelBuffer. |
PixelFormat<T> |
getPixelFormat() |
Returns the PixelFormat of this PixelBuffer. |
int |
getWidth() |
Returns the width of this PixelBuffer. |
void |
updateBuffer |
Invokes the specified Callback method and updates the dirty region of all WritableImages that were created using this PixelBuffer. |
Constructor Details
PixelBuffer
public PixelBuffer(int width, int height, T buffer, PixelFormat<T> pixelFormat)
PixelBuffer using the specified Buffer and PixelFormat. The type of the specified PixelFormat must be either PixelFormat.Type.INT_ARGB_PRE or PixelFormat.Type.BYTE_BGRA_PRE. The constructor does not allocate memory to store the pixel data. The application must provide a buffer with sufficient memory for the combination of dimensions (width, height) and the type of PixelFormat. The PixelFormat.Type.INT_ARGB_PRE requires an IntBuffer with minimum capacity of width * height, and the PixelFormat.Type.BYTE_BGRA_PRE requires a ByteBuffer with minimum capacity of width * height * 4.
- Parameters:
-
width- width in pixels of thisPixelBuffer -
height- height in pixels of thisPixelBuffer -
buffer- the buffer that stores the pixel data -
pixelFormat- the format of pixels in thebuffer - Throws:
-
IllegalArgumentException- if eitherwidthorheightis negative or zero, or if the type ofpixelFormatis unsupported, or ifbufferdoes not have sufficient memory, or if the type ofbufferandpixelFormatdo not match -
NullPointerException- ifbufferorpixelFormatisnull
Method Details
getBuffer
public T getBuffer()
buffer of this PixelBuffer.- Returns:
- the
bufferof thisPixelBuffer
getWidth
public int getWidth()
width of this PixelBuffer.- Returns:
- the
widthof thisPixelBuffer
getHeight
public int getHeight()
height of this PixelBuffer.- Returns:
- the
heightof thisPixelBuffer
getPixelFormat
public PixelFormat<T> getPixelFormat()
PixelFormat of this PixelBuffer.- Returns:
- the
PixelFormatof thisPixelBuffer
updateBuffer
public void updateBuffer(Callback<PixelBuffer<T>,Rectangle2D> callback)
Callback method and updates the dirty region of all WritableImages that were created using this PixelBuffer. The Callback method is expected to update the buffer and return a Rectangle2D that encloses the dirty region, or return null to indicate that the entire buffer is dirty. This method must be called on the JavaFX Application Thread.
Example code that shows how to use this method:
Callback<PixelBuffer<ByteBuffer>, Rectangle2D> callback = pixelBuffer -> {
ByteBuffer buffer = pixelBuffer.getBuffer();
// Update the buffer.
return new Rectangle2D(x, y, dirtyWidth, dirtyHeight);
};
pixelBuffer.updateBuffer(callback);
- Parameters:
-
callback- theCallbackmethod that updates the buffer - Throws:
-
IllegalStateException- if this method is called on a thread other than the JavaFX Application Thread. -
NullPointerException- ifcallbackisnull
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.