X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fgradients%2Fgradients-example.cpp;h=85eba7cad1d4c2c24643f0bb824c9432a6dd1335;hb=1b19fd140ff139b5854a1a62447faf31b175d8f6;hp=96c485d8ebf87375f442a393b13624c9bfe5b31f;hpb=5231d448dc1154a1e0f55242e60e3a9166c97d51;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/gradients/gradients-example.cpp b/examples/gradients/gradients-example.cpp index 96c485d..85eba7c 100644 --- a/examples/gradients/gradients-example.cpp +++ b/examples/gradients/gradients-example.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * 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. @@ -16,6 +16,7 @@ */ #include +#include #include "shared/view.h" using namespace Dali; @@ -23,25 +24,30 @@ using namespace Dali::Toolkit; namespace { -const char * const APPLICATION_TITLE( "Color Gradients" ); +const char* const APPLICATION_TITLE("Color Gradients"); -const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" ); -const char * const CHANGE_ICON( DEMO_IMAGE_DIR "icon-change.png" ); -const char * const CHANGE_ICON_SELECTED( DEMO_IMAGE_DIR "icon-change-selected.png" ); -} +const char* const TOOLBAR_IMAGE(DEMO_IMAGE_DIR "top-bar.png"); +const char* const CHANGE_ICON(DEMO_IMAGE_DIR "icon-change.png"); +const char* const CHANGE_ICON_SELECTED(DEMO_IMAGE_DIR "icon-change-selected.png"); +const char* const ROUNDED_CORNER_ICON(DEMO_IMAGE_DIR "icon-replace.png"); +const char* const ROUNDED_CORNER_ICON_SELECTED(DEMO_IMAGE_DIR "icon-replace-selected.png"); + +const float CORNER_RADIUS_VALUE(20.0f); + +} // namespace // This example shows how to render color gradients // class GradientController : public ConnectionTracker { public: - - GradientController( Application& application ) - : mApplication( application ), - mIndex( 0 ) + GradientController(Application& application) + : mApplication(application), + mIndex(0), + mRoundedCorner(false) { // Connect to the Application's Init signal - mApplication.InitSignal().Connect( this, &GradientController::Create ); + mApplication.InitSignal().Connect(this, &GradientController::Create); } ~GradientController() @@ -50,102 +56,135 @@ public: } // The Init signal is received once (only) during the Application lifetime - void Create( Application& application ) + void Create(Application& application) { - // Get a handle to the stage - Stage stage = Stage::GetCurrent(); - stage.KeyEventSignal().Connect(this, &GradientController::OnKeyEvent); + // Get a handle to the window + auto window = application.GetWindow(); + window.KeyEventSignal().Connect(this, &GradientController::OnKeyEvent); // Creates a default view with a default tool bar. - // The view is added to the stage. + // The view is added to the window. Toolkit::ToolBar toolBar; - Layer content = DemoHelper::CreateView( application, - mView, - toolBar, - "", - TOOLBAR_IMAGE, - APPLICATION_TITLE ); + Layer content = DemoHelper::CreateView(application, + mView, + toolBar, + "", + TOOLBAR_IMAGE, + APPLICATION_TITLE); PushButton changeButton = Toolkit::PushButton::New(); - changeButton.SetUnselectedImage( CHANGE_ICON ); - changeButton.SetSelectedImage( CHANGE_ICON_SELECTED ); - changeButton.ClickedSignal().Connect( this, &GradientController::OnChangeIconClicked ); - toolBar.AddControl( changeButton, - DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, - Toolkit::Alignment::HorizontalRight, - DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); - -// ---- Gradient for background - - mGradientMap.Insert("rendererType", "GRADIENT"); + changeButton.SetProperty(Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, CHANGE_ICON); + changeButton.SetProperty(Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, CHANGE_ICON_SELECTED); + changeButton.ClickedSignal().Connect(this, &GradientController::OnChangeIconClicked); + toolBar.AddControl(changeButton, + DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, + Toolkit::Alignment::HORIZONTAL_RIGHT, + DemoHelper::DEFAULT_MODE_SWITCH_PADDING); + + PushButton roundedCornerButton = Toolkit::PushButton::New(); + roundedCornerButton.SetProperty(Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, ROUNDED_CORNER_ICON); + roundedCornerButton.SetProperty(Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, ROUNDED_CORNER_ICON_SELECTED); + roundedCornerButton.ClickedSignal().Connect(this, &GradientController::OnRoundedCornerClicked); + toolBar.AddControl(roundedCornerButton, + DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, + Toolkit::Alignment::HORIZONTAL_CENTER, + DemoHelper::DEFAULT_MODE_SWITCH_PADDING); + + mGradientControl = Control::New(); + mGradientControl.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + mGradientControl.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + mGradientControl.SetResizePolicy(ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS); + Vector3 offset(0.9f, 0.7f, 0.0f); + mGradientControl.SetProperty(Actor::Property::SIZE_MODE_FACTOR, offset); + content.Add(mGradientControl); + + // ---- Gradient for background + + mGradientMap.Insert(Toolkit::Visual::Property::TYPE, Visual::GRADIENT); Property::Array stopOffsets; - stopOffsets.PushBack( 0.0f ); - stopOffsets.PushBack( 0.3f ); - stopOffsets.PushBack( 0.6f ); - stopOffsets.PushBack( 0.8f ); - stopOffsets.PushBack( 1.0f ); - mGradientMap.Insert("stopOffset", stopOffsets ); + stopOffsets.PushBack(0.0f); + stopOffsets.PushBack(0.3f); + stopOffsets.PushBack(0.6f); + stopOffsets.PushBack(0.8f); + stopOffsets.PushBack(1.0f); + mGradientMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets); Property::Array stopColors; - stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f ); - stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f ); - stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f ); - stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f ); - stopColors.PushBack( Color::YELLOW ); - mGradientMap.Insert("stopColor", stopColors); - - OnChangeIconClicked( changeButton ); + stopColors.PushBack(Vector4(129.f, 198.f, 193.f, 255.f) / 255.f); + stopColors.PushBack(Vector4(196.f, 198.f, 71.f, 122.f) / 255.f); + stopColors.PushBack(Vector4(214.f, 37.f, 139.f, 191.f) / 255.f); + stopColors.PushBack(Vector4(129.f, 198.f, 193.f, 150.f) / 255.f); + stopColors.PushBack(Color::YELLOW); + mGradientMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors); + + mGradientMap.Insert(DevelVisual::Property::CORNER_RADIUS, mRoundedCorner ? CORNER_RADIUS_VALUE : 0.0f); + + UpdateGradientMap(); } - bool OnChangeIconClicked( Toolkit::Button button ) + bool OnChangeIconClicked(Toolkit::Button button) + { + mIndex++; + UpdateGradientMap(); + return true; + } + + bool OnRoundedCornerClicked(Toolkit::Button button) + { + mRoundedCorner = !mRoundedCorner; + mGradientMap[DevelVisual::Property::CORNER_RADIUS] = mRoundedCorner ? CORNER_RADIUS_VALUE : 0.0f; + + UpdateGradientMap(); + + return true; + } + + void UpdateGradientMap() { Property::Map gradientMap; - switch( mIndex%4 ) + switch(mIndex % 4) { case 0: // linear gradient with units as objectBoundingBox { - gradientMap.Insert("startPosition", Vector2( 0.5f, 0.5f )); - gradientMap.Insert("endPosition", Vector2( -0.5f, -0.5f )); + gradientMap.Insert(GradientVisual::Property::START_POSITION, Vector2(0.5f, 0.5f)); + gradientMap.Insert(GradientVisual::Property::END_POSITION, Vector2(-0.5f, -0.5f)); break; } case 1: // linear gradient with units as userSpaceOnUse { - Vector2 halfStageSize = Stage::GetCurrent().GetSize()*0.5f; - gradientMap.Insert("startPosition", halfStageSize); - gradientMap.Insert("endPosition", -halfStageSize ); - gradientMap.Insert("units", "USER_SPACE"); + Vector2 halfWindowSize = Vector2(mApplication.GetWindow().GetSize()) * 0.5f; + gradientMap.Insert(GradientVisual::Property::START_POSITION, halfWindowSize); + gradientMap.Insert(GradientVisual::Property::END_POSITION, -halfWindowSize); + gradientMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE); break; } case 2: // radial gradient with units as objectBoundingBox { - gradientMap.Insert("center", Vector2(0.5f, 0.5f)); - gradientMap.Insert("radius", 1.414f); + gradientMap.Insert(GradientVisual::Property::CENTER, Vector2(0.5f, 0.5f)); + gradientMap.Insert(GradientVisual::Property::RADIUS, 1.414f); break; } default: // radial gradient with units as userSpaceOnUse { - Vector2 stageSize = Stage::GetCurrent().GetSize(); - gradientMap.Insert("center", stageSize*0.5f); - gradientMap.Insert("radius", stageSize.Length()); - gradientMap.Insert("units", "USER_SPACE"); + Vector2 windowSize = mApplication.GetWindow().GetSize(); + gradientMap.Insert(GradientVisual::Property::CENTER, windowSize * 0.5f); + gradientMap.Insert(GradientVisual::Property::RADIUS, windowSize.Length()); + gradientMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE); break; } } - gradientMap.Merge( mGradientMap ); - mView.SetProperty( Control::Property::BACKGROUND, gradientMap ); - - mIndex++; - return true; + gradientMap.Merge(mGradientMap); + mGradientControl.SetProperty(Control::Property::BACKGROUND, gradientMap); } void OnKeyEvent(const KeyEvent& event) { - if(event.state == KeyEvent::Down) + if(event.GetState() == KeyEvent::DOWN) { - if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) ) + if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) { mApplication.Quit(); } @@ -153,27 +192,19 @@ public: } private: - Application& mApplication; + Application& mApplication; Property::Map mGradientMap; - Control mView; - unsigned mIndex; + Control mView; + Control mGradientControl; + unsigned mIndex; + bool mRoundedCorner; }; -void RunTest( Application& application ) +int DALI_EXPORT_API main(int argc, char** argv) { - GradientController test( application ); - + Application application = Application::New(&argc, &argv); + GradientController test(application); application.MainLoop(); -} - -// Entry point for Linux & Tizen applications -// -int DALI_EXPORT_API main( int argc, char **argv ) -{ - Application application = Application::New( &argc, &argv ); - - RunTest( application ); - return 0; }