Exemple #1
0
 /**
  * 2015-11-30
  * @used-by \Df\GoogleFont\Font\Variant\Preview
  * @return string
  */
 public function ttfPath()
 {
     if (!isset($this->{__METHOD__})) {
         /** @var string $result */
         $result = Fs::s()->absolute(['ttf', basename($this->url())]);
         if (!file_exists($result)) {
             df_media_write($result, file_get_contents($this->url()));
         }
         $this->{__METHOD__} = $result;
     }
     return $this->{__METHOD__};
 }
Exemple #2
0
 /**
  * 2015-12-08
  * @override
  * @see \Df\GoogleFont\Fonts\Png::draw()
  * @used-by \Df\GoogleFont\Fonts\Png::image()
  * @param resource $image
  * @return void
  */
 protected function draw($image)
 {
     /** @var int $x */
     $x = 0;
     /** @var int $y */
     $y = 0;
     $this->_datumPoints = [];
     /** @var int|bool|resource $r */
     $r = imagefill($image, 0, 0, $this->colorAllocateAlpha($image, $this->bgColor()));
     df_assert($r);
     // http://stackoverflow.com/a/1397584/254475
     imagealphablending($image, true);
     foreach ($this->previews() as $preview) {
         /** @var Preview $preview */
         try {
             /** @var resource $previewImage */
             $previewImage = imagecreatefromstring($preview->contents());
             df_assert($previewImage);
             try {
                 $r = imagecopy($image, $previewImage, $x, $y, 0, 0, $preview->width(), $preview->height());
                 df_assert($r);
                 $this->_datumPoints[$preview->getId()] = [$x, $y];
             } finally {
                 imagedestroy($previewImage);
             }
         } catch (\Exception $e) {
             df_log($e->getMessage());
         }
         $x += $this->previewWidth();
         if ($x >= $this->width()) {
             $x = 0;
             $y += $this->previewHeight() + $this->marginY();
         }
     }
     df_media_write($this->pathToDatumPoints(), df_json_encode($this->_datumPoints));
 }
Exemple #3
0
 /**
  * 2015-12-08
  * @used-by \Df\GoogleFont\Fonts\Png::createIfNeeded()
  * @used-by \Df\GoogleFont\Fonts\Sprite::datumPoints()
  * @return void
  */
 protected function create()
 {
     ob_start();
     try {
         $image = $this->image();
         try {
             imagepng($this->image());
         } finally {
             imagedestroy($image);
         }
         df_media_write($this->path(), ob_get_contents());
     } finally {
         ob_end_clean();
     }
 }