Commit 339c999ee52243b5d22cef793e18efdcbac8f605

Authored by Chu Hoang
1 parent 0ba76b77

Changed Item View example to no longer use ImageActor or a custom texture atlas.

Change-Id: I819cd9de6ff49c0d86046aa4f2738f87f21c4a16
examples/item-view/item-view-example.cpp
@@ -16,17 +16,10 @@ @@ -16,17 +16,10 @@
16 */ 16 */
17 17
18 #include <sstream> 18 #include <sstream>
19 -#include <iostream>  
20 -#include <vector>  
21 -#include <string>  
22 -#include <algorithm>  
23 -#include <cstdlib> // rand  
24 #include "shared/view.h" 19 #include "shared/view.h"
25 20
26 #include <dali/dali.h> 21 #include <dali/dali.h>
27 #include <dali-toolkit/dali-toolkit.h> 22 #include <dali-toolkit/dali-toolkit.h>
28 -#include <dali/devel-api/images/atlas.h>  
29 -#include <dali/devel-api/rendering/cull-face.h>  
30 23
31 using namespace Dali; 24 using namespace Dali;
32 using namespace Dali::Toolkit; 25 using namespace Dali::Toolkit;
@@ -101,10 +94,6 @@ const char* IMAGE_PATHS[] = { @@ -101,10 +94,6 @@ const char* IMAGE_PATHS[] = {
101 94
102 const unsigned int NUM_IMAGES = sizeof(IMAGE_PATHS) / sizeof(char*); 95 const unsigned int NUM_IMAGES = sizeof(IMAGE_PATHS) / sizeof(char*);
103 96
104 -const unsigned int IMAGE_WIDTH = 256;  
105 -const unsigned int IMAGE_HEIGHT = 256;  
106 -const unsigned int NUM_IMAGE_PER_ROW_IN_ATLAS = 8;  
107 -  
108 const char* BACKGROUND_IMAGE( "" ); 97 const char* BACKGROUND_IMAGE( "" );
109 const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" ); 98 const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
110 const char* EDIT_IMAGE( DALI_IMAGE_DIR "icon-edit.png" ); 99 const char* EDIT_IMAGE( DALI_IMAGE_DIR "icon-edit.png" );
@@ -128,14 +117,7 @@ const char* SPIRAL_LABEL(&quot;Spiral&quot;); @@ -128,14 +117,7 @@ const char* SPIRAL_LABEL(&quot;Spiral&quot;);
128 const char* GRID_LABEL("Grid"); 117 const char* GRID_LABEL("Grid");
129 const char* DEPTH_LABEL("Depth"); 118 const char* DEPTH_LABEL("Depth");
130 119
131 -const char* ITEM_BORDER_IMAGE_PATH( DALI_IMAGE_DIR "frame-128x128.png" );  
132 -const Vector3 ITEM_BORDER_MARGIN_SIZE(24, 24, 0);  
133 -  
134 -// These values depend on the border image  
135 -const float ITEM_IMAGE_BORDER_LEFT = 13.0f;  
136 -const float ITEM_IMAGE_BORDER_RIGHT = 13.0f;  
137 -const float ITEM_IMAGE_BORDER_TOP = 13.0f;  
138 -const float ITEM_IMAGE_BORDER_BOTTOM = 13.0f; 120 +const float ITEM_BORDER_SIZE = 2.0f;
139 121
140 const float DEPTH_LAYOUT_ITEM_SIZE_FACTOR_PORTRAIT = 1.0f; 122 const float DEPTH_LAYOUT_ITEM_SIZE_FACTOR_PORTRAIT = 1.0f;
141 const float DEPTH_LAYOUT_ITEM_SIZE_FACTOR_LANDSCAPE = 0.8f; 123 const float DEPTH_LAYOUT_ITEM_SIZE_FACTOR_LANDSCAPE = 0.8f;
@@ -217,11 +199,9 @@ public: @@ -217,11 +199,9 @@ public:
217 199
218 Vector2 stageSize = Stage::GetCurrent().GetSize(); 200 Vector2 stageSize = Stage::GetCurrent().GetSize();
219 201
220 - // Create a border image shared by all the item actors  
221 - mBorderImage = ResourceImage::New(ITEM_BORDER_IMAGE_PATH);  
222 -  
223 // Creates a default view with a default tool bar. 202 // Creates a default view with a default tool bar.
224 // The view is added to the stage. 203 // The view is added to the stage.
  204 +
225 Layer contents = DemoHelper::CreateView( mApplication, 205 Layer contents = DemoHelper::CreateView( mApplication,
226 mView, 206 mView,
227 mToolBar, 207 mToolBar,
@@ -292,11 +272,7 @@ public: @@ -292,11 +272,7 @@ public:
292 mReplaceButton.SetVisible( false ); 272 mReplaceButton.SetVisible( false );
293 stage.Add( mReplaceButton ); 273 stage.Add( mReplaceButton );
294 274
295 - // Store one 1x1 white image for multiple items to share for backgrounds:  
296 - mWhiteImage = BufferImage::WHITE();  
297 -  
298 // Create the item view actor 275 // Create the item view actor
299 - mImageAtlas = CreateImageAtlas();  
300 mItemView = ItemView::New(*this); 276 mItemView = ItemView::New(*this);
301 mItemView.SetParentOrigin(ParentOrigin::CENTER); 277 mItemView.SetParentOrigin(ParentOrigin::CENTER);
302 mItemView.SetAnchorPoint(AnchorPoint::CENTER); 278 mItemView.SetAnchorPoint(AnchorPoint::CENTER);
@@ -363,6 +339,22 @@ public: @@ -363,6 +339,22 @@ public:
363 */ 339 */
364 void SetLayout( int layoutId ) 340 void SetLayout( int layoutId )
365 { 341 {
  342 + Stage stage = Dali::Stage::GetCurrent();
  343 + switch( mCurrentLayout )
  344 + {
  345 + case SPIRAL_LAYOUT:
  346 + case DEPTH_LAYOUT:
  347 + {
  348 + stage.GetRootLayer().SetBehavior(Layer::LAYER_3D);
  349 + break;
  350 + }
  351 + case GRID_LAYOUT:
  352 + {
  353 + stage.GetRootLayer().SetBehavior(Layer::LAYER_2D);
  354 + break;
  355 + }
  356 + }
  357 +
366 // Set the new orientation to the layout 358 // Set the new orientation to the layout
367 mItemView.GetLayout(layoutId)->SetOrientation(static_cast<ControlOrientation::Type>(mOrientation / 90)); 359 mItemView.GetLayout(layoutId)->SetOrientation(static_cast<ControlOrientation::Type>(mOrientation / 90));
368 360
@@ -857,61 +849,63 @@ public: // From ItemFactory @@ -857,61 +849,63 @@ public: // From ItemFactory
857 */ 849 */
858 virtual Actor NewItem(unsigned int itemId) 850 virtual Actor NewItem(unsigned int itemId)
859 { 851 {
860 - // Create an image actor for this item  
861 - unsigned int imageId = itemId % NUM_IMAGES;  
862 - ImageActor::PixelArea pixelArea( (imageId%NUM_IMAGE_PER_ROW_IN_ATLAS)*IMAGE_WIDTH,  
863 - (imageId/NUM_IMAGE_PER_ROW_IN_ATLAS)*IMAGE_HEIGHT,  
864 - IMAGE_WIDTH,  
865 - IMAGE_HEIGHT );  
866 - Actor actor = ImageActor::New(mImageAtlas, pixelArea); 852 + // Create an image view for this item
  853 + ImageView actor = ImageView::New( IMAGE_PATHS[ itemId % NUM_IMAGES ] );
  854 + actor.SetZ( 0.0f );
867 actor.SetPosition( INITIAL_OFFSCREEN_POSITION ); 855 actor.SetPosition( INITIAL_OFFSCREEN_POSITION );
868 856
869 // Add a border image child actor 857 // Add a border image child actor
870 - ImageActor borderActor = ImageActor::New(mBorderImage); 858 + ImageView borderActor = ImageView::New();
871 borderActor.SetParentOrigin( ParentOrigin::CENTER ); 859 borderActor.SetParentOrigin( ParentOrigin::CENTER );
872 borderActor.SetAnchorPoint( AnchorPoint::CENTER ); 860 borderActor.SetAnchorPoint( AnchorPoint::CENTER );
873 - borderActor.SetPosition( 0.f, 0.f, 1.f );  
874 - borderActor.SetStyle( ImageActor::STYLE_NINE_PATCH );  
875 - borderActor.SetNinePatchBorder( Vector4( ITEM_IMAGE_BORDER_LEFT, ITEM_IMAGE_BORDER_TOP, ITEM_IMAGE_BORDER_RIGHT, ITEM_IMAGE_BORDER_BOTTOM ) );  
876 - borderActor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR ); // darken with parent image-actor  
877 borderActor.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS ); 861 borderActor.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS );
878 - borderActor.SetSizeModeFactor( ITEM_BORDER_MARGIN_SIZE ); 862 + borderActor.SetSizeModeFactor( Vector3( 2.0f * ITEM_BORDER_SIZE, 2.0f * ITEM_BORDER_SIZE, 0.0f ) );
  863 + borderActor.SetColorMode( USE_PARENT_COLOR );
  864 +
  865 + Property::Map borderProperty;
  866 + borderProperty.Insert( "rendererType", "borderRenderer" );
  867 + borderProperty.Insert( "borderColor", Color::WHITE );
  868 + borderProperty.Insert( "borderSize", ITEM_BORDER_SIZE );
  869 + borderActor.SetProperty( ImageView::Property::IMAGE, borderProperty );
  870 +
879 actor.Add(borderActor); 871 actor.Add(borderActor);
  872 +
880 actor.SetKeyboardFocusable( true ); 873 actor.SetKeyboardFocusable( true );
881 874
882 Vector3 spiralItemSize; 875 Vector3 spiralItemSize;
883 static_cast<ItemLayout&>(*mSpiralLayout).GetItemSize( 0u, Vector3( Stage::GetCurrent().GetSize() ), spiralItemSize ); 876 static_cast<ItemLayout&>(*mSpiralLayout).GetItemSize( 0u, Vector3( Stage::GetCurrent().GetSize() ), spiralItemSize );
884 877
885 // Add a checkbox child actor; invisible until edit-mode is enabled 878 // Add a checkbox child actor; invisible until edit-mode is enabled
886 -  
887 - ImageActor checkbox = ImageActor::New( mWhiteImage ); 879 + ImageView checkbox = ImageView::New();
888 checkbox.SetName( "CheckBox" ); 880 checkbox.SetName( "CheckBox" );
889 - checkbox.SetColor( Vector4(0.0f,0.0f,0.0f,0.6f) ); 881 + checkbox.SetColorMode( USE_PARENT_COLOR );
890 checkbox.SetParentOrigin( ParentOrigin::TOP_RIGHT ); 882 checkbox.SetParentOrigin( ParentOrigin::TOP_RIGHT );
891 checkbox.SetAnchorPoint( AnchorPoint::TOP_RIGHT ); 883 checkbox.SetAnchorPoint( AnchorPoint::TOP_RIGHT );
892 checkbox.SetSize( spiralItemSize.width * 0.2f, spiralItemSize.width * 0.2f ); 884 checkbox.SetSize( spiralItemSize.width * 0.2f, spiralItemSize.width * 0.2f );
893 checkbox.SetPosition( -SELECTION_BORDER_WIDTH, SELECTION_BORDER_WIDTH ); 885 checkbox.SetPosition( -SELECTION_BORDER_WIDTH, SELECTION_BORDER_WIDTH );
894 - checkbox.SetZ( 1.0f );  
895 - SetCullFace(checkbox, Dali::CullBack);  
896 - checkbox.SetSortModifier( 150.0f ); 886 + checkbox.SetZ( 0.1f );
  887 +
  888 + Property::Map solidColorProperty;
  889 + solidColorProperty.Insert( "rendererType", "colorRenderer" );
  890 + solidColorProperty.Insert( "blendColor", Vector4(0.f, 0.f, 0.f, 0.6f) );
  891 + checkbox.SetProperty( ImageView::Property::IMAGE, solidColorProperty );
  892 +
897 if( MODE_REMOVE_MANY != mMode && 893 if( MODE_REMOVE_MANY != mMode &&
898 MODE_INSERT_MANY != mMode && 894 MODE_INSERT_MANY != mMode &&
899 MODE_REPLACE_MANY != mMode ) 895 MODE_REPLACE_MANY != mMode )
900 { 896 {
901 checkbox.SetVisible( false ); 897 checkbox.SetVisible( false );
902 } 898 }
903 - actor.Add( checkbox ); 899 + borderActor.Add( checkbox );
904 900
905 - ImageActor tick = ImageActor::New( ResourceImage::New(SELECTED_IMAGE) );  
906 - tick.SetColorMode( USE_OWN_COLOR ); 901 + ImageView tick = ImageView::New( SELECTED_IMAGE );
907 tick.SetName( "Tick" ); 902 tick.SetName( "Tick" );
  903 + tick.SetColorMode( USE_PARENT_COLOR );
908 tick.SetParentOrigin( ParentOrigin::TOP_RIGHT ); 904 tick.SetParentOrigin( ParentOrigin::TOP_RIGHT );
909 tick.SetAnchorPoint( AnchorPoint::TOP_RIGHT ); 905 tick.SetAnchorPoint( AnchorPoint::TOP_RIGHT );
910 tick.SetSize( spiralItemSize.width * 0.2f, spiralItemSize.width * 0.2f ); 906 tick.SetSize( spiralItemSize.width * 0.2f, spiralItemSize.width * 0.2f );
911 - tick.SetZ( 1.0f );  
912 - tick.SetSortModifier( 150.0f ); 907 + tick.SetZ( 0.2f );
913 tick.SetVisible( false ); 908 tick.SetVisible( false );
914 - SetCullFace(tick, Dali::CullBack);  
915 checkbox.Add( tick ); 909 checkbox.Add( tick );
916 910
917 // Connect new items for various editing modes 911 // Connect new items for various editing modes
@@ -926,23 +920,6 @@ public: // From ItemFactory @@ -926,23 +920,6 @@ public: // From ItemFactory
926 private: 920 private:
927 921
928 /** 922 /**
929 - * Create an Atlas to tile the images inside.  
930 - */  
931 - Atlas CreateImageAtlas()  
932 - {  
933 - const unsigned int atlas_width = IMAGE_WIDTH*NUM_IMAGE_PER_ROW_IN_ATLAS;  
934 - const unsigned int atlas_height = IMAGE_HEIGHT*ceil( static_cast<float>(NUM_IMAGES)/ static_cast<float>(NUM_IMAGE_PER_ROW_IN_ATLAS));  
935 - Atlas atlas = Atlas::New(atlas_width, atlas_height, Pixel::RGB888);  
936 -  
937 - for( unsigned int i = 0; i < NUM_IMAGES; i++ )  
938 - {  
939 - atlas.Upload( IMAGE_PATHS[i], (i%NUM_IMAGE_PER_ROW_IN_ATLAS)*IMAGE_WIDTH, (i/NUM_IMAGE_PER_ROW_IN_ATLAS)*IMAGE_HEIGHT );  
940 - }  
941 -  
942 - return atlas;  
943 - }  
944 -  
945 - /**  
946 * Sets/Updates the title of the View 923 * Sets/Updates the title of the View
947 * @param[in] title The new title for the view. 924 * @param[in] title The new title for the view.
948 */ 925 */
@@ -984,8 +961,6 @@ private: @@ -984,8 +961,6 @@ private:
984 TextLabel mTitleActor; ///< The Toolbar's Title. 961 TextLabel mTitleActor; ///< The Toolbar's Title.
985 962
986 ItemView mItemView; 963 ItemView mItemView;
987 - Image mBorderImage;  
988 - Atlas mImageAtlas;  
989 unsigned int mCurrentLayout; 964 unsigned int mCurrentLayout;
990 float mDurationSeconds; 965 float mDurationSeconds;
991 966
@@ -998,8 +973,6 @@ private: @@ -998,8 +973,6 @@ private:
998 Toolkit::PushButton mDeleteButton; 973 Toolkit::PushButton mDeleteButton;
999 Toolkit::PushButton mInsertButton; 974 Toolkit::PushButton mInsertButton;
1000 Toolkit::PushButton mReplaceButton; 975 Toolkit::PushButton mReplaceButton;
1001 -  
1002 - BufferImage mWhiteImage;  
1003 }; 976 };
1004 977
1005 void RunTest(Application& app) 978 void RunTest(Application& app)