X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fvisual-fitting-mode%2Fvisual-fitting-mode-example.cpp;h=f82369ae338ac92f67714710c0c733265fbcbe2d;hb=1b19fd140ff139b5854a1a62447faf31b175d8f6;hp=5f55145f810eec01b1e27697015af4a738149719;hpb=581252f4eb22606ef197e2043a43cfbd58f17a6a;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/visual-fitting-mode/visual-fitting-mode-example.cpp b/examples/visual-fitting-mode/visual-fitting-mode-example.cpp index 5f55145..f82369a 100644 --- a/examples/visual-fitting-mode/visual-fitting-mode-example.cpp +++ b/examples/visual-fitting-mode/visual-fitting-mode-example.cpp @@ -15,78 +15,70 @@ * */ -#include #include #include +#include using namespace Dali; using namespace Dali::Toolkit; namespace { -const char * const IMAGE_NAME = DEMO_IMAGE_DIR "gallery-medium-1.jpg"; ///< The image to use. -const Vector3 IMAGE_SIZE = Vector3( 300, 200, 0 ); ///< The size of the image-views. - -const float BORDER_SIZE = 2.0f; ///< The size of the border. -const Property::Value BORDER ///< The border to use for each image-view. -{ - { Visual::Property::TYPE, Visual::BORDER }, - { BorderVisual::Property::COLOR, Color::RED }, - { BorderVisual::Property::SIZE, BORDER_SIZE } -}; -const Extents LARGE_PADDING( 100.0f, 100.0f, 2.0f, 2.0f ); ///< The large padding extents. -const Extents BORDER_ONLY_PADDING( BORDER_SIZE, BORDER_SIZE, BORDER_SIZE, BORDER_SIZE ); ///< The border only padding extents. +const char* const IMAGE_NAME = DEMO_IMAGE_DIR "gallery-medium-1.jpg"; ///< The image to use. +const Vector3 IMAGE_SIZE = Vector3(300, 200, 0); ///< The size of the image-views. -const std::string INSTRUCTIONS_TEXT = "\n(Tap or Key Press To Change)"; ///< Instructions on how to change the padding mode. -const std::string LARGE_PADDING_TEXT( "Padding: Left/Right Large" + INSTRUCTIONS_TEXT ); ///< Label to shown when large padding enabled. -const std::string BORDER_ONLY_PADDING_TEXT( "Padding: Border Only" + INSTRUCTIONS_TEXT ); ///< Label to shown when border-only padding enabled. -const std::string FILL_LABEL( "FILL" ); -const std::string FIT_KEEP_ASPECT_LABEL( "FIT\nKEEP ASPECT" ); +const float BORDER_SIZE = 2.0f; ///< The size of the border. +const Property::Value BORDER ///< The border to use for each image-view. + { + {Visual::Property::TYPE, Visual::BORDER}, + {BorderVisual::Property::COLOR, Color::RED}, + {BorderVisual::Property::SIZE, BORDER_SIZE}}; +const Extents LARGE_PADDING(100.0f, 100.0f, 2.0f, 2.0f); ///< The large padding extents. +const Extents BORDER_ONLY_PADDING(BORDER_SIZE, BORDER_SIZE, BORDER_SIZE, BORDER_SIZE); ///< The border only padding extents. + +const std::string INSTRUCTIONS_TEXT = "\n(Tap or Key Press To Change)"; ///< Instructions on how to change the padding mode. +const std::string LARGE_PADDING_TEXT("Padding: Left/Right Large" + INSTRUCTIONS_TEXT); ///< Label to shown when large padding enabled. +const std::string BORDER_ONLY_PADDING_TEXT("Padding: Border Only" + INSTRUCTIONS_TEXT); ///< Label to shown when border-only padding enabled. +const std::string FILL_LABEL("FILL"); +const std::string FIT_KEEP_ASPECT_LABEL("FIT\nKEEP ASPECT"); const Property::Map TEXT_LABEL_PROPERTIES ///< All the properties of the Large Text Label shown in the example. -{ - { Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER }, - { Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER }, - { Actor::Property::WIDTH_RESIZE_POLICY, ResizePolicy::FILL_TO_PARENT }, - { Actor::Property::HEIGHT_RESIZE_POLICY, ResizePolicy::FILL_TO_PARENT }, - { Control::Property::BACKGROUND, - { - { Toolkit::Visual::Property::TYPE, Visual::GRADIENT }, - { GradientVisual::Property::STOP_COLOR, Property::Array{ Vector4( 167.0f, 207.0f, 223.0f, 255.0f ) / 255.0f, - Vector4( 0.0f, 64.0f, 137.0f, 255.0f ) / 255.0f } }, - { GradientVisual::Property::START_POSITION, Vector2( 0.0f, -0.5f ) }, - { GradientVisual::Property::END_POSITION, Vector2( 0.0f, 0.5f ) } - } - }, - { TextLabel::Property::HORIZONTAL_ALIGNMENT, HorizontalAlignment::CENTER }, - { TextLabel::Property::VERTICAL_ALIGNMENT, VerticalAlignment::CENTER }, - { TextLabel::Property::MULTI_LINE, true } -}; + { + {Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER}, + {Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER}, + {Actor::Property::WIDTH_RESIZE_POLICY, ResizePolicy::FILL_TO_PARENT}, + {Actor::Property::HEIGHT_RESIZE_POLICY, ResizePolicy::FILL_TO_PARENT}, + {Control::Property::BACKGROUND, + {{Toolkit::Visual::Property::TYPE, Visual::GRADIENT}, + {GradientVisual::Property::STOP_COLOR, Property::Array{Vector4(167.0f, 207.0f, 223.0f, 255.0f) / 255.0f, Vector4(0.0f, 64.0f, 137.0f, 255.0f) / 255.0f}}, + {GradientVisual::Property::START_POSITION, Vector2(0.0f, -0.5f)}, + {GradientVisual::Property::END_POSITION, Vector2(0.0f, 0.5f)}}}, + {TextLabel::Property::HORIZONTAL_ALIGNMENT, HorizontalAlignment::CENTER}, + {TextLabel::Property::VERTICAL_ALIGNMENT, VerticalAlignment::CENTER}, + {TextLabel::Property::MULTI_LINE, true}}; const Property::Map FILL_IMAGE_PROPERTIES ///< The basic properties of the Fill image view. -{ - { Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER }, - { Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER }, - { Actor::Property::SIZE, IMAGE_SIZE }, - { Control::Property::BACKGROUND, BORDER } -}; + { + {Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER}, + {Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER}, + {Actor::Property::SIZE, IMAGE_SIZE}, + {Control::Property::BACKGROUND, BORDER}}; const Property::Map FIT_KEEP_ASPECT_RATIO_IMAGE_BASIC_PROPERTIES ///< The basic properties of the Fit Keep Aspect image view. -{ - { Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER }, - { Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER }, - { Actor::Property::SIZE, IMAGE_SIZE }, - { Control::Property::BACKGROUND, BORDER } -}; + { + {Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER}, + {Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER}, + {Actor::Property::SIZE, IMAGE_SIZE}, + {Control::Property::BACKGROUND, BORDER}}; const Property::Map OVERLAY_LABEL_PROPERTIES ///< The image view overlay label properties -{ - { TextLabel::Property::TEXT_COLOR, Color::WHITE }, - { TextLabel::Property::OUTLINE, { { "color", Color::BLACK }, { "width", 1.0f } } }, - { TextLabel::Property::HORIZONTAL_ALIGNMENT, HorizontalAlignment::CENTER }, - { TextLabel::Property::VERTICAL_ALIGNMENT, VerticalAlignment::CENTER }, - { TextLabel::Property::MULTI_LINE, true }, -}; + { + {TextLabel::Property::TEXT_COLOR, Color::WHITE}, + {TextLabel::Property::OUTLINE, {{"color", Color::BLACK}, {"width", 1.0f}}}, + {TextLabel::Property::HORIZONTAL_ALIGNMENT, HorizontalAlignment::CENTER}, + {TextLabel::Property::VERTICAL_ALIGNMENT, VerticalAlignment::CENTER}, + {TextLabel::Property::MULTI_LINE, true}, + }; } // unnamed namespace /** @@ -95,70 +87,66 @@ const Property::Map OVERLAY_LABEL_PROPERTIES ///< The image view overlay label p class VisualFittingModeController : public ConnectionTracker { public: - /** * @brief Constructor. * @param[in] application A reference to the Application class. */ - VisualFittingModeController( Application& application ) - : mApplication( application ), - mLargePadding( true ) + VisualFittingModeController(Application& application) + : mApplication(application), + mLargePadding(true) { // Connect to the Application's Init signal - mApplication.InitSignal().Connect( this, &VisualFittingModeController::Create ); + mApplication.InitSignal().Connect(this, &VisualFittingModeController::Create); } private: - /** * @brief Called to initialise the application content * @param[in] application A reference to the Application class. */ - void Create( Application& application ) + void Create(Application& application) { // Get a handle to the window Window window = application.GetWindow(); - window.SetBackgroundColor( Color::WHITE ); + window.SetBackgroundColor(Color::WHITE); // Text Label filling the entire screen, with a background - mTextLabel = Handle::New< TextLabel >( TEXT_LABEL_PROPERTIES ); - window.Add( mTextLabel ); + mTextLabel = Handle::New(TEXT_LABEL_PROPERTIES); + window.Add(mTextLabel); // We want to change the padding when tapping mTapDetector = TapGestureDetector::New(); - mTapDetector.Attach( mTextLabel ); - mTapDetector.DetectedSignal().Connect( this, &VisualFittingModeController::OnTap ); + mTapDetector.Attach(mTextLabel); + mTapDetector.DetectedSignal().Connect(this, &VisualFittingModeController::OnTap); // Create an ImageView with the default behaviour, i.e. image fills to control size - mFillImage = ImageView::New( IMAGE_NAME ); - mFillImage.SetProperties( FILL_IMAGE_PROPERTIES ); - window.Add( mFillImage ); + mFillImage = ImageView::New(IMAGE_NAME); + mFillImage.SetProperties(FILL_IMAGE_PROPERTIES); + window.Add(mFillImage); // Create an ImageView that Keeps the aspect ratio while fitting within the given size - mFitKeepAspectRatioImage = Handle::New< ImageView >( FIT_KEEP_ASPECT_RATIO_IMAGE_BASIC_PROPERTIES ); - mFitKeepAspectRatioImage.SetProperty( ImageView::Property::IMAGE, - Property::Map - { - { Visual::Property::TYPE, Visual::IMAGE }, - { ImageVisual::Property::URL, IMAGE_NAME }, - { DevelVisual::Property::VISUAL_FITTING_MODE, DevelVisual::FIT_KEEP_ASPECT_RATIO } - } ); - window.Add( mFitKeepAspectRatioImage ); + mFitKeepAspectRatioImage = Handle::New(FIT_KEEP_ASPECT_RATIO_IMAGE_BASIC_PROPERTIES); + mFitKeepAspectRatioImage.SetProperty(ImageView::Property::IMAGE, + Property::Map{ + {Visual::Property::TYPE, Visual::IMAGE}, + {ImageVisual::Property::URL, IMAGE_NAME}, + {DevelVisual::Property::VISUAL_FITTING_MODE, DevelVisual::FIT_KEEP_ASPECT_RATIO}}); + window.Add(mFitKeepAspectRatioImage); // Create an overlay label for fill image - Actor fillLabel = TextLabel::New( FILL_LABEL ); - fillLabel.SetProperties( FILL_IMAGE_PROPERTIES ); - fillLabel.SetProperties( OVERLAY_LABEL_PROPERTIES ); - window.Add( fillLabel ); + Actor fillLabel = TextLabel::New(FILL_LABEL); + fillLabel.SetProperties(FILL_IMAGE_PROPERTIES); + fillLabel.SetProperties(OVERLAY_LABEL_PROPERTIES); + window.Add(fillLabel); // Create an overlay label for the Fit/Keep Aspect image - Actor fitLabel = TextLabel::New( FIT_KEEP_ASPECT_LABEL ); - fitLabel.SetProperties( FIT_KEEP_ASPECT_RATIO_IMAGE_BASIC_PROPERTIES ); - fitLabel.SetProperties( OVERLAY_LABEL_PROPERTIES ); - window.Add( fitLabel ); + Actor fitLabel = TextLabel::New(FIT_KEEP_ASPECT_LABEL); + fitLabel.SetProperties(FIT_KEEP_ASPECT_RATIO_IMAGE_BASIC_PROPERTIES); + fitLabel.SetProperties(OVERLAY_LABEL_PROPERTIES); + window.Add(fitLabel); // Respond to key events, exit if ESC/Back, change the padding if anything else - window.KeyEventSignal().Connect( this, &VisualFittingModeController::OnKeyEvent ); + window.KeyEventSignal().Connect(this, &VisualFittingModeController::OnKeyEvent); // Set the initial padding ChangePadding(); @@ -171,11 +159,11 @@ private: { mLargePadding = !mLargePadding; - const Extents padding( mLargePadding ? LARGE_PADDING : BORDER_ONLY_PADDING ); - mFitKeepAspectRatioImage.SetProperty( Control::Property::PADDING, padding ); - mFillImage.SetProperty( Control::Property::PADDING, padding ); + const Extents padding(mLargePadding ? LARGE_PADDING : BORDER_ONLY_PADDING); + mFitKeepAspectRatioImage.SetProperty(Control::Property::PADDING, padding); + mFillImage.SetProperty(Control::Property::PADDING, padding); - mTextLabel.SetProperty( TextLabel::Property::TEXT, mLargePadding ? LARGE_PADDING_TEXT : BORDER_ONLY_PADDING_TEXT ); + mTextLabel.SetProperty(TextLabel::Property::TEXT, mLargePadding ? LARGE_PADDING_TEXT : BORDER_ONLY_PADDING_TEXT); } /** @@ -183,7 +171,7 @@ private: * * We just want to change the padding when this happens. */ - void OnTap( Actor /* actor */, const TapGesture& /* tap */ ) + void OnTap(Actor /* actor */, const TapGesture& /* tap */) { ChangePadding(); } @@ -195,11 +183,11 @@ private: * the padding if any other key. * @param[in] event The key event information */ - void OnKeyEvent( const KeyEvent& event ) + 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(); } @@ -211,18 +199,18 @@ private: } private: - Application& mApplication; ///< Reference to the application class. - Actor mFillImage; ///< An image-view that fills to the control size. - Actor mFitKeepAspectRatioImage; ///< An image-view that fits within the given size & keeps the aspect ratio. - Actor mTextLabel; ///< A text label to show the current padding mode. - TapGestureDetector mTapDetector; ///< A tap detector to change the padding mode. - bool mLargePadding; ///< If true, the large padding values are used. When false, only the border padding is applied. + Application& mApplication; ///< Reference to the application class. + Actor mFillImage; ///< An image-view that fills to the control size. + Actor mFitKeepAspectRatioImage; ///< An image-view that fits within the given size & keeps the aspect ratio. + Actor mTextLabel; ///< A text label to show the current padding mode. + TapGestureDetector mTapDetector; ///< A tap detector to change the padding mode. + bool mLargePadding; ///< If true, the large padding values are used. When false, only the border padding is applied. }; -int DALI_EXPORT_API main( int argc, char **argv ) +int DALI_EXPORT_API main(int argc, char** argv) { - Application application = Application::New( &argc, &argv ); - VisualFittingModeController visualFittingModeController( application ); + Application application = Application::New(&argc, &argv); + VisualFittingModeController visualFittingModeController(application); application.MainLoop(); return 0; }