@@ -234,10 +234,10 @@ template<typename NAME>
234
234
class TMenuEditItem : MenuEditItemBase {
235
235
private:
236
236
typedef typename NAME::type_t type_t ;
237
- static inline float unscale (const float value) { return value * (1 .0f / NAME::scale); }
238
- static inline float scale (const float value) { return value * NAME::scale; }
239
- static void load (void *ptr, const int32_t value) { *((type_t *)ptr) = unscale (value); }
237
+ static inline float scale (const float value) { return NAME::scale (value); }
238
+ static inline float unscale (const float value) { return NAME::unscale (value); }
240
239
static const char * to_string (const int32_t value) { return NAME::strfunc (unscale (value)); }
240
+ static void load (void *ptr, const int32_t value) { *((type_t *)ptr) = unscale (value); }
241
241
public:
242
242
FORCE_INLINE static void draw (const bool sel, const uint8_t row, PGM_P const pstr, type_t * const data, ...) {
243
243
MenuEditItemBase::draw (sel, row, pstr, NAME::strfunc (*(data)));
@@ -266,34 +266,35 @@ class TMenuEditItem : MenuEditItemBase {
266
266
// Provide a set of Edit Item Types which encompass a primitive
267
267
// type, a string function, and a scale factor for edit and display.
268
268
// These items call the Edit Item draw method passing the prepared string.
269
- #define DEFINE_MENU_EDIT_ITEM_TYPE (TYPE, NAME, STRFUNC, SCALE ) \
269
+ #define DEFINE_MENU_EDIT_ITEM_TYPE (TYPE, NAME, FIX, STRFUNC, SCALE, V... ) \
270
270
struct MenuEditItemInfo_ ##NAME { \
271
271
typedef TYPE type_t ; \
272
- static constexpr float scale = SCALE; \
273
- static inline const char * strfunc (const float value) { return STRFUNC ((TYPE)value); } \
272
+ static inline float scale (const float value) { return value * (SCALE) + (V+0 ); } \
273
+ static inline float unscale (const float value) { return value / (SCALE) + (V+0 ); } \
274
+ static inline const char * strfunc (const float value) { return STRFUNC ((TYPE)(FIX ? FIXFLOAT (value) : value)); } \
274
275
}; \
275
276
typedef TMenuEditItem<MenuEditItemInfo_##NAME> MenuItem_##NAME
276
277
277
278
// TYPE NAME STRFUNC SCALE
278
- DEFINE_MENU_EDIT_ITEM_TYPE (uint8_t , percent, ui8tostr4pct, 100.0 /255 ); // 100% right-justified
279
- DEFINE_MENU_EDIT_ITEM_TYPE (int16_t , int3, i16tostr3, 1 ); // 123, -12 right-justified
280
- DEFINE_MENU_EDIT_ITEM_TYPE (int16_t , int4, i16tostr4sign, 1 ); // 1234, -123 right-justified
281
- DEFINE_MENU_EDIT_ITEM_TYPE (int8_t , int8, i8tostr3, 1 ); // 123, -12 right-justified
282
- DEFINE_MENU_EDIT_ITEM_TYPE (uint8_t , uint8, ui8tostr3, 1 ); // 123 right-justified
283
- DEFINE_MENU_EDIT_ITEM_TYPE (uint16_t , uint16_3, ui16tostr3, 1 ); // 123 right-justified
284
- DEFINE_MENU_EDIT_ITEM_TYPE (uint16_t , uint16_4, ui16tostr4, 0.1 ); // 1234 right-justified
285
- DEFINE_MENU_EDIT_ITEM_TYPE (uint16_t , uint16_5, ui16tostr5, 0.01 ); // 12345 right-justified
286
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float3, ftostr3, 1 ); // 123 right-justified
287
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float52, ftostr42_52, 100 ); // _2.34, 12.34, -2.34 or 123.45, -23.45
288
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float43, ftostr43sign, 1000 ); // 1.234
289
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float5, ftostr5rj, 1 ); // 12345 right-justified
290
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float5_25, ftostr5rj, 0 .04f ); // 12345 right-justified (25 increment)
291
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float51, ftostr51rj, 10 ); // 1234.5 right-justified
292
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float41sign, ftostr41sign, 10 ); // +123.4
293
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float51sign, ftostr51sign, 10 ); // +1234.5
294
- DEFINE_MENU_EDIT_ITEM_TYPE (float , float52sign, ftostr52sign, 100 ); // +123.45
295
- DEFINE_MENU_EDIT_ITEM_TYPE (uint32_t , long5, ftostr5rj, 0 .01f ); // 12345 right-justified
296
- DEFINE_MENU_EDIT_ITEM_TYPE (uint32_t , long5_25, ftostr5rj, 0 .04f ); // 12345 right-justified (25 increment)
279
+ DEFINE_MENU_EDIT_ITEM_TYPE (uint8_t , percent, 0 , ui8tostr4pct, 100.0 /255 , 0.5 ); // 100% right-justified
280
+ DEFINE_MENU_EDIT_ITEM_TYPE (int16_t , int3, 0 , i16tostr3, 1 ); // 123, -12 right-justified
281
+ DEFINE_MENU_EDIT_ITEM_TYPE (int16_t , int4, 0 , i16tostr4sign, 1 ); // 1234, -123 right-justified
282
+ DEFINE_MENU_EDIT_ITEM_TYPE (int8_t , int8, 0 , i8tostr3, 1 ); // 123, -12 right-justified
283
+ DEFINE_MENU_EDIT_ITEM_TYPE (uint8_t , uint8, 0 , ui8tostr3, 1 ); // 123 right-justified
284
+ DEFINE_MENU_EDIT_ITEM_TYPE (uint16_t , uint16_3, 0 , ui16tostr3, 1 ); // 123 right-justified
285
+ DEFINE_MENU_EDIT_ITEM_TYPE (uint16_t , uint16_4, 0 , ui16tostr4, 0.1 ); // 1234 right-justified
286
+ DEFINE_MENU_EDIT_ITEM_TYPE (uint16_t , uint16_5, 0 , ui16tostr5, 0.01 ); // 12345 right-justified
287
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float3, 1 , ftostr3, 1 ); // 123 right-justified
288
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float52, 1 , ftostr42_52, 100 ); // _2.34, 12.34, -2.34 or 123.45, -23.45
289
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float43, 1 , ftostr43sign, 1000 ); // 1.234
290
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float5, 1 , ftostr5rj, 1 ); // 12345 right-justified
291
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float5_25, 1 , ftostr5rj, 0 .04f ); // 12345 right-justified (25 increment)
292
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float51, 1 , ftostr51rj, 10 ); // 1234.5 right-justified
293
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float41sign, 1 , ftostr41sign, 10 ); // +123.4
294
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float51sign, 1 , ftostr51sign, 10 ); // +1234.5
295
+ DEFINE_MENU_EDIT_ITEM_TYPE (float , float52sign, 1 , ftostr52sign, 100 ); // +123.45
296
+ DEFINE_MENU_EDIT_ITEM_TYPE (uint32_t , long5, 0 , ftostr5rj, 0 .01f ); // 12345 right-justified
297
+ DEFINE_MENU_EDIT_ITEM_TYPE (uint32_t , long5_25, 0 , ftostr5rj, 0 .04f ); // 12345 right-justified (25 increment)
297
298
298
299
class MenuItem_bool : public MenuEditItemBase {
299
300
public:
0 commit comments