| 1260 | bool SdCardFont::hasStyle(uint8_t style) const { return styles_[style & (MAX_STYLES - 1)].present; } |
| 1261 | |
| 1262 | uint8_t SdCardFont::resolveStyle(uint8_t style) const { |
| 1263 | static const uint8_t kFallbacks[MAX_STYLES][MAX_STYLES] = { |
| 1264 | // REGULAR: REGULAR -> BOLD -> ITALIC -> BOLD_ITALIC |
| 1265 | {EpdFontFamily::REGULAR, EpdFontFamily::BOLD, EpdFontFamily::ITALIC, EpdFontFamily::BOLD_ITALIC}, |
| 1266 | // BOLD: BOLD -> REGULAR -> BOLD_ITALIC -> ITALIC |
| 1267 | {EpdFontFamily::BOLD, EpdFontFamily::REGULAR, EpdFontFamily::BOLD_ITALIC, EpdFontFamily::ITALIC}, |
| 1268 | // ITALIC: ITALIC -> REGULAR -> BOLD_ITALIC -> BOLD |
| 1269 | {EpdFontFamily::ITALIC, EpdFontFamily::REGULAR, EpdFontFamily::BOLD_ITALIC, EpdFontFamily::BOLD}, |
| 1270 | // BOLD_ITALIC: BOLD_ITALIC -> BOLD -> ITALIC -> REGULAR |
| 1271 | {EpdFontFamily::BOLD_ITALIC, EpdFontFamily::BOLD, EpdFontFamily::ITALIC, EpdFontFamily::REGULAR}, |
| 1272 | }; |
| 1273 | |
| 1274 | const uint8_t styleBits = style & (MAX_STYLES - 1); |
| 1275 | for (uint8_t candidate : kFallbacks[styleBits]) { |
| 1276 | if (styles_[candidate].present) return candidate; |
| 1277 | } |
| 1278 | return EpdFontFamily::REGULAR; |
| 1279 | } |
| 1280 | |
| 1281 | uint8_t SdCardFont::resolveStyleMask(uint8_t styleMask) const { |
| 1282 | uint8_t resolvedMask = 0; |
no outgoing calls
no test coverage detected