summaryrefslogtreecommitdiff
path: root/gtk/gtkcssdimensionvalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-02-13 02:31:47 +0100
committerBenjamin Otte <otte@redhat.com>2016-02-13 04:49:08 +0100
commit4a9fa1e7505651c3074b1a620047f6bfc5158a5a (patch)
tree72582dcf3e10b9dff940421944ce39d6bf1dbedd /gtk/gtkcssdimensionvalue.c
parent65dd9da44a0a9d5ee211e36c6a779a682469e106 (diff)
downloadgtk+-4a9fa1e7505651c3074b1a620047f6bfc5158a5a.tar.gz
css: Add API to handle order when printing calc()
Also, add some tests and update old ones to print calc() statements correctly.
Diffstat (limited to 'gtk/gtkcssdimensionvalue.c')
-rw-r--r--gtk/gtkcssdimensionvalue.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/gtk/gtkcssdimensionvalue.c b/gtk/gtkcssdimensionvalue.c
index f1a4d90bfb..87efb7a6d6 100644
--- a/gtk/gtkcssdimensionvalue.c
+++ b/gtk/gtkcssdimensionvalue.c
@@ -258,6 +258,33 @@ gtk_css_value_dimension_try_add (const GtkCssValue *value1,
return gtk_css_dimension_value_new (value1->value + value2->value, value1->unit);
}
+static gint
+gtk_css_value_dimension_get_calc_term_order (const GtkCssValue *value)
+{
+ /* note: the order is alphabetic */
+ guint order_per_unit[] = {
+ /* [GTK_CSS_NUMBER] = */ 0,
+ /* [GTK_CSS_PERCENT] = */ 16,
+ /* [GTK_CSS_PX] = */ 11,
+ /* [GTK_CSS_PT] = */ 10,
+ /* [GTK_CSS_EM] = */ 3,
+ /* [GTK_CSS_EX] = */ 4,
+ /* [GTK_CSS_REM] = */ 13,
+ /* [GTK_CSS_PC] = */ 9,
+ /* [GTK_CSS_IN] = */ 6,
+ /* [GTK_CSS_CM] = */ 1,
+ /* [GTK_CSS_MM] = */ 7,
+ /* [GTK_CSS_RAD] = */ 12,
+ /* [GTK_CSS_DEG] = */ 2,
+ /* [GTK_CSS_GRAD] = */ 5,
+ /* [GTK_CSS_TURN] = */ 15,
+ /* [GTK_CSS_S] = */ 14,
+ /* [GTK_CSS_MS] = */ 8
+ };
+
+ return 1000 + order_per_unit[value->unit];
+}
+
static const GtkCssNumberValueClass GTK_CSS_VALUE_DIMENSION = {
{
gtk_css_value_dimension_free,
@@ -270,7 +297,8 @@ static const GtkCssNumberValueClass GTK_CSS_VALUE_DIMENSION = {
gtk_css_value_dimension_get_dimension,
gtk_css_value_dimension_has_percent,
gtk_css_value_dimension_multiply,
- gtk_css_value_dimension_try_add
+ gtk_css_value_dimension_try_add,
+ gtk_css_value_dimension_get_calc_term_order
};
GtkCssValue *