/*! \todo Finish function documentation!!! * \brief * \par Function Description * */ void o_net_draw(GSCHEM_TOPLEVEL *w_current, OBJECT *o_current) { TOPLEVEL *toplevel = w_current->toplevel; int x1, y1, x2, y2; int size = 0; #if NET_DEBUG /* debug */ char *tempstring; GdkFont *font; #endif if (o_current == NULL) { return; } if (o_current->line == NULL) { return; } /* reuse line's routine */ if ( (toplevel->DONT_REDRAW == 1) || (!o_line_visible (w_current, o_current->line, &x1, &y1, &x2, &y2)) ) { return; } if (toplevel->net_style == THICK) size = NET_WIDTH; if (toplevel->override_color != -1 ) { gschem_cairo_set_source_color (w_current, x_color_lookup (toplevel->override_color)); } else { gschem_cairo_set_source_color (w_current, x_color_lookup (o_current->color)); } gschem_cairo_line (w_current, END_SQUARE, size, x1, y1, x2, y2); gschem_cairo_stroke (w_current, TYPE_SOLID, END_SQUARE, size, -1, -1); if (o_current->selected && w_current->draw_grips) { o_line_draw_grips (w_current, o_current); } }
/*! \brief Records a new point for the stroke. * \par Function Description * This function adds the point (<B>x</B>,<B>y</B>) as a new point in * the stroke. * * The footprint is updated and the new point is drawn on the drawing area. * * \param [in] w_current The GschemToplevel object. * \param [in] x The X coord of the new point. * \param [in] Y The X coord of the new point. */ void x_stroke_record (GschemToplevel *w_current, gint x, gint y) { cairo_matrix_t user_to_device_matrix; double x0, y0; GschemPageView *view = gschem_toplevel_get_current_page_view (w_current); g_return_if_fail (view != NULL); GschemPageGeometry *geometry = gschem_page_view_get_page_geometry (view); g_return_if_fail (geometry != NULL); g_assert (stroke_points != NULL); stroke_record (x, y); if (stroke_points->len < STROKE_MAX_POINTS) { StrokePoint point = { x, y }; g_array_append_val (stroke_points, point); cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (GTK_WIDGET(view))); GedaColor *color = x_color_lookup (w_current, STROKE_COLOR); cairo_set_source_rgba (cr, geda_color_get_red_double (color), geda_color_get_green_double (color), geda_color_get_blue_double (color), geda_color_get_alpha_double (color)); cairo_set_matrix (cr, gschem_page_geometry_get_world_to_screen_matrix (geometry)); x0 = x; y0 = y; cairo_device_to_user (cr, &x0, &y0); cairo_get_matrix (cr, &user_to_device_matrix); cairo_save (cr); cairo_identity_matrix (cr); cairo_matrix_transform_point (&user_to_device_matrix, &x0, &y0); cairo_rectangle (cr, x0, y0, 1, 1); cairo_fill (cr); cairo_restore (cr); cairo_destroy (cr); } }