* Add better array types through automatic inference Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Create VO for ScaleData Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Fix bug with calculation of minimum X/Y 0.0 cannot be used as a sentinel value because it's one of the possible values. Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Update baselines Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> --------- Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
40 lines
865 B
PHP
40 lines
865 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpMyAdmin\Gis;
|
|
|
|
use function max;
|
|
use function min;
|
|
|
|
class ScaleData
|
|
{
|
|
public function __construct(
|
|
public readonly float $maxX,
|
|
public readonly float $minX,
|
|
public readonly float $maxY,
|
|
public readonly float $minY,
|
|
) {
|
|
}
|
|
|
|
public function expand(float $x, float $y): ScaleData
|
|
{
|
|
return new ScaleData(
|
|
max($this->maxX, $x),
|
|
min($this->minX, $x),
|
|
max($this->maxY, $y),
|
|
min($this->minY, $y),
|
|
);
|
|
}
|
|
|
|
public function merge(ScaleData $scaleData): ScaleData
|
|
{
|
|
return new ScaleData(
|
|
max($this->maxX, $scaleData->maxX),
|
|
min($this->minX, $scaleData->minX),
|
|
max($this->maxY, $scaleData->maxY),
|
|
min($this->minY, $scaleData->minY),
|
|
);
|
|
}
|
|
}
|