[dali_2.3.48] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / gradient / linear-gradient.cpp
1 /*
2  * Copyright (c) 2015 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 #include "linear-gradient.h"
19
20 namespace Dali
21 {
22 namespace Toolkit
23 {
24 namespace Internal
25 {
26 LinearGradient::LinearGradient(const Vector2& startPosition, const Vector2& endPosition)
27 : Gradient()
28 {
29   SetStartAndEndPosition(startPosition, endPosition);
30 }
31
32 LinearGradient::~LinearGradient()
33 {
34 }
35
36 void LinearGradient::SetStartAndEndPosition(const Vector2& startPosition, const Vector2& endPosition)
37 {
38   mStartPosition = startPosition;
39   mEndPosition   = endPosition;
40
41   // Calculate the transform aligning to the gradient line
42   float   dx = mEndPosition.x - mStartPosition.x;
43   float   dy = mEndPosition.y - mStartPosition.y;
44   Matrix3 alignMatrix(dy, -dx, 0.f, dx, dy, 0.f, mStartPosition.x, mStartPosition.y, 1.f);
45   alignMatrix.Invert();
46
47   mAlignmentTransform = alignMatrix;
48 }
49
50 const Vector2& LinearGradient::GetStartPosition() const
51 {
52   return mStartPosition;
53 }
54
55 const Vector2& LinearGradient::GetEndPosition() const
56 {
57   return mEndPosition;
58 }
59
60 } // namespace Internal
61
62 } // namespace Toolkit
63
64 } // namespace Dali