backup
This commit is contained in:
parent
a6afd7d601
commit
d0f7b8fbf7
@ -44,11 +44,13 @@ final readonly class Gui implements Application
|
|||||||
$lifeCycle->run();
|
$lifeCycle->run();
|
||||||
} catch (ArgumentCountError $e) {
|
} catch (ArgumentCountError $e) {
|
||||||
var_dump($e->getMessage());
|
var_dump($e->getMessage());
|
||||||
|
var_dump($e->getLine());
|
||||||
var_dump($e->getFile());
|
var_dump($e->getFile());
|
||||||
var_dump($e->getTraceAsString());
|
var_dump($e->getTraceAsString());
|
||||||
}
|
}
|
||||||
} catch (Throwable $throwable) {
|
} catch (Throwable $throwable) {
|
||||||
var_dump($throwable->getMessage());
|
var_dump($throwable->getMessage());
|
||||||
|
var_dump($throwable->getLine());
|
||||||
var_dump($throwable->getFile());
|
var_dump($throwable->getFile());
|
||||||
var_dump($throwable->getTraceAsString());
|
var_dump($throwable->getTraceAsString());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,26 +5,18 @@ namespace PHPNative\Renderer\Widgets;
|
|||||||
use PHPNative\Debug\Debug;
|
use PHPNative\Debug\Debug;
|
||||||
use PHPNative\Event\EventType;
|
use PHPNative\Event\EventType;
|
||||||
use PHPNative\Renderer\Cache\Styles;
|
use PHPNative\Renderer\Cache\Styles;
|
||||||
use PHPNative\Renderer\Item;
|
|
||||||
use PHPNative\Renderer\Thread;
|
use PHPNative\Renderer\Thread;
|
||||||
use PHPNative\Renderer\Viewport;
|
use PHPNative\Renderer\Viewport;
|
||||||
use PHPNative\Renderer\Widget;
|
|
||||||
use PHPNative\Renderer\Widgets\Container\Column;
|
use PHPNative\Renderer\Widgets\Container\Column;
|
||||||
|
use PHPNative\Renderer\Widgets\Container\Row;
|
||||||
use PHPNative\Tailwind\LayoutParser;
|
use PHPNative\Tailwind\LayoutParser;
|
||||||
use PHPNative\Tailwind\Style\Background;
|
|
||||||
use PHPNative\Tailwind\Style\Basis;
|
|
||||||
use PHPNative\Tailwind\Style\DirectionEnum;
|
use PHPNative\Tailwind\Style\DirectionEnum;
|
||||||
use PHPNative\Tailwind\Style\Flex;
|
use PHPNative\Tailwind\Style\Flex;
|
||||||
use PHPNative\Tailwind\Style\FlexTypeEnum;
|
|
||||||
use PHPNative\Tailwind\Style\Height;
|
|
||||||
use PHPNative\Tailwind\Style\Margin;
|
use PHPNative\Tailwind\Style\Margin;
|
||||||
use PHPNative\Tailwind\Style\Overflow;
|
use PHPNative\Tailwind\Style\Overflow;
|
||||||
use PHPNative\Tailwind\Style\OverflowEnum;
|
use PHPNative\Tailwind\Style\OverflowEnum;
|
||||||
use PHPNative\Tailwind\Style\Padding;
|
use PHPNative\Tailwind\Style\Padding;
|
||||||
use PHPNative\Tailwind\Style\StateEnum;
|
use PHPNative\Tailwind\Style\StateEnum;
|
||||||
use PHPNative\Tailwind\Style\Unit;
|
|
||||||
use PHPNative\Tailwind\Style\Width;
|
|
||||||
use PHPNative\Tailwind\StyleParser;
|
|
||||||
|
|
||||||
class Container
|
class Container
|
||||||
{
|
{
|
||||||
@ -32,6 +24,7 @@ class Container
|
|||||||
{
|
{
|
||||||
|
|
||||||
$styles = $stylesCache->getStyle($view->getId(), $viewport->windowMediaQuery, $view->state, $view->style);
|
$styles = $stylesCache->getStyle($view->getId(), $viewport->windowMediaQuery, $view->state, $view->style);
|
||||||
|
$myViewport = clone $viewport;
|
||||||
|
|
||||||
if(isset($styles[Margin::class]) && $m = $styles[Margin::class]) {
|
if(isset($styles[Margin::class]) && $m = $styles[Margin::class]) {
|
||||||
$viewport->x += $m->left;
|
$viewport->x += $m->left;
|
||||||
@ -40,7 +33,6 @@ class Container
|
|||||||
$viewport->height -= ($m->bottom + $m->top);
|
$viewport->height -= ($m->bottom + $m->top);
|
||||||
}
|
}
|
||||||
|
|
||||||
$targetViewport = clone $viewport;
|
|
||||||
|
|
||||||
\PHPNative\Renderer\Visuals\Visuals::render($view->getId(), $thread, $styles, $viewport, $index);
|
\PHPNative\Renderer\Visuals\Visuals::render($view->getId(), $thread, $styles, $viewport, $index);
|
||||||
\PHPNative\Renderer\Visuals\Visuals::changeViewport($view->getId(), $thread, $styles, $viewport);
|
\PHPNative\Renderer\Visuals\Visuals::changeViewport($view->getId(), $thread, $styles, $viewport);
|
||||||
@ -52,14 +44,83 @@ class Container
|
|||||||
$viewport->height -= ($m->bottom + $m->top);
|
$viewport->height -= ($m->bottom + $m->top);
|
||||||
}
|
}
|
||||||
|
|
||||||
$view = LayoutParser::sortByStyles($stylesCache, $view, $viewport);
|
if($thread->getEvent() && $thread->getEvent()->getType() === EventType::MOUSEMOVE) {
|
||||||
|
if( $viewport->x <= $thread->getEvent()->x &&
|
||||||
|
$thread->getEvent()->x <= $viewport->x + $viewport->width &&
|
||||||
|
$viewport->y <= $thread->getEvent()->y &&
|
||||||
|
$thread->getEvent()->y <= $viewport->y + $viewport->height ) {
|
||||||
|
$view->state = StateEnum::hover;
|
||||||
|
}else{
|
||||||
|
$view->state = StateEnum::normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($view instanceof \PHPNative\UI\Widget\Button && $thread->getEvent() && $thread->getEvent()->getType() === EventType::MOUSEBUTTON_UP) {
|
||||||
|
if( $viewport->x <= $thread->getEvent()->x &&
|
||||||
|
$thread->getEvent()->x <= $viewport->x + $viewport->width &&
|
||||||
|
$viewport->y <= $thread->getEvent()->y && $thread->getEvent()->y <=
|
||||||
|
$viewport->y + $viewport->height ) {
|
||||||
|
$view->onClick($thread->worker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($view->getViews() != null) {
|
if($view->getViews() != null) {
|
||||||
|
$view = LayoutParser::sortByStyles($stylesCache, $view, $viewport);
|
||||||
if (isset($styles[Flex::class]) && $styles[Flex::class]->direction == DirectionEnum::column) {
|
if (isset($styles[Flex::class]) && $styles[Flex::class]->direction == DirectionEnum::column) {
|
||||||
//Debug::resolve()->log(['Styles' => $styles]);
|
$resultViewPort = Column::render($stylesCache, $thread, clone $viewport, $view, $index);
|
||||||
Column::render($stylesCache, $thread, $viewport, $view->getViews(), $index);
|
|
||||||
|
if (isset($styles[Overflow::class]) && $f = $styles[Overflow::class] && (
|
||||||
|
$styles[Overflow::class]->y == OverflowEnum::scroll ||
|
||||||
|
($styles[Overflow::class]->y == OverflowEnum::auto && $viewport->height < $resultViewPort->height)
|
||||||
|
)) {
|
||||||
|
|
||||||
|
\PHPNative\Renderer\Visuals\Scrollbar::renderBackground($view->getId(), $thread, $styles, $viewport);
|
||||||
|
|
||||||
|
$sliderViewport = clone $viewport;
|
||||||
|
$sliderViewport->width = 10;
|
||||||
|
$sliderViewport->x = $viewport->x + $viewport->width - 10;
|
||||||
|
$ohP = ($viewport->height / 100);
|
||||||
|
$ratio = ($resultViewPort->height / ($viewport->height+$resultViewPort->height));
|
||||||
|
$sliderViewport->y = $viewport->y + (int)($view->getMoveToY()*$ratio);
|
||||||
|
$sliderViewport->height = (int)($ratio*100 * $ohP);
|
||||||
|
|
||||||
|
\PHPNative\Renderer\Visuals\Scrollbar::renderSlider($view->getId(), $thread, $styles, $sliderViewport);
|
||||||
|
|
||||||
|
if ($thread->getEvent() && $thread->getEvent()->getType() === EventType::MOUSEBUTTON_DOWN) {
|
||||||
|
if ($sliderViewport->x <= $thread->getEvent()->x &&
|
||||||
|
$thread->getEvent()->x <= $sliderViewport->x + $sliderViewport->width &&
|
||||||
|
$sliderViewport->y <= $thread->getEvent()->y &&
|
||||||
|
$thread->getEvent()->y <= $sliderViewport->y + $sliderViewport->height) {
|
||||||
|
$view->setDragMode(true);
|
||||||
|
//$view->setMoveStartX($thread->getEvent()->x);
|
||||||
|
$view->setMoveStartY($thread->getEvent()->y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($view->isDragMode() && $thread->getEvent() && $thread->getEvent()->getType() === EventType::MOUSEMOVE) {
|
||||||
|
//$view->setMoveToX($view->getMoveEndX() + $thread->getEvent()->x - $view->getMoveStartX());
|
||||||
|
$view->setMoveToY($view->getMoveEndY() + $thread->getEvent()->y - $view->getMoveStartY());
|
||||||
|
|
||||||
|
if($view->getMoveToY() <= 0) {
|
||||||
|
$view->setMoveStartY($thread->getEvent()->y);
|
||||||
|
// $view->setMoveToX($view->getMoveEndX() + $thread->getEvent()->x - $view->getMoveStartX());
|
||||||
|
$view->setMoveToY($view->getMoveEndY() + $thread->getEvent()->y - $view->getMoveStartY());
|
||||||
|
|
||||||
|
}
|
||||||
|
if($view->getMoveToY() + ($sliderViewport->height*$ratio) > ($viewport->height)) {
|
||||||
|
//$view->setMoveToX($view->getMoveEndX() + $thread->getEvent()->x - $view->getMoveStartX());
|
||||||
|
$view->setMoveToY($viewport->height - (int)($sliderViewport->height*$ratio) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($thread->getEvent() && $thread->getEvent()->getType() === EventType::MOUSEBUTTON_UP) {
|
||||||
|
$view->setDragMode(false);
|
||||||
|
//$view->setMoveEndX($view->getMoveToX());
|
||||||
|
$view->setMoveEndY($view->getMoveToY());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($styles[Flex::class]) && $styles[Flex::class]->direction == DirectionEnum::row) {
|
if (isset($styles[Flex::class]) && $styles[Flex::class]->direction == DirectionEnum::row) {
|
||||||
|
$resultViewPort = Row::render($stylesCache, $thread, clone $viewport, $view, $index);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -220,15 +281,11 @@ class Container
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($styles[Overflow::class]) && $f = $styles[Overflow::class] && (
|
if($view->getViews() != null) {
|
||||||
$styles[Overflow::class]->y == OverflowEnum::scroll ||
|
|
||||||
($styles[Overflow::class]->y == OverflowEnum::auto && $viewport->height < 0)
|
|
||||||
)) {
|
|
||||||
|
|
||||||
\PHPNative\Renderer\Visuals\Scrollbar::renderBackground($view->getId(), $thread, $styles, $targetViewport, $index);
|
/*
|
||||||
|
* if ($thread->getEvent() && $thread->getEvent()->getType() === EventType::MOUSEBUTTON_DOWN) {
|
||||||
if ($thread->getEvent() && $thread->getEvent()->getType() === EventType::MOUSEBUTTON_DOWN) {
|
if ($viewport->x + $targetViewport->width - 10 <= $thread->getEvent()->x &&
|
||||||
if ($targetViewport->x + $targetViewport->width - 10 <= $thread->getEvent()->x &&
|
|
||||||
$thread->getEvent()->x <= $targetViewport->x + $targetViewport->width &&
|
$thread->getEvent()->x <= $targetViewport->x + $targetViewport->width &&
|
||||||
$targetViewport->y <= $thread->getEvent()->y &&
|
$targetViewport->y <= $thread->getEvent()->y &&
|
||||||
$thread->getEvent()->y <= $targetViewport->y + $targetViewport->height) {
|
$thread->getEvent()->y <= $targetViewport->y + $targetViewport->height) {
|
||||||
@ -268,9 +325,9 @@ class Container
|
|||||||
|
|
||||||
\PHPNative\Renderer\Visuals\Scrollbar::renderSlider($view->getId(), $thread, $styles, $sliderViewport, $index);
|
\PHPNative\Renderer\Visuals\Scrollbar::renderSlider($view->getId(), $thread, $styles, $sliderViewport, $index);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
*/
|
|
||||||
|
|
||||||
return $viewport;
|
|
||||||
|
return $myViewport;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,20 +2,71 @@
|
|||||||
|
|
||||||
namespace PHPNative\Renderer\Widgets\Container;
|
namespace PHPNative\Renderer\Widgets\Container;
|
||||||
|
|
||||||
|
use PHPNative\Debug\Debug;
|
||||||
|
use PHPNative\Event\EventType;
|
||||||
use PHPNative\Renderer\Cache\Styles;
|
use PHPNative\Renderer\Cache\Styles;
|
||||||
use PHPNative\Renderer\Thread;
|
use PHPNative\Renderer\Thread;
|
||||||
use PHPNative\Renderer\Viewport;
|
use PHPNative\Renderer\Viewport;
|
||||||
use PHPNative\UI\Collection\Views;
|
use PHPNative\Renderer\Widget;
|
||||||
|
use PHPNative\Tailwind\LayoutParser;
|
||||||
|
use PHPNative\Tailwind\Style\Flex;
|
||||||
|
use PHPNative\Tailwind\Style\FlexTypeEnum;
|
||||||
|
use PHPNative\Tailwind\Style\Height;
|
||||||
|
use PHPNative\Tailwind\Style\Overflow;
|
||||||
|
use PHPNative\Tailwind\Style\OverflowEnum;
|
||||||
|
use PHPNative\Tailwind\Style\Unit;
|
||||||
|
use PHPNative\UI\View;
|
||||||
|
|
||||||
class Column
|
class Column
|
||||||
{
|
{
|
||||||
|
|
||||||
public static function render(Styles $stylesCache, Thread $thread, Viewport $viewport, Views $views, int $index = 0): Viewport
|
public static function render(Styles $stylesCache, Thread $thread, Viewport $viewport, View $view, int $index = 0): Viewport
|
||||||
{
|
{
|
||||||
foreach($views as $view) {
|
$styles = $stylesCache->getStyle($view->getId(), $viewport->windowMediaQuery, $view->state, $view->style);
|
||||||
|
$flexStyles = [];
|
||||||
|
$viewportHeight = $viewport->height;
|
||||||
|
foreach($view->getViews() as $subView) {
|
||||||
|
$found = false;
|
||||||
|
$stylesSubView = $stylesCache->getStyle($subView->getId(), $viewport->windowMediaQuery, $subView->state, $subView->style);
|
||||||
|
if (isset($stylesSubView[Height::class]) && $h = $stylesSubView[Height::class]) {
|
||||||
|
if ($h->unit == Unit::Percent) {
|
||||||
|
$height = round($viewportHeight / 100 * $h->value);
|
||||||
|
} else {
|
||||||
|
$height = $h->value;
|
||||||
|
$viewportHeight -= $h->value;
|
||||||
|
}
|
||||||
|
$found = true;
|
||||||
|
}
|
||||||
|
if (isset($stylesSubView[Flex::class]) && $stylesSubView[Flex::class]->type == FlexTypeEnum::one
|
||||||
|
) {
|
||||||
|
$height = round($viewportHeight / $view->getViews()->countOne);
|
||||||
|
$found = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($found) {
|
||||||
|
$vp = new Viewport($viewport->windowId, $viewport->windowPtr, $viewport->renderPtr, $viewport->x, $viewport->y, $viewport->width, $height, $viewport->windowWidth, $viewport->windowHeight, $viewport->windowMediaQuery);
|
||||||
|
$flexStyles[$subView->getRenderSort()] = $vp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LayoutParser::sortByRenderSort($view);
|
||||||
|
$viewportY = 0;
|
||||||
|
$viewportHeight = $viewport->height;
|
||||||
|
foreach($view->getViews() as $subView) {
|
||||||
|
if(isset($flexStyles[$subView->getRenderSort()])) {
|
||||||
|
$subViewPort = $flexStyles[$subView->getRenderSort()];
|
||||||
|
$subViewPort->y += $viewportY+($view->getMoveToY()*-1);
|
||||||
|
}else{
|
||||||
|
$subViewPort = clone $viewport;
|
||||||
|
$subViewPort->y += $viewportY+($view->getMoveToY()*-1);
|
||||||
|
$subViewPort->height = $viewportHeight;
|
||||||
|
}
|
||||||
|
echo sprintf("%s %d %d", $subView->getId(), $subViewPort->y, $subViewPort->height).PHP_EOL;
|
||||||
|
$vp = Widget::render($stylesCache, $thread, clone $subViewPort, $subView, $index+1);
|
||||||
|
$viewportY += $vp->height;
|
||||||
|
$viewportHeight -= $vp->height;
|
||||||
|
}
|
||||||
|
echo sprintf("%s %d", $view->getId(), $viewportY).PHP_EOL;
|
||||||
|
$viewport->height = $viewportY;
|
||||||
return $viewport;
|
return $viewport;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,7 +2,59 @@
|
|||||||
|
|
||||||
namespace PHPNative\Renderer\Widgets\Container;
|
namespace PHPNative\Renderer\Widgets\Container;
|
||||||
|
|
||||||
|
use PHPNative\Debug\Debug;
|
||||||
|
use PHPNative\Renderer\Cache\Styles;
|
||||||
|
use PHPNative\Renderer\Thread;
|
||||||
|
use PHPNative\Renderer\Viewport;
|
||||||
|
use PHPNative\Renderer\Widget;
|
||||||
|
use PHPNative\Tailwind\LayoutParser;
|
||||||
|
use PHPNative\Tailwind\Style\Flex;
|
||||||
|
use PHPNative\Tailwind\Style\FlexTypeEnum;
|
||||||
|
use PHPNative\Tailwind\Style\Height;
|
||||||
|
use PHPNative\Tailwind\Style\Unit;
|
||||||
|
use PHPNative\Tailwind\Style\Width;
|
||||||
|
use PHPNative\UI\View;
|
||||||
|
|
||||||
class Row
|
class Row
|
||||||
{
|
{
|
||||||
|
public static function render(Styles $stylesCache, Thread $thread, Viewport $viewport, View $view, int $index = 0): Viewport
|
||||||
|
{
|
||||||
|
$flexStyles = [];
|
||||||
|
$viewportWidth = $viewport->width;
|
||||||
|
foreach($view->getViews() as $subView) {
|
||||||
|
$found = false;
|
||||||
|
$stylesSubView = $stylesCache->getStyle($subView->getId(), $viewport->windowMediaQuery, $subView->state, $subView->style);
|
||||||
|
if (isset($stylesSubView[Width::class]) && $h = $stylesSubView[Width::class]) {
|
||||||
|
if ($h->unit == Unit::Percent) {
|
||||||
|
$width = round($viewportWidth / 100 * $h->value);
|
||||||
|
} else {
|
||||||
|
$width = $h->value;
|
||||||
|
$viewportWidth -= $h->value;
|
||||||
|
}
|
||||||
|
$found = true;
|
||||||
|
}
|
||||||
|
if (isset($stylesSubView[Flex::class]) && $stylesSubView[Flex::class]->type == FlexTypeEnum::one
|
||||||
|
) {
|
||||||
|
$width = round($viewportWidth / $view->getViews()->countOne);
|
||||||
|
$found = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($found) {
|
||||||
|
$vp = new Viewport($viewport->windowId, $viewport->windowPtr, $viewport->renderPtr, $viewport->x, $viewport->y, $width, $viewport->height, $viewport->windowWidth, $viewport->windowHeight, $viewport->windowMediaQuery);
|
||||||
|
$flexStyles[$subView->getRenderSort()] = $vp;
|
||||||
|
} else {
|
||||||
|
$flexStyles[$subView->getRenderSort()] = clone $viewport;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LayoutParser::sortByRenderSort($view);
|
||||||
|
$viewportX = 0;
|
||||||
|
foreach($view->getViews() as $subView) {
|
||||||
|
$subViewPort = $flexStyles[$subView->getRenderSort()];
|
||||||
|
$subViewPort->x += $viewportX;
|
||||||
|
$vp = Widget::render($stylesCache, $thread, clone $subViewPort, $subView, $index+1);
|
||||||
|
$viewportX += $vp->width;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $viewport;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user