X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fimage-scaling-irregular-grid%2Fimage-scaling-irregular-grid-example.cpp;h=fdae2c4fa3f72a8b3e397e5cf9ef17668b38fb85;hb=e93c7dc0fa84baca2c3c31df6fa83ceccd5d40af;hp=6d77a2ec77f86b275b65edebf3a1773119b0377c;hpb=51a67042772c3a811a8a602a2f9339b90dc4b348;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/image-scaling-irregular-grid/image-scaling-irregular-grid-example.cpp b/examples/image-scaling-irregular-grid/image-scaling-irregular-grid-example.cpp index 6d77a2e..fdae2c4 100644 --- a/examples/image-scaling-irregular-grid/image-scaling-irregular-grid-example.cpp +++ b/examples/image-scaling-irregular-grid/image-scaling-irregular-grid-example.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * 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. @@ -24,7 +24,7 @@ * reduce the image to save memory, improve performance, and potentially display * a better small version of the image than if the default size were loaded. * - * The functions CreateImage and CreateImageActor below show how to build an + * The functions CreateImage and CreateImageView below show how to build an * image using a scaling mode to have %Dali resize it during loading. * * This demo defaults to the SCALE_TO_FILL mode of ImageAttributes which makes @@ -38,13 +38,14 @@ * grid using the button in the top-right of the toolbar. * A single image can be cycled by clicking the image directly. * - * @see CreateImage CreateImageActor + * @see CreateImage CreateImageView */ // EXTERNAL INCLUDES #include #include #include +#include #include // INTERNAL INCLUDES @@ -61,10 +62,11 @@ namespace /** Controls the output of application logging. */ //#define DEBUG_PRINT_DIAGNOSTICS; -const char* BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-gradient.jpg" ); -const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" ); +const char* BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-gradient.jpg" ); +const char* TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" ); const char* APPLICATION_TITLE( "Image Scaling Modes" ); -const char* TOGGLE_SCALING_IMAGE( DALI_IMAGE_DIR "icon-change.png" ); +const char* TOGGLE_SCALING_IMAGE( DEMO_IMAGE_DIR "icon-change.png" ); +const char* TOGGLE_SCALING_IMAGE_SELECTED( DEMO_IMAGE_DIR "icon-change-selected.png" ); /** The width of the grid in whole grid cells. */ const unsigned GRID_WIDTH = 9; @@ -103,64 +105,64 @@ const unsigned NUM_IMAGE_SIZES = sizeof(IMAGE_SIZES) / sizeof(IMAGE_SIZES[0]); * show the scaling. */ const char* IMAGE_PATHS[] = { - DALI_IMAGE_DIR "dali-logo.png", - DALI_IMAGE_DIR "com.samsung.dali-demo.ico", - DALI_IMAGE_DIR "square_primitive_shapes.bmp", - DALI_IMAGE_DIR "gallery-large-14.wbmp", + DEMO_IMAGE_DIR "dali-logo.png", + DEMO_IMAGE_DIR "com.samsung.dali-demo.ico", + DEMO_IMAGE_DIR "square_primitive_shapes.bmp", + DEMO_IMAGE_DIR "gallery-large-14.wbmp", // Images that show aspect ratio changes clearly in primitive shapes: - DALI_IMAGE_DIR "portrait_screen_primitive_shapes.gif", - DALI_IMAGE_DIR "landscape_screen_primitive_shapes.gif", + DEMO_IMAGE_DIR "portrait_screen_primitive_shapes.gif", + DEMO_IMAGE_DIR "landscape_screen_primitive_shapes.gif", // Images from other demos that are tall, wide or just large: - DALI_IMAGE_DIR "gallery-large-1.jpg", - DALI_IMAGE_DIR "gallery-large-2.jpg", - DALI_IMAGE_DIR "gallery-large-3.jpg", - DALI_IMAGE_DIR "gallery-large-4.jpg", - DALI_IMAGE_DIR "gallery-large-5.jpg", - DALI_IMAGE_DIR "gallery-large-6.jpg", - DALI_IMAGE_DIR "gallery-large-7.jpg", - DALI_IMAGE_DIR "gallery-large-8.jpg", - DALI_IMAGE_DIR "gallery-large-9.jpg", - DALI_IMAGE_DIR "gallery-large-10.jpg", - DALI_IMAGE_DIR "gallery-large-11.jpg", - DALI_IMAGE_DIR "gallery-large-12.jpg", - DALI_IMAGE_DIR "gallery-large-13.jpg", - DALI_IMAGE_DIR "gallery-large-14.jpg", - DALI_IMAGE_DIR "gallery-large-15.jpg", - DALI_IMAGE_DIR "gallery-large-16.jpg", - DALI_IMAGE_DIR "gallery-large-17.jpg", - DALI_IMAGE_DIR "gallery-large-18.jpg", - DALI_IMAGE_DIR "gallery-large-19.jpg", - DALI_IMAGE_DIR "gallery-large-20.jpg", - DALI_IMAGE_DIR "gallery-large-21.jpg", - - DALI_IMAGE_DIR "background-1.jpg", - DALI_IMAGE_DIR "background-2.jpg", - DALI_IMAGE_DIR "background-3.jpg", - DALI_IMAGE_DIR "background-4.jpg", - DALI_IMAGE_DIR "background-5.jpg", - DALI_IMAGE_DIR "background-blocks.jpg", - DALI_IMAGE_DIR "background-magnifier.jpg", - - DALI_IMAGE_DIR "background-1.jpg", - DALI_IMAGE_DIR "background-2.jpg", - DALI_IMAGE_DIR "background-3.jpg", - DALI_IMAGE_DIR "background-4.jpg", - DALI_IMAGE_DIR "background-5.jpg", - DALI_IMAGE_DIR "background-blocks.jpg", - DALI_IMAGE_DIR "background-magnifier.jpg", - - DALI_IMAGE_DIR "book-landscape-cover-back.jpg", - DALI_IMAGE_DIR "book-landscape-cover.jpg", - DALI_IMAGE_DIR "book-landscape-p1.jpg", - DALI_IMAGE_DIR "book-landscape-p2.jpg", - - DALI_IMAGE_DIR "book-portrait-cover.jpg", - DALI_IMAGE_DIR "book-portrait-p1.jpg", - DALI_IMAGE_DIR "book-portrait-p2.jpg", + DEMO_IMAGE_DIR "gallery-large-1.jpg", + DEMO_IMAGE_DIR "gallery-large-2.jpg", + DEMO_IMAGE_DIR "gallery-large-3.jpg", + DEMO_IMAGE_DIR "gallery-large-4.jpg", + DEMO_IMAGE_DIR "gallery-large-5.jpg", + DEMO_IMAGE_DIR "gallery-large-6.jpg", + DEMO_IMAGE_DIR "gallery-large-7.jpg", + DEMO_IMAGE_DIR "gallery-large-8.jpg", + DEMO_IMAGE_DIR "gallery-large-9.jpg", + DEMO_IMAGE_DIR "gallery-large-10.jpg", + DEMO_IMAGE_DIR "gallery-large-11.jpg", + DEMO_IMAGE_DIR "gallery-large-12.jpg", + DEMO_IMAGE_DIR "gallery-large-13.jpg", + DEMO_IMAGE_DIR "gallery-large-14.jpg", + DEMO_IMAGE_DIR "gallery-large-15.jpg", + DEMO_IMAGE_DIR "gallery-large-16.jpg", + DEMO_IMAGE_DIR "gallery-large-17.jpg", + DEMO_IMAGE_DIR "gallery-large-18.jpg", + DEMO_IMAGE_DIR "gallery-large-19.jpg", + DEMO_IMAGE_DIR "gallery-large-20.jpg", + DEMO_IMAGE_DIR "gallery-large-21.jpg", + + DEMO_IMAGE_DIR "background-1.jpg", + DEMO_IMAGE_DIR "background-2.jpg", + DEMO_IMAGE_DIR "background-3.jpg", + DEMO_IMAGE_DIR "background-4.jpg", + DEMO_IMAGE_DIR "background-5.jpg", + DEMO_IMAGE_DIR "background-blocks.jpg", + DEMO_IMAGE_DIR "background-magnifier.jpg", + + DEMO_IMAGE_DIR "background-1.jpg", + DEMO_IMAGE_DIR "background-2.jpg", + DEMO_IMAGE_DIR "background-3.jpg", + DEMO_IMAGE_DIR "background-4.jpg", + DEMO_IMAGE_DIR "background-5.jpg", + DEMO_IMAGE_DIR "background-blocks.jpg", + DEMO_IMAGE_DIR "background-magnifier.jpg", + + DEMO_IMAGE_DIR "book-landscape-cover-back.jpg", + DEMO_IMAGE_DIR "book-landscape-cover.jpg", + DEMO_IMAGE_DIR "book-landscape-p1.jpg", + DEMO_IMAGE_DIR "book-landscape-p2.jpg", + + DEMO_IMAGE_DIR "book-portrait-cover.jpg", + DEMO_IMAGE_DIR "book-portrait-p1.jpg", + DEMO_IMAGE_DIR "book-portrait-p2.jpg", NULL }; const unsigned NUM_IMAGE_PATHS = sizeof(IMAGE_PATHS) / sizeof(IMAGE_PATHS[0]) - 1u; @@ -185,17 +187,17 @@ Image CreateImage(const std::string& filename, unsigned int width, unsigned int } /** - * Creates an ImageActor + * Creates an ImageView * * @param[in] filename The path of the image. * @param[in] width The width of the image in pixels. * @param[in] height The height of the image in pixels. * @param[in] fittingMode The mode to use when scaling the image to fit the desired dimensions. */ -ImageActor CreateImageActor(const std::string& filename, unsigned int width, unsigned int height, Dali::FittingMode::Type fittingMode ) +ImageView CreateImageView(const std::string& filename, unsigned int width, unsigned int height, Dali::FittingMode::Type fittingMode ) { Image img = CreateImage( filename, width, height, fittingMode ); - ImageActor actor = ImageActor::New( img ); + ImageView actor = ImageView::New( img ); actor.SetName( filename ); actor.SetParentOrigin(ParentOrigin::CENTER); actor.SetAnchorPoint(AnchorPoint::CENTER); @@ -305,9 +307,9 @@ public: "" ); // Create an image scaling toggle button. (right of toolbar) - Image toggleScalingImage = ResourceImage::New( TOGGLE_SCALING_IMAGE ); Toolkit::PushButton toggleScalingButton = Toolkit::PushButton::New(); - toggleScalingButton.SetBackgroundImage( toggleScalingImage ); + toggleScalingButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, TOGGLE_SCALING_IMAGE ); + toggleScalingButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, TOGGLE_SCALING_IMAGE_SELECTED ); toggleScalingButton.ClickedSignal().Connect( this, &ImageScalingIrregularGridController::OnToggleScalingTouched ); mToolBar.AddControl( toggleScalingButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); @@ -457,11 +459,12 @@ public: const Vector2 imageRegionCorner = gridOrigin + cellSize * Vector2( imageSource.cellX, imageSource.cellY ); const Vector2 imagePosition = imageRegionCorner + Vector2( GRID_CELL_PADDING , GRID_CELL_PADDING ) + imageSize * 0.5f; - ImageActor image = CreateImageActor( imageSource.configuration.path, imageSize.x, imageSize.y, fittingMode ); + ImageView image = CreateImageView( imageSource.configuration.path, imageSize.x, imageSize.y, fittingMode ); image.SetPosition( Vector3( imagePosition.x, imagePosition.y, 0 ) ); image.SetSize( imageSize ); - image.TouchedSignal().Connect( this, &ImageScalingIrregularGridController::OnTouchImage ); + image.TouchSignal().Connect( this, &ImageScalingIrregularGridController::OnTouchImage ); mFittingModes[image.GetId()] = fittingMode; + mResourceUrls[image.GetId()] = imageSource.configuration.path; mSizes[image.GetId()] = imageSize; gridActor.Add( image ); @@ -473,14 +476,13 @@ public: /** * Upon Touching an image (Release), change its scaling mode and make it spin, provided we're not scrolling. * @param[in] actor The actor touched - * @param[in] event The TouchEvent. + * @param[in] event The Touch information. */ - bool OnTouchImage( Actor actor, const TouchEvent& event ) + bool OnTouchImage( Actor actor, const TouchData& event ) { - if( (event.points.size() > 0) && (!mScrolling) ) + if( ( event.GetPointCount() > 0 ) && ( !mScrolling ) ) { - TouchPoint point = event.points[0]; - if(point.state == TouchPoint::Up) + if( event.GetState( 0 ) == PointState::UP ) { // Spin the image a few times: Animation animation = Animation::New(SPIN_DURATION); @@ -492,10 +494,13 @@ public: Dali::FittingMode::Type newMode = NextMode( mFittingModes[id] ); const Vector2 imageSize = mSizes[actor.GetId()]; - ImageActor imageActor = ImageActor::DownCast( actor ); - Image oldImage = imageActor.GetImage(); - Image newImage = CreateImage( ResourceImage::DownCast(oldImage).GetUrl(), imageSize.width + 0.5f, imageSize.height + 0.5f, newMode ); - imageActor.SetImage( newImage ); + const std::string& url = mResourceUrls[id]; + Image newImage = CreateImage( url, imageSize.width + 0.5f, imageSize.height + 0.5f, newMode ); + ImageView imageView = ImageView::DownCast( actor ); + if(imageView) + { + imageView.SetImage( newImage ); + } mFittingModes[id] = newMode; } } @@ -529,17 +534,18 @@ public: for( unsigned i = 0; i < numChildren; ++i ) { - ImageActor gridImageActor = ImageActor::DownCast( mGridActor.GetChildAt( i ) ); - if( gridImageActor ) + ImageView gridImageView = ImageView::DownCast( mGridActor.GetChildAt( i ) ); + if( gridImageView ) { // Cycle the scaling mode options: - const Vector2 imageSize = mSizes[gridImageActor.GetId()]; - Dali::FittingMode::Type newMode = NextMode( mFittingModes[gridImageActor.GetId()] ); - Image oldImage = gridImageActor.GetImage(); - Image newImage = CreateImage(ResourceImage::DownCast(oldImage).GetUrl(), imageSize.width, imageSize.height, newMode ); - gridImageActor.SetImage( newImage ); + unsigned int id = gridImageView.GetId(); - mFittingModes[gridImageActor.GetId()] = newMode; + const Vector2 imageSize = mSizes[ id ]; + Dali::FittingMode::Type newMode = NextMode( mFittingModes[ id ] ); + Image newImage = CreateImage( mResourceUrls[ id ], imageSize.width, imageSize.height, newMode ); + gridImageView.SetImage( newImage ); + + mFittingModes[ id ] = newMode; SetTitle( std::string( newMode == FittingMode::SHRINK_TO_FIT ? "SHRINK_TO_FIT" : newMode == FittingMode::SCALE_TO_FILL ? "SCALE_TO_FILL" : newMode == FittingMode::FIT_WIDTH ? "FIT_WIDTH" : "FIT_HEIGHT" ) ); } @@ -596,6 +602,7 @@ private: ScrollBar mScrollBarHorizontal; bool mScrolling; ///< ScrollView scrolling state (true = scrolling, false = stationary) std::map mFittingModes; ///< Stores the current scaling mode of each image, keyed by image actor id. + std::map mResourceUrls; ///< Stores the url of each image, keyed by image actor id. std::map mSizes; ///< Stores the current size of each image, keyed by image actor id. }; @@ -607,9 +614,9 @@ void RunTest( Application& application ) } /** Entry point for Linux & Tizen applications */ -int main( int argc, char **argv ) +int DALI_EXPORT_API main( int argc, char **argv ) { - Application application = Application::New( &argc, &argv, DALI_DEMO_THEME_PATH ); + Application application = Application::New( &argc, &argv, DEMO_THEME_PATH ); RunTest( application );