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 можно элементарно установить при создании объекта и обойтись одной единственной (ну, не совсем, но как там рисуются оконцовки и пересечения линий это отдельная песня) функцией для отрисовки.