Overview

Namespaces

  • Scene7
    • Commands
      • Layer
    • Definitions
    • Helpers
      • Html
        • Attributes
    • Requests

Classes

  • Layer

Traits

  • Align
  • Anchor
  • BackgroundColor
  • Cache
  • ColorQuantization
  • Crop
  • DefaultImage
  • EmbedColorProfile
  • EmbedPathData
  • Fit
  • Format
  • Height
  • Id
  • LayerFactory
  • Locale
  • Mask
  • MaskUse
  • MaxJpegSize
  • Message
  • Name
  • OutputColorProfile
  • Perspective
  • PrintResolution
  • Quality
  • RegionOfInterest
  • Resampling
  • Resolution
  • ResponseType
  • Scale
  • ScaleView
  • Template
  • Timeout
  • Type
  • UnsharpMask
  • ViewRectangle
  • Width
  • XmpEmbed
  • Overview
  • Namespace
  • Class
 1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 
<?php

namespace Scene7\Commands;

use Scene7\Factory;

trait LayerFactory
{
    /** @var Layer */
    protected $layers = [];
    /** @var string[] */
    protected $layerNameMap = [];

    /**
     * @param int|string|null $id
     * @param string|null $name
     * @return Layer
     */
    public function newLayer($id = null, $name = null)
    {
        if (!($this->factory instanceof Factory)) {
            throw new \RuntimeException('Factory not set');
        }

        if ($id === null) {
            $id = $this->getMaxLayer() + 1;
        }

        $layer = $this->factory->newLayer($id, $name);
        $this->addLayer($layer);
        return $layer;
    }

    public function addLayer(Layer $layer)
    {
        $this->layers[$layer->getId()] = $layer;
        return $this;
    }

    public function getMaxLayer()
    {
        return empty($this->layers) ? 0 : max(array_keys($this->layers));
    }

    /**
     * @param int|string $id
     * @return Layer
     */
    public function getLayer($id)
    {
        return isset($this->layers[$id]) ? $this->layers[$id] : $this->newLayer($id);
    }

    /**
     * @param string $name
     * @return Layer
     */
    public function getLayerByName($name)
    {
        return isset($this->layerNameMap[$name]) ? $this->layers[$this->layerNameMap[$name]] : $this->newLayer(null, $this->layerNameMap[$name]);
    }

    /**
     * @param bool $obscure
     * @return string
     */
    public function renderLayers($obscure = false)
    {
        $layers = '';

        foreach ($this->layers as $layer) {
            $layers .= '&' . $layer;
        }

        return $layers;
    }

    /**
     * @param bool $obscure
     * @return string
     */
    public function getQuery($obscure = false)
    {
        // @todo this doesn't work
        if ($obscure) {

        } else {
            $query = parent::getQuery();
            $query .= $this->renderLayers();
        }

        return $query;
    }
}
API documentation generated by ApiGen