private void drawline(GOut g, Coord d, int med, int id, Coord c0, Coord cx,
                          Coord sc) {

        Coord m = d.abs();
        Coord r = m.swap();
        Coord off = m.mul(med).add(d.add(m).div(2));
        int min = c0.mul(r).sum();
        int max = cx.mul(r).sum() + 1;
        boolean t = false;
        int begin = min;
        int ol = 1 << id;
        g.chcolor(olc[id]);
        for (int i = min; i <= max; i++) {
            Coord c = r.mul(i).add(m.mul(med)).add(d);
            int ol2;
            try {
                ol2 = getol(c);
            } catch (Loading e) {
                ol2 = ol;
            }
            if (t) {
                if (((ol2 & ol) != 0) || i == max) {
                    t = false;
                    Coord cb = m2s(tileSize.mul(r.mul(begin).add(off))).add(sc);
                    Coord ce = m2s(tileSize.mul(r.mul(i).add(off))).add(sc);
                    g.line(cb, ce, 2);
                }
            } else {
                if ((ol2 & ol) == 0) {
                    t = true;
                    begin = i;
                }
            }
        }
    }