Repo created
This commit is contained in:
parent
4af19165ec
commit
68073add76
12458 changed files with 12350765 additions and 2 deletions
113
docs/STYLES.md
Normal file
113
docs/STYLES.md
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
# Map styling and icons
|
||||
|
||||
Here is the basic workflow to update styles:
|
||||
1. Edit the styles file you want, e.g. [`Roads.mapcss`](../data/styles/default/include/Roads.mapcss)
|
||||
2. Rebuild the app or run the `tools/unix/generate_drules.sh` script
|
||||
3. Test how your changes look in the app
|
||||
4. Commit your edits
|
||||
5. Send a pull request!
|
||||
|
||||
Please prepend `[styles]` to your commit message and add [Developers Certificate of Origin](CONTRIBUTING.md#legal-requirements) to it.
|
||||
|
||||
Please check [a list of current styling issues](https://codeberg.org/comaps/comaps/issues?q=&type=all&sort=&labels=410439)
|
||||
and ["icons" issues](https://codeberg.org/comaps/comaps/issues?q=&type=all&sort=&labels=446883).
|
||||
|
||||
An overview of currently used icons can be found in the [Wiki](https://codeberg.org/comaps/comaps/wiki/Icons).
|
||||
|
||||
## Requirements
|
||||
|
||||
To work with styles first [clone the CoMaps repository](INSTALL.md#getting-sources).
|
||||
|
||||
Install a `protobuf` python package with `pip`
|
||||
```
|
||||
pip install "protobuf<3.21"
|
||||
```
|
||||
or with your OS package manager, e.g for Ubuntu
|
||||
```
|
||||
sudo apt install python3-protobuf
|
||||
```
|
||||
|
||||
To run the `generate_symbols.sh` script, you need to install `optipng`, e.g. for Ubuntu
|
||||
```
|
||||
sudo apt install optipng
|
||||
```
|
||||
|
||||
If you use WSL on Windows 10 you might need to run [X Server](INSTALL.md#windows-10-wsl) before running `generate_symbols.sh`
|
||||
|
||||
## Files
|
||||
|
||||
Map styles are defined in text files located in `data/styles/default/include/`:
|
||||
* Forests, rivers, buildings, etc. [`Basemap.mapcss`](../data/styles/default/include/Basemap.mapcss)
|
||||
* Their text labels [`Basemap_label.mapcss`](../data/styles/default/include/Basemap_label.mapcss)
|
||||
* Roads, bridges, foot and bicycle paths, etc. [`Roads.mapcss`](../data/styles/default/include/Roads.mapcss)
|
||||
* Their text labels [`Roads_label.mapcss`](../data/styles/default/include/Roads_label.mapcss)
|
||||
* Icons for POIs and other features [`Icons.mapcss`](../data/styles/default/include/Icons.mapcss)
|
||||
* City-specific subway networks [`Subways.mapcss`](../data/styles/default/include/Subways.mapcss)
|
||||
* Light (default) theme colors: [`light/colors.mapcss`](../data/styles/default/light/colors.mapcss)
|
||||
* Dark/night theme colors: [`dark/colors.mapcss`](../data/styles/default/dark/colors.mapcss)
|
||||
* Priorities of overlays (icons, captions..) [`priorities_4_overlays.prio.txt`](../data/styles/default/include/priorities_4_overlays.prio.txt)
|
||||
* Priorities of lines and areas [`priorities_3_FG.prio.txt`](../data/styles/default/include/priorities_3_FG.prio.txt), [`priorities_2_BG-top.prio.txt`](../data/styles/default/include/priorities_2_BG-top.prio.txt), [`priorities_1_BG-by-size.prio.txt`](../data/styles/default/include/priorities_1_BG-by-size.prio.txt)
|
||||
|
||||
There is a separate set of these style files for the navigation mode in `data/styles/vehicle/`.
|
||||
|
||||
Icons are stored in [`data/styles/default/light/symbols/`](../data/styles/default/light/symbols/) and their dark/night counterparts are in [`data/styles/default/dark/symbols/`](../data/styles/default/dark/symbols/).
|
||||
|
||||
## How to add a new icon
|
||||
|
||||
1. Add an svg icon to `data/styles/default/light/symbols/` (and to `dark` too)
|
||||
preferably look for icons in [collections CoMaps uses already](../data/copyright.html#icons)
|
||||
2. Add icon rendering/visibility rules into `data/styles/default/include/Icons.mapcss` and to "navigation style" `data/styles/vehicle/include/Icons.mapcss`
|
||||
3. Rebuild the app
|
||||
* Or run `tools/unix/generate_symbols.sh` to add new icons into skin files and `tools/unix/generate_drules.sh` to generate drawing rules for the new icons
|
||||
5. [Test](#testing-your-changes) your changes
|
||||
|
||||
## How to add a new map feature / POI type
|
||||
|
||||
1. Add it into `data/mapcss-mapping.csv` (or better replace existing `deprecated` line) to make CoMaps import it from OSM
|
||||
2. If necessary merge similar tags in via `data/replaced_tags.txt`
|
||||
3. Define a priority for the new feature type in e.g. [`priorities_4_overlays.prio.txt`](../data/styles/default/include/priorities_4_overlays.prio.txt) and/or other priorities files
|
||||
4. Add a new icon (see [above](#how-to-add-a-new-icon)) and/or other styling (area, line..)
|
||||
5. If a new POI should be OSM-addable/editable then add it to `data/editor.config`
|
||||
6. Add the English string (and optionally translations e.g. for your native language) into iOS and Android type strings
|
||||
e strings
|
||||
7. Add search keywords into `data/categories.txt`
|
||||
8. Add new or fix current classifier tests at `generator/generator_tests/osm_type_tests.cpp` if you can
|
||||
9. [Test](#testing-your-changes) your changes
|
||||
10. Relax and wait for the next maps update :)
|
||||
|
||||
## Testing your changes
|
||||
|
||||
The most convenient way is using [the desktop app](INSTALL.md#desktop-app).
|
||||
(there is a "Designer" version of it also, which facilitates development
|
||||
by rebuilding styles and symbols quickly, but it's broken as of now, please help fix it!)
|
||||
|
||||
To test on Android or iOS device either re-build the app or put
|
||||
the compiled style files (e.g. `drules_proto_default_light.bin`) into
|
||||
a `styles/` subfolder of maps directory on the device
|
||||
(e.g. `Android/data/app.comaps/files/styles/`).
|
||||
|
||||
Changing display zoom level for features (e.g. from z16- to z14-) might
|
||||
not take effect until map's visibility/scale index is rebuilt:
|
||||
1. [Build](INSTALL.md#desktop-app) the `generator_tool` binary
|
||||
2. Put a map file, e.g. `Georgia.mwm` into the `data/` folder in the repository
|
||||
3. Run
|
||||
```
|
||||
../omim-build-release/generator_tool --generate_index=true --output="Georgia"
|
||||
```
|
||||
4. The index of `Georgia.mwm` will be updated in place
|
||||
|
||||
A whole map needs to be [regenerated](MAPS.md) for the changes to take effect if:
|
||||
* the visibility change crosses a geometry index boundary
|
||||
* e.g. `area` style rules are added for a feature that didn't have them before
|
||||
* a new feature type is added or the mapping of existing one is changed
|
||||
|
||||
## Technical details
|
||||
|
||||
Map style files syntax is based on [MapCSS/0.2](https://wiki.openstreetmap.org/wiki/MapCSS/0.2),
|
||||
though the specification is not supported in full and there are CoMaps-specific extensions to it.
|
||||
|
||||
The `tools/unix/generate_drules.sh` script uses a customized version of [Kothic](https://codeberg.org/comaps/kothic)
|
||||
stylesheet processor to compile MapCSS files into binary drawing rules files `data/drules_proto*.bin`.
|
||||
The processor also produces text versions of these files (`data/drules_proto*.txt`) to ease debugging.
|
||||
|
||||
The `tools/unix/generate_symbols.sh` script assembles all icons into skin files in various resolutions (`data/resources-*/symbols.png` and `symbols.sdf`).
|
||||
Loading…
Add table
Add a link
Reference in a new issue