[gtk+/wip/renderops: 4/9] inspector: Add a description vfunc for render operations
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/renderops: 4/9] inspector: Add a description vfunc for render operations
- Date: Wed, 1 Jul 2015 04:47:24 +0000 (UTC)
commit 5da78ac0c5a33f66b7314b57eade828e9c2dc538
Author: Benjamin Otte <otte redhat com>
Date: Tue Jun 30 02:33:18 2015 +0200
inspector: Add a description vfunc for render operations
gtk/inspector/gtkrenderoperation.c | 15 +++++++++++++++
gtk/inspector/gtkrenderoperation.h | 2 ++
gtk/inspector/gtkrenderoperationcairo.c | 7 +++++++
gtk/inspector/gtkrenderoperationwidget.c | 10 ++++++++++
gtk/inspector/gtkrenderoperationwidget.h | 1 +
gtk/inspector/snapshot.c | 6 ++++--
6 files changed, 39 insertions(+), 2 deletions(-)
---
diff --git a/gtk/inspector/gtkrenderoperation.c b/gtk/inspector/gtkrenderoperation.c
index 5e0520d..e2950c7 100644
--- a/gtk/inspector/gtkrenderoperation.c
+++ b/gtk/inspector/gtkrenderoperation.c
@@ -37,6 +37,12 @@ gtk_render_operation_real_get_matrix (GtkRenderOperation *operation,
cairo_matrix_init_identity (matrix);
}
+static char *
+gtk_render_operation_real_describe (GtkRenderOperation *operation)
+{
+ return g_strdup (G_OBJECT_TYPE_NAME (operation));
+}
+
static void
gtk_render_operation_real_draw (GtkRenderOperation *operation,
cairo_t *cr)
@@ -48,6 +54,7 @@ gtk_render_operation_class_init (GtkRenderOperationClass *klass)
{
klass->get_clip = gtk_render_operation_real_get_clip;
klass->get_matrix = gtk_render_operation_real_get_matrix;
+ klass->describe = gtk_render_operation_real_describe;
klass->draw = gtk_render_operation_real_draw;
}
@@ -76,6 +83,14 @@ gtk_render_operation_get_matrix (GtkRenderOperation *operation,
GTK_RENDER_OPERATION_GET_CLASS (operation)->get_matrix (operation, matrix);
}
+char *
+gtk_render_operation_describe (GtkRenderOperation *operation)
+{
+ g_return_val_if_fail (GTK_IS_RENDER_OPERATION (operation), NULL);
+
+ return GTK_RENDER_OPERATION_GET_CLASS (operation)->describe (operation);
+}
+
void
gtk_render_operation_draw (GtkRenderOperation *operation,
cairo_t *cr)
diff --git a/gtk/inspector/gtkrenderoperation.h b/gtk/inspector/gtkrenderoperation.h
index e12f0d2..9597a8e 100644
--- a/gtk/inspector/gtkrenderoperation.h
+++ b/gtk/inspector/gtkrenderoperation.h
@@ -50,6 +50,7 @@ struct _GtkRenderOperationClass
void (* get_matrix) (GtkRenderOperation *operation,
cairo_matrix_t *matrix);
+ char * (* describe) (GtkRenderOperation *operation);
void (* draw) (GtkRenderOperation *operation,
cairo_t *cr);
};
@@ -61,6 +62,7 @@ void gtk_render_operation_get_clip (GtkRenderOperation
void gtk_render_operation_get_matrix (GtkRenderOperation *operation,
cairo_matrix_t *matrix);
+char * gtk_render_operation_describe (GtkRenderOperation *operation);
void gtk_render_operation_draw (GtkRenderOperation *operation,
cairo_t *cr);
diff --git a/gtk/inspector/gtkrenderoperationcairo.c b/gtk/inspector/gtkrenderoperationcairo.c
index ce9e30f..1116bbd 100644
--- a/gtk/inspector/gtkrenderoperationcairo.c
+++ b/gtk/inspector/gtkrenderoperationcairo.c
@@ -45,6 +45,12 @@ gtk_render_operation_cairo_get_clip (GtkRenderOperation *operation,
clip->height = ceil (extents.y + extents.height) - clip->y;
}
+static char *
+gtk_render_operation_cairo_describe (GtkRenderOperation *operation)
+{
+ return g_strdup ("custom rendering");
+}
+
static void
gtk_render_operation_cairo_draw (GtkRenderOperation *operation,
cairo_t *cr)
@@ -74,6 +80,7 @@ gtk_render_operation_cairo_class_init (GtkRenderOperationCairoClass *klass)
object_class->finalize = gtk_render_operation_cairo_finalize;
operation_class->get_clip = gtk_render_operation_cairo_get_clip;
+ operation_class->describe = gtk_render_operation_cairo_describe;
operation_class->draw = gtk_render_operation_cairo_draw;
}
diff --git a/gtk/inspector/gtkrenderoperationwidget.c b/gtk/inspector/gtkrenderoperationwidget.c
index c1d151b..9a7c73e 100644
--- a/gtk/inspector/gtkrenderoperationwidget.c
+++ b/gtk/inspector/gtkrenderoperationwidget.c
@@ -41,6 +41,14 @@ gtk_render_operation_widget_get_matrix (GtkRenderOperation *operation,
*matrix = oper->matrix;
}
+static char *
+gtk_render_operation_widget_describe (GtkRenderOperation *operation)
+{
+ GtkRenderOperationWidget *oper = GTK_RENDER_OPERATION_WIDGET (operation);
+
+ return g_strdup (g_type_name (oper->widget_type));
+}
+
static void
gtk_render_operation_widget_draw (GtkRenderOperation *operation,
cairo_t *cr)
@@ -81,6 +89,7 @@ gtk_render_operation_widget_class_init (GtkRenderOperationWidgetClass *klass)
operation_class->get_clip = gtk_render_operation_widget_get_clip;
operation_class->get_matrix = gtk_render_operation_widget_get_matrix;
+ operation_class->describe = gtk_render_operation_widget_describe;
operation_class->draw = gtk_render_operation_widget_draw;
}
@@ -100,6 +109,7 @@ gtk_render_operation_widget_new (GtkWidget *widget,
result = g_object_new (GTK_TYPE_RENDER_OPERATION_WIDGET, NULL);
+ result->widget_type = G_OBJECT_TYPE (widget);
gtk_widget_get_allocation (widget, &result->widget_allocation);
gtk_widget_get_clip (widget, &result->widget_clip);
result->widget_clip.x -= result->widget_allocation.x;
diff --git a/gtk/inspector/gtkrenderoperationwidget.h b/gtk/inspector/gtkrenderoperationwidget.h
index 652840d..cdd0c90 100644
--- a/gtk/inspector/gtkrenderoperationwidget.h
+++ b/gtk/inspector/gtkrenderoperationwidget.h
@@ -40,6 +40,7 @@ struct _GtkRenderOperationWidget
{
GtkRenderOperation parent;
+ GType widget_type;
GtkAllocation widget_allocation;
GtkAllocation widget_clip;
cairo_matrix_t matrix;
diff --git a/gtk/inspector/snapshot.c b/gtk/inspector/snapshot.c
index 4c9ee59..1892270 100644
--- a/gtk/inspector/snapshot.c
+++ b/gtk/inspector/snapshot.c
@@ -161,13 +161,15 @@ gtk_inspector_snapshot_fill_listbox (GtkInspectorSnapshot *snapshot,
guint depth)
{
GtkWidget *label, *row;
- char *text;
+ char *text, *description;
- text = g_strdup_printf ("%*s %s", 2 * depth, "", G_OBJECT_TYPE_NAME (oper));
+ description = gtk_render_operation_describe (oper);
+ text = g_strdup_printf ("%*s %s", 2 * depth, "", description);
label = gtk_label_new (text);
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
gtk_widget_show (label);
g_free (text);
+ g_free (description);
row = gtk_list_box_row_new ();
gtk_container_add (GTK_CONTAINER (row), label);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]