/**
  * {@inheritdoc}
  */
 protected function doGenerate(CanvasInterface $canvas)
 {
     $width = $canvas->getWidth();
     $height = $canvas->getHeight();
     $n = max($width, $height) / 2;
     $rect = new Rectangle();
     $rect->fill(true);
     for ($i = 0; $i < $n; $i += $this->getStep() + 1) {
         $rect->getStart()->move($i * $width / $height, $i * $height / $width);
         $rect->getDimension()->resize($width - $i * $width / $height - $rect->getStart()->getX(), $height - $i * $height / $width - $rect->getStart()->getY());
         $rect->setColor($this->getColor($i / $n))->draw($canvas);
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function doGenerate(CanvasInterface $canvas)
 {
     $n = $w = null;
     if (self::GRADIENT_VERTICAL == $this->getType()) {
         $n = $canvas->getHeight();
         $w = $canvas->getWidth();
     } else {
         $w = $canvas->getHeight();
         $n = $canvas->getWidth();
     }
     $rect = new Rectangle();
     $rect->fill(true);
     for ($i = 0; $i < $n; $i += $this->getStep() + 1) {
         if (self::GRADIENT_VERTICAL == $this->getType()) {
             $rect->getStart()->move(0, $i);
             $rect->getDimension()->resize($w, $i + $this->getStep());
         } else {
             $rect->getStart()->move($i, 0);
             $rect->getDimension()->resize($i + $this->getStep(), $w);
         }
         $rect->setColor($this->getColor($i / $n))->draw($canvas);
     }
 }