GCC Code Coverage Report


Directory: ./
File: channeloutput/ColorOrder.cpp
Date: 2026-10-29 08:11:58
Exec Total Coverage
Lines: 89 162 54.9%
Functions: 7 8 87.5%
Branches: 55 135 40.7%

Line Branch Exec Source
1 /*
2 * This file is part of the Falcon Player (FPP) and is Copyright (C)
3 * 2013-2022 by the Falcon Player Developers.
4 *
5 * The Falcon Player (FPP) is free software, and is covered under
6 * multiple Open Source licenses. Please see the included 'LICENSES'
7 * file for descriptions of what files are covered by each license.
8 *
9 * This source file is covered under the LGPL v2.1 as described in the
10 * included LICENSE.LGPL file.
11 */
12
13 #include "ColorOrder.h"
14
15 835 FPPColorOrder ColorOrderFromString(const std::string& colorOrderStr) {
16
2/2
✓ Branch 0 taken 821 times.
✓ Branch 1 taken 14 times.
835 if (colorOrderStr == "RGB")
17 821 return FPPColorOrder::kColorOrderRGB;
18
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 12 times.
14 if (colorOrderStr == "RBG")
19 2 return FPPColorOrder::kColorOrderRBG;
20
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 9 times.
12 if (colorOrderStr == "GRB")
21 3 return FPPColorOrder::kColorOrderGRB;
22
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 7 times.
9 if (colorOrderStr == "GBR")
23 2 return FPPColorOrder::kColorOrderGBR;
24
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 5 times.
7 if (colorOrderStr == "BRG")
25 2 return FPPColorOrder::kColorOrderBRG;
26
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
5 if (colorOrderStr == "BGR")
27 2 return FPPColorOrder::kColorOrderBGR;
28
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
3 if (colorOrderStr == "W")
29 1 return FPPColorOrder::kColorOrderONE;
30
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 if (colorOrderStr == "RGBW")
31 1 return FPPColorOrder::kColorOrderRGBW;
32
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (colorOrderStr == "RBGW")
33 ✗ return FPPColorOrder::kColorOrderRBGW;
34
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (colorOrderStr == "GRBW")
35 ✗ return FPPColorOrder::kColorOrderGRBW;
36
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (colorOrderStr == "GBRW")
37 ✗ return FPPColorOrder::kColorOrderGBRW;
38
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (colorOrderStr == "BRGW")
39 ✗ return FPPColorOrder::kColorOrderBRGW;
40
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (colorOrderStr == "BGRW")
41 ✗ return FPPColorOrder::kColorOrderBGRW;
42
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (colorOrderStr == "WRGB")
43 1 return FPPColorOrder::kColorOrderWRGB;
44 ✗ if (colorOrderStr == "WRBG")
45 ✗ return FPPColorOrder::kColorOrderWRBG;
46 ✗ if (colorOrderStr == "WGRB")
47 ✗ return FPPColorOrder::kColorOrderWGRB;
48 ✗ if (colorOrderStr == "WGBR")
49 ✗ return FPPColorOrder::kColorOrderWGBR;
50 ✗ if (colorOrderStr == "WBRG")
51 ✗ return FPPColorOrder::kColorOrderWBRG;
52 ✗ if (colorOrderStr == "WBGR")
53 ✗ return FPPColorOrder::kColorOrderWBGR;
54 ✗ return FPPColorOrder::kColorOrderRGB;
55 }
56
57 771 const std::string ColorOrderToString(const FPPColorOrder& colorOrder) {
58
6/20
✓ Branch 0 taken 755 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
771 switch (colorOrder) {
59 755 case FPPColorOrder::kColorOrderRGB:
60
1/2
✓ Branch 0 taken 755 times.
✗ Branch 1 not taken.
1510 return std::string("RGB");
61 3 case FPPColorOrder::kColorOrderRBG:
62
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
6 return std::string("RBG");
63 3 case FPPColorOrder::kColorOrderGBR:
64
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
6 return std::string("GBR");
65 4 case FPPColorOrder::kColorOrderGRB:
66
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
8 return std::string("GRB");
67 3 case FPPColorOrder::kColorOrderBGR:
68
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
6 return std::string("BGR");
69 3 case FPPColorOrder::kColorOrderBRG:
70
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
6 return std::string("BRG");
71 ✗ case FPPColorOrder::kColorOrderONE:
72 ✗ return std::string("W");
73 ✗ case FPPColorOrder::kColorOrderRGBW:
74 ✗ return std::string("RGBW");
75 ✗ case FPPColorOrder::kColorOrderRBGW:
76 ✗ return std::string("RBGW");
77 ✗ case FPPColorOrder::kColorOrderGRBW:
78 ✗ return std::string("GRBW");
79 ✗ case FPPColorOrder::kColorOrderGBRW:
80 ✗ return std::string("GBRW");
81 ✗ case FPPColorOrder::kColorOrderBRGW:
82 ✗ return std::string("BRGW");
83 ✗ case FPPColorOrder::kColorOrderBGRW:
84 ✗ return std::string("BGRW");
85 ✗ case FPPColorOrder::kColorOrderWRGB:
86 ✗ return std::string("WRGB");
87 ✗ case FPPColorOrder::kColorOrderWRBG:
88 ✗ return std::string("WRBG");
89 ✗ case FPPColorOrder::kColorOrderWGRB:
90 ✗ return std::string("WGRB");
91 ✗ case FPPColorOrder::kColorOrderWGBR:
92 ✗ return std::string("WGBR");
93 ✗ case FPPColorOrder::kColorOrderWBRG:
94 ✗ return std::string("WBRG");
95 ✗ case FPPColorOrder::kColorOrderWBGR:
96 ✗ return std::string("WBGR");
97 }
98 ✗ return std::string("UNKNOWN");
99 }
100
101 569 int FPPColorOrder::redOffset() const {
102
5/10
✓ Branch 0 taken 563 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
569 switch (value) {
103 563 case FPPColorOrder::kColorOrderONE:
104 case FPPColorOrder::kColorOrderRGB:
105 case FPPColorOrder::kColorOrderRBG:
106 563 return 0;
107 2 case FPPColorOrder::kColorOrderGRB:
108 case FPPColorOrder::kColorOrderBRG:
109 2 return 1;
110 2 case FPPColorOrder::kColorOrderGBR:
111 case FPPColorOrder::kColorOrderBGR:
112 2 return 2;
113 1 case FPPColorOrder::kColorOrderRGBW:
114 case FPPColorOrder::kColorOrderRBGW:
115 1 return 0;
116 ✗ case FPPColorOrder::kColorOrderGRBW:
117 case FPPColorOrder::kColorOrderBRGW:
118 ✗ return 1;
119 ✗ case FPPColorOrder::kColorOrderGBRW:
120 case FPPColorOrder::kColorOrderBGRW:
121 ✗ return 2;
122 1 case FPPColorOrder::kColorOrderWRGB:
123 case FPPColorOrder::kColorOrderWRBG:
124 1 return 1;
125 ✗ case FPPColorOrder::kColorOrderWGRB:
126 case FPPColorOrder::kColorOrderWBRG:
127 ✗ return 2;
128 ✗ case FPPColorOrder::kColorOrderWGBR:
129 case FPPColorOrder::kColorOrderWBGR:
130 ✗ return 3;
131 }
132 ✗ return 0;
133 }
134 569 int FPPColorOrder::greenOffset() const {
135
5/10
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 562 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
569 switch (value) {
136 3 case FPPColorOrder::kColorOrderONE:
137 case FPPColorOrder::kColorOrderGRB:
138 case FPPColorOrder::kColorOrderGBR:
139 3 return 0;
140 562 case FPPColorOrder::kColorOrderRGB:
141 case FPPColorOrder::kColorOrderBGR:
142 562 return 1;
143 2 case FPPColorOrder::kColorOrderBRG:
144 case FPPColorOrder::kColorOrderRBG:
145 2 return 2;
146 ✗ case FPPColorOrder::kColorOrderGRBW:
147 case FPPColorOrder::kColorOrderGBRW:
148 ✗ return 0;
149 1 case FPPColorOrder::kColorOrderRGBW:
150 case FPPColorOrder::kColorOrderBGRW:
151 1 return 1;
152 ✗ case FPPColorOrder::kColorOrderBRGW:
153 case FPPColorOrder::kColorOrderRBGW:
154 ✗ return 2;
155 ✗ case FPPColorOrder::kColorOrderWGRB:
156 case FPPColorOrder::kColorOrderWGBR:
157 ✗ return 1;
158 1 case FPPColorOrder::kColorOrderWRGB:
159 case FPPColorOrder::kColorOrderWBGR:
160 1 return 2;
161 ✗ case FPPColorOrder::kColorOrderWBRG:
162 case FPPColorOrder::kColorOrderWRBG:
163 ✗ return 3;
164 }
165 ✗ return 0;
166 }
167 569 int FPPColorOrder::blueOffset() const {
168
5/10
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 562 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
569 switch (value) {
169 3 case FPPColorOrder::kColorOrderONE:
170 case FPPColorOrder::kColorOrderBRG:
171 case FPPColorOrder::kColorOrderBGR:
172 3 return 0;
173 2 case FPPColorOrder::kColorOrderGBR:
174 case FPPColorOrder::kColorOrderRBG:
175 2 return 1;
176 562 case FPPColorOrder::kColorOrderRGB:
177 case FPPColorOrder::kColorOrderGRB:
178 562 return 2;
179 ✗ case FPPColorOrder::kColorOrderBRGW:
180 case FPPColorOrder::kColorOrderBGRW:
181 ✗ return 0;
182 ✗ case FPPColorOrder::kColorOrderGBRW:
183 case FPPColorOrder::kColorOrderRBGW:
184 ✗ return 1;
185 1 case FPPColorOrder::kColorOrderRGBW:
186 case FPPColorOrder::kColorOrderGRBW:
187 1 return 2;
188 ✗ case FPPColorOrder::kColorOrderWBRG:
189 case FPPColorOrder::kColorOrderWBGR:
190 ✗ return 1;
191 ✗ case FPPColorOrder::kColorOrderWGBR:
192 case FPPColorOrder::kColorOrderWRBG:
193 ✗ return 2;
194 1 case FPPColorOrder::kColorOrderWRGB:
195 case FPPColorOrder::kColorOrderWGRB:
196 1 return 3;
197 }
198 ✗ return 0;
199 }
200
201 608 int FPPColorOrder::whiteOffset() const {
202
3/3
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 606 times.
608 switch (value) {
203 1 case FPPColorOrder::kColorOrderRGBW:
204 case FPPColorOrder::kColorOrderRBGW:
205 case FPPColorOrder::kColorOrderGRBW:
206 case FPPColorOrder::kColorOrderGBRW:
207 case FPPColorOrder::kColorOrderBRGW:
208 case FPPColorOrder::kColorOrderBGRW:
209 1 return 3;
210 1 case FPPColorOrder::kColorOrderWRGB:
211 case FPPColorOrder::kColorOrderWRBG:
212 case FPPColorOrder::kColorOrderWGRB:
213 case FPPColorOrder::kColorOrderWGBR:
214 case FPPColorOrder::kColorOrderWBRG:
215 case FPPColorOrder::kColorOrderWBGR:
216 1 return 0;
217 }
218 606 return -1;
219 }
220
221 159195 int FPPColorOrder::channelCount() const {
222
3/4
✓ Branch 0 taken 158872 times.
✓ Branch 1 taken 54 times.
✓ Branch 2 taken 269 times.
✗ Branch 3 not taken.
159195 switch (value) {
223 158872 case FPPColorOrder::kColorOrderRGB:
224 case FPPColorOrder::kColorOrderRBG:
225 case FPPColorOrder::kColorOrderGRB:
226 case FPPColorOrder::kColorOrderGBR:
227 case FPPColorOrder::kColorOrderBRG:
228 case FPPColorOrder::kColorOrderBGR:
229 158872 return 3;
230 54 case FPPColorOrder::kColorOrderONE:
231 54 return 1;
232 269 case FPPColorOrder::kColorOrderRGBW:
233 case FPPColorOrder::kColorOrderRBGW:
234 case FPPColorOrder::kColorOrderGRBW:
235 case FPPColorOrder::kColorOrderGBRW:
236 case FPPColorOrder::kColorOrderBRGW:
237 case FPPColorOrder::kColorOrderBGRW:
238 case FPPColorOrder::kColorOrderWRGB:
239 case FPPColorOrder::kColorOrderWRBG:
240 case FPPColorOrder::kColorOrderWGRB:
241 case FPPColorOrder::kColorOrderWGBR:
242 case FPPColorOrder::kColorOrderWBRG:
243 case FPPColorOrder::kColorOrderWBGR:
244 269 return 4;
245 }
246 ✗ return 3;
247 }
248
249 ✗ bool FPPColorOrder::hasWhite() const {
250 ✗ return channelCount() == 4;
251 }
252