RoundedRect

class RoundedRect(*args, **kwargs)

A rectangular region with rounded corners.

Application code should normalize rectangles using normalize; this function will ensure that the bounds of the rectangle are normalized and ensure that the corner values are positive and the corners do not overlap.

All functions taking a GskRoundedRect as an argument will internally operate on a normalized copy; all functions returning a GskRoundedRect will always return a normalized one.

The algorithm used for normalizing corner sizes is described in the CSS specification <https://drafts.csswg.org/css-backgrounds-3/``border`-radius>`_.

Methods

class RoundedRect
contains_point(point: Point) bool

Checks if the given point is inside the rounded rectangle.

Parameters:

point – the point to check

contains_rect(rect: Rect) bool

Checks if the given rect is contained inside the rounded rectangle.

Parameters:

rect – the rectangle to check

init(bounds: Rect, top_left: Size, top_right: Size, bottom_right: Size, bottom_left: Size) RoundedRect

Initializes the given GskRoundedRect with the given values.

This function will implicitly normalize the GskRoundedRect before returning.

Parameters:
  • bounds – a graphene_rect_t describing the bounds

  • top_left – the rounding radius of the top left corner

  • top_right – the rounding radius of the top right corner

  • bottom_right – the rounding radius of the bottom right corner

  • bottom_left – the rounding radius of the bottom left corner

init_from_rect(bounds: Rect, radius: float) RoundedRect

Initializes self to the given bounds and sets the radius of all four corners to radius.

Parameters:
  • bounds – a graphene_rect_t

  • radius – the border radius

intersects_rect(rect: Rect) bool

Checks if part of the given rect is contained inside the rounded rectangle.

Parameters:

rect – the rectangle to check

is_rectilinear() bool

Checks if all corners of self are right angles and the rectangle covers all of its bounds.

This information can be used to decide if new or new should be called.

normalize() RoundedRect

Normalizes the passed rectangle.

This function will ensure that the bounds of the rectangle are normalized and ensure that the corner values are positive and the corners do not overlap.

offset(dx: float, dy: float) RoundedRect

Offsets the bound’s origin by dx and dy.

The size and corners of the rectangle are unchanged.

Parameters:
  • dx – the horizontal offset

  • dy – the vertical offset

shrink(top: float, right: float, bottom: float, left: float) RoundedRect

Shrinks (or grows) the given rectangle by moving the 4 sides according to the offsets given.

The corner radii will be changed in a way that tries to keep the center of the corner circle intact. This emulates CSS behavior.

This function also works for growing rectangles if you pass negative values for the top, right, bottom or left.

Parameters:
  • top – How far to move the top side downwards

  • right – How far to move the right side to the left

  • bottom – How far to move the bottom side upwards

  • left – How far to move the left side to the right

Fields

class RoundedRect
bounds

The bounds of the rectangle

corner

The size of the 4 rounded corners