void drawHLine(int argb, boolean tScreened, int x, int y, int z, int w) {
    // hover, labels only
    int width = g3d.width;
    if (w < 0) {
      x += w;
      w = -w;
    }
    int[] pbuf = g3d.pbuf;
    int[] zbuf = g3d.zbuf;
    if (x < 0) {
      w += x;
      x = 0;
    }
    if (x + w >= width) {
      w = width - 1 - x;
    }
    int offset = x + width * y;
    if (!tScreened) {
      for (int i = 0; i <= w; i++) {
        if (z < zbuf[offset]) {
          zbuf[offset] = z;
          pbuf[offset] = argb;
        }
        offset++;
      }
      return;
    }
    boolean flipflop = ((x ^ y) & 1) != 0;
    for (int i = 0; i <= w; i++) {
      if ((flipflop = !flipflop) && z < zbuf[offset]) {
        zbuf[offset] = z;
        pbuf[offset] = argb;
      }
      offset++;
    }
  }