Improve the mosaic algorithm further #43
@ -8,15 +8,18 @@
|
|||||||
|
|
||||||
class AssetIterator extends Asset
|
class AssetIterator extends Asset
|
||||||
{
|
{
|
||||||
|
private Database $db;
|
||||||
|
private $direction;
|
||||||
|
|
||||||
private $return_format;
|
private $return_format;
|
||||||
private $res_assets;
|
private $res_assets;
|
||||||
private $res_meta;
|
private $res_meta;
|
||||||
private $res_thumbs;
|
private $res_thumbs;
|
||||||
private Database $db;
|
|
||||||
|
|
||||||
protected function __construct($res_assets, $res_meta, $res_thumbs, $return_format)
|
protected function __construct($res_assets, $res_meta, $res_thumbs, $return_format, $direction)
|
||||||
{
|
{
|
||||||
$this->db = Registry::get('db');
|
$this->db = Registry::get('db');
|
||||||
|
$this->direction = $direction;
|
||||||
$this->res_assets = $res_assets;
|
$this->res_assets = $res_assets;
|
||||||
$this->res_meta = $res_meta;
|
$this->res_meta = $res_meta;
|
||||||
$this->res_thumbs = $res_thumbs;
|
$this->res_thumbs = $res_thumbs;
|
||||||
@ -174,7 +177,7 @@ class AssetIterator extends Asset
|
|||||||
'_' => '_',
|
'_' => '_',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$iterator = new self($res_assets, $res_meta, $res_thumbs, $return_format);
|
$iterator = new self($res_assets, $res_meta, $res_thumbs, $return_format, $params['direction']);
|
||||||
|
|
||||||
// Returning total count, too?
|
// Returning total count, too?
|
||||||
if ($return_count)
|
if ($return_count)
|
||||||
@ -190,4 +193,14 @@ class AssetIterator extends Asset
|
|||||||
else
|
else
|
||||||
return $iterator;
|
return $iterator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isAscending()
|
||||||
|
{
|
||||||
|
return $this->direction === 'asc';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isDescending()
|
||||||
|
{
|
||||||
|
return $this->direction === 'desc';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
class PhotoMosaic
|
class PhotoMosaic
|
||||||
{
|
{
|
||||||
|
private $descending;
|
||||||
private AssetIterator $iterator;
|
private AssetIterator $iterator;
|
||||||
private $layouts;
|
private $layouts;
|
||||||
private $processedImages = 0;
|
private $processedImages = 0;
|
||||||
@ -19,6 +20,7 @@ class PhotoMosaic
|
|||||||
{
|
{
|
||||||
$this->iterator = $iterator;
|
$this->iterator = $iterator;
|
||||||
$this->layouts = $this->availableLayouts();
|
$this->layouts = $this->availableLayouts();
|
||||||
|
$this->descending = $iterator->isDescending();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __destruct()
|
public function __destruct()
|
||||||
@ -143,8 +145,17 @@ class PhotoMosaic
|
|||||||
return -$priority_diff;
|
return -$priority_diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function orderQueueByDate()
|
||||||
|
{
|
||||||
|
usort($this->queue, function($a, $b) {
|
||||||
|
$score = $a->getDateCaptured() <=> $b->getDateCaptured();
|
||||||
|
return $score * ($this->descending ? -1 : 1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private function pushToQueue(Image $image)
|
private function pushToQueue(Image $image)
|
||||||
{
|
{
|
||||||
$this->queue[] = $image;
|
$this->queue[] = $image;
|
||||||
|
$this->orderQueueByDate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user