@@ -109,36 +109,6 @@ class ExpressiveEyes : public BaseComponent {
109109 WINK_RIGHT, // /< Right eye closed
110110 };
111111
112- /* *
113- * @brief Get string name for expression
114- * @param expr Expression enum
115- * @return String name of expression
116- */
117- static constexpr const char *expression_name (Expression expr) {
118- switch (expr) {
119- case Expression::NEUTRAL:
120- return " Neutral" ;
121- case Expression::HAPPY:
122- return " Happy" ;
123- case Expression::SAD:
124- return " Sad" ;
125- case Expression::ANGRY:
126- return " Angry" ;
127- case Expression::SURPRISED:
128- return " Surprised" ;
129- case Expression::SLEEPY:
130- return " Sleepy" ;
131- case Expression::BORED:
132- return " Bored" ;
133- case Expression::WINK_LEFT:
134- return " Wink Left" ;
135- case Expression::WINK_RIGHT:
136- return " Wink Right" ;
137- default :
138- return " Unknown" ;
139- }
140- }
141-
142112 /* *
143113 * @brief Configuration for expressive eyes
144114 */
@@ -239,3 +209,45 @@ class ExpressiveEyes : public BaseComponent {
239209 float redraw_timer_{0 .0f };
240210};
241211} // namespace espp
212+
213+ // for libfmt formatting of ExpressiveEyes::Expression
214+ template <> struct fmt ::formatter<espp::ExpressiveEyes::Expression> {
215+ constexpr auto parse (format_parse_context &ctx) { return ctx.begin (); }
216+ template <typename FormatContext>
217+ auto format (const espp::ExpressiveEyes::Expression &expr, FormatContext &ctx) const {
218+ std::string name;
219+ switch (expr) {
220+ case espp::ExpressiveEyes::Expression::NEUTRAL:
221+ name = " NEUTRAL" ;
222+ break ;
223+ case espp::ExpressiveEyes::Expression::HAPPY:
224+ name = " HAPPY" ;
225+ break ;
226+ case espp::ExpressiveEyes::Expression::SAD:
227+ name = " SAD" ;
228+ break ;
229+ case espp::ExpressiveEyes::Expression::ANGRY:
230+ name = " ANGRY" ;
231+ break ;
232+ case espp::ExpressiveEyes::Expression::SURPRISED:
233+ name = " SURPRISED" ;
234+ break ;
235+ case espp::ExpressiveEyes::Expression::SLEEPY:
236+ name = " SLEEPY" ;
237+ break ;
238+ case espp::ExpressiveEyes::Expression::BORED:
239+ name = " BORED" ;
240+ break ;
241+ case espp::ExpressiveEyes::Expression::WINK_LEFT:
242+ name = " WINK_LEFT" ;
243+ break ;
244+ case espp::ExpressiveEyes::Expression::WINK_RIGHT:
245+ name = " WINK_RIGHT" ;
246+ break ;
247+ default :
248+ name = " UNKNOWN" ;
249+ break ;
250+ }
251+ return fmt::format_to (ctx.out (), " {}" , name);
252+ }
253+ };
0 commit comments