class Gdk::Texture
- Gdk::Texture
- GObject::Object
- Reference
- Object
Overview
Gdk::Texture
is the basic element used to refer to pixel data.
It is primarily meant for pixel data that will not change over multiple frames, and will be used for a long time.
There are various ways to create Gdk::Texture
objects from a
Gdk::Pixbuf::Pixbuf
, or a Cairo surface, or other pixel data.
The ownership of the pixel data is transferred to the Gdk::Texture
instance; you can only make a copy of it, via Gdk::Texture#download
.
Gdk::Texture
is an immutable object: That means you cannot change
anything about it other than increasing the reference count via
GObject::Object#ref
, and consequently, it is a thread-safe object.
Included Modules
Direct Known Subclasses
Defined in:
lib/gi-crystal/src/auto/gdk-4.0/texture.crConstructors
-
.new
Initialize a new
Texture
. - .new(*, height : Int32? = nil, width : Int32? = nil)
-
.new_for_pixbuf(pixbuf : GdkPixbuf::Pixbuf) : self
Creates a new texture object representing the
Gdk::Pixbuf
. -
.new_from_bytes(bytes : GLib::Bytes) : self
Creates a new texture by loading an image from memory,
-
.new_from_file(file : Gio::File) : self
Creates a new texture by loading an image from a file.
-
.new_from_filename(path : String) : self
Creates a new texture by loading an image from a file.
-
.new_from_resource(resource_path : String) : self
Creates a new texture by loading an image from a resource.
Class Method Summary
-
.g_type : UInt64
Returns the type id (GType) registered in GLib type system.
Instance Method Summary
-
#download(data : Enumerable(UInt8), stride : UInt64) : Nil
Downloads the @texture into local memory.
-
#height : Int32
Returns the height of the @texture, in pixels.
- #height=(value : Int32) : Int32
-
#save_to_png(filename : String) : Bool
Store the given @texture to the @filename as a PNG file.
-
#save_to_png_bytes : GLib::Bytes
Store the given @texture in memory as a PNG file.
-
#save_to_tiff(filename : String) : Bool
Store the given @texture to the @filename as a TIFF file.
-
#save_to_tiff_bytes : GLib::Bytes
Store the given @texture in memory as a TIFF file.
-
#width : Int32
Returns the width of @texture, in pixels.
- #width=(value : Int32) : Int32
Instance methods inherited from module Gio::LoadableIcon
load(size : Int32, cancellable : Gio::Cancellable?) : Gio::InputStream
load,
load_async(size : Int32, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil
load_async,
load_finish(res : Gio::AsyncResult) : Gio::InputStream
load_finish,
to_unsafe
to_unsafe
Class methods inherited from module Gio::LoadableIcon
g_type : UInt64
g_type
Instance methods inherited from module Gio::Icon
equal(icon2 : Gio::Icon?) : Bool
equal,
new_for_string(str : String) : Gio::Icon
new_for_string,
serialize : GLib::Variant?
serialize,
to_string : String?
to_string,
to_unsafe
to_unsafe
Class methods inherited from module Gio::Icon
deserialize(value : _) : Gio::Icon?
deserialize,
g_type : UInt64
g_type,
hash(icon : Pointer(Void)) : UInt32
hash
Instance methods inherited from module Gdk::Paintable
compute_concrete_size(specified_width : Float64, specified_height : Float64, default_width : Float64, default_height : Float64, concrete_width : Float64, concrete_height : Float64) : Nil
compute_concrete_size,
current_image : Gdk::Paintable
current_image,
flags : Gdk::PaintableFlags
flags,
intrinsic_aspect_ratio : Float64
intrinsic_aspect_ratio,
intrinsic_height : Int32
intrinsic_height,
intrinsic_width : Int32
intrinsic_width,
invalidate_contents : Nil
invalidate_contents,
invalidate_contents_signal
invalidate_contents_signal,
invalidate_size : Nil
invalidate_size,
invalidate_size_signal
invalidate_size_signal,
snapshot(snapshot : Gdk::Snapshot, width : Float64, height : Float64) : Nil
snapshot,
to_unsafe
to_unsafe
Class methods inherited from module Gdk::Paintable
g_type : UInt64
g_type,
new_empty(intrinsic_width : Int32, intrinsic_height : Int32) : Gdk::Paintable
new_empty
Instance methods inherited from class GObject::Object
bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding
bind_property,
bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding
bind_property_full,
data(key : String) : Pointer(Void)?
data,
finalize
finalize,
freeze_notify : Nil
freeze_notify,
getv(names : Enumerable(String), values : Enumerable(_)) : Nil
getv,
notify(property_name : String) : Nil
notify,
notify_by_pspec(pspec : GObject::ParamSpec) : Nil
notify_by_pspec,
notify_signal
notify_signal,
property(property_name : String, value : _) : Nil
property,
qdata(quark : UInt32) : Pointer(Void)?
qdata,
ref_count : UInt32
ref_count,
run_dispose : Nil
run_dispose,
set_data(key : String, data : Pointer(Void)?) : Nil
set_data,
set_property(property_name : String, value : _) : Nil
set_property,
steal_data(key : String) : Pointer(Void)?
steal_data,
steal_qdata(quark : UInt32) : Pointer(Void)?
steal_qdata,
thaw_notify : Nil
thaw_notify,
to_unsafe : Pointer(Void)
to_unsafe,
watch_closure(closure : GObject::Closure) : Nil
watch_closure
Constructor methods inherited from class GObject::Object
cast(obj : GObject::Object) : self
cast,
cast?(obj : GObject::Object) : self?
cast?,
new(pointer : Pointer(Void), transfer : GICrystal::Transfer)new new, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv
Class methods inherited from class GObject::Object
compat_control(what : UInt64, data : Pointer(Void)?) : UInt64
compat_control,
g_type : UInt64
g_type,
interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec
interface_find_property,
interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec)
interface_list_properties
Constructor Detail
Creates a new texture object representing the Gdk::Pixbuf
.
This function is threadsafe, so that you can e.g. use GTask
and Gio::Task#run_in_thread
to avoid blocking the main thread
while loading a big image.
Creates a new texture by loading an image from memory,
The file format is detected automatically. The supported formats are PNG and JPEG, though more formats might be available.
If nil
is returned, then @error will be set.
This function is threadsafe, so that you can e.g. use GTask
and Gio::Task#run_in_thread
to avoid blocking the main thread
while loading a big image.
Creates a new texture by loading an image from a file.
The file format is detected automatically. The supported formats are PNG and JPEG, though more formats might be available.
If nil
is returned, then @error will be set.
This function is threadsafe, so that you can e.g. use GTask
and Gio::Task#run_in_thread
to avoid blocking the main thread
while loading a big image.
Creates a new texture by loading an image from a file.
The file format is detected automatically. The supported formats are PNG and JPEG, though more formats might be available.
If nil
is returned, then @error will be set.
This function is threadsafe, so that you can e.g. use GTask
and Gio::Task#run_in_thread
to avoid blocking the main thread
while loading a big image.
Creates a new texture by loading an image from a resource.
The file format is detected automatically. The supported formats are PNG and JPEG, though more formats might be available.
It is a fatal error if @resource_path does not specify a valid
image resource and the program will abort if that happens.
If you are unsure about the validity of a resource, use
Gdk::Texture#new_from_file
to load it.
This function is threadsafe, so that you can e.g. use GTask
and Gio::Task#run_in_thread
to avoid blocking the main thread
while loading a big image.
Class Method Detail
Instance Method Detail
Downloads the @texture into local memory.
This may be an expensive operation, as the actual texture data may reside on a GPU or on a remote display server.
The data format of the downloaded data is equivalent to %CAIRO_FORMAT_ARGB32, so every downloaded pixel requires 4 bytes of memory.
Downloading a texture into a Cairo image surface:
WARNING ⚠️ The following code is in c ⚠️
surface = cairo_::image_surface_create (CAIRO_FORMAT_ARGB32,
gdk_texture_get_width (texture),
gdk_texture_get_height (texture));
gdk_texture_download (texture,
cairo_::image_surface_get_data (surface),
cairo_::image_surface_get_stride (surface));
cairo_::surface_mark_dirty (surface);
Store the given @texture to the @filename as a PNG file.
This is a utility function intended for debugging and testing.
If you want more control over formats, proper error handling or
want to store to a Gio::File
or other location, you might want to
use Gdk::Texture#save_to_png_bytes
or look into the
gdk-pixbuf library.
Store the given @texture in memory as a PNG file.
Use Gdk::Texture#new_from_bytes
to read it back.
If you want to serialize a texture, this is a convenient and portable way to do that.
If you need more control over the generated image, such as attaching metadata, you should look into an image handling library such as the gdk-pixbuf library.
If you are dealing with high dynamic range float data, you
might also want to consider Gdk::Texture#save_to_tiff_bytes
instead.
Store the given @texture to the @filename as a TIFF file.
GTK will attempt to store data without loss.
Store the given @texture in memory as a TIFF file.
Use Gdk::Texture#new_from_bytes
to read it back.
This function is intended to store a representation of the texture's data that is as accurate as possible. This is particularly relevant when working with high dynamic range images and floating-point texture data.
If that is not your concern and you are interested in a
smaller size and a more portable format, you might want to
use Gdk::Texture#save_to_png_bytes
.