DirectRendering:
[platform/core/uifw/dali-core.git] / dali / public-api / actors / drawable-actor.h
1 #ifndef DALI_DRAWABLE_ACTOR_H
2 #define DALI_DRAWABLE_ACTOR_H
3
4 /*
5  * Copyright (c) 2022 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/public-api/actors/actor.h>
23 #include <dali/public-api/signals/render-callback.h>
24
25 // EXTERNAL INCLUDES
26 #include <memory>
27
28 namespace Dali
29 {
30 namespace Internal
31 {
32 class DrawableActor;
33 }
34
35 /**
36  * @class DrawableActor
37  *
38  * DrawableActor is a special type of Actor that allows attaching
39  * DrawableCallback in order to pass custom native graphics API
40  * calls (like GLES).
41  *
42  * @SINCE_2_1.15
43  */
44 class DALI_CORE_API DrawableActor : public Actor
45 {
46 public:
47   /**
48    * @brief Creates new DrawableActor instance
49    *
50    * @SINCE_2_1.15
51    * @param[in] callback Reference to the valid DrawableCallback object
52    * @return Handle to the new DrawableActor
53    */
54   static DrawableActor New(RenderCallback& callback);
55
56   /**
57    * @brief Constructor
58    *
59    * @SINCE_2_1.15
60    */
61   DrawableActor() = default;
62
63 private:
64   explicit DrawableActor(Internal::DrawableActor* internal);
65 };
66 } // namespace Dali
67
68 #endif // DALI_DRAWABLE_ACTOR_H