1 /**
2  * @file
3  * @brief Header file for TextReader class
4  * @author Jonathan Thomas <jonathan@openshot.org>
5  *
6  * @ref License
7  */
8 
9 /* LICENSE
10  *
11  * Copyright (c) 2008-2019 OpenShot Studios, LLC
12  * <http://www.openshotstudios.com/>. This file is part of
13  * OpenShot Library (libopenshot), an open-source project dedicated to
14  * delivering high quality video editing and animation solutions to the
15  * world. For more information visit <http://www.openshot.org/>.
16  *
17  * OpenShot Library (libopenshot) is free software: you can redistribute it
18  * and/or modify it under the terms of the GNU Lesser General Public License
19  * as published by the Free Software Foundation, either version 3 of the
20  * License, or (at your option) any later version.
21  *
22  * OpenShot Library (libopenshot) is distributed in the hope that it will be
23  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU Lesser General Public License for more details.
26  *
27  * You should have received a copy of the GNU Lesser General Public License
28  * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>.
29  */
30 
31 #ifndef OPENSHOT_ENUMS_H
32 #define OPENSHOT_ENUMS_H
33 
34 
35 namespace openshot
36 {
37 	/// This enumeration determines how clips are aligned to their parent container.
38 	enum GravityType
39 	{
40 		GRAVITY_TOP_LEFT,		///< Align clip to the top left of its parent
41 		GRAVITY_TOP,			///< Align clip to the top center of its parent
42 		GRAVITY_TOP_RIGHT,		///< Align clip to the top right of its parent
43 		GRAVITY_LEFT,			///< Align clip to the left of its parent (middle aligned)
44 		GRAVITY_CENTER,			///< Align clip to the center of its parent (middle aligned)
45 		GRAVITY_RIGHT,			///< Align clip to the right of its parent (middle aligned)
46 		GRAVITY_BOTTOM_LEFT,	///< Align clip to the bottom left of its parent
47 		GRAVITY_BOTTOM,			///< Align clip to the bottom center of its parent
48 		GRAVITY_BOTTOM_RIGHT	///< Align clip to the bottom right of its parent
49 	};
50 
51 	/// This enumeration determines how clips are scaled to fit their parent container.
52 	enum ScaleType
53 	{
54 		SCALE_CROP,		///< Scale the clip until both height and width fill the canvas (cropping the overlap)
55 		SCALE_FIT,		///< Scale the clip until either height or width fills the canvas (with no cropping)
56 		SCALE_STRETCH,	///< Scale the clip until both height and width fill the canvas (distort to fit)
57 		SCALE_NONE		///< Do not scale the clip
58 	};
59 
60 	/// This enumeration determines what parent a clip should be aligned to.
61 	enum AnchorType
62 	{
63 		ANCHOR_CANVAS,	///< Anchor the clip to the canvas
64 		ANCHOR_VIEWPORT	///< Anchor the clip to the viewport (which can be moved / animated around the canvas)
65 	};
66 
67 	/// This enumeration determines the display format of the clip's frame number (if any). Useful for debugging.
68 	enum FrameDisplayType
69 	{
70 		FRAME_DISPLAY_NONE,     ///< Do not display the frame number
71 		FRAME_DISPLAY_CLIP,     ///< Display the clip's internal frame number
72 		FRAME_DISPLAY_TIMELINE, ///< Display the timeline's frame number
73 		FRAME_DISPLAY_BOTH      ///< Display both the clip's and timeline's frame number
74 	};
75 
76 	/// This enumeration determines the strategy when mixing audio with other clips.
77 	enum VolumeMixType
78 	{
79 		VOLUME_MIX_NONE,   	///< Do not apply any volume mixing adjustments. Just add the samples together.
80 		VOLUME_MIX_AVERAGE,	///< Evenly divide the overlapping clips volume keyframes, so that the sum does not exceed 100%
81 		VOLUME_MIX_REDUCE 	///< Reduce volume by about %25, and then mix (louder, but could cause pops if the sum exceeds 100%)
82 	};
83 
84 
85 	/// This enumeration determines the distortion type of Distortion Effect.
86 	enum DistortionType
87 	{
88 		HARD_CLIPPING,
89 		SOFT_CLIPPING,
90 		EXPONENTIAL,
91 		FULL_WAVE_RECTIFIER,
92 		HALF_WAVE_RECTIFIER,
93 	};
94 
95 	/// This enumeration determines the filter type of ParametricEQ Effect.
96 	enum FilterType
97 	{
98 		LOW_PASS,
99 		HIGH_PASS,
100 		LOW_SHELF,
101 		HIGH_SHELF,
102 		BAND_PASS,
103 		BAND_STOP,
104 		PEAKING_NOTCH,
105 	};
106 
107 	/// This enumeration determines the FFT size.
108 	enum FFTSize
109 	{
110 		FFT_SIZE_32,
111 		FFT_SIZE_64,
112 		FFT_SIZE_128,
113 		FFT_SIZE_256,
114 		FFT_SIZE_512,
115 		FFT_SIZE_1024,
116 		FFT_SIZE_2048,
117 		FFT_SIZE_4096,
118 		FFT_SIZE_8192,
119 	};
120 
121 	/// This enumeration determines the hop size.
122 	enum HopSize {
123         HOP_SIZE_2,
124         HOP_SIZE_4,
125         HOP_SIZE_8,
126     };
127 
128 	/// This enumeration determines the window type.
129 	enum WindowType {
130         RECTANGULAR,
131         BART_LETT,
132         HANN,
133         HAMMING,
134     };
135 
136 }
137 #endif
138