~ubuntu-branches/debian/wheezy/cegui-mk2/wheezy

« back to all changes in this revision

Viewing changes to cegui/include/CEGUIBiDiVisualMapping.h

  • Committer: Package Import Robot
  • Author(s): Muammar El Khatib
  • Date: 2011-10-13 12:43:12 UTC
  • mfrom: (10.1.5 experimental)
  • Revision ID: package-import@ubuntu.com-20111013124312-qch0o3fayloxgxu3
Tags: 0.7.5-7
Moved to unstable. (Closes: #645109)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
8
 *
 
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:
 
16
 *
 
17
 *   The above copyright notice and this permission notice shall be
 
18
 *   included in all copies or substantial portions of the Software.
 
19
 *
 
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_
 
30
 
 
31
#include "CEGUIString.h"
 
32
#include <vector>
 
33
 
 
34
#if defined (_MSC_VER)
 
35
#   pragma warning(push)
 
36
#   pragma warning(disable : 4251)
 
37
#endif
 
38
 
 
39
// Start of CEGUI namespace section
 
40
namespace CEGUI
 
41
{
 
42
//! Enumeration of possible character classes, used for bi-directional text.
 
43
enum BidiCharType
 
44
{
 
45
    BCT_RIGHT_TO_LEFT,
 
46
    BCT_LEFT_TO_RIGHT,
 
47
    BCT_NEUTRAL
 
48
};
 
49
 
 
50
//! Abstract class to wrap a BiDi visual mapping of a text string.
 
51
class CEGUIEXPORT BiDiVisualMapping
 
52
{
 
53
public:
 
54
    //! type definition for collection used to hold mapping index lists.
 
55
    typedef std::vector<int> StrIndexList;
 
56
 
 
57
    //! Destructor.
 
58
    virtual ~BiDiVisualMapping();
 
59
 
 
60
    /*!
 
61
    \brief
 
62
        Gets the BiDi char type of a char.
 
63
 
 
64
    \param charToCheck
 
65
        The utf32 character code that will be checked.
 
66
 
 
67
    \return
 
68
        One of the BidiCharType enumerated values indicating the BiDi char type.
 
69
    */
 
70
    virtual BidiCharType getBidiCharType(const utf32 char_to_check) const = 0;
 
71
 
 
72
 
 
73
    /*!
 
74
    \brief
 
75
        Reorder a string from a logical (type order) bidi string to a
 
76
        visual (the way it displayed) string.
 
77
 
 
78
    \param logical
 
79
        String object to be reordered.
 
80
 
 
81
    \param visual
 
82
        String object containing the result reordered string.
 
83
 
 
84
    \param l2vMapping
 
85
        List of integers that map the pos of each char from logical string in
 
86
        the visual string.
 
87
 
 
88
    \param v2lMapping
 
89
        List of integers that map the pos of each char from visual string in
 
90
        the logical string.
 
91
 
 
92
    \return
 
93
        - true if successful.
 
94
        - false if the operation failed.
 
95
    */
 
96
    virtual bool reorderFromLogicalToVisual(const String& logical,
 
97
                                            String& visual,
 
98
                                            StrIndexList& l2v,
 
99
                                            StrIndexList& v2l) const = 0;
 
100
    /*!
 
101
    \brief
 
102
        Use reorderFromLogicalToVisual to update the internal visual mapping
 
103
        data and visual string representation based upon the logical string
 
104
        \a logical.
 
105
 
 
106
    \param logical
 
107
        String object representing the logical text order.
 
108
 
 
109
    \return
 
110
        - true if the update was a success.
 
111
        - false if something went wrong.
 
112
    */
 
113
    bool updateVisual(const String& logical);
 
114
 
 
115
 
 
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;}
 
122
 
 
123
protected:
 
124
    StrIndexList d_l2vMapping;
 
125
    StrIndexList d_v2lMapping;
 
126
    String d_textVisual;
 
127
};
 
128
 
 
129
} // End of  CEGUI namespace section
 
130
 
 
131
#if defined (_MSC_VER)
 
132
#   pragma warning(pop)
 
133
#endif
 
134
 
 
135
#endif  // end of guard _CEGUIBiDiVisualMapping_h_