border-image: add support for scale factor

In a later commit we'll add support for rendering borders and
backgrounds with scale factor.

https://bugzilla.gnome.org/show_bug.cgi?id=726907
This commit is contained in:
Cosimo Cecchi 2014-03-22 20:43:35 -07:00
parent 90e52d7266
commit a22fdea0e3
3 changed files with 15 additions and 7 deletions

View File

@ -32,6 +32,8 @@ struct _StBorderImage {
int border_right; int border_right;
int border_bottom; int border_bottom;
int border_left; int border_left;
int scale_factor;
}; };
struct _StBorderImageClass { struct _StBorderImageClass {
@ -69,7 +71,8 @@ st_border_image_new (const char *filename,
int border_top, int border_top,
int border_right, int border_right,
int border_bottom, int border_bottom,
int border_left) int border_left,
int scale_factor)
{ {
StBorderImage *image; StBorderImage *image;
@ -80,6 +83,7 @@ st_border_image_new (const char *filename,
image->border_right = border_right; image->border_right = border_right;
image->border_bottom = border_bottom; image->border_bottom = border_bottom;
image->border_left = border_left; image->border_left = border_left;
image->scale_factor = scale_factor;
return image; return image;
} }
@ -102,13 +106,13 @@ st_border_image_get_borders (StBorderImage *image,
g_return_if_fail (ST_IS_BORDER_IMAGE (image)); g_return_if_fail (ST_IS_BORDER_IMAGE (image));
if (border_top) if (border_top)
*border_top = image->border_top; *border_top = image->border_top * image->scale_factor;
if (border_right) if (border_right)
*border_right = image->border_right; *border_right = image->border_right * image->scale_factor;
if (border_bottom) if (border_bottom)
*border_bottom = image->border_bottom; *border_bottom = image->border_bottom * image->scale_factor;
if (border_left) if (border_left)
*border_left = image->border_left; *border_left = image->border_left * image->scale_factor;
} }
/** /**

View File

@ -43,7 +43,8 @@ StBorderImage *st_border_image_new (const char *filename,
int border_top, int border_top,
int border_right, int border_right,
int border_bottom, int border_bottom,
int border_left); int border_left,
int scale_factor);
const char *st_border_image_get_filename (StBorderImage *image); const char *st_border_image_get_filename (StBorderImage *image);
void st_border_image_get_borders (StBorderImage *image, void st_border_image_get_borders (StBorderImage *image,

View File

@ -2864,6 +2864,7 @@ StBorderImage *
st_theme_node_get_border_image (StThemeNode *node) st_theme_node_get_border_image (StThemeNode *node)
{ {
int i; int i;
int scale_factor;
if (node->border_image_computed) if (node->border_image_computed)
return node->border_image; return node->border_image;
@ -2872,6 +2873,7 @@ st_theme_node_get_border_image (StThemeNode *node)
node->border_image_computed = TRUE; node->border_image_computed = TRUE;
ensure_properties (node); ensure_properties (node);
g_object_get (node->context, "scale-factor", &scale_factor, NULL);
for (i = node->n_properties - 1; i >= 0; i--) for (i = node->n_properties - 1; i >= 0; i--)
{ {
@ -2978,7 +2980,8 @@ st_theme_node_get_border_image (StThemeNode *node)
goto next_property; goto next_property;
node->border_image = st_border_image_new (filename, node->border_image = st_border_image_new (filename,
border_top, border_right, border_bottom, border_left); border_top, border_right, border_bottom, border_left,
scale_factor);
g_free (filename); g_free (filename);