Spinning Topp Logo BlackTopp Studios
inc
charactertraits.h
1 // © Copyright 2010 - 2016 BlackTopp Studios Inc.
2 /* This file is part of The Mezzanine Engine.
3 
4  The Mezzanine Engine is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  The Mezzanine Engine is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with The Mezzanine Engine. If not, see <http://www.gnu.org/licenses/>.
16 */
17 /* The original authors have included a copy of the license specified above in the
18  'Docs' folder. See 'gpl.txt'
19 */
20 /* We welcome the use of the Mezzanine engine to anyone, including companies who wish to
21  Build professional software and charge for their product.
22 
23  However there are some practical restrictions, so if your project involves
24  any of the following you should contact us and we will try to work something
25  out:
26  - DRM or Copy Protection of any kind(except Copyrights)
27  - Software Patents You Do Not Wish to Freely License
28  - Any Kind of Linking to Non-GPL licensed Works
29  - Are Currently In Violation of Another Copyright Holder's GPL License
30  - If You want to change our code and not add a few hundred MB of stuff to
31  your distribution
32 
33  These and other limitations could cause serious legal problems if you ignore
34  them, so it is best to simply contact us or the Free Software Foundation, if
35  you have any questions.
36 
37  Joseph Toppi - toppij@gmail.com
38  John Blackwood - makoenergy02@gmail.com
39 */
40 
41 #ifndef _uicharactertraits_h
42 #define _uicharactertraits_h
43 
44 #include "colourvalue.h"
45 #include "countedptr.h"
46 
47 namespace Mezzanine
48 {
49  namespace UI
50  {
51  class FontData;
52 
53  /// @brief An enum describing the status and boolean traits a Character can have.
55  {
56  /// @todo When additional fonts are no longer needed for bold, italics, etc. style font and such, add those basic properties here.
58  };//CharacterStatus
59 
60  ///////////////////////////////////////////////////////////////////////////////
61  /// @brief This class stores common data for determining the look of a Character.
62  /// @details
63  ///////////////////////////////////////
65  {
66  public:
67  /// @brief Blank Constructor.
69  /// @brief Descriptive Constructor.
70  /// @param Font A pointer to the font to be used.
71  /// @param Character The colour to be given to the characters altered by this class.
73  /// @brief Class Destructor.
74  virtual ~CharacterTraits();
75 
76  ///////////////////////////////////////////////////////////////////////////////
77  // Public Data Members
78 
79  /// @brief The font this Character belongs to.
81  /// @brief The colour to render this Character as.
83 
84  ///////////////////////////////////////////////////////////////////////////////
85  // Operator Methods
86 
87  /// @brief Assignment operator.
88  /// @param Other The other CharacterTraits to copy from.
89  /// @return Returns a reference to this.
90  CharacterTraits& operator=(const CharacterTraits& Other);
91 
92  /// @brief Equality comparison operator.
93  /// @param Other The other CharacterTraits to compare with.
94  /// @return Returns true if the two CharacterTraits are equal, false otherwise.
95  Boole operator==(const CharacterTraits& Other) const;
96  /// @brief Inequality comparison operator.
97  /// @param Other The other CharacterTraits to compare with.
98  /// @return Returns true if the two CharacterTraits are not equal, false otherwise.
99  Boole operator!=(const CharacterTraits& Other) const;
100 
101  ///////////////////////////////////////////////////////////////////////////////
102  // Serialization
103 
104  /// @brief Convert this class to an XML::Node ready for serialization.
105  /// @param ParentNode The point in the XML hierarchy that this renderable should be appended to.
106  void ProtoSerialize(XML::Node& ParentNode) const;
107  /// @brief Take the data stored in an XML Node and overwrite this object with it.
108  /// @param SelfRoot An XML::Node containing the data to populate this class with.
109  void ProtoDeSerialize(const XML::Node& SelfRoot);
110  /// @brief Get the name of the the XML tag this class will leave behind as its instances are serialized.
111  /// @return A string containing the name of this class.
112  static String GetSerializableName();
113  };//CharacterTraits
114 
115  /// @brief Convenience typedef for counted pointers to CharacterTraits.
117  }//UI
118 }//Mezzanine
119 
120 #endif
This class represents a collection of Glyphs in a common visual style.
Definition: font.h:55
bool Boole
Generally acts a single bit, true or false.
Definition: datatypes.h:173
CountedPtr< CharacterTraits > CharacterTraitsPtr
Convenience typedef for counted pointers to CharacterTraits.
A simple reference counting pointer.
Definition: countedptr.h:70
This is a simple class for holding 4 reals representing the colour any give object or lightsource can...
Definition: colourvalue.h:64
This class stores common data for determining the look of a Character.
FontData * CharFont
The font this Character belongs to.
A light-weight handle for manipulating nodes in DOM tree.
Definition: node.h:89
This class creates and encapsultes a character that can be used in text renders.
Definition: character.h:59
This file describes and implements a reference counted pointer that is NOT threadsafe.
CharacterStatus
An enum describing the status and boolean traits a Character can have.
ColourValue CharColour
The colour to render this Character as.
#define MEZZ_LIB
Some platforms require special decorations to denote what is exported/imported in a share library...
The bulk of the engine components go in this namspace.
Definition: actor.cpp:56
std::string String
A datatype used to a series of characters.
Definition: datatypes.h:159