Custom control transform animation
[platform/core/uifw/dali-demo.git] / examples / transitions / beat-control.h
1 #ifndef DALI_DEMO_BEAT_CONTROL_H
2 #define DALI_DEMO_BEAT_CONTROL_H
3
4 /*
5  * Copyright (c) 2016 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
26 namespace Internal
27 {
28 // All type registered types need to have the same name for the body and the handle
29 class BeatControl;
30 }
31
32 /**
33  * Control that allows the RGB channels of an image to be altered.
34  */
35 class BeatControl : public Dali::Toolkit::Control
36 {
37 public:
38   /**
39    * The start and end property ranges for this control
40    */
41   enum PropertyRange
42   {
43     PROPERTY_START_INDEX = Dali::Toolkit::Control::CONTROL_PROPERTY_END_INDEX + 1,
44     PROPERTY_END_INDEX   = PROPERTY_START_INDEX + 1000,
45     ANIMATABLE_PROPERTY_START_INDEX = Dali::ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX,
46     ANIMATABLE_PROPERTY_END_INDEX = ANIMATABLE_PROPERTY_START_INDEX+1000
47   };
48
49   struct Property
50   {
51     enum
52     {
53       BOUNCE_TRANSITION = PROPERTY_START_INDEX,
54       LEFT_TRANSITION,
55       UP_TRANSITION,
56       BEAT_VISUAL
57     };
58   };
59
60 public: // Construction / destruction
61
62   /**
63    * Create an uninitialized handle
64    */
65   BeatControl();
66
67   /**
68    * Create a new image channel control without an image. Use
69    * SetImage to give this control an image
70    */
71   static BeatControl New();
72
73   /**
74    * Create a new image channel control from a given URL
75    */
76   static BeatControl New( const std::string& url );
77
78   /**
79    * Destructor. This is non-virtual since derived Handle types must not
80    * contain data or virtual methods
81    */
82   ~BeatControl();
83
84   /**
85    * Copy Constructor
86    */
87   BeatControl( const BeatControl& beatControl );
88
89   /**
90    * Assignment Operator
91    */
92   BeatControl& operator=( const BeatControl& beatControl );
93
94   /**
95    * Downcast
96    */
97   static BeatControl DownCast( BaseHandle handle );
98
99 public: // API
100
101   void StartBounceAnimation();
102
103   void StartXAnimation();
104
105   void StartYAnimation();
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