[gdm] Use rounded rectangle not curved
- From: William Jon McCann <mccann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm] Use rounded rectangle not curved
- Date: Thu, 25 Feb 2010 13:01:01 +0000 (UTC)
commit d4ae41e337b8ba6609a17c680466442f4ec95a75
Author: William Jon McCann <jmccann redhat com>
Date: Thu Feb 25 12:27:53 2010 +0000
Use rounded rectangle not curved
gui/simple-greeter/gdm-user.c | 102 ++++++++++++++++++----------------------
1 files changed, 46 insertions(+), 56 deletions(-)
---
diff --git a/gui/simple-greeter/gdm-user.c b/gui/simple-greeter/gdm-user.c
index 31ae696..e2b612f 100644
--- a/gui/simple-greeter/gdm-user.c
+++ b/gui/simple-greeter/gdm-user.c
@@ -860,59 +860,45 @@ render_icon_from_cache (GdmUser *user,
}
static void
-curved_rectangle (cairo_t *cr,
- double x0,
- double y0,
- double width,
- double height,
- double radius)
+rounded_rectangle (cairo_t *cr,
+ gdouble aspect,
+ gdouble x,
+ gdouble y,
+ gdouble corner_radius,
+ gdouble width,
+ gdouble height)
{
- double x1;
- double y1;
-
- x1 = x0 + width;
- y1 = y0 + height;
-
- if (width < FLT_EPSILON || height < FLT_EPSILON) {
- return;
- }
-
- if (width / 2 < radius) {
- if (height / 2 < radius) {
- cairo_move_to (cr, x0, (y0 + y1) / 2);
- cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1) / 2, y0);
- cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
- cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
- cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
- } else {
- cairo_move_to (cr, x0, y0 + radius);
- cairo_curve_to (cr, x0, y0, x0, y0, (x0 + x1) / 2, y0);
- cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
- cairo_line_to (cr, x1, y1 - radius);
- cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
- cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
- }
- } else {
- if (height / 2 < radius) {
- cairo_move_to (cr, x0, (y0 + y1) / 2);
- cairo_curve_to (cr, x0, y0, x0 , y0, x0 + radius, y0);
- cairo_line_to (cr, x1 - radius, y0);
- cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
- cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
- cairo_line_to (cr, x0 + radius, y1);
- cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
- } else {
- cairo_move_to (cr, x0, y0 + radius);
- cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
- cairo_line_to (cr, x1 - radius, y0);
- cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
- cairo_line_to (cr, x1, y1 - radius);
- cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
- cairo_line_to (cr, x0 + radius, y1);
- cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
- }
- }
-
+ gdouble radius;
+ gdouble degrees;
+
+ radius = corner_radius / aspect;
+ degrees = G_PI / 180.0;
+
+ cairo_new_sub_path (cr);
+ cairo_arc (cr,
+ x + width - radius,
+ y + radius,
+ radius,
+ -90 * degrees,
+ 0 * degrees);
+ cairo_arc (cr,
+ x + width - radius,
+ y + height - radius,
+ radius,
+ 0 * degrees,
+ 90 * degrees);
+ cairo_arc (cr,
+ x + radius,
+ y + height - radius,
+ radius,
+ 90 * degrees,
+ 180 * degrees);
+ cairo_arc (cr,
+ x + radius,
+ y + radius,
+ radius,
+ 180 * degrees,
+ 270 * degrees);
cairo_close_path (cr);
}
@@ -1046,7 +1032,7 @@ frame_pixbuf (GdkPixbuf *source)
w = gdk_pixbuf_get_width (source) + frame_width * 2;
h = gdk_pixbuf_get_height (source) + frame_width * 2;
- radius = w / 3.0;
+ radius = w / 10;
dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
TRUE,
@@ -1071,9 +1057,13 @@ frame_pixbuf (GdkPixbuf *source)
cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.0);
cairo_fill (cr);
- curved_rectangle (cr, frame_width, frame_width,
- w - frame_width * 2, h - frame_width * 2,
- radius);
+ rounded_rectangle (cr,
+ 1.0,
+ frame_width + 0.5,
+ frame_width + 0.5,
+ radius,
+ w - frame_width * 2 - 1,
+ h - frame_width * 2 - 1);
cairo_set_source_rgba (cr, 0.5, 0.5, 0.5, 0.3);
cairo_fill_preserve (cr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]