class Gsk::Renderer

Overview

Renders a scene graph defined via a tree of Gsk::RenderNode instances.

Typically you will use a Gsk::Renderer instance to repeatedly call Gsk::Renderer#render to update the contents of its associated Gdk::Surface.

It is necessary to realize a Gsk::Renderer instance using Gsk::Renderer#realize before calling Gsk::Renderer#render, in order to create the appropriate windowing system resources needed to render the scene.

Direct Known Subclasses

Defined in:

lib/gi-crystal/src/auto/gsk-4.0/renderer.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from class GObject::Object

==(other : self) ==, 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) | Nil data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, hash(hasher) hash, 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) | Nil qdata, ref_count : UInt32 ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void) | Nil) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void) | Nil steal_data, steal_qdata(quark : UInt32) : Pointer(Void) | Nil 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, 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

cast?(obj : GObject::Object) : self | Nil cast?, compat_control(what : UInt64, data : Pointer(Void) | Nil) : 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

Macros inherited from class GObject::Object

previous_vfunc(*args) previous_vfunc, previous_vfunc!(*args) previous_vfunc!, signal(signature) signal

Constructor Detail

def self.new #

Initialize a new Renderer.


def self.new(*, realized : Bool | Nil = nil, surface : Gdk::Surface | Nil = nil) #

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.


def self.new_for_surface(surface : Gdk::Surface) : self | Nil #

Creates an appropriate Gsk::Renderer instance for the given surface.

If the GSK_RENDERER environment variable is set, GSK will try that renderer first, before trying the backend-specific default. The ultimate fallback is the cairo renderer.

The renderer will be realized before it is returned.


Instance Method Detail

def ==(other : self) #
Description copied from class Reference

Returns true if this reference is the same as other. Invokes same?.


def hash(hasher) #
Description copied from class Reference

See Object#hash(hasher)


def is_realized? : Bool #

Checks whether the renderer is realized or not.


def realize(surface : Gdk::Surface | Nil) : Bool #

Creates the resources needed by the renderer.

Since GTK 4.6, the surface may be NULL, which allows using renderers without having to create a surface. Since GTK 4.14, it is recommended to use Gsk::Renderer#realize_for_display for this case.

Note that it is mandatory to call Gsk::Renderer#unrealize before destroying the renderer.


def realize_for_display(display : Gdk::Display) : Bool #

Creates the resources needed by the renderer.

Note that it is mandatory to call Gsk::Renderer#unrealize before destroying the renderer.


def realized? : Bool #

def render(root : Gsk::RenderNode, region : Cairo::Region | Nil) : Nil #

Renders the scene graph, described by a tree of Gsk::RenderNode instances to the renderer's surface, ensuring that the given region gets redrawn.

If the renderer has no associated surface, this function does nothing.

Renderers must ensure that changes of the contents given by the root node as well as the area given by region are redrawn. They are however free to not redraw any pixel outside of region if they can guarantee that it didn't change.

The renderer will acquire a reference on the Gsk::RenderNode tree while the rendering is in progress.


def render_texture(root : Gsk::RenderNode, viewport : Graphene::Rect | Nil) : Gdk::Texture #

Renders a scene graph, described by a tree of Gsk::RenderNode instances, to a texture.

The renderer will acquire a reference on the Gsk::RenderNode tree while the rendering is in progress.

If you want to apply any transformations to root, you should put it into a transform node and pass that node instead.


def surface : Gdk::Surface | Nil #

Retrieves the surface that the renderer is associated with.

If the renderer has not been realized yet, NULL will be returned.


def unrealize : Nil #

Releases all the resources created by Gsk::Renderer#realize.