Rev 16 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 16 | Rev 17 | ||
|---|---|---|---|
| Line 11... | Line 11... | ||
| 11 | #include "libOLED/displayDial.H" |
11 | #include "libOLED/displayDial.H" |
| 12 | #include <string.h> |
12 | #include <string.h> |
| 13 | 13 | ||
| 14 | static ap_math math; |
14 | static ap_math math; |
| 15 | 15 | ||
| - | 16 | displayDial_t::displayDial_t(display_t &display, |
|
| - | 17 | uint8_t x, uint8_t y, |
|
| - | 18 | uint8_t siz, |
|
| - | 19 | int16_t angle_low, |
|
| 16 | displayDial_t::displayDial_t(display_t &display, uint8_t x, uint8_t y, uint8_t siz, int16_t angle_low, int16_t angle_high) : m_display(display), |
20 | int16_t angle_high) : m_display(display), |
| - | 21 | m_xo(x), m_yo(y), m_siz(siz), |
|
| - | 22 | m_angleLow(angle_low), |
|
| 17 | m_xo(x), m_yo(y), m_siz(siz), m_angleLow(angle_low), m_angleRange(angle_high - angle_low), m_unitStr(nullptr) |
23 | m_angleRange(angle_high - angle_low), |
| - | 24 | m_unitStr(nullptr), |
|
| - | 25 | m_titleStr(nullptr) |
|
| 18 | { |
26 | { |
| 19 | } |
27 | } |
| 20 | 28 | ||
| - | 29 | displayDial_t::displayDial_t(display_t &display, |
|
| - | 30 | uint8_t x, uint8_t y, |
|
| - | 31 | uint8_t siz, |
|
| 21 | displayDial_t::displayDial_t(display_t &display, uint8_t x, uint8_t y, uint8_t siz, uint16_t angle_) : m_display(display), m_xo(x), m_yo(y), m_siz(siz), m_angleLow(-angle_), m_angleRange(2 * angle_), m_unitStr(nullptr) |
32 | uint16_t angle_) : m_display(display), |
| - | 33 | m_xo(x), m_yo(y), |
|
| - | 34 | m_siz(siz), |
|
| - | 35 | m_angleLow(-angle_), |
|
| - | 36 | m_angleRange(2 * angle_), |
|
| - | 37 | m_unitStr(nullptr), |
|
| - | 38 | m_titleStr(nullptr) |
|
| 22 | { |
39 | { |
| 23 | } |
40 | } |
| 24 | 41 | ||
| 25 | /* position is integer from 0 to SINE_STEPS */ |
42 | /* position is integer from 0 to SINE_STEPS */ |
| 26 | void displayDial_t::draw_needle(int16_t position) |
43 | void displayDial_t::draw_needle(int16_t position) |
| Line 101... | Line 118... | ||
| 101 | 118 | ||
| 102 | void displayDial_t::draw_value_items(int val, int dpCode, int width, int x, int y) |
119 | void displayDial_t::draw_value_items(int val, int dpCode, int width, int x, int y) |
| 103 | { |
120 | { |
| 104 | 121 | ||
| 105 | m_display.gotoxy(x, y); |
122 | m_display.gotoxy(x, y); |
| 106 | m_display.fontDigits(large_font, width, dpCode, val, WHITE); |
123 | m_display.fontDigits(medium_font, width, dpCode, val, WHITE); |
| 107 | m_display.gotoxy(x, y+16); |
124 | m_display.gotoxy(x, y + 16); |
| 108 | if (m_unitStr) |
125 | if (m_unitStr) |
| 109 | { |
126 | { |
| 110 | int l = strlen(m_unitStr); |
127 | int l = strlen(m_unitStr); |
| 111 | if (l > 4) |
128 | if (l > 4) |
| 112 | l = 4; |
129 | l = 4; |
| Line 126... | Line 143... | ||
| 126 | 143 | ||
| 127 | void displayFullDial_t::draw_limits() |
144 | void displayFullDial_t::draw_limits() |
| 128 | { |
145 | { |
| 129 | m_display.fontSigDigits(small_font, 0, 56, 0, 10, m_low, WHITE); |
146 | m_display.fontSigDigits(small_font, 0, 56, 0, 10, m_low, WHITE); |
| 130 | m_display.fontSigDigits(small_font, 120, 56, 1, 10, m_high, WHITE); |
147 | m_display.fontSigDigits(small_font, 120, 56, 1, 10, m_high, WHITE); |
| - | 148 | ||
| - | 149 | if (m_titleStr) |
|
| - | 150 | { |
|
| - | 151 | int i = strlen(m_titleStr); |
|
| - | 152 | m_display.gotoxy(64 - i * 5, 48); |
|
| - | 153 | m_display.printString(large_font, m_titleStr, i, WHITE); |
|
| - | 154 | } |
|
| 131 | } |
155 | } |
| 132 | 156 | ||
| 133 | void displayFullDial_t ::draw_value(int val, int dp) |
157 | void displayFullDial_t ::draw_value(int val, int dp, int digits) |
| 134 | { |
158 | { |
| 135 | draw_value_items(val, dp, 4, 30, 32); |
159 | draw_value_items(val, dp, digits, 30, 32); |
| 136 | } |
160 | } |
| 137 | 161 | ||
| 138 | //////////////////////////////////////////////////////////////////////////////// |
162 | //////////////////////////////////////////////////////////////////////////////// |
| 139 | displayLeftQuadrantDial_t::displayLeftQuadrantDial_t(display_t &display) : displayDial_t(display, 0, 60, 60, 90, 0){}; |
163 | displayLeftQuadrantDial_t::displayLeftQuadrantDial_t(display_t &display) : displayDial_t(display, 0, 60, 60, 90, 0){}; |
| 140 | 164 | ||
| 141 | void displayLeftQuadrantDial_t::draw_limits() |
165 | void displayLeftQuadrantDial_t::draw_limits() |
| 142 | { |
166 | { |
| 143 | m_display.fontSigDigits(small_font, 0, 10, false, display_t::NO_DECIMAL, m_high, WHITE); |
167 | m_display.fontSigDigits(small_font, 0, 10, false, display_t::NO_DECIMAL, m_high, WHITE); |
| 144 | m_display.fontSigDigits(small_font, 56, 56, true, display_t::NO_DECIMAL, m_low, WHITE); |
168 | m_display.fontSigDigits(small_font, 56, 56, true, display_t::NO_DECIMAL, m_low, WHITE); |
| - | 169 | ||
| - | 170 | if (m_titleStr) |
|
| - | 171 | { |
|
| - | 172 | int i = strlen(m_titleStr); |
|
| - | 173 | m_display.gotoxy(64 - i * 5, 0); |
|
| - | 174 | m_display.printString(large_font, m_titleStr, i, WHITE); |
|
| - | 175 | } |
|
| 145 | } |
176 | } |
| 146 | 177 | ||
| 147 | void displayLeftQuadrantDial_t ::draw_value(int val, int dp) |
178 | void displayLeftQuadrantDial_t ::draw_value(int val, int dp, int digits) |
| 148 | { |
179 | { |
| 149 | draw_value_items(val, dp, 3, 0, 32); |
180 | draw_value_items(val, dp, digits, 0, 32); |
| 150 | } |
181 | } |
| 151 | 182 | ||
| 152 | //////////////////////////////////////////////////////////////////////////////// |
183 | //////////////////////////////////////////////////////////////////////////////// |
| 153 | displayRightQuadrantDial_t::displayRightQuadrantDial_t(display_t &display) : displayDial_t(display, 127, 60, 60, -90, 0){}; |
184 | displayRightQuadrantDial_t::displayRightQuadrantDial_t(display_t &display) : displayDial_t(display, 127, 60, 60, -90, 0){}; |
| 154 | 185 | ||
| Line 156... | Line 187... | ||
| 156 | { |
187 | { |
| 157 | m_display.fontSigDigits(small_font, 128, 10, true, display_t::NO_DECIMAL, m_high, WHITE); |
188 | m_display.fontSigDigits(small_font, 128, 10, true, display_t::NO_DECIMAL, m_high, WHITE); |
| 158 | m_display.fontSigDigits(small_font, 128 - 56, 56, false, display_t::NO_DECIMAL, m_low, WHITE); |
189 | m_display.fontSigDigits(small_font, 128 - 56, 56, false, display_t::NO_DECIMAL, m_low, WHITE); |
| 159 | } |
190 | } |
| 160 | 191 | ||
| 161 | void displayRightQuadrantDial_t::draw_value(int val, int dp) |
192 | void displayRightQuadrantDial_t::draw_value(int val, int dp, int digits) |
| 162 | { |
193 | { |
| 163 | draw_value_items(val, dp, 3, 90, 32); |
194 | draw_value_items(val, dp, digits, 90, 32); |
| 164 | } |
195 | } |