2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FGrp_TextElementImpl.cpp
20 * @brief This is the cpp file for _TextElementImpl class.
26 #include "FGrp_TextElementImpl.h"
27 #include "FGrp_EnrichedTextImpl.h"
28 #include "FGrp_FontImpl.h"
29 #include "FGrp_ResUtil.h"
30 #include "FGrp_TextTextCutLinkParser.h"
31 #include "FGrp_TextTextUtility.h"
32 #include "FGrp_TextTextElement.h"
33 #include "FGrp_TextTextSimple.h"
34 #include "FGrp_TextTextCutLink.h"
35 #include "util/FGrp_Util.h"
38 using namespace Tizen::Base;
39 using namespace Tizen::Base::Runtime;
40 using namespace Tizen::Base::Utility;
41 using namespace Tizen::Graphics;
42 using namespace Tizen::Graphics::_Text;
46 const int DEFAULT_FONT_SIZE = 42;
49 namespace Tizen { namespace Graphics
52 _TextElementImpl::_TextElementImpl(void)
56 __linkType = LINK_TYPE_NONE;
59 __bgColorEnable = false;
60 __outlineColorEnable = false;
62 __pRegisteringEnrichedText = null;
65 __pTextComponent = null;
68 _TextElementImpl::~_TextElementImpl(void)
70 if (__pRegisteringEnrichedText)
72 int index = __pRegisteringEnrichedText->GetTextElementIndex(this);
73 int count = __pRegisteringEnrichedText->GetTextElementCount();
75 if (index >= 0 && index < count)
77 __pRegisteringEnrichedText->RemoveAt(index, false);
79 __pRegisteringEnrichedText = null;
95 _TextElementImpl::Construct(const Tizen::Base::String& text)
97 SysTryReturn(NID_GRP, __pTextComponent == null, E_OPERATION_FAILED, E_OPERATION_FAILED, "[E_OPERATION_FAILED] This instance is already constructed.");
98 SysTryReturn(NID_GRP, text.IsEmpty() == false, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
100 result r = E_SUCCESS;
104 r = Create(__strText, __strText.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
107 , , r, "[%s] Fails to construct native text element.", GetErrorMessage(r));
109 __foregroundColor = GetTextColor();
110 __backgroundColor = GetBackgroundColor();
111 __outlineColor = GetOutlineColor();
113 pFont = new (std::nothrow) Font;
116 return E_OUT_OF_MEMORY;
119 r = pFont->Construct(FONT_STYLE_PLAIN, DEFAULT_FONT_SIZE);
122 , , r, "[%s] Fails to construct font.", GetErrorMessage(r));
124 r = SetTextObjectFont(*pFont);
127 , , r, "[%s] Fails to set font.", GetErrorMessage(r));
129 this->__pFont = pFont;
141 _TextElementImpl::Construct(const Tizen::Base::String& text, const Tizen::Graphics::Canvas& canvas)
143 SysTryReturn(NID_GRP, __pTextComponent == null, E_OPERATION_FAILED, E_OPERATION_FAILED, "[E_OPERATION_FAILED] This instance is already constructed.");
144 SysTryReturn(NID_GRP, text.IsEmpty() == false, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
145 SysTryReturn(NID_GRP, &canvas, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
147 result r = E_SUCCESS;
149 r = this->Construct(text);
156 Tizen::Graphics::Canvas& refCanvas = const_cast <Tizen::Graphics::Canvas&>(canvas);
158 Tizen::Graphics::Color color1 = refCanvas.GetForegroundColor();
160 SysTryReturn(NID_GRP, r == E_SUCCESS, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
161 this->SetTextColor(color1);
163 Tizen::Graphics::Color color2 = refCanvas.GetBackgroundColor();
165 SysTryReturn(NID_GRP, r == E_SUCCESS, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
166 this->SetBackgroundColor(color2);
172 _TextElementImpl::Construct(void)
174 SysTryReturn(NID_GRP, __pTextComponent == null, E_OPERATION_FAILED, E_OPERATION_FAILED, "[E_OPERATION_FAILED] This instance is already constructed.");
176 result r = E_SUCCESS;
180 r = Create(__strText, __strText.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
183 , , r, "[%s] Fails to construct native text element.", GetErrorMessage(r));
185 __foregroundColor = GetTextColor();
186 __backgroundColor = GetBackgroundColor();
187 __outlineColor = GetOutlineColor();
189 pFont = new (std::nothrow) Font;
192 return E_OUT_OF_MEMORY;
195 r = pFont->Construct(FONT_STYLE_PLAIN, DEFAULT_FONT_SIZE);
198 , , r, "[%s] Fails to construct font.", GetErrorMessage(r));
200 r = SetTextObjectFont(*pFont);
203 , , r, "[%s] Fails to set font.", GetErrorMessage(r));
205 this->__pFont = pFont;
217 _TextElementImpl::Construct(const Tizen::Base::String& text, Tizen::Base::Utility::LinkType linkType, const Tizen::Base::String& link)
219 SysTryReturn(NID_GRP, __pTextComponent == null, E_OPERATION_FAILED, E_OPERATION_FAILED, "[E_OPERATION_FAILED] This instance is already constructed.");
220 SysTryReturn(NID_GRP, text.IsEmpty() == false, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
221 SysTryReturn(NID_GRP, LINK_TYPE_NONE != linkType, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The link type is invalid.");
223 result r = E_SUCCESS;
225 _CutLinkType type = this->ConvertObjectLinkType(linkType);
226 FontStyle fontStyle = FONT_STYLE_MIN;
230 __linkType = linkType;
232 r = CreateUserLink(__strText, type);
235 , , r, "[%s] Fails to create native text element.", GetErrorMessage(r));
237 __foregroundColor = GetTextColor();
238 __backgroundColor = GetBackgroundColor();
239 __outlineColor = GetOutlineColor();
241 pFont = new (std::nothrow) Font;
244 return E_OUT_OF_MEMORY;
247 if (linkType == LINK_TYPE_URL || linkType == LINK_TYPE_EMAIL)
249 fontStyle = FONT_STYLE_ITALIC;
251 else if (linkType == LINK_TYPE_TEL_NUM)
253 fontStyle = FONT_STYLE_BOLD;
257 fontStyle = FONT_STYLE_PLAIN;
259 r = pFont->Construct(fontStyle, DEFAULT_FONT_SIZE);
262 , , r, "[%s] Fails to construct font.", GetErrorMessage(r));
264 SetTextColor(Color::GetColor(COLOR_ID_BLUE));
265 pFont->SetUnderline(true);
266 r = SetTextObjectFont(*pFont);
269 , , r, "[%s] Fails to set font.", GetErrorMessage(r));
271 this->__pFont = pFont;
283 _TextElementImpl::Construct(const Tizen::Base::String& text, unsigned long autoLink)
285 SysTryReturn(NID_GRP, __pTextComponent == null, E_OPERATION_FAILED, E_OPERATION_FAILED, "[E_OPERATION_FAILED] This instance is already constructed.");
286 SysTryReturn(NID_GRP, text.IsEmpty() == false, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
287 SysTryReturn(NID_GRP, LINK_TYPE_NONE < autoLink && autoLink < LINK_TYPE_MAX, E_INVALID_ARG, E_INVALID_ARG,
288 "[E_INVALID_ARG] The autolink mask is invalid.");
290 result r = E_SUCCESS;
291 Tizen::Base::String link;
294 FontStyle fontStyle = FONT_STYLE_MIN;
297 __autoLink = autoLink;
300 r = CreateAutoLink(__strText, autoLink);
303 , , r, "[%s] Fails to create native text element.", GetErrorMessage(r));
305 __foregroundColor = GetTextColor();
306 __backgroundColor = GetBackgroundColor();
307 __outlineColor = GetOutlineColor();
309 type = GetCutLinkType();
311 pFont = new (std::nothrow) Font;
314 return E_OUT_OF_MEMORY;
317 if (type != TEXT_CUTLINK_TYPE_INVALID)
319 int len = GetLength();
321 text.SubString((GetAutolinkSrcOffset()), len, link);
324 __linkType = this->ConvertObjectLinkType(type);
326 if (type == TEXT_CUTLINK_TYPE_URL || type == TEXT_CUTLINK_TYPE_EMAIL)
328 fontStyle = FONT_STYLE_ITALIC;
330 else if (type == TEXT_CUTLINK_TYPE_PHONE_NUMBER)
332 fontStyle = FONT_STYLE_BOLD;
336 fontStyle = FONT_STYLE_PLAIN;
339 r = pFont->Construct(fontStyle, DEFAULT_FONT_SIZE);
342 , , r, "[%s] Fails to construct font.", GetErrorMessage(r));
344 SetTextColor(Color::GetColor(COLOR_ID_BLUE));
345 pFont->SetUnderline(true);
346 r = SetTextObjectFont(*pFont);
349 , , r, "[%s] Fails to set font.", GetErrorMessage(r));
351 this->__pFont = pFont;
355 r = pFont->Construct(FONT_STYLE_PLAIN, DEFAULT_FONT_SIZE);
358 , , r, "[%s] Fails to construct font.", GetErrorMessage(r));
360 r = SetTextObjectFont(*pFont);
363 , , r, "[%s] Fails to set font.", GetErrorMessage(r));
365 this->__pFont = pFont;
378 _TextElementImpl::Construct(const Tizen::Base::String& text, Tizen::Base::Utility::LinkType linkType, const Tizen::Base::String& link,
379 const Tizen::Graphics::Canvas& canvas)
381 SysTryReturn(NID_GRP, __pTextComponent == null, E_OPERATION_FAILED, E_OPERATION_FAILED, "[E_OPERATION_FAILED] This instance is already constructed.");
382 SysTryReturn(NID_GRP, text.IsEmpty() == false, E_INVALID_ARG, E_INVALID_ARG
383 , "[E_INVALID_ARG] The argument is invalid.");
384 SysTryReturn(NID_GRP, LINK_TYPE_NONE != linkType, E_INVALID_ARG, E_INVALID_ARG
385 , "[E_INVALID_ARG] The link type is invalid.");
386 SysTryReturn(NID_GRP, &canvas, E_INVALID_ARG, E_INVALID_ARG
387 , "[E_INVALID_ARG] The argument is invalid.");
389 result r = E_SUCCESS;
391 r = this->Construct(text, linkType, link);
398 Tizen::Graphics::Canvas& refCanvas = const_cast <Tizen::Graphics::Canvas&>(canvas);
400 Tizen::Graphics::Color color1 = refCanvas.GetForegroundColor();
402 SysTryReturn(NID_GRP, r == E_SUCCESS, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
403 this->SetTextColor(color1);
405 Tizen::Graphics::Color color2 = refCanvas.GetBackgroundColor();
407 SysTryReturn(NID_GRP, r == E_SUCCESS, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
408 this->SetBackgroundColor(color2);
414 _TextElementImpl::Construct(const Tizen::Base::String& text, unsigned long autoLink, const Tizen::Graphics::Canvas& canvas)
416 SysTryReturn(NID_GRP, __pTextComponent == null, E_OPERATION_FAILED, E_OPERATION_FAILED
417 , "[E_OPERATION_FAILED] This instance is already constructed.");
418 SysTryReturn(NID_GRP, text.IsEmpty() == false, E_INVALID_ARG, E_INVALID_ARG
419 , "[E_INVALID_ARG] The argument is invalid.");
420 SysTryReturn(NID_GRP, LINK_TYPE_NONE < autoLink && autoLink < LINK_TYPE_MAX, E_INVALID_ARG, E_INVALID_ARG
421 , "[E_INVALID_ARG] The autolink mask is invalid.");
422 SysTryReturn(NID_GRP, &canvas, E_INVALID_ARG, E_INVALID_ARG
423 , "[E_INVALID_ARG] The argument is invalid.");
425 result r = E_SUCCESS;
427 r = this->Construct(text, autoLink);
433 Tizen::Graphics::Canvas& refCanvas = const_cast <Tizen::Graphics::Canvas&>(canvas);
435 Tizen::Graphics::Color color1 = refCanvas.GetForegroundColor();
437 SysTryReturn(NID_GRP, r == E_SUCCESS, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
438 this->SetTextColor(color1);
440 Tizen::Graphics::Color color2 = refCanvas.GetBackgroundColor();
442 SysTryReturn(NID_GRP, r == E_SUCCESS, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
443 this->SetBackgroundColor(color2);
449 _TextElementImpl::GetLink(void) const
451 return *(const_cast <String*>(&__linkText));
455 _TextElementImpl::SetText(const Tizen::Base::String& text)
457 SysTryReturn(NID_GRP, text.IsEmpty() == false, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
458 SysTryReturn(NID_GRP, __pTextComponent, E_OPERATION_FAILED, E_OPERATION_FAILED, "E_OPERATION_FAILED] Not Construct yet");
460 result r = E_SUCCESS;
465 if (__pRegisteringEnrichedText)
467 index = __pRegisteringEnrichedText->GetTextElementIndex(this);
468 r = __pRegisteringEnrichedText->RemoveFromTextObject(this);
471 if (__pTextComponent)
476 if ((__linkType == LINK_TYPE_NONE) && (__autoLink == 0))
478 r = Create(__strText, __strText.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
482 SetTextColor(__foregroundColor);
483 if (__bgColorEnable == true)
485 SetBackgroundColor(__backgroundColor);
487 if (__outlineColorEnable == true)
489 SetOutlineColor(__outlineColor);
493 r = SetTextObjectFont(*__pFont);
503 if (__isAuto == true)
505 r = CreateAutoLink(__strText, __autoLink);
509 _CutLinkType type = GetCutLinkType();
510 __linkType = ConvertObjectLinkType(type);
512 int len = GetLength();
513 Tizen::Base::String link;
514 __strText.SubString(GetAutolinkSrcOffset(), len, link);
517 SetTextColor(__foregroundColor);
518 if (__bgColorEnable == true)
520 SetBackgroundColor(__backgroundColor);
522 if (__outlineColorEnable == true)
524 SetOutlineColor(__outlineColor);
528 r = SetTextObjectFont(*__pFont);
542 _CutLinkType type = ConvertObjectLinkType(__linkType);
543 r = CreateUserLink(__strText, type);
547 SetTextColor(__foregroundColor);
548 if (__bgColorEnable == true)
550 SetBackgroundColor(__backgroundColor);
552 if (__outlineColorEnable == true)
554 SetOutlineColor(__outlineColor);
558 r = SetTextObjectFont(*__pFont);
572 if (__pRegisteringEnrichedText)
574 r = __pRegisteringEnrichedText->InsertAtFromTextObject(index, this);
585 _TextElementImpl::SetFont(const Tizen::Graphics::Font& font)
587 SysTryReturn(NID_GRP, _Util::CheckValidity(&font), E_INVALID_ARG, E_INVALID_ARG
588 , "[E_INVALID_ARG] The infomation of the given font is invalid.");
589 SysTryReturn(NID_GRP, __pTextComponent, E_OPERATION_FAILED, E_OPERATION_FAILED, "E_OPERATION_FAILED] Not Construct yet");
591 result r = E_SUCCESS;
592 TextSimple* pTextElement = null;
600 __pFont = _FontImpl::CloneN(const_cast <Font&>(font));
604 if (__pTextComponent->GetType() == TEXT_ELEMENT_TYPE_CUTLINK)
606 TextCutLink* pLinkTextElement = dynamic_cast < TextCutLink* >(__pTextComponent);
607 if (pLinkTextElement)
609 pLinkTextElement->SetEditModeEnable(true);
613 pTextElement = dynamic_cast < TextSimple* >(__pTextComponent);
616 pTextElement->SetFont(const_cast <Font*>(__pFont));
628 _TextElementImpl::SetTextColor(const Tizen::Graphics::Color& color)
630 SysTryReturn(NID_GRP, __pTextComponent, E_OPERATION_FAILED, E_OPERATION_FAILED, "E_OPERATION_FAILED] Not Construct yet");
632 __foregroundColor = color;
634 TextSimple* pTextElement = null;
636 if (__pTextComponent->GetType() == TEXT_ELEMENT_TYPE_CUTLINK)
638 TextCutLink* pLinkTextElement = dynamic_cast < TextCutLink* >(__pTextComponent);
639 if (pLinkTextElement)
641 pLinkTextElement->SetEditModeEnable(true);
645 pTextElement = dynamic_cast < TextSimple* >(__pTextComponent);
648 pTextElement->SetForegroundColor(color);
655 _TextElementImpl::SetBackgroundColor(const Tizen::Graphics::Color& color)
657 SysTryReturn(NID_GRP, __pTextComponent, E_OPERATION_FAILED, E_OPERATION_FAILED, "E_OPERATION_FAILED] Not Construct yet");
659 __backgroundColor = color;
660 __bgColorEnable = true;
662 TextSimple* pTextElement = null;
664 if (__pTextComponent->GetType() == TEXT_ELEMENT_TYPE_CUTLINK)
666 TextCutLink* pLinkTextElement = dynamic_cast < TextCutLink* >(__pTextComponent);
667 if (pLinkTextElement)
669 pLinkTextElement->SetEditModeEnable(true);
673 pTextElement = dynamic_cast < TextSimple* >(__pTextComponent);
676 pTextElement->SetBackGroundDrawingModeEnabled(true);
677 pTextElement->SetBackgroundColor(color);
684 _TextElementImpl::SetOutlineColor(const Tizen::Graphics::Color& color)
686 SysTryReturn(NID_GRP, __pTextComponent, E_OPERATION_FAILED, E_OPERATION_FAILED, "E_OPERATION_FAILED] Not Construct yet");
688 __outlineColor = color;
689 __outlineColorEnable = true;
691 TextSimple* pTextElement = null;
693 if (__pTextComponent->GetType() == TEXT_ELEMENT_TYPE_CUTLINK)
695 TextCutLink* pLinkTextElement = dynamic_cast < TextCutLink* >(__pTextComponent);
696 if (pLinkTextElement)
698 pLinkTextElement->SetEditModeEnable(true);
702 pTextElement = dynamic_cast < TextSimple* >(__pTextComponent);
705 pTextElement->SetOutlineColor(color);
712 _TextElementImpl::GetText(void) const
714 return *(const_cast <String*>(&__strText));
717 Tizen::Graphics::Color
718 _TextElementImpl::GetTextColor(void) const
720 return __foregroundColor;
723 Tizen::Graphics::Color
724 _TextElementImpl::GetBackgroundColor(void) const
726 return __backgroundColor;
729 Tizen::Graphics::Color
730 _TextElementImpl::GetOutlineColor(void) const
732 return __outlineColor;
736 _TextElementImpl::ConvertObjectLinkType(Tizen::Base::Utility::LinkType type)
738 _CutLinkType cutLinkType;
743 cutLinkType = TEXT_CUTLINK_TYPE_URL;
746 case LINK_TYPE_EMAIL:
747 cutLinkType = TEXT_CUTLINK_TYPE_EMAIL;
750 case LINK_TYPE_TEL_NUM:
751 cutLinkType = TEXT_CUTLINK_TYPE_PHONE_NUMBER;
755 cutLinkType = TEXT_CUTLINK_TYPE_INVALID;
761 Tizen::Base::Utility::LinkType
762 _TextElementImpl::ConvertObjectLinkType(_CutLinkType type)
768 case TEXT_CUTLINK_TYPE_URL:
769 linkType = LINK_TYPE_URL;
772 case TEXT_CUTLINK_TYPE_EMAIL:
773 linkType = LINK_TYPE_EMAIL;
776 case TEXT_CUTLINK_TYPE_PHONE_NUMBER:
777 linkType = LINK_TYPE_TEL_NUM;
780 case TEXT_CUTLINK_TYPE_STREAMING_URL:
781 linkType = LINK_TYPE_URL;
785 linkType = LINK_TYPE_NONE;
792 _TextElementImpl::GetRegisteringEnrichedText(void) const
794 return __pRegisteringEnrichedText;
798 _TextElementImpl::SetRegisteringEnrichedText(_EnrichedTextImpl* pEnrichedTextImpl)
800 __pRegisteringEnrichedText = pEnrichedTextImpl;
803 const Tizen::Base::String&
804 _TextElementImpl::GetLinkText(void) const
809 Tizen::Base::Utility::LinkType
810 _TextElementImpl::GetLinkType(void) const
816 _TextElementImpl::IsAuto(void) const
822 _TextElementImpl::Create(const Tizen::Base::String& text, int length, TextElementSourceType sourceType)
824 TextSimple* pTextElement = null;
826 pTextElement = new (std::nothrow) TextSimple((wchar_t*) text.GetPointer(), length, sourceType);
828 if (pTextElement == null)
830 return E_OUT_OF_MEMORY;
833 __pTextComponent = pTextElement;
839 _TextElementImpl::CreateUserLink(const Tizen::Base::String& text, _CutLinkType linkType)
841 LinkType cutLinkType = LINK_TYPE_NONE;
842 int len = text.GetLength();
843 TextCutLink* pTextElement = null;
847 case TEXT_CUTLINK_TYPE_URL:
848 cutLinkType = LINK_TYPE_URL;
851 case TEXT_CUTLINK_TYPE_EMAIL:
852 cutLinkType = LINK_TYPE_EMAIL;
855 case TEXT_CUTLINK_TYPE_PHONE_NUMBER:
856 cutLinkType = LINK_TYPE_TEL_NUM;
859 case TEXT_CUTLINK_TYPE_STREAMING_URL:
860 cutLinkType = LINK_TYPE_URL;
864 cutLinkType = LINK_TYPE_NONE;
868 pTextElement = new (std::nothrow) TextCutLink(true, cutLinkType, (wchar_t*) text.GetPointer(), len, TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
870 if (pTextElement == null)
872 return E_OUT_OF_MEMORY;
875 __pTextComponent = pTextElement;
881 _TextElementImpl::CreateAutoLink(const Tizen::Base::String& text, unsigned long autoLink)
883 result r = E_SUCCESS;
884 int len = text.GetLength();
885 wchar_t* pText = (wchar_t*) text.GetPointer();
889 TextLinkInfo* pTextLinkInfo = null;
890 TextCutLinkParser* pParser = null;
892 pParser = new (std::nothrow) TextCutLinkParser;
895 return E_OUT_OF_MEMORY;
898 pTextLinkInfo = pParser->Parse(pText, len, 0);
904 return E_INVALID_ARG;
907 __linkOffset = pTextLinkInfo->srcOffset;
909 if ((ConvertLinkType(pTextLinkInfo->linkType) & autoLink) != 0)
911 TextCutLink* pTextElement = null;
913 pTextElement = new (std::nothrow) TextCutLink(false, pTextLinkInfo->linkType, pText + pTextLinkInfo->srcOffset
914 , pTextLinkInfo->length, TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
916 if (pTextElement == null)
923 return E_OUT_OF_MEMORY;
926 __pTextComponent = pTextElement;
931 r = Create(text, len, TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
934 while (pTextLinkInfo)
936 TextLinkInfo* pCurrent = pTextLinkInfo;
937 pTextLinkInfo = pTextLinkInfo->pNextLinkInfo;
949 r = Create(text, len, TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
956 _TextElementImpl::Destroy(void)
958 if (__pTextComponent)
960 delete __pTextComponent;
961 __pTextComponent = null;
966 _TextElementImpl::ConvertLinkType(LinkType type) const
968 _CutLinkType linkType = TEXT_CUTLINK_TYPE_INVALID;
973 linkType = TEXT_CUTLINK_TYPE_URL;
976 case LINK_TYPE_EMAIL:
977 linkType = TEXT_CUTLINK_TYPE_EMAIL;
980 case LINK_TYPE_TEL_NUM:
981 linkType = TEXT_CUTLINK_TYPE_PHONE_NUMBER;
985 linkType = TEXT_CUTLINK_TYPE_INVALID;
993 _TextElementImpl::GetCutLinkType(void) const
995 _CutLinkType linkType = TEXT_CUTLINK_TYPE_INVALID;
996 TextCutLink* pTextElement = null;
998 if (__pTextComponent->GetType() != TEXT_ELEMENT_TYPE_CUTLINK)
1000 return TEXT_CUTLINK_TYPE_INVALID;
1003 pTextElement = dynamic_cast < TextCutLink* >(__pTextComponent);
1006 linkType = ConvertLinkType(pTextElement->GetCutLinkType());
1013 _TextElementImpl::GetLength(void) const
1015 return __pTextComponent->GetTextLength();
1019 _TextElementImpl::GetAutolinkSrcOffset(void) const
1021 return __linkOffset;
1025 _TextElementImpl::SetTextObjectFont(const Tizen::Graphics::Font& font)
1027 SysTryReturn(NID_GRP, &font, E_INVALID_ARG, E_INVALID_ARG
1028 , "[E_INVALID_ARG] The infomation of the given font is invalid.");
1030 SysTryReturn(NID_GRP, _Util::CheckValidity(&font), E_INVALID_ARG, E_INVALID_ARG
1031 , "[E_INVALID_ARG] The infomation of the given font is invalid.");
1033 result r = E_SUCCESS;
1035 TextSimple* pTextElement = null;
1037 pFont = const_cast <Font*>(&font);
1040 return E_INVALID_ARG;
1043 if (__pTextComponent->GetType() == TEXT_ELEMENT_TYPE_CUTLINK)
1045 TextCutLink* pLinkTextElement = dynamic_cast < TextCutLink* >(__pTextComponent);
1046 if (pLinkTextElement)
1048 pLinkTextElement->SetEditModeEnable(true);
1052 pTextElement = dynamic_cast < TextSimple* >(__pTextComponent);
1055 pTextElement->SetFont(pFont);
1062 _TextElementImpl::GetComponent(void) const
1064 return __pTextComponent;
1068 const Tizen::Graphics::Font*
1069 _TextElementImpl::GetFont(void) const
1075 _TextElementImpl::GetAutoLink(void) const
1081 _TextElementImpl::IsBackgoundColorEnable(void) const
1083 return __bgColorEnable;
1087 _TextElementImpl::IsOutlineColorEnable(void) const
1089 return __outlineColorEnable;
1093 _TextElementImpl::GetInstance(TextElement& element)
1095 return (&element != null) ? element.__pImpl : null;
1098 const _TextElementImpl*
1099 _TextElementImpl::GetInstance(const TextElement& element)
1101 return (&element != null) ? element.__pImpl : null;
1105 _TextElementImpl::IsConstructed(void) const
1107 return (this->__pTextComponent != null);
1110 }} // Tizen::Graphics