class Gsk::Renderer

Overview

Gsk::Renderer is a class that 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

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

def self.new #

Initialize a new Renderer.


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

def self.new_for_surface(surface : Gdk::Surface) : self? #

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.


Class Method Detail

def self.g_type : UInt64 #

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


Instance Method Detail

def is_realized : Bool #

Checks whether the @renderer is realized or not.


def realize(surface : Gdk::Surface?) : Bool #

Creates the resources needed by the @renderer to render the scene graph.

Since GTK 4.6, the surface may be NULL, which allows using renderers without having to create a surface.

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 #

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?) : Gdk::Texture #

Renders the scene graph, described by a tree of Gsk::RenderNode instances, to a Gdk::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? #

Retrieves the Gdk::Surface set using gsk_enderer_realize().

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


def unrealize : Nil #

Releases all the resources created by gsk_renderer_realize().