From 66521be1c480614a631f58d77be161e1c247e35f Mon Sep 17 00:00:00 2001 From: Seoyeon Kim Date: Wed, 19 Apr 2017 16:52:38 +0900 Subject: [PATCH] Add PIXEL_SIZE and ELLIPSIS property in text-controls - PIXEL_SIZE property is the size of font in pixels. - ELLIPSIS property is to enable the ellipsis in TextLabel. Change-Id: Ia0a08b0f20a54301a0a3df28d35a09585ac79773 Signed-off-by: Seoyeon Kim --- .../src/dali-toolkit/utc-Dali-TextEditor.cpp | 6 ++ .../src/dali-toolkit/utc-Dali-TextField.cpp | 6 ++ .../src/dali-toolkit/utc-Dali-TextLabel.cpp | 15 ++++ .../controls/text-controls/text-editor-devel.h | 8 ++- .../controls/text-controls/text-field-devel.h | 7 +- .../controls/text-controls/text-label-devel.h | 82 ++++++++++++++++++++++ dali-toolkit/devel-api/file.list | 1 + .../controls/text-controls/text-editor-impl.cpp | 29 +++++++- .../controls/text-controls/text-field-impl.cpp | 29 +++++++- .../controls/text-controls/text-label-impl.cpp | 51 +++++++++++++- dali-toolkit/internal/text/text-controller.cpp | 62 ++++++++++++++-- dali-toolkit/internal/text/text-controller.h | 19 +++-- dali-toolkit/internal/visuals/text/text-visual.cpp | 6 +- 13 files changed, 296 insertions(+), 25 deletions(-) create mode 100644 dali-toolkit/devel-api/controls/text-controls/text-label-devel.h diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp index ae4b526..a37f30c 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp @@ -92,6 +92,7 @@ const char* const PROPERTY_NAME_SMOOTH_SCROLL_DURATION = "smoothSc const char* const PROPERTY_NAME_ENABLE_SCROLL_BAR = "enableScrollBar"; const char* const PROPERTY_NAME_SCROLL_BAR_SHOW_DURATION = "scrollBarShowDuration"; const char* const PROPERTY_NAME_SCROLL_BAR_FADE_DURATION = "scrollBarFadeDuration"; +const char* const PROPERTY_NAME_PIXEL_SIZE = "pixelSize"; const int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND; @@ -429,6 +430,7 @@ int UtcDaliTextEditorGetPropertyP(void) DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_ENABLE_SCROLL_BAR ) == DevelTextEditor::Property::ENABLE_SCROLL_BAR ); DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_SCROLL_BAR_SHOW_DURATION ) == DevelTextEditor::Property::SCROLL_BAR_SHOW_DURATION ); DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_SCROLL_BAR_FADE_DURATION ) == DevelTextEditor::Property::SCROLL_BAR_FADE_DURATION ); + DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_PIXEL_SIZE ) == DevelTextEditor::Property::PIXEL_SIZE ); END_TEST; } @@ -717,6 +719,10 @@ int UtcDaliTextEditorSetPropertyP(void) editor.SetProperty( DevelTextEditor::Property::SCROLL_BAR_FADE_DURATION, 0.2f ); DALI_TEST_EQUALS( editor.GetProperty( DevelTextEditor::Property::SCROLL_BAR_FADE_DURATION ), 0.2f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + // Check the pixel size of font + editor.SetProperty( DevelTextEditor::Property::PIXEL_SIZE, 20.f ); + DALI_TEST_EQUALS( editor.GetProperty( DevelTextEditor::Property::PIXEL_SIZE ), 20.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp index 785ad78..cd6fe19 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp @@ -97,6 +97,7 @@ const char* const PROPERTY_NAME_OUTLINE = "outline" const char* const PROPERTY_NAME_INPUT_OUTLINE = "inputOutline"; const char* const PROPERTY_NAME_HIDDEN_INPUT_SETTINGS = "hiddenInputSettings"; +const char* const PROPERTY_NAME_PIXEL_SIZE = "pixelSize"; const int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND; @@ -503,6 +504,7 @@ int UtcDaliTextFieldGetPropertyP(void) DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_OUTLINE ) == TextField::Property::OUTLINE ); DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_INPUT_OUTLINE ) == TextField::Property::INPUT_OUTLINE ); DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_HIDDEN_INPUT_SETTINGS ) == DevelTextField::Property::HIDDEN_INPUT_SETTINGS ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PIXEL_SIZE ) == DevelTextField::Property::PIXEL_SIZE ); END_TEST; } @@ -837,6 +839,10 @@ int UtcDaliTextFieldSetPropertyP(void) DALI_TEST_EQUALS( hiddenMapSet.Count(), hiddenMapGet.Count(), TEST_LOCATION ); DALI_TEST_EQUALS( DaliTestCheckMaps( hiddenMapSet, hiddenMapGet ), true, TEST_LOCATION ); + // Check the pixel size of font + field.SetProperty( DevelTextField::Property::PIXEL_SIZE, 20.f ); + DALI_TEST_EQUALS( field.GetProperty( DevelTextField::Property::PIXEL_SIZE ), 20.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp index 5cd0063..85be1e3 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -21,6 +21,7 @@ #include #include +#include using namespace Dali; using namespace Toolkit; @@ -64,6 +65,9 @@ const char* const PROPERTY_NAME_SHADOW = "shadow"; const char* const PROPERTY_NAME_EMBOSS = "emboss"; const char* const PROPERTY_NAME_OUTLINE = "outline"; +const char* const PROPERTY_NAME_PIXEL_SIZE = "pixelSize"; +const char* const PROPERTY_NAME_ELLIPSIS = "ellipsis"; + const int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND; const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); const unsigned int EMOJI_FONT_SIZE = 3840u; // 60 * 64 @@ -203,6 +207,8 @@ int UtcDaliToolkitTextLabelGetPropertyP(void) DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW ) == TextLabel::Property::SHADOW ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_EMBOSS ) == TextLabel::Property::EMBOSS ); DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_OUTLINE ) == TextLabel::Property::OUTLINE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_PIXEL_SIZE ) == DevelTextLabel::Property::PIXEL_SIZE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_ELLIPSIS ) == DevelTextLabel::Property::ELLIPSIS ); END_TEST; } @@ -415,6 +421,15 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) label.SetProperty( TextLabel::Property::OUTLINE, "Outline properties" ); DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::OUTLINE ), std::string("Outline properties"), TEST_LOCATION ); + // Check the pixel size of font + label.SetProperty( DevelTextLabel::Property::PIXEL_SIZE, 20.f ); + DALI_TEST_EQUALS( label.GetProperty( DevelTextLabel::Property::PIXEL_SIZE ), 20.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + + // Check the ellipsis property + DALI_TEST_CHECK( !label.GetProperty( DevelTextLabel::Property::ELLIPSIS ) ); + label.SetProperty( DevelTextLabel::Property::ELLIPSIS, true ); + DALI_TEST_CHECK( label.GetProperty( DevelTextLabel::Property::ELLIPSIS ) ); + END_TEST; } diff --git a/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h b/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h index fa90103..cff3a39 100644 --- a/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h +++ b/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h @@ -103,7 +103,13 @@ namespace Property * @brief name "scrollBarFadeDuration", type float * @details Sets the duration of scroll bar to fade out */ - SCROLL_BAR_FADE_DURATION + SCROLL_BAR_FADE_DURATION, + + /** + * @brief The size of font in pixels. + * @details name "pixelSize", type float + */ + PIXEL_SIZE }; } // namespace Property diff --git a/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h b/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h index eacd5aa..21e2d56 100644 --- a/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h +++ b/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h @@ -85,11 +85,16 @@ namespace Property /** * @brief Hides the input characters and instead shows a default character for password or pin entry. * @details name "hiddenInputSettings", type map. - * @SINCE_1_2.33 * @note Optional. * @see HiddenInput */ HIDDEN_INPUT_SETTINGS = INPUT_OUTLINE + 1, + + /** + * @brief The size of font in pixels. + * @details name "pixelSize", type float + */ + PIXEL_SIZE = INPUT_OUTLINE + 2, }; } // namespace Property diff --git a/dali-toolkit/devel-api/controls/text-controls/text-label-devel.h b/dali-toolkit/devel-api/controls/text-controls/text-label-devel.h new file mode 100644 index 0000000..0d0ca82 --- /dev/null +++ b/dali-toolkit/devel-api/controls/text-controls/text-label-devel.h @@ -0,0 +1,82 @@ +#ifndef DALI_TOOLKIT_TEXT_LABEL_DEVEL_H +#define DALI_TOOLKIT_TEXT_LABEL_DEVEL_H + +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// INTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace Toolkit +{ + +namespace DevelTextLabel +{ + +namespace Property +{ + enum Type + { + RENDERING_BACKEND = Dali::Toolkit::TextLabel::Property::RENDERING_BACKEND, + TEXT = Dali::Toolkit::TextLabel::Property::TEXT, + FONT_FAMILY = Dali::Toolkit::TextLabel::Property::FONT_FAMILY, + FONT_STYLE = Dali::Toolkit::TextLabel::Property::FONT_STYLE, + POINT_SIZE = Dali::Toolkit::TextLabel::Property::POINT_SIZE, + MULTI_LINE = Dali::Toolkit::TextLabel::Property::MULTI_LINE, + HORIZONTAL_ALIGNMENT = Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, + VERTICAL_ALIGNMENT = Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, + TEXT_COLOR = Dali::Toolkit::TextLabel::Property::TEXT_COLOR, + SHADOW_OFFSET = Dali::Toolkit::TextLabel::Property::SHADOW_OFFSET, + SHADOW_COLOR = Dali::Toolkit::TextLabel::Property::SHADOW_COLOR, + UNDERLINE_ENABLED = Dali::Toolkit::TextLabel::Property::UNDERLINE_ENABLED, + UNDERLINE_COLOR = Dali::Toolkit::TextLabel::Property::UNDERLINE_COLOR, + UNDERLINE_HEIGHT = Dali::Toolkit::TextLabel::Property::UNDERLINE_HEIGHT, + ENABLE_MARKUP = Dali::Toolkit::TextLabel::Property::ENABLE_MARKUP, + ENABLE_AUTO_SCROLL = Dali::Toolkit::TextLabel::Property::ENABLE_AUTO_SCROLL, + AUTO_SCROLL_SPEED = Dali::Toolkit::TextLabel::Property::AUTO_SCROLL_SPEED, + AUTO_SCROLL_LOOP_COUNT = Dali::Toolkit::TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, + AUTO_SCROLL_GAP = Dali::Toolkit::TextLabel::Property::AUTO_SCROLL_GAP, + LINE_SPACING = Dali::Toolkit::TextLabel::Property::LINE_SPACING, + UNDERLINE = Dali::Toolkit::TextLabel::Property::UNDERLINE, + SHADOW = Dali::Toolkit::TextLabel::Property::SHADOW, + EMBOSS = Dali::Toolkit::TextLabel::Property::EMBOSS, + OUTLINE = Dali::Toolkit::TextLabel::Property::OUTLINE, + + /** + * @brief The size of font in pixels. + * @details name "pixelSize", type float + */ + PIXEL_SIZE = OUTLINE + 1, + + /** + * @brief Enable or disable the ellipsis. + * @details name "ellipsis", type bool + */ + ELLIPSIS = OUTLINE + 2, + }; +} // namespace Property + +} // namespace DevelText + +} // namespace Toolkit + +} // namespace Dali + +#endif // DALI_TOOLKIT_TEXT_LABEL_DEVEL_H diff --git a/dali-toolkit/devel-api/file.list b/dali-toolkit/devel-api/file.list index d7c45f5..b117871 100644 --- a/dali-toolkit/devel-api/file.list +++ b/dali-toolkit/devel-api/file.list @@ -132,6 +132,7 @@ devel_api_text_controls_header_files = \ $(devel_api_src_dir)/controls/text-controls/hidden-input-properties.h \ $(devel_api_src_dir)/controls/text-controls/text-editor-devel.h \ $(devel_api_src_dir)/controls/text-controls/text-field-devel.h \ + $(devel_api_src_dir)/controls/text-controls/text-label-devel.h \ $(devel_api_src_dir)/controls/text-controls/text-selection-popup.h \ $(devel_api_src_dir)/controls/text-controls/text-selection-toolbar.h diff --git a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp index c08b897..5be99a6 100644 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp @@ -133,6 +133,7 @@ DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "smoothScrollDuration", DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "enableScrollBar", BOOLEAN, ENABLE_SCROLL_BAR ) DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "scrollBarShowDuration", FLOAT, SCROLL_BAR_SHOW_DURATION ) DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "scrollBarFadeDuration", FLOAT, SCROLL_BAR_FADE_DURATION ) +DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "pixelSize", FLOAT, PIXEL_SIZE ) DALI_SIGNAL_REGISTRATION( Toolkit, TextEditor, "textChanged", SIGNAL_TEXT_CHANGED ) DALI_SIGNAL_REGISTRATION( Toolkit, TextEditor, "inputStyleChanged", SIGNAL_INPUT_STYLE_CHANGED ) @@ -231,9 +232,9 @@ void TextEditor::SetProperty( BaseObject* object, Property::Index index, const P const float pointSize = value.Get< float >(); DALI_LOG_INFO( gLogFilter, Debug::General, "TextEditor %p POINT_SIZE %f\n", impl.mController.Get(), pointSize ); - if( !Equals( impl.mController->GetDefaultPointSize(), pointSize ) ) + if( !Equals( impl.mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ), pointSize ) ) { - impl.mController->SetDefaultPointSize( pointSize ); + impl.mController->SetDefaultFontSize( pointSize, Text::Controller::POINT_SIZE ); } } break; @@ -645,6 +646,20 @@ void TextEditor::SetProperty( BaseObject* object, Property::Index index, const P impl.mAnimationPeriod.durationSeconds = duration; break; } + case Toolkit::DevelTextEditor::Property::PIXEL_SIZE: + { + if( impl.mController ) + { + const float pixelSize = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextEditor %p PIXEL_SIZE %f\n", impl.mController.Get(), pixelSize ); + + if( !Equals( impl.mController->GetDefaultFontSize( Text::Controller::PIXEL_SIZE ), pixelSize ) ) + { + impl.mController->SetDefaultFontSize( pixelSize, Text::Controller::PIXEL_SIZE ); + } + } + break; + } } // switch } // texteditor } @@ -702,7 +717,7 @@ Property::Value TextEditor::GetProperty( BaseObject* object, Property::Index ind { if( impl.mController ) { - value = impl.mController->GetDefaultPointSize(); + value = impl.mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ); } break; } @@ -971,6 +986,14 @@ Property::Value TextEditor::GetProperty( BaseObject* object, Property::Index ind value = impl.mAnimationPeriod.durationSeconds; break; } + case Toolkit::DevelTextEditor::Property::PIXEL_SIZE: + { + if( impl.mController ) + { + value = impl.mController->GetDefaultFontSize( Text::Controller::PIXEL_SIZE ); + } + break; + } } //switch } diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index e8ff11f..c7c9c4b 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -138,6 +138,7 @@ DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "inputEmboss", DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "outline", MAP, OUTLINE ) DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "inputOutline", MAP, INPUT_OUTLINE ) DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextField, "hiddenInputSettings", MAP, HIDDEN_INPUT_SETTINGS ) +DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextField, "pixelSize", FLOAT, PIXEL_SIZE ) DALI_SIGNAL_REGISTRATION( Toolkit, TextField, "textChanged", SIGNAL_TEXT_CHANGED ) DALI_SIGNAL_REGISTRATION( Toolkit, TextField, "maxLengthReached", SIGNAL_MAX_LENGTH_REACHED ) @@ -255,9 +256,9 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr const float pointSize = value.Get< float >(); DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p POINT_SIZE %f\n", impl.mController.Get(), pointSize ); - if( !Equals( impl.mController->GetDefaultPointSize(), pointSize ) ) + if( !Equals( impl.mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ), pointSize ) ) { - impl.mController->SetDefaultPointSize( pointSize ); + impl.mController->SetDefaultFontSize( pointSize, Text::Controller::POINT_SIZE ); } } break; @@ -735,6 +736,20 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr } break; } + case Toolkit::DevelTextField::Property::PIXEL_SIZE: + { + if( impl.mController ) + { + const float pixelSize = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PIXEL_SIZE %f\n", impl.mController.Get(), pixelSize ); + + if( !Equals( impl.mController->GetDefaultFontSize( Text::Controller::PIXEL_SIZE ), pixelSize ) ) + { + impl.mController->SetDefaultFontSize( pixelSize, Text::Controller::PIXEL_SIZE ); + } + } + break; + } } // switch } // textfield } @@ -804,7 +819,7 @@ Property::Value TextField::GetProperty( BaseObject* object, Property::Index inde { if( impl.mController ) { - value = impl.mController->GetDefaultPointSize(); + value = impl.mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ); } break; } @@ -1105,6 +1120,14 @@ Property::Value TextField::GetProperty( BaseObject* object, Property::Index inde value = map; break; } + case Toolkit::DevelTextField::Property::PIXEL_SIZE: + { + if( impl.mController ) + { + value = impl.mController->GetDefaultFontSize( Text::Controller::PIXEL_SIZE ); + } + break; + } } //switch } diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp index 3d161e0..de5c097 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -20,11 +20,13 @@ // EXTERNAL INCLUDES #include +#include #include // INTERNAL INCLUDES #include #include +#include #include #include #include @@ -105,6 +107,8 @@ DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underline", MAP, DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "shadow", MAP, SHADOW ) DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "emboss", MAP, EMBOSS ) DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "outline", MAP, OUTLINE ) +DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextLabel, "pixelSize", FLOAT, PIXEL_SIZE ) +DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextLabel, "ellipsis", BOOLEAN, ELLIPSIS ) DALI_TYPE_REGISTRATION_END() @@ -188,9 +192,9 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr { const float pointSize = value.Get< float >(); - if( !Equals( impl.mController->GetDefaultPointSize(), pointSize ) ) + if( !Equals( impl.mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ), pointSize ) ) { - impl.mController->SetDefaultPointSize( pointSize ); + impl.mController->SetDefaultFontSize( pointSize, Text::Controller::POINT_SIZE ); } } break; @@ -422,6 +426,31 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr } break; } + case Toolkit::DevelTextLabel::Property::PIXEL_SIZE: + { + if( impl.mController ) + { + const float pixelSize = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextLabel %p PIXEL_SIZE %f\n", impl.mController.Get(), pixelSize ); + + if( !Equals( impl.mController->GetDefaultFontSize( Text::Controller::PIXEL_SIZE ), pixelSize ) ) + { + impl.mController->SetDefaultFontSize( pixelSize, Text::Controller::PIXEL_SIZE ); + } + } + break; + } + case Toolkit::DevelTextLabel::Property::ELLIPSIS: + { + if( impl.mController ) + { + const bool ellipsis = value.Get(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextLabel %p ELLIPSIS %d\n", impl.mController.Get(), ellipsis ); + + impl.mController->SetTextElideEnabled( ellipsis ); + } + break; + } } } } @@ -469,7 +498,7 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde { if( impl.mController ) { - value = impl.mController->GetDefaultPointSize(); + value = impl.mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ); } break; } @@ -631,6 +660,22 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde GetOutlineProperties( impl.mController, value, Text::EffectStyle::DEFAULT ); break; } + case Toolkit::DevelTextLabel::Property::PIXEL_SIZE: + { + if( impl.mController ) + { + value = impl.mController->GetDefaultFontSize( Text::Controller::PIXEL_SIZE ); + } + break; + } + case Toolkit::DevelTextLabel::Property::ELLIPSIS: + { + if( impl.mController ) + { + value = impl.mController->IsTextElideEnabled(); + } + break; + } } } diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index d18f556..5e40058 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -24,6 +24,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include @@ -685,15 +686,38 @@ FontSlant Controller::GetDefaultFontSlant() const return TextAbstraction::FontSlant::NORMAL; } -void Controller::SetDefaultPointSize( float pointSize ) +void Controller::SetDefaultFontSize( float fontSize, FontSizeType type ) { if( NULL == mImpl->mFontDefaults ) { mImpl->mFontDefaults = new FontDefaults(); } - mImpl->mFontDefaults->mDefaultPointSize = pointSize; - mImpl->mFontDefaults->sizeDefined = true; + switch( type ) + { + case POINT_SIZE: + { + mImpl->mFontDefaults->mDefaultPointSize = fontSize; + mImpl->mFontDefaults->sizeDefined = true; + break; + } + case PIXEL_SIZE: + { + // Point size = Pixel size * 72 / DPI + unsigned int horizontalDpi = 0u; + unsigned int verticalDpi = 0u; + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.GetDpi( horizontalDpi, verticalDpi ); + + mImpl->mFontDefaults->mDefaultPointSize = ( fontSize * 72 ) / horizontalDpi; + mImpl->mFontDefaults->sizeDefined = true; + break; + } + default: + { + DALI_ASSERT_ALWAYS( false ); + } + } // Clear the font-specific data ClearFontData(); @@ -701,14 +725,38 @@ void Controller::SetDefaultPointSize( float pointSize ) mImpl->RequestRelayout(); } -float Controller::GetDefaultPointSize() const +float Controller::GetDefaultFontSize( FontSizeType type ) const { + float value = 0.0f; if( NULL != mImpl->mFontDefaults ) { - return mImpl->mFontDefaults->mDefaultPointSize; + switch( type ) + { + case POINT_SIZE: + { + value = mImpl->mFontDefaults->mDefaultPointSize; + break; + } + case PIXEL_SIZE: + { + // Pixel size = Point size * DPI / 72 + unsigned int horizontalDpi = 0u; + unsigned int verticalDpi = 0u; + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.GetDpi( horizontalDpi, verticalDpi ); + + value = mImpl->mFontDefaults->mDefaultPointSize * horizontalDpi / 72; + break; + } + default: + { + DALI_ASSERT_ALWAYS( false ); + } + } + return value; } - return 0.0f; + return value; } void Controller::SetDefaultColor( const Vector4& color ) @@ -1219,7 +1267,7 @@ float Controller::GetInputFontPointSize() const } // Return the default font's point size if there is no EventData. - return GetDefaultPointSize(); + return GetDefaultFontSize( Text::Controller::POINT_SIZE ); } void Controller::SetInputLineSpacing( float lineSpacing ) diff --git a/dali-toolkit/internal/text/text-controller.h b/dali-toolkit/internal/text/text-controller.h index 96856ef..7301e70 100644 --- a/dali-toolkit/internal/text/text-controller.h +++ b/dali-toolkit/internal/text/text-controller.h @@ -121,6 +121,15 @@ public: // Enumerated types. PLACEHOLDER_TYPE_INACTIVE, }; + /** + * @brief Enumeration for Font Size Type. + */ + enum FontSizeType + { + POINT_SIZE, // The size of font in points. + PIXEL_SIZE // The size of font in pixels. + }; + struct NoTextTap { enum Action @@ -502,18 +511,20 @@ public: // Default style & Input style FontSlant GetDefaultFontSlant() const; /** - * @brief Set the default point size. + * @brief Set the default font size. * - * @param[in] pointSize The default point size. + * @param[in] size The default font size. + * @param[in] type The font size type is point size or pixel size */ - void SetDefaultPointSize( float pointSize ); + void SetDefaultFontSize( float fontSize, FontSizeType type ); /** * @brief Retrieve the default point size. * + * @param[in] type The font size type * @return The default point size. */ - float GetDefaultPointSize() const; + float GetDefaultFontSize( FontSizeType type ) const; /** * @brief Sets the text's default color. diff --git a/dali-toolkit/internal/visuals/text/text-visual.cpp b/dali-toolkit/internal/visuals/text/text-visual.cpp index 77a680f..9668ec8 100644 --- a/dali-toolkit/internal/visuals/text/text-visual.cpp +++ b/dali-toolkit/internal/visuals/text/text-visual.cpp @@ -248,7 +248,7 @@ void TextVisual::DoCreatePropertyMap( Property::Map& map ) const GetFontStyleProperty( mController, value, Text::FontStyle::DEFAULT ); map.Insert( Toolkit::TextVisual::Property::FONT_STYLE, value ); - map.Insert( Toolkit::TextVisual::Property::POINT_SIZE, mController->GetDefaultPointSize() ); + map.Insert( Toolkit::TextVisual::Property::POINT_SIZE, mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ) ); map.Insert( Toolkit::TextVisual::Property::MULTI_LINE, mController->IsMultiLineEnabled() ); @@ -379,9 +379,9 @@ void TextVisual::DoSetProperty( Dali::Property::Index index, const Dali::Propert case Toolkit::TextVisual::Property::POINT_SIZE: { const float pointSize = propertyValue.Get(); - if( !Equals( mController->GetDefaultPointSize(), pointSize ) ) + if( !Equals( mController->GetDefaultFontSize( Text::Controller::POINT_SIZE ), pointSize ) ) { - mController->SetDefaultPointSize( pointSize ); + mController->SetDefaultFontSize( pointSize, Text::Controller::POINT_SIZE ); } break; } -- 2.7.4