25 #ifndef ACE_SEGMENT_WRITER_CHAR_WRITER_H
26 #define ACE_SEGMENT_WRITER_CHAR_WRITER_H
30 #include "PatternWriter.h"
32 namespace ace_segment {
41 const uint8_t kPatternUnknown = 0b00000000;
44 const uint8_t kNumCharPatterns = 128;
47 extern const uint8_t kCharPatterns[kNumCharPatterns];
57 template <
typename T_LED_MODULE>
70 const uint8_t charPatterns[] = kCharPatterns,
71 uint8_t numChars = kNumCharPatterns
74 mCharPatterns(charPatterns),
79 T_LED_MODULE&
ledModule() {
return mPatternWriter.ledModule(); }
85 uint8_t
getNumDigits()
const {
return mPatternWriter.getNumDigits(); }
92 if (pos >= mPatternWriter.getNumDigits())
return;
93 mPatternWriter.writePatternAt(pos,
getPattern(c));
98 uint8_t pattern = ((mNumChars == 0) || ((uint8_t) c < mNumChars))
99 ? pgm_read_byte(&mCharPatterns[(uint8_t) c])
106 mPatternWriter.writeDecimalPointAt(pos, state);
113 void clearToEnd(uint8_t pos) { mPatternWriter.clearToEnd(pos); }
122 const uint8_t*
const mCharPatterns;
123 uint8_t
const mNumChars;