Initial commit
This commit is contained in:
94
src/Element.php
Normal file
94
src/Element.php
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\GdLabel;
|
||||
|
||||
abstract class Element
|
||||
{
|
||||
/** @var Element[] $children */
|
||||
protected $children = [];
|
||||
|
||||
/** @var array $props */
|
||||
protected $props = [];
|
||||
|
||||
/**
|
||||
* Add a new child
|
||||
*
|
||||
* @param Element $element
|
||||
*/
|
||||
public function addChild(Element $element)
|
||||
{
|
||||
$this->children[] = $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all children
|
||||
*
|
||||
* @return Element[] Child elements
|
||||
*/
|
||||
public function getChildren():iterable
|
||||
{
|
||||
return $this->children;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the element
|
||||
*
|
||||
* @param gd $canvas
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param array $params
|
||||
*/
|
||||
public function drawElement($canvas, int $x, int $y, int $width, int $height, array $params)
|
||||
{
|
||||
$this->draw($canvas, $x, $y, $width, $height, $params);
|
||||
}
|
||||
|
||||
protected function draw($canvas, int $x, int $y, int $width, int $height, array $params)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected function rgb($color)
|
||||
{
|
||||
if (is_integer($color)) {
|
||||
return $color;
|
||||
} elseif (preg_match('/^#[0-9A-F]{6}$/i', $color)) {
|
||||
[$r,$g,$b] = \sscanf($color, "#%02x%02x%02x");
|
||||
return $r | $g << 8 | $b << 16;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public function setProp(string $key, $value)
|
||||
{
|
||||
$this->props[$key] = $value;
|
||||
}
|
||||
|
||||
public function getProp(string $key, $default=null)
|
||||
{
|
||||
return array_key_exists($key, $this->props)
|
||||
?$this->props[$key]
|
||||
:$default
|
||||
;
|
||||
}
|
||||
|
||||
public function getPropRgb(string $key, $default=null)
|
||||
{
|
||||
$color = $this->getProp($key, $default);
|
||||
return $this->rgb($color);
|
||||
}
|
||||
|
||||
public function getProps():iterable
|
||||
{
|
||||
return $this->props;
|
||||
}
|
||||
|
||||
protected function warning($msg)
|
||||
{
|
||||
defined("STDERR") && fprintf(STDERR, "%s\n", rtrim($msg));
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user