a45c4b579cc7516100a86e6028e0ef55a14bf745
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / controls / control-wrapper.h
1 #ifndef DALI_TOOLKIT_CONTROL_WRAPPER_H
2 #define DALI_TOOLKIT_CONTROL_WRAPPER_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
21 // INTERNAL INCLUDES
22 #include <dali-toolkit/public-api/controls/control.h>
23
24 namespace Dali
25 {
26
27 namespace Toolkit
28 {
29
30 namespace Internal DALI_INTERNAL
31 {
32 class ControlWrapper;
33 }
34
35 /**
36  * @brief ControlWrapper is a base class for custom UI controls developed in managed code (i.e. C#.NET).
37  *
38  * The implementation of the ControlWrapper must be supplied; see Internal::ControlWrapper for more details.
39  */
40 class DALI_IMPORT_API ControlWrapper : public Control
41 {
42
43 public:
44
45   /**
46    * @brief Create a new instance of a ControlWrapper.
47    *
48    * @return A handle to a new ControlWrapper.
49    */
50   static ControlWrapper New( Internal::ControlWrapper& implementation );
51
52   /**
53    * @brief Creates an empty ControlWrapper handle.
54    */
55   ControlWrapper();
56
57   /**
58    * @brief Destructor
59    *
60    * This is non-virtual since derived Handle types must not contain data or virtual methods.
61    */
62   ~ControlWrapper();
63
64   /**
65    * @brief Copy constructor.
66    *
67    * Creates another handle that points to the same real object
68    * @param[in] handle Handle to the copied object
69    */
70   ControlWrapper( const ControlWrapper& handle );
71
72   /**
73    * @brief Assignment operator.
74    *
75    * Changes this handle to point to another real object
76    * @param[in] handle Handle to the object
77    * @return A reference to this
78    */
79   ControlWrapper& operator=( const ControlWrapper& handle );
80
81   /**
82    * @brief Downcast an Object handle to ControlWrapper.
83    *
84    * If handle points to a ControlWrapper the
85    * downcast produces valid handle. If not the returned handle is left uninitialized.
86    * @param[in] handle Handle to an object
87    * @return handle to a ControlWrapper or an uninitialized handle
88    */
89   static ControlWrapper DownCast( BaseHandle handle );
90
91 public: // Not intended for application developers
92
93   /**
94    * @brief Creates a handle using the Toolkit::Internal implementation.
95    *
96    * @param[in]  implementation  The Control implementation.
97    */
98   ControlWrapper( Internal::ControlWrapper& implementation );
99
100   /**
101    * @brief Allows the creation of this Control from an Internal::CustomActor pointer.
102    *
103    * @param[in]  internal  A pointer to the internal CustomActor.
104    */
105   explicit ControlWrapper( Dali::Internal::CustomActor* internal );
106 };
107
108 } // namespace Toolkit
109
110 } // namespace Dali
111
112 #endif // DALI_TOOLKIT_CONTROL_WRAPPER_H