updated licenses info
[platform/core/uifw/lottie-player.git] / src / vector / vdasher.h
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd. All rights reserved.
3  *
4  * Licensed under the LGPL License, Version 2.1 (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  *     https://www.gnu.org/licenses/
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 #ifndef VDASHER_H
18 #define VDASHER_H
19 #include "vpath.h"
20
21 V_BEGIN_NAMESPACE
22
23 class VDasher {
24 public:
25     VDasher(const float *dashArray, int size);
26     VPath dashed(const VPath &path);
27
28 private:
29     void moveTo(const VPointF &p);
30     void lineTo(const VPointF &p);
31     void cubicTo(const VPointF &cp1, const VPointF &cp2, const VPointF &e);
32     void close();
33     void addLine(const VPointF &p);
34     void addCubic(const VPointF &cp1, const VPointF &cp2, const VPointF &e);
35     void updateActiveSegment();
36
37 private:
38     struct Dash {
39         float length;
40         float gap;
41     };
42     const VDasher::Dash *mDashArray;
43     int                  mArraySize{0};
44     VPointF              mCurPt;
45     int                  mIndex{0}; /* index to the dash Array */
46     float                mCurrentLength;
47     bool                 mDiscard;
48     float                mDashOffset{0};
49     VPath                mResult;
50     bool                 mStartNewSegment=true;
51 };
52
53 V_END_NAMESPACE
54
55 #endif  // VDASHER_H