class PngoutFilter

Runs assets through pngout.

@link http://advsys.net/ken/utils.htm#pngout @author Kris Wallsmith <kris.wallsmith@gmail.com>

Hierarchy

Expanded class hierarchy of PngoutFilter

File

drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Filter/PngoutFilter.php, line 23

Namespace

Assetic\Filter
View source
class PngoutFilter extends BaseProcessFilter {

  // -c#
  const COLOR_GREY = '0';
  const COLOR_RGB = '2';
  const COLOR_PAL = '3';
  const COLOR_GRAY_ALPHA = '4';
  const COLOR_RGB_ALPHA = '6';

  // -f#
  const FILTER_NONE = '0';
  const FILTER_X = '1';
  const FILTER_Y = '2';
  const FILTER_X_Y = '3';
  const FILTER_PAETH = '4';
  const FILTER_MIXED = '5';

  // -s#
  const STRATEGY_XTREME = '0';
  const STRATEGY_INTENSE = '1';
  const STRATEGY_LONGEST_MATCH = '2';
  const STRATEGY_HUFFMAN_ONLY = '3';
  const STRATEGY_UNCOMPRESSED = '4';
  private $pngoutBin;
  private $color;
  private $filter;
  private $strategy;
  private $blockSplitThreshold;

  /**
   * Constructor.
   *
   * @param string $pngoutBin Path to the pngout binary
   */
  public function __construct($pngoutBin = '/usr/bin/pngout') {
    $this->pngoutBin = $pngoutBin;
  }
  public function setColor($color) {
    $this->color = $color;
  }
  public function setFilter($filter) {
    $this->filter = $filter;
  }
  public function setStrategy($strategy) {
    $this->strategy = $strategy;
  }
  public function setBlockSplitThreshold($blockSplitThreshold) {
    $this->blockSplitThreshold = $blockSplitThreshold;
  }
  public function filterLoad(AssetInterface $asset) {
  }
  public function filterDump(AssetInterface $asset) {
    $pb = $this
      ->createProcessBuilder(array(
      $this->pngoutBin,
    ));
    if (null !== $this->color) {
      $pb
        ->add('-c' . $this->color);
    }
    if (null !== $this->filter) {
      $pb
        ->add('-f' . $this->filter);
    }
    if (null !== $this->strategy) {
      $pb
        ->add('-s' . $this->strategy);
    }
    if (null !== $this->blockSplitThreshold) {
      $pb
        ->add('-b' . $this->blockSplitThreshold);
    }
    $pb
      ->add($input = tempnam(sys_get_temp_dir(), 'assetic_pngout'));
    file_put_contents($input, $asset
      ->getContent());
    $output = tempnam(sys_get_temp_dir(), 'assetic_pngout');
    unlink($output);
    $pb
      ->add($output .= '.png');
    $proc = $pb
      ->getProcess();
    $code = $proc
      ->run();
    if (0 !== $code) {
      unlink($input);
      throw FilterException::fromProcess($proc)
        ->setInput($asset
        ->getContent());
    }
    $asset
      ->setContent(file_get_contents($output));
    unlink($input);
    unlink($output);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
BaseProcessFilter::$timeout private property
BaseProcessFilter::createProcessBuilder protected function Creates a new process builder. 1
BaseProcessFilter::mergeEnv protected function
BaseProcessFilter::setTimeout public function Set the process timeout.
PngoutFilter::$blockSplitThreshold private property
PngoutFilter::$color private property
PngoutFilter::$filter private property
PngoutFilter::$pngoutBin private property
PngoutFilter::$strategy private property
PngoutFilter::COLOR_GRAY_ALPHA constant
PngoutFilter::COLOR_GREY constant
PngoutFilter::COLOR_PAL constant
PngoutFilter::COLOR_RGB constant
PngoutFilter::COLOR_RGB_ALPHA constant
PngoutFilter::filterDump public function Filters an asset just before it's dumped. Overrides FilterInterface::filterDump
PngoutFilter::filterLoad public function Filters an asset after it has been loaded. Overrides FilterInterface::filterLoad
PngoutFilter::FILTER_MIXED constant
PngoutFilter::FILTER_NONE constant
PngoutFilter::FILTER_PAETH constant
PngoutFilter::FILTER_X constant
PngoutFilter::FILTER_X_Y constant
PngoutFilter::FILTER_Y constant
PngoutFilter::setBlockSplitThreshold public function
PngoutFilter::setColor public function
PngoutFilter::setFilter public function
PngoutFilter::setStrategy public function
PngoutFilter::STRATEGY_HUFFMAN_ONLY constant
PngoutFilter::STRATEGY_INTENSE constant
PngoutFilter::STRATEGY_LONGEST_MATCH constant
PngoutFilter::STRATEGY_UNCOMPRESSED constant
PngoutFilter::STRATEGY_XTREME constant
PngoutFilter::__construct public function Constructor.