1
/***********************************************************************
2
filename: CEGUIBiDiVisualMapping.h
3
created: Wed Aug 5 2009
4
author: Paul D Turner <paul@cegui.org.uk>
5
*************************************************************************/
6
/***************************************************************************
7
* Copyright (C) 2004 - 2009 Paul D Turner & The CEGUI Development Team
9
* Permission is hereby granted, free of charge, to any person obtaining
10
* a copy of this software and associated documentation files (the
11
* "Software"), to deal in the Software without restriction, including
12
* without limitation the rights to use, copy, modify, merge, publish,
13
* distribute, sublicense, and/or sell copies of the Software, and to
14
* permit persons to whom the Software is furnished to do so, subject to
15
* the following conditions:
17
* The above copyright notice and this permission notice shall be
18
* included in all copies or substantial portions of the Software.
20
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26
* OTHER DEALINGS IN THE SOFTWARE.
27
***************************************************************************/
28
#ifndef _CEGUIBiDiVisualMapping_h_
29
#define _CEGUIBiDiVisualMapping_h_
31
#include "CEGUIString.h"
34
#if defined (_MSC_VER)
35
# pragma warning(push)
36
# pragma warning(disable : 4251)
39
// Start of CEGUI namespace section
42
//! Enumeration of possible character classes, used for bi-directional text.
50
//! Abstract class to wrap a BiDi visual mapping of a text string.
51
class CEGUIEXPORT BiDiVisualMapping
54
//! type definition for collection used to hold mapping index lists.
55
typedef std::vector<int> StrIndexList;
58
virtual ~BiDiVisualMapping();
62
Gets the BiDi char type of a char.
65
The utf32 character code that will be checked.
68
One of the BidiCharType enumerated values indicating the BiDi char type.
70
virtual BidiCharType getBidiCharType(const utf32 char_to_check) const = 0;
75
Reorder a string from a logical (type order) bidi string to a
76
visual (the way it displayed) string.
79
String object to be reordered.
82
String object containing the result reordered string.
85
List of integers that map the pos of each char from logical string in
89
List of integers that map the pos of each char from visual string in
94
- false if the operation failed.
96
virtual bool reorderFromLogicalToVisual(const String& logical,
99
StrIndexList& v2l) const = 0;
102
Use reorderFromLogicalToVisual to update the internal visual mapping
103
data and visual string representation based upon the logical string
107
String object representing the logical text order.
110
- true if the update was a success.
111
- false if something went wrong.
113
bool updateVisual(const String& logical);
116
const StrIndexList getL2vMapping() const
117
{return d_l2vMapping;}
118
const StrIndexList getV2lMapping() const
119
{return d_v2lMapping;}
120
const String& getTextVisual() const
121
{return d_textVisual;}
124
StrIndexList d_l2vMapping;
125
StrIndexList d_v2lMapping;
129
} // End of CEGUI namespace section
131
#if defined (_MSC_VER)
132
# pragma warning(pop)
135
#endif // end of guard _CEGUIBiDiVisualMapping_h_