MezzanineEngine 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
graphicsenumerations.h
1 // © Copyright 2010 - 2014 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 #ifndef _graphicsenumerations_h
41 #define _graphicsenumerations_h
42 ///////////////////////////////////////////////////////////////////////////////
43 //Any global enumerations shared between multiple classes in the Graphics namespace is to be declared here.
44 ///////////////////////////////////////
45 
46 namespace Mezzanine
47 {
48  namespace Graphics
49  {
50  /// @enum AspectRatio
51  /// @brief This is used primarily by the GraphicsManager to keep track of the supported and currently used aspect ratios.
53  {
54  AR_3_By_2 = 1, ///< 1.5
55  AR_4_By_3 = 2, ///< 1.334
56  AR_5_By_3 = 3, ///< 1.667
57  AR_5_By_4 = 4, ///< 1.25
58  AR_8_By_5 = 5, ///< 1.6
59  AR_16_By_9 = 6, ///< 1.778
60  AR_17_By_9 = 7, ///< 1.889
61  AR_1_85_By_1 = 8, ///< 1.85
62  AR_2_39_By_1 = 9 ///< 2.39
63  };
64 
65  /// @enum BillboardOrigin
66  /// @brief This is used by the BillboardSetProxy to describe which part of the billboard will be treated as the local origin for placement and rotation.
68  {
69  BBO_Top_Left, ///< Position/Rotate around the Top-Left corner of the billboard.
70  BBO_Top_Center, ///< Position/Rotate around the Top-Center of the billboard.
71  BBO_Top_Right, ///< Position/Rotate around the Top-Right corner of the billboard.
72  BBO_Center_Left, ///< Position/Rotate around the Center-Left side of the billboard.
73  BBO_Center, ///< Position/Rotate around the Center of the billboard.
74  BBO_Center_Right, ///< Position/Rotate around the Center-Right side of the billboard.
75  BBO_Bottom_Left, ///< Position/Rotate around the Bottom-Left corner of the billboard.
76  BBO_Bottom_Center, ///< Position/Rotate around the Bottom-Center of the billboard.
77  BBO_Bottom_Right ///< Position/Rotate around the Bottom-Right corner of the billboard.
78  };
79 
80  /// @enum BillboardRotation
81  /// @brief This is used by the BillboardSetProxy to decide how billboards should be rotated when they are requested to rotate.
83  {
84  BBR_Vertex, ///< Rotates the vertices of the billboard when rotated.
85  BBR_TexureCoord ///< Rotates the texture coordinates of the billboard when rotated, preserving the vertex positions.
86  };
87 
88  /// @enum BillboardType
89  /// @brief This is used by BillboardSetProxies to describe how the billboards are to be oriented.
91  {
92  BBT_Point, ///< Default setting. Billboard direction always faces the camera and is always oriented to be upright.
93  BBT_Oriented_Common, ///< Billboards are oriented around a common axis provided to the BillboardSetProxy, which will act as their local Y axis. Common Direction needs to be defined for this setting.
94  BBT_Oriented_Self, ///< Billboards are oriented around their own individually set direction axis, which will act as their local Y axis.
95  BBT_Perpendicular_Common, ///< Billboards are oriented around a common axis provided to the BillboardSetProxy, which will act as their local Z axis. Common Direction and Common Up Vector needs to be defined for this setting.
96  BBT_Perpendicular_Self ///< Billboards are oriented around their own individually set direction axis, which will act as their local Z axis. Common Up Vector needs to be defined for this setting.
97  };
98 
99  /// @enum CameraPolyMode
100  /// @brief This is used by CameraProxies to quickly set a different render mode that is useful for debugging graphics renders.
102  {
103  CPM_Points = 1, ///< Only points for each of the vertices are rendered.
104  CPM_WireFrame = 2, ///< Wireframes for all the meshes and geometry are rendered.
105  CPM_Solid = 3 ///< Normal rendering.
106  };
107 
108  /// @enum LightType
109  /// @brief This is used by LightProxies to describe how light is emitted from the proxy source.
111  {
112  LT_Directional = 0, ///< From one direction, like sunlight.
113  LT_Point = 1, ///< From a point in space, like a Torch, campfire, muzzle flash, Mutant Fireflies, bonfires, light bulbs, non-hooded lantern, the DnD D20 Light spell, explosions, and scotch tape separating from the roll in a unlit vacuum. There may be other uses, be creative.
114  LT_Spotlight = 2 ///< From a point emanating in a cone, like a flashlight, hooded lantern, really bright computer screens, flood lights, older style space heaters, Concert lights, camera flashes, etc...
115  };
116 
117  /// @enum OrientationMode
118  /// @brief This is used by CameraProxies to determine the orientation of the camera frustrum.
119  enum OrientationMode
120  {
121  OM_Degree_0 = 0,
122  OM_Degree_90 = 1,
123  OM_Degree_180 = 2,
124  OM_Degree_270 = 3,
125 
126  OM_Portrait = OM_Degree_0,
127  OM_LandscapeRight = OM_Degree_90,
128  OM_LandscapeLeft = OM_Degree_270
129  };
130 
131  /// @enum ProjectionType
132  /// @brief Values for storing how perspective should be interpretted
134  {
135  PT_Orthographic = 0, ///< No projection is used, objects appear to be flat.
136  PT_Perspective = 1 ///< Normal (realistic) perspective.
137  };
138 
139  /// @enum RenderSystem
140  /// @brief Used primarily by the graphics manager class during initialization.
141  /// @details This enum specifies which Rendersystem is to be used for rendering.
143  {
144  RS_Invalid = 0,
145  RS_DirectX9 = 1,
146  RS_DirectX10 = 2,
147  RS_DirectX11 = 3,
148  RS_OpenGL2 = 4,
149  RS_OpenGL3 = 5,
150  RS_OpenGL4 = 6,
151  RS_OpenGLES1 = 7,
152  RS_OpenGLES2 = 8
153  };
154  }//Graphics
155 }//Mezzanine
156 
157 #endif