From a2dfb1e93f7356d3d787429a382260660d714c26 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 13 Dec 2016 20:36:00 +0100 Subject: [PATCH] roundedbox: typedef to GskRoundedRect --- gtk/gtkcssshadowvalue.c | 80 ++++++------- gtk/gtkrenderbackground.c | 6 +- gtk/gtkroundedbox.c | 232 ++++++++++++++++++------------------- gtk/gtkroundedboxprivate.h | 8 +- 4 files changed, 160 insertions(+), 166 deletions(-) diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c index 8f7da51656..b7a8955cc7 100644 --- a/gtk/gtkcssshadowvalue.c +++ b/gtk/gtkcssshadowvalue.c @@ -713,46 +713,46 @@ draw_shadow_corner (const GtkCssValue *shadow, overlapped = FALSE; if (corner == GSK_CORNER_TOP_LEFT || corner == GSK_CORNER_BOTTOM_LEFT) { - x1 = floor (box->box.x - clip_radius); - x2 = ceil (box->box.x + box->corner[corner].width + clip_radius); + x1 = floor (box->bounds.origin.x - clip_radius); + x2 = ceil (box->bounds.origin.x + box->corner[corner].width + clip_radius); x = x1; sx = 1; max_other = MAX(box->corner[GSK_CORNER_TOP_RIGHT].width, box->corner[GSK_CORNER_BOTTOM_RIGHT].width); - x3 = floor (box->box.x + box->box.width - max_other - clip_radius); + x3 = floor (box->bounds.origin.x + box->bounds.size.width - max_other - clip_radius); if (x2 > x3) overlapped = TRUE; } else { - x1 = floor (box->box.x + box->box.width - box->corner[corner].width - clip_radius); - x2 = ceil (box->box.x + box->box.width + clip_radius); + x1 = floor (box->bounds.origin.x + box->bounds.size.width - box->corner[corner].width - clip_radius); + x2 = ceil (box->bounds.origin.x + box->bounds.size.width + clip_radius); x = x2; sx = -1; max_other = MAX(box->corner[GSK_CORNER_TOP_LEFT].width, box->corner[GSK_CORNER_BOTTOM_LEFT].width); - x3 = ceil (box->box.x + max_other + clip_radius); + x3 = ceil (box->bounds.origin.x + max_other + clip_radius); if (x3 > x1) overlapped = TRUE; } if (corner == GSK_CORNER_TOP_LEFT || corner == GSK_CORNER_TOP_RIGHT) { - y1 = floor (box->box.y - clip_radius); - y2 = ceil (box->box.y + box->corner[corner].height + clip_radius); + y1 = floor (box->bounds.origin.y - clip_radius); + y2 = ceil (box->bounds.origin.y + box->corner[corner].height + clip_radius); y = y1; sy = 1; max_other = MAX(box->corner[GSK_CORNER_BOTTOM_LEFT].height, box->corner[GSK_CORNER_BOTTOM_RIGHT].height); - y3 = floor (box->box.y + box->box.height - max_other - clip_radius); + y3 = floor (box->bounds.origin.y + box->bounds.size.height - max_other - clip_radius); if (y2 > y3) overlapped = TRUE; } else { - y1 = floor (box->box.y + box->box.height - box->corner[corner].height - clip_radius); - y2 = ceil (box->box.y + box->box.height + clip_radius); + y1 = floor (box->bounds.origin.y + box->bounds.size.height - box->corner[corner].height - clip_radius); + y2 = ceil (box->bounds.origin.y + box->bounds.size.height + clip_radius); y = y2; sy = -1; max_other = MAX(box->corner[GSK_CORNER_TOP_LEFT].height, box->corner[GSK_CORNER_TOP_RIGHT].height); - y3 = ceil (box->box.y + max_other + clip_radius); + y3 = ceil (box->bounds.origin.y + max_other + clip_radius); if (y3 > y1) overlapped = TRUE; } @@ -843,35 +843,35 @@ draw_shadow_side (const GtkCssValue *shadow, if (side == GTK_CSS_TOP || side == GTK_CSS_BOTTOM) { blur_flags |= GTK_BLUR_Y; - x1 = floor (box->box.x - clip_radius); - x2 = ceil (box->box.x + box->box.width + clip_radius); + x1 = floor (box->bounds.origin.x - clip_radius); + x2 = ceil (box->bounds.origin.x + box->bounds.size.width + clip_radius); } else if (side == GTK_CSS_LEFT) { - x1 = floor (box->box.x -clip_radius); - x2 = ceil (box->box.x + clip_radius); + x1 = floor (box->bounds.origin.x -clip_radius); + x2 = ceil (box->bounds.origin.x + clip_radius); } else { - x1 = floor (box->box.x + box->box.width -clip_radius); - x2 = ceil (box->box.x + box->box.width + clip_radius); + x1 = floor (box->bounds.origin.x + box->bounds.size.width -clip_radius); + x2 = ceil (box->bounds.origin.x + box->bounds.size.width + clip_radius); } if (side == GTK_CSS_LEFT || side == GTK_CSS_RIGHT) { blur_flags |= GTK_BLUR_X; - y1 = floor (box->box.y - clip_radius); - y2 = ceil (box->box.y + box->box.height + clip_radius); + y1 = floor (box->bounds.origin.y - clip_radius); + y2 = ceil (box->bounds.origin.y + box->bounds.size.height + clip_radius); } else if (side == GTK_CSS_TOP) { - y1 = floor (box->box.y -clip_radius); - y2 = ceil (box->box.y + clip_radius); + y1 = floor (box->bounds.origin.y -clip_radius); + y2 = ceil (box->bounds.origin.y + clip_radius); } else { - y1 = floor (box->box.y + box->box.height -clip_radius); - y2 = ceil (box->box.y + box->box.height + clip_radius); + y1 = floor (box->bounds.origin.y + box->bounds.size.height -clip_radius); + y2 = ceil (box->bounds.origin.y + box->bounds.size.height + clip_radius); } drawn_rect->x = x1; @@ -961,20 +961,20 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow, * We could remove the part of "box" where the blur doesn't * reach, but computing that is a bit tricky since the * rounded corners are on the "inside" of it. */ - r.x = floor (clip_box.box.x); - r.y = floor (clip_box.box.y); - r.width = ceil (clip_box.box.x + clip_box.box.width) - r.x; - r.height = ceil (clip_box.box.y + clip_box.box.height) - r.y; + r.x = floor (clip_box.bounds.origin.x); + r.y = floor (clip_box.bounds.origin.y); + r.width = ceil (clip_box.bounds.origin.x + clip_box.bounds.size.width) - r.x; + r.height = ceil (clip_box.bounds.origin.y + clip_box.bounds.size.height) - r.y; remaining = cairo_region_create_rectangle (&r); } else { /* In the outset case we want to paint the entire box, plus as far * as the radius reaches from it */ - r.x = floor (box.box.x - clip_radius); - r.y = floor (box.box.y - clip_radius); - r.width = ceil (box.box.x + box.box.width + clip_radius) - r.x; - r.height = ceil (box.box.y + box.box.height + clip_radius) - r.y; + r.x = floor (box.bounds.origin.x - clip_radius); + r.y = floor (box.bounds.origin.y - clip_radius); + r.width = ceil (box.bounds.origin.x + box.bounds.size.width + clip_radius) - r.x; + r.height = ceil (box.bounds.origin.y + box.bounds.size.height + clip_radius) - r.y; remaining = cairo_region_create_rectangle (&r); } @@ -1039,10 +1039,10 @@ gtk_css_shadow_value_snapshot_outset (const GtkCssValue *shadow, cr = gtk_snapshot_append_cairo_node (snapshot, &GRAPHENE_RECT_INIT ( - border_box->box.x - extents.left, - border_box->box.y - extents.top, - border_box->box.width + extents.left + extents.right, - border_box->box.height + extents.top + extents.bottom), + border_box->bounds.origin.x - extents.left, + border_box->bounds.origin.y - extents.top, + border_box->bounds.size.width + extents.left + extents.right, + border_box->bounds.size.height + extents.top + extents.bottom), "Outset Shadow"); _gtk_css_shadow_value_paint_box (shadow, cr, border_box); cairo_destroy (cr); @@ -1063,10 +1063,10 @@ gtk_css_shadow_value_snapshot_inset (const GtkCssValue *shadow, cr = gtk_snapshot_append_cairo_node (snapshot, &GRAPHENE_RECT_INIT ( - padding_box->box.x, - padding_box->box.y, - padding_box->box.width, - padding_box->box.height), + padding_box->bounds.origin.x, + padding_box->bounds.origin.y, + padding_box->bounds.size.width, + padding_box->bounds.size.height), "Inset Shadow"); _gtk_css_shadow_value_paint_box (shadow, cr, padding_box); cairo_destroy (cr); diff --git a/gtk/gtkrenderbackground.c b/gtk/gtkrenderbackground.c index 9388dd81a0..4ef6ccd187 100644 --- a/gtk/gtkrenderbackground.c +++ b/gtk/gtkrenderbackground.c @@ -136,8 +136,8 @@ gtk_theming_background_paint_layer (GtkThemingBackground *bg, _gtk_css_array_value_get_nth ( gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_ORIGIN), idx))]; - width = origin->box.width; - height = origin->box.height; + width = origin->bounds.size.width; + height = origin->bounds.size.height; if (image == NULL || width <= 0 || height <= 0) return; @@ -171,7 +171,7 @@ gtk_theming_background_paint_layer (GtkThemingBackground *bg, cairo_clip (cr); - cairo_translate (cr, origin->box.x, origin->box.y); + cairo_translate (cr, origin->bounds.origin.x, origin->bounds.origin.y); /* * Apply the blend mode, if any. diff --git a/gtk/gtkroundedbox.c b/gtk/gtkroundedbox.c index 6ab8246dfa..43e56f311e 100644 --- a/gtk/gtkroundedbox.c +++ b/gtk/gtkroundedbox.c @@ -45,10 +45,10 @@ _gtk_rounded_box_init_rect (GtkRoundedBox *box, { memset (box, 0, sizeof (GtkRoundedBox)); - box->box.x = x; - box->box.y = y; - box->box.width = width; - box->box.height = height; + box->bounds.origin.x = x; + box->bounds.origin.y = y; + box->bounds.size.width = width; + box->bounds.size.height = height; } /* clamp border radius, following CSS specs */ @@ -60,19 +60,19 @@ gtk_rounded_box_clamp_border_radius (GtkRoundedBox *box) corners = box->corner[GSK_CORNER_TOP_LEFT].width + box->corner[GSK_CORNER_TOP_RIGHT].width; if (corners != 0) - factor = MIN (factor, box->box.width / corners); + factor = MIN (factor, box->bounds.size.width / corners); corners = box->corner[GSK_CORNER_TOP_RIGHT].height + box->corner[GSK_CORNER_BOTTOM_RIGHT].height; if (corners != 0) - factor = MIN (factor, box->box.height / corners); + factor = MIN (factor, box->bounds.size.height / corners); corners = box->corner[GSK_CORNER_BOTTOM_RIGHT].width + box->corner[GSK_CORNER_BOTTOM_LEFT].width; if (corners != 0) - factor = MIN (factor, box->box.width / corners); + factor = MIN (factor, box->bounds.size.width / corners); corners = box->corner[GSK_CORNER_TOP_LEFT].height + box->corner[GSK_CORNER_BOTTOM_LEFT].height; if (corners != 0) - factor = MIN (factor, box->box.height / corners); + factor = MIN (factor, box->bounds.size.height / corners); box->corner[GSK_CORNER_TOP_LEFT].width *= factor; box->corner[GSK_CORNER_TOP_LEFT].height *= factor; @@ -92,30 +92,30 @@ _gtk_rounded_box_apply_border_radius (GtkRoundedBox *box, if (corner[GSK_CORNER_TOP_LEFT] && (junction & GTK_JUNCTION_CORNER_TOPLEFT) == 0) { box->corner[GSK_CORNER_TOP_LEFT].width = _gtk_css_corner_value_get_x (corner[GSK_CORNER_TOP_LEFT], - box->box.width); + box->bounds.size.width); box->corner[GSK_CORNER_TOP_LEFT].height = _gtk_css_corner_value_get_y (corner[GSK_CORNER_TOP_LEFT], - box->box.height); + box->bounds.size.height); } if (corner[GSK_CORNER_TOP_RIGHT] && (junction & GTK_JUNCTION_CORNER_TOPRIGHT) == 0) { box->corner[GSK_CORNER_TOP_RIGHT].width = _gtk_css_corner_value_get_x (corner[GSK_CORNER_TOP_RIGHT], - box->box.width); + box->bounds.size.width); box->corner[GSK_CORNER_TOP_RIGHT].height = _gtk_css_corner_value_get_y (corner[GSK_CORNER_TOP_RIGHT], - box->box.height); + box->bounds.size.height); } if (corner[GSK_CORNER_BOTTOM_RIGHT] && (junction & GTK_JUNCTION_CORNER_BOTTOMRIGHT) == 0) { box->corner[GSK_CORNER_BOTTOM_RIGHT].width = _gtk_css_corner_value_get_x (corner[GSK_CORNER_BOTTOM_RIGHT], - box->box.width); + box->bounds.size.width); box->corner[GSK_CORNER_BOTTOM_RIGHT].height = _gtk_css_corner_value_get_y (corner[GSK_CORNER_BOTTOM_RIGHT], - box->box.height); + box->bounds.size.height); } if (corner[GSK_CORNER_BOTTOM_LEFT] && (junction & GTK_JUNCTION_CORNER_BOTTOMLEFT) == 0) { box->corner[GSK_CORNER_BOTTOM_LEFT].width = _gtk_css_corner_value_get_x (corner[GSK_CORNER_BOTTOM_LEFT], - box->box.width); + box->bounds.size.width); box->corner[GSK_CORNER_BOTTOM_LEFT].height = _gtk_css_corner_value_get_y (corner[GSK_CORNER_BOTTOM_LEFT], - box->box.height); + box->bounds.size.height); } gtk_rounded_box_clamp_border_radius (box); @@ -175,26 +175,26 @@ _gtk_rounded_box_grow (GtkRoundedBox *box, double bottom, double left) { - if (box->box.width + left + right < 0) + if (box->bounds.size.width + left + right < 0) { - box->box.x -= left * box->box.width / (left + right); - box->box.width = 0; + box->bounds.origin.x -= left * box->bounds.size.width / (left + right); + box->bounds.size.width = 0; } else { - box->box.x -= left; - box->box.width += left + right; + box->bounds.origin.x -= left; + box->bounds.size.width += left + right; } - if (box->box.height + bottom + top < 0) + if (box->bounds.size.height + bottom + top < 0) { - box->box.y -= top * box->box.height / (top + bottom); - box->box.height = 0; + box->bounds.origin.y -= top * box->bounds.size.height / (top + bottom); + box->bounds.size.height = 0; } else { - box->box.y -= top; - box->box.height += top + bottom; + box->bounds.origin.y -= top; + box->bounds.size.height += top + bottom; } gtk_css_border_radius_grow (&box->corner[GSK_CORNER_TOP_LEFT], left, top); @@ -218,8 +218,8 @@ _gtk_rounded_box_move (GtkRoundedBox *box, double dx, double dy) { - box->box.x += dx; - box->box.y += dy; + box->bounds.origin.x += dx; + box->bounds.origin.y += dy; } typedef struct { @@ -361,26 +361,26 @@ _gtk_rounded_box_path (const GtkRoundedBox *box, cairo_new_sub_path (cr); _cairo_ellipsis (cr, - box->box.x + box->corner[GSK_CORNER_TOP_LEFT].width, - box->box.y + box->corner[GSK_CORNER_TOP_LEFT].height, + box->bounds.origin.x + box->corner[GSK_CORNER_TOP_LEFT].width, + box->bounds.origin.y + box->corner[GSK_CORNER_TOP_LEFT].height, box->corner[GSK_CORNER_TOP_LEFT].width, box->corner[GSK_CORNER_TOP_LEFT].height, G_PI, 3 * G_PI_2); _cairo_ellipsis (cr, - box->box.x + box->box.width - box->corner[GSK_CORNER_TOP_RIGHT].width, - box->box.y + box->corner[GSK_CORNER_TOP_RIGHT].height, + box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_TOP_RIGHT].width, + box->bounds.origin.y + box->corner[GSK_CORNER_TOP_RIGHT].height, box->corner[GSK_CORNER_TOP_RIGHT].width, box->corner[GSK_CORNER_TOP_RIGHT].height, - G_PI_2, 0); _cairo_ellipsis (cr, - box->box.x + box->box.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width, - box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height, + box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width, + box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height, box->corner[GSK_CORNER_BOTTOM_RIGHT].width, box->corner[GSK_CORNER_BOTTOM_RIGHT].height, 0, G_PI_2); _cairo_ellipsis (cr, - box->box.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width, - box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height, + box->bounds.origin.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width, + box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height, box->corner[GSK_CORNER_BOTTOM_LEFT].width, box->corner[GSK_CORNER_BOTTOM_LEFT].height, G_PI_2, G_PI); @@ -399,11 +399,11 @@ _gtk_rounded_box_guess_length (const GtkRoundedBox *box, after = (side + 1) % 4; if (side & 1) - length = box->box.height + length = box->bounds.size.height - box->corner[before].height - box->corner[after].height; else - length = box->box.width + length = box->bounds.size.width - box->corner[before].width - box->corner[after].width; @@ -424,56 +424,56 @@ _gtk_rounded_box_path_side (const GtkRoundedBox *box, { case GTK_CSS_TOP: _cairo_ellipsis (cr, - box->box.x + box->corner[GSK_CORNER_TOP_LEFT].width, - box->box.y + box->corner[GSK_CORNER_TOP_LEFT].height, + box->bounds.origin.x + box->corner[GSK_CORNER_TOP_LEFT].width, + box->bounds.origin.y + box->corner[GSK_CORNER_TOP_LEFT].height, box->corner[GSK_CORNER_TOP_LEFT].width, box->corner[GSK_CORNER_TOP_LEFT].height, 5 * G_PI_4, 3 * G_PI_2); _cairo_ellipsis (cr, - box->box.x + box->box.width - box->corner[GSK_CORNER_TOP_RIGHT].width, - box->box.y + box->corner[GSK_CORNER_TOP_RIGHT].height, + box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_TOP_RIGHT].width, + box->bounds.origin.y + box->corner[GSK_CORNER_TOP_RIGHT].height, box->corner[GSK_CORNER_TOP_RIGHT].width, box->corner[GSK_CORNER_TOP_RIGHT].height, - G_PI_2, -G_PI_4); break; case GTK_CSS_RIGHT: _cairo_ellipsis (cr, - box->box.x + box->box.width - box->corner[GSK_CORNER_TOP_RIGHT].width, - box->box.y + box->corner[GSK_CORNER_TOP_RIGHT].height, + box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_TOP_RIGHT].width, + box->bounds.origin.y + box->corner[GSK_CORNER_TOP_RIGHT].height, box->corner[GSK_CORNER_TOP_RIGHT].width, box->corner[GSK_CORNER_TOP_RIGHT].height, - G_PI_4, 0); _cairo_ellipsis (cr, - box->box.x + box->box.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width, - box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height, + box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width, + box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height, box->corner[GSK_CORNER_BOTTOM_RIGHT].width, box->corner[GSK_CORNER_BOTTOM_RIGHT].height, 0, G_PI_4); break; case GTK_CSS_BOTTOM: _cairo_ellipsis (cr, - box->box.x + box->box.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width, - box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height, + box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width, + box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height, box->corner[GSK_CORNER_BOTTOM_RIGHT].width, box->corner[GSK_CORNER_BOTTOM_RIGHT].height, G_PI_4, G_PI_2); _cairo_ellipsis (cr, - box->box.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width, - box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height, + box->bounds.origin.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width, + box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height, box->corner[GSK_CORNER_BOTTOM_LEFT].width, box->corner[GSK_CORNER_BOTTOM_LEFT].height, G_PI_2, 3 * G_PI_4); break; case GTK_CSS_LEFT: _cairo_ellipsis (cr, - box->box.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width, - box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height, + box->bounds.origin.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width, + box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height, box->corner[GSK_CORNER_BOTTOM_LEFT].width, box->corner[GSK_CORNER_BOTTOM_LEFT].height, 3 * G_PI_4, G_PI); _cairo_ellipsis (cr, - box->box.x + box->corner[GSK_CORNER_TOP_LEFT].width, - box->box.y + box->corner[GSK_CORNER_TOP_LEFT].height, + box->bounds.origin.x + box->corner[GSK_CORNER_TOP_LEFT].width, + box->bounds.origin.y + box->corner[GSK_CORNER_TOP_LEFT].height, box->corner[GSK_CORNER_TOP_LEFT].width, box->corner[GSK_CORNER_TOP_LEFT].height, G_PI, 5 * G_PI_4); @@ -491,15 +491,15 @@ _gtk_rounded_box_path_top (const GtkRoundedBox *outer, { double start_angle, middle_angle, end_angle; - if (outer->box.y == inner->box.y) + if (outer->bounds.origin.y == inner->bounds.origin.y) return; - if (outer->box.x == inner->box.x) + if (outer->bounds.origin.x == inner->bounds.origin.x) start_angle = G_PI; else start_angle = 5 * G_PI_4; middle_angle = 3 * G_PI_2; - if (outer->box.x + outer->box.width == inner->box.x + inner->box.width) + if (outer->bounds.origin.x + outer->bounds.size.width == inner->bounds.origin.x + inner->bounds.size.width) end_angle = 0; else end_angle = 7 * G_PI_4; @@ -507,27 +507,27 @@ _gtk_rounded_box_path_top (const GtkRoundedBox *outer, cairo_new_sub_path (cr); _cairo_ellipsis (cr, - outer->box.x + outer->corner[GSK_CORNER_TOP_LEFT].width, - outer->box.y + outer->corner[GSK_CORNER_TOP_LEFT].height, + outer->bounds.origin.x + outer->corner[GSK_CORNER_TOP_LEFT].width, + outer->bounds.origin.y + outer->corner[GSK_CORNER_TOP_LEFT].height, outer->corner[GSK_CORNER_TOP_LEFT].width, outer->corner[GSK_CORNER_TOP_LEFT].height, start_angle, middle_angle); _cairo_ellipsis (cr, - outer->box.x + outer->box.width - outer->corner[GSK_CORNER_TOP_RIGHT].width, - outer->box.y + outer->corner[GSK_CORNER_TOP_RIGHT].height, + outer->bounds.origin.x + outer->bounds.size.width - outer->corner[GSK_CORNER_TOP_RIGHT].width, + outer->bounds.origin.y + outer->corner[GSK_CORNER_TOP_RIGHT].height, outer->corner[GSK_CORNER_TOP_RIGHT].width, outer->corner[GSK_CORNER_TOP_RIGHT].height, middle_angle, end_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->box.width - inner->corner[GSK_CORNER_TOP_RIGHT].width, - inner->box.y + inner->corner[GSK_CORNER_TOP_RIGHT].height, + inner->bounds.origin.x + inner->bounds.size.width - inner->corner[GSK_CORNER_TOP_RIGHT].width, + inner->bounds.origin.y + inner->corner[GSK_CORNER_TOP_RIGHT].height, inner->corner[GSK_CORNER_TOP_RIGHT].width, inner->corner[GSK_CORNER_TOP_RIGHT].height, end_angle, middle_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->corner[GSK_CORNER_TOP_LEFT].width, - inner->box.y + inner->corner[GSK_CORNER_TOP_LEFT].height, + inner->bounds.origin.x + inner->corner[GSK_CORNER_TOP_LEFT].width, + inner->bounds.origin.y + inner->corner[GSK_CORNER_TOP_LEFT].height, inner->corner[GSK_CORNER_TOP_LEFT].width, inner->corner[GSK_CORNER_TOP_LEFT].height, middle_angle, start_angle); @@ -542,15 +542,15 @@ _gtk_rounded_box_path_right (const GtkRoundedBox *outer, { double start_angle, middle_angle, end_angle; - if (outer->box.x + outer->box.width == inner->box.x + inner->box.width) + if (outer->bounds.origin.x + outer->bounds.size.width == inner->bounds.origin.x + inner->bounds.size.width) return; - if (outer->box.y == inner->box.y) + if (outer->bounds.origin.y == inner->bounds.origin.y) start_angle = 3 * G_PI_2; else start_angle = 7 * G_PI_4; middle_angle = 0; - if (outer->box.y + outer->box.height == inner->box.y + inner->box.height) + if (outer->bounds.origin.y + outer->bounds.size.height == inner->bounds.origin.y + inner->bounds.size.height) end_angle = G_PI_2; else end_angle = G_PI_4; @@ -558,27 +558,27 @@ _gtk_rounded_box_path_right (const GtkRoundedBox *outer, cairo_new_sub_path (cr); _cairo_ellipsis (cr, - outer->box.x + outer->box.width - outer->corner[GSK_CORNER_TOP_RIGHT].width, - outer->box.y + outer->corner[GSK_CORNER_TOP_RIGHT].height, + outer->bounds.origin.x + outer->bounds.size.width - outer->corner[GSK_CORNER_TOP_RIGHT].width, + outer->bounds.origin.y + outer->corner[GSK_CORNER_TOP_RIGHT].height, outer->corner[GSK_CORNER_TOP_RIGHT].width, outer->corner[GSK_CORNER_TOP_RIGHT].height, start_angle, middle_angle); _cairo_ellipsis (cr, - outer->box.x + outer->box.width - outer->corner[GSK_CORNER_BOTTOM_RIGHT].width, - outer->box.y + outer->box.height - outer->corner[GSK_CORNER_BOTTOM_RIGHT].height, + outer->bounds.origin.x + outer->bounds.size.width - outer->corner[GSK_CORNER_BOTTOM_RIGHT].width, + outer->bounds.origin.y + outer->bounds.size.height - outer->corner[GSK_CORNER_BOTTOM_RIGHT].height, outer->corner[GSK_CORNER_BOTTOM_RIGHT].width, outer->corner[GSK_CORNER_BOTTOM_RIGHT].height, middle_angle, end_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->box.width - inner->corner[GSK_CORNER_BOTTOM_RIGHT].width, - inner->box.y + inner->box.height - inner->corner[GSK_CORNER_BOTTOM_RIGHT].height, + inner->bounds.origin.x + inner->bounds.size.width - inner->corner[GSK_CORNER_BOTTOM_RIGHT].width, + inner->bounds.origin.y + inner->bounds.size.height - inner->corner[GSK_CORNER_BOTTOM_RIGHT].height, inner->corner[GSK_CORNER_BOTTOM_RIGHT].width, inner->corner[GSK_CORNER_BOTTOM_RIGHT].height, end_angle, middle_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->box.width - inner->corner[GSK_CORNER_TOP_RIGHT].width, - inner->box.y + inner->corner[GSK_CORNER_TOP_RIGHT].height, + inner->bounds.origin.x + inner->bounds.size.width - inner->corner[GSK_CORNER_TOP_RIGHT].width, + inner->bounds.origin.y + inner->corner[GSK_CORNER_TOP_RIGHT].height, inner->corner[GSK_CORNER_TOP_RIGHT].width, inner->corner[GSK_CORNER_TOP_RIGHT].height, middle_angle, start_angle); @@ -593,15 +593,15 @@ _gtk_rounded_box_path_bottom (const GtkRoundedBox *outer, { double start_angle, middle_angle, end_angle; - if (outer->box.y + outer->box.height == inner->box.y + inner->box.height) + if (outer->bounds.origin.y + outer->bounds.size.height == inner->bounds.origin.y + inner->bounds.size.height) return; - if (outer->box.x + outer->box.width == inner->box.x + inner->box.width) + if (outer->bounds.origin.x + outer->bounds.size.width == inner->bounds.origin.x + inner->bounds.size.width) start_angle = 0; else start_angle = G_PI_4; middle_angle = G_PI_2; - if (outer->box.x == inner->box.x) + if (outer->bounds.origin.x == inner->bounds.origin.x) end_angle = G_PI; else end_angle = 3 * G_PI_4; @@ -609,27 +609,27 @@ _gtk_rounded_box_path_bottom (const GtkRoundedBox *outer, cairo_new_sub_path (cr); _cairo_ellipsis (cr, - outer->box.x + outer->box.width - outer->corner[GSK_CORNER_BOTTOM_RIGHT].width, - outer->box.y + outer->box.height - outer->corner[GSK_CORNER_BOTTOM_RIGHT].height, + outer->bounds.origin.x + outer->bounds.size.width - outer->corner[GSK_CORNER_BOTTOM_RIGHT].width, + outer->bounds.origin.y + outer->bounds.size.height - outer->corner[GSK_CORNER_BOTTOM_RIGHT].height, outer->corner[GSK_CORNER_BOTTOM_RIGHT].width, outer->corner[GSK_CORNER_BOTTOM_RIGHT].height, start_angle, middle_angle); _cairo_ellipsis (cr, - outer->box.x + outer->corner[GSK_CORNER_BOTTOM_LEFT].width, - outer->box.y + outer->box.height - outer->corner[GSK_CORNER_BOTTOM_LEFT].height, + outer->bounds.origin.x + outer->corner[GSK_CORNER_BOTTOM_LEFT].width, + outer->bounds.origin.y + outer->bounds.size.height - outer->corner[GSK_CORNER_BOTTOM_LEFT].height, outer->corner[GSK_CORNER_BOTTOM_LEFT].width, outer->corner[GSK_CORNER_BOTTOM_LEFT].height, middle_angle, end_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->corner[GSK_CORNER_BOTTOM_LEFT].width, - inner->box.y + inner->box.height - inner->corner[GSK_CORNER_BOTTOM_LEFT].height, + inner->bounds.origin.x + inner->corner[GSK_CORNER_BOTTOM_LEFT].width, + inner->bounds.origin.y + inner->bounds.size.height - inner->corner[GSK_CORNER_BOTTOM_LEFT].height, inner->corner[GSK_CORNER_BOTTOM_LEFT].width, inner->corner[GSK_CORNER_BOTTOM_LEFT].height, end_angle, middle_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->box.width - inner->corner[GSK_CORNER_BOTTOM_RIGHT].width, - inner->box.y + inner->box.height - inner->corner[GSK_CORNER_BOTTOM_RIGHT].height, + inner->bounds.origin.x + inner->bounds.size.width - inner->corner[GSK_CORNER_BOTTOM_RIGHT].width, + inner->bounds.origin.y + inner->bounds.size.height - inner->corner[GSK_CORNER_BOTTOM_RIGHT].height, inner->corner[GSK_CORNER_BOTTOM_RIGHT].width, inner->corner[GSK_CORNER_BOTTOM_RIGHT].height, middle_angle, start_angle); @@ -644,15 +644,15 @@ _gtk_rounded_box_path_left (const GtkRoundedBox *outer, { double start_angle, middle_angle, end_angle; - if (outer->box.x == inner->box.x) + if (outer->bounds.origin.x == inner->bounds.origin.x) return; - if (outer->box.y + outer->box.height == inner->box.y + inner->box.height) + if (outer->bounds.origin.y + outer->bounds.size.height == inner->bounds.origin.y + inner->bounds.size.height) start_angle = G_PI_2; else start_angle = 3 * G_PI_4; middle_angle = G_PI; - if (outer->box.y == inner->box.y) + if (outer->bounds.origin.y == inner->bounds.origin.y) end_angle = 3 * G_PI_2; else end_angle = 5 * G_PI_4; @@ -660,27 +660,27 @@ _gtk_rounded_box_path_left (const GtkRoundedBox *outer, cairo_new_sub_path (cr); _cairo_ellipsis (cr, - outer->box.x + outer->corner[GSK_CORNER_BOTTOM_LEFT].width, - outer->box.y + outer->box.height - outer->corner[GSK_CORNER_BOTTOM_LEFT].height, + outer->bounds.origin.x + outer->corner[GSK_CORNER_BOTTOM_LEFT].width, + outer->bounds.origin.y + outer->bounds.size.height - outer->corner[GSK_CORNER_BOTTOM_LEFT].height, outer->corner[GSK_CORNER_BOTTOM_LEFT].width, outer->corner[GSK_CORNER_BOTTOM_LEFT].height, start_angle, middle_angle); _cairo_ellipsis (cr, - outer->box.x + outer->corner[GSK_CORNER_TOP_LEFT].width, - outer->box.y + outer->corner[GSK_CORNER_TOP_LEFT].height, + outer->bounds.origin.x + outer->corner[GSK_CORNER_TOP_LEFT].width, + outer->bounds.origin.y + outer->corner[GSK_CORNER_TOP_LEFT].height, outer->corner[GSK_CORNER_TOP_LEFT].width, outer->corner[GSK_CORNER_TOP_LEFT].height, middle_angle, end_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->corner[GSK_CORNER_TOP_LEFT].width, - inner->box.y + inner->corner[GSK_CORNER_TOP_LEFT].height, + inner->bounds.origin.x + inner->corner[GSK_CORNER_TOP_LEFT].width, + inner->bounds.origin.y + inner->corner[GSK_CORNER_TOP_LEFT].height, inner->corner[GSK_CORNER_TOP_LEFT].width, inner->corner[GSK_CORNER_TOP_LEFT].height, end_angle, middle_angle); _cairo_ellipsis_negative (cr, - inner->box.x + inner->corner[GSK_CORNER_BOTTOM_LEFT].width, - inner->box.y + inner->box.height - inner->corner[GSK_CORNER_BOTTOM_LEFT].height, + inner->bounds.origin.x + inner->corner[GSK_CORNER_BOTTOM_LEFT].width, + inner->bounds.origin.y + inner->bounds.size.height - inner->corner[GSK_CORNER_BOTTOM_LEFT].height, inner->corner[GSK_CORNER_BOTTOM_LEFT].width, inner->corner[GSK_CORNER_BOTTOM_LEFT].height, middle_angle, start_angle); @@ -693,8 +693,8 @@ _gtk_rounded_box_clip_path (const GtkRoundedBox *box, cairo_t *cr) { cairo_rectangle (cr, - box->box.x, box->box.y, - box->box.width, box->box.height); + box->bounds.origin.x, box->bounds.origin.y, + box->bounds.size.width, box->bounds.size.height); } gboolean @@ -704,10 +704,10 @@ _gtk_rounded_box_intersects_rectangle (const GtkRoundedBox *box, gdouble x2, gdouble y2) { - if (x2 < box->box.x || - y2 < box->box.y || - x1 >= box->box.x + box->box.width || - y1 >= box->box.y + box->box.height) + if (x2 < box->bounds.origin.x || + y2 < box->bounds.origin.y || + x1 >= box->bounds.origin.x + box->bounds.size.width || + y1 >= box->bounds.origin.y + box->bounds.size.height) return FALSE; return TRUE; @@ -720,26 +720,26 @@ _gtk_rounded_box_contains_rectangle (const GtkRoundedBox *box, gdouble x2, gdouble y2) { - if (x1 < box->box.x || - y1 < box->box.y || - x2 > box->box.x + box->box.width || - y2 > box->box.y + box->box.height) + if (x1 < box->bounds.origin.x || + y1 < box->bounds.origin.y || + x2 > box->bounds.origin.x + box->bounds.size.width || + y2 > box->bounds.origin.y + box->bounds.size.height) return FALSE; - if (x1 < box->box.x + box->corner[GSK_CORNER_TOP_LEFT].width && - y1 < box->box.y + box->corner[GSK_CORNER_TOP_LEFT].height) + if (x1 < box->bounds.origin.x + box->corner[GSK_CORNER_TOP_LEFT].width && + y1 < box->bounds.origin.y + box->corner[GSK_CORNER_TOP_LEFT].height) return FALSE; - if (x2 > box->box.x + box->box.width - box->corner[GSK_CORNER_TOP_RIGHT].width && - y1 < box->box.y + box->corner[GSK_CORNER_TOP_RIGHT].height) + if (x2 > box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_TOP_RIGHT].width && + y1 < box->bounds.origin.y + box->corner[GSK_CORNER_TOP_RIGHT].height) return FALSE; - if (x2 > box->box.x + box->box.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width && - y2 > box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height) + if (x2 > box->bounds.origin.x + box->bounds.size.width - box->corner[GSK_CORNER_BOTTOM_RIGHT].width && + y2 > box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_RIGHT].height) return FALSE; - if (x1 < box->box.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width && - y2 > box->box.y + box->box.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height) + if (x1 < box->bounds.origin.x + box->corner[GSK_CORNER_BOTTOM_LEFT].width && + y2 > box->bounds.origin.y + box->bounds.size.height - box->corner[GSK_CORNER_BOTTOM_LEFT].height) return FALSE; return TRUE; diff --git a/gtk/gtkroundedboxprivate.h b/gtk/gtkroundedboxprivate.h index 2053943750..0632ba5b05 100644 --- a/gtk/gtkroundedboxprivate.h +++ b/gtk/gtkroundedboxprivate.h @@ -28,13 +28,7 @@ G_BEGIN_DECLS -typedef struct _GtkRoundedBox GtkRoundedBox; - -struct _GtkRoundedBox { - /*< private >*/ - cairo_rectangle_t box; - graphene_size_t corner[4]; -}; +typedef GskRoundedRect GtkRoundedBox; void _gtk_rounded_box_init_rect (GtkRoundedBox *box, double x,