feat: Extend high contrast mode to entire UI
- Add global high contrast mode flag in BitmapHelpers - Modify quantization thresholds for high contrast rendering - Update ditherer classes (Atkinson, Floyd-Steinberg) for contrast mode - Add displayContrast setting with persistence - Add "High Contrast" toggle in display settings - Apply high contrast mode on startup from saved settings
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "CategorySettingsActivity.h"
|
||||
|
||||
#include <BitmapHelpers.h>
|
||||
#include <GfxRenderer.h>
|
||||
#include <HardwareSerial.h>
|
||||
|
||||
@@ -115,6 +116,11 @@ void CategorySettingsActivity::toggleCurrentSetting() {
|
||||
// Toggle the boolean value using the member pointer
|
||||
const bool currentValue = SETTINGS.*(setting.valuePtr);
|
||||
SETTINGS.*(setting.valuePtr) = !currentValue;
|
||||
|
||||
// Handle side effects for specific settings
|
||||
if (setting.valuePtr == &CrossPointSettings::displayContrast) {
|
||||
setHighContrastMode(SETTINGS.displayContrast == 1);
|
||||
}
|
||||
} else if (setting.type == SettingType::ENUM && setting.valuePtr != nullptr) {
|
||||
const uint8_t currentValue = SETTINGS.*(setting.valuePtr);
|
||||
SETTINGS.*(setting.valuePtr) = (currentValue + 1) % static_cast<uint8_t>(setting.enumValues.size());
|
||||
|
||||
@@ -19,6 +19,7 @@ const SettingInfo displaySettings[displaySettingsCount] = {
|
||||
SettingInfo::Enum("Sleep Screen Cover Mode", &CrossPointSettings::sleepScreenCoverMode, {"Fit", "Crop", "Actual"}),
|
||||
SettingInfo::Enum("Sleep Screen Cover Filter", &CrossPointSettings::sleepScreenCoverFilter,
|
||||
{"None", "Contrast", "Inverted"}),
|
||||
SettingInfo::Toggle("High Contrast", &CrossPointSettings::displayContrast),
|
||||
SettingInfo::Enum("Status Bar", &CrossPointSettings::statusBar,
|
||||
{"None", "No Progress", "Full w/ Percentage", "Full w/ Progress Bar", "Progress Bar"}),
|
||||
SettingInfo::Enum("Hide Battery %", &CrossPointSettings::hideBatteryPercentage, {"Never", "In Reader", "Always"}),
|
||||
|
||||
Reference in New Issue
Block a user