Using migrated Public Visual API
[platform/core/uifw/dali-demo.git] / examples / clipping / clipping-item-factory.cpp
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include "clipping-item-factory.h"
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/object/property-map.h>
23 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
24 #include <dali-toolkit/public-api/visuals/border-visual-properties.h>
25 #include <dali-toolkit/public-api/visuals/visual-properties.h>
26
27 using namespace Dali;
28 using namespace Dali::Toolkit;
29
30 namespace
31 {
32 const char * IMAGE_PATHS[] = {
33   DEMO_IMAGE_DIR "gallery-medium-1.jpg",
34   DEMO_IMAGE_DIR "gallery-medium-2.jpg",
35   DEMO_IMAGE_DIR "gallery-medium-3.jpg",
36   DEMO_IMAGE_DIR "gallery-medium-4.jpg",
37   DEMO_IMAGE_DIR "gallery-medium-5.jpg",
38   DEMO_IMAGE_DIR "gallery-medium-6.jpg",
39   DEMO_IMAGE_DIR "gallery-medium-7.jpg",
40   DEMO_IMAGE_DIR "gallery-medium-8.jpg",
41   DEMO_IMAGE_DIR "gallery-medium-9.jpg",
42   DEMO_IMAGE_DIR "gallery-medium-10.jpg",
43   DEMO_IMAGE_DIR "gallery-medium-11.jpg",
44   DEMO_IMAGE_DIR "gallery-medium-12.jpg",
45   DEMO_IMAGE_DIR "gallery-medium-13.jpg",
46   DEMO_IMAGE_DIR "gallery-medium-14.jpg",
47   DEMO_IMAGE_DIR "gallery-medium-15.jpg",
48   DEMO_IMAGE_DIR "gallery-medium-16.jpg",
49   DEMO_IMAGE_DIR "gallery-medium-17.jpg",
50   DEMO_IMAGE_DIR "gallery-medium-18.jpg",
51   DEMO_IMAGE_DIR "gallery-medium-19.jpg",
52   DEMO_IMAGE_DIR "gallery-medium-20.jpg",
53   DEMO_IMAGE_DIR "gallery-medium-21.jpg",
54   DEMO_IMAGE_DIR "gallery-medium-22.jpg",
55   DEMO_IMAGE_DIR "gallery-medium-23.jpg",
56   DEMO_IMAGE_DIR "gallery-medium-24.jpg",
57   DEMO_IMAGE_DIR "gallery-medium-25.jpg",
58   DEMO_IMAGE_DIR "gallery-medium-26.jpg",
59   DEMO_IMAGE_DIR "gallery-medium-27.jpg",
60   DEMO_IMAGE_DIR "gallery-medium-28.jpg",
61   DEMO_IMAGE_DIR "gallery-medium-29.jpg",
62   DEMO_IMAGE_DIR "gallery-medium-30.jpg",
63   DEMO_IMAGE_DIR "gallery-medium-31.jpg",
64   DEMO_IMAGE_DIR "gallery-medium-32.jpg",
65   DEMO_IMAGE_DIR "gallery-medium-33.jpg",
66   DEMO_IMAGE_DIR "gallery-medium-34.jpg",
67   DEMO_IMAGE_DIR "gallery-medium-35.jpg",
68   DEMO_IMAGE_DIR "gallery-medium-36.jpg",
69   DEMO_IMAGE_DIR "gallery-medium-37.jpg",
70   DEMO_IMAGE_DIR "gallery-medium-38.jpg",
71   DEMO_IMAGE_DIR "gallery-medium-39.jpg",
72   DEMO_IMAGE_DIR "gallery-medium-40.jpg",
73   DEMO_IMAGE_DIR "gallery-medium-41.jpg",
74   DEMO_IMAGE_DIR "gallery-medium-42.jpg",
75   DEMO_IMAGE_DIR "gallery-medium-43.jpg",
76   DEMO_IMAGE_DIR "gallery-medium-44.jpg",
77   DEMO_IMAGE_DIR "gallery-medium-45.jpg",
78   DEMO_IMAGE_DIR "gallery-medium-46.jpg",
79   DEMO_IMAGE_DIR "gallery-medium-47.jpg",
80   DEMO_IMAGE_DIR "gallery-medium-48.jpg",
81   DEMO_IMAGE_DIR "gallery-medium-49.jpg",
82   DEMO_IMAGE_DIR "gallery-medium-50.jpg",
83   DEMO_IMAGE_DIR "gallery-medium-51.jpg",
84   DEMO_IMAGE_DIR "gallery-medium-52.jpg",
85   DEMO_IMAGE_DIR "gallery-medium-53.jpg",
86 };
87 const unsigned int NUM_IMAGES = sizeof( IMAGE_PATHS ) / sizeof( char * );
88 const unsigned int NUM_IMAGES_MULTIPLIER = 10;
89
90 const float ITEM_BORDER_SIZE = 2.0f;
91 } // unnamed namespace
92
93 ClippingItemFactory::ClippingItemFactory()
94 {
95 }
96
97 unsigned int ClippingItemFactory::GetNumberOfItems()
98 {
99   return NUM_IMAGES * NUM_IMAGES_MULTIPLIER;
100 }
101
102 Actor ClippingItemFactory::NewItem( unsigned int itemId )
103 {
104   // Create an image view for this item
105   ImageView actor = ImageView::New( IMAGE_PATHS[ itemId % NUM_IMAGES ] );
106
107   // Add a border image child actor
108   ImageView borderActor = ImageView::New();
109   borderActor.SetParentOrigin( ParentOrigin::CENTER );
110   borderActor.SetAnchorPoint( AnchorPoint::CENTER );
111   borderActor.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS );
112   borderActor.SetSizeModeFactor( Vector3( 2.0f * ITEM_BORDER_SIZE, 2.0f * ITEM_BORDER_SIZE, 0.0f ) );
113   borderActor.SetColorMode( USE_PARENT_COLOR );
114   borderActor.SetProperty( ImageView::Property::IMAGE,
115                            Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::BORDER )
116                                           .Add( BorderVisual::Property::COLOR, Color::WHITE )
117                                           .Add( BorderVisual::Property::SIZE, ITEM_BORDER_SIZE )
118                                           .Add( BorderVisual::Property::ANTI_ALIASING, true ) );
119   actor.Add(borderActor);
120
121   return actor;
122 }