Top |
Functions
Properties
GFile * | application-stylesheet | Read / Write / Construct Only |
GFile * | default-stylesheet | Read / Write / Construct Only |
GFile * | theme-stylesheet | Read / Write / Construct Only |
gint | scale-factor | Read / Write |
Types and Values
#define | ST_TYPE_THEME_NODE |
enum | StSide |
enum | StCorner |
enum | StTextDecoration |
enum | StTextAlign |
enum | StGradientType |
enum | StIconStyle |
struct | StThemeNodePaintState |
StTheme | |
StThemeContext | |
StThemeNode |
Description
A StThemeNode represents the CSS style information (the set of CSS properties) for one node in a tree of themed objects. In typical usage, it represents the style information for a single ClutterActor. A StThemeNode is immutable: attributes such as the CSS classes for the node are passed in at construction. If the attributes of the node or any parent node change, the node should be discarded and a new node created. StThemeNode has generic accessors to look up properties by name and specific accessors for standard CSS properties that add caching and handling of various details of the CSS specification. StThemeNode also has convenience functions to help in implementing a ClutterActor with borders and padding.
Functions
st_theme_node_new ()
StThemeNode * st_theme_node_new (StThemeContext *context
,StThemeNode *parent_node
,StTheme *theme
,GType element_type
,const char *element_id
,const char *element_class
,const char *pseudo_class
,const char *inline_style
);
Creates a new StThemeNode. Once created, a node is immutable. Of any
of the attributes of the node (like the element_class
) change the node
and its child nodes must be destroyed and recreated.
Parameters
context |
the context representing global state for this themed tree |
|
parent_node |
the parent node of this node. |
[nullable] |
theme |
a theme (stylesheet set) that overrides the theme inherited from the parent node. |
[nullable] |
element_type |
the type of the GObject represented by this node
in the tree (corresponding to an element if we were theming an XML
document. |
|
element_id |
the ID to match CSS rules against. |
[nullable] |
element_class |
a whitespace-separated list of classes to match CSS rules against. |
[nullable] |
pseudo_class |
a whitespace-separated list of pseudo-classes (like 'hover' or 'visited') to match CSS rules against. |
[nullable] |
st_theme_node_get_parent ()
StThemeNode *
st_theme_node_get_parent (StThemeNode *node
);
Gets the parent themed element node.
Returns
the parent StThemeNode, or NULL
if this
is the root node of the tree of theme elements.
[transfer none]
st_theme_node_get_theme ()
StTheme *
st_theme_node_get_theme (StThemeNode *node
);
Gets the theme stylesheet set that styles this node
st_theme_node_equal ()
gboolean st_theme_node_equal (StThemeNode *node_a
,StThemeNode *node_b
);
Compare two StThemeNodes. Two nodes which compare equal will match
the same CSS rules and have the same style properties. However, two
nodes that have ended up with identical style properties do not
necessarily compare equal.
In detail, node_a
and node_b
are considered equal iff
they share the same StTheme and StThemeContext
they have the same parent
they have the same element type
their id, class, pseudo-class and inline-style match
st_theme_node_lookup_color ()
gboolean st_theme_node_lookup_color (StThemeNode *node
,const char *property_name
,gboolean inherit
,ClutterColor *color
);
Generically looks up a property containing a single color value. When
specific getters (like st_theme_node_get_background_color()
) exist, they
should be used instead. They are cached, so more efficient, and have
handling for shortcut properties and other details of CSS.
See also st_theme_node_get_color()
, which provides a simpler API.
Parameters
node |
||
property_name |
The name of the color property |
|
inherit |
if |
|
color |
location to store the color that was determined. If the property is not found, the value in this location will not be changed. |
[out caller-allocates] |
st_theme_node_lookup_double ()
gboolean st_theme_node_lookup_double (StThemeNode *node
,const char *property_name
,gboolean inherit
,double *value
);
Generically looks up a property containing a single numeric value without units.
See also st_theme_node_get_double()
, which provides a simpler API.
Parameters
node |
||
property_name |
The name of the numeric property |
|
inherit |
if |
|
value |
location to store the value that was determined. If the property is not found, the value in this location will not be changed. |
[out] |
st_theme_node_lookup_length ()
gboolean st_theme_node_lookup_length (StThemeNode *node
,const char *property_name
,gboolean inherit
,gdouble *length
);
Generically looks up a property containing a single length value. When
specific getters (like st_theme_node_get_border_width()
) exist, they
should be used instead. They are cached, so more efficient, and have
handling for shortcut properties and other details of CSS.
See also st_theme_node_get_length()
, which provides a simpler API.
Parameters
node |
||
property_name |
The name of the length property |
|
inherit |
if |
|
length |
location to store the length that was determined. If the property is not found, the value in this location will not be changed. The returned length is resolved to pixels. |
[out] |
st_theme_node_lookup_time ()
gboolean st_theme_node_lookup_time (StThemeNode *node
,const char *property_name
,gboolean inherit
,gdouble *value
);
Generically looks up a property containing a single time value, which is converted to milliseconds.
Parameters
node |
||
property_name |
The name of the time property |
|
inherit |
if |
|
value |
location to store the value that was determined. If the property is not found, the value in this location will not be changed. |
[out] |
st_theme_node_lookup_shadow ()
gboolean st_theme_node_lookup_shadow (StThemeNode *node
,const char *property_name
,gboolean inherit
,StShadow **shadow
);
If the property is not found, the value in the shadow variable will not be changed.
Generically looks up a property containing a set of shadow values. When
specific getters (like st_theme_node_get_box_shadow()
) exist, they
should be used instead. They are cached, so more efficient, and have
handling for shortcut properties and other details of CSS.
See also st_theme_node_get_shadow()
, which provides a simpler API.
Parameters
node |
||
property_name |
The name of the shadow property |
|
inherit |
if |
|
shadow |
location to store the shadow. |
[out] |
st_theme_node_lookup_url ()
gboolean st_theme_node_lookup_url (StThemeNode *node
,const char *property_name
,gboolean inherit
,GFile **file
);
Looks up a property containing a single URL value.
See also st_theme_node_get_url()
, which provides a simpler API.
Parameters
node |
||
property_name |
The name of the string property |
|
inherit |
if |
|
file |
location to store the newly allocated value that was determined. If the property is not found, the value in this location will not be changed. |
[out][transfer full] |
st_theme_node_get_color ()
void st_theme_node_get_color (StThemeNode *node
,const char *property_name
,ClutterColor *color
);
Generically looks up a property containing a single color value. When
specific getters (like st_theme_node_get_background_color()
) exist, they
should be used instead. They are cached, so more efficient, and have
handling for shortcut properties and other details of CSS.
If property_name
is not found, a warning will be logged and a
default color returned.
See also st_theme_node_lookup_color()
, which provides more options,
and lets you handle the case where the theme does not specify the
indicated color.
st_theme_node_get_double ()
gdouble st_theme_node_get_double (StThemeNode *node
,const char *property_name
);
Generically looks up a property containing a single numeric value without units.
See also st_theme_node_lookup_double()
, which provides more options,
and lets you handle the case where the theme does not specify the
indicated value.
st_theme_node_get_length ()
gdouble st_theme_node_get_length (StThemeNode *node
,const char *property_name
);
Generically looks up a property containing a single length value. When
specific getters (like st_theme_node_get_border_width()
) exist, they
should be used instead. They are cached, so more efficient, and have
handling for shortcut properties and other details of CSS.
Unlike st_theme_node_get_color()
and st_theme_node_get_double()
,
this does not print a warning if the property is not found; it just
returns 0.
See also st_theme_node_lookup_length()
, which provides more options.
st_theme_node_get_shadow ()
StShadow * st_theme_node_get_shadow (StThemeNode *node
,const char *property_name
);
Generically looks up a property containing a set of shadow values. When
specific getters (like st_theme_node_get_box_shadow()
) exist, they
should be used instead. They are cached, so more efficient, and have
handling for shortcut properties and other details of CSS.
Like st_theme_get_length()
, this does not print a warning if the property is
not found; it just returns NULL
See also st_theme_node_lookup_shadow()
, which provides more options.
st_theme_node_get_url ()
GFile * st_theme_node_get_url (StThemeNode *node
,const char *property_name
);
Looks up a property containing a single URL value.
See also st_theme_node_lookup_url()
, which provides more options,
and lets you handle the case where the theme does not specify the
indicated value.
st_theme_node_get_background_color ()
void st_theme_node_get_background_color (StThemeNode *node
,ClutterColor *color
);
Gets node
's background color.
st_theme_node_get_foreground_color ()
void st_theme_node_get_foreground_color (StThemeNode *node
,ClutterColor *color
);
Gets node
's foreground color.
st_theme_node_get_background_gradient ()
void st_theme_node_get_background_gradient (StThemeNode *node
,StGradientType *type
,ClutterColor *start
,ClutterColor *end
);
The start
and end
arguments will only be set if type
is not ST_GRADIENT_NONE.
st_theme_node_get_background_image ()
GFile *
st_theme_node_get_background_image (StThemeNode *node
);
st_theme_node_get_border_width ()
int st_theme_node_get_border_width (StThemeNode *node
,StSide side
);
st_theme_node_get_border_radius ()
int st_theme_node_get_border_radius (StThemeNode *node
,StCorner corner
);
st_theme_node_get_border_color ()
void st_theme_node_get_border_color (StThemeNode *node
,StSide side
,ClutterColor *color
);
Gets the color of node
's border on side
st_theme_node_get_outline_color ()
void st_theme_node_get_outline_color (StThemeNode *node
,ClutterColor *color
);
Gets the color of node
's outline.
st_theme_node_get_horizontal_padding ()
double
st_theme_node_get_horizontal_padding (StThemeNode *node
);
Gets the total horizonal padding (left + right padding)
st_theme_node_get_vertical_padding ()
double
st_theme_node_get_vertical_padding (StThemeNode *node
);
Gets the total vertical padding (top + bottom padding)
st_theme_node_get_transition_duration ()
int
st_theme_node_get_transition_duration (StThemeNode *node
);
Get the value of the transition-duration property, which
specifies the transition time between the previous StThemeNode
and node
.
st_theme_node_get_text_decoration ()
StTextDecoration
st_theme_node_get_text_decoration (StThemeNode *node
);
st_theme_node_get_border_image ()
StBorderImage *
st_theme_node_get_border_image (StThemeNode *node
);
Gets the value for the border-image style property
st_theme_node_get_box_shadow ()
StShadow *
st_theme_node_get_box_shadow (StThemeNode *node
);
Gets the value for the box-shadow style property
st_theme_node_get_text_shadow ()
StShadow *
st_theme_node_get_text_shadow (StThemeNode *node
);
Gets the value for the text-shadow style property
st_theme_node_get_background_image_shadow ()
StShadow *
st_theme_node_get_background_image_shadow
(StThemeNode *node
);
Gets the value for the -st-background-image-shadow style property
st_theme_node_get_icon_colors ()
StIconColors *
st_theme_node_get_icon_colors (StThemeNode *node
);
Gets the colors that should be used for colorizing symbolic icons according the style of this node.
st_theme_node_adjust_for_height ()
void st_theme_node_adjust_for_height (StThemeNode *node
,float *for_height
);
Adjusts a "for height" passed to clutter_actor_get_preferred_width()
to
account for borders and padding. This is a convenience function meant
to be called from a get_preferred_width()
method of a ClutterActor
subclass. The value after adjustment is the height available for the actor's
content.
st_theme_node_adjust_preferred_width ()
void st_theme_node_adjust_preferred_width (StThemeNode *node
,float *min_width_p
,float *natural_width_p
);
Adjusts the minimum and natural width computed for an actor by
adding on the necessary space for borders and padding and taking
into account any minimum or maximum width. This is a convenience
function meant to be called from the get_preferred_width()
method
of a ClutterActor subclass
st_theme_node_adjust_for_width ()
void st_theme_node_adjust_for_width (StThemeNode *node
,float *for_width
);
Adjusts a "for width" passed to clutter_actor_get_preferred_height()
to
account for borders and padding. This is a convenience function meant
to be called from a get_preferred_height()
method of a ClutterActor
subclass. The value after adjustment is the width available for the actor's
content.
st_theme_node_adjust_preferred_height ()
void st_theme_node_adjust_preferred_height (StThemeNode *node
,float *min_height_p
,float *natural_height_p
);
Adjusts the minimum and natural height computed for an actor by
adding on the necessary space for borders and padding and taking
into account any minimum or maximum height. This is a convenience
function meant to be called from the get_preferred_height()
method
of a ClutterActor subclass
st_theme_node_get_content_box ()
void st_theme_node_get_content_box (StThemeNode *node
,const ClutterActorBox *allocation
,ClutterActorBox *content_box
);
Gets the box within an actor's allocation that contents the content
of an actor (excluding borders and padding). This is a convenience function
meant to be used from the allocate()
or paint()
methods of a ClutterActor
subclass.
st_theme_node_get_paint_box ()
void st_theme_node_get_paint_box (StThemeNode *node
,const ClutterActorBox *allocation
,ClutterActorBox *paint_box
);
Gets the box used to paint the actor, including the area occupied
by properties which paint outside the actor's assigned allocation.
When painting node
to an offscreen buffer, this function can be
used to determine the necessary size of the buffer.
st_theme_node_get_background_paint_box ()
void st_theme_node_get_background_paint_box (StThemeNode *node
,const ClutterActorBox *allocation
,ClutterActorBox *paint_box
);
Gets the box used to paint the actor's background, including the area occupied by properties which paint outside the actor's assigned allocation.
st_theme_node_geometry_equal ()
gboolean st_theme_node_geometry_equal (StThemeNode *node
,StThemeNode *other
);
Tests if two theme nodes have the same borders and padding; this can be used to optimize having to relayout when the style applied to a Clutter actor changes colors without changing the geometry.
st_theme_node_paint_equal ()
gboolean st_theme_node_paint_equal (StThemeNode *node
,StThemeNode *other
);
Check if st_theme_node_paint()
will paint identically for node
as it does
for other
. Note that in some cases this function may return TRUE
even
if there is no visible difference in the painting.
st_theme_node_paint ()
void st_theme_node_paint (StThemeNode *node
,StThemeNodePaintState *state
,CoglFramebuffer *framebuffer
,const ClutterActorBox *box
,guint8 paint_opacity
);
[skip]
st_theme_node_invalidate_background_image ()
void
st_theme_node_invalidate_background_image
(StThemeNode *node
);
st_theme_node_invalidate_border_image ()
void
st_theme_node_invalidate_border_image (StThemeNode *node
);
st_theme_node_paint_state_init ()
void
st_theme_node_paint_state_init (StThemeNodePaintState *state
);
st_theme_node_paint_state_free ()
void
st_theme_node_paint_state_free (StThemeNodePaintState *state
);
st_theme_node_paint_state_copy ()
void st_theme_node_paint_state_copy (StThemeNodePaintState *state
,StThemeNodePaintState *other
);
st_theme_node_paint_state_invalidate ()
void
st_theme_node_paint_state_invalidate (StThemeNodePaintState *state
);
st_theme_node_paint_state_set_node ()
void st_theme_node_paint_state_set_node (StThemeNodePaintState *state
,StThemeNode *node
);
Types and Values
struct StThemeNodePaintState
struct StThemeNodePaintState { StThemeNode *node; float alloc_width; float alloc_height; float box_shadow_width; float box_shadow_height; CoglPipeline *box_shadow_pipeline; CoglPipeline *prerendered_texture; CoglPipeline *prerendered_pipeline; CoglHandle corner_material[4]; };
Property Details
The “application-stylesheet”
property
“application-stylesheet” GFile *
The highest priority stylesheet, representing application-specific styling; this is associated with the CSS "author" stylesheet.
Flags: Read / Write / Construct Only
The “default-stylesheet”
property
“default-stylesheet” GFile *
The lowest priority stylesheet, representing global default styling; this is associated with the CSS "user agent" stylesheet.
Flags: Read / Write / Construct Only
The “theme-stylesheet”
property
“theme-stylesheet” GFile *
The second priority stylesheet, representing theme-specific styling; this is associated with the CSS "user" stylesheet.
Flags: Read / Write / Construct Only
Signal Details
The “custom-stylesheets-changed”
signal
void user_function (StTheme *sttheme, gpointer user_data)
Flags: Run Last
The “changed”
signal
void user_function (StThemeContext *stthemecontext, gpointer user_data)
Flags: Run Last