Tizen 2.1 base
[framework/osp/uifw.git] / src / graphics / inc / FGrp_EnrichedTextImpl.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17
18 /*
19  * @file        FGrp_EnrichedTextImpl.h
20  * @brief       This is the header file for the _EnrichedTextImpl class.
21  *
22  * This header file contains the declarations of the %_EnrichedTextImpl class.
23  *
24  */
25
26 #ifndef _FGRP_INTERNAL_ENRICHED_TEXT_IMPL_H_
27 #define _FGRP_INTERNAL_ENRICHED_TEXT_IMPL_H_
28
29
30 #include <memory>
31 #include <tr1/memory>
32
33 #include <FBaseErrorDefine.h>
34 #include <FBaseString.h>
35 #include <FBaseColArrayList.h>
36 #include <FGrpEnrichedText.h>
37
38 #include <FBaseSysLog.h>
39 #include "FGrp_TextCommon.h"
40
41 namespace Tizen { namespace Graphics { namespace _Text
42 {
43 class TextObject;
44 }}}
45
46 namespace Tizen { namespace Base { namespace Collection
47 {
48 class LinkedList;
49 }}} // Tizen::Base::Collection
50
51 namespace Tizen { namespace Base { namespace Utility
52 {
53 class LinkInfo;
54 }}} // Tizen::Base::Utility
55
56 namespace Tizen { namespace Graphics
57 {
58 class TextElement;
59
60 class _TextElementImpl;
61
62 #define TEXT_HORIZONTAL_ALIGNMENT 0x0007
63 #define TEXT_VERTICAL_ALIGNMENT 0x0f00
64
65 enum _TextWrapType
66 {
67         //Wrap
68         TEXT_WRAP_TYPE_NONE,        //default
69         TEXT_WRAP_TYPE_WRAP,
70         TEXT_WRAP_TYPE_WORDWRAP
71 };
72
73 class _EnrichedTextImpl
74 {
75 public:
76         _EnrichedTextImpl(void);
77         virtual ~_EnrichedTextImpl(void);
78
79         result Construct(const Tizen::Graphics::Dimension& dim);
80         result InsertAt(int elementIndex, TextElement& element);
81         result RemoveAt(int elementIndex, bool deallocate);
82         result Remove(TextElement& element, bool deallocate);
83         result Add(TextElement& element);
84         result RemoveAllTextElements(bool deallocate);
85         result RemoveAll(bool deallocate);
86         TextElement* GetTextElementAt(int elementIndex) const;
87         int GetTextElementCount(void) const;
88         result SetSize(const Tizen::Graphics::Dimension& size);
89         result SetSize(int width, int height);
90         Tizen::Graphics::Dimension GetSize(void) const;
91         void GetSize(int& width, int& height) const;
92         int GetWidth(void) const;
93         int GetHeight(void) const;
94         result SetVerticalAlignment(TextVerticalAlignment alignment);
95         result SetHorizontalAlignment(TextHorizontalAlignment alignment);
96         TextVerticalAlignment GetVerticalAlignment(void) const;
97         TextHorizontalAlignment GetHorizontalAlignment(void) const;
98         result SetTextWrapStyle(TextWrap wrap);
99         TextWrap GetTextWrapStyle(void) const;
100         result SetTextAbbreviationEnabled(bool enable);
101         bool IsTextAbbreviationEnabled(void) const;
102         result SetLineSpace(int lineSpace);
103         int GetLineSpace(void) const;
104         void Refresh(void);
105         int GetTotalLineCount(void) const;
106         int GetTotalLineHeight(void) const;
107         int GetDisplayLineCount(void) const;
108         int GetLineLength(int lineIndex) const;
109         int GetFirstTextIndex(int lineIndex) const;
110         int GetLineIndex(int textIndex) const;
111         int GetLineHeight(int lineIndex) const;
112         int GetTextLength(void) const;
113         result GetTextExtent(int startTextIndex, int textLength, int& width, int& height, int& actualLength) const;
114         result GetTextExtent(int startTextIndex, int textLength, Tizen::Graphics::Dimension& size, int &actualLength) const;
115         Tizen::Graphics::Dimension GetTextExtent(void) const;
116         result Add(const Tizen::Graphics::Bitmap& bitmap);
117         result InsertAt(int elementIndex, const Tizen::Graphics::Bitmap& bitmap);
118         result GetLinkInfoFromPosition(const Point& point, Tizen::Base::Utility::LinkInfo& linkInfo) const;
119         result GetLinkInfoFromPosition(int x, int y, Tizen::Base::Utility::LinkInfo& linkInfo) const;
120         TextVerticalAlignment GetElementVerticalAlignment(void) const;
121         result SetElementVerticalAlignment(TextVerticalAlignment alignment);
122
123         Tizen::Graphics::Rectangle GetBounds(void) const;
124         result IndexOfFromLinkedList(TextElement& textElement, int& index);
125         int GetTextElementIndexFromPosition(Tizen::Graphics::Point& point) const;
126         Tizen::Graphics::_Text::TextObjectAlignment ConvertHAlignment(TextHorizontalAlignment halign);
127         TextHorizontalAlignment ConvertHAlignment(Tizen::Graphics::_Text::TextObjectAlignment halign);
128         Tizen::Graphics::_Text::TextObjectAlignment ConvertVAlignment(TextVerticalAlignment valign);
129         TextVerticalAlignment ConvertVAlignment(Tizen::Graphics::_Text::TextObjectAlignment valign);
130         _TextWrapType ConvertWrapType(TextWrap warp);
131         TextWrap ConvertWrap(_TextWrapType warp) const;
132
133         Tizen::Graphics::_Text::TextObject* GetTextObject(void) const;
134         Tizen::Graphics::_Text::TextElementType GetTypeFromIndex(int textObjectIndex) const;
135         int GetIndexFromTouchPosition(int posX, int posY) const;
136         result RemoveFromTextObject(_TextElementImpl* pTextElementImpl);
137         result InsertAtFromTextObject(int index, _TextElementImpl* pTextElementImpl);
138         int GetTextElementIndex(_TextElementImpl* pTextElementImpl) const;
139         _EnrichedTextImpl* GetCloneN(void) const;
140         bool IsConstructed(void) const;
141
142         static _EnrichedTextImpl* GetInstance(EnrichedText& enrichedText);
143         static const _EnrichedTextImpl* GetInstance(const EnrichedText& enrichedText);
144
145 private:
146         int __width;
147         int __height;
148         int __lineSpace;
149         int __count;
150         TextVerticalAlignment __verticalAlignment;
151         TextHorizontalAlignment __horizontalAlignment;
152         TextVerticalAlignment __elementVerticalAlignment;
153
154         std::tr1::shared_ptr<Tizen::Graphics::_Text::TextObject> __pTextObject;
155         Tizen::Base::Collection::LinkedList* __pLinkedListTextElementList;
156         Tizen::Base::Collection::ArrayList __elements;
157         TextElement* __pTextElement;
158         bool __isCopiedEnrichedText;
159
160 private:
161         _EnrichedTextImpl(const _EnrichedTextImpl& enrichedTextImpl);
162         _EnrichedTextImpl& operator =(const _EnrichedTextImpl& rhs);
163
164 }; // _EnrichedTextImpl
165
166 }} // Tizen::Graphics
167
168 #endif // _FGRP_INTERNAL_ENRICHED_TEXT_IMPL_H_