Spannable-Core: Add SpannableString and ForegroundColorSpan 06/282806/13
authorssabah <s.sabah@samsung.com>
Wed, 14 Sep 2022 10:26:48 +0000 (13:26 +0300)
committerssabah <s.sabah@samsung.com>
Mon, 7 Nov 2022 10:38:28 +0000 (13:38 +0300)
commit55a13c4bef040736df39ba69355db61e816f6411
tree3f58ba6636323099095602d9a7279e1a1fab3f9f
parent4b79dd131ba61d94518e4ab89d41eaf634d305c6
Spannable-Core: Add SpannableString and ForegroundColorSpan

  Create core module for Spannable
  - Interfaces: CharacterSequence, Spanned, Spannable, BaseSpan
  - Classes: SpannableString, ForegroundColorSpan, Range
  - APIs:
    - Vector<uint32_t> GetCharacters() const;
    - uint32_t GetNumberOfCharacters() const;
    - std::string ToString() const;
    - bool AttachSpan(const Dali::Toolkit::Text::BaseSpan& styleSpan, const Dali::Toolkit::Text::Range& range);
    - bool DetachSpan(const Dali::Toolkit::Text::BaseSpan& styleSpan);
    - std::vector<Dali::Toolkit::Text::BaseSpan> GetAllSpans() const;
    - void RetrieveAllSpansAndRanges(std::vector<Dali::Toolkit::Text::BaseSpan>& spans, std::vector<Dali::Toolkit::Text::Range>& ranges) const;

//Example:

    Dali::Toolkit::Text::SpannableString ss = Dali::Toolkit::Text::SpannableString::New("Hello مرحبا");

    auto chars = ss.GetCharacters();
    auto num   = ss.GetNumberOfCharacters();
    auto str   = ss.ToString();

    auto greenSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::GREEN);

    auto isAddedGreen = ss.AttachSpan(
      greenSpan,
      Dali::Toolkit::Text::Range::New(5u, 7u));

    auto isAddedBlue = ss.AttachSpan(
      Dali::Toolkit::Text::ForegroundColorSpan::New(Color::BLUE),
      Dali::Toolkit::Text::Range::New(4u, 2u));

    auto isAddedRed = ss.AttachSpan(
      Dali::Toolkit::Text::ForegroundColorSpan::New(Color::RED),
      Dali::Toolkit::Text::Range::New(15u, 2u));

    ss.DetachSpan(greenSpan);

    auto spans = ss.GetAllSpans();

    ss.DetachSpan(spans[0]);
    spans = ss.GetAllSpans();

Change-Id: I5e0df43d1a2e2afc8b11aa61d50e28b7e35036a4
37 files changed:
automated-tests/src/dali-toolkit/CMakeLists.txt
automated-tests/src/dali-toolkit/utc-Dali-Text-BaseSpan.cpp [new file with mode: 0644]
automated-tests/src/dali-toolkit/utc-Dali-Text-ForegroundColorSpan.cpp [new file with mode: 0644]
automated-tests/src/dali-toolkit/utc-Dali-Text-Range.cpp [new file with mode: 0644]
automated-tests/src/dali-toolkit/utc-Dali-Text-SpannableString.cpp [new file with mode: 0644]
dali-toolkit/devel-api/file.list
dali-toolkit/devel-api/text/character-sequence.cpp [new file with mode: 0644]
dali-toolkit/devel-api/text/character-sequence.h [new file with mode: 0644]
dali-toolkit/devel-api/text/range.cpp [new file with mode: 0644]
dali-toolkit/devel-api/text/range.h [new file with mode: 0644]
dali-toolkit/devel-api/text/spannable-string.cpp [new file with mode: 0644]
dali-toolkit/devel-api/text/spannable-string.h [new file with mode: 0644]
dali-toolkit/devel-api/text/spannable.cpp [new file with mode: 0644]
dali-toolkit/devel-api/text/spannable.h [new file with mode: 0644]
dali-toolkit/devel-api/text/spanned.cpp [new file with mode: 0644]
dali-toolkit/devel-api/text/spanned.h [new file with mode: 0644]
dali-toolkit/devel-api/text/spans/base-span.cpp [new file with mode: 0644]
dali-toolkit/devel-api/text/spans/base-span.h [new file with mode: 0644]
dali-toolkit/devel-api/text/spans/foreground-color-span.cpp [new file with mode: 0644]
dali-toolkit/devel-api/text/spans/foreground-color-span.h [new file with mode: 0644]
dali-toolkit/internal/file.list
dali-toolkit/internal/text/spannable/span-ranges-container-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/spannable/span-ranges-container-impl.h [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spannable-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spannable-impl.h [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spannable-string-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spannable-string-impl.h [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spanned-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spanned-impl.h [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spans/base-span-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spans/base-span-impl.h [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.h [new file with mode: 0644]
dali-toolkit/internal/text/string-text/character-sequence-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/string-text/character-sequence-impl.h [new file with mode: 0644]
dali-toolkit/internal/text/string-text/range-impl.cpp [new file with mode: 0644]
dali-toolkit/internal/text/string-text/range-impl.h [new file with mode: 0644]