@@ -126,6 +126,35 @@ class AnimationData {
126126 return *this ;
127127 }
128128
129+ static std::string continuousToString (enum Continuous c) {
130+ switch (c) {
131+ case CONTINUOUS:
132+ return " true" ;
133+ case NONCONTINUOUS:
134+ return " false" ;
135+ case DEFAULT:
136+ return " null" ;
137+ }
138+ }
139+
140+ static enum Direction directionFromString (const std::string & d) {
141+ if (std::strcmp (d.c_str (), " BACKWARD" ) == 0 ) return BACKWARD;
142+ else if (std::strcmp (d.c_str (), " FORWARD" ) == 0 ) return FORWARD;
143+ else {
144+ std::cerr << " Bad direction string " << d << std::endl;
145+ return FORWARD;
146+ }
147+ }
148+
149+ static std::string directionToString (enum Direction d) {
150+ switch (d) {
151+ case FORWARD:
152+ return " FORWARD" ;
153+ case BACKWARD:
154+ return " BACKWARD" ;
155+ }
156+ }
157+
129158 AnimationData () = default ;
130159
131160 explicit AnimationData (nlohmann::json data) {
@@ -168,11 +197,8 @@ class AnimationData {
168197 else if (!data[" delayMod" ].is_null ())
169198 std::cerr << " Bad type for delayMod" << data[" delayMod" ].type_name () << std::endl;
170199
171- if (data[" direction" ].is_string () && std::strcmp (data[" direction" ].get <std::string>().c_str (), " FORWARD" ) == 0 )
172- setDirection (FORWARD);
173- else if (data[" direction" ].is_string () &&
174- std::strcmp (data[" direction" ].get <std::string>().c_str (), " BACKWARD" ) == 0 )
175- setDirection (BACKWARD);
200+ if (data[" direction" ].is_string ())
201+ setDirection (directionFromString (data[" direction" ].get <std::string>()));
176202 else if (!data[" direction" ].is_null ())
177203 std::cerr << " Bad type for direction" << data[" direction" ].type_name () << std::endl;
178204
@@ -220,17 +246,7 @@ class AnimationData {
220246 data.append (std::to_string (center));
221247
222248 data.append (R"( ,"continuous":)" );
223- switch (continuous) {
224- case CONTINUOUS:
225- data.append (" true" );
226- break ;
227- case NONCONTINUOUS:
228- data.append (" false" );
229- break ;
230- case DEFAULT:
231- data.append (" null" );
232- break ;
233- }
249+ data.append (continuousToString (continuous));
234250
235251 data.append (R"( ,"delay":)" );
236252 data.append (std::to_string (delay));
@@ -239,14 +255,7 @@ class AnimationData {
239255 data.append (std::to_string (delay_mod));
240256
241257 data.append (R"( ,"direction":")" );
242- switch (direction) {
243- case FORWARD:
244- data.append (" FORWARD" );
245- break ;
246- case BACKWARD:
247- data.append (" BACKWARD" );
248- break ;
249- }
258+ data.append (directionToString (direction));
250259
251260 data.append (R"( ","distance":)" );
252261 data.append (std::to_string (distance));
0 commit comments