def draw()

in atlas-chart/src/main/scala/com/netflix/atlas/chart/graphics/TimeSeriesStack.scala [45:80]


  def draw(g: Graphics2D, x1: Int, y1: Int, x2: Int, y2: Int): Unit = {
    val step = xaxis.step
    val xscale = xaxis.scale(x1, x2)
    val yscale = yaxis.scale(y1, y2)
    var t = xaxis.start
    while (t < xaxis.end) {
      val px1 = xscale(t - step)
      val px2 = xscale(t)
      val ox = ((t - xaxis.start) / step).toInt
      val posY = offsets.posY(ox)
      val negY = offsets.negY(ox)
      style.configure(g)
      ts(t) match {
        case v if v == 0.0 && posY == 0.0 && negY == 0.0 =>
          // Provides a line along the xaxis to avoid confusion between 0 and NaN (no data)
          val py1 = yscale(posY)
          g.fillRect(px1, py1, px2 - px1, 1)
        case v if v > 0.0 =>
          val axisy = yscale(posY)
          val py = yscale(v + posY)
          val py1 = math.min(axisy, py)
          val py2 = math.max(axisy, py) + 1
          g.fillRect(px1, py1, px2 - px1, py2 - py1)
          offsets.posY(ox) = v + posY
        case v if v < 0.0 =>
          val axisy = yscale(negY)
          val py = yscale(v + negY)
          val py1 = math.min(axisy, py)
          val py2 = math.max(axisy, py) + 1
          g.fillRect(px1, py1, px2 - px1, py2 - py1)
          offsets.negY(ox) = v + negY
        case _ =>
      }
      t += step
    }
  }