phpmyadmin/libraries/classes/Gis/ScaleData.php
Kamil Tekiela 7f898f9fc3
Refactor gis scale data set calculation (#18100)
* 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>
2023-02-17 08:24:37 -03:00

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),
);
}
}