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: 
<?php

namespace Scene7\Commands;

use Scene7\Definitions\PerspectiveOptions;

trait Perspective
{
    /**
     * @param float $topLeft
     * @param float $topRight
     * @param float $bottomLeft
     * @param float $bottomRight
     * @param string|null $resamplingMode One of Definitions\ResamplingModes
     * @param bool $normalized
     * @return $this
     */
    public function setPerspective($topLeft, $topRight, $bottomLeft, $bottomRight, $resamplingMode = null, $normalized = false)
    {
        $topLeft        = (float) $topLeft;
        $topRight       = (float) $topRight;
        $bottomLeft     = (float) $bottomLeft;
        $bottomRight    = (float) $bottomRight;

        $perspective = $topLeft . ',' . $topRight . ',' . $bottomLeft . ',' . $bottomRight;

        if ($resamplingMode !== null && $this->isAllowedPerspectiveResamplingMode($resamplingMode)) {
            $perspective .= $resamplingMode;
        }

        $this->addCommand([$normalized ? 'perspectiveN' : 'perspective' => $perspective]);
        return $this;
    }

    /**
     * @param float $topLeft
     * @param float $topRight
     * @param float $bottomLeft
     * @param float $bottomRight
     * @param string|null $resamplingMode One of Definitions\ResamplingModes
     * @return $this
     */
    public function setPerspectiveNormalized($topLeft, $topRight, $bottomLeft, $bottomRight, $resamplingMode = null)
    {
        return $this->setPerspective($topLeft, $topRight, $bottomLeft, $bottomRight, $resamplingMode, true);
    }

    /**
     * @param string $mode
     * @return bool
     */
    protected function isAllowedPerspectiveResamplingMode($mode)
    {
        if (substr($mode, 0, 3) === 'R3T') {
            $jitter = (int) substr($mode, 3);

            return $jitter >= 0 || $jitter <= 200;
        }

        return in_array($mode, $this->getAllowedPerspectiveResamplingMode());
    }

    /**
     * @return string[]
     */
    public function getAllowedPerspectiveResamplingMode()
    {
        return [
            PerspectiveOptions::R1,
            PerspectiveOptions::R2,
            PerspectiveOptions::R3,
        ];
    }
}
API documentation generated by ApiGen