1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-17 19:26:25 +02:00

Add doc blocks

This commit is contained in:
Oliver Vogel
2023-12-18 17:08:23 +01:00
parent 04faec22a6
commit 2d0369b3a9
10 changed files with 383 additions and 4 deletions

View File

@@ -6,6 +6,13 @@ use Intervention\Image\Interfaces\PointInterface;
class Circle extends Ellipse class Circle extends Ellipse
{ {
/**
* Create new Circle instance
*
* @param int $diameter
* @param PointInterface $pivot
* @return void
*/
public function __construct( public function __construct(
protected int $diameter, protected int $diameter,
protected PointInterface $pivot = new Point() protected PointInterface $pivot = new Point()
@@ -14,6 +21,12 @@ class Circle extends Ellipse
$this->setHeight($diameter); $this->setHeight($diameter);
} }
/**
* Set diameter of circle
*
* @param int $diameter
* @return Circle
*/
public function setDiameter(int $diameter): self public function setDiameter(int $diameter): self
{ {
$this->setWidth($diameter); $this->setWidth($diameter);
@@ -22,16 +35,32 @@ class Circle extends Ellipse
return $this; return $this;
} }
/**
* Get diameter of circle
*
* @return int
*/
public function diameter(): int public function diameter(): int
{ {
return $this->diameter; return $this->diameter;
} }
/**
* Set radius of circle
*
* @param int $radius
* @return Circle
*/
public function setRadius(int $radius): self public function setRadius(int $radius): self
{ {
return $this->setDiameter(intval($radius * 2)); return $this->setDiameter(intval($radius * 2));
} }
/**
* Get radius of circle
*
* @return int
*/
public function radius(): int public function radius(): int
{ {
return intval($this->diameter / 2); return intval($this->diameter / 2);

View File

@@ -12,6 +12,14 @@ class Ellipse implements DrawableInterface
use HasBorder; use HasBorder;
use HasBackgroundColor; use HasBackgroundColor;
/**
* Create new Ellipse
*
* @param int $width
* @param int $height
* @param PointInterface $pivot
* @return void
*/
public function __construct( public function __construct(
protected int $width, protected int $width,
protected int $height, protected int $height,
@@ -19,21 +27,45 @@ class Ellipse implements DrawableInterface
) { ) {
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::position()
*/
public function position(): PointInterface public function position(): PointInterface
{ {
return $this->pivot; return $this->pivot;
} }
/**
* Return pivot point of Ellipse
*
* @return PointInterface
*/
public function pivot(): PointInterface public function pivot(): PointInterface
{ {
return $this->pivot; return $this->pivot;
} }
/**
* Set size of Ellipse
*
* @param int $width
* @param int $height
* @return Ellipse
*/
public function setSize(int $width, int $height): self public function setSize(int $width, int $height): self
{ {
return $this->setWidth($width)->setHeight($height); return $this->setWidth($width)->setHeight($height);
} }
/**
* Set width of Ellipse
*
* @param int $width
* @return Ellipse
*/
public function setWidth(int $width): self public function setWidth(int $width): self
{ {
$this->width = $width; $this->width = $width;
@@ -41,6 +73,12 @@ class Ellipse implements DrawableInterface
return $this; return $this;
} }
/**
* Set height of Ellipse
*
* @param int $height
* @return Ellipse
*/
public function setHeight(int $height): self public function setHeight(int $height): self
{ {
$this->height = $height; $this->height = $height;
@@ -48,11 +86,21 @@ class Ellipse implements DrawableInterface
return $this; return $this;
} }
/**
* Get width of Ellipse
*
* @return int
*/
public function width(): int public function width(): int
{ {
return $this->width; return $this->width;
} }
/**
* Get height of Ellipse
*
* @return int
*/
public function height(): int public function height(): int
{ {
return $this->height; return $this->height;

View File

@@ -12,6 +12,14 @@ class Line implements DrawableInterface
use HasBorder; use HasBorder;
use HasBackgroundColor; use HasBackgroundColor;
/**
* Create new line instance
*
* @param Point $start
* @param Point $end
* @param int $width
* @return void
*/
public function __construct( public function __construct(
protected Point $start, protected Point $start,
protected Point $end, protected Point $end,
@@ -19,16 +27,32 @@ class Line implements DrawableInterface
) { ) {
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::position()
*/
public function position(): PointInterface public function position(): PointInterface
{ {
return $this->start; return $this->start;
} }
/**
* Return line width
*
* @return int
*/
public function width(): int public function width(): int
{ {
return $this->width; return $this->width;
} }
/**
* Set line width
*
* @param int $width
* @return Line
*/
public function setWidth(int $width): self public function setWidth(int $width): self
{ {
$this->width = $width; $this->width = $width;
@@ -36,16 +60,32 @@ class Line implements DrawableInterface
return $this; return $this;
} }
/**
* Get starting point of line
*
* @return Point
*/
public function start(): Point public function start(): Point
{ {
return $this->start; return $this->start;
} }
/**
* get end point of line
*
* @return Point
*/
public function end(): Point public function end(): Point
{ {
return $this->end; return $this->end;
} }
/**
* Set starting point of line
*
* @param Point $start
* @return Line
*/
public function setStart(Point $start): self public function setStart(Point $start): self
{ {
$this->start = $start; $this->start = $start;
@@ -53,6 +93,13 @@ class Line implements DrawableInterface
return $this; return $this;
} }
/**
* Set starting point of line by coordinates
*
* @param int $x
* @param int $y
* @return Line
*/
public function from(int $x, int $y): self public function from(int $x, int $y): self
{ {
$this->start()->setX($x); $this->start()->setX($x);
@@ -61,6 +108,13 @@ class Line implements DrawableInterface
return $this; return $this;
} }
/**
* Set end point of line by coordinates
*
* @param int $x
* @param int $y
* @return Line
*/
public function to(int $x, int $y): self public function to(int $x, int $y): self
{ {
$this->end()->setX($x); $this->end()->setX($x);
@@ -69,6 +123,12 @@ class Line implements DrawableInterface
return $this; return $this;
} }
/**
* Set end point of line
*
* @param Point $end
* @return Line
*/
public function setEnd(Point $end): self public function setEnd(Point $end): self
{ {
$this->end = $end; $this->end = $end;

View File

@@ -6,6 +6,14 @@ use Intervention\Image\Interfaces\ColorInterface;
class Pixel extends Point class Pixel extends Point
{ {
/**
* Create new pixel instance
*
* @param ColorInterface $background
* @param int $x
* @param int $y
* @return void
*/
public function __construct( public function __construct(
protected ColorInterface $background, protected ColorInterface $background,
protected int $x, protected int $x,
@@ -13,6 +21,11 @@ class Pixel extends Point
) { ) {
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::setBackgroundColor()
*/
public function setBackgroundColor(ColorInterface $background): self public function setBackgroundColor(ColorInterface $background): self
{ {
$this->background = $background; $this->background = $background;
@@ -20,6 +33,11 @@ class Pixel extends Point
return $this; return $this;
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::backgroundColor()
*/
public function backgroundColor(): ColorInterface public function backgroundColor(): ColorInterface
{ {
return $this->background; return $this->background;

View File

@@ -6,6 +6,13 @@ use Intervention\Image\Interfaces\PointInterface;
class Point implements PointInterface class Point implements PointInterface
{ {
/**
* Create new point instance
*
* @param int $x
* @param int $y
* @return void
*/
public function __construct( public function __construct(
protected int $x = 0, protected int $x = 0,
protected int $y = 0 protected int $y = 0

View File

@@ -17,17 +17,34 @@ class Polygon implements IteratorAggregate, Countable, ArrayAccess, DrawableInte
use HasBorder; use HasBorder;
use HasBackgroundColor; use HasBackgroundColor;
/**
* Create new polygon instance
*
* @param array $points
* @param PointInterface $pivot
* @return void
*/
public function __construct( public function __construct(
protected array $points = [], protected array $points = [],
protected PointInterface $pivot = new Point() protected PointInterface $pivot = new Point()
) { ) {
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::position()
*/
public function position(): PointInterface public function position(): PointInterface
{ {
return $this->pivot; return $this->pivot;
} }
/**
* Implement iteration through all points of polygon
*
* @return Traversable
*/
public function getIterator(): Traversable public function getIterator(): Traversable
{ {
return new ArrayIterator($this->points); return new ArrayIterator($this->points);

View File

@@ -9,6 +9,14 @@ use Intervention\Image\Interfaces\SizeInterface;
class Rectangle extends Polygon implements SizeInterface, DrawableInterface class Rectangle extends Polygon implements SizeInterface, DrawableInterface
{ {
/**
* Create new rectangle instance
*
* @param int $width
* @param int $height
* @param PointInterface $pivot
* @return void
*/
public function __construct( public function __construct(
int $width, int $width,
int $height, int $height,
@@ -20,11 +28,24 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
$this->addPoint(new Point($this->pivot->x(), $this->pivot->y() - $height)); $this->addPoint(new Point($this->pivot->x(), $this->pivot->y() - $height));
} }
/**
* Set size of rectangle
*
* @param int $width
* @param int $height
* @return Rectangle
*/
public function setSize(int $width, int $height): self public function setSize(int $width, int $height): self
{ {
return $this->setWidth($width)->setHeight($height); return $this->setWidth($width)->setHeight($height);
} }
/**
* Set width of rectangle
*
* @param int $width
* @return Rectangle
*/
public function setWidth(int $width): self public function setWidth(int $width): self
{ {
$this[1]->setX($this[0]->x() + $width); $this[1]->setX($this[0]->x() + $width);
@@ -33,6 +54,12 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
return $this; return $this;
} }
/**
* Set height of rectangle
*
* @param int $height
* @return Rectangle
*/
public function setHeight(int $height): self public function setHeight(int $height): self
{ {
$this[2]->setY($this[1]->y() + $height); $this[2]->setY($this[1]->y() + $height);
@@ -41,11 +68,22 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
return $this; return $this;
} }
/**
* Return pivot point of rectangle
*
* @return PointInterface
*/
public function pivot(): PointInterface public function pivot(): PointInterface
{ {
return $this->pivot; return $this->pivot;
} }
/**
* Set pivot point of rectangle
*
* @param PointInterface $pivot
* @return Rectangle
*/
public function setPivot(PointInterface $pivot): self public function setPivot(PointInterface $pivot): self
{ {
$this->pivot = $pivot; $this->pivot = $pivot;
@@ -53,6 +91,15 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
return $this; return $this;
} }
/**
* Move pivot to the given position in the rectangle and adjust the new
* position by given offset values.
*
* @param string $position
* @param int $offset_x
* @param int $offset_y
* @return Rectangle
*/
public function movePivot(string $position, int $offset_x = 0, int $offset_y = 0): self public function movePivot(string $position, int $offset_x = 0, int $offset_y = 0): self
{ {
switch (strtolower($position)) { switch (strtolower($position)) {
@@ -131,6 +178,13 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
return $this; return $this;
} }
/**
* Align pivot relative to given size at given position
*
* @param SizeInterface $size
* @param string $position
* @return Rectangle
*/
public function alignPivotTo(SizeInterface $size, string $position): self public function alignPivotTo(SizeInterface $size, string $position): self
{ {
$reference = new self($size->width(), $size->height()); $reference = new self($size->width(), $size->height());
@@ -143,6 +197,12 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
return $this; return $this;
} }
/**
* Return relative position to given rectangle
*
* @param SizeInterface $rectangle
* @return PointInterface
*/
public function relativePositionTo(SizeInterface $rectangle): PointInterface public function relativePositionTo(SizeInterface $rectangle): PointInterface
{ {
return new Point( return new Point(
@@ -151,11 +211,22 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
); );
} }
/**
* Return aspect ration of rectangle
*
* @return float
*/
public function aspectRatio(): float public function aspectRatio(): float
{ {
return $this->width() / $this->height(); return $this->width() / $this->height();
} }
/**
* Determine if rectangle fits into given rectangle
*
* @param SizeInterface $size
* @return bool
*/
public function fitsInto(SizeInterface $size): bool public function fitsInto(SizeInterface $size): bool
{ {
if ($this->width() > $size->width()) { if ($this->width() > $size->width()) {
@@ -169,21 +240,41 @@ class Rectangle extends Polygon implements SizeInterface, DrawableInterface
return true; return true;
} }
/**
* Determine if rectangle has landscape format
*
* @return bool
*/
public function isLandscape(): bool public function isLandscape(): bool
{ {
return $this->width() > $this->height(); return $this->width() > $this->height();
} }
/**
* Determine if rectangle has landscape format
*
* @return bool
*/
public function isPortrait(): bool public function isPortrait(): bool
{ {
return $this->width() < $this->height(); return $this->width() < $this->height();
} }
/**
* Return most top left point of rectangle
*
* @return PointInterface
*/
public function topLeftPoint(): PointInterface public function topLeftPoint(): PointInterface
{ {
return $this->points[0]; return $this->points[0];
} }
/**
* Return bottom right point of rectangle
*
* @return PointInterface
*/
public function bottomRightPoint(): PointInterface public function bottomRightPoint(): PointInterface
{ {
return $this->points[2]; return $this->points[2];

View File

@@ -6,6 +6,11 @@ trait HasBackgroundColor
{ {
protected mixed $backgroundColor = null; protected mixed $backgroundColor = null;
/**
* {@inheritdoc}
*
* @see DrawableInterface::setBackgroundColor()
*/
public function setBackgroundColor(mixed $color): self public function setBackgroundColor(mixed $color): self
{ {
$this->backgroundColor = $color; $this->backgroundColor = $color;
@@ -13,11 +18,21 @@ trait HasBackgroundColor
return $this; return $this;
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::backgroundColor()
*/
public function backgroundColor(): mixed public function backgroundColor(): mixed
{ {
return $this->backgroundColor; return $this->backgroundColor;
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::hasBackgroundColor()
*/
public function hasBackgroundColor(): bool public function hasBackgroundColor(): bool
{ {
return !empty($this->backgroundColor); return !empty($this->backgroundColor);

View File

@@ -7,11 +7,21 @@ trait HasBorder
protected mixed $borderColor = null; protected mixed $borderColor = null;
protected int $borderSize = 0; protected int $borderSize = 0;
/**
* {@inheritdoc}
*
* @see DrawableInterface::setBorder()
*/
public function setBorder(mixed $color, int $size = 1): self public function setBorder(mixed $color, int $size = 1): self
{ {
return $this->setBorderSize($size)->setBorderColor($color); return $this->setBorderSize($size)->setBorderColor($color);
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::setBorderSize()
*/
public function setBorderSize(int $size): self public function setBorderSize(int $size): self
{ {
$this->borderSize = $size; $this->borderSize = $size;
@@ -19,11 +29,21 @@ trait HasBorder
return $this; return $this;
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::borderSize()
*/
public function borderSize(): int public function borderSize(): int
{ {
return $this->borderSize; return $this->borderSize;
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::setBorderColor()
*/
public function setBorderColor(mixed $color): self public function setBorderColor(mixed $color): self
{ {
$this->borderColor = $color; $this->borderColor = $color;
@@ -31,11 +51,21 @@ trait HasBorder
return $this; return $this;
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::borderColor()
*/
public function borderColor(): mixed public function borderColor(): mixed
{ {
return $this->borderColor; return $this->borderColor;
} }
/**
* {@inheritdoc}
*
* @see DrawableInterface::hasBorder()
*/
public function hasBorder(): bool public function hasBorder(): bool
{ {
return $this->borderSize > 0 && !is_null($this->borderColor); return $this->borderSize > 0 && !is_null($this->borderColor);

View File

@@ -4,14 +4,78 @@ namespace Intervention\Image\Interfaces;
interface DrawableInterface interface DrawableInterface
{ {
/**
* Position of the drawable object
*
* @return PointInterface
*/
public function position(): PointInterface; public function position(): PointInterface;
public function setBackgroundColor(mixed $color);
/**
* Set the background color of the drawable object
*
* @param mixed $color
* @return DrawableInterface
*/
public function setBackgroundColor(mixed $color): DrawableInterface;
/**
* Return background color of drawable object
*
* @return mixed
*/
public function backgroundColor(): mixed; public function backgroundColor(): mixed;
/**
* Determine if a background color was set
*
* @return bool
*/
public function hasBackgroundColor(): bool; public function hasBackgroundColor(): bool;
public function setBorder(mixed $color, int $size = 1);
public function setBorderSize(int $size); /**
public function setBorderColor(mixed $color); * Set border color & size of the drawable object
*
* @param mixed $color
* @param int $size
* @return DrawableInterface
*/
public function setBorder(mixed $color, int $size = 1): DrawableInterface;
/**
* Set border size of the drawable object
*
* @param int $size
* @return DrawableInterface
*/
public function setBorderSize(int $size): DrawableInterface;
/**
* Set border color of the drawable object
*
* @param mixed $color
* @return DrawableInterface
*/
public function setBorderColor(mixed $color): DrawableInterface;
/**
* Get border size
*
* @return int
*/
public function borderSize(): int; public function borderSize(): int;
/**
* Get border color of drawable object
*
* @return mixed
*/
public function borderColor(): mixed; public function borderColor(): mixed;
/**
* Determine if the drawable object has a border
*
* @return bool
*/
public function hasBorder(): bool; public function hasBorder(): bool;
} }