mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-30 15:31:34 +00:00
2480e0d575
... and make the icon rendering code use it. This requires moving even more shadow renering code into GSK, but so be it. At least the "shadows not implemented" warning is now gone!
82 lines
2.6 KiB
C
82 lines
2.6 KiB
C
#ifndef __GSK_RENDER_NODE_PRIVATE_H__
|
|
#define __GSK_RENDER_NODE_PRIVATE_H__
|
|
|
|
#include "gskrendernode.h"
|
|
#include <cairo.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
typedef struct _GskRenderNodeClass GskRenderNodeClass;
|
|
|
|
#define GSK_IS_RENDER_NODE_TYPE(node,type) (GSK_IS_RENDER_NODE (node) && (node)->node_class->node_type == (type))
|
|
|
|
struct _GskRenderNode
|
|
{
|
|
const GskRenderNodeClass *node_class;
|
|
|
|
volatile int ref_count;
|
|
|
|
/* Use for debugging */
|
|
char *name;
|
|
|
|
/* Scaling filters */
|
|
GskScalingFilter min_filter;
|
|
GskScalingFilter mag_filter;
|
|
|
|
/* Bit fields; leave at the end */
|
|
gboolean is_mutable : 1;
|
|
};
|
|
|
|
struct _GskRenderNodeClass
|
|
{
|
|
GskRenderNodeType node_type;
|
|
gsize struct_size;
|
|
const char *type_name;
|
|
void (* finalize) (GskRenderNode *node);
|
|
void (* make_immutable) (GskRenderNode *node);
|
|
void (* draw) (GskRenderNode *node,
|
|
cairo_t *cr);
|
|
void (* get_bounds) (GskRenderNode *node,
|
|
graphene_rect_t *bounds);
|
|
};
|
|
|
|
GskRenderNode *gsk_render_node_new (const GskRenderNodeClass *node_class);
|
|
|
|
void gsk_render_node_make_immutable (GskRenderNode *node);
|
|
|
|
void gsk_render_node_get_bounds (GskRenderNode *node,
|
|
graphene_rect_t *frame);
|
|
double gsk_opacity_node_get_opacity (GskRenderNode *node);
|
|
|
|
const GskRoundedRect * gsk_border_node_peek_outline (GskRenderNode *node);
|
|
float gsk_border_node_get_width (GskRenderNode *node, guint i);
|
|
const GdkRGBA * gsk_border_node_peek_color (GskRenderNode *node, guint i);
|
|
|
|
cairo_surface_t *gsk_cairo_node_get_surface (GskRenderNode *node);
|
|
|
|
GskTexture *gsk_texture_node_get_texture (GskRenderNode *node);
|
|
|
|
const GdkRGBA *gsk_color_node_peek_color (GskRenderNode *node);
|
|
|
|
const graphene_rect_t * gsk_clip_node_peek_clip (GskRenderNode *node);
|
|
|
|
const GskRoundedRect * gsk_rounded_clip_node_peek_clip (GskRenderNode *node);
|
|
|
|
GskRenderNode * gsk_shadow_node_get_child (GskRenderNode *node);
|
|
const GskShadow * gsk_shadow_node_peek_shadow (GskRenderNode *node, gsize i);
|
|
gsize gsk_shadow_node_get_n_shadows (GskRenderNode *node);
|
|
|
|
void gsk_transform_node_get_transform (GskRenderNode *node, graphene_matrix_t *transform);
|
|
|
|
GskRenderNode * gsk_blend_node_get_bottom_child (GskRenderNode *node);
|
|
GskRenderNode * gsk_blend_node_get_top_child (GskRenderNode *node);
|
|
GskBlendMode gsk_blend_node_get_blend_node (GskRenderNode *node);
|
|
|
|
GskRenderNode * gsk_cross_fade_node_get_start_child (GskRenderNode *node);
|
|
GskRenderNode * gsk_cross_fade_node_get_end_child (GskRenderNode *node);
|
|
double gsk_cross_fade_node_get_progress (GskRenderNode *node);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __GSK_RENDER_NODE_PRIVATE_H__ */
|