1 #ifndef __DALI_TOOLKIT_INTERNAL_TEXT_HIGHLIGHT_H__
2 #define __DALI_TOOLKIT_INTERNAL_TEXT_HIGHLIGHT_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/dali.h>
23 #include <dali-toolkit/internal/controls/text-input/textview-character-positions-impl.h>
25 #include <dali-toolkit/public-api/controls/text-view/text-view.h>
37 * @brief TextHighlight is a decoration which highlights selected text.
39 * The class creates a highlight mesh used to show selected text between handles.
40 * Not responsible for positioning.
45 * structure to hold coordinates of each quad, which will make up the mesh.
47 struct QuadCoordinates
58 * @param[in] x1 left co-ordinate
59 * @param[in] y1 top co-ordinate
60 * @param[in] x2 right co-ordinate
61 * @param[in] y2 bottom co-ordinate
63 QuadCoordinates(float x1, float y1, float x2, float y2)
69 Vector2 min; ///< top-left (minimum) position of quad
70 Vector2 max; ///< bottom-right (maximum) position of quad
73 typedef std::vector<QuadCoordinates> QuadContainer;
78 * structure for information required to build the highlight mesh
83 * Adds a Quad (2D rectangular sub-selection)
84 * @param[in] x1 left co-ordinate
85 * @param[in] y1 top co-ordinate
86 * @param[in] x2 right co-ordinate
87 * @param[in] y2 bottom co-ordinate
89 void AddQuad( float x1, float y1, float x2, float y2 ){};
92 * Clamps all quads to fit within a min -> max 2D boundary.
94 void Clamp2D(const Vector2& min, const Vector2& max){};
96 QuadContainer mQuadList; ///< List of quads (sub-selections that form to create complete selection)
101 * @param[in] textViewCharacterPositioning TextViewCharacterPositioning to be used for positioning information.
103 TextHighlight( TextViewCharacterPositioning& textViewCharacterPositioning ):mTextViewCharacterPositioning( textViewCharacterPositioning ){};
111 * Gets the table of the visual text positions which has a flag
112 * for each Character. The flag is either true (character selected)
113 * or false (character de-selected)
114 * @note startSelection can be greater or less than endSelection
116 * @param[in,out] selectedVisualText The vector to be resized and populated with the selected flags
117 * @param[in] startSelection The start selection point for the text
118 * @param[in] endSelection The end selection point for the text
119 * @param[in] endSelection The end selection point for the text
120 * @param[in] textLayoutInfo TextView character layout information
122 void GetVisualTextSelection(std::vector<bool>& selectedVisualText, std::size_t startSelection, std::size_t endSelection,
123 Toolkit::TextView::TextLayoutInfo& textLayoutInfo){};
126 * Iterates between selection handles and computes the info required to build the highlight mesh
127 * @param[in] handlePositionStart starting handle position
128 * @param[in] handlePositionEnd ending handle position
129 * @return textHighlight target TextHighlight
131 TextHighlight::HighlightInfo CalculateHighlightInfo( std::size_t handlePositionStart, std::size_t handlePositionEnd, Toolkit::TextView::TextLayoutInfo& textLayoutInfo )
132 { return HighlightInfo();};
135 * Calculates new Mesh data so highlight moves with selection handles.
136 * @param[in] newHighlightInfo HighlightInfo calculated by CalculateHighlightInfo
138 void UpdateHighlight( TextHighlight::HighlightInfo& newHighlightInfo ){};
141 * Creates the Mesh data needed by the Mesh Actor
143 Mesh CreateHighLightMesh(){return Mesh();};
148 * @brief Copy Constructor
149 * @param[in] textHight
152 TextHighlight(const TextHighlight& textHight );
155 * @Assignment Constructor
159 TextHighlight& operator=(const TextHighlight& rhs);
163 TextViewCharacterPositioning& mTextViewCharacterPositioning;
165 Mesh mHighlightMesh; ///< Mesh Data for highlight
166 MeshData mMeshData; ///< Container to hold meshData for highlight
167 Material mCustomMaterial; ///< Custom material used for highlight
168 HighlightInfo mNewHighlightInfo; ///< Geometry info to create highlight.
173 } // namespace Internal
176 } // namespace Toolkit
180 #endif // __DALI_TOOLKIT_INTERNAL_TEXT_HIGHLIGHT_H__