public function writeTextOnImage($fontSize, $fontFile, $fontColor, $text, &$img, $positionX, $positionY) { if (!$text) { return false; } $text = preg_replace('/[?]+/', "", $text); $text = \Cake\Utility\Text::wrap($text, 40); $text = \Cake\Utility\Text::truncate($text, 80, ['exact' => false]); $fontColor = $this->hex2rgb($fontColor); $color = imagecolorallocate($img, $fontColor[0], $fontColor[1], $fontColor[2]); $result = imagettftext($img, $fontSize, 0, $positionX, $positionY, $color, $fontFile, trim($text)); }
/** * Wrap a block of text. * Allows you to set the width, and indenting on a block of text. * * ### Options * * - `width` The width to wrap to. Defaults to 72 * - `wordWrap` Only wrap on words breaks (spaces) Defaults to true. * - `indent` Indent the text with the string provided. Defaults to null. * * @param string $text Text the text to format. * @param int|array $options Array of options to use, or an integer to wrap the text to. * @return string Wrapped / indented text * @see \Cake\Utility\Text::wrap() * @link http://book.cakephp.org/3.0/en/console-and-shells.html#Shell::wrapText */ public function wrapText($text, $options = []) { return Text::wrap($text, $options); }
/** * Get the help as formatted text suitable for output on the command line. * * @param int $width The width of the help output. * @return string */ public function text($width = 72) { $parser = $this->_parser; $out = []; $description = $parser->description(); if (!empty($description)) { $out[] = Text::wrap($description, $width); $out[] = ''; } $out[] = '<info>Usage:</info>'; $out[] = $this->_generateUsage(); $out[] = ''; $subcommands = $parser->subcommands(); if (!empty($subcommands)) { $out[] = '<info>Subcommands:</info>'; $out[] = ''; $max = $this->_getMaxLength($subcommands) + 2; foreach ($subcommands as $command) { $out[] = Text::wrapBlock($command->help($max), ['width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1]); } $out[] = ''; $out[] = sprintf('To see help on a subcommand use <info>`cake %s [subcommand] --help`</info>', $parser->command()); $out[] = ''; } $options = $parser->options(); if (!empty($options)) { $max = $this->_getMaxLength($options) + 8; $out[] = '<info>Options:</info>'; $out[] = ''; foreach ($options as $option) { $out[] = Text::wrapBlock($option->help($max), ['width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1]); } $out[] = ''; } $arguments = $parser->arguments(); if (!empty($arguments)) { $max = $this->_getMaxLength($arguments) + 2; $out[] = '<info>Arguments:</info>'; $out[] = ''; foreach ($arguments as $argument) { $out[] = Text::wrapBlock($argument->help($max), ['width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1]); } $out[] = ''; } $epilog = $parser->epilog(); if (!empty($epilog)) { $out[] = Text::wrap($epilog, $width); $out[] = ''; } return implode("\n", $out); }
/** * test wrapBlock() indentical to wrap() * * @return void */ public function testWrapBlockIndenticalToWrap() { $text = 'This is the song that never ends. This is the song that never ends. This is the song that never ends.'; $result = Text::wrapBlock($text, 33); $expected = Text::wrap($text, 33); $this->assertTextEquals($expected, $result); $result = Text::wrapBlock($text, ['width' => 33, 'indentAt' => 0]); $expected = Text::wrap($text, ['width' => 33, 'indentAt' => 0]); $this->assertTextEquals($expected, $result); }
/** * test wrap() indenting * * @return void */ public function testWrapIndent() { $text = 'This is the song that never ends. This is the song that never ends. This is the song that never ends.'; $result = Text::wrap($text, ['width' => 33, 'indent' => "\t", 'indentAt' => 1]); $expected = <<<TEXT This is the song that never ends. \tThis is the song that never ends. \tThis is the song that never ends. TEXT; $this->assertTextEquals($expected, $result); }