static int select_idle_callback (TextboxItem *item) { Coords bbox_start, bbox_end; TextboxItemPriv *priv = item->priv; get_cached_bounds (item, &bbox_start, &bbox_end); g_object_set (priv->text_canvas_item, "fill_color", SELECTED_COLOR, NULL); priv->highlight = TRUE; return FALSE; }
static gboolean is_in_area (SheetItem *object, Coords *p1, Coords *p2) { TextboxItem *item; Coords bbox_start, bbox_end; item = TEXTBOX_ITEM (object); get_cached_bounds (item, &bbox_start, &bbox_end); if (p1->x < bbox_start.x && p2->x > bbox_end.x && p1->y < bbox_start.y && p2->y > bbox_end.y) return TRUE; return FALSE; }
static gboolean is_in_area (SheetItem *object, Coords *p1, Coords *p2) { PartItem *item; Coords bbox_start, bbox_end; item = PART_ITEM (object); get_cached_bounds (item, &bbox_start, &bbox_end); if ((p1->x < bbox_start.x) && (p2->x > bbox_end.x) && (p1->y < bbox_start.y) && (p2->y > bbox_end.y)) { return TRUE; } return FALSE; }
static void create_canvas_label_nodes (PartItem *item, Part *part) { GooCanvasItem *canvas_item; GSList *item_list; GooCanvasItem *group; Pin *pins; int num_pins, i; Coords p1, p2; GooCanvasAnchorType anchor; g_return_if_fail (item != NULL); g_return_if_fail (IS_PART_ITEM (item)); g_return_if_fail (part != NULL); g_return_if_fail (IS_PART (part)); num_pins = part_get_num_pins (part); pins = part_get_pins (part); group = item->priv->node_group; item_list = NULL; get_cached_bounds (item, &p1, &p2); switch (part_get_rotation (part)) { case 0: anchor = GOO_CANVAS_ANCHOR_SOUTH_WEST; break; case 90: anchor = GOO_CANVAS_ANCHOR_NORTH_WEST; break; case 180: anchor = GOO_CANVAS_ANCHOR_NORTH_EAST; break; case 270: anchor = GOO_CANVAS_ANCHOR_SOUTH_EAST; break; default: anchor = GOO_CANVAS_ANCHOR_SOUTH_WEST; } for (i = 0; i < num_pins; i++) { int x, y; char *text; x = pins[i].offset.x; y = pins[i].offset.y; text = g_strdup_printf ("%d", pins[i].node_nr); canvas_item = goo_canvas_text_new (GOO_CANVAS_ITEM (group), text, (double) x, (double) y, 0, anchor, "fill_color", "black", "font", "Sans 8", NULL); // Shift slightly the label for a Voltmeter if (i == 0) goo_canvas_item_translate (canvas_item, -15.0, -10.0); item_list = g_slist_prepend (item_list, canvas_item); g_free (text); } item_list = g_slist_reverse (item_list); item->priv->label_nodes = item_list; }