From 41ece851d63843af906b7daa13def36b34b62e5d Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 22 Jan 2019 19:13:00 -0200 Subject: [PATCH] clutter/paint-nodes: Expose ClutterLayerNode ClutterLayerNode is a private paint node that paints the contents of its subnodes into an offscreen buffer, then paints this entire offscreen buffer at the previous draw framebuffer with the given opacity. It is specially interesting to the future ClutterContent implementation of MetaShapedTexture, for the NVidia and rotation cases where the contents are painted on an offscreen. Expose ClutterLayerNode as public API. https://gitlab.gnome.org/GNOME/mutter/merge_requests/405 --- clutter/clutter/clutter-paint-node-private.h | 24 -------------------- clutter/clutter/clutter-paint-nodes.c | 14 +++++------- clutter/clutter/clutter-paint-nodes.h | 23 +++++++++++++++++++ 3 files changed, 29 insertions(+), 32 deletions(-) diff --git a/clutter/clutter/clutter-paint-node-private.h b/clutter/clutter/clutter-paint-node-private.h index feecdd811..9ac51578c 100644 --- a/clutter/clutter/clutter-paint-node-private.h +++ b/clutter/clutter/clutter-paint-node-private.h @@ -145,30 +145,6 @@ ClutterPaintNode * clutter_paint_node_get_parent (Clutter G_GNUC_INTERNAL CoglFramebuffer * clutter_paint_node_get_framebuffer (ClutterPaintNode *node); -#define CLUTTER_TYPE_LAYER_NODE (_clutter_layer_node_get_type ()) -#define CLUTTER_LAYER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_LAYER_NODE, ClutterLayerNode)) -#define CLUTTER_IS_LAYER_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_LAYER_NODE)) - -/* - * ClutterLayerNode: - * - * The #ClutterLayerNode structure is an opaque - * type whose members cannot be directly accessed. - * - * Since: 1.10 - */ -typedef struct _ClutterLayerNode ClutterLayerNode; -typedef struct _ClutterLayerNodeClass ClutterLayerNodeClass; - -GType _clutter_layer_node_get_type (void) G_GNUC_CONST; - -ClutterPaintNode * _clutter_layer_node_new (const CoglMatrix *projection, - const cairo_rectangle_t *viewport, - float width, - float height, - guint8 opacity); - - G_END_DECLS #endif /* __CLUTTER_PAINT_NODE_PRIVATE_H__ */ diff --git a/clutter/clutter/clutter-paint-nodes.c b/clutter/clutter/clutter-paint-nodes.c index 638ddb4a7..a2c449ad5 100644 --- a/clutter/clutter/clutter-paint-nodes.c +++ b/clutter/clutter/clutter-paint-nodes.c @@ -1079,11 +1079,9 @@ clutter_clip_node_new (void) } /* - * ClutterLayerNode (private) + * ClutterLayerNode */ -#define clutter_layer_node_get_type _clutter_layer_node_get_type - struct _ClutterLayerNode { ClutterPaintNode parent_instance; @@ -1269,11 +1267,11 @@ clutter_layer_node_init (ClutterLayerNode *self) * Since: 1.10 */ ClutterPaintNode * -_clutter_layer_node_new (const CoglMatrix *projection, - const cairo_rectangle_t *viewport, - float width, - float height, - guint8 opacity) +clutter_layer_node_new (const CoglMatrix *projection, + const cairo_rectangle_t *viewport, + float width, + float height, + guint8 opacity) { ClutterLayerNode *res; CoglColor color; diff --git a/clutter/clutter/clutter-paint-nodes.h b/clutter/clutter/clutter-paint-nodes.h index 381c7f8a7..189baafeb 100644 --- a/clutter/clutter/clutter-paint-nodes.h +++ b/clutter/clutter/clutter-paint-nodes.h @@ -143,6 +143,29 @@ CLUTTER_EXPORT ClutterPaintNode * clutter_text_node_new (PangoLayout *layout, const ClutterColor *color); +#define CLUTTER_TYPE_LAYER_NODE (clutter_layer_node_get_type ()) +#define CLUTTER_LAYER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_LAYER_NODE, ClutterLayerNode)) +#define CLUTTER_IS_LAYER_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_LAYER_NODE)) + +/* + * ClutterLayerNode: + * + * The #ClutterLayerNode structure is an opaque + * type whose members cannot be directly accessed. + */ +typedef struct _ClutterLayerNode ClutterLayerNode; +typedef struct _ClutterLayerNodeClass ClutterLayerNodeClass; + +CLUTTER_EXPORT +GType clutter_layer_node_get_type (void) G_GNUC_CONST; + +CLUTTER_EXPORT +ClutterPaintNode * clutter_layer_node_new (const CoglMatrix *projection, + const cairo_rectangle_t *viewport, + float width, + float height, + guint8 opacity); + G_END_DECLS #endif /* __CLUTTER_PAINT_NODES_H__ */