mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-08-11 18:26:27 +10:00
add High Contrast filter for maps
This commit is contained in:
@@ -12,12 +12,15 @@ enum MapRasterSourcePreset {
|
||||
osmAuto('osm_auto'),
|
||||
osmStandard('osm_standard'),
|
||||
osmDark('osm_dark'),
|
||||
osmDarkHC('osm_darkHC'),
|
||||
stamenTerrain('stamen_terrain'),
|
||||
alidadeSmoothDark('alidade_smooth_dark'),
|
||||
outdoors('outdoors'),
|
||||
osmBright('osm_bright'),
|
||||
outdoorsDark('outdoors_dark'),
|
||||
osmBrightDark('osm_bright_dark');
|
||||
outdoorsDarkHC('outdoors_darkHC'),
|
||||
osmBrightDark('osm_bright_dark'),
|
||||
osmBrightDarkHC('osm_bright_darkHC');
|
||||
|
||||
const MapRasterSourcePreset(this.id);
|
||||
|
||||
@@ -101,6 +104,12 @@ class MapRasterSourceCatalog {
|
||||
label: 'OpenStreetMap Dark',
|
||||
description: 'Standard OpenStreetMap tiles with an inverted dark filter',
|
||||
);
|
||||
static const MapRasterSourceDefinition osmDarkHC = MapRasterSourceDefinition(
|
||||
id: 'osm_darkHC',
|
||||
label: 'OpenStreetMap Dark High Contrast',
|
||||
description:
|
||||
'Standard OpenStreetMap tiles with an inverted high contrast dark filter',
|
||||
);
|
||||
static const MapRasterSourceDefinition stamenTerrain =
|
||||
MapRasterSourceDefinition(
|
||||
id: 'stamen_terrain',
|
||||
@@ -139,6 +148,14 @@ class MapRasterSourceCatalog {
|
||||
isStadia: true,
|
||||
allowsBulkDownload: true,
|
||||
);
|
||||
static const MapRasterSourceDefinition outdoorsDarkHC =
|
||||
MapRasterSourceDefinition(
|
||||
id: 'outdoors',
|
||||
label: 'Outdoors Dark High Contrast',
|
||||
description: 'High contrast dark version of the Outdoors map style',
|
||||
isStadia: true,
|
||||
allowsBulkDownload: true,
|
||||
);
|
||||
static const MapRasterSourceDefinition osmBrightDark =
|
||||
MapRasterSourceDefinition(
|
||||
id: 'osm_bright',
|
||||
@@ -147,6 +164,14 @@ class MapRasterSourceCatalog {
|
||||
isStadia: true,
|
||||
allowsBulkDownload: true,
|
||||
);
|
||||
static const MapRasterSourceDefinition osmBrightDarkHC =
|
||||
MapRasterSourceDefinition(
|
||||
id: 'osm_bright',
|
||||
label: 'OSM Bright Dark High Contrast',
|
||||
description: 'High contrast dark version of the OSM Bright map style',
|
||||
isStadia: true,
|
||||
allowsBulkDownload: true,
|
||||
);
|
||||
|
||||
static MapRasterSourceDefinition fromPreset(MapRasterSourcePreset preset) {
|
||||
switch (preset) {
|
||||
@@ -156,16 +181,22 @@ class MapRasterSourceCatalog {
|
||||
return osmStandard;
|
||||
case MapRasterSourcePreset.osmDark:
|
||||
return osmDark;
|
||||
case MapRasterSourcePreset.osmDarkHC:
|
||||
return osmDarkHC;
|
||||
case MapRasterSourcePreset.alidadeSmoothDark:
|
||||
return alidadeSmoothDark;
|
||||
case MapRasterSourcePreset.outdoors:
|
||||
return outdoors;
|
||||
case MapRasterSourcePreset.outdoorsDark:
|
||||
return outdoorsDark;
|
||||
case MapRasterSourcePreset.outdoorsDarkHC:
|
||||
return outdoorsDarkHC;
|
||||
case MapRasterSourcePreset.osmBright:
|
||||
return osmBright;
|
||||
case MapRasterSourcePreset.osmBrightDark:
|
||||
return osmBrightDark;
|
||||
case MapRasterSourcePreset.osmBrightDarkHC:
|
||||
return osmBrightDarkHC;
|
||||
case MapRasterSourcePreset.stamenTerrain:
|
||||
return stamenTerrain;
|
||||
}
|
||||
@@ -335,8 +366,11 @@ class MapTileCacheService extends ChangeNotifier {
|
||||
) {
|
||||
switch (MapRasterSourcePreset.fromId(settings.mapRasterSourceId)) {
|
||||
case MapRasterSourcePreset.osmDark:
|
||||
case MapRasterSourcePreset.osmDarkHC:
|
||||
case MapRasterSourcePreset.outdoorsDark:
|
||||
case MapRasterSourcePreset.outdoorsDarkHC:
|
||||
case MapRasterSourcePreset.osmBrightDark:
|
||||
case MapRasterSourcePreset.osmBrightDarkHC:
|
||||
return true;
|
||||
case MapRasterSourcePreset.osmAuto:
|
||||
return brightness == Brightness.dark;
|
||||
@@ -349,6 +383,25 @@ class MapTileCacheService extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
static bool _isHighContrastDarkPreset(MapRasterSourcePreset preset) {
|
||||
switch (preset) {
|
||||
case MapRasterSourcePreset.osmDarkHC:
|
||||
case MapRasterSourcePreset.outdoorsDarkHC:
|
||||
case MapRasterSourcePreset.osmBrightDarkHC:
|
||||
return true;
|
||||
case MapRasterSourcePreset.osmAuto:
|
||||
case MapRasterSourcePreset.osmStandard:
|
||||
case MapRasterSourcePreset.osmDark:
|
||||
case MapRasterSourcePreset.stamenTerrain:
|
||||
case MapRasterSourcePreset.alidadeSmoothDark:
|
||||
case MapRasterSourcePreset.outdoors:
|
||||
case MapRasterSourcePreset.outdoorsDark:
|
||||
case MapRasterSourcePreset.osmBright:
|
||||
case MapRasterSourcePreset.osmBrightDark:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static const ColorFilter _darkMapFilter = ColorFilter.matrix([
|
||||
-0.0850,
|
||||
-0.2861,
|
||||
@@ -371,6 +424,28 @@ class MapTileCacheService extends ChangeNotifier {
|
||||
1,
|
||||
0,
|
||||
]);
|
||||
static const ColorFilter _darkHCMapFilter = ColorFilter.matrix([
|
||||
0.7634200013,
|
||||
-1.9008999332,
|
||||
-0.1915199924,
|
||||
0,
|
||||
338.15,
|
||||
-0.5665799987,
|
||||
-0.5720999709,
|
||||
-0.1915199924,
|
||||
0,
|
||||
338.15,
|
||||
-0.5665799987,
|
||||
-1.9008999332,
|
||||
1.1384799335,
|
||||
0,
|
||||
338.15,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
]);
|
||||
|
||||
CacheManager get _concreteCacheManager => cacheManager as CacheManager;
|
||||
|
||||
@@ -393,7 +468,13 @@ class MapTileCacheService extends ChangeNotifier {
|
||||
);
|
||||
|
||||
if (shouldApplyDarkFilter) {
|
||||
layer = ColorFiltered(colorFilter: _darkMapFilter, child: layer);
|
||||
final activePreset = MapRasterSourcePreset.fromId(
|
||||
appSettingsService.settings.mapRasterSourceId,
|
||||
);
|
||||
final filter = _isHighContrastDarkPreset(activePreset)
|
||||
? _darkHCMapFilter
|
||||
: _darkMapFilter;
|
||||
layer = ColorFiltered(colorFilter: filter, child: layer);
|
||||
}
|
||||
|
||||
if (opacity < 1) {
|
||||
|
||||
Reference in New Issue
Block a user