+/*
+ * Copyright (c) 2017 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
#include <dali-toolkit/dali-toolkit.h>
-#include <dali/public-api/object/property-map.h>
-#include <dali-toolkit/public-api/controls/slider/slider.h>
+#include <dali-toolkit/devel-api/controls/buttons/button-devel.h>
using namespace Dali;
using namespace Dali::Toolkit;
{
DEMO_IMAGE_DIR "sphere-button.png",
DEMO_IMAGE_DIR "cone-button.png",
- DEMO_IMAGE_DIR "conical-frustrum-button.png",
+ DEMO_IMAGE_DIR "conical-frustum-button.png",
DEMO_IMAGE_DIR "cylinder-button.png",
DEMO_IMAGE_DIR "cube-button.png",
DEMO_IMAGE_DIR "bevelled-cube-button.png",
DEMO_IMAGE_DIR "octahedron-button.png"
};
- //Shape names
- const char * const SHAPE_SPHERE = "SPHERE";
- const char * const SHAPE_CONE = "CONE";
- const char * const SHAPE_CONICAL_FRUSTRUM = "CONICAL_FRUSTRUM";
- const char * const SHAPE_CYLINDER = "CYLINDER";
- const char * const SHAPE_CUBE = "CUBE";
- const char * const SHAPE_BEVELLED_CUBE = "BEVELLED_CUBE";
- const char * const SHAPE_OCTAHEDRON = "OCTAHEDRON";
+ //Prefix of all shape titles.
+ const std::string SHAPE_TITLE_PREFIX = "Current Shape: ";
//Shape property defaults
const int DEFAULT_SLICES = 32;
Stage stage = Stage::GetCurrent();
stage.SetBackgroundColor( Color::WHITE );
+ // Hide the indicator bar
+ application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );
+
//Set up layer to place UI on.
Layer layer = Layer::New();
layer.SetParentOrigin( ParentOrigin::CENTER );
layer.SetAnchorPoint( AnchorPoint::CENTER );
layer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
- layer.SetBehavior( Layer::LAYER_2D ); //We use a 2D layer as this is closer to UI work than full 3D scene creation.
+ layer.SetBehavior( Layer::LAYER_UI ); //We use a 2D layer as this is closer to UI work than full 3D scene creation.
layer.SetDepthTestDisabled( false ); //Enable depth testing, as otherwise the 2D layer would not do so.
stage.Add( layer );
}
//Place buttons on the top of the screen, which allow for selection of the shape to be displayed.
+ //A title above indicates the currently selected shape.
//The buttons are laid out like so:
//
// ^ +--------------------------------+
+ // | | Current Shape: ~~~~~ |
// | | |
// | | +----+ +----+ +----+ +----+ |
// | | | | | | | | | | |
// | |
// | |
// | |
- // | |
// +--------------------------------+
//
void SetupButtons( Layer layer )
{
float containerPadding = 10.0f;
- float buttonPadding = 5.0f;
+ float elementPadding = 5.0f;
+
+ //Used to layout the title and the buttons below it.
+ Control topAlignment = Control::New();
+ topAlignment.SetParentOrigin( ParentOrigin::TOP_CENTER );
+ topAlignment.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+ topAlignment.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+ topAlignment.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
+ layer.Add( topAlignment );
+
+ //Add a title to indicate the currently selected shape.
+ mShapeTitle = TextLabel::New( "DEFAULT" );
+ mShapeTitle.SetParentOrigin( ParentOrigin::CENTER );
+ mShapeTitle.SetAnchorPoint( AnchorPoint::CENTER );
+ mShapeTitle.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+ mShapeTitle.SetPadding( Padding( elementPadding, elementPadding, elementPadding, elementPadding ) );
+ topAlignment.Add( mShapeTitle );
//Create a variable-length container that can wrap buttons around as more are added.
FlexContainer buttonContainer = FlexContainer::New();
- buttonContainer.SetParentOrigin( ParentOrigin::TOP_CENTER );
+ buttonContainer.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
buttonContainer.SetAnchorPoint( AnchorPoint::TOP_CENTER );
buttonContainer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
- buttonContainer.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::HEIGHT );
- buttonContainer.SetSizeModeFactor( Vector3( 0.0, 0.3, 0.0 ) ); //30% of height.
+ buttonContainer.SetResizePolicy( ResizePolicy::FIXED, Dimension::HEIGHT );
buttonContainer.SetPadding( Padding( containerPadding, containerPadding, containerPadding, containerPadding ) );
buttonContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW );
buttonContainer.SetProperty( FlexContainer::Property::FLEX_WRAP, FlexContainer::WRAP );
-
- layer.Add( buttonContainer );
+ topAlignment.Add( buttonContainer );
//Create buttons and place them in the container.
for( int modelNumber = 0; modelNumber < NUM_MODELS; modelNumber++ )
button.SetParentOrigin( ParentOrigin::CENTER );
button.SetAnchorPoint( AnchorPoint::CENTER );
button.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
- button.SetPadding( Padding( buttonPadding, buttonPadding, buttonPadding, buttonPadding ) );
- button.SetProperty( Button::Property::UNSELECTED_STATE_IMAGE, Property::Value( BUTTON_IMAGE_URL[modelNumber] ) );
- button.SetProperty( Button::Property::SELECTED_STATE_IMAGE, Property::Value( BUTTON_IMAGE_URL[modelNumber] ) );
+ button.SetPadding( Padding( elementPadding, elementPadding, elementPadding, elementPadding ) );
+ button.SetProperty( DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, BUTTON_IMAGE_URL[modelNumber] );
+ button.SetProperty( DevelButton::Property::SELECTED_BACKGROUND_VISUAL, BUTTON_IMAGE_URL[modelNumber] );
button.RegisterProperty( "modelNumber", Property::Value( modelNumber ) );
button.ClickedSignal().Connect( this, &PrimitiveShapesController::OnChangeShapeClicked );
//
void SetupModel( Layer layer )
{
- //Create a container to house the renderer-holding actor, to provide a constant hitbox.
+ //Create a container to house the visual-holding actor, to provide a constant hitbox.
Actor container = Actor::New();
container.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
container.SetSizeModeFactor( Vector3( 0.9, 0.3, 0.0 ) ); //90% of width, 30% of height.
mPanGestureDetector.DetectedSignal().Connect( this, &PrimitiveShapesController::OnPan );
}
- //Clears all sliders and resets the primitive renderer property map.
+ //Clears all sliders and resets the primitive visual property map.
void InitialiseSlidersAndModel()
{
//Sliders
mSliderLabels.at( i ).SetVisible( false );
}
- //Renderer map for model
- mRendererMap.Clear();
- mRendererMap[ "rendererType" ] = "PRIMITIVE";
- mRendererMap[ "color" ] = mColor;
+ //Visual map for model
+ mVisualMap.Clear();
+ mVisualMap[ Toolkit::Visual::Property::TYPE ] = Visual::PRIMITIVE;
+ mVisualMap[ PrimitiveVisual::Property::MIX_COLOR ] = mColor;
+ mVisualMap[ Visual::Property::TRANSFORM ] =
+ Property::Map().Add( Visual::Transform::Property::ORIGIN, Align::CENTER )
+ .Add( Visual::Transform::Property::ANCHOR_POINT, Align::CENTER );
}
//Sets the 3D model to a sphere and modifies the sliders appropriately.
{
InitialiseSlidersAndModel();
- //Set up specific renderer properties.
- mRendererMap[ "shape" ] = SHAPE_SPHERE;
- mRendererMap[ "slices" ] = DEFAULT_SLICES;
- mRendererMap[ "stacks" ] = DEFAULT_STACKS;
+ //Set up specific visual properties.
+ mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
+ mVisualMap[ PrimitiveVisual::Property::SLICES ] = DEFAULT_SLICES;
+ mVisualMap[ PrimitiveVisual::Property::STACKS ] = DEFAULT_STACKS;
//Set up sliders.
- SetupSlider( 0, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, "slices" );
- SetupMarks( mSliders.at( 0 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
- SetupSlider( 1, STACKS_LOWER_BOUND, STACKS_UPPER_BOUND, DEFAULT_STACKS, "stacks" );
- SetupMarks( mSliders.at( 1 ), STACKS_LOWER_BOUND, STACKS_UPPER_BOUND );
+ SetupSlider( 0, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::SLICES, "slices" );
+ SetupMarks( 0, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+ mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
+
+ SetupSlider( 1, STACKS_LOWER_BOUND, STACKS_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::STACKS, "stacks" );
+ SetupMarks( 1, STACKS_LOWER_BOUND, STACKS_UPPER_BOUND );
+ mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
//Set model in control.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+ //Update title.
+ mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Sphere" );
}
//Sets the 3D model to a cone and modifies the sliders appropriately.
{
InitialiseSlidersAndModel();
- //Set up specific renderer properties.
- mRendererMap[ "shape" ] = SHAPE_CONE;
- mRendererMap[ "scaleHeight" ] = DEFAULT_SCALE_HEIGHT;
- mRendererMap[ "scaleBottomRadius" ] = DEFAULT_SCALE_BOTTOM_RADIUS;
- mRendererMap[ "slices" ] = DEFAULT_SLICES;
+ //Set up specific visual properties.
+ mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::CONE;
+ mVisualMap[ PrimitiveVisual::Property::SCALE_HEIGHT ] = DEFAULT_SCALE_HEIGHT;
+ mVisualMap[ PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS ] = DEFAULT_SCALE_BOTTOM_RADIUS;
+ mVisualMap[ PrimitiveVisual::Property::SLICES ] = DEFAULT_SLICES;
//Set up sliders.
- SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, "scaleHeight" );
- SetupSlider( 1, 1.0f, 32.0f, DEFAULT_SCALE_BOTTOM_RADIUS, "scaleBottomRadius" );
- SetupSlider( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, "slices" );
- SetupMarks( mSliders.at( 2 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+ SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, PrimitiveVisual::Property::SCALE_HEIGHT, "scaleHeight" );
+ mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
+ SetupSlider( 1, 1.0f, 32.0f, DEFAULT_SCALE_BOTTOM_RADIUS, PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, "scaleBottomRadius" );
+ mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
+ SetupSlider( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::SLICES, "slices" );
+ SetupMarks( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+ mSliders.at( 2 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
//Set model in control.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+ //Update title.
+ mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Cone" );
}
- //Sets the 3D model to a conical frustrum and modifies the sliders appropriately.
- void LoadConicalFrustrum()
+ //Sets the 3D model to a conical frustum and modifies the sliders appropriately.
+ void LoadConicalFrustum()
{
InitialiseSlidersAndModel();
- //Set up specific renderer properties.
- mRendererMap[ "shape" ] = SHAPE_CONICAL_FRUSTRUM;
- mRendererMap[ "scaleTopRadius" ] = DEFAULT_SCALE_TOP_RADIUS;
- mRendererMap[ "scaleBottomRadius" ] = DEFAULT_SCALE_BOTTOM_RADIUS;
- mRendererMap[ "scaleHeight" ] = DEFAULT_SCALE_HEIGHT;
- mRendererMap[ "slices" ] = DEFAULT_SLICES;
+ //Set up specific visual properties.
+ mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::CONICAL_FRUSTUM;
+ mVisualMap[ PrimitiveVisual::Property::SCALE_TOP_RADIUS ] = DEFAULT_SCALE_TOP_RADIUS;
+ mVisualMap[ PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS ] = DEFAULT_SCALE_BOTTOM_RADIUS;
+ mVisualMap[ PrimitiveVisual::Property::SCALE_HEIGHT ] = DEFAULT_SCALE_HEIGHT;
+ mVisualMap[ PrimitiveVisual::Property::SLICES ] = DEFAULT_SLICES;
//Set up used sliders.
- SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, "scaleHeight" );
- SetupSlider( 1, 0.0f, 32.0f, DEFAULT_SCALE_BOTTOM_RADIUS, "scaleBottomRadius" );
- SetupSlider( 2, 0.0f, 32.0f, DEFAULT_SCALE_TOP_RADIUS, "scaleTopRadius" );
+ SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, PrimitiveVisual::Property::SCALE_HEIGHT, "scaleHeight" );
+ mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
+ SetupSlider( 1, 0.0f, 32.0f, DEFAULT_SCALE_BOTTOM_RADIUS, PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, "scaleBottomRadius" );
+ mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
+ SetupSlider( 2, 0.0f, 32.0f, DEFAULT_SCALE_TOP_RADIUS, PrimitiveVisual::Property::SCALE_TOP_RADIUS, "scaleTopRadius" );
+ mSliders.at( 2 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
//Set model in control.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+ //Update title.
+ mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Conical Frustum" );
}
//Sets the 3D model to a cylinder and modifies the sliders appropriately.
{
InitialiseSlidersAndModel();
- //Set up specific renderer properties.
- mRendererMap[ "shape" ] = SHAPE_CYLINDER;
- mRendererMap[ "scaleHeight" ] = DEFAULT_SCALE_HEIGHT;
- mRendererMap[ "scaleRadius" ] = DEFAULT_SCALE_RADIUS;
- mRendererMap[ "slices" ] = DEFAULT_SLICES;
+ //Set up specific visual properties.
+ mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::CYLINDER;
+ mVisualMap[ PrimitiveVisual::Property::SCALE_HEIGHT ] = DEFAULT_SCALE_HEIGHT;
+ mVisualMap[ PrimitiveVisual::Property::SCALE_RADIUS ] = DEFAULT_SCALE_RADIUS;
+ mVisualMap[ PrimitiveVisual::Property::SLICES ] = DEFAULT_SLICES;
//Set up used sliders.
- SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, "scaleHeight" );
- SetupSlider( 1, 1.0f, 32.0f, DEFAULT_SCALE_RADIUS, "scaleRadius" );
- SetupSlider( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, "slices" );
- SetupMarks( mSliders.at( 2 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+ SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, PrimitiveVisual::Property::SCALE_HEIGHT, "scaleHeight" );
+ mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
+ SetupSlider( 1, 1.0f, 32.0f, DEFAULT_SCALE_RADIUS, PrimitiveVisual::Property::SCALE_RADIUS, "scaleRadius" );
+ mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
+ SetupSlider( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::SLICES, "slices" );
+ SetupMarks( 2 , SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+ mSliders.at( 2 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
//Set model in control.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+ //Update title.
+ mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Cylinder" );
}
//Sets the 3D model to a cube and modifies the sliders appropriately.
{
InitialiseSlidersAndModel();
- //Set up specific renderer properties.
- mRendererMap[ "shape" ] = SHAPE_CUBE;
+ //Set up specific visual properties.
+ mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::CUBE;
//Set model in control.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+ //Update title.
+ mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Cube" );
}
//Sets the 3D model to a bevelled cube and modifies the sliders appropriately.
{
InitialiseSlidersAndModel();
- //Set up specific renderer properties.
- mRendererMap[ "shape" ] = SHAPE_BEVELLED_CUBE;
- mRendererMap[ "bevelPercentage" ] = DEFAULT_BEVEL_PERCENTAGE;
- mRendererMap[ "bevelSmoothness" ] = DEFAULT_BEVEL_SMOOTHNESS;
+ //Set up specific visual properties.
+ mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::BEVELLED_CUBE;
+ mVisualMap[ PrimitiveVisual::Property::BEVEL_PERCENTAGE ] = DEFAULT_BEVEL_PERCENTAGE;
+ mVisualMap[ PrimitiveVisual::Property::BEVEL_SMOOTHNESS ] = DEFAULT_BEVEL_SMOOTHNESS;
//Set up used sliders.
- SetupSlider( 0, 0.0f, 1.0f, DEFAULT_BEVEL_PERCENTAGE, "bevelPercentage" );
- SetupSlider( 1, 0.0f, 1.0f, DEFAULT_BEVEL_SMOOTHNESS, "bevelSmoothness" );
+ SetupSlider( 0, 0.0f, 1.0f, DEFAULT_BEVEL_PERCENTAGE, PrimitiveVisual::Property::BEVEL_PERCENTAGE, "bevelPercentage" );
+ mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 2 ) );
+
+ SetupSlider( 1, 0.0f, 1.0f, DEFAULT_BEVEL_SMOOTHNESS, PrimitiveVisual::Property::BEVEL_SMOOTHNESS, "bevelSmoothness" );
+ mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 2 ) );
//Set model in control.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+ //Update title.
+ mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Bevelled Cube" );
}
//Sets the 3D model to an octahedron and modifies the sliders appropriately.
{
InitialiseSlidersAndModel();
- //Set up specific renderer properties.
- mRendererMap[ "shape" ] = SHAPE_OCTAHEDRON;
+ //Set up specific visual properties.
+ mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::OCTAHEDRON;
//Set model in control.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+ //Update title.
+ mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Octahedron" );
}
//Sets up the slider at the given index for the supplied property, and labels it appropriately.
- // rendererPropertyLabel is the property that will be set by this slider.
+ // visualProperty is the property that will be set by this slider.
void SetupSlider( int sliderIndex, float lowerBound, float upperBound, float startPoint,
- std::string rendererPropertyLabel )
+ Property::Index visualProperty, std::string visualPropertyLabel )
{
//Set up the slider itself.
- mSliders.at( sliderIndex ).RegisterProperty( "rendererProperty", Property::Value( rendererPropertyLabel ), Property::READ_WRITE );
+ mSliders.at( sliderIndex ).RegisterProperty( "visualProperty", Property::Value( visualProperty ), Property::READ_WRITE );
mSliders.at( sliderIndex ).SetProperty( Slider::Property::LOWER_BOUND, Property::Value( lowerBound ) );
mSliders.at( sliderIndex ).SetProperty( Slider::Property::UPPER_BOUND, Property::Value( upperBound ) );
mSliders.at( sliderIndex ).SetProperty( Slider::Property::VALUE, Property::Value( startPoint ) );
//We reset the TextLabel to force a relayout of the table.
mSliderTable.RemoveChildAt( TableView::CellPosition(sliderIndex, 0) );
- TextLabel sliderLabel = TextLabel::New( rendererPropertyLabel );
+ TextLabel sliderLabel = TextLabel::New( visualPropertyLabel );
sliderLabel.SetParentOrigin( ParentOrigin::CENTER );
sliderLabel.SetAnchorPoint( AnchorPoint::CENTER );
sliderLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
}
//Setup snapping to integer values between the two given values.
- void SetupMarks( Slider& slider, int lower, int upper )
+ void SetupMarks( int sliderIndex, int lower, int upper )
{
Property::Array marks;
marks.PushBack( Property::Value( mark ) );
}
- slider.SetProperty( Slider::Property::MARKS, Property::Value( marks ) );
- slider.SetProperty( Slider::Property::SNAP_TO_MARKS, Property::Value( true ) );
+ mSliders.at( sliderIndex ).SetProperty( Slider::Property::MARKS, Property::Value( marks ) );
+ mSliders.at( sliderIndex ).SetProperty( Slider::Property::SNAP_TO_MARKS, Property::Value( true ) );
}
//When a shape button is tapped, switch to the corresponding shape.
}
case 2:
{
- LoadConicalFrustrum();
+ LoadConicalFrustum();
break;
}
case 3:
//When the slider is adjusted, change the corresponding shape property accordingly.
bool OnSliderValueChanged( Slider slider, float value )
{
- //Update property map to reflect the change to the specific renderer property.
- std::string rendererPropertyLabel;
- slider.GetProperty( slider.GetPropertyIndex( "rendererProperty" ) ).Get( rendererPropertyLabel );
- mRendererMap[ rendererPropertyLabel ] = value;
+ //Update property map to reflect the change to the specific visual property.
+ int visualProperty;
+ slider.GetProperty( slider.GetPropertyIndex( "visualProperty" ) ).Get( visualProperty );
+ mVisualMap[ visualProperty ] = value;
//Reload the model to display the change.
- mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mRendererMap ) );
+ mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
return true;
}
private:
Application& mApplication;
- std::vector<Slider> mSliders; ///< Holds the sliders on screen that each shape accesses.
- std::vector<TextLabel> mSliderLabels; ///< Holds the labels to each slider.
- TableView mSliderTable; ///< A table to layout the sliders next to their labels.
+ std::vector<Slider> mSliders; ///< Holds the sliders on screen that each shape accesses.
+ std::vector<TextLabel> mSliderLabels; ///< Holds the labels to each slider.
+ TableView mSliderTable; ///< A table to layout the sliders next to their labels.
- Property::Map mRendererMap; ///< Property map to create a primitive renderer.
- Control mModel; ///< Control to house the primitive renderer.
+ Property::Map mVisualMap; ///< Property map to create a primitive visual.
+ Control mModel; ///< Control to house the primitive visual.
+ TextLabel mShapeTitle; ///< Indicates what the currently selected shape is.
- PanGestureDetector mPanGestureDetector; ///< Detects pan gestures for rotation of the model.
- Animation mRotationAnimation; ///< Automatically rotates the model, unless it is being panned.
+ PanGestureDetector mPanGestureDetector; ///< Detects pan gestures for rotation of the model.
+ Animation mRotationAnimation; ///< Automatically rotates the model, unless it is being panned.
- Vector4 mColor; ///< Color to set all shapes.
- Vector2 mRotation; ///< Keeps track of model rotation.
+ Vector4 mColor; ///< Color to set all shapes.
+ Vector2 mRotation; ///< Keeps track of model rotation.
};
-void RunTest( Application& application )
+int DALI_EXPORT_API main( int argc, char **argv )
{
+ Application application = Application::New( &argc, &argv );
PrimitiveShapesController test( application );
-
application.MainLoop();
-}
-
-// Entry point for Linux & Tizen applications
-//
-int main( int argc, char **argv )
-{
- Application application = Application::New( &argc, &argv );
-
- RunTest( application );
-
return 0;
}