You are here

class TextOverlay in Image Effects 8.3

Same name and namespace in other branches
  1. 8 src/Plugin/ImageToolkit/Operation/gd/TextOverlay.php \Drupal\image_effects\Plugin\ImageToolkit\Operation\gd\TextOverlay
  2. 8.2 src/Plugin/ImageToolkit/Operation/gd/TextOverlay.php \Drupal\image_effects\Plugin\ImageToolkit\Operation\gd\TextOverlay

Defines GD2 text overlay operation.

Plugin annotation


@ImageToolkitOperation(
  id = "image_effects_gd_text_overlay",
  toolkit = "gd",
  operation = "text_overlay",
  label = @Translation("Text overlay"),
  description = @Translation("Overlays a given text into the image.")
)

Hierarchy

Expanded class hierarchy of TextOverlay

File

src/Plugin/ImageToolkit/Operation/gd/TextOverlay.php, line 20

Namespace

Drupal\image_effects\Plugin\ImageToolkit\Operation\gd
View source
class TextOverlay extends GDImageToolkitOperationBase {
  use FontOperationTrait;
  use TextOverlayTrait;
  use GDOperationTrait;

  /**
   * {@inheritdoc}
   */
  protected function execute(array $arguments) {
    $font_file = $this
      ->getFontPath($arguments['font_uri']);

    // Overlays the text outline/shadow, if required.
    // Credit to John Ciacia.
    // @see http://www.johnciacia.com/2010/01/04/using-php-and-gd-to-add-border-to-text/
    $outline = $shadow = FALSE;
    if ($arguments['font_stroke_mode'] == 'outline' && ($arguments['font_outline_top'] || $arguments['font_outline_right'] || $arguments['font_outline_bottom'] || $arguments['font_outline_left']) && $arguments['font_stroke_color']) {
      $outline = TRUE;
    }
    elseif ($arguments['font_stroke_mode'] == 'shadow' && ($arguments['font_shadow_x_offset'] || $arguments['font_shadow_y_offset'] || $arguments['font_shadow_width'] || $arguments['font_shadow_height']) && $arguments['font_stroke_color']) {
      $shadow = TRUE;
    }
    if ($outline || $shadow) {
      $stroke_color = $this
        ->allocateColorFromRgba($arguments['font_stroke_color']);
      if ($outline) {
        $stroke_x_pos = $arguments['basepoint'][0];
        $stroke_y_pos = $arguments['basepoint'][1];
        $stroke_top = $arguments['font_outline_top'];
        $stroke_right = $arguments['font_outline_right'];
        $stroke_bottom = $arguments['font_outline_bottom'];
        $stroke_left = $arguments['font_outline_left'];
      }
      elseif ($shadow) {
        $stroke_x_pos = $arguments['basepoint'][0] + $arguments['font_shadow_x_offset'];
        $stroke_y_pos = $arguments['basepoint'][1] + $arguments['font_shadow_y_offset'];
        $stroke_top = 0;
        $stroke_right = $arguments['font_shadow_width'];
        $stroke_bottom = $arguments['font_shadow_height'];
        $stroke_left = 0;
      }
      for ($c1 = $stroke_x_pos - abs($stroke_left); $c1 <= $stroke_x_pos + abs($stroke_right); $c1++) {
        for ($c2 = $stroke_y_pos - abs($stroke_top); $c2 <= $stroke_y_pos + abs($stroke_bottom); $c2++) {
          $bg = $this
            ->imagettftextWrapper($this
            ->getToolkit()
            ->getResource(), $arguments['font_size'], -$arguments['font_angle'], $c1, $c2, $stroke_color, $font_file, $arguments['text']);
          if ($bg == FALSE) {
            return FALSE;
          }
        }
      }
    }

    // Overlays the text.
    $this
      ->imagettftextWrapper($this
      ->getToolkit()
      ->getResource(), $arguments['font_size'], -$arguments['font_angle'], $arguments['basepoint'][0], $arguments['basepoint'][1], $this
      ->allocateColorFromRgba($arguments['font_color']), $font_file, $arguments['text']);
    return TRUE;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
FontOperationTrait::getFontPath protected function Return the path of the font file.
GDImageToolkitOperationBase::getToolkit protected function The correctly typed image toolkit for GD operations. Overrides ImageToolkitOperationBase::getToolkit
GDOperationTrait::allocateColorFromRgba protected function Allocates a GD color from an RGBA hexadecimal.
GDOperationTrait::filterOpacity protected function Change overall image transparency level.
GDOperationTrait::getAreaEntropy protected function Computes the entropy of the area of an image.
GDOperationTrait::getEntropyCropByGridding protected function Computes the entropy crop of an image, using recursive gridding.
GDOperationTrait::getEntropyCropBySlicing protected function Computes the entropy crop of an image, using slices.
GDOperationTrait::getRectangleCorners protected function Convert a rectangle to a sequence of point coordinates.
GDOperationTrait::hexToRgba protected function Convert a RGBA hex to its RGBA integer GD components.
GDOperationTrait::imageCopyGaussianBlurred protected function Gets a copy of the source with the Gaussian Blur algorithm applied.
GDOperationTrait::imageCopyMergeAlpha protected function Copy and merge part of an image, preserving alpha.
GDOperationTrait::imagettfbboxWrapper protected function Wrapper of imagettfbbox().
GDOperationTrait::imagettftextWrapper protected function Wrapper of imagettftext().
ImageToolkitOperationBase::$logger protected property A logger instance.
ImageToolkitOperationBase::$toolkit protected property The image toolkit.
ImageToolkitOperationBase::apply final public function Applies a toolkit specific operation to an image. Overrides ImageToolkitOperationInterface::apply
ImageToolkitOperationBase::prepareArguments protected function Checks if required arguments are passed in and adds defaults for non passed in optional arguments.
ImageToolkitOperationBase::__construct public function Constructs an image toolkit operation plugin. Overrides PluginBase::__construct
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TextOverlay::execute protected function Performs the actual manipulation on the image. Overrides ImageToolkitOperationBase::execute
TextOverlayTrait::arguments protected function
TextOverlayTrait::validateArguments protected function