1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_PARTICLE_PARTICLE_PATTERN_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_PARTICLE_PARTICLE_PATTERN_H
18 
19 #include "core/components_ng/pattern/pattern.h"
20 #include "core/components_ng/pattern/particle/particle_model.h"
21 
22 namespace OHOS::Ace::NG {
23 
24 class ACE_EXPORT ParticlePattern : public Pattern {
25     DECLARE_ACE_TYPE(ParticlePattern, Pattern);
26 
27 public:
ParticlePattern(uint32_t emitterCount)28     ParticlePattern(uint32_t emitterCount) : emitterCount_(emitterCount) {};
29     ~ParticlePattern() override = default;
30 
31     void OnVisibleChange(bool isVisible) override;
32     void OnAttachToMainTree() override;
33     void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override;
34     void UpdateDisturbance(const std::vector<ParticleDisturbance>& disturbance);
35     void updateEmitterPosition(std::vector<EmitterProperty>& property);
36 
HaveUnVisibleParent()37     bool HaveUnVisibleParent() const
38     {
39         return haveUnVisibleParent_;
40     }
41 
SetHaveUnVisibleParent(bool haveUnVisibleParent)42     void SetHaveUnVisibleParent(bool haveUnVisibleParent)
43     {
44         haveUnVisibleParent_ = haveUnVisibleParent;
45     }
46 
GetDisturbance()47     const std::vector<ParticleDisturbance>& GetDisturbance() const
48     {
49         return disturbance_;
50     }
51 
SetDisturbance(std::vector<ParticleDisturbance> disturbance)52     void SetDisturbance(std::vector<ParticleDisturbance> disturbance)
53     {
54         disturbance_ = disturbance;
55     }
56 
GetEmitterProperty()57     const std::vector<EmitterProperty>& GetEmitterProperty() const
58     {
59         return emitterProperty_;
60     }
61 
SetEmitterProperty(std::vector<EmitterProperty> emitterProperty)62     void SetEmitterProperty(std::vector<EmitterProperty> emitterProperty)
63     {
64         emitterProperty_ = emitterProperty;
65     }
66 
GetEmitterCount()67     uint32_t GetEmitterCount() const
68     {
69         return emitterCount_;
70     }
71 
72 private:
73     bool haveUnVisibleParent_ = false;
74     std::vector<ParticleDisturbance> disturbance_;
75     std::vector<EmitterProperty> emitterProperty_;
76     uint32_t emitterCount_ = 0;
77 };
78 } // namespace OHOS::Ace
79 
80 #endif