utils: Shuffle and cleanup some paintable code
- It's only used in GcalShellSearchProvider so move it there. - GdkTexture implements GIcon so no need to convert to a pixbuf.
This commit is contained in:
@@ -70,6 +70,39 @@ static GParamSpec* properties[N_PROPS] = { NULL, };
|
|||||||
* Auxiliary methods
|
* Auxiliary methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
GdkTexture*
|
||||||
|
paintable_to_texture (GdkPaintable *paintable)
|
||||||
|
{
|
||||||
|
g_autoptr (GtkSnapshot) snapshot = NULL;
|
||||||
|
g_autoptr (GskRenderNode) node = NULL;
|
||||||
|
g_autoptr (GskRenderer) renderer = NULL;
|
||||||
|
g_autoptr (GdkTexture) texture = NULL;
|
||||||
|
g_autoptr (GError) error = NULL;
|
||||||
|
graphene_rect_t viewport;
|
||||||
|
|
||||||
|
snapshot = gtk_snapshot_new ();
|
||||||
|
gdk_paintable_snapshot (paintable, snapshot,
|
||||||
|
gdk_paintable_get_intrinsic_width (paintable),
|
||||||
|
gdk_paintable_get_intrinsic_height (paintable));
|
||||||
|
node = gtk_snapshot_free_to_node (g_steal_pointer (&snapshot));
|
||||||
|
|
||||||
|
renderer = gsk_cairo_renderer_new ();
|
||||||
|
gsk_renderer_realize (renderer, NULL, &error);
|
||||||
|
if (error)
|
||||||
|
{
|
||||||
|
g_warning ("Couldn't realize Cairo renderer: %s", error->message);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
viewport = GRAPHENE_RECT_INIT (0, 0,
|
||||||
|
gdk_paintable_get_intrinsic_width (paintable),
|
||||||
|
gdk_paintable_get_intrinsic_height (paintable));
|
||||||
|
texture = gsk_renderer_render_texture (renderer, node, &viewport);
|
||||||
|
gsk_renderer_unrealize (renderer);
|
||||||
|
|
||||||
|
return g_steal_pointer (&texture);
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
sort_event_data (GcalEvent *a,
|
sort_event_data (GcalEvent *a,
|
||||||
GcalEvent *b,
|
GcalEvent *b,
|
||||||
@@ -221,8 +254,8 @@ get_result_metas_cb (GcalShellSearchProvider *self,
|
|||||||
for (i = 0; i < g_strv_length (results); i++)
|
for (i = 0; i < g_strv_length (results); i++)
|
||||||
{
|
{
|
||||||
g_autoptr (GdkPaintable) paintable = NULL;
|
g_autoptr (GdkPaintable) paintable = NULL;
|
||||||
|
g_autoptr (GdkTexture) texture = NULL;
|
||||||
g_autoptr (GVariant) icon_variant = NULL;
|
g_autoptr (GVariant) icon_variant = NULL;
|
||||||
g_autoptr (GdkPixbuf) gicon = NULL;
|
|
||||||
|
|
||||||
uuid = results[i];
|
uuid = results[i];
|
||||||
event = g_hash_table_lookup (self->events, uuid);
|
event = g_hash_table_lookup (self->events, uuid);
|
||||||
@@ -232,8 +265,8 @@ get_result_metas_cb (GcalShellSearchProvider *self,
|
|||||||
g_variant_builder_add (&builder, "{sv}", "name", g_variant_new_string (gcal_event_get_summary (event)));
|
g_variant_builder_add (&builder, "{sv}", "name", g_variant_new_string (gcal_event_get_summary (event)));
|
||||||
|
|
||||||
paintable = get_circle_paintable_from_color (gcal_event_get_color (event), 96);
|
paintable = get_circle_paintable_from_color (gcal_event_get_color (event), 96);
|
||||||
gicon = paintable_to_pixbuf (paintable);
|
texture = paintable_to_texture (paintable);
|
||||||
icon_variant = g_icon_serialize (G_ICON (gicon));
|
icon_variant = g_icon_serialize (G_ICON (texture));
|
||||||
g_variant_builder_add (&builder, "{sv}", "icon", icon_variant);
|
g_variant_builder_add (&builder, "{sv}", "icon", icon_variant);
|
||||||
|
|
||||||
local_datetime = g_date_time_to_local (gcal_event_get_date_start (event));
|
local_datetime = g_date_time_to_local (gcal_event_get_date_start (event));
|
||||||
|
|||||||
@@ -183,49 +183,6 @@ get_circle_paintable_from_color (const GdkRGBA *color,
|
|||||||
return gtk_snapshot_to_paintable (snapshot, &GRAPHENE_SIZE_INIT (size, size));
|
return gtk_snapshot_to_paintable (snapshot, &GRAPHENE_SIZE_INIT (size, size));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* paintable_to_pixbuf:
|
|
||||||
* @color: a #GdkRGBA
|
|
||||||
* @size: the size of the surface
|
|
||||||
*
|
|
||||||
* Creates a circular surface filled with @color. The
|
|
||||||
* surface is always @size x @size.
|
|
||||||
*
|
|
||||||
* Returns: (transfer full): a #cairo_surface_t
|
|
||||||
*/
|
|
||||||
GdkPixbuf*
|
|
||||||
paintable_to_pixbuf (GdkPaintable *paintable)
|
|
||||||
{
|
|
||||||
g_autoptr (GtkSnapshot) snapshot = NULL;
|
|
||||||
g_autoptr (GskRenderNode) node = NULL;
|
|
||||||
g_autoptr (GskRenderer) renderer = NULL;
|
|
||||||
g_autoptr (GdkTexture) texture = NULL;
|
|
||||||
g_autoptr (GError) error = NULL;
|
|
||||||
graphene_rect_t viewport;
|
|
||||||
|
|
||||||
snapshot = gtk_snapshot_new ();
|
|
||||||
gdk_paintable_snapshot (paintable, snapshot,
|
|
||||||
gdk_paintable_get_intrinsic_width (paintable),
|
|
||||||
gdk_paintable_get_intrinsic_height (paintable));
|
|
||||||
node = gtk_snapshot_free_to_node (g_steal_pointer (&snapshot));
|
|
||||||
|
|
||||||
renderer = gsk_cairo_renderer_new ();
|
|
||||||
gsk_renderer_realize (renderer, NULL, &error);
|
|
||||||
if (error)
|
|
||||||
{
|
|
||||||
g_warning ("Couldn't realize Cairo renderer: %s", error->message);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
viewport = GRAPHENE_RECT_INIT (0, 0,
|
|
||||||
gdk_paintable_get_intrinsic_width (paintable),
|
|
||||||
gdk_paintable_get_intrinsic_height (paintable));
|
|
||||||
texture = gsk_renderer_render_texture (renderer, node, &viewport);
|
|
||||||
gsk_renderer_unrealize (renderer);
|
|
||||||
|
|
||||||
return gdk_pixbuf_get_from_texture (texture);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get_color_name_from_source:
|
* get_color_name_from_source:
|
||||||
* @source: an #ESource
|
* @source: an #ESource
|
||||||
|
|||||||
@@ -59,8 +59,6 @@ GdkPaintable* gcal_get_paintable_from_color (const GdkRGBA
|
|||||||
GdkPaintable* get_circle_paintable_from_color (const GdkRGBA *color,
|
GdkPaintable* get_circle_paintable_from_color (const GdkRGBA *color,
|
||||||
gint size);
|
gint size);
|
||||||
|
|
||||||
GdkPixbuf* paintable_to_pixbuf (GdkPaintable *paintable);
|
|
||||||
|
|
||||||
void get_color_name_from_source (ESource *source,
|
void get_color_name_from_source (ESource *source,
|
||||||
GdkRGBA *out_color);
|
GdkRGBA *out_color);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user