4141#include " base/configbase.h"
4242
4343// C++ variants of C standard header files
44+ #include < array>
4445#include < cmath>
4546
4647// C++ standard header files
@@ -133,57 +134,39 @@ class GenericRGBColour final
133134
134135 friend GenericRGBColour ToRGBColour (const GenericColour<T>& col);
135136
136- // / Default constructor.
137- inline GenericRGBColour ()
138- {
139- mColour [RED] = 0.0 ;
140- mColour [GREEN] = 0.0 ;
141- mColour [BLUE] = 0.0 ;
142- }
137+ GenericRGBColour ()
138+ : mColour { T (), T (), T () }
139+ {}
143140
144141 // / Copy constructor.
145- inline GenericRGBColour (const GenericRGBColour& col)
146- {
147- mColour [RED] = col.mColour [RED];
148- mColour [GREEN] = col.mColour [GREEN];
149- mColour [BLUE] = col.mColour [BLUE];
150- }
142+ GenericRGBColour (const GenericRGBColour& col) = default ;
151143
152144 template <typename T2>
153145 inline explicit GenericRGBColour (const GenericRGBColour<T2>& col)
154- {
155- mColour [RED] = col.mColour [RED];
156- mColour [GREEN] = col.mColour [GREEN];
157- mColour [BLUE] = col.mColour [BLUE];
158- }
146+ : mColour{ T (col.mColour [RED]), T (col.mColour [GREEN]), T (col.mColour [BLUE])}
147+ {}
159148
160- inline explicit GenericRGBColour (T grey)
161- {
162- mColour [RED] = grey;
163- mColour [GREEN] = grey;
164- mColour [BLUE] = grey;
165- }
149+ explicit GenericRGBColour (T grey)
150+ : mColour{grey, grey, grey}
151+ {}
166152
167- inline explicit GenericRGBColour (T red, T green, T blue)
168- {
169- mColour [RED] = red;
170- mColour [GREEN] = green;
171- mColour [BLUE] = blue;
172- }
153+ explicit GenericRGBColour (T red, T green, T blue)
154+ : mColour{ red, green, blue }
155+ {}
173156
174- inline explicit GenericRGBColour (const GenericRGBFTColour<T>& col)
157+ explicit GenericRGBColour (const GenericRGBFTColour<T>& col)
175158 {
176159 mColour [RED] = col.red ();
177160 mColour [GREEN] = col.green ();
178161 mColour [BLUE] = col.blue ();
179162 }
180163
181164 template <int BIAS, bool QUANTIZE_TO_NEAREST, typename T2>
182- inline explicit GenericRGBColour (const GenericRGBEColour<BIAS,QUANTIZE_TO_NEAREST,T2>& col)
165+ explicit GenericRGBColour (const GenericRGBEColour<BIAS,QUANTIZE_TO_NEAREST,T2>& col)
183166 {
184167 if (col.mData [GenericRGBEColour<BIAS,QUANTIZE_TO_NEAREST,T2>::EXP] > std::numeric_limits<T2>::min ())
185168 {
186- double expFactor = ldexp (1.0 ,(int )col.mData [GenericRGBEColour<BIAS,QUANTIZE_TO_NEAREST,T2>::EXP]-(int )( BIAS+8 ));
169+ double expFactor = ldexp (1.0 ,(int )col.mData [GenericRGBEColour<BIAS,QUANTIZE_TO_NEAREST,T2>::EXP]-(BIAS+8 ));
187170 double quantizationFix = (QUANTIZE_TO_NEAREST? 0.0 : 0.5 );
188171 mColour [RED] = (col.mData [GenericRGBEColour<BIAS,QUANTIZE_TO_NEAREST,T2>::RED] + quantizationFix) * expFactor;
189172 mColour [GREEN] = (col.mData [GenericRGBEColour<BIAS,QUANTIZE_TO_NEAREST,T2>::GREEN] + quantizationFix) * expFactor;
@@ -204,13 +187,7 @@ class GenericRGBColour final
204187 mColour[BLUE] = col.Blue();
205188 }
206189*/
207- inline GenericRGBColour& operator =(const GenericRGBColour& col)
208- {
209- mColour [RED] = col.mColour [RED];
210- mColour [GREEN] = col.mColour [GREEN];
211- mColour [BLUE] = col.mColour [BLUE];
212- return *this ;
213- }
190+ GenericRGBColour& operator =(const GenericRGBColour& col) = default ;
214191
215192 inline T operator [](int idx) const { return mColour [idx]; }
216193 inline T& operator [](int idx) { return mColour [idx]; }
@@ -576,15 +553,12 @@ class GenericRGBColour final
576553 BLUE = 2
577554 };
578555
579- T mColour [ 3 ] ;
556+ std::array<T, 3 > mColour ;
580557
581558#if (NUM_COLOUR_CHANNELS == 3)
582559 inline explicit GenericRGBColour (const GenericColour<T>& col)
583- {
584- mColour [RED] = col.mColour [0 ];
585- mColour [GREEN] = col.mColour [1 ];
586- mColour [BLUE] = col.mColour [2 ];
587- }
560+ : mColour(col.mColour )
561+ {}
588562#else
589563 #error "TODO!"
590564#endif
@@ -690,11 +664,7 @@ class GenericRGBFTColour final
690664 {}
691665
692666 // / Copy constructor.
693- inline GenericRGBFTColour (const GenericRGBFTColour& col) :
694- mColour(col.mColour ),
695- mFilter(col.mFilter ),
696- mTransm(col.mTransm )
697- {}
667+ inline GenericRGBFTColour (const GenericRGBFTColour& col) = default;
698668
699669 template <typename T2>
700670 inline explicit GenericRGBFTColour (const GenericRGBFTColour<T2>& col) :
@@ -733,13 +703,7 @@ class GenericRGBFTColour final
733703 mTransm(expr[4 ])
734704 {}
735705
736- inline GenericRGBFTColour& operator =(const GenericRGBFTColour& col)
737- {
738- mColour = col.mColour ;
739- mFilter = col.mFilter ;
740- mTransm = col.mTransm ;
741- return *this ;
742- }
706+ inline GenericRGBFTColour& operator =(const GenericRGBFTColour& col) = default ;
743707
744708 inline GenericRGBColour<T> rgb () const { return mColour ; }
745709 inline GenericRGBColour<T>& rgb () { return mColour ; }
@@ -1008,10 +972,7 @@ class GenericRGBTColour final
1008972 {}
1009973
1010974 // / Copy constructor.
1011- inline GenericRGBTColour (const GenericRGBTColour& col) :
1012- mColour(col.mColour ),
1013- mTransm(col.mTransm )
1014- {}
975+ inline GenericRGBTColour (const GenericRGBTColour& col) = default;
1015976
1016977 template <typename T2>
1017978 inline explicit GenericRGBTColour (const GenericRGBTColour<T2>& col) :
@@ -1035,13 +996,7 @@ class GenericRGBTColour final
1035996 mTransm(col.transm())
1036997 {}
1037998*/
1038-
1039- inline GenericRGBTColour& operator =(const GenericRGBTColour& col)
1040- {
1041- mColour = col.mColour ;
1042- mTransm = col.mTransm ;
1043- return *this ;
1044- }
999+ inline GenericRGBTColour& operator =(const GenericRGBTColour& col) = default ;
10451000
10461001 inline GenericRGBColour<T> rgb () const { return mColour ; }
10471002 inline GenericRGBColour<T>& rgb () { return mColour ; }
@@ -1261,18 +1216,16 @@ class GenericColour final
12611216
12621217 // / Default constructor.
12631218 inline GenericColour ()
1264- {
1265- for (int i = 0 ; i < channels; i ++)
1266- mColour [i] = 0.0 ;
1267- }
1219+ : mColour{}
1220+ {}
12681221
12691222 // / Copy constructor.
1270- inline GenericColour (const GenericColour& col)
1271- {
1223+ inline GenericColour (const GenericColour& col) = default;
1224+ /* {
12721225 for (int i = 0; i < channels; i ++)
12731226 mColour[i] = col.mColour[i];
12741227 }
1275-
1228+ */
12761229 template <typename T2>
12771230 inline explicit GenericColour (const GenericColour<T2>& col)
12781231 {
@@ -1301,13 +1254,13 @@ class GenericColour final
13011254 mColour[i] = (col.mData[i] + 0.5) * exponent;
13021255 }
13031256*/
1304- inline GenericColour& operator =(const GenericColour& col)
1305- {
1257+ inline GenericColour& operator =(const GenericColour& col) = default ;
1258+ /* {
13061259 for (int i = 0; i < channels; i ++)
13071260 mColour[i] = col.mColour[i];
13081261 return *this;
13091262 }
1310-
1263+ */
13111264 inline T operator [](int idx) const { return mColour [idx]; }
13121265 inline T& operator [](int idx) { return mColour [idx]; }
13131266
@@ -1740,7 +1693,7 @@ class GenericColour final
17401693
17411694#endif
17421695
1743- T mColour [channels] ;
1696+ std::array<T,channels> mColour ;
17441697
17451698#if (NUM_COLOUR_CHANNELS == 3)
17461699 inline explicit GenericColour (const GenericRGBColour<T>& col)
0 commit comments