X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=demo-item.c;h=99aaf4afa856a24213c2ea26841e323fe625d6e8;hb=169f626b0c71bc2cc5f7929ffa4b986e0acfee2a;hp=b38e4210dc3258b5f43875aff4fc71cd548f265d;hpb=1478e50ab9b22ef50fb0a1be0d77a5f532eb7bd8;p=wordgame diff --git a/demo-item.c b/demo-item.c index b38e421..99aaf4a 100644 --- a/demo-item.c +++ b/demo-item.c @@ -18,10 +18,18 @@ G_DEFINE_TYPE (GooDemoItem, goo_demo_item, GOO_TYPE_CANVAS_ITEM_SIMPLE) static void goo_demo_item_init (GooDemoItem *demo_item) { - demo_item->x = 0.0; - demo_item->y = 0.0; - demo_item->width = 0.0; - demo_item->height = 0.0; + demo_item->size = 0.0; +} + +void +goo_demo_item_move_to (GooCanvasItem *item, + gdouble x, + gdouble y) +{ + cairo_matrix_t matrix; + + cairo_matrix_init_translate (&matrix, x, y); + goo_canvas_item_set_transform (item, &matrix); } /* The convenience function to create new items. This should start with a @@ -31,8 +39,7 @@ GooCanvasItem* goo_demo_item_new (GooCanvasItem *parent, gdouble x, gdouble y, - gdouble width, - gdouble height, + gdouble size, char letter, ...) { @@ -44,10 +51,7 @@ goo_demo_item_new (GooCanvasItem *parent, item = g_object_new (GOO_TYPE_DEMO_ITEM, NULL); demo_item = (GooDemoItem*) item; - demo_item->x = x; - demo_item->y = y; - demo_item->width = width; - demo_item->height = height; + demo_item->size = size; demo_item->letter = letter; va_start (var_args, letter); @@ -62,6 +66,8 @@ goo_demo_item_new (GooCanvasItem *parent, g_object_unref (item); } + goo_demo_item_move_to (item, x, y); + return item; } @@ -76,10 +82,10 @@ goo_demo_item_update (GooCanvasItemSimple *simple, GooDemoItem *demo_item = (GooDemoItem*) simple; /* Compute the new bounds. */ - simple->bounds.x1 = demo_item->x; - simple->bounds.y1 = demo_item->y; - simple->bounds.x2 = demo_item->x + demo_item->width; - simple->bounds.y2 = demo_item->y + demo_item->height; + simple->bounds.x1 = 0; + simple->bounds.y1 = 0; + simple->bounds.x2 = demo_item->size; + simple->bounds.y2 = demo_item->size; /* Convert to device coordinates. */ goo_canvas_item_simple_user_bounds_to_device (simple, cr, &simple->bounds); @@ -95,9 +101,9 @@ goo_demo_item_paint (GooCanvasItemSimple *simple, GooDemoItem *item = (GooDemoItem*) simple; cairo_pattern_t *gradient; cairo_text_extents_t extents; - int rad = (int) MIN (item->width / 2, item->height / 2); - int cx = item->x + item->width / 2; - int cy = item->y + item->height / 2; + int rad = (int) (item->size / 2); + int cx = item->size / 2; + int cy = cx; double spot_angle = M_PI / 4.0; double spot_rad = rad / 2.0; char string[2]; @@ -135,7 +141,6 @@ goo_demo_item_paint (GooCanvasItemSimple *simple, cairo_set_source_rgb (cr, 0.2, 0.3, 0.8); cairo_show_text (cr, string); - cairo_restore (cr); } @@ -152,8 +157,8 @@ goo_demo_item_get_item_at (GooCanvasItemSimple *simple, { GooDemoItem *demo_item = (GooDemoItem*) simple; - if (x < demo_item->x || (x > demo_item->x + demo_item->width) - || y < demo_item->y || (y > demo_item->y + demo_item->height)) + if (x < 0 || (x > demo_item->size) + || y < 0 || (y > demo_item->size)) return NULL; return (GooCanvasItem*) simple;