class Basic in Image Effects 8
Same name in this branch
- 8 src/Plugin/image_effects/FontSelector/Basic.php \Drupal\image_effects\Plugin\image_effects\FontSelector\Basic
- 8 src/Plugin/image_effects/ImageSelector/Basic.php \Drupal\image_effects\Plugin\image_effects\ImageSelector\Basic
Same name and namespace in other branches
- 8.3 src/Plugin/image_effects/FontSelector/Basic.php \Drupal\image_effects\Plugin\image_effects\FontSelector\Basic
- 8.2 src/Plugin/image_effects/FontSelector/Basic.php \Drupal\image_effects\Plugin\image_effects\FontSelector\Basic
Basic font selector plugin.
Allows typing in the font file URI/path.
Plugin annotation
@Plugin(
id = "basic",
title = @Translation("Basic font selector"),
short_title = @Translation("Basic"),
help = @Translation("Allows typing in the font file URI/path.")
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\image_effects\Plugin\ImageEffectsPluginBase implements ImageEffectsPluginBaseInterface
- class \Drupal\image_effects\Plugin\image_effects\FontSelector\Basic implements ImageEffectsFontSelectorPluginInterface
- class \Drupal\image_effects\Plugin\ImageEffectsPluginBase implements ImageEffectsPluginBaseInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of Basic
1 string reference to 'Basic'
- image_effects.schema.yml in config/
schema/ image_effects.schema.yml - config/schema/image_effects.schema.yml
File
- src/
Plugin/ image_effects/ FontSelector/ Basic.php, line 22
Namespace
Drupal\image_effects\Plugin\image_effects\FontSelectorView source
class Basic extends ImageEffectsPluginBase implements ImageEffectsFontSelectorPluginInterface {
/**
* {@inheritdoc}
*/
public function selectionElement(array $options = []) {
// Element.
return array_merge([
'#type' => 'textfield',
'#title' => $this
->t('Font URI/path'),
'#description' => $this
->t('An URI, an absolute path, or a relative path. Relative paths will be resolved relative to the Drupal installation directory.'),
'#element_validate' => [
[
$this,
'validateSelectorUri',
],
],
], $options);
}
/**
* Validation handler for the selection element.
*/
public function validateSelectorUri($element, FormStateInterface $form_state, $form) {
if (!empty($element['#value'])) {
if (!file_exists($element['#value'])) {
$form_state
->setErrorByName(implode('][', $element['#parents']), $this
->t('The file does not exist.'));
}
}
}
/**
* {@inheritdoc}
*/
public function getDescription($uri) {
return $this
->getData($uri)['name'];
}
/**
* Return the font information.
*
* Scans the font file to return tags information.
*
* @param string $uri
* the URI of the font file.
*
* @return array
* an associative array with the following keys:
* 'copyright' => Copyright information
* 'family' => Font family
* 'subfamily' => Font subfamily
* 'name' => Font name
* 'file' => Font file URI
*/
protected function getData($uri) {
$realpath = drupal_realpath($uri);
$fd = fopen($realpath, "r");
$text = fread($fd, filesize($realpath));
fclose($fd);
$number_of_tabs = $this
->dec2hex(ord($text[4])) . $this
->dec2hex(ord($text[5]));
for ($i = 0; $i < hexdec($number_of_tabs); $i++) {
$tag = $text[12 + $i * 16] . $text[12 + $i * 16 + 1] . $text[12 + $i * 16 + 2] . $text[12 + $i * 16 + 3];
if ($tag == "name") {
$offset_name_table_hex = $this
->dec2hex(ord($text[12 + $i * 16 + 8])) . $this
->dec2hex(ord($text[12 + $i * 16 + 8 + 1])) . $this
->dec2hex(ord($text[12 + $i * 16 + 8 + 2])) . $this
->dec2hex(ord($text[12 + $i * 16 + 8 + 3]));
$offset_name_table_dec = hexdec($offset_name_table_hex);
$offset_storage_hex = $this
->dec2hex(ord($text[$offset_name_table_dec + 4])) . $this
->dec2hex(ord($text[$offset_name_table_dec + 5]));
$offset_storage_dec = hexdec($offset_storage_hex);
$number_name_records_hex = $this
->dec2hex(ord($text[$offset_name_table_dec + 2])) . $this
->dec2hex(ord($text[$offset_name_table_dec + 3]));
$number_name_records_dec = hexdec($number_name_records_hex);
break;
}
}
$storage_dec = $offset_storage_dec + $offset_name_table_dec;
$font = [
'copyright' => '',
'family' => '',
'subfamily' => '',
'name' => '',
'file' => $uri,
];
for ($j = 0; $j < $number_name_records_dec; $j++) {
$name_id_hex = $this
->dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 6])) . $this
->dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 7]));
$name_id_dec = hexdec($name_id_hex);
$string_length_hex = $this
->dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 8])) . $this
->dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 9]));
$string_length_dec = hexdec($string_length_hex);
$string_offset_hex = $this
->dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 10])) . $this
->dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 11]));
$string_offset_dec = hexdec($string_offset_hex);
if ($name_id_dec == 0 && empty($font['copyright'])) {
for ($l = 0; $l < $string_length_dec; $l++) {
if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
$font['copyright'] .= $text[$storage_dec + $string_offset_dec + $l];
}
}
}
if ($name_id_dec == 1 && empty($font['family'])) {
for ($l = 0; $l < $string_length_dec; $l++) {
if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
$font['family'] .= $text[$storage_dec + $string_offset_dec + $l];
}
}
}
if ($name_id_dec == 2 && empty($font['subfamily'])) {
for ($l = 0; $l < $string_length_dec; $l++) {
if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
$font['subfamily'] .= $text[$storage_dec + $string_offset_dec + $l];
}
}
}
if ($name_id_dec == 4 && empty($font['name'])) {
for ($l = 0; $l < $string_length_dec; $l++) {
if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
$font['name'] .= $text[$storage_dec + $string_offset_dec + $l];
}
}
}
if ($font['copyright'] != "" && $font['family'] != "" && $font['subfamily'] != "" && $font['name'] != "") {
break;
}
}
return $font;
}
/**
* Convert a dec to a hex.
*
* @param int $dec
* An integer number.
*
* @return string
* the number represented as hex
*/
protected function dec2hex($dec) {
$hex = dechex($dec);
return str_repeat("0", 2 - Unicode::strlen($hex)) . Unicode::strtoupper($hex);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Basic:: |
protected | function | Convert a dec to a hex. | |
Basic:: |
protected | function | Return the font information. | |
Basic:: |
public | function |
Get the description of a font file. Overrides ImageEffectsFontSelectorPluginInterface:: |
|
Basic:: |
public | function |
Return a form element to select the plugin content. Overrides ImageEffectsPluginBase:: |
1 |
Basic:: |
public | function | Validation handler for the selection element. | 1 |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
ImageEffectsPluginBase:: |
protected | property | Configuration object for image_effects. | |
ImageEffectsPluginBase:: |
protected | property | The image_effects logger. | |
ImageEffectsPluginBase:: |
protected | property | The image_effects plugin type. | |
ImageEffectsPluginBase:: |
public | function |
Form constructor. Overrides PluginFormInterface:: |
2 |
ImageEffectsPluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
ImageEffectsPluginBase:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
1 |
ImageEffectsPluginBase:: |
public | function |
Gets default configuration for this plugin. Overrides ConfigurablePluginInterface:: |
2 |
ImageEffectsPluginBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurablePluginInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Get the image_effects plugin type. Overrides ImageEffectsPluginBaseInterface:: |
|
ImageEffectsPluginBase:: |
public static | function |
Determines if plugin can be used. Overrides ImageEffectsPluginBaseInterface:: |
1 |
ImageEffectsPluginBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurablePluginInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Form submission handler. Overrides PluginFormInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Form validation handler. Overrides PluginFormInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Constructs a ImageEffectsPluginBase object. Overrides PluginBase:: |
1 |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |