Merge "Set label padding in case of ResizePolicy::USE_NATURAL_SIZE - we don't...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / text-view.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 // CLASS HEADER
19 #include <dali-toolkit/internal/text/text-view.h>
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/math/vector2.h>
23
24 namespace Dali
25 {
26
27 namespace Toolkit
28 {
29
30 namespace Text
31 {
32
33 struct View::Impl
34 {
35   VisualModelPtr mVisualModel;
36 };
37
38 View::View()
39 : mImpl( NULL )
40 {
41   mImpl = new View::Impl();
42 }
43
44 View::~View()
45 {
46   delete mImpl;
47 }
48
49 void View::SetVisualModel( VisualModelPtr visualModel )
50 {
51   mImpl->mVisualModel = visualModel;
52 }
53
54 const Vector4& View::GetTextColor() const
55 {
56   if ( mImpl->mVisualModel )
57   {
58     VisualModel& model = *mImpl->mVisualModel;
59     return model.GetTextColor();
60   }
61   return Vector4::ZERO;
62 }
63
64 const Vector2& View::GetShadowOffset() const
65 {
66   if ( mImpl->mVisualModel )
67   {
68     VisualModel& model = *mImpl->mVisualModel;
69     return model.GetShadowOffset();
70   }
71   return Vector2::ZERO;
72 }
73
74 const Vector4& View::GetShadowColor() const
75 {
76   if ( mImpl->mVisualModel )
77   {
78     VisualModel& model = *mImpl->mVisualModel;
79     return model.GetShadowColor();
80   }
81   return Vector4::ZERO;
82 }
83
84 const Vector4& View::GetUnderlineColor() const
85 {
86   if ( mImpl->mVisualModel )
87   {
88     VisualModel& model = *mImpl->mVisualModel;
89     return model.GetUnderlineColor();
90   }
91   return Vector4::ZERO;
92 }
93
94 bool View::IsUnderlineEnabled() const
95 {
96   if ( mImpl->mVisualModel )
97   {
98     VisualModel& model = *mImpl->mVisualModel;
99     return model.IsUnderlineEnabled();
100   }
101   return false;
102 }
103
104 float View::GetUnderlineHeight() const
105 {
106   if ( mImpl->mVisualModel )
107   {
108     VisualModel& model = *mImpl->mVisualModel;
109     return model.GetUnderlineHeight();
110   }
111   return 0.0f;
112 }
113
114 Length View::GetNumberOfGlyphs() const
115 {
116   if( mImpl->mVisualModel )
117   {
118     VisualModel& model = *mImpl->mVisualModel;
119
120     Length glyphCount = model.GetNumberOfGlyphs();
121     Length positionCount = model.GetNumberOfGlyphPositions();
122
123     DALI_ASSERT_DEBUG( positionCount <= glyphCount && "Invalid glyph positions in Model" );
124
125     return (positionCount < glyphCount) ? positionCount : glyphCount;
126   }
127
128   return 0;
129 }
130
131 void View::GetGlyphs( GlyphInfo* glyphs,
132                       GlyphIndex glyphIndex,
133                       Length numberOfGlyphs ) const
134 {
135   if( mImpl->mVisualModel )
136   {
137     mImpl->mVisualModel->GetGlyphs( glyphs, glyphIndex, numberOfGlyphs );
138   }
139 }
140
141 void View::GetGlyphPositions( Vector2* glyphPositions,
142                               GlyphIndex glyphIndex,
143                               Length numberOfGlyphs ) const
144 {
145   if( mImpl->mVisualModel )
146   {
147     mImpl->mVisualModel->GetGlyphPositions( glyphPositions, glyphIndex, numberOfGlyphs );
148   }
149 }
150
151 } // namespace Text
152
153 } // namespace Toolkit
154
155 } // namespace Dali