Updated demos to use DALi clang-format
[platform/core/uifw/dali-demo.git] / examples / visual-transitions / beat-control.h
1 #ifndef DALI_DEMO_BEAT_CONTROL_H
2 #define DALI_DEMO_BEAT_CONTROL_H
3
4 /*
5  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 #include <dali-toolkit/dali-toolkit.h>
21 #include <string>
22
23 namespace Demo
24 {
25 namespace Internal
26 {
27 // All type registered types need to have the same name for the body and the handle
28 class BeatControl;
29 } // namespace Internal
30
31 /**
32  * Control that allows the RGB channels of an image to be altered.
33  */
34 class BeatControl : public Dali::Toolkit::Control
35 {
36 public:
37   /**
38    * The start and end property ranges for this control
39    */
40   enum PropertyRange
41   {
42     PROPERTY_START_INDEX            = Dali::Toolkit::Control::CONTROL_PROPERTY_END_INDEX + 1,
43     PROPERTY_END_INDEX              = PROPERTY_START_INDEX + 1000,
44     ANIMATABLE_PROPERTY_START_INDEX = Dali::ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX,
45     ANIMATABLE_PROPERTY_END_INDEX   = ANIMATABLE_PROPERTY_START_INDEX + 1000
46   };
47
48   struct Property
49   {
50     enum
51     {
52       BOUNCE_TRANSITION = PROPERTY_START_INDEX,
53       LEFT_TRANSITION,
54       UP_TRANSITION,
55       FADE_TRANSITION,
56       BEAT_VISUAL
57     };
58   };
59
60 public: // Construction / destruction
61   /**
62    * Create an uninitialized handle
63    */
64   BeatControl();
65
66   /**
67    * Create a new image channel control without an image. Use
68    * SetImage to give this control an image
69    */
70   static BeatControl New();
71
72   /**
73    * Create a new image channel control from a given URL
74    */
75   static BeatControl New(const std::string& url);
76
77   /**
78    * Destructor. This is non-virtual since derived Handle types must not
79    * contain data or virtual methods
80    */
81   ~BeatControl();
82
83   /**
84    * Copy Constructor
85    */
86   BeatControl(const BeatControl& beatControl);
87
88   /**
89    * Assignment Operator
90    */
91   BeatControl& operator=(const BeatControl& beatControl);
92
93   /**
94    * Downcast
95    */
96   static BeatControl DownCast(BaseHandle handle);
97
98 public: // API
99   void StartBounceAnimation();
100
101   void StartXAnimation();
102
103   void StartYAnimation();
104
105   void StartFadeAnimation();
106
107 public: // Not for public use
108   /**
109    * Create a handle from an implementation
110    */
111   BeatControl(Internal::BeatControl& implementation);
112
113   /**
114    * Allow the creation of an BeatControl handle from an internal CustomActor pointer
115    */
116   BeatControl(Dali::Internal::CustomActor* internal);
117 };
118
119 } // namespace Demo
120
121 #endif // DALI_DEMO_BEAT_CONTROL_H