/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dali-toolkit/dali-toolkit.h>
#include <dali-toolkit/devel-api/controls/table-view/table-view.h>
#include <dali/dali.h>
-#include "shared/view.h"
-#include "generated/bezier-curve-vert.h"
#include "generated/bezier-curve-frag.h"
+#include "generated/bezier-curve-vert.h"
+#include "shared/view.h"
#include <sstream>
struct HandlePositionConstraint
{
- HandlePositionConstraint(float minRelX, float maxRelX, float minRelY, float maxRelY)
- : minRelX(minRelX),
- maxRelX(maxRelX),
- minRelY(minRelY),
- maxRelY(maxRelY)
- {
- }
-
void operator()(Vector3& current, const PropertyInputContainer& inputs)
{
Vector3 size(inputs[0]->GetVector3());
current.y = Clamp(current.y, minRelY * size.y, maxRelY * size.y);
}
- float minRelX;
- float maxRelX;
- float minRelY;
- float maxRelY;
+ float minRelX{0.0f};
+ float maxRelX{0.0f};
+ float minRelY{0.0f};
+ float maxRelY{0.0f};
};
void AnimatingPositionConstraint(Vector3& current, const PropertyInputContainer& inputs)
{
Window window = mApplication.GetWindow();
window.KeyEventSignal().Connect(this, &BezierCurveExample::OnKeyEvent);
+ const Vector2 windowSize = window.GetSize();
+ const bool orientationPortrait = windowSize.width < windowSize.height;
+
+ unsigned int tableViewRows = 5;
+ unsigned int tableViewColumns = 1;
+ unsigned int rowPositionAdder = 1;
+ TableView::CellPosition gridPosition{1,0};
+
+ // Change layout if we're in landscape mode
+ if(!orientationPortrait)
+ {
+ tableViewRows = 4;
+ tableViewColumns = 2;
+ rowPositionAdder = 0;
+ gridPosition = {0,1,4,1};
+ }
CreateBackground(window);
mContentLayer.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
window.Add(mContentLayer);
- // 6 rows: title, grid, coords, play, anim1, anim2
- TableView contentLayout = TableView::New(5, 1);
+ TableView contentLayout = TableView::New(tableViewRows, tableViewColumns);
contentLayout.SetProperty(Dali::Actor::Property::NAME, "contentLayout");
contentLayout.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
contentLayout.SetCellPadding(Size(30, 30));
mGrid.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
mGrid.SetBackgroundColor(GRID_BACKGROUND_COLOR);
- contentLayout.Add(mGrid);
+ contentLayout.AddChild(mGrid, gridPosition);
contentLayout.SetCellAlignment(1, HorizontalAlignment::CENTER, VerticalAlignment::CENTER);
CreateCubic(mGrid);
CreateControlPoints(mGrid); // Control points constrained to double height of grid
contentLayout.Add(mCoefficientLabel);
SetLabel(Vector2(0, 0), Vector2(1, 1));
- contentLayout.SetCellAlignment(2, HorizontalAlignment::CENTER, VerticalAlignment::CENTER);
+ contentLayout.SetCellAlignment(1 + rowPositionAdder, HorizontalAlignment::CENTER, VerticalAlignment::CENTER);
contentLayout.SetFitHeight(2);
// Setup Play button and 2 icons to show off current anim and linear anim
play.ClickedSignal().Connect(this, &BezierCurveExample::OnPlayClicked);
contentLayout.Add(play);
- contentLayout.SetCellAlignment(3, HorizontalAlignment::CENTER, VerticalAlignment::CENTER);
- contentLayout.SetFitHeight(3);
+ contentLayout.SetCellAlignment(2 + rowPositionAdder, HorizontalAlignment::CENTER, VerticalAlignment::CENTER);
+ contentLayout.SetFitHeight(2 + rowPositionAdder);
auto animContainer = Control::New();
animContainer.SetProperty(Dali::Actor::Property::NAME, "AnimationContainer");
animContainer.Add(animRail);
contentLayout.Add(animContainer);
- contentLayout.SetFixedHeight(4, 150);
+ contentLayout.SetFixedHeight(3 + rowPositionAdder, 150);
mAnimIcon1 = ImageView::New(CIRCLE1_IMAGE);
mAnimIcon1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
positionAnimation.FinishedSignal().Connect(this, &BezierCurveExample::OnAnimationFinished);
// Set up constraints for drag/drop
- Constraint constraint = Constraint::New<Vector3>(actor, Actor::Property::POSITION, HandlePositionConstraint(-0.5, 0.5, -1, 1));
+ Constraint constraint = Constraint::New<Vector3>(actor, Actor::Property::POSITION, HandlePositionConstraint{-0.5, 0.5, -1, 1});
constraint.AddSource(Source(parent, Actor::Property::SIZE));
constraint.Apply();