Преглед изворни кода

Allow negative values in menus

Lionello Lunesu пре 10 година
родитељ
комит
0d35b1d0b8
1 измењених фајлова са 13 додато и 13 уклоњено
  1. 13
    13
      Marlin/ultralcd.cpp

+ 13
- 13
Marlin/ultralcd.cpp Прегледај датотеку

1004
 #define menu_edit_type(_type, _name, _strFunc, scale) \
1004
 #define menu_edit_type(_type, _name, _strFunc, scale) \
1005
     void menu_edit_ ## _name () \
1005
     void menu_edit_ ## _name () \
1006
     { \
1006
     { \
1007
-        if ((int32_t)encoderPosition < minEditValue) \
1008
-            encoderPosition = minEditValue; \
1007
+        if ((int32_t)encoderPosition < 0) \
1008
+            encoderPosition = 0; \
1009
         if ((int32_t)encoderPosition > maxEditValue) \
1009
         if ((int32_t)encoderPosition > maxEditValue) \
1010
             encoderPosition = maxEditValue; \
1010
             encoderPosition = maxEditValue; \
1011
         if (lcdDrawUpdate) \
1011
         if (lcdDrawUpdate) \
1012
-            lcd_implementation_drawedit(editLabel, _strFunc(((_type)encoderPosition) / scale)); \
1012
+            lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
1013
         if (LCD_CLICKED) \
1013
         if (LCD_CLICKED) \
1014
         { \
1014
         { \
1015
-            *((_type*)editValue) = ((_type)encoderPosition) / scale; \
1015
+            *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
1016
             lcd_quick_feedback(); \
1016
             lcd_quick_feedback(); \
1017
             currentMenu = prevMenu; \
1017
             currentMenu = prevMenu; \
1018
             encoderPosition = prevEncoderPosition; \
1018
             encoderPosition = prevEncoderPosition; \
1020
     } \
1020
     } \
1021
     void menu_edit_callback_ ## _name () \
1021
     void menu_edit_callback_ ## _name () \
1022
     { \
1022
     { \
1023
-        if ((int32_t)encoderPosition < minEditValue) \
1024
-            encoderPosition = minEditValue; \
1023
+        if ((int32_t)encoderPosition < 0) \
1024
+            encoderPosition = 0; \
1025
         if ((int32_t)encoderPosition > maxEditValue) \
1025
         if ((int32_t)encoderPosition > maxEditValue) \
1026
             encoderPosition = maxEditValue; \
1026
             encoderPosition = maxEditValue; \
1027
         if (lcdDrawUpdate) \
1027
         if (lcdDrawUpdate) \
1028
-            lcd_implementation_drawedit(editLabel, _strFunc(((_type)encoderPosition) / scale)); \
1028
+            lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
1029
         if (LCD_CLICKED) \
1029
         if (LCD_CLICKED) \
1030
         { \
1030
         { \
1031
-            *((_type*)editValue) = ((_type)encoderPosition) / scale; \
1031
+            *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
1032
             lcd_quick_feedback(); \
1032
             lcd_quick_feedback(); \
1033
             currentMenu = prevMenu; \
1033
             currentMenu = prevMenu; \
1034
             encoderPosition = prevEncoderPosition; \
1034
             encoderPosition = prevEncoderPosition; \
1046
         editLabel = pstr; \
1046
         editLabel = pstr; \
1047
         editValue = ptr; \
1047
         editValue = ptr; \
1048
         minEditValue = minValue * scale; \
1048
         minEditValue = minValue * scale; \
1049
-        maxEditValue = maxValue * scale; \
1050
-        encoderPosition = (*ptr) * scale; \
1049
+        maxEditValue = maxValue * scale - minEditValue; \
1050
+        encoderPosition = (*ptr) * scale - minEditValue; \
1051
     }\
1051
     }\
1052
     static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) \
1052
     static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) \
1053
     { \
1053
     { \
1060
         editLabel = pstr; \
1060
         editLabel = pstr; \
1061
         editValue = ptr; \
1061
         editValue = ptr; \
1062
         minEditValue = minValue * scale; \
1062
         minEditValue = minValue * scale; \
1063
-        maxEditValue = maxValue * scale; \
1064
-        encoderPosition = (*ptr) * scale; \
1063
+        maxEditValue = maxValue * scale - minEditValue; \
1064
+        encoderPosition = (*ptr) * scale - minEditValue; \
1065
         callbackFunc = callback;\
1065
         callbackFunc = callback;\
1066
     }
1066
     }
1067
 menu_edit_type(int, int3, itostr3, 1)
1067
 menu_edit_type(int, int3, itostr3, 1)
1183
   #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register
1183
   #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register
1184
      pinMode (SR_DATA_PIN, OUTPUT);
1184
      pinMode (SR_DATA_PIN, OUTPUT);
1185
      pinMode (SR_CLK_PIN, OUTPUT);
1185
      pinMode (SR_CLK_PIN, OUTPUT);
1186
-  #elif defined(SHIFT_CLK) 
1186
+  #elif defined(SHIFT_CLK)
1187
      pinMode(SHIFT_CLK,OUTPUT);
1187
      pinMode(SHIFT_CLK,OUTPUT);
1188
      pinMode(SHIFT_LD,OUTPUT);
1188
      pinMode(SHIFT_LD,OUTPUT);
1189
      pinMode(SHIFT_EN,OUTPUT);
1189
      pinMode(SHIFT_EN,OUTPUT);

Loading…
Откажи
Сачувај