Reduce prediction error for blendshape
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / internal / model-components / material-modify-observer.h
1 #ifndef DALI_SCENE3D_MODEL_COMPONENTS_MATERIAL_MODIFY_OBSERVER_H
2 #define DALI_SCENE3D_MODEL_COMPONENTS_MATERIAL_MODIFY_OBSERVER_H
3
4 /*
5  * Copyright (c) 2023 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 // EXTERNAL INCLUDES
22 #include <dali/devel-api/common/bitwise-enum.h>
23
24 // INTERNAL INCLUDES
25 #include <dali-scene3d/public-api/model-components/material.h>
26
27 namespace Dali
28 {
29 namespace Scene3D
30 {
31 namespace Internal
32 {
33 /**
34  * @brief MaterialModifyObserver is a class to notify that the material has changed.
35  */
36 class MaterialModifyObserver
37 {
38 public:
39   /**
40    * @brief Flag which informations are changed.
41    */
42   enum ModifyFlag
43   {
44     NONE    = 0,
45     TEXTURE = 1 << 0,
46     SHADER  = 1 << 1,
47     UNIFORM = 1 << 2,
48   };
49
50   /**
51     * @brief Notify to observers that texture is changed.
52     *
53     * @param[in] material The handle material itself. TODO : Are we need this?
54     * @param[in] flag Flag which informations are changed.
55     */
56   virtual void OnMaterialModified(Dali::Scene3D::Material material, ModifyFlag flag) = 0;
57 };
58
59 } // namespace Internal
60
61 } // namespace Scene3D
62
63 // specialization has to be done in the same namespace
64 template<>
65 struct EnableBitMaskOperators<Scene3D::Internal::MaterialModifyObserver::ModifyFlag>
66 {
67   static const bool ENABLE = true;
68 };
69
70 } // namespace Dali
71
72 #endif // DALI_SCENE3D_MODEL_COMPONENTS_MATERIAL_MODIFY_OBSERVER_H