2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include <dali/public-api/text/font.h>
22 #include <dali/internal/event/text/character-impl.h>
23 #include <dali/internal/event/text/font-impl.h>
24 #include <dali/internal/event/text/text-impl.h>
29 Font::Metrics::Metrics()
30 : mImpl( new Font::Metrics::Impl() )
34 Font::Metrics::~Metrics()
39 Font::Metrics::Metrics( const Font::Metrics& metrics )
40 : mImpl( new Font::Metrics::Impl() )
42 mImpl->advance = metrics.mImpl->advance;
43 mImpl->bearing = metrics.mImpl->bearing;
44 mImpl->width = metrics.mImpl->width;
45 mImpl->height = metrics.mImpl->height;
48 Font::Metrics& Font::Metrics::operator=( const Font::Metrics& metrics )
50 if( &metrics != this )
52 mImpl->advance = metrics.mImpl->advance;
53 mImpl->bearing = metrics.mImpl->bearing;
54 mImpl->width = metrics.mImpl->width;
55 mImpl->height = metrics.mImpl->height;
60 float Font::Metrics::GetAdvance() const
62 return mImpl->advance;
65 float Font::Metrics::GetBearing() const
67 return mImpl->bearing;
70 float Font::Metrics::GetWidth() const
75 float Font::Metrics::GetHeight() const
80 Font::Metrics::Metrics( const Impl& implementation )
81 : mImpl( new Font::Metrics::Impl() )
83 mImpl->advance = implementation.advance;
84 mImpl->bearing = implementation.bearing;
85 mImpl->width = implementation.width;
86 mImpl->height = implementation.height;
93 Font::Font(Internal::Font* internal)
94 : BaseHandle(internal)
98 Font Font::New( const FontParameters& fontParameters )
100 Internal::Font* internal = Internal::Font::New(fontParameters.GetFamilyName(), fontParameters.GetStyle(), fontParameters.GetSize() );
101 return Font(internal);
104 Font Font::DownCast( BaseHandle handle )
106 return Font( dynamic_cast<Dali::Internal::Font*>(handle.GetObjectPtr()) );
109 const std::string Font::GetFamilyForText(const Text& text)
111 return Internal::Font::GetFamilyForText( Internal::GetTextArray( text ) );
118 PixelSize Font::GetLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, const CapsHeight& capsHeight)
120 return Internal::Font::GetLineHeightFromCapsHeight(fontFamily,fontStyle,capsHeight);
123 std::vector<std::string> Font::GetInstalledFonts( FontListMode mode )
125 std::vector<std::string> fontList;
126 Internal::Font::GetInstalledFonts( mode, fontList );
128 // VCC TODO: deprecate this method and add void Font::GetInstalledFonts( FontListMode mode, std::vector<std::string>& fontList )
132 float Font::MeasureTextWidth(const Text& text, float textHeightPx) const
134 return GetImplementation(*this).MeasureTextWidth( Internal::GetTextArray( text ), textHeightPx );
137 float Font::MeasureTextHeight(const Text& text, float textWidthPx) const
139 return GetImplementation(*this).MeasureTextHeight( Internal::GetTextArray( text ), textWidthPx );
142 Vector3 Font::MeasureText(const Text& text) const
144 return GetImplementation(*this).MeasureText( Internal::GetTextArray( text ) );
147 bool Font::AllGlyphsSupported(const Text& text) const
149 return GetImplementation(*this).AllGlyphsSupported( Internal::GetTextArray( text ) );
152 float Font::GetLineHeight() const
154 return GetImplementation(*this).GetLineHeight() * GetImplementation(*this).GetUnitsToPixels();
157 float Font::GetAscender() const
159 return GetImplementation(*this).GetAscender() * GetImplementation(*this).GetUnitsToPixels();
162 float Font::GetUnderlineThickness() const
164 return GetImplementation(*this).GetUnderlineThickness() * GetImplementation(*this).GetUnitsToPixels();
167 float Font::GetUnderlinePosition() const
169 return GetImplementation(*this).GetUnderlinePosition() * GetImplementation(*this).GetUnitsToPixels();
172 Font::Metrics Font::GetMetrics(const Character& character) const
174 Font::Metrics::Impl metricsImpl;
175 GetImplementation(*this).GetMetrics(character, metricsImpl);
176 return Font::Metrics( metricsImpl );
179 bool Font::IsDefaultSystemFont() const
181 return GetImplementation(*this).IsDefaultSystemFont();
184 bool Font::IsDefaultSystemSize() const
186 return GetImplementation(*this).IsDefaultSystemSize();
189 const std::string& Font::GetName() const
191 return GetImplementation(*this).GetName();
194 const std::string& Font::GetStyle() const
196 return GetImplementation(*this).GetStyle();
199 float Font::GetPointSize() const
201 return GetImplementation(*this).GetPointSize();
204 unsigned int Font::GetPixelSize() const
206 return GetImplementation(*this).GetPixelSize();
209 unsigned int Font::PointsToPixels( float pointSize )
211 return Internal::Font::PointsToPixels( pointSize );
214 float Font::PixelsToPoints( unsigned int pixelsSize )
216 return Internal::Font::PixelsToPoints( pixelsSize );