From: ssabah Date: Wed, 28 Dec 2022 20:33:19 +0000 (+0300) Subject: Add GetSpanType API X-Git-Tag: dali_2.2.10~8^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=42a903f57b518513c174d05212c117c7144588fa;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Add GetSpanType API Add GetSpanType and SpanType enum This API help casting from BaseSpan to one of sub classes Change-Id: I75399a5dfba6d74148951fdd14b57889b86c738f --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Text-BaseSpan.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Text-BaseSpan.cpp index d7d1e15..f157546 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Text-BaseSpan.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Text-BaseSpan.cpp @@ -21,7 +21,14 @@ #include #include +#include +#include +#include +#include #include +#include +#include +#include using namespace Dali; using namespace Toolkit; @@ -39,3 +46,47 @@ int UtcDaliToolkitTextBaseSpanDownCast(void) END_TEST; } + +int UtcDaliToolkitTextBaseSpanGetSpanType(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextBaseSpanGetSpanType"); + + Text::BaseSpan foregroundColorSpan = Text::ForegroundColorSpan::New(Color::GREEN); + DALI_TEST_CHECK(foregroundColorSpan); + DALI_TEST_EQUALS(foregroundColorSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::FOREGROUND_COLOR, TEST_LOCATION); + + Text::BaseSpan backgroundColorSpan = Text::BackgroundColorSpan::New(Color::GREEN); + DALI_TEST_CHECK(backgroundColorSpan); + DALI_TEST_EQUALS(backgroundColorSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::BACKGROUND_COLOR, TEST_LOCATION); + + Text::BaseSpan fontSpan = Text::FontSpan::New("TizenSans", + 45.0f, + Dali::TextAbstraction::FontWeight::BOLD, + Dali::TextAbstraction::FontWidth::SEMI_CONDENSED, + Dali::TextAbstraction::FontSlant::OBLIQUE); + DALI_TEST_CHECK(fontSpan); + DALI_TEST_EQUALS(fontSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::FONT, TEST_LOCATION); + + Text::BaseSpan boldSpan = Dali::Toolkit::Text::BoldSpan::New(); + DALI_TEST_CHECK(boldSpan); + DALI_TEST_EQUALS(boldSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::BOLD, TEST_LOCATION); + + Text::BaseSpan italicSpan = Text::ItalicSpan::New(); + DALI_TEST_CHECK(italicSpan); + DALI_TEST_EQUALS(italicSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::ITALIC, TEST_LOCATION); + + Text::BaseSpan underlineSpan = Text::UnderlineSpan::NewDashed(Color::GREEN, 5.0f, 2.0f, 3.0f); + DALI_TEST_CHECK(underlineSpan); + DALI_TEST_EQUALS(underlineSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::UNDERLINE, TEST_LOCATION); + + Text::BaseSpan strikethroughSpan = Text::StrikethroughSpan::New(Color::GREEN, 5.0f); + DALI_TEST_CHECK(strikethroughSpan); + DALI_TEST_EQUALS(strikethroughSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::STRIKETHROUGH, TEST_LOCATION); + + Text::BaseSpan characterSpacingSpan = Text::CharacterSpacingSpan::New(5.2f); + DALI_TEST_CHECK(characterSpacingSpan); + DALI_TEST_EQUALS(characterSpacingSpan.GetSpanType(), Dali::Toolkit::Text::SpanType::Value::CHARACTER_SPACING, TEST_LOCATION); + + END_TEST; +} diff --git a/dali-toolkit/devel-api/file.list b/dali-toolkit/devel-api/file.list index 248ab7f..43d805b 100755 --- a/dali-toolkit/devel-api/file.list +++ b/dali-toolkit/devel-api/file.list @@ -263,6 +263,7 @@ SET( devel_api_text_header_files ${devel_api_src_dir}/text/spans/bold-span.h ${devel_api_src_dir}/text/spans/italic-span.h ${devel_api_src_dir}/text/spans/background-color-span.h + ${devel_api_src_dir}/text/spans/span-enumerations.h ) SET( devel_api_tool_bar_header_files diff --git a/dali-toolkit/devel-api/text/spans/base-span.cpp b/dali-toolkit/devel-api/text/spans/base-span.cpp index 6afcfd7..47b09a1 100644 --- a/dali-toolkit/devel-api/text/spans/base-span.cpp +++ b/dali-toolkit/devel-api/text/spans/base-span.cpp @@ -49,6 +49,11 @@ BaseSpan BaseSpan::DownCast(BaseHandle handle) return BaseSpan(dynamic_cast(handle.GetObjectPtr())); } +const Dali::Toolkit::Text::SpanType::Value BaseSpan::GetSpanType() const +{ + return GetImplementation(*this).GetSpanType(); +} + } // namespace Text } // namespace Toolkit diff --git a/dali-toolkit/devel-api/text/spans/base-span.h b/dali-toolkit/devel-api/text/spans/base-span.h index 535870cb..8757820 100644 --- a/dali-toolkit/devel-api/text/spans/base-span.h +++ b/dali-toolkit/devel-api/text/spans/base-span.h @@ -19,6 +19,7 @@ */ // EXTERNAL INCLUDES +#include #include #include @@ -91,6 +92,13 @@ public: ~BaseSpan(); /** + * @brief Retrive the span type. + * + * @return A span type value. + */ + const Dali::Toolkit::Text::SpanType::Value GetSpanType() const; + + /** * @brief Downcasts to a BaseSpan handle. * If handle is not a BaseSpan, the returned handle is left uninitialized. * diff --git a/dali-toolkit/devel-api/text/spans/span-enumerations.h b/dali-toolkit/devel-api/text/spans/span-enumerations.h new file mode 100644 index 0000000..37a2bca --- /dev/null +++ b/dali-toolkit/devel-api/text/spans/span-enumerations.h @@ -0,0 +1,56 @@ +#ifndef DALI_SPAN_ENUMERATIONS_H +#define DALI_SPAN_ENUMERATIONS_H + +/* + * Copyright (c) 2022 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. + * + */ + +// EXTERNAL INCLUDES +#include + +namespace Dali +{ +namespace Toolkit +{ +namespace Text +{ +namespace SpanType +{ +/** + * @brief Enumeration for type of the span. + */ +enum class Value : uint8_t +{ + BASE = 0, + FOREGROUND_COLOR, + BACKGROUND_COLOR, + FONT, + BOLD, + ITALIC, + UNDERLINE, + STRIKETHROUGH, + CHARACTER_SPACING + +}; +} // namespace SpanType + +} // namespace Text + +} // namespace Toolkit + +} // namespace Dali + +#endif // DALI_SPAN_ENUMERATIONS_H diff --git a/dali-toolkit/internal/text/spannable/spans/background-color-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/background-color-span-impl.cpp index 555759a..1bdf94f 100644 --- a/dali-toolkit/internal/text/spannable/spans/background-color-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/background-color-span-impl.cpp @@ -37,7 +37,7 @@ struct BackgroundColorSpan::Impl }; BackgroundColorSpan::BackgroundColorSpan() -: BaseSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::BACKGROUND_COLOR) { mImpl = std::make_unique(); } diff --git a/dali-toolkit/internal/text/spannable/spans/base-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/base-span-impl.cpp index 5f6498e..5c1897d 100644 --- a/dali-toolkit/internal/text/spannable/spans/base-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/base-span-impl.cpp @@ -26,14 +26,26 @@ namespace Text { namespace Internal { -BaseSpan::BaseSpan() +struct BaseSpan::Impl { + Dali::Toolkit::Text::SpanType::Value mSpanTypeValue; ///< The span type value. +}; + +BaseSpan::BaseSpan(Dali::Toolkit::Text::SpanType::Value spanType) +{ + mImpl = std::make_unique(); + mImpl->mSpanTypeValue = spanType; } BaseSpan::~BaseSpan() { } +const Dali::Toolkit::Text::SpanType::Value BaseSpan::GetSpanType() const +{ + return mImpl->mSpanTypeValue; +} + } // namespace Internal } // namespace Text diff --git a/dali-toolkit/internal/text/spannable/spans/base-span-impl.h b/dali-toolkit/internal/text/spannable/spans/base-span-impl.h index a10902e..8317e0a 100644 --- a/dali-toolkit/internal/text/spannable/spans/base-span-impl.h +++ b/dali-toolkit/internal/text/spannable/spans/base-span-impl.h @@ -58,7 +58,7 @@ protected: /** * @brief Default Constructor */ - BaseSpan(); + BaseSpan(Dali::Toolkit::Text::SpanType::Value spanType); /** * @brief Virtual destructor. @@ -67,6 +67,13 @@ protected: */ virtual ~BaseSpan(); +public: + /** + * @copydoc Dali::Toolkit::Text::SpanType::Value GetSpanType + */ + + const Dali::Toolkit::Text::SpanType::Value GetSpanType() const; + public: //Methods for internal only /** * @brief Create an instance for specific style character run and add it to its logicalModel run. @@ -76,6 +83,10 @@ public: //Methods for internal only */ virtual void CreateStyleCharacterRun(IntrusivePtr& logicalModel, const Dali::Toolkit::Text::Range& range) const = 0; +private: + struct Impl; + std::unique_ptr mImpl{nullptr}; + }; // class BaseSpan } // namespace Internal diff --git a/dali-toolkit/internal/text/spannable/spans/bold-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/bold-span-impl.cpp index 3f205a7..0f054f7 100644 --- a/dali-toolkit/internal/text/spannable/spans/bold-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/bold-span-impl.cpp @@ -30,7 +30,7 @@ namespace Text namespace Internal { BoldSpan::BoldSpan() -: BaseSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::BOLD) { } diff --git a/dali-toolkit/internal/text/spannable/spans/character-spacing-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/character-spacing-span-impl.cpp index 89ea379..484b4b4 100644 --- a/dali-toolkit/internal/text/spannable/spans/character-spacing-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/character-spacing-span-impl.cpp @@ -37,7 +37,7 @@ struct CharacterSpacingSpan::Impl }; CharacterSpacingSpan::CharacterSpacingSpan() -: BaseSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::CHARACTER_SPACING) { mImpl = std::make_unique(); } diff --git a/dali-toolkit/internal/text/spannable/spans/font-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/font-span-impl.cpp index f22d88a..4a7811f 100644 --- a/dali-toolkit/internal/text/spannable/spans/font-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/font-span-impl.cpp @@ -56,7 +56,7 @@ struct FontSpan::Impl }; FontSpan::FontSpan() -: BaseSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::FONT) { mImpl = std::make_unique(); } diff --git a/dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.cpp index 515ba89..fa00d45 100644 --- a/dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.cpp @@ -37,7 +37,7 @@ struct ForegroundColorSpan::Impl }; ForegroundColorSpan::ForegroundColorSpan() -: BaseSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::FOREGROUND_COLOR) { mImpl = std::make_unique(); } diff --git a/dali-toolkit/internal/text/spannable/spans/italic-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/italic-span-impl.cpp index 4f6ce4b..64d9eee 100644 --- a/dali-toolkit/internal/text/spannable/spans/italic-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/italic-span-impl.cpp @@ -29,7 +29,8 @@ namespace Text { namespace Internal { -ItalicSpan::ItalicSpan():BaseSpan() +ItalicSpan::ItalicSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::ITALIC) { } diff --git a/dali-toolkit/internal/text/spannable/spans/strikethrough-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/strikethrough-span-impl.cpp index fae9a46..c589cf2 100644 --- a/dali-toolkit/internal/text/spannable/spans/strikethrough-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/strikethrough-span-impl.cpp @@ -36,7 +36,7 @@ struct StrikethroughSpan::Impl }; StrikethroughSpan::StrikethroughSpan() -: BaseSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::STRIKETHROUGH) { mImpl = std::make_unique(); } diff --git a/dali-toolkit/internal/text/spannable/spans/underline-span-impl.cpp b/dali-toolkit/internal/text/spannable/spans/underline-span-impl.cpp index 32d219f..9124e02 100644 --- a/dali-toolkit/internal/text/spannable/spans/underline-span-impl.cpp +++ b/dali-toolkit/internal/text/spannable/spans/underline-span-impl.cpp @@ -36,7 +36,7 @@ struct UnderlineSpan::Impl }; UnderlineSpan::UnderlineSpan() -: BaseSpan() +: BaseSpan(Dali::Toolkit::Text::SpanType::Value::UNDERLINE) { mImpl = std::make_unique(); }