avshap: (sad_pic)
avshap ([personal profile] avshap) wrote2013-07-24 06:06 pm

Быдлокодинга псто

Потихоньку ковыряюсь в коде gEDA и постепенно превращаюсь в нефритовый стержень. Вот так там рисуют просто линии:

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

Post a comment in response:

(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org