Struct gdk_pixbuf::Pixbuf
source · #[repr(transparent)]pub struct Pixbuf { /* private fields */ }
Expand description
A pixel buffer.
Pixbuf
contains information about an image’s pixel data,
its color space, bits per sample, width and height, and the
rowstride (the number of bytes between the start of one row
and the start of the next).
Creating new Pixbuf
The most basic way to create a pixbuf is to wrap an existing pixel
buffer with a Pixbuf
instance. You can use the
[ctor@GdkPixbuf.Pixbuf.new_from_data
] function to do this.
Every time you create a new Pixbuf
instance for some data, you
will need to specify the destroy notification function that will be
called when the data buffer needs to be freed; this will happen when
a Pixbuf
is finalized by the reference counting functions. If
you have a chunk of static data compiled into your application, you
can pass in NULL
as the destroy notification function so that the
data will not be freed.
The [ctor@GdkPixbuf.Pixbuf.new
] constructor function can be used
as a convenience to create a pixbuf with an empty buffer; this is
equivalent to allocating a data buffer using malloc()
and then
wrapping it with gdk_pixbuf_new_from_data()
. The gdk_pixbuf_new()
function will compute an optimal rowstride so that rendering can be
performed with an efficient algorithm.
As a special case, you can use the [ctor@GdkPixbuf.Pixbuf.new_from_xpm_data
]
function to create a pixbuf from inline XPM image data.
You can also copy an existing pixbuf with the Pixbuf::copy()
function. This is not the same as just acquiring a reference to
the old pixbuf instance: the copy function will actually duplicate
the pixel data in memory and create a new Pixbuf
instance
for it.
Reference counting
Pixbuf
structures are reference counted. This means that an
application can share a single pixbuf among many parts of the
code. When a piece of the program needs to use a pixbuf, it should
acquire a reference to it by calling g_object_ref()
; when it no
longer needs the pixbuf, it should release the reference it acquired
by calling g_object_unref()
. The resources associated with a
Pixbuf
will be freed when its reference count drops to zero.
Newly-created Pixbuf
instances start with a reference count
of one.
Image Data
Image data in a pixbuf is stored in memory in an uncompressed, packed format. Rows in the image are stored top to bottom, and in each row pixels are stored from left to right.
There may be padding at the end of a row.
The “rowstride” value of a pixbuf, as returned by [method@GdkPixbuf.Pixbuf.get_rowstride
],
indicates the number of bytes between rows.
NOTE: If you are copying raw pixbuf data with memcpy()
note that the
last row in the pixbuf may not be as wide as the full rowstride, but rather
just as wide as the pixel data needs to be; that is: it is unsafe to do
memcpy (dest, pixels, rowstride * height)
to copy a whole pixbuf. Use
GdkPixbuf::Pixbuf::copy()
instead, or compute the width in bytes of the
last row as:
⚠️ The following code is in c ⚠️
last_row = width * ((n_channels * bits_per_sample + 7) / 8);
The same rule applies when iterating over each row of a Pixbuf
pixels
array.
The following code illustrates a simple put_pixel()
function for RGB pixbufs with 8 bits per channel with an alpha
channel.
⚠️ The following code is in c ⚠️
static void
put_pixel (GdkPixbuf *pixbuf,
int x,
int y,
guchar red,
guchar green,
guchar blue,
guchar alpha)
{
int n_channels = gdk_pixbuf_get_n_channels (pixbuf);
// Ensure that the pixbuf is valid
g_assert (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
g_assert (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
g_assert (gdk_pixbuf_get_has_alpha (pixbuf));
g_assert (n_channels == 4);
int width = gdk_pixbuf_get_width (pixbuf);
int height = gdk_pixbuf_get_height (pixbuf);
// Ensure that the coordinates are in a valid range
g_assert (x >= 0 && x < width);
g_assert (y >= 0 && y < height);
int rowstride = gdk_pixbuf_get_rowstride (pixbuf);
// The pixel buffer in the GdkPixbuf instance
guchar *pixels = gdk_pixbuf_get_pixels (pixbuf);
// The pixel we wish to modify
guchar *p = pixels + y * rowstride + x * n_channels;
p[0] = red;
p[1] = green;
p[2] = blue;
p[3] = alpha;
}
Loading images
The GdkPixBuf
class provides a simple mechanism for loading
an image from a file in synchronous and asynchronous fashion.
For GUI applications, it is recommended to use the asynchronous stream API to avoid blocking the control flow of the application.
Additionally, Pixbuf
provides the PixbufLoader
`]
API for progressive image loading.
Saving images
The Pixbuf
class provides methods for saving image data in
a number of file formats. The formatted data can be written to a
file or to a memory buffer. Pixbuf
can also call a user-defined
callback on the data, which allows to e.g. write the image
to a socket or store it in a database.
Implements
Implementations§
source§impl Pixbuf
impl Pixbuf
sourcepub fn new(
colorspace: Colorspace,
has_alpha: bool,
bits_per_sample: i32,
width: i32,
height: i32
) -> Option<Pixbuf>
pub fn new( colorspace: Colorspace, has_alpha: bool, bits_per_sample: i32, width: i32, height: i32 ) -> Option<Pixbuf>
Creates a new Pixbuf
structure and allocates a buffer for it.
If the allocation of the buffer failed, this function will return NULL
.
The buffer has an optimal rowstride. Note that the buffer is not cleared; you will have to fill it completely yourself.
colorspace
Color space for image
has_alpha
Whether the image should have transparency information
bits_per_sample
Number of bits per color sample
width
Width of image in pixels, must be > 0
height
Height of image in pixels, must be > 0
Returns
A newly-created pixel buffer
sourcepub fn from_bytes(
data: &Bytes,
colorspace: Colorspace,
has_alpha: bool,
bits_per_sample: i32,
width: i32,
height: i32,
rowstride: i32
) -> Pixbuf
pub fn from_bytes( data: &Bytes, colorspace: Colorspace, has_alpha: bool, bits_per_sample: i32, width: i32, height: i32, rowstride: i32 ) -> Pixbuf
Creates a new #GdkPixbuf out of in-memory readonly image data.
Currently only RGB images with 8 bits per sample are supported.
This is the GBytes
variant of gdk_pixbuf_new_from_data(), useful
for language bindings.
data
Image data in 8-bit/sample packed format inside a #GBytes
colorspace
Colorspace for the image data
has_alpha
Whether the data has an opacity channel
bits_per_sample
Number of bits per sample
width
Width of the image in pixels, must be > 0
height
Height of the image in pixels, must be > 0
rowstride
Distance in bytes between row starts
Returns
A newly-created pixbuf
sourcepub fn from_resource(resource_path: &str) -> Result<Pixbuf, Error>
pub fn from_resource(resource_path: &str) -> Result<Pixbuf, Error>
Creates a new pixbuf by loading an image from an resource.
The file format is detected automatically. If NULL
is returned, then
@error will be set.
resource_path
the path of the resource file
Returns
A newly-created pixbuf
sourcepub fn from_resource_at_scale(
resource_path: &str,
width: i32,
height: i32,
preserve_aspect_ratio: bool
) -> Result<Pixbuf, Error>
pub fn from_resource_at_scale( resource_path: &str, width: i32, height: i32, preserve_aspect_ratio: bool ) -> Result<Pixbuf, Error>
Creates a new pixbuf by loading an image from an resource.
The file format is detected automatically. If NULL
is returned, then
@error will be set.
The image will be scaled to fit in the requested size, optionally preserving the image’s aspect ratio. When preserving the aspect ratio, a @width of -1 will cause the image to be scaled to the exact given height, and a @height of -1 will cause the image to be scaled to the exact given width. When not preserving aspect ratio, a @width or @height of -1 means to not scale the image at all in that dimension.
The stream is not closed.
resource_path
the path of the resource file
width
The width the image should have or -1 to not constrain the width
height
The height the image should have or -1 to not constrain the height
preserve_aspect_ratio
TRUE
to preserve the image’s aspect ratio
Returns
A newly-created pixbuf
sourcepub fn from_stream(
stream: &impl IsA<InputStream>,
cancellable: Option<&impl IsA<Cancellable>>
) -> Result<Pixbuf, Error>
pub fn from_stream( stream: &impl IsA<InputStream>, cancellable: Option<&impl IsA<Cancellable>> ) -> Result<Pixbuf, Error>
Creates a new pixbuf by loading an image from an input stream.
The file format is detected automatically.
If NULL
is returned, then error
will be set.
The cancellable
can be used to abort the operation from another thread.
If the operation was cancelled, the error G_IO_ERROR_CANCELLED
will be
returned. Other possible errors are in the GDK_PIXBUF_ERROR
and
G_IO_ERROR
domains.
The stream is not closed.
stream
a GInputStream
to load the pixbuf from
cancellable
optional GCancellable
object, NULL
to ignore
Returns
A newly-created pixbuf
sourcepub fn from_stream_at_scale(
stream: &impl IsA<InputStream>,
width: i32,
height: i32,
preserve_aspect_ratio: bool,
cancellable: Option<&impl IsA<Cancellable>>
) -> Result<Pixbuf, Error>
pub fn from_stream_at_scale( stream: &impl IsA<InputStream>, width: i32, height: i32, preserve_aspect_ratio: bool, cancellable: Option<&impl IsA<Cancellable>> ) -> Result<Pixbuf, Error>
Creates a new pixbuf by loading an image from an input stream.
The file format is detected automatically. If NULL
is returned, then
@error will be set. The @cancellable can be used to abort the operation
from another thread. If the operation was cancelled, the error
G_IO_ERROR_CANCELLED
will be returned. Other possible errors are in
the GDK_PIXBUF_ERROR
and G_IO_ERROR
domains.
The image will be scaled to fit in the requested size, optionally preserving the image’s aspect ratio.
When preserving the aspect ratio, a width
of -1 will cause the image to be
scaled to the exact given height, and a height
of -1 will cause the image
to be scaled to the exact given width. If both width
and height
are
given, this function will behave as if the smaller of the two values
is passed as -1.
When not preserving aspect ratio, a width
or height
of -1 means to not
scale the image at all in that dimension.
The stream is not closed.
stream
a GInputStream
to load the pixbuf from
width
The width the image should have or -1 to not constrain the width
height
The height the image should have or -1 to not constrain the height
preserve_aspect_ratio
TRUE
to preserve the image’s aspect ratio
cancellable
optional GCancellable
object, NULL
to ignore
Returns
A newly-created pixbuf
sourcepub fn from_xpm_data(data: &[&str]) -> Pixbuf
pub fn from_xpm_data(data: &[&str]) -> Pixbuf
sourcepub fn add_alpha(
&self,
substitute_color: bool,
r: u8,
g: u8,
b: u8
) -> Option<Pixbuf>
pub fn add_alpha( &self, substitute_color: bool, r: u8, g: u8, b: u8 ) -> Option<Pixbuf>
Takes an existing pixbuf and adds an alpha channel to it.
If the existing pixbuf already had an alpha channel, the channel values are copied from the original; otherwise, the alpha channel is initialized to 255 (full opacity).
If substitute_color
is TRUE
, then the color specified by the
(r
, g
, b
) arguments will be assigned zero opacity. That is,
if you pass (255, 255, 255)
for the substitute color, all white
pixels will become fully transparent.
If substitute_color
is FALSE
, then the (r
, g
, b
) arguments
will be ignored.
substitute_color
Whether to set a color to zero opacity.
r
Red value to substitute.
g
Green value to substitute.
b
Blue value to substitute.
Returns
A newly-created pixbuf
sourcepub fn apply_embedded_orientation(&self) -> Option<Pixbuf>
pub fn apply_embedded_orientation(&self) -> Option<Pixbuf>
Takes an existing pixbuf and checks for the presence of an associated “orientation” option.
The orientation option may be provided by the JPEG loader (which reads the exif orientation tag) or the TIFF loader (which reads the TIFF orientation tag, and compensates it for the partial transforms performed by libtiff).
If an orientation option/tag is present, the appropriate transform will be performed so that the pixbuf is oriented correctly.
Returns
A newly-created pixbuf
sourcepub fn composite(
&self,
dest: &Pixbuf,
dest_x: i32,
dest_y: i32,
dest_width: i32,
dest_height: i32,
offset_x: f64,
offset_y: f64,
scale_x: f64,
scale_y: f64,
interp_type: InterpType,
overall_alpha: i32
)
pub fn composite( &self, dest: &Pixbuf, dest_x: i32, dest_y: i32, dest_width: i32, dest_height: i32, offset_x: f64, offset_y: f64, scale_x: f64, scale_y: f64, interp_type: InterpType, overall_alpha: i32 )
Creates a transformation of the source image @self by scaling by @scale_x and @scale_y then translating by @offset_x and @offset_y.
This gives an image in the coordinates of the destination pixbuf. The rectangle (@dest_x, @dest_y, @dest_width, @dest_height) is then alpha blended onto the corresponding rectangle of the original destination image.
When the destination rectangle contains parts not in the source image, the data at the edges of the source image is replicated to infinity.
dest
the #GdkPixbuf into which to render the results
dest_x
the left coordinate for region to render
dest_y
the top coordinate for region to render
dest_width
the width of the region to render
dest_height
the height of the region to render
offset_x
the offset in the X direction (currently rounded to an integer)
offset_y
the offset in the Y direction (currently rounded to an integer)
scale_x
the scale factor in the X direction
scale_y
the scale factor in the Y direction
interp_type
the interpolation type for the transformation.
overall_alpha
overall alpha for source image (0..255)
sourcepub fn composite_color(
&self,
dest: &Pixbuf,
dest_x: i32,
dest_y: i32,
dest_width: i32,
dest_height: i32,
offset_x: f64,
offset_y: f64,
scale_x: f64,
scale_y: f64,
interp_type: InterpType,
overall_alpha: i32,
check_x: i32,
check_y: i32,
check_size: i32,
color1: u32,
color2: u32
)
pub fn composite_color( &self, dest: &Pixbuf, dest_x: i32, dest_y: i32, dest_width: i32, dest_height: i32, offset_x: f64, offset_y: f64, scale_x: f64, scale_y: f64, interp_type: InterpType, overall_alpha: i32, check_x: i32, check_y: i32, check_size: i32, color1: u32, color2: u32 )
Creates a transformation of the source image @self by scaling by @scale_x and @scale_y then translating by @offset_x and @offset_y, then alpha blends the rectangle (@dest_x ,@dest_y, @dest_width, @dest_height) of the resulting image with a checkboard of the colors @color1 and @color2 and renders it onto the destination image.
If the source image has no alpha channel, and @overall_alpha is 255, a fast path is used which omits the alpha blending and just performs the scaling.
See gdk_pixbuf_composite_color_simple() for a simpler variant of this function suitable for many tasks.
dest
the #GdkPixbuf into which to render the results
dest_x
the left coordinate for region to render
dest_y
the top coordinate for region to render
dest_width
the width of the region to render
dest_height
the height of the region to render
offset_x
the offset in the X direction (currently rounded to an integer)
offset_y
the offset in the Y direction (currently rounded to an integer)
scale_x
the scale factor in the X direction
scale_y
the scale factor in the Y direction
interp_type
the interpolation type for the transformation.
overall_alpha
overall alpha for source image (0..255)
check_x
the X offset for the checkboard (origin of checkboard is at -@check_x, -@check_y)
check_y
the Y offset for the checkboard
check_size
the size of checks in the checkboard (must be a power of two)
color1
the color of check at upper left
color2
the color of the other check
sourcepub fn composite_color_simple(
&self,
dest_width: i32,
dest_height: i32,
interp_type: InterpType,
overall_alpha: i32,
check_size: i32,
color1: u32,
color2: u32
) -> Option<Pixbuf>
pub fn composite_color_simple( &self, dest_width: i32, dest_height: i32, interp_type: InterpType, overall_alpha: i32, check_size: i32, color1: u32, color2: u32 ) -> Option<Pixbuf>
Creates a new pixbuf by scaling src
to dest_width
x dest_height
and alpha blending the result with a checkboard of colors color1
and color2
.
dest_width
the width of destination image
dest_height
the height of destination image
interp_type
the interpolation type for the transformation.
overall_alpha
overall alpha for source image (0..255)
check_size
the size of checks in the checkboard (must be a power of two)
color1
the color of check at upper left
color2
the color of the other check
Returns
the new pixbuf
pub fn copy(&self) -> Option<Pixbuf>
sourcepub fn copy_area(
&self,
src_x: i32,
src_y: i32,
width: i32,
height: i32,
dest_pixbuf: &Pixbuf,
dest_x: i32,
dest_y: i32
)
pub fn copy_area( &self, src_x: i32, src_y: i32, width: i32, height: i32, dest_pixbuf: &Pixbuf, dest_x: i32, dest_y: i32 )
Copies a rectangular area from src_pixbuf
to dest_pixbuf
.
Conversion of pixbuf formats is done automatically.
If the source rectangle overlaps the destination rectangle on the same pixbuf, it will be overwritten during the copy operation. Therefore, you can not use this function to scroll a pixbuf.
src_x
Source X coordinate within @self.
src_y
Source Y coordinate within @self.
width
Width of the area to copy.
height
Height of the area to copy.
dest_pixbuf
Destination pixbuf.
dest_x
X coordinate within @dest_pixbuf.
dest_y
Y coordinate within @dest_pixbuf.
sourcepub fn copy_options(&self, dest_pixbuf: &Pixbuf) -> bool
Available on crate feature v2_36
only.
pub fn copy_options(&self, dest_pixbuf: &Pixbuf) -> bool
v2_36
only.Copies the key/value pair options attached to a Pixbuf
to another
Pixbuf
.
This is useful to keep original metadata after having manipulated a file. However be careful to remove metadata which you’ve already applied, such as the “orientation” option after rotating the image.
dest_pixbuf
the destination pixbuf
Returns
TRUE
on success.
sourcepub fn fill(&self, pixel: u32)
pub fn fill(&self, pixel: u32)
Clears a pixbuf to the given RGBA value, converting the RGBA value into the pixbuf’s pixel format.
The alpha component will be ignored if the pixbuf doesn’t have an alpha channel.
pixel
RGBA pixel to used to clear (0xffffffff
is opaque white,
0x00000000
transparent black)
sourcepub fn flip(&self, horizontal: bool) -> Option<Pixbuf>
pub fn flip(&self, horizontal: bool) -> Option<Pixbuf>
Flips a pixbuf horizontally or vertically and returns the result in a new pixbuf.
horizontal
TRUE
to flip horizontally, FALSE
to flip vertically
Returns
the new pixbuf
sourcepub fn bits_per_sample(&self) -> i32
pub fn bits_per_sample(&self) -> i32
sourcepub fn byte_length(&self) -> usize
pub fn byte_length(&self) -> usize
sourcepub fn colorspace(&self) -> Colorspace
pub fn colorspace(&self) -> Colorspace
sourcepub fn has_alpha(&self) -> bool
pub fn has_alpha(&self) -> bool
Queries whether a pixbuf has an alpha channel (opacity information).
Returns
TRUE
if it has an alpha channel, FALSE
otherwise.
sourcepub fn n_channels(&self) -> i32
pub fn n_channels(&self) -> i32
sourcepub fn option(&self, key: &str) -> Option<GString>
pub fn option(&self, key: &str) -> Option<GString>
Looks up @key in the list of options that may have been attached to the @self when it was loaded, or that may have been attached by another function using gdk_pixbuf_set_option().
For instance, the ANI loader provides “Title” and “Artist” options. The ICO, XBM, and XPM loaders provide “x_hot” and “y_hot” hot-spot options for cursor definitions. The PNG loader provides the tEXt ancillary chunk key/value pairs as options. Since 2.12, the TIFF and JPEG loaders return an “orientation” option string that corresponds to the embedded TIFF/Exif orientation tag (if present). Since 2.32, the TIFF loader sets the “multipage” option string to “yes” when a multi-page TIFF is loaded. Since 2.32 the JPEG and PNG loaders set “x-dpi” and “y-dpi” if the file contains image density information in dots per inch. Since 2.36.6, the JPEG loader sets the “comment” option with the comment EXIF tag.
key
a nul-terminated string.
Returns
the value associated with key
sourcepub fn rowstride(&self) -> i32
pub fn rowstride(&self) -> i32
Queries the rowstride of a pixbuf, which is the number of bytes between the start of a row and the start of the next row.
Returns
Distance between row starts.
sourcepub fn new_subpixbuf(
&self,
src_x: i32,
src_y: i32,
width: i32,
height: i32
) -> Option<Pixbuf>
pub fn new_subpixbuf( &self, src_x: i32, src_y: i32, width: i32, height: i32 ) -> Option<Pixbuf>
Creates a new pixbuf which represents a sub-region of src_pixbuf
.
The new pixbuf shares its pixels with the original pixbuf, so
writing to one affects both. The new pixbuf holds a reference to
src_pixbuf
, so src_pixbuf
will not be finalized until the new
pixbuf is finalized.
Note that if src_pixbuf
is read-only, this function will force it
to be mutable.
src_x
X coord in @self
src_y
Y coord in @self
width
width of region in @self
height
height of region in @self
Returns
a new pixbuf
sourcepub fn read_pixel_bytes(&self) -> Option<Bytes>
pub fn read_pixel_bytes(&self) -> Option<Bytes>
Provides a #GBytes buffer containing the raw pixel data; the data must not be modified.
This function allows skipping the implicit copy that must be made if gdk_pixbuf_get_pixels() is called on a read-only pixbuf.
Returns
A new reference to a read-only copy of the pixel data. Note that for mutable pixbufs, this function will incur a one-time copy of the pixel data for conversion into the returned #GBytes.
sourcepub fn remove_option(&self, key: &str) -> bool
Available on crate feature v2_36
only.
pub fn remove_option(&self, key: &str) -> bool
v2_36
only.sourcepub fn rotate_simple(&self, angle: PixbufRotation) -> Option<Pixbuf>
pub fn rotate_simple(&self, angle: PixbufRotation) -> Option<Pixbuf>
sourcepub fn saturate_and_pixelate(
&self,
dest: &Pixbuf,
saturation: f32,
pixelate: bool
)
pub fn saturate_and_pixelate( &self, dest: &Pixbuf, saturation: f32, pixelate: bool )
Modifies saturation and optionally pixelates src
, placing the result in
dest
.
The src
and dest
pixbufs must have the same image format, size, and
rowstride.
The src
and dest
arguments may be the same pixbuf with no ill effects.
If saturation
is 1.0 then saturation is not changed. If it’s less than 1.0,
saturation is reduced (the image turns toward grayscale); if greater than
1.0, saturation is increased (the image gets more vivid colors).
If pixelate
is TRUE
, then pixels are faded in a checkerboard pattern to
create a pixelated image.
dest
place to write modified version of @self
saturation
saturation factor
pixelate
whether to pixelate
sourcepub fn scale(
&self,
dest: &Pixbuf,
dest_x: i32,
dest_y: i32,
dest_width: i32,
dest_height: i32,
offset_x: f64,
offset_y: f64,
scale_x: f64,
scale_y: f64,
interp_type: InterpType
)
pub fn scale( &self, dest: &Pixbuf, dest_x: i32, dest_y: i32, dest_width: i32, dest_height: i32, offset_x: f64, offset_y: f64, scale_x: f64, scale_y: f64, interp_type: InterpType )
Creates a transformation of the source image @self by scaling by @scale_x and @scale_y then translating by @offset_x and @offset_y, then renders the rectangle (@dest_x, @dest_y, @dest_width, @dest_height) of the resulting image onto the destination image replacing the previous contents.
Try to use gdk_pixbuf_scale_simple() first; this function is the industrial-strength power tool you can fall back to, if gdk_pixbuf_scale_simple() isn’t powerful enough.
If the source rectangle overlaps the destination rectangle on the same pixbuf, it will be overwritten during the scaling which results in rendering artifacts.
dest
the #GdkPixbuf into which to render the results
dest_x
the left coordinate for region to render
dest_y
the top coordinate for region to render
dest_width
the width of the region to render
dest_height
the height of the region to render
offset_x
the offset in the X direction (currently rounded to an integer)
offset_y
the offset in the Y direction (currently rounded to an integer)
scale_x
the scale factor in the X direction
scale_y
the scale factor in the Y direction
interp_type
the interpolation type for the transformation.
sourcepub fn scale_simple(
&self,
dest_width: i32,
dest_height: i32,
interp_type: InterpType
) -> Option<Pixbuf>
pub fn scale_simple( &self, dest_width: i32, dest_height: i32, interp_type: InterpType ) -> Option<Pixbuf>
Create a new pixbuf containing a copy of src
scaled to
dest_width
x dest_height
.
This function leaves src
unaffected.
The interp_type
should be GDK_INTERP_NEAREST
if you want maximum
speed (but when scaling down GDK_INTERP_NEAREST
is usually unusably
ugly). The default interp_type
should be GDK_INTERP_BILINEAR
which
offers reasonable quality and speed.
You can scale a sub-portion of src
by creating a sub-pixbuf
pointing into src
; see new_subpixbuf()
.
If dest_width
and dest_height
are equal to the width and height of
src
, this function will return an unscaled copy of src
.
For more complicated scaling/alpha blending see scale()
and composite()
.
dest_width
the width of destination image
dest_height
the height of destination image
interp_type
the interpolation type for the transformation.
Returns
the new pixbuf
sourcepub fn set_option(&self, key: &str, value: &str) -> bool
pub fn set_option(&self, key: &str, value: &str) -> bool
pub fn pixel_bytes(&self) -> Option<Bytes>
sourcepub fn calculate_rowstride(
colorspace: Colorspace,
has_alpha: bool,
bits_per_sample: i32,
width: i32,
height: i32
) -> i32
Available on crate feature v2_36_8
only.
pub fn calculate_rowstride( colorspace: Colorspace, has_alpha: bool, bits_per_sample: i32, width: i32, height: i32 ) -> i32
v2_36_8
only.Calculates the rowstride that an image created with those values would have.
This function is useful for front-ends and backends that want to check
image values without needing to create a Pixbuf
.
colorspace
Color space for image
has_alpha
Whether the image should have transparency information
bits_per_sample
Number of bits per color sample
width
Width of image in pixels, must be > 0
height
Height of image in pixels, must be > 0
Returns
the rowstride for the given values, or -1 in case of error.
sourcepub fn formats() -> Vec<PixbufFormat>
pub fn formats() -> Vec<PixbufFormat>
Obtains the available information about the image formats supported by GdkPixbuf.
Returns
A list of support image formats.
sourcepub fn init_modules(path: &str) -> Result<(), Error>
Available on crate feature v2_40
only.
pub fn init_modules(path: &str) -> Result<(), Error>
v2_40
only.Initalizes the gdk-pixbuf loader modules referenced by the loaders.cache
file present inside that directory.
This is to be used by applications that want to ship certain loaders in a different location from the system ones.
This is needed when the OS or runtime ships a minimal number of loaders so as to reduce the potential attack surface of carefully crafted image files, especially for uncommon file types. Applications that require broader image file types coverage, such as image viewers, would be expected to ship the gdk-pixbuf modules in a separate location, bundled with the application in a separate directory from the OS or runtime- provided modules.
path
Path to directory where the loaders.cache
is installed
source§impl Pixbuf
impl Pixbuf
pub fn from_mut_slice<T: AsMut<[u8]>>( data: T, colorspace: Colorspace, has_alpha: bool, bits_per_sample: i32, width: i32, height: i32, row_stride: i32 ) -> Pixbuf
sourcepub fn from_read<R: Read + Send + 'static>(r: R) -> Result<Pixbuf, Error>
pub fn from_read<R: Read + Send + 'static>(r: R) -> Result<Pixbuf, Error>
Creates a Pixbuf
from a type implementing Read
(like File
).
use std::fs::File;
use gdk_pixbuf::Pixbuf;
let f = File::open("some_file.png").expect("failed to open image");
let pixbuf = Pixbuf::from_read(f).expect("failed to load image");
sourcepub fn from_file<T: AsRef<Path>>(filename: T) -> Result<Pixbuf, Error>
pub fn from_file<T: AsRef<Path>>(filename: T) -> Result<Pixbuf, Error>
Creates a new pixbuf by loading an image from a file.
The file format is detected automatically.
If NULL
is returned, then @error will be set. Possible errors are:
- the file could not be opened
- there is no loader for the file’s format
- there is not enough memory to allocate the image buffer
- the image buffer contains invalid data
The error domains are GDK_PIXBUF_ERROR
and G_FILE_ERROR
.
filename
Name of file to load, in the GLib file name encoding
Returns
A newly-created pixbuf
sourcepub fn from_file_at_size<T: AsRef<Path>>(
filename: T,
width: i32,
height: i32
) -> Result<Pixbuf, Error>
pub fn from_file_at_size<T: AsRef<Path>>( filename: T, width: i32, height: i32 ) -> Result<Pixbuf, Error>
Creates a new pixbuf by loading an image from a file.
The file format is detected automatically.
If NULL
is returned, then @error will be set. Possible errors are:
- the file could not be opened
- there is no loader for the file’s format
- there is not enough memory to allocate the image buffer
- the image buffer contains invalid data
The error domains are GDK_PIXBUF_ERROR
and G_FILE_ERROR
.
The image will be scaled to fit in the requested size, preserving
the image’s aspect ratio. Note that the returned pixbuf may be smaller
than width
x height
, if the aspect ratio requires it. To load
and image at the requested size, regardless of aspect ratio, use
from_file_at_scale()
.
filename
Name of file to load, in the GLib file name encoding
width
The width the image should have or -1 to not constrain the width
height
The height the image should have or -1 to not constrain the height
Returns
A newly-created pixbuf
sourcepub fn from_file_at_scale<T: AsRef<Path>>(
filename: T,
width: i32,
height: i32,
preserve_aspect_ratio: bool
) -> Result<Pixbuf, Error>
pub fn from_file_at_scale<T: AsRef<Path>>( filename: T, width: i32, height: i32, preserve_aspect_ratio: bool ) -> Result<Pixbuf, Error>
Creates a new pixbuf by loading an image from a file.
The file format is detected automatically.
If NULL
is returned, then @error will be set. Possible errors are:
- the file could not be opened
- there is no loader for the file’s format
- there is not enough memory to allocate the image buffer
- the image buffer contains invalid data
The error domains are GDK_PIXBUF_ERROR
and G_FILE_ERROR
.
The image will be scaled to fit in the requested size, optionally preserving the image’s aspect ratio.
When preserving the aspect ratio, a width
of -1 will cause the image
to be scaled to the exact given height, and a height
of -1 will cause
the image to be scaled to the exact given width. When not preserving
aspect ratio, a width
or height
of -1 means to not scale the image
at all in that dimension. Negative values for width
and height
are
allowed since 2.8.
filename
Name of file to load, in the GLib file name encoding
width
The width the image should have or -1 to not constrain the width
height
The height the image should have or -1 to not constrain the height
preserve_aspect_ratio
TRUE
to preserve the image’s aspect ratio
Returns
A newly-created pixbuf
pub fn from_stream_async<P: IsA<InputStream>, Q: IsA<Cancellable>, R: FnOnce(Result<Pixbuf, Error>) + 'static>( stream: &P, cancellable: Option<&Q>, callback: R )
pub fn from_stream_future<P: IsA<InputStream> + Clone + 'static>( stream: &P ) -> Pin<Box<dyn Future<Output = Result<Pixbuf, Error>> + 'static>>
pub fn from_stream_at_scale_async<P: IsA<InputStream>, Q: IsA<Cancellable>, R: FnOnce(Result<Pixbuf, Error>) + 'static>( stream: &P, width: i32, height: i32, preserve_aspect_ratio: bool, cancellable: Option<&Q>, callback: R )
pub fn from_stream_at_scale_future<P: IsA<InputStream> + Clone + 'static>( stream: &P, width: i32, height: i32, preserve_aspect_ratio: bool ) -> Pin<Box<dyn Future<Output = Result<Pixbuf, Error>> + 'static>>
sourcepub unsafe fn pixels(&self) -> &mut [u8] ⓘ
pub unsafe fn pixels(&self) -> &mut [u8] ⓘ
Returns a mutable slice to the pixbuf’s pixel data.
This function will cause an implicit copy if the pixbuf was created from read-only data.
Please see the section on image data for information about how the pixel data is stored in memory.
Safety
No other reference to this pixbuf’s data must exist when this method is called.
Until you drop the returned reference, you must not call any methods on the pixbuf which may read or write to the data. Queries a pointer to the pixel data of a pixbuf.
This function will cause an implicit copy of the pixbuf data if the pixbuf was created from read-only data.
Please see the section on image data for information about how the pixel data is stored in memory.
Returns
A pointer to the pixbuf’s pixel data.
pub fn put_pixel(&self, x: u32, y: u32, red: u8, green: u8, blue: u8, alpha: u8)
sourcepub fn file_info<T: AsRef<Path>>(
filename: T
) -> Option<(PixbufFormat, i32, i32)>
pub fn file_info<T: AsRef<Path>>( filename: T ) -> Option<(PixbufFormat, i32, i32)>
Parses an image file far enough to determine its format and size.
filename
The name of the file to identify.
Returns
A PixbufFormat
describing
the image format of the file
width
Return location for the width of the image
height
Return location for the height of the image
sourcepub fn file_info_async<P: IsA<Cancellable>, Q: FnOnce(Result<Option<(PixbufFormat, i32, i32)>, Error>) + 'static, T: AsRef<Path>>(
filename: T,
cancellable: Option<&P>,
callback: Q
)
pub fn file_info_async<P: IsA<Cancellable>, Q: FnOnce(Result<Option<(PixbufFormat, i32, i32)>, Error>) + 'static, T: AsRef<Path>>( filename: T, cancellable: Option<&P>, callback: Q )
Asynchronously parses an image file far enough to determine its format and size.
For more details see gdk_pixbuf_get_file_info(), which is the synchronous version of this function.
When the operation is finished, @callback will be called in the main thread. You can then call gdk_pixbuf_get_file_info_finish() to get the result of the operation.
filename
The name of the file to identify
cancellable
optional GCancellable
object, NULL
to ignore
callback
a GAsyncReadyCallback
to call when the file info is available
pub fn file_info_future<T: AsRef<Path> + Clone + 'static>( filename: T ) -> Pin<Box<dyn Future<Output = Result<Option<(PixbufFormat, i32, i32)>, Error>> + 'static>>
sourcepub fn save_to_bufferv(
&self,
type_: &str,
options: &[(&str, &str)]
) -> Result<Vec<u8>, Error>
pub fn save_to_bufferv( &self, type_: &str, options: &[(&str, &str)] ) -> Result<Vec<u8>, Error>
Vector version of gdk_pixbuf_save_to_buffer()
.
Saves pixbuf to a new buffer in format @type_, which is currently “jpeg”, “tiff”, “png”, “ico” or “bmp”.
See GdkPixbuf::Pixbuf::save_to_buffer()
for more details.
type_
name of file format.
option_keys
name of options to set
option_values
values for named options
Returns
whether an error was set
buffer
location to receive a pointer to the new buffer.
sourcepub fn save_to_streamv<P: IsA<OutputStream>, Q: IsA<Cancellable>>(
&self,
stream: &P,
type_: &str,
options: &[(&str, &str)],
cancellable: Option<&Q>
) -> Result<(), Error>
Available on crate feature v2_36
only.
pub fn save_to_streamv<P: IsA<OutputStream>, Q: IsA<Cancellable>>( &self, stream: &P, type_: &str, options: &[(&str, &str)], cancellable: Option<&Q> ) -> Result<(), Error>
v2_36
only.Saves pixbuf
to an output stream.
Supported file formats are currently “jpeg”, “tiff”, “png”, “ico” or “bmp”.
See GdkPixbuf::Pixbuf::save_to_stream()
for more details.
stream
a GOutputStream
to save the pixbuf to
type_
name of file format
option_keys
name of options to set
option_values
values for named options
cancellable
optional GCancellable
object, NULL
to ignore
Returns
TRUE
if the pixbuf was saved successfully, FALSE
if an
error was set.
sourcepub fn save_to_streamv_async<P: IsA<OutputStream>, Q: IsA<Cancellable>, R: FnOnce(Result<(), Error>) + 'static>(
&self,
stream: &P,
type_: &str,
options: &[(&str, &str)],
cancellable: Option<&Q>,
callback: R
)
Available on crate feature v2_36
only.
pub fn save_to_streamv_async<P: IsA<OutputStream>, Q: IsA<Cancellable>, R: FnOnce(Result<(), Error>) + 'static>( &self, stream: &P, type_: &str, options: &[(&str, &str)], cancellable: Option<&Q>, callback: R )
v2_36
only.Saves pixbuf
to an output stream asynchronously.
For more details see gdk_pixbuf_save_to_streamv(), which is the synchronous version of this function.
When the operation is finished, callback
will be called in the main thread.
You can then call gdk_pixbuf_save_to_stream_finish() to get the result of the operation.
stream
a GOutputStream
to which to save the pixbuf
type_
name of file format
option_keys
name of options to set
option_values
values for named options
cancellable
optional GCancellable
object, NULL
to ignore
callback
a GAsyncReadyCallback
to call when the pixbuf is saved
pub fn save_to_streamv_future<P: IsA<OutputStream> + Clone + 'static>( &self, stream: &P, type_: &str, options: &[(&str, &str)] ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + 'static>>
v2_36
only.sourcepub fn savev<T: AsRef<Path>>(
&self,
filename: T,
type_: &str,
options: &[(&str, &str)]
) -> Result<(), Error>
pub fn savev<T: AsRef<Path>>( &self, filename: T, type_: &str, options: &[(&str, &str)] ) -> Result<(), Error>
Vector version of gdk_pixbuf_save()
.
Saves pixbuf to a file in type
, which is currently “jpeg”, “png”, “tiff”, “ico” or “bmp”.
If @error is set, FALSE
will be returned.
See GdkPixbuf::Pixbuf::save()
for more details.
filename
name of file to save.
type_
name of file format.
option_keys
name of options to set
option_values
values for named options
Returns
whether an error was set
Trait Implementations§
source§impl Ord for Pixbuf
impl Ord for Pixbuf
source§impl<OT: ObjectType> PartialEq<OT> for Pixbuf
impl<OT: ObjectType> PartialEq<OT> for Pixbuf
source§impl<OT: ObjectType> PartialOrd<OT> for Pixbuf
impl<OT: ObjectType> PartialOrd<OT> for Pixbuf
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl StaticType for Pixbuf
impl StaticType for Pixbuf
source§fn static_type() -> Type
fn static_type() -> Type
Self
.impl Eq for Pixbuf
impl IsA<Icon> for Pixbuf
impl IsA<LoadableIcon> for Pixbuf
Auto Trait Implementations§
impl RefUnwindSafe for Pixbuf
impl !Send for Pixbuf
impl !Sync for Pixbuf
impl Unpin for Pixbuf
impl UnwindSafe for Pixbuf
Blanket Implementations§
source§impl<T> Cast for Twhere
T: ObjectType,
impl<T> Cast for Twhere T: ObjectType,
source§fn upcast<T>(self) -> Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast<T>(self) -> Twhere T: ObjectType, Self: IsA<T>,
T
. Read moresource§fn upcast_ref<T>(&self) -> &Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast_ref<T>(&self) -> &Twhere T: ObjectType, Self: IsA<T>,
T
. Read moresource§fn downcast<T>(self) -> Result<T, Self>where
T: ObjectType,
Self: CanDowncast<T>,
fn downcast<T>(self) -> Result<T, Self>where T: ObjectType, Self: CanDowncast<T>,
T
. Read moresource§fn downcast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
Self: CanDowncast<T>,
fn downcast_ref<T>(&self) -> Option<&T>where T: ObjectType, Self: CanDowncast<T>,
T
. Read moresource§fn dynamic_cast<T>(self) -> Result<T, Self>where
T: ObjectType,
fn dynamic_cast<T>(self) -> Result<T, Self>where T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast
and upcast
will do many checks at compile-time already. Read moresource§fn dynamic_cast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
fn dynamic_cast_ref<T>(&self) -> Option<&T>where T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast
and upcast
will do many checks at compile-time already. Read moresource§unsafe fn unsafe_cast<T>(self) -> Twhere
T: ObjectType,
unsafe fn unsafe_cast<T>(self) -> Twhere T: ObjectType,
T
unconditionally. Read moresource§unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
T: ObjectType,
unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere T: ObjectType,
&T
unconditionally. Read moresource§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
source§impl<O> IconExt for Owhere
O: IsA<Icon>,
impl<O> IconExt for Owhere O: IsA<Icon>,
fn equal(&self, icon2: Option<&impl IsA<Icon>>) -> bool
source§fn serialize(&self) -> Option<Variant>
fn serialize(&self) -> Option<Variant>
Icon
into a glib::Variant
. An equivalent Icon
can be retrieved
back by calling Icon::deserialize()
on the returned value.
As serialization will avoid using raw icon data when possible, it only
makes sense to transfer the glib::Variant
between processes on the same machine,
(as opposed to over the network), and within the same file system namespace. Read moresource§impl<U> IsSubclassableExt for Uwhere
U: IsClass + ParentClassIs,
impl<U> IsSubclassableExt for Uwhere U: IsClass + ParentClassIs,
fn parent_class_init<T>(class: &mut Class<U>)where T: ObjectSubclass, <U as ParentClassIs>::Parent: IsSubclassable<T>,
fn parent_instance_init<T>(instance: &mut InitializingObject<T>)where T: ObjectSubclass, <U as ParentClassIs>::Parent: IsSubclassable<T>,
source§impl<O> LoadableIconExt for Owhere
O: IsA<LoadableIcon>,
impl<O> LoadableIconExt for Owhere O: IsA<LoadableIcon>,
source§fn load(
&self,
size: i32,
cancellable: Option<&impl IsA<Cancellable>>
) -> Result<(InputStream, GString), Error>
fn load( &self, size: i32, cancellable: Option<&impl IsA<Cancellable>> ) -> Result<(InputStream, GString), Error>
load_async()
. Read moresource§fn load_async<P>(
&self,
size: i32,
cancellable: Option<&impl IsA<Cancellable>>,
callback: P
)where
P: FnOnce(Result<(InputStream, GString), Error>) + 'static,
fn load_async<P>( &self, size: i32, cancellable: Option<&impl IsA<Cancellable>>, callback: P )where P: FnOnce(Result<(InputStream, GString), Error>) + 'static,
fn load_future( &self, size: i32 ) -> Pin<Box<dyn Future<Output = Result<(InputStream, GString), Error>> + 'static, Global>>
source§impl<T> ObjectExt for Twhere
T: ObjectType,
impl<T> ObjectExt for Twhere T: ObjectType,
source§fn is<U>(&self) -> boolwhere
U: StaticType,
fn is<U>(&self) -> boolwhere U: StaticType,
true
if the object is an instance of (can be cast to) T
.source§fn object_class(&self) -> &Class<Object>
fn object_class(&self) -> &Class<Object>
ObjectClass
of the object. Read moresource§fn class_of<U>(&self) -> Option<&Class<U>>where
U: IsClass,
fn class_of<U>(&self) -> Option<&Class<U>>where U: IsClass,
T
. Read moresource§fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where
U: IsInterface,
fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where U: IsInterface,
T
of the object. Read moresource§fn try_set_property<V>(
&self,
property_name: &str,
value: V
) -> Result<(), BoolError>where
V: ToValue,
fn try_set_property<V>( &self, property_name: &str, value: V ) -> Result<(), BoolError>where V: ToValue,
Self::set_property
but fails instead of panicking.source§fn set_property<V>(&self, property_name: &str, value: V)where
V: ToValue,
fn set_property<V>(&self, property_name: &str, value: V)where V: ToValue,
source§fn try_set_property_from_value(
&self,
property_name: &str,
value: &Value
) -> Result<(), BoolError>
fn try_set_property_from_value( &self, property_name: &str, value: &Value ) -> Result<(), BoolError>
Self::set_property
but fails instead of panicking.source§fn set_property_from_value(&self, property_name: &str, value: &Value)
fn set_property_from_value(&self, property_name: &str, value: &Value)
source§fn try_set_properties(
&self,
property_values: &[(&str, &dyn ToValue)]
) -> Result<(), BoolError>
fn try_set_properties( &self, property_values: &[(&str, &dyn ToValue)] ) -> Result<(), BoolError>
Self::set_properties
but fails instead of panicking.source§fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
source§fn try_set_properties_from_value(
&self,
property_values: &[(&str, Value)]
) -> Result<(), BoolError>
fn try_set_properties_from_value( &self, property_values: &[(&str, Value)] ) -> Result<(), BoolError>
Self::set_properties_from_value
but fails instead of panicking.source§fn set_properties_from_value(&self, property_values: &[(&str, Value)])
fn set_properties_from_value(&self, property_values: &[(&str, Value)])
source§fn try_property<V>(&self, property_name: &str) -> Result<V, BoolError>where
V: for<'b> FromValue<'b> + 'static,
fn try_property<V>(&self, property_name: &str) -> Result<V, BoolError>where V: for<'b> FromValue<'b> + 'static,
Self::property
but fails instead of panicking.source§fn property<V>(&self, property_name: &str) -> Vwhere
V: for<'b> FromValue<'b> + 'static,
fn property<V>(&self, property_name: &str) -> Vwhere V: for<'b> FromValue<'b> + 'static,
property_name
of the object and cast it to the type V. Read moresource§fn try_property_value(&self, property_name: &str) -> Result<Value, BoolError>
fn try_property_value(&self, property_name: &str) -> Result<Value, BoolError>
Self::property_value
but fails instead of panicking.source§fn property_value(&self, property_name: &str) -> Value
fn property_value(&self, property_name: &str) -> Value
property_name
of the object. Read moresource§fn property_type(&self, property_name: &str) -> Option<Type>
fn property_type(&self, property_name: &str) -> Option<Type>
property_name
of this object. Read moresource§fn find_property(&self, property_name: &str) -> Option<ParamSpec>
fn find_property(&self, property_name: &str) -> Option<ParamSpec>
ParamSpec
of the property property_name
of this object.source§fn list_properties(&self) -> PtrSlice<ParamSpec>
fn list_properties(&self) -> PtrSlice<ParamSpec>
ParamSpec
of the properties of this object.source§fn freeze_notify(&self) -> PropertyNotificationFreezeGuard
fn freeze_notify(&self) -> PropertyNotificationFreezeGuard
source§unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where
QD: 'static,
unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where QD: 'static,
key
. Read moresource§unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where
QD: 'static,
unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where QD: 'static,
key
. Read moresource§unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where
QD: 'static,
unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where QD: 'static,
key
. Read moresource§unsafe fn set_data<QD>(&self, key: &str, value: QD)where
QD: 'static,
unsafe fn set_data<QD>(&self, key: &str, value: QD)where QD: 'static,
key
. Read moresource§unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where
QD: 'static,
unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where QD: 'static,
key
. Read moresource§unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where
QD: 'static,
unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where QD: 'static,
key
. Read moresource§fn block_signal(&self, handler_id: &SignalHandlerId)
fn block_signal(&self, handler_id: &SignalHandlerId)
source§fn unblock_signal(&self, handler_id: &SignalHandlerId)
fn unblock_signal(&self, handler_id: &SignalHandlerId)
source§fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
source§fn stop_signal_emission_by_name(&self, signal_name: &str)
fn stop_signal_emission_by_name(&self, signal_name: &str)
source§fn try_connect<F>(
&self,
signal_name: &str,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError>where
F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
fn try_connect<F>( &self, signal_name: &str, after: bool, callback: F ) -> Result<SignalHandlerId, BoolError>where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
Self::connect
but fails instead of panicking.source§fn connect<F>(
&self,
signal_name: &str,
after: bool,
callback: F
) -> SignalHandlerIdwhere
F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
fn connect<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerIdwhere F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
signal_name
on this object. Read moresource§fn try_connect_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError>where
F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
fn try_connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> Result<SignalHandlerId, BoolError>where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
Self::connect_id
but fails instead of panicking.source§fn connect_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F
) -> SignalHandlerIdwhere
F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
fn connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerIdwhere F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
signal_id
on this object. Read moresource§fn try_connect_local<F>(
&self,
signal_name: &str,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError>where
F: Fn(&[Value]) -> Option<Value> + 'static,
fn try_connect_local<F>( &self, signal_name: &str, after: bool, callback: F ) -> Result<SignalHandlerId, BoolError>where F: Fn(&[Value]) -> Option<Value> + 'static,
Self::connect_local
but fails instead of panicking.source§fn connect_local<F>(
&self,
signal_name: &str,
after: bool,
callback: F
) -> SignalHandlerIdwhere
F: Fn(&[Value]) -> Option<Value> + 'static,
fn connect_local<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerIdwhere F: Fn(&[Value]) -> Option<Value> + 'static,
signal_name
on this object. Read moresource§fn try_connect_local_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError>where
F: Fn(&[Value]) -> Option<Value> + 'static,
fn try_connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> Result<SignalHandlerId, BoolError>where F: Fn(&[Value]) -> Option<Value> + 'static,
Self::connect_local_id
but fails instead of panicking.source§fn connect_local_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F
) -> SignalHandlerIdwhere
F: Fn(&[Value]) -> Option<Value> + 'static,
fn connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerIdwhere F: Fn(&[Value]) -> Option<Value> + 'static,
signal_id
on this object. Read moresource§unsafe fn try_connect_unsafe<F>(
&self,
signal_name: &str,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError>where
F: Fn(&[Value]) -> Option<Value>,
unsafe fn try_connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F ) -> Result<SignalHandlerId, BoolError>where F: Fn(&[Value]) -> Option<Value>,
Self::connect_unsafe
but fails instead of panicking.source§unsafe fn connect_unsafe<F>(
&self,
signal_name: &str,
after: bool,
callback: F
) -> SignalHandlerIdwhere
F: Fn(&[Value]) -> Option<Value>,
unsafe fn connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerIdwhere F: Fn(&[Value]) -> Option<Value>,
signal_name
on this object. Read moresource§unsafe fn try_connect_unsafe_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F
) -> Result<SignalHandlerId, BoolError>where
F: Fn(&[Value]) -> Option<Value>,
unsafe fn try_connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> Result<SignalHandlerId, BoolError>where F: Fn(&[Value]) -> Option<Value>,
Self::connect_unsafe_id
but fails instead of panicking.source§fn try_connect_closure(
&self,
signal_name: &str,
after: bool,
closure: RustClosure
) -> Result<SignalHandlerId, BoolError>
fn try_connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure ) -> Result<SignalHandlerId, BoolError>
Self::connect_closure
but fails instead of panicking.source§fn connect_closure(
&self,
signal_name: &str,
after: bool,
closure: RustClosure
) -> SignalHandlerId
fn connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure ) -> SignalHandlerId
signal_name
on this object. Read moresource§fn try_connect_closure_id(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
closure: RustClosure
) -> Result<SignalHandlerId, BoolError>
fn try_connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure ) -> Result<SignalHandlerId, BoolError>
Self::connect_closure_id
but fails instead of panicking.source§fn connect_closure_id(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
closure: RustClosure
) -> SignalHandlerId
fn connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure ) -> SignalHandlerId
signal_id
on this object. Read moresource§fn watch_closure(&self, closure: &impl AsRef<Closure>)
fn watch_closure(&self, closure: &impl AsRef<Closure>)
closure
to the lifetime of the object. When
the object’s reference count drops to zero, the closure will be
invalidated. An invalidated closure will ignore any calls to
Closure::invoke
.source§unsafe fn connect_unsafe_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F
) -> SignalHandlerIdwhere
F: Fn(&[Value]) -> Option<Value>,
unsafe fn connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerIdwhere F: Fn(&[Value]) -> Option<Value>,
signal_id
on this object. Read moresource§fn try_emit<R>(
&self,
signal_id: SignalId,
args: &[&dyn ToValue]
) -> Result<R, BoolError>where
R: TryFromClosureReturnValue,
fn try_emit<R>( &self, signal_id: SignalId, args: &[&dyn ToValue] ) -> Result<R, BoolError>where R: TryFromClosureReturnValue,
Self::emit
but fails instead of panicking.source§fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere R: TryFromClosureReturnValue,
source§fn try_emit_with_values(
&self,
signal_id: SignalId,
args: &[Value]
) -> Result<Option<Value>, BoolError>
fn try_emit_with_values( &self, signal_id: SignalId, args: &[Value] ) -> Result<Option<Value>, BoolError>
Self::emit_with_values
but fails instead of panicking.source§fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
Self::emit
but takes Value
for the arguments.source§fn try_emit_by_name<R>(
&self,
signal_name: &str,
args: &[&dyn ToValue]
) -> Result<R, BoolError>where
R: TryFromClosureReturnValue,
fn try_emit_by_name<R>( &self, signal_name: &str, args: &[&dyn ToValue] ) -> Result<R, BoolError>where R: TryFromClosureReturnValue,
Self::emit_by_name
but fails instead of panicking.source§fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere R: TryFromClosureReturnValue,
source§fn try_emit_by_name_with_values(
&self,
signal_name: &str,
args: &[Value]
) -> Result<Option<Value>, BoolError>
fn try_emit_by_name_with_values( &self, signal_name: &str, args: &[Value] ) -> Result<Option<Value>, BoolError>
Self::emit_by_name_with_values
but fails instead of panicking.source§fn emit_by_name_with_values(
&self,
signal_name: &str,
args: &[Value]
) -> Option<Value>
fn emit_by_name_with_values( &self, signal_name: &str, args: &[Value] ) -> Option<Value>
source§fn try_emit_by_name_with_details<R>(
&self,
signal_name: &str,
details: Quark,
args: &[&dyn ToValue]
) -> Result<R, BoolError>where
R: TryFromClosureReturnValue,
fn try_emit_by_name_with_details<R>( &self, signal_name: &str, details: Quark, args: &[&dyn ToValue] ) -> Result<R, BoolError>where R: TryFromClosureReturnValue,
Self::emit_by_name_with_details
but fails instead of panicking.source§fn emit_by_name_with_details<R>(
&self,
signal_name: &str,
details: Quark,
args: &[&dyn ToValue]
) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_by_name_with_details<R>( &self, signal_name: &str, details: Quark, args: &[&dyn ToValue] ) -> Rwhere R: TryFromClosureReturnValue,
source§fn try_emit_by_name_with_details_and_values(
&self,
signal_name: &str,
details: Quark,
args: &[Value]
) -> Result<Option<Value>, BoolError>
fn try_emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value] ) -> Result<Option<Value>, BoolError>
Self::emit_by_name_with_details_and_values
but fails instead of panicking.source§fn emit_by_name_with_details_and_values(
&self,
signal_name: &str,
details: Quark,
args: &[Value]
) -> Option<Value>
fn emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value] ) -> Option<Value>
source§fn try_emit_with_details<R>(
&self,
signal_id: SignalId,
details: Quark,
args: &[&dyn ToValue]
) -> Result<R, BoolError>where
R: TryFromClosureReturnValue,
fn try_emit_with_details<R>( &self, signal_id: SignalId, details: Quark, args: &[&dyn ToValue] ) -> Result<R, BoolError>where R: TryFromClosureReturnValue,
Self::emit_with_details
but fails instead of panicking.source§fn emit_with_details<R>(
&self,
signal_id: SignalId,
details: Quark,
args: &[&dyn ToValue]
) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_with_details<R>( &self, signal_id: SignalId, details: Quark, args: &[&dyn ToValue] ) -> Rwhere R: TryFromClosureReturnValue,
source§fn try_emit_with_details_and_values(
&self,
signal_id: SignalId,
details: Quark,
args: &[Value]
) -> Result<Option<Value>, BoolError>
fn try_emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value] ) -> Result<Option<Value>, BoolError>
Self::emit_with_details_and_values
but fails instead of panicking.source§fn emit_with_details_and_values(
&self,
signal_id: SignalId,
details: Quark,
args: &[Value]
) -> Option<Value>
fn emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value] ) -> Option<Value>
source§fn disconnect(&self, handler_id: SignalHandlerId)
fn disconnect(&self, handler_id: SignalHandlerId)
source§fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere
F: Fn(&T, &ParamSpec) + Send + Sync + 'static,
fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere F: Fn(&T, &ParamSpec) + Send + Sync + 'static,
notify
signal of the object. Read moresource§fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere
F: Fn(&T, &ParamSpec) + 'static,
fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerIdwhere F: Fn(&T, &ParamSpec) + 'static,
notify
signal of the object. Read moresource§unsafe fn connect_notify_unsafe<F>(
&self,
name: Option<&str>,
f: F
) -> SignalHandlerIdwhere
F: Fn(&T, &ParamSpec),
unsafe fn connect_notify_unsafe<F>( &self, name: Option<&str>, f: F ) -> SignalHandlerIdwhere F: Fn(&T, &ParamSpec),
notify
signal of the object. Read more