[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / particle-system / particle-impl.cpp
1 /*
2  * Copyright (c) 2023 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali-toolkit/internal/particle-system/particle-impl.h>
20
21 namespace Dali::Toolkit::ParticleSystem::Internal
22 {
23
24 Particle::Particle(Internal::ParticleList& ownerList, uint32_t index)
25 : mOwnerList(ownerList),
26   mIndex(index)
27 {
28 }
29
30 void* Particle::Get(ParticleStreamTypeFlagBit streamBit)
31 {
32   auto streamIndex = mOwnerList.GetDefaultStreamIndex(streamBit);
33   auto dataSize    = mOwnerList.GetStreamDataTypeSize(streamIndex);
34   return reinterpret_cast<uint8_t*>(mOwnerList.GetDefaultStream(streamBit)) + (mIndex * dataSize);
35 }
36
37 void* Particle::GetByIndex(uint32_t streamIndex)
38 {
39   auto  dataSize = mOwnerList.GetStreamDataTypeSize(streamIndex);
40   auto* ptr      = reinterpret_cast<uint8_t*>(mOwnerList.GetRawStream(streamIndex));
41   return reinterpret_cast<uint8_t*>(ptr + (mIndex * dataSize));
42 }
43
44 uint32_t Particle::GetIndex() const
45 {
46   return mIndex;
47 }
48
49 } // namespace Dali::Toolkit::ParticleSystem::Internal