GtkCssValue *value;
GArray *array;
guint i;
+ gboolean computed = TRUE;
if (gtk_css_parser_try_ident (parser, "none"))
return _gtk_css_transform_value_new_none ();
goto fail;
transform.type = GTK_CSS_TRANSFORM_PERSPECTIVE;
+ computed = computed && gtk_css_value_is_computed (transform.perspective.depth);
}
else if (gtk_css_parser_has_function (parser, "rotate") ||
gtk_css_parser_has_function (parser, "rotateZ"))
transform.rotate.x = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.y = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
+ computed = computed && gtk_css_value_is_computed (transform.rotate.angle);
}
else if (gtk_css_parser_has_function (parser, "rotate3d"))
{
}
transform.type = GTK_CSS_TRANSFORM_ROTATE;
+ computed = computed && gtk_css_value_is_computed (transform.rotate.angle) &&
+ gtk_css_value_is_computed (transform.rotate.x) &&
+ gtk_css_value_is_computed (transform.rotate.y) &&
+ gtk_css_value_is_computed (transform.rotate.z);
}
else if (gtk_css_parser_has_function (parser, "rotateX"))
{
transform.rotate.x = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.rotate.y = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.z = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ computed = computed && gtk_css_value_is_computed (transform.rotate.angle);
}
else if (gtk_css_parser_has_function (parser, "rotateY"))
{
transform.rotate.x = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.y = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.rotate.z = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ computed = computed && gtk_css_value_is_computed (transform.rotate.angle);
}
else if (gtk_css_parser_has_function (parser, "scale"))
{
else
transform.scale.y = gtk_css_value_ref (values[0]);
transform.scale.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
+ computed = computed && gtk_css_value_is_computed (transform.scale.x) &&
+ gtk_css_value_is_computed (transform.scale.y);
}
else if (gtk_css_parser_has_function (parser, "scale3d"))
{
transform.scale.x = values[0];
transform.scale.y = values[1];
transform.scale.z = values[2];
+ computed = computed && gtk_css_value_is_computed (transform.scale.x) &&
+ gtk_css_value_is_computed (transform.scale.y) &&
+ gtk_css_value_is_computed (transform.scale.z);
}
else if (gtk_css_parser_has_function (parser, "scaleX"))
{
transform.type = GTK_CSS_TRANSFORM_SCALE;
transform.scale.y = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.scale.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
+ computed = computed && gtk_css_value_is_computed (transform.scale.x);
}
else if (gtk_css_parser_has_function (parser, "scaleY"))
{
transform.type = GTK_CSS_TRANSFORM_SCALE;
transform.scale.x = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.scale.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
+ computed = computed && gtk_css_value_is_computed (transform.scale.y);
}
else if (gtk_css_parser_has_function (parser, "scaleZ"))
{
transform.type = GTK_CSS_TRANSFORM_SCALE;
transform.scale.x = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.scale.y = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
+ computed = computed && gtk_css_value_is_computed (transform.scale.z);
}
else if (gtk_css_parser_has_function (parser, "skew"))
{
transform.type = GTK_CSS_TRANSFORM_SKEW;
transform.skew.x = values[0];
transform.skew.y = values[1];
+ computed = computed && gtk_css_value_is_computed (transform.skew.x) &&
+ gtk_css_value_is_computed (transform.skew.y);
}
else if (gtk_css_parser_has_function (parser, "skewX"))
{
goto fail;
transform.type = GTK_CSS_TRANSFORM_SKEW_X;
+ computed = computed && gtk_css_value_is_computed (transform.skew_x.skew);
}
else if (gtk_css_parser_has_function (parser, "skewY"))
{
goto fail;
transform.type = GTK_CSS_TRANSFORM_SKEW_Y;
+ computed = computed && gtk_css_value_is_computed (transform.skew_y.skew);
}
else if (gtk_css_parser_has_function (parser, "translate"))
{
else
transform.translate.y = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.z = _gtk_css_number_value_new (0, GTK_CSS_PX);
+ computed = computed && gtk_css_value_is_computed (transform.translate.x) &&
+ gtk_css_value_is_computed (transform.translate.y);
}
else if (gtk_css_parser_has_function (parser, "translate3d"))
{
transform.translate.x = values[0];
transform.translate.y = values[1];
transform.translate.z = values[2];
+ computed = computed && gtk_css_value_is_computed (transform.translate.x) &&
+ gtk_css_value_is_computed (transform.translate.y) &&
+ gtk_css_value_is_computed (transform.translate.z);
}
else if (gtk_css_parser_has_function (parser, "translateX"))
{
transform.type = GTK_CSS_TRANSFORM_TRANSLATE;
transform.translate.y = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.z = _gtk_css_number_value_new (0, GTK_CSS_PX);
+ computed = computed && gtk_css_value_is_computed (transform.translate.x);
}
else if (gtk_css_parser_has_function (parser, "translateY"))
{
transform.type = GTK_CSS_TRANSFORM_TRANSLATE;
transform.translate.x = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.z = _gtk_css_number_value_new (0, GTK_CSS_PX);
+ computed = computed && gtk_css_value_is_computed (transform.translate.y);
}
else if (gtk_css_parser_has_function (parser, "translateZ"))
{
transform.type = GTK_CSS_TRANSFORM_TRANSLATE;
transform.translate.x = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.y = _gtk_css_number_value_new (0, GTK_CSS_PX);
+ computed = computed && gtk_css_value_is_computed (transform.translate.z);
}
else
{
}
value = gtk_css_transform_value_alloc (array->len);
+ value->is_computed = computed;
memcpy (value->transforms, array->data, sizeof (GtkCssTransform) * array->len);
g_array_free (array, TRUE);