X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fprimitive-shapes%2Fprimitive-shapes-example.cpp;h=675e076da29a097aed28e6595e808cc97c469b73;hb=3818d79b8ecc810cca0300c83c49de0363582849;hp=9329371bc6dc16a0d81b185298854d01534e5315;hpb=fdeaf93571697344be1a2b92d43f6ff1aeaf5b59;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/primitive-shapes/primitive-shapes-example.cpp b/examples/primitive-shapes/primitive-shapes-example.cpp old mode 100644 new mode 100755 index 9329371..675e076 --- a/examples/primitive-shapes/primitive-shapes-example.cpp +++ b/examples/primitive-shapes/primitive-shapes-example.cpp @@ -1,6 +1,22 @@ +/* + * Copyright (c) 2020 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 -#include -#include +#include using namespace Dali; using namespace Dali::Toolkit; @@ -12,13 +28,16 @@ namespace { 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" }; + //Prefix of all shape titles. + const std::string SHAPE_TITLE_PREFIX = "Current Shape: "; + //Shape property defaults const int DEFAULT_SLICES = 32; const int DEFAULT_STACKS = 32; @@ -64,21 +83,18 @@ public: // The Init signal is received once (only) during the Application lifetime void Create( Application& application ) { - // Get a handle to the stage - Stage stage = Stage::GetCurrent(); - stage.SetBackgroundColor( Color::WHITE ); - - // Hide the indicator bar - application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE ); + // Get a handle to the window + Window window = application.GetWindow(); + window.SetBackgroundColor( Color::WHITE ); //Set up layer to place UI on. Layer layer = Layer::New(); - layer.SetParentOrigin( ParentOrigin::CENTER ); - layer.SetAnchorPoint( AnchorPoint::CENTER ); + layer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + layer.SetProperty( Actor::Property::ANCHOR_POINT, 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.SetDepthTestDisabled( false ); //Enable depth testing, as otherwise the 2D layer would not do so. - stage.Add( layer ); + layer.SetProperty( Layer::Property::BEHAVIOR, Layer::LAYER_UI ); //We use a 2D layer as this is closer to UI work than full 3D scene creation. + layer.SetProperty( Layer::Property::DEPTH_TEST, true ); //Enable depth testing, as otherwise the 2D layer would not do so. + window.Add( layer ); //Set up model selection buttons. SetupButtons( layer ); @@ -90,13 +106,15 @@ public: SetupModel( layer ); //Allow for exiting of the application via key presses. - stage.KeyEventSignal().Connect( this, &PrimitiveShapesController::OnKeyEvent ); + window.KeyEventSignal().Connect( this, &PrimitiveShapesController::OnKeyEvent ); } //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: ~~~~~ | // | | | // | | +----+ +----+ +----+ +----+ | // | | | | | | | | | | | @@ -123,37 +141,50 @@ public: // | | // | | // | | - // | | // +--------------------------------+ // 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.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); + topAlignment.SetProperty( Actor::Property::ANCHOR_POINT, 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.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + mShapeTitle.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); + mShapeTitle.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); + mShapeTitle.SetProperty( Actor::Property::PADDING, 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.SetAnchorPoint( AnchorPoint::TOP_CENTER ); + buttonContainer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER ); + buttonContainer.SetProperty( Actor::Property::ANCHOR_POINT, 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.SetPadding( Padding( containerPadding, containerPadding, containerPadding, containerPadding ) ); + buttonContainer.SetResizePolicy( ResizePolicy::FIXED, Dimension::HEIGHT ); + buttonContainer.SetProperty( Actor::Property::PADDING, 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++ ) { PushButton button = Toolkit::PushButton::New(); - button.SetParentOrigin( ParentOrigin::CENTER ); - button.SetAnchorPoint( AnchorPoint::CENTER ); + button.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + button.SetProperty( Actor::Property::ANCHOR_POINT, 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.SetProperty( Actor::Property::PADDING, Padding( elementPadding, elementPadding, elementPadding, elementPadding ) ); + button.SetProperty( Button::Property::UNSELECTED_BACKGROUND_VISUAL, BUTTON_IMAGE_URL[modelNumber] ); + button.SetProperty( Button::Property::SELECTED_BACKGROUND_VISUAL, BUTTON_IMAGE_URL[modelNumber] ); button.RegisterProperty( "modelNumber", Property::Value( modelNumber ) ); button.ClickedSignal().Connect( this, &PrimitiveShapesController::OnChangeShapeClicked ); @@ -199,10 +230,10 @@ public: { //Create table to hold sliders and their corresponding labels. mSliderTable = Toolkit::TableView::New( MAX_PROPERTIES, 2 ); - mSliderTable.SetParentOrigin( ParentOrigin::BOTTOM_CENTER ); - mSliderTable.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER ); + mSliderTable.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER ); + mSliderTable.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER ); mSliderTable.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS ); - mSliderTable.SetSizeModeFactor( Vector3( 0.9, 0.3, 0.0 ) ); //90% of width, 30% of height. + mSliderTable.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 0.9, 0.3, 0.0 ) ); //90% of width, 30% of height. mSliderTable.SetFitWidth( 0 ); //Label column should fit to natural size of label. mSliderTable.SetRelativeWidth( 1, 1.0f ); //Slider column should fill remaining space. mSliderTable.SetCellPadding( Vector2( 10.0f, 0.0f ) ); //Leave a gap between the slider and its label. @@ -213,8 +244,8 @@ public: { //Create slider Slider slider = Slider::New(); - slider.SetParentOrigin( ParentOrigin::CENTER ); - slider.SetAnchorPoint( AnchorPoint::CENTER ); + slider.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + slider.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); slider.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); slider.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT ); slider.ValueChangedSignal().Connect( this, &PrimitiveShapesController::OnSliderValueChanged ); @@ -226,8 +257,8 @@ public: //Create slider label TextLabel sliderLabel = TextLabel::New(); - sliderLabel.SetParentOrigin( ParentOrigin::CENTER ); - sliderLabel.SetAnchorPoint( AnchorPoint::CENTER ); + sliderLabel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + sliderLabel.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); sliderLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); mSliderLabels.push_back( sliderLabel ); @@ -237,7 +268,7 @@ public: } } - //Adds a control to the centre of the stage to display the 3D shapes. + //Adds a control to the centre of the window to display the 3D shapes. //The model is placed in the center of the screen, like so: // // +--------------------------------+ @@ -275,15 +306,15 @@ public: //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. - container.SetParentOrigin( ParentOrigin::CENTER ); - container.SetAnchorPoint( AnchorPoint::CENTER ); + container.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 0.9, 0.3, 0.0 ) ); //90% of width, 30% of height. + container.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + container.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); layer.Add( container ); //Create control to display the 3D primitive. mModel = Control::New(); - mModel.SetParentOrigin( ParentOrigin::CENTER ); - mModel.SetAnchorPoint( AnchorPoint::CENTER); + mModel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + mModel.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); mModel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); container.Add( mModel ); @@ -310,15 +341,18 @@ public: for( unsigned i = 0; i < mSliders.size(); i++ ) { mSliders.at( i ).SetProperty( Slider::Property::MARKS, Property::Value( 0 ) ); //Remove marks - mSliders.at( i ).SetVisible( false ); + mSliders.at( i ).SetProperty( Actor::Property::VISIBLE, false ); mSliderLabels.at( i ).SetProperty( TextLabel::Property::TEXT, Property::Value( "Default" ) ); - mSliderLabels.at( i ).SetVisible( false ); + mSliderLabels.at( i ).SetProperty( Actor::Property::VISIBLE, false ); } //Visual map for model mVisualMap.Clear(); - mVisualMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE; - mVisualMap[ PrimitiveVisual::Property::COLOR ] = mColor; + 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. @@ -333,12 +367,18 @@ public: //Set up sliders. SetupSlider( 0, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::SLICES, "slices" ); - SetupMarks( mSliders.at( 0 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND ); + 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( mSliders.at( 1 ), STACKS_LOWER_BOUND, STACKS_UPPER_BOUND ); + 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( mVisualMap ) ); + + //Update title. + mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Sphere" ); } //Sets the 3D model to a cone and modifies the sliders appropriately. @@ -354,21 +394,29 @@ public: //Set up sliders. 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( mSliders.at( 2 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND ); + 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( 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 visual properties. - mVisualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::CONICAL_FRUSTRUM; + 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; @@ -376,11 +424,19 @@ public: //Set up used sliders. 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( 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. @@ -396,12 +452,20 @@ public: //Set up used sliders. 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( mSliders.at( 2 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND ); + 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( mVisualMap ) ); + + //Update title. + mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Cylinder" ); } //Sets the 3D model to a cube and modifies the sliders appropriately. @@ -414,6 +478,9 @@ public: //Set model in control. 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. @@ -428,10 +495,16 @@ public: //Set up used sliders. 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( 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. @@ -444,6 +517,9 @@ public: //Set model in control. 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. @@ -456,26 +532,26 @@ public: 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 ) ); - mSliders.at( sliderIndex ).SetVisible( true ); + mSliders.at( sliderIndex ).SetProperty( Actor::Property::VISIBLE, true ); //Label the slider with the property. //We reset the TextLabel to force a relayout of the table. mSliderTable.RemoveChildAt( TableView::CellPosition(sliderIndex, 0) ); TextLabel sliderLabel = TextLabel::New( visualPropertyLabel ); - sliderLabel.SetParentOrigin( ParentOrigin::CENTER ); - sliderLabel.SetAnchorPoint( AnchorPoint::CENTER ); + sliderLabel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + sliderLabel.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); sliderLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); mSliderTable.AddChild( sliderLabel, TableView::CellPosition( sliderIndex, 0 ) ); mSliderTable.SetCellAlignment( TableView::CellPosition( sliderIndex, 0 ), HorizontalAlignment::LEFT, VerticalAlignment::CENTER ); - mSliderLabels.at( sliderIndex ).SetVisible( true ); + mSliderLabels.at( sliderIndex ).SetProperty( Actor::Property::VISIBLE, true ); mSliderLabels.at( sliderIndex) = sliderLabel; } //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; @@ -484,8 +560,8 @@ public: 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. @@ -510,7 +586,7 @@ public: } case 2: { - LoadConicalFrustrum(); + LoadConicalFrustum(); break; } case 3: @@ -555,7 +631,7 @@ public: //Panning around the shape rotates it. void OnPan( Actor actor, const PanGesture& gesture ) { - switch( gesture.state ) + switch( gesture.GetState() ) { case Gesture::Started: { @@ -567,12 +643,13 @@ public: case Gesture::Continuing: { //Rotate based off the gesture. - mRotation.x -= gesture.displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis - mRotation.y += gesture.displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis + const Vector2& displacement = gesture.GetDisplacement(); + mRotation.x -= displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis + mRotation.y += displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis Quaternion rotation = Quaternion( Radian( mRotation.x ), Vector3::XAXIS) * Quaternion( Radian( mRotation.y ), Vector3::YAXIS); - mModel.SetOrientation( rotation ); + mModel.SetProperty( Actor::Property::ORIENTATION, rotation ); break; } @@ -600,7 +677,7 @@ public: //If escape or the back button is pressed, quit the application (and return to the launcher) void OnKeyEvent( const KeyEvent& event ) { - if( event.state == KeyEvent::Down ) + if( event.GetState() == KeyEvent::DOWN ) { if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) ) { @@ -612,34 +689,25 @@ public: private: Application& mApplication; - std::vector mSliders; ///< Holds the sliders on screen that each shape accesses. - std::vector mSliderLabels; ///< Holds the labels to each slider. - TableView mSliderTable; ///< A table to layout the sliders next to their labels. + std::vector mSliders; ///< Holds the sliders on screen that each shape accesses. + std::vector mSliderLabels; ///< Holds the labels to each slider. + TableView mSliderTable; ///< A table to layout the sliders next to their labels. - Property::Map mVisualMap; ///< Property map to create a primitive visual. - Control mModel; ///< Control to house the primitive visual. + 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; }