Entry tags:
Быдлокодинга псто
Потихоньку ковыряюсь в коде gEDA и постепенно превращаюсь в нефритовый стержень. Вот так там рисуют просто линии:
А вот так — линии электрической связи (а также шины, для выводов УГО функция выглядит чуть сложнее, но стиль тот же самый):
Кто-нибудь понял, нахера нужны три одинаковые функции? Если все эти line_width и line_end можно элементарно установить при создании объекта и обойтись одной единственной (ну, не совсем, но как там рисуются оконцовки и пересечения линий это отдельная песня) функцией для отрисовки.
static void eda_renderer_draw_line (EdaRenderer *renderer, OBJECT *object)
{
eda_cairo_line (renderer->priv->cr, EDA_RENDERER_CAIRO_FLAGS (renderer),
object->line_end,
object->line_width,
object->line->x[0], object->line->y[0],
object->line->x[1], object->line->y[1]);
eda_cairo_stroke (renderer->priv->cr, EDA_RENDERER_CAIRO_FLAGS (renderer),
object->line_type,
object->line_end,
EDA_RENDERER_STROKE_WIDTH (renderer, object->line_width),
object->line_length,
object->line_space);
}А вот так — линии электрической связи (а также шины, для выводов УГО функция выглядит чуть сложнее, но стиль тот же самый):
static void eda_renderer_draw_net (EdaRenderer *renderer, OBJECT *object)
{
eda_cairo_line (renderer->priv->cr, EDA_RENDERER_CAIRO_FLAGS (renderer),
END_SQUARE, NET_WIDTH,
object->line->x[0], object->line->y[0],
object->line->x[1], object->line->y[1]);
eda_cairo_stroke (renderer->priv->cr, EDA_RENDERER_CAIRO_FLAGS (renderer),
TYPE_SOLID, END_SQUARE,
EDA_RENDERER_STROKE_WIDTH (renderer, NET_WIDTH),
-1, -1);
}Кто-нибудь понял, нахера нужны три одинаковые функции? Если все эти line_width и line_end можно элементарно установить при создании объекта и обойтись одной единственной (ну, не совсем, но как там рисуются оконцовки и пересечения линий это отдельная песня) функцией для отрисовки.
