2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include "clipping-item-factory.h"
22 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.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/image-visual-properties.h>
26 #include <dali-toolkit/public-api/visuals/visual-properties.h>
27 #include <dali/public-api/object/property-map.h>
30 using namespace Dali::Toolkit;
34 const char* IMAGE_PATHS[] = {
35 DEMO_IMAGE_DIR "gallery-medium-1.jpg",
36 DEMO_IMAGE_DIR "gallery-medium-2.jpg",
37 DEMO_IMAGE_DIR "gallery-medium-3.jpg",
38 DEMO_IMAGE_DIR "gallery-medium-4.jpg",
39 DEMO_IMAGE_DIR "gallery-medium-5.jpg",
40 DEMO_IMAGE_DIR "gallery-medium-6.jpg",
41 DEMO_IMAGE_DIR "gallery-medium-7.jpg",
42 DEMO_IMAGE_DIR "gallery-medium-8.jpg",
43 DEMO_IMAGE_DIR "gallery-medium-9.jpg",
44 DEMO_IMAGE_DIR "gallery-medium-10.jpg",
45 DEMO_IMAGE_DIR "gallery-medium-11.jpg",
46 DEMO_IMAGE_DIR "gallery-medium-12.jpg",
47 DEMO_IMAGE_DIR "gallery-medium-13.jpg",
48 DEMO_IMAGE_DIR "gallery-medium-14.jpg",
49 DEMO_IMAGE_DIR "gallery-medium-15.jpg",
50 DEMO_IMAGE_DIR "gallery-medium-16.jpg",
51 DEMO_IMAGE_DIR "gallery-medium-17.jpg",
52 DEMO_IMAGE_DIR "gallery-medium-18.jpg",
53 DEMO_IMAGE_DIR "gallery-medium-19.jpg",
54 DEMO_IMAGE_DIR "gallery-medium-20.jpg",
55 DEMO_IMAGE_DIR "gallery-medium-21.jpg",
56 DEMO_IMAGE_DIR "gallery-medium-22.jpg",
57 DEMO_IMAGE_DIR "gallery-medium-23.jpg",
58 DEMO_IMAGE_DIR "gallery-medium-24.jpg",
59 DEMO_IMAGE_DIR "gallery-medium-25.jpg",
60 DEMO_IMAGE_DIR "gallery-medium-26.jpg",
61 DEMO_IMAGE_DIR "gallery-medium-27.jpg",
62 DEMO_IMAGE_DIR "gallery-medium-28.jpg",
63 DEMO_IMAGE_DIR "gallery-medium-29.jpg",
64 DEMO_IMAGE_DIR "gallery-medium-30.jpg",
65 DEMO_IMAGE_DIR "gallery-medium-31.jpg",
66 DEMO_IMAGE_DIR "gallery-medium-32.jpg",
67 DEMO_IMAGE_DIR "gallery-medium-33.jpg",
68 DEMO_IMAGE_DIR "gallery-medium-34.jpg",
69 DEMO_IMAGE_DIR "gallery-medium-35.jpg",
70 DEMO_IMAGE_DIR "gallery-medium-36.jpg",
71 DEMO_IMAGE_DIR "gallery-medium-37.jpg",
72 DEMO_IMAGE_DIR "gallery-medium-38.jpg",
73 DEMO_IMAGE_DIR "gallery-medium-39.jpg",
74 DEMO_IMAGE_DIR "gallery-medium-40.jpg",
75 DEMO_IMAGE_DIR "gallery-medium-41.jpg",
76 DEMO_IMAGE_DIR "gallery-medium-42.jpg",
77 DEMO_IMAGE_DIR "gallery-medium-43.jpg",
78 DEMO_IMAGE_DIR "gallery-medium-44.jpg",
79 DEMO_IMAGE_DIR "gallery-medium-45.jpg",
80 DEMO_IMAGE_DIR "gallery-medium-46.jpg",
81 DEMO_IMAGE_DIR "gallery-medium-47.jpg",
82 DEMO_IMAGE_DIR "gallery-medium-48.jpg",
83 DEMO_IMAGE_DIR "gallery-medium-49.jpg",
84 DEMO_IMAGE_DIR "gallery-medium-50.jpg",
85 DEMO_IMAGE_DIR "gallery-medium-51.jpg",
86 DEMO_IMAGE_DIR "gallery-medium-52.jpg",
87 DEMO_IMAGE_DIR "gallery-medium-53.jpg",
89 const unsigned int NUM_IMAGES = sizeof(IMAGE_PATHS) / sizeof(char*);
90 const unsigned int NUM_IMAGES_MULTIPLIER = 10;
92 const float ITEM_BORDER_SIZE = 2.0f;
93 } // unnamed namespace
95 ClippingItemFactory::ClippingItemFactory()
99 unsigned int ClippingItemFactory::GetNumberOfItems()
101 return NUM_IMAGES * NUM_IMAGES_MULTIPLIER;
104 Actor ClippingItemFactory::NewItem(unsigned int itemId)
106 // Create an image view for this item
107 Property::Map propertyMap;
108 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
109 propertyMap.Insert(ImageVisual::Property::URL, IMAGE_PATHS[itemId % NUM_IMAGES]);
110 propertyMap.Insert(DevelVisual::Property::VISUAL_FITTING_MODE, DevelVisual::FILL);
111 ImageView actor = ImageView::New();
112 actor.SetProperty(Toolkit::ImageView::Property::IMAGE, propertyMap);
114 // Add a border image child actor
115 ImageView borderActor = ImageView::New();
116 borderActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
117 borderActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
118 borderActor.SetResizePolicy(ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS);
119 borderActor.SetProperty(Actor::Property::SIZE_MODE_FACTOR, Vector3(2.0f * ITEM_BORDER_SIZE, 2.0f * ITEM_BORDER_SIZE, 0.0f));
120 borderActor.SetProperty(Actor::Property::COLOR_MODE, USE_PARENT_COLOR);
121 borderActor.SetProperty(ImageView::Property::IMAGE,
122 Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::BORDER).Add(BorderVisual::Property::COLOR, Color::WHITE).Add(BorderVisual::Property::SIZE, ITEM_BORDER_SIZE).Add(BorderVisual::Property::ANTI_ALIASING, true));
123 actor.Add(borderActor);