diff --git a/bin/assets/atlases/bnb.eta b/bin/assets/atlases/bnb.eta index 94abe5787..49f1f7951 100644 Binary files a/bin/assets/atlases/bnb.eta and b/bin/assets/atlases/bnb.eta differ diff --git a/bin/assets/atlases/bnb/007.png b/bin/assets/atlases/bnb/007.png new file mode 100644 index 000000000..47719c332 Binary files /dev/null and b/bin/assets/atlases/bnb/007.png differ diff --git a/bin/assets/atlases/bnb/008.png b/bin/assets/atlases/bnb/008.png new file mode 100644 index 000000000..79b897b7b Binary files /dev/null and b/bin/assets/atlases/bnb/008.png differ diff --git a/bin/assets/atlases/bnb/009.png b/bin/assets/atlases/bnb/009.png new file mode 100644 index 000000000..e05b6da7d Binary files /dev/null and b/bin/assets/atlases/bnb/009.png differ diff --git a/bin/assets/atlases/bnb/010.png b/bin/assets/atlases/bnb/010.png new file mode 100644 index 000000000..975c4e864 Binary files /dev/null and b/bin/assets/atlases/bnb/010.png differ diff --git a/bin/assets/atlases/bnb/011.png b/bin/assets/atlases/bnb/011.png new file mode 100644 index 000000000..5994c1b3a Binary files /dev/null and b/bin/assets/atlases/bnb/011.png differ diff --git a/bin/assets/atlases/bnb/012.png b/bin/assets/atlases/bnb/012.png new file mode 100644 index 000000000..659b8e9f1 Binary files /dev/null and b/bin/assets/atlases/bnb/012.png differ diff --git a/bin/assets/atlases/bnb/013.png b/bin/assets/atlases/bnb/013.png new file mode 100644 index 000000000..0812de2f0 Binary files /dev/null and b/bin/assets/atlases/bnb/013.png differ diff --git a/bin/assets/atlases/bnb/014.png b/bin/assets/atlases/bnb/014.png new file mode 100644 index 000000000..529bb345f Binary files /dev/null and b/bin/assets/atlases/bnb/014.png differ diff --git a/bin/assets/atlases/bnb/015.png b/bin/assets/atlases/bnb/015.png new file mode 100644 index 000000000..e11ab80f1 Binary files /dev/null and b/bin/assets/atlases/bnb/015.png differ diff --git a/bin/assets/atlases/bnb/016.png b/bin/assets/atlases/bnb/016.png new file mode 100644 index 000000000..e52246b64 Binary files /dev/null and b/bin/assets/atlases/bnb/016.png differ diff --git a/bin/assets/atlases/bnb/017.png b/bin/assets/atlases/bnb/017.png new file mode 100644 index 000000000..8ae94e130 Binary files /dev/null and b/bin/assets/atlases/bnb/017.png differ diff --git a/bin/assets/atlases/bnb/018.png b/bin/assets/atlases/bnb/018.png new file mode 100644 index 000000000..45ff17d40 Binary files /dev/null and b/bin/assets/atlases/bnb/018.png differ diff --git a/bin/assets/atlases/bnb/019.png b/bin/assets/atlases/bnb/019.png new file mode 100644 index 000000000..d7f37a1f3 Binary files /dev/null and b/bin/assets/atlases/bnb/019.png differ diff --git a/bin/assets/atlases/bnb/020.png b/bin/assets/atlases/bnb/020.png new file mode 100644 index 000000000..f56a76790 Binary files /dev/null and b/bin/assets/atlases/bnb/020.png differ diff --git a/bin/assets/atlases/bnb/021.png b/bin/assets/atlases/bnb/021.png new file mode 100644 index 000000000..d76f624a9 Binary files /dev/null and b/bin/assets/atlases/bnb/021.png differ diff --git a/bin/assets/atlases/bnb/022.png b/bin/assets/atlases/bnb/022.png new file mode 100644 index 000000000..abf4b4d7d Binary files /dev/null and b/bin/assets/atlases/bnb/022.png differ diff --git a/bin/assets/atlases/bnb/023.png b/bin/assets/atlases/bnb/023.png new file mode 100644 index 000000000..7dd864500 Binary files /dev/null and b/bin/assets/atlases/bnb/023.png differ diff --git a/bin/assets/atlases/bnb/024.png b/bin/assets/atlases/bnb/024.png new file mode 100644 index 000000000..c8428d165 Binary files /dev/null and b/bin/assets/atlases/bnb/024.png differ diff --git a/bin/assets/atlases/bnb/025.png b/bin/assets/atlases/bnb/025.png new file mode 100644 index 000000000..c0bb9e50c Binary files /dev/null and b/bin/assets/atlases/bnb/025.png differ diff --git a/bin/assets/atlases/bnb/026.png b/bin/assets/atlases/bnb/026.png new file mode 100644 index 000000000..b8c670266 Binary files /dev/null and b/bin/assets/atlases/bnb/026.png differ diff --git a/bin/assets/atlases/bnb/027.png b/bin/assets/atlases/bnb/027.png new file mode 100644 index 000000000..e6ff36b46 Binary files /dev/null and b/bin/assets/atlases/bnb/027.png differ diff --git a/bin/assets/atlases/bnb/028.png b/bin/assets/atlases/bnb/028.png new file mode 100644 index 000000000..35f4a031f Binary files /dev/null and b/bin/assets/atlases/bnb/028.png differ diff --git a/bin/assets/atlases/bnb/029.png b/bin/assets/atlases/bnb/029.png new file mode 100644 index 000000000..5460ddd62 Binary files /dev/null and b/bin/assets/atlases/bnb/029.png differ diff --git a/bin/assets/atlases/bnb/030.png b/bin/assets/atlases/bnb/030.png new file mode 100644 index 000000000..4c12b1d22 Binary files /dev/null and b/bin/assets/atlases/bnb/030.png differ diff --git a/bin/assets/atlases/bnb/031.png b/bin/assets/atlases/bnb/031.png new file mode 100644 index 000000000..9c033e61e Binary files /dev/null and b/bin/assets/atlases/bnb/031.png differ diff --git a/bin/assets/atlases/bnb/032.png b/bin/assets/atlases/bnb/032.png new file mode 100644 index 000000000..e141ab6ee Binary files /dev/null and b/bin/assets/atlases/bnb/032.png differ diff --git a/bin/assets/atlases/bnb/033.png b/bin/assets/atlases/bnb/033.png new file mode 100644 index 000000000..a79230311 Binary files /dev/null and b/bin/assets/atlases/bnb/033.png differ diff --git a/bin/assets/atlases/bnb/034.png b/bin/assets/atlases/bnb/034.png new file mode 100644 index 000000000..7e4c6796d Binary files /dev/null and b/bin/assets/atlases/bnb/034.png differ diff --git a/bin/assets/atlases/bnb/035.png b/bin/assets/atlases/bnb/035.png new file mode 100644 index 000000000..33f53fb85 Binary files /dev/null and b/bin/assets/atlases/bnb/035.png differ diff --git a/bin/assets/atlases/bnb/036.png b/bin/assets/atlases/bnb/036.png new file mode 100644 index 000000000..2f89b9b9b Binary files /dev/null and b/bin/assets/atlases/bnb/036.png differ diff --git a/bin/assets/atlases/bnb/037.png b/bin/assets/atlases/bnb/037.png new file mode 100644 index 000000000..6031c9fb4 Binary files /dev/null and b/bin/assets/atlases/bnb/037.png differ diff --git a/bin/assets/atlases/bnb/038.png b/bin/assets/atlases/bnb/038.png new file mode 100644 index 000000000..c46283cfb Binary files /dev/null and b/bin/assets/atlases/bnb/038.png differ diff --git a/bin/assets/atlases/bnb/039.png b/bin/assets/atlases/bnb/039.png new file mode 100644 index 000000000..8d101239b Binary files /dev/null and b/bin/assets/atlases/bnb/039.png differ diff --git a/bin/assets/atlases/bnb/040.png b/bin/assets/atlases/bnb/040.png new file mode 100644 index 000000000..7352ab564 Binary files /dev/null and b/bin/assets/atlases/bnb/040.png differ diff --git a/bin/assets/atlases/bnb/041.png b/bin/assets/atlases/bnb/041.png new file mode 100644 index 000000000..9d1099413 Binary files /dev/null and b/bin/assets/atlases/bnb/041.png differ diff --git a/bin/assets/atlases/bnb/042.png b/bin/assets/atlases/bnb/042.png new file mode 100644 index 000000000..10f0b2295 Binary files /dev/null and b/bin/assets/atlases/bnb/042.png differ diff --git a/bin/assets/atlases/bnb/043.png b/bin/assets/atlases/bnb/043.png new file mode 100644 index 000000000..6cc5e0776 Binary files /dev/null and b/bin/assets/atlases/bnb/043.png differ diff --git a/bin/assets/atlases/bnb/044.png b/bin/assets/atlases/bnb/044.png new file mode 100644 index 000000000..ea2d453a3 Binary files /dev/null and b/bin/assets/atlases/bnb/044.png differ diff --git a/bin/assets/atlases/bnb/045.png b/bin/assets/atlases/bnb/045.png new file mode 100644 index 000000000..3d032870d Binary files /dev/null and b/bin/assets/atlases/bnb/045.png differ diff --git a/bin/assets/atlases/bnb/046.png b/bin/assets/atlases/bnb/046.png new file mode 100644 index 000000000..922db72f3 Binary files /dev/null and b/bin/assets/atlases/bnb/046.png differ diff --git a/bin/assets/atlases/bnb/047.png b/bin/assets/atlases/bnb/047.png new file mode 100644 index 000000000..3b9dcfaca Binary files /dev/null and b/bin/assets/atlases/bnb/047.png differ diff --git a/bin/assets/atlases/bnb/048.png b/bin/assets/atlases/bnb/048.png new file mode 100644 index 000000000..3eee99f3a Binary files /dev/null and b/bin/assets/atlases/bnb/048.png differ diff --git a/bin/assets/atlases/bnb/049.png b/bin/assets/atlases/bnb/049.png new file mode 100644 index 000000000..9a8567e3c Binary files /dev/null and b/bin/assets/atlases/bnb/049.png differ diff --git a/bin/assets/atlases/bnb/050.png b/bin/assets/atlases/bnb/050.png new file mode 100644 index 000000000..c4be71f14 Binary files /dev/null and b/bin/assets/atlases/bnb/050.png differ diff --git a/bin/assets/atlases/bnb/051.png b/bin/assets/atlases/bnb/051.png new file mode 100644 index 000000000..a30d3de28 Binary files /dev/null and b/bin/assets/atlases/bnb/051.png differ diff --git a/bin/assets/atlases/bnb/052.png b/bin/assets/atlases/bnb/052.png new file mode 100644 index 000000000..50cf3e2ab Binary files /dev/null and b/bin/assets/atlases/bnb/052.png differ diff --git a/bin/assets/atlases/bnb/053.png b/bin/assets/atlases/bnb/053.png new file mode 100644 index 000000000..da948fad0 Binary files /dev/null and b/bin/assets/atlases/bnb/053.png differ diff --git a/bin/assets/atlases/bnb/054.png b/bin/assets/atlases/bnb/054.png new file mode 100644 index 000000000..3780efcea Binary files /dev/null and b/bin/assets/atlases/bnb/054.png differ diff --git a/bin/assets/atlases/bnb/055.png b/bin/assets/atlases/bnb/055.png new file mode 100644 index 000000000..069e25395 Binary files /dev/null and b/bin/assets/atlases/bnb/055.png differ diff --git a/bin/assets/atlases/bnb/056.png b/bin/assets/atlases/bnb/056.png new file mode 100644 index 000000000..d36acd1e0 Binary files /dev/null and b/bin/assets/atlases/bnb/056.png differ diff --git a/bin/assets/atlases/bnb/057.png b/bin/assets/atlases/bnb/057.png new file mode 100644 index 000000000..132b70611 Binary files /dev/null and b/bin/assets/atlases/bnb/057.png differ diff --git a/bin/assets/atlases/bnb/058.png b/bin/assets/atlases/bnb/058.png new file mode 100644 index 000000000..2d3f19483 Binary files /dev/null and b/bin/assets/atlases/bnb/058.png differ diff --git a/bin/assets/atlases/bnb/059.png b/bin/assets/atlases/bnb/059.png new file mode 100644 index 000000000..10911959e Binary files /dev/null and b/bin/assets/atlases/bnb/059.png differ diff --git a/bin/assets/atlases/bnb/060.png b/bin/assets/atlases/bnb/060.png new file mode 100644 index 000000000..5c4c9c6f3 Binary files /dev/null and b/bin/assets/atlases/bnb/060.png differ diff --git a/bin/assets/atlases/bnb/061.png b/bin/assets/atlases/bnb/061.png new file mode 100644 index 000000000..cad7fe244 Binary files /dev/null and b/bin/assets/atlases/bnb/061.png differ diff --git a/bin/assets/atlases/bnb/062.png b/bin/assets/atlases/bnb/062.png new file mode 100644 index 000000000..541a8df1f Binary files /dev/null and b/bin/assets/atlases/bnb/062.png differ diff --git a/bin/assets/atlases/bnb/063.png b/bin/assets/atlases/bnb/063.png new file mode 100644 index 000000000..b68e46777 Binary files /dev/null and b/bin/assets/atlases/bnb/063.png differ diff --git a/bin/assets/atlases/bnb/064.png b/bin/assets/atlases/bnb/064.png new file mode 100644 index 000000000..64c87032d Binary files /dev/null and b/bin/assets/atlases/bnb/064.png differ diff --git a/bin/assets/atlases/bnb/065.png b/bin/assets/atlases/bnb/065.png new file mode 100644 index 000000000..57a4676c3 Binary files /dev/null and b/bin/assets/atlases/bnb/065.png differ diff --git a/bin/assets/atlases/bnb/066.png b/bin/assets/atlases/bnb/066.png new file mode 100644 index 000000000..0a5a1b27a Binary files /dev/null and b/bin/assets/atlases/bnb/066.png differ diff --git a/bin/assets/atlases/bnb/067.png b/bin/assets/atlases/bnb/067.png new file mode 100644 index 000000000..24bc98e9d Binary files /dev/null and b/bin/assets/atlases/bnb/067.png differ diff --git a/bin/assets/atlases/bnb/068.png b/bin/assets/atlases/bnb/068.png new file mode 100644 index 000000000..fa5722197 Binary files /dev/null and b/bin/assets/atlases/bnb/068.png differ diff --git a/bin/assets/atlases/bnb/069.png b/bin/assets/atlases/bnb/069.png new file mode 100644 index 000000000..bb0f6b576 Binary files /dev/null and b/bin/assets/atlases/bnb/069.png differ diff --git a/bin/assets/atlases/bnb/070.png b/bin/assets/atlases/bnb/070.png new file mode 100644 index 000000000..07921cce3 Binary files /dev/null and b/bin/assets/atlases/bnb/070.png differ diff --git a/bin/assets/atlases/bnb/071.png b/bin/assets/atlases/bnb/071.png new file mode 100644 index 000000000..5e139b602 Binary files /dev/null and b/bin/assets/atlases/bnb/071.png differ diff --git a/bin/assets/atlases/bnb/072.png b/bin/assets/atlases/bnb/072.png new file mode 100644 index 000000000..0f1a0ff5b Binary files /dev/null and b/bin/assets/atlases/bnb/072.png differ diff --git a/bin/assets/atlases/bnb/073.png b/bin/assets/atlases/bnb/073.png new file mode 100644 index 000000000..fd481e42e Binary files /dev/null and b/bin/assets/atlases/bnb/073.png differ diff --git a/bin/assets/atlases/bnb/074.png b/bin/assets/atlases/bnb/074.png new file mode 100644 index 000000000..3682936f2 Binary files /dev/null and b/bin/assets/atlases/bnb/074.png differ diff --git a/bin/assets/atlases/bnb/075.png b/bin/assets/atlases/bnb/075.png new file mode 100644 index 000000000..aab9d967c Binary files /dev/null and b/bin/assets/atlases/bnb/075.png differ diff --git a/bin/assets/atlases/bnb/076.png b/bin/assets/atlases/bnb/076.png new file mode 100644 index 000000000..063539f29 Binary files /dev/null and b/bin/assets/atlases/bnb/076.png differ diff --git a/bin/assets/atlases/bnb/077.png b/bin/assets/atlases/bnb/077.png new file mode 100644 index 000000000..f40548906 Binary files /dev/null and b/bin/assets/atlases/bnb/077.png differ diff --git a/bin/assets/atlases/bnb/078.png b/bin/assets/atlases/bnb/078.png new file mode 100644 index 000000000..efd401499 Binary files /dev/null and b/bin/assets/atlases/bnb/078.png differ diff --git a/bin/assets/atlases/bnb/079.png b/bin/assets/atlases/bnb/079.png new file mode 100644 index 000000000..9f0e67aa6 Binary files /dev/null and b/bin/assets/atlases/bnb/079.png differ diff --git a/bin/assets/atlases/bnb/080.png b/bin/assets/atlases/bnb/080.png new file mode 100644 index 000000000..cfe541f2a Binary files /dev/null and b/bin/assets/atlases/bnb/080.png differ diff --git a/bin/assets/atlases/bnb/081.png b/bin/assets/atlases/bnb/081.png new file mode 100644 index 000000000..b5707a980 Binary files /dev/null and b/bin/assets/atlases/bnb/081.png differ diff --git a/bin/assets/atlases/bnb/082.png b/bin/assets/atlases/bnb/082.png new file mode 100644 index 000000000..88003f285 Binary files /dev/null and b/bin/assets/atlases/bnb/082.png differ diff --git a/bin/assets/atlases/bnb/083.png b/bin/assets/atlases/bnb/083.png new file mode 100644 index 000000000..6de8a2cd8 Binary files /dev/null and b/bin/assets/atlases/bnb/083.png differ diff --git a/bin/assets/atlases/bnb/084.png b/bin/assets/atlases/bnb/084.png new file mode 100644 index 000000000..354292c93 Binary files /dev/null and b/bin/assets/atlases/bnb/084.png differ diff --git a/bin/assets/atlases/bnb/085.png b/bin/assets/atlases/bnb/085.png new file mode 100644 index 000000000..5db964b2e Binary files /dev/null and b/bin/assets/atlases/bnb/085.png differ diff --git a/bin/assets/atlases/bnb/086.png b/bin/assets/atlases/bnb/086.png new file mode 100644 index 000000000..40eaa37cf Binary files /dev/null and b/bin/assets/atlases/bnb/086.png differ diff --git a/bin/assets/atlases/bnb/087.png b/bin/assets/atlases/bnb/087.png new file mode 100644 index 000000000..f25b84110 Binary files /dev/null and b/bin/assets/atlases/bnb/087.png differ diff --git a/bin/assets/atlases/bnb/088.png b/bin/assets/atlases/bnb/088.png new file mode 100644 index 000000000..e56346477 Binary files /dev/null and b/bin/assets/atlases/bnb/088.png differ diff --git a/bin/assets/atlases/bnb/089.png b/bin/assets/atlases/bnb/089.png new file mode 100644 index 000000000..b3141966a Binary files /dev/null and b/bin/assets/atlases/bnb/089.png differ diff --git a/bin/assets/atlases/bnb/090.png b/bin/assets/atlases/bnb/090.png new file mode 100644 index 000000000..e39e8e9c7 Binary files /dev/null and b/bin/assets/atlases/bnb/090.png differ diff --git a/bin/assets/atlases/bnb/091.png b/bin/assets/atlases/bnb/091.png new file mode 100644 index 000000000..1fa0be3f1 Binary files /dev/null and b/bin/assets/atlases/bnb/091.png differ diff --git a/bin/assets/atlases/bnb/092.png b/bin/assets/atlases/bnb/092.png new file mode 100644 index 000000000..590fdf90a Binary files /dev/null and b/bin/assets/atlases/bnb/092.png differ diff --git a/bin/assets/atlases/bnb/093.png b/bin/assets/atlases/bnb/093.png new file mode 100644 index 000000000..f47678484 Binary files /dev/null and b/bin/assets/atlases/bnb/093.png differ diff --git a/bin/assets/atlases/bnb/094.png b/bin/assets/atlases/bnb/094.png new file mode 100644 index 000000000..a7c00fe0d Binary files /dev/null and b/bin/assets/atlases/bnb/094.png differ diff --git a/bin/assets/atlases/bnb/095.png b/bin/assets/atlases/bnb/095.png new file mode 100644 index 000000000..427270e62 Binary files /dev/null and b/bin/assets/atlases/bnb/095.png differ diff --git a/bin/assets/atlases/bnb/096.png b/bin/assets/atlases/bnb/096.png new file mode 100644 index 000000000..9f583e967 Binary files /dev/null and b/bin/assets/atlases/bnb/096.png differ diff --git a/bin/assets/atlases/bnb/097.png b/bin/assets/atlases/bnb/097.png new file mode 100644 index 000000000..2fc4451a5 Binary files /dev/null and b/bin/assets/atlases/bnb/097.png differ diff --git a/bin/assets/atlases/bnb/098.png b/bin/assets/atlases/bnb/098.png new file mode 100644 index 000000000..d7b272df5 Binary files /dev/null and b/bin/assets/atlases/bnb/098.png differ diff --git a/bin/assets/atlases/bnb/099.png b/bin/assets/atlases/bnb/099.png new file mode 100644 index 000000000..16d9b770e Binary files /dev/null and b/bin/assets/atlases/bnb/099.png differ diff --git a/bin/assets/atlases/bnb/100.png b/bin/assets/atlases/bnb/100.png new file mode 100644 index 000000000..6b786ec02 Binary files /dev/null and b/bin/assets/atlases/bnb/100.png differ diff --git a/bin/assets/atlases/bnb/101.png b/bin/assets/atlases/bnb/101.png new file mode 100644 index 000000000..9546e1f36 Binary files /dev/null and b/bin/assets/atlases/bnb/101.png differ diff --git a/bin/assets/atlases/bnb/102.png b/bin/assets/atlases/bnb/102.png new file mode 100644 index 000000000..b22a49e30 Binary files /dev/null and b/bin/assets/atlases/bnb/102.png differ diff --git a/bin/assets/atlases/bnb/103.png b/bin/assets/atlases/bnb/103.png new file mode 100644 index 000000000..9a994334d Binary files /dev/null and b/bin/assets/atlases/bnb/103.png differ diff --git a/bin/assets/atlases/bnb/104.png b/bin/assets/atlases/bnb/104.png new file mode 100644 index 000000000..397143359 Binary files /dev/null and b/bin/assets/atlases/bnb/104.png differ diff --git a/bin/assets/atlases/bnb/105.png b/bin/assets/atlases/bnb/105.png new file mode 100644 index 000000000..f21c4edd5 Binary files /dev/null and b/bin/assets/atlases/bnb/105.png differ diff --git a/bin/assets/atlases/bnb/106.png b/bin/assets/atlases/bnb/106.png new file mode 100644 index 000000000..cf18c8135 Binary files /dev/null and b/bin/assets/atlases/bnb/106.png differ diff --git a/bin/assets/atlases/bnb/107.png b/bin/assets/atlases/bnb/107.png new file mode 100644 index 000000000..d4f435236 Binary files /dev/null and b/bin/assets/atlases/bnb/107.png differ diff --git a/bin/assets/atlases/bnb/108.png b/bin/assets/atlases/bnb/108.png new file mode 100644 index 000000000..f1b052ea6 Binary files /dev/null and b/bin/assets/atlases/bnb/108.png differ diff --git a/bin/assets/atlases/bnb/109.png b/bin/assets/atlases/bnb/109.png new file mode 100644 index 000000000..a1ed16f15 Binary files /dev/null and b/bin/assets/atlases/bnb/109.png differ diff --git a/bin/assets/atlases/bnb/110.png b/bin/assets/atlases/bnb/110.png new file mode 100644 index 000000000..b8604aedd Binary files /dev/null and b/bin/assets/atlases/bnb/110.png differ diff --git a/bin/assets/atlases/bnb/111.png b/bin/assets/atlases/bnb/111.png new file mode 100644 index 000000000..3da4c16f2 Binary files /dev/null and b/bin/assets/atlases/bnb/111.png differ diff --git a/bin/assets/atlases/bnb/b01.png b/bin/assets/atlases/bnb/b01.png new file mode 100644 index 000000000..bd690dd25 Binary files /dev/null and b/bin/assets/atlases/bnb/b01.png differ diff --git a/bin/assets/atlases/bnb/b02.png b/bin/assets/atlases/bnb/b02.png new file mode 100644 index 000000000..c295c83bf Binary files /dev/null and b/bin/assets/atlases/bnb/b02.png differ diff --git a/bin/assets/atlases/bnb/b03.png b/bin/assets/atlases/bnb/b03.png new file mode 100644 index 000000000..03a465658 Binary files /dev/null and b/bin/assets/atlases/bnb/b03.png differ diff --git a/bin/assets/atlases/bnb/b04.png b/bin/assets/atlases/bnb/b04.png new file mode 100644 index 000000000..b42b22d31 Binary files /dev/null and b/bin/assets/atlases/bnb/b04.png differ diff --git a/bin/assets/atlases/bnb/b05.png b/bin/assets/atlases/bnb/b05.png new file mode 100644 index 000000000..b42b22d31 Binary files /dev/null and b/bin/assets/atlases/bnb/b05.png differ diff --git a/bin/assets/atlases/bnb/b06.png b/bin/assets/atlases/bnb/b06.png new file mode 100644 index 000000000..03a465658 Binary files /dev/null and b/bin/assets/atlases/bnb/b06.png differ diff --git a/bin/assets/atlases/bnb/b07.png b/bin/assets/atlases/bnb/b07.png new file mode 100644 index 000000000..f031e4f1d Binary files /dev/null and b/bin/assets/atlases/bnb/b07.png differ diff --git a/bin/assets/atlases/bnb/b08.png b/bin/assets/atlases/bnb/b08.png new file mode 100644 index 000000000..513a8571b Binary files /dev/null and b/bin/assets/atlases/bnb/b08.png differ diff --git a/bin/assets/atlases/bnb/b09.png b/bin/assets/atlases/bnb/b09.png new file mode 100644 index 000000000..89abb81bb Binary files /dev/null and b/bin/assets/atlases/bnb/b09.png differ diff --git a/bin/assets/atlases/bnb/b10.png b/bin/assets/atlases/bnb/b10.png new file mode 100644 index 000000000..6b3191f1e Binary files /dev/null and b/bin/assets/atlases/bnb/b10.png differ diff --git a/bin/assets/atlases/bnb/b11.png b/bin/assets/atlases/bnb/b11.png new file mode 100644 index 000000000..eae15263b Binary files /dev/null and b/bin/assets/atlases/bnb/b11.png differ diff --git a/bin/assets/atlases/bnb/b12.png b/bin/assets/atlases/bnb/b12.png new file mode 100644 index 000000000..2cf2f19bb Binary files /dev/null and b/bin/assets/atlases/bnb/b12.png differ diff --git a/bin/assets/atlases/bnb/b13.png b/bin/assets/atlases/bnb/b13.png new file mode 100644 index 000000000..9a3bab882 Binary files /dev/null and b/bin/assets/atlases/bnb/b13.png differ diff --git a/bin/assets/atlases/bnb/b14.png b/bin/assets/atlases/bnb/b14.png new file mode 100644 index 000000000..bd690dd25 Binary files /dev/null and b/bin/assets/atlases/bnb/b14.png differ diff --git a/bin/assets/atlases/bnb/bn01.png b/bin/assets/atlases/bnb/bn01.png new file mode 100644 index 000000000..857956327 Binary files /dev/null and b/bin/assets/atlases/bnb/bn01.png differ diff --git a/bin/assets/atlases/bnb/bn02.png b/bin/assets/atlases/bnb/bn02.png new file mode 100644 index 000000000..f86e48d06 Binary files /dev/null and b/bin/assets/atlases/bnb/bn02.png differ diff --git a/bin/assets/atlases/bnb/bn03.png b/bin/assets/atlases/bnb/bn03.png new file mode 100644 index 000000000..3faa9aac2 Binary files /dev/null and b/bin/assets/atlases/bnb/bn03.png differ diff --git a/bin/assets/atlases/bnb/bn04.png b/bin/assets/atlases/bnb/bn04.png new file mode 100644 index 000000000..15f23810f Binary files /dev/null and b/bin/assets/atlases/bnb/bn04.png differ diff --git a/bin/assets/atlases/bnb/bn05.png b/bin/assets/atlases/bnb/bn05.png new file mode 100644 index 000000000..fa6a1062e Binary files /dev/null and b/bin/assets/atlases/bnb/bn05.png differ diff --git a/bin/assets/atlases/bnb/bn06.png b/bin/assets/atlases/bnb/bn06.png new file mode 100644 index 000000000..0f8ade807 Binary files /dev/null and b/bin/assets/atlases/bnb/bn06.png differ diff --git a/bin/assets/atlases/bnb/bn07.png b/bin/assets/atlases/bnb/bn07.png new file mode 100644 index 000000000..0fa4bdae7 Binary files /dev/null and b/bin/assets/atlases/bnb/bn07.png differ diff --git a/bin/assets/atlases/bnb/bn08.png b/bin/assets/atlases/bnb/bn08.png new file mode 100644 index 000000000..61a62eed7 Binary files /dev/null and b/bin/assets/atlases/bnb/bn08.png differ diff --git a/bin/assets/atlases/bnb/bn09.png b/bin/assets/atlases/bnb/bn09.png new file mode 100644 index 000000000..3b10b7800 Binary files /dev/null and b/bin/assets/atlases/bnb/bn09.png differ diff --git a/bin/assets/atlases/bnb/bn10.png b/bin/assets/atlases/bnb/bn10.png new file mode 100644 index 000000000..eebebf221 Binary files /dev/null and b/bin/assets/atlases/bnb/bn10.png differ diff --git a/bin/assets/atlases/bnb/bn11.png b/bin/assets/atlases/bnb/bn11.png new file mode 100644 index 000000000..947a2b55c Binary files /dev/null and b/bin/assets/atlases/bnb/bn11.png differ diff --git a/bin/assets/atlases/bnb/bn12.png b/bin/assets/atlases/bnb/bn12.png new file mode 100644 index 000000000..329530b7b Binary files /dev/null and b/bin/assets/atlases/bnb/bn12.png differ diff --git a/bin/assets/atlases/bnb/bn13.png b/bin/assets/atlases/bnb/bn13.png new file mode 100644 index 000000000..be200dd20 Binary files /dev/null and b/bin/assets/atlases/bnb/bn13.png differ diff --git a/bin/assets/atlases/bnb/dr_bn.png b/bin/assets/atlases/bnb/dr_bn.png new file mode 100644 index 000000000..7c1f688cd Binary files /dev/null and b/bin/assets/atlases/bnb/dr_bn.png differ diff --git a/bin/assets/atlases/bnb/dr_gn.png b/bin/assets/atlases/bnb/dr_gn.png new file mode 100644 index 000000000..53800f999 Binary files /dev/null and b/bin/assets/atlases/bnb/dr_gn.png differ diff --git a/bin/assets/atlases/bnb/dr_rn.png b/bin/assets/atlases/bnb/dr_rn.png new file mode 100644 index 000000000..11bde68d6 Binary files /dev/null and b/bin/assets/atlases/bnb/dr_rn.png differ diff --git a/bin/assets/atlases/bnb/dr_v.png b/bin/assets/atlases/bnb/dr_v.png new file mode 100644 index 000000000..cbb767b12 Binary files /dev/null and b/bin/assets/atlases/bnb/dr_v.png differ diff --git a/bin/assets/atlases/bnb/dr_w.png b/bin/assets/atlases/bnb/dr_w.png new file mode 100644 index 000000000..7c4c9cf18 Binary files /dev/null and b/bin/assets/atlases/bnb/dr_w.png differ diff --git a/bin/assets/atlases/bnb/dr_y.png b/bin/assets/atlases/bnb/dr_y.png new file mode 100644 index 000000000..0f5aeb543 Binary files /dev/null and b/bin/assets/atlases/bnb/dr_y.png differ diff --git a/bin/assets/atlases/bnb/g01.png b/bin/assets/atlases/bnb/g01.png new file mode 100644 index 000000000..0548b3cac Binary files /dev/null and b/bin/assets/atlases/bnb/g01.png differ diff --git a/bin/assets/atlases/bnb/g02.png b/bin/assets/atlases/bnb/g02.png new file mode 100644 index 000000000..72d9bd828 Binary files /dev/null and b/bin/assets/atlases/bnb/g02.png differ diff --git a/bin/assets/atlases/bnb/g03.png b/bin/assets/atlases/bnb/g03.png new file mode 100644 index 000000000..79b3605f6 Binary files /dev/null and b/bin/assets/atlases/bnb/g03.png differ diff --git a/bin/assets/atlases/bnb/g04.png b/bin/assets/atlases/bnb/g04.png new file mode 100644 index 000000000..12cf30a54 Binary files /dev/null and b/bin/assets/atlases/bnb/g04.png differ diff --git a/bin/assets/atlases/bnb/g05.png b/bin/assets/atlases/bnb/g05.png new file mode 100644 index 000000000..88bdc7e11 Binary files /dev/null and b/bin/assets/atlases/bnb/g05.png differ diff --git a/bin/assets/atlases/bnb/g06.png b/bin/assets/atlases/bnb/g06.png new file mode 100644 index 000000000..7cd171d14 Binary files /dev/null and b/bin/assets/atlases/bnb/g06.png differ diff --git a/bin/assets/atlases/bnb/g07.png b/bin/assets/atlases/bnb/g07.png new file mode 100644 index 000000000..de12701eb Binary files /dev/null and b/bin/assets/atlases/bnb/g07.png differ diff --git a/bin/assets/atlases/bnb/g08.png b/bin/assets/atlases/bnb/g08.png new file mode 100644 index 000000000..5716ae12d Binary files /dev/null and b/bin/assets/atlases/bnb/g08.png differ diff --git a/bin/assets/atlases/bnb/g09.png b/bin/assets/atlases/bnb/g09.png new file mode 100644 index 000000000..7d51145d8 Binary files /dev/null and b/bin/assets/atlases/bnb/g09.png differ diff --git a/bin/assets/atlases/bnb/g10.png b/bin/assets/atlases/bnb/g10.png new file mode 100644 index 000000000..237eb6007 Binary files /dev/null and b/bin/assets/atlases/bnb/g10.png differ diff --git a/bin/assets/atlases/bnb/g11.png b/bin/assets/atlases/bnb/g11.png new file mode 100644 index 000000000..ddb91f5ad Binary files /dev/null and b/bin/assets/atlases/bnb/g11.png differ diff --git a/bin/assets/atlases/bnb/g12.png b/bin/assets/atlases/bnb/g12.png new file mode 100644 index 000000000..4dfc5d19c Binary files /dev/null and b/bin/assets/atlases/bnb/g12.png differ diff --git a/bin/assets/atlases/bnb/g13.png b/bin/assets/atlases/bnb/g13.png new file mode 100644 index 000000000..99e5422c9 Binary files /dev/null and b/bin/assets/atlases/bnb/g13.png differ diff --git a/bin/assets/atlases/bnb/g14.png b/bin/assets/atlases/bnb/g14.png new file mode 100644 index 000000000..0548b3cac Binary files /dev/null and b/bin/assets/atlases/bnb/g14.png differ diff --git a/bin/assets/atlases/bnb/gn01.png b/bin/assets/atlases/bnb/gn01.png new file mode 100644 index 000000000..cff3f2def Binary files /dev/null and b/bin/assets/atlases/bnb/gn01.png differ diff --git a/bin/assets/atlases/bnb/gn02.png b/bin/assets/atlases/bnb/gn02.png new file mode 100644 index 000000000..3d3f9f097 Binary files /dev/null and b/bin/assets/atlases/bnb/gn02.png differ diff --git a/bin/assets/atlases/bnb/gn03.png b/bin/assets/atlases/bnb/gn03.png new file mode 100644 index 000000000..1dea280d1 Binary files /dev/null and b/bin/assets/atlases/bnb/gn03.png differ diff --git a/bin/assets/atlases/bnb/gn04.png b/bin/assets/atlases/bnb/gn04.png new file mode 100644 index 000000000..4a712b5f5 Binary files /dev/null and b/bin/assets/atlases/bnb/gn04.png differ diff --git a/bin/assets/atlases/bnb/gn05.png b/bin/assets/atlases/bnb/gn05.png new file mode 100644 index 000000000..58bee0c77 Binary files /dev/null and b/bin/assets/atlases/bnb/gn05.png differ diff --git a/bin/assets/atlases/bnb/gn06.png b/bin/assets/atlases/bnb/gn06.png new file mode 100644 index 000000000..a8c80fd00 Binary files /dev/null and b/bin/assets/atlases/bnb/gn06.png differ diff --git a/bin/assets/atlases/bnb/gn07.png b/bin/assets/atlases/bnb/gn07.png new file mode 100644 index 000000000..2ead77a46 Binary files /dev/null and b/bin/assets/atlases/bnb/gn07.png differ diff --git a/bin/assets/atlases/bnb/gn08.png b/bin/assets/atlases/bnb/gn08.png new file mode 100644 index 000000000..13daf38b5 Binary files /dev/null and b/bin/assets/atlases/bnb/gn08.png differ diff --git a/bin/assets/atlases/bnb/gn09.png b/bin/assets/atlases/bnb/gn09.png new file mode 100644 index 000000000..36a26ed9e Binary files /dev/null and b/bin/assets/atlases/bnb/gn09.png differ diff --git a/bin/assets/atlases/bnb/gn10.png b/bin/assets/atlases/bnb/gn10.png new file mode 100644 index 000000000..40fc89fb8 Binary files /dev/null and b/bin/assets/atlases/bnb/gn10.png differ diff --git a/bin/assets/atlases/bnb/gn11.png b/bin/assets/atlases/bnb/gn11.png new file mode 100644 index 000000000..fa502ab45 Binary files /dev/null and b/bin/assets/atlases/bnb/gn11.png differ diff --git a/bin/assets/atlases/bnb/gn12.png b/bin/assets/atlases/bnb/gn12.png new file mode 100644 index 000000000..e6ca1ed60 Binary files /dev/null and b/bin/assets/atlases/bnb/gn12.png differ diff --git a/bin/assets/atlases/bnb/gn13.png b/bin/assets/atlases/bnb/gn13.png new file mode 100644 index 000000000..72f10805c Binary files /dev/null and b/bin/assets/atlases/bnb/gn13.png differ diff --git a/bin/assets/atlases/bnb/gn14.png b/bin/assets/atlases/bnb/gn14.png new file mode 100644 index 000000000..b9f81444e Binary files /dev/null and b/bin/assets/atlases/bnb/gn14.png differ diff --git a/bin/assets/atlases/bnb/gn15.png b/bin/assets/atlases/bnb/gn15.png new file mode 100644 index 000000000..d6b223379 Binary files /dev/null and b/bin/assets/atlases/bnb/gn15.png differ diff --git a/bin/assets/atlases/bnb/gn16.png b/bin/assets/atlases/bnb/gn16.png new file mode 100644 index 000000000..63bb6034a Binary files /dev/null and b/bin/assets/atlases/bnb/gn16.png differ diff --git a/bin/assets/atlases/bnb/gn17.png b/bin/assets/atlases/bnb/gn17.png new file mode 100644 index 000000000..3b59f4662 Binary files /dev/null and b/bin/assets/atlases/bnb/gn17.png differ diff --git a/bin/assets/atlases/bnb/gn18.png b/bin/assets/atlases/bnb/gn18.png new file mode 100644 index 000000000..a1900fd17 Binary files /dev/null and b/bin/assets/atlases/bnb/gn18.png differ diff --git a/bin/assets/atlases/bnb/gn19.png b/bin/assets/atlases/bnb/gn19.png new file mode 100644 index 000000000..2cc87ea70 Binary files /dev/null and b/bin/assets/atlases/bnb/gn19.png differ diff --git a/bin/assets/atlases/bnb/gn20.png b/bin/assets/atlases/bnb/gn20.png new file mode 100644 index 000000000..0520739c3 Binary files /dev/null and b/bin/assets/atlases/bnb/gn20.png differ diff --git a/bin/assets/atlases/bnb/gn21.png b/bin/assets/atlases/bnb/gn21.png new file mode 100644 index 000000000..8fee5575f Binary files /dev/null and b/bin/assets/atlases/bnb/gn21.png differ diff --git a/bin/assets/atlases/bnb/gn22.png b/bin/assets/atlases/bnb/gn22.png new file mode 100644 index 000000000..fb29b1e7d Binary files /dev/null and b/bin/assets/atlases/bnb/gn22.png differ diff --git a/bin/assets/atlases/bnb/gn23.png b/bin/assets/atlases/bnb/gn23.png new file mode 100644 index 000000000..ecab62226 Binary files /dev/null and b/bin/assets/atlases/bnb/gn23.png differ diff --git a/bin/assets/atlases/bnb/gn24.png b/bin/assets/atlases/bnb/gn24.png new file mode 100644 index 000000000..ea9fc3b0c Binary files /dev/null and b/bin/assets/atlases/bnb/gn24.png differ diff --git a/bin/assets/atlases/bnb/r01.png b/bin/assets/atlases/bnb/r01.png new file mode 100644 index 000000000..5aab04760 Binary files /dev/null and b/bin/assets/atlases/bnb/r01.png differ diff --git a/bin/assets/atlases/bnb/r02.png b/bin/assets/atlases/bnb/r02.png new file mode 100644 index 000000000..c621a4539 Binary files /dev/null and b/bin/assets/atlases/bnb/r02.png differ diff --git a/bin/assets/atlases/bnb/r03.png b/bin/assets/atlases/bnb/r03.png new file mode 100644 index 000000000..8a4c68978 Binary files /dev/null and b/bin/assets/atlases/bnb/r03.png differ diff --git a/bin/assets/atlases/bnb/r04.png b/bin/assets/atlases/bnb/r04.png new file mode 100644 index 000000000..048ad1189 Binary files /dev/null and b/bin/assets/atlases/bnb/r04.png differ diff --git a/bin/assets/atlases/bnb/r05.png b/bin/assets/atlases/bnb/r05.png new file mode 100644 index 000000000..6ad3a95ce Binary files /dev/null and b/bin/assets/atlases/bnb/r05.png differ diff --git a/bin/assets/atlases/bnb/r06.png b/bin/assets/atlases/bnb/r06.png new file mode 100644 index 000000000..46d858923 Binary files /dev/null and b/bin/assets/atlases/bnb/r06.png differ diff --git a/bin/assets/atlases/bnb/r07.png b/bin/assets/atlases/bnb/r07.png new file mode 100644 index 000000000..3c2da8770 Binary files /dev/null and b/bin/assets/atlases/bnb/r07.png differ diff --git a/bin/assets/atlases/bnb/r08.png b/bin/assets/atlases/bnb/r08.png new file mode 100644 index 000000000..bf2c2a273 Binary files /dev/null and b/bin/assets/atlases/bnb/r08.png differ diff --git a/bin/assets/atlases/bnb/r09.png b/bin/assets/atlases/bnb/r09.png new file mode 100644 index 000000000..5c87a4415 Binary files /dev/null and b/bin/assets/atlases/bnb/r09.png differ diff --git a/bin/assets/atlases/bnb/r10.png b/bin/assets/atlases/bnb/r10.png new file mode 100644 index 000000000..8be952142 Binary files /dev/null and b/bin/assets/atlases/bnb/r10.png differ diff --git a/bin/assets/atlases/bnb/r11.png b/bin/assets/atlases/bnb/r11.png new file mode 100644 index 000000000..c81b2b374 Binary files /dev/null and b/bin/assets/atlases/bnb/r11.png differ diff --git a/bin/assets/atlases/bnb/r12.png b/bin/assets/atlases/bnb/r12.png new file mode 100644 index 000000000..486e9f70e Binary files /dev/null and b/bin/assets/atlases/bnb/r12.png differ diff --git a/bin/assets/atlases/bnb/r13.png b/bin/assets/atlases/bnb/r13.png new file mode 100644 index 000000000..2c6d0f365 Binary files /dev/null and b/bin/assets/atlases/bnb/r13.png differ diff --git a/bin/assets/atlases/bnb/r14.png b/bin/assets/atlases/bnb/r14.png new file mode 100644 index 000000000..5aab04760 Binary files /dev/null and b/bin/assets/atlases/bnb/r14.png differ diff --git a/bin/assets/atlases/bnb/rn01.png b/bin/assets/atlases/bnb/rn01.png new file mode 100644 index 000000000..c8b8e9e9a Binary files /dev/null and b/bin/assets/atlases/bnb/rn01.png differ diff --git a/bin/assets/atlases/bnb/rn02.png b/bin/assets/atlases/bnb/rn02.png new file mode 100644 index 000000000..ae2df8442 Binary files /dev/null and b/bin/assets/atlases/bnb/rn02.png differ diff --git a/bin/assets/atlases/bnb/rn03.png b/bin/assets/atlases/bnb/rn03.png new file mode 100644 index 000000000..ecbaf0d60 Binary files /dev/null and b/bin/assets/atlases/bnb/rn03.png differ diff --git a/bin/assets/atlases/bnb/rn04.png b/bin/assets/atlases/bnb/rn04.png new file mode 100644 index 000000000..e5a8faa5c Binary files /dev/null and b/bin/assets/atlases/bnb/rn04.png differ diff --git a/bin/assets/atlases/bnb/rn05.png b/bin/assets/atlases/bnb/rn05.png new file mode 100644 index 000000000..eb3260103 Binary files /dev/null and b/bin/assets/atlases/bnb/rn05.png differ diff --git a/bin/assets/atlases/bnb/rn06.png b/bin/assets/atlases/bnb/rn06.png new file mode 100644 index 000000000..17d2fc7f3 Binary files /dev/null and b/bin/assets/atlases/bnb/rn06.png differ diff --git a/bin/assets/atlases/bnb/rn07.png b/bin/assets/atlases/bnb/rn07.png new file mode 100644 index 000000000..4f994e8d6 Binary files /dev/null and b/bin/assets/atlases/bnb/rn07.png differ diff --git a/bin/assets/atlases/bnb/rn08.png b/bin/assets/atlases/bnb/rn08.png new file mode 100644 index 000000000..fe0004edc Binary files /dev/null and b/bin/assets/atlases/bnb/rn08.png differ diff --git a/bin/assets/atlases/bnb/rn09.png b/bin/assets/atlases/bnb/rn09.png new file mode 100644 index 000000000..dd71c6554 Binary files /dev/null and b/bin/assets/atlases/bnb/rn09.png differ diff --git a/bin/assets/atlases/bnb/rn10.png b/bin/assets/atlases/bnb/rn10.png new file mode 100644 index 000000000..8e6f28084 Binary files /dev/null and b/bin/assets/atlases/bnb/rn10.png differ diff --git a/bin/assets/atlases/bnb/rn11.png b/bin/assets/atlases/bnb/rn11.png new file mode 100644 index 000000000..ab3598cb9 Binary files /dev/null and b/bin/assets/atlases/bnb/rn11.png differ diff --git a/bin/assets/atlases/bnb/rn12.png b/bin/assets/atlases/bnb/rn12.png new file mode 100644 index 000000000..d91a3d384 Binary files /dev/null and b/bin/assets/atlases/bnb/rn12.png differ diff --git a/bin/assets/atlases/bnb/rn13.png b/bin/assets/atlases/bnb/rn13.png new file mode 100644 index 000000000..8dbfba137 Binary files /dev/null and b/bin/assets/atlases/bnb/rn13.png differ diff --git a/bin/assets/atlases/bnb/rn14.png b/bin/assets/atlases/bnb/rn14.png new file mode 100644 index 000000000..6ca872bc3 Binary files /dev/null and b/bin/assets/atlases/bnb/rn14.png differ diff --git a/bin/assets/atlases/bnb/rn15.png b/bin/assets/atlases/bnb/rn15.png new file mode 100644 index 000000000..b7ff175a7 Binary files /dev/null and b/bin/assets/atlases/bnb/rn15.png differ diff --git a/bin/assets/atlases/bnb/v01.png b/bin/assets/atlases/bnb/v01.png new file mode 100644 index 000000000..bb4c3d56b Binary files /dev/null and b/bin/assets/atlases/bnb/v01.png differ diff --git a/bin/assets/atlases/bnb/v02.png b/bin/assets/atlases/bnb/v02.png new file mode 100644 index 000000000..d2145f4f9 Binary files /dev/null and b/bin/assets/atlases/bnb/v02.png differ diff --git a/bin/assets/atlases/bnb/v03.png b/bin/assets/atlases/bnb/v03.png new file mode 100644 index 000000000..115d885ed Binary files /dev/null and b/bin/assets/atlases/bnb/v03.png differ diff --git a/bin/assets/atlases/bnb/v04.png b/bin/assets/atlases/bnb/v04.png new file mode 100644 index 000000000..bfdaf2795 Binary files /dev/null and b/bin/assets/atlases/bnb/v04.png differ diff --git a/bin/assets/atlases/bnb/v05.png b/bin/assets/atlases/bnb/v05.png new file mode 100644 index 000000000..f48c811a2 Binary files /dev/null and b/bin/assets/atlases/bnb/v05.png differ diff --git a/bin/assets/atlases/bnb/v06.png b/bin/assets/atlases/bnb/v06.png new file mode 100644 index 000000000..e4652d41b Binary files /dev/null and b/bin/assets/atlases/bnb/v06.png differ diff --git a/bin/assets/atlases/bnb/v07.png b/bin/assets/atlases/bnb/v07.png new file mode 100644 index 000000000..e27ab4312 Binary files /dev/null and b/bin/assets/atlases/bnb/v07.png differ diff --git a/bin/assets/atlases/bnb/v08.png b/bin/assets/atlases/bnb/v08.png new file mode 100644 index 000000000..56e577b44 Binary files /dev/null and b/bin/assets/atlases/bnb/v08.png differ diff --git a/bin/assets/atlases/bnb/v09.png b/bin/assets/atlases/bnb/v09.png new file mode 100644 index 000000000..8c0aea285 Binary files /dev/null and b/bin/assets/atlases/bnb/v09.png differ diff --git a/bin/assets/atlases/bnb/v10.png b/bin/assets/atlases/bnb/v10.png new file mode 100644 index 000000000..a2c67a379 Binary files /dev/null and b/bin/assets/atlases/bnb/v10.png differ diff --git a/bin/assets/atlases/bnb/v11.png b/bin/assets/atlases/bnb/v11.png new file mode 100644 index 000000000..c5e42fa0e Binary files /dev/null and b/bin/assets/atlases/bnb/v11.png differ diff --git a/bin/assets/atlases/bnb/v12.png b/bin/assets/atlases/bnb/v12.png new file mode 100644 index 000000000..2befd239f Binary files /dev/null and b/bin/assets/atlases/bnb/v12.png differ diff --git a/bin/assets/atlases/bnb/v13.png b/bin/assets/atlases/bnb/v13.png new file mode 100644 index 000000000..fe201ac58 Binary files /dev/null and b/bin/assets/atlases/bnb/v13.png differ diff --git a/bin/assets/atlases/bnb/v14.png b/bin/assets/atlases/bnb/v14.png new file mode 100644 index 000000000..bb4c3d56b Binary files /dev/null and b/bin/assets/atlases/bnb/v14.png differ diff --git a/bin/assets/atlases/bnb/w01.png b/bin/assets/atlases/bnb/w01.png new file mode 100644 index 000000000..1886aead6 Binary files /dev/null and b/bin/assets/atlases/bnb/w01.png differ diff --git a/bin/assets/atlases/bnb/w02.png b/bin/assets/atlases/bnb/w02.png new file mode 100644 index 000000000..593894367 Binary files /dev/null and b/bin/assets/atlases/bnb/w02.png differ diff --git a/bin/assets/atlases/bnb/w03.png b/bin/assets/atlases/bnb/w03.png new file mode 100644 index 000000000..23a7aac36 Binary files /dev/null and b/bin/assets/atlases/bnb/w03.png differ diff --git a/bin/assets/atlases/bnb/w04.png b/bin/assets/atlases/bnb/w04.png new file mode 100644 index 000000000..6ff21c06b Binary files /dev/null and b/bin/assets/atlases/bnb/w04.png differ diff --git a/bin/assets/atlases/bnb/w05.png b/bin/assets/atlases/bnb/w05.png new file mode 100644 index 000000000..6ff21c06b Binary files /dev/null and b/bin/assets/atlases/bnb/w05.png differ diff --git a/bin/assets/atlases/bnb/w06.png b/bin/assets/atlases/bnb/w06.png new file mode 100644 index 000000000..eb0e129f4 Binary files /dev/null and b/bin/assets/atlases/bnb/w06.png differ diff --git a/bin/assets/atlases/bnb/w07.png b/bin/assets/atlases/bnb/w07.png new file mode 100644 index 000000000..05acc88c4 Binary files /dev/null and b/bin/assets/atlases/bnb/w07.png differ diff --git a/bin/assets/atlases/bnb/w08.png b/bin/assets/atlases/bnb/w08.png new file mode 100644 index 000000000..f4138269c Binary files /dev/null and b/bin/assets/atlases/bnb/w08.png differ diff --git a/bin/assets/atlases/bnb/w09.png b/bin/assets/atlases/bnb/w09.png new file mode 100644 index 000000000..2543d69e8 Binary files /dev/null and b/bin/assets/atlases/bnb/w09.png differ diff --git a/bin/assets/atlases/bnb/w10.png b/bin/assets/atlases/bnb/w10.png new file mode 100644 index 000000000..32936b1e7 Binary files /dev/null and b/bin/assets/atlases/bnb/w10.png differ diff --git a/bin/assets/atlases/bnb/w11.png b/bin/assets/atlases/bnb/w11.png new file mode 100644 index 000000000..c98baee9b Binary files /dev/null and b/bin/assets/atlases/bnb/w11.png differ diff --git a/bin/assets/atlases/bnb/w12.png b/bin/assets/atlases/bnb/w12.png new file mode 100644 index 000000000..af11ddc63 Binary files /dev/null and b/bin/assets/atlases/bnb/w12.png differ diff --git a/bin/assets/atlases/bnb/w13.png b/bin/assets/atlases/bnb/w13.png new file mode 100644 index 000000000..06fe5b75d Binary files /dev/null and b/bin/assets/atlases/bnb/w13.png differ diff --git a/bin/assets/atlases/bnb/w14.png b/bin/assets/atlases/bnb/w14.png new file mode 100644 index 000000000..1886aead6 Binary files /dev/null and b/bin/assets/atlases/bnb/w14.png differ diff --git a/bin/assets/atlases/bnb/y01.png b/bin/assets/atlases/bnb/y01.png new file mode 100644 index 000000000..3c7613834 Binary files /dev/null and b/bin/assets/atlases/bnb/y01.png differ diff --git a/bin/assets/atlases/bnb/y02.png b/bin/assets/atlases/bnb/y02.png new file mode 100644 index 000000000..d3bc02ac9 Binary files /dev/null and b/bin/assets/atlases/bnb/y02.png differ diff --git a/bin/assets/atlases/bnb/y03.png b/bin/assets/atlases/bnb/y03.png new file mode 100644 index 000000000..2d7419270 Binary files /dev/null and b/bin/assets/atlases/bnb/y03.png differ diff --git a/bin/assets/atlases/bnb/y04.png b/bin/assets/atlases/bnb/y04.png new file mode 100644 index 000000000..e7f7a7886 Binary files /dev/null and b/bin/assets/atlases/bnb/y04.png differ diff --git a/bin/assets/atlases/bnb/y05.png b/bin/assets/atlases/bnb/y05.png new file mode 100644 index 000000000..5843bb359 Binary files /dev/null and b/bin/assets/atlases/bnb/y05.png differ diff --git a/bin/assets/atlases/bnb/y06.png b/bin/assets/atlases/bnb/y06.png new file mode 100644 index 000000000..2d7419270 Binary files /dev/null and b/bin/assets/atlases/bnb/y06.png differ diff --git a/bin/assets/atlases/bnb/y07.png b/bin/assets/atlases/bnb/y07.png new file mode 100644 index 000000000..85a292213 Binary files /dev/null and b/bin/assets/atlases/bnb/y07.png differ diff --git a/bin/assets/atlases/bnb/y08.png b/bin/assets/atlases/bnb/y08.png new file mode 100644 index 000000000..7780f01d6 Binary files /dev/null and b/bin/assets/atlases/bnb/y08.png differ diff --git a/bin/assets/atlases/bnb/y09.png b/bin/assets/atlases/bnb/y09.png new file mode 100644 index 000000000..24d95a8b2 Binary files /dev/null and b/bin/assets/atlases/bnb/y09.png differ diff --git a/bin/assets/atlases/bnb/y10.png b/bin/assets/atlases/bnb/y10.png new file mode 100644 index 000000000..3ab9ecc1e Binary files /dev/null and b/bin/assets/atlases/bnb/y10.png differ diff --git a/bin/assets/atlases/bnb/y11.png b/bin/assets/atlases/bnb/y11.png new file mode 100644 index 000000000..572e1a4d2 Binary files /dev/null and b/bin/assets/atlases/bnb/y11.png differ diff --git a/bin/assets/atlases/bnb/y12.png b/bin/assets/atlases/bnb/y12.png new file mode 100644 index 000000000..890f8ffcf Binary files /dev/null and b/bin/assets/atlases/bnb/y12.png differ diff --git a/bin/assets/atlases/bnb/y13.png b/bin/assets/atlases/bnb/y13.png new file mode 100644 index 000000000..ef7a6bd96 Binary files /dev/null and b/bin/assets/atlases/bnb/y13.png differ diff --git a/bin/assets/atlases/bnb/y14.png b/bin/assets/atlases/bnb/y14.png new file mode 100644 index 000000000..3c7613834 Binary files /dev/null and b/bin/assets/atlases/bnb/y14.png differ diff --git a/bin/assets/atlases/tiles.eta b/bin/assets/atlases/tiles.eta index 0038643b6..b644a0114 100644 Binary files a/bin/assets/atlases/tiles.eta and b/bin/assets/atlases/tiles.eta differ diff --git a/bin/assets/atlases/tiles/1.png b/bin/assets/atlases/tiles/1.png new file mode 100644 index 000000000..4d2de6a9e Binary files /dev/null and b/bin/assets/atlases/tiles/1.png differ diff --git a/bin/assets/atlases/tiles/2.png b/bin/assets/atlases/tiles/2.png new file mode 100644 index 000000000..d00d2db5c Binary files /dev/null and b/bin/assets/atlases/tiles/2.png differ diff --git a/bin/assets/atlases/tiles/3.png b/bin/assets/atlases/tiles/3.png new file mode 100644 index 000000000..dc1cbc4ed Binary files /dev/null and b/bin/assets/atlases/tiles/3.png differ diff --git a/bin/assets/atlases/tiles/4.png b/bin/assets/atlases/tiles/4.png new file mode 100644 index 000000000..cb1a3dd39 Binary files /dev/null and b/bin/assets/atlases/tiles/4.png differ diff --git a/bin/assets/atlases/tiles/5.png b/bin/assets/atlases/tiles/5.png new file mode 100644 index 000000000..6df6649b2 Binary files /dev/null and b/bin/assets/atlases/tiles/5.png differ diff --git a/bin/assets/atlases/tiles/6.png b/bin/assets/atlases/tiles/6.png new file mode 100644 index 000000000..c404857d0 Binary files /dev/null and b/bin/assets/atlases/tiles/6.png differ diff --git a/bin/assets/ui/uitheme.eta b/bin/assets/ui/uitheme.eta index 974e8c842..c18c8015f 100644 Binary files a/bin/assets/ui/uitheme.eta and b/bin/assets/ui/uitheme.eta differ diff --git a/bin/assets/ui/uitheme.png b/bin/assets/ui/uitheme.png index 3fd8c0f07..6b207c541 100644 Binary files a/bin/assets/ui/uitheme.png and b/bin/assets/ui/uitheme.png differ diff --git a/bin/assets/ui/uitheme2x.eta b/bin/assets/ui/uitheme2x.eta index 600d03658..55fcd5c23 100644 Binary files a/bin/assets/ui/uitheme2x.eta and b/bin/assets/ui/uitheme2x.eta differ diff --git a/include/eepp/graphics.hpp b/include/eepp/graphics.hpp index beedb248a..a6cfc5d77 100644 --- a/include/eepp/graphics.hpp +++ b/include/eepp/graphics.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include diff --git a/include/eepp/graphics/base.hpp b/include/eepp/graphics/base.hpp index da0f670c7..9572e410e 100644 --- a/include/eepp/graphics/base.hpp +++ b/include/eepp/graphics/base.hpp @@ -23,5 +23,6 @@ using namespace EE::System; #include #include +#include #endif diff --git a/include/eepp/graphics/packerhelper.hpp b/include/eepp/graphics/packerhelper.hpp index d2c38d48e..984f20371 100644 --- a/include/eepp/graphics/packerhelper.hpp +++ b/include/eepp/graphics/packerhelper.hpp @@ -7,9 +7,9 @@ namespace EE { namespace Graphics { namespace Private { #define HDR_NAME_SIZE 64 -typedef struct sSubTextureHdrS { +typedef struct sSubTextureHdrSN { char Name[ HDR_NAME_SIZE ]; - Uint32 Date; + Uint64 Date; Int32 X; Int32 Y; Int32 Width; @@ -21,6 +21,7 @@ typedef struct sSubTextureHdrS { Int32 DestWidth; Int32 DestHeight; Uint32 Flags; + Uint32 PixelDensity; } sSubTextureHdr; #define HDR_SUBTEXTURE_FLAG_FLIPED ( 1 << 0 ) @@ -32,22 +33,24 @@ typedef struct sTextureHdrS { Int32 SubTextureCount; } sTextureHdr; -typedef struct sTextureAtlasHdrS { +typedef struct sTextureAtlasHdrSN { Uint32 Magic; + Uint32 Version; + Uint64 Date; Uint32 TextureCount; Uint32 Format; Int32 Width; Int32 Height; Uint32 PixelBorder; Uint32 Flags; + char Reserved[16]; } sTextureAtlasHdr; #define HDR_TEXTURE_ATLAS_ALLOW_FLIPPING ( 1 << 0 ) #define HDR_TEXTURE_ATLAS_REMOVE_EXTENSION ( 1 << 1 ) #define HDR_TEXTURE_ATLAS_POW_OF_TWO ( 1 << 2 ) -#define EE_TEXTURE_ATLAS_MAGIC_OLD ( ( 'E' << 0 ) | ( 'E' << 8 ) | ( 'T' << 16 ) | ( 'G' << 24 ) ) -#define EE_TEXTURE_ATLAS_MAGIC ( ( 'E' << 0 ) | ( 'E' << 8 ) | ( 'T' << 16 ) | ( 'A' << 24 ) ) +#define EE_TEXTURE_ATLAS_MAGIC ( ( 'E' << 0 ) | ( 'E' << 8 ) | ( 'T' << 16 ) | ( 'A' << 24 ) ) #define EE_TEXTURE_ATLAS_EXTENSION ".eta" }}} diff --git a/include/eepp/graphics/pixeldensity.hpp b/include/eepp/graphics/pixeldensity.hpp new file mode 100644 index 000000000..116be3d16 --- /dev/null +++ b/include/eepp/graphics/pixeldensity.hpp @@ -0,0 +1,82 @@ +#ifndef EE_PIXELDENSITY_HPP +#define EE_PIXELDENSITY_HPP + +#include +#include +#include +#include + +using namespace EE::Math; + +namespace EE { namespace Graphics { + +enum EE_PIXEL_DENSITY { + PD_MDPI = 1, //!< 1dp = 1px + PD_HDPI = 2, //!< 1dp = 1.5px + PD_XHDPI = 3, //!< 1dp = 2px + PD_XXHDPI = 4, //!< 1dp = 3px + PD_XXXHDPI = 5 //!< 1dp = 4px +}; + +class EE_API PixelDensity { + public: + static Float toFloat( EE_PIXEL_DENSITY pd ) { + switch ( pd ) + { + case PD_MDPI: return 1.f; + case PD_HDPI: return 1.5f; + case PD_XHDPI: return 2.f; + case PD_XXHDPI: return 3.f; + case PD_XXXHDPI: return 4.f; + default: return 1.f; + } + } + + static Float toFloat( Uint32 pd ) { + return toFloat( (EE_PIXEL_DENSITY)pd ); + } + + static const Float& getPixelDensity(); + + static void setPixelDensity( const Float& pixelDensity ); + + static void setPixelDensity( const EE_PIXEL_DENSITY& pixelDensity ); + + static Float pxToDp( Float px ); + + static Int32 pxToDpI( Float px ); + + static Float dpToPx( Float dp ); + + static Int32 dpToPxI( Float dp ); + + static Sizei dpToPxI(Sizei size); + + static Sizei pxToDpI( Sizei size ); + + static Recti dpToPxI( Recti size); + + static Recti pxToDpI( Recti size ); + + static Rectf dpToPx( Rectf size); + + static Rectf pxToDp( Rectf size ); + + static Sizef dpToPx( Sizef size); + + static Sizef pxToDp( Sizef size ); + + static Sizei dpToPxI( Sizef size); + + static Sizei pxToDpI( Sizef size ); + + static Vector2i dpToPxI( Vector2i pos ); + + static Vector2i pxToDpI( Vector2i pos ); + protected: + static Float sPixelDensity; +}; + +}} + +#endif diff --git a/include/eepp/graphics/scrollparallax.hpp b/include/eepp/graphics/scrollparallax.hpp index b96959a0f..cdff070fa 100755 --- a/include/eepp/graphics/scrollparallax.hpp +++ b/include/eepp/graphics/scrollparallax.hpp @@ -79,13 +79,13 @@ class EE_API ScrollParallax { private: Graphics::SubTexture * mSubTexture; EE_BLEND_MODE mBlend; - ColorA mColor; + ColorA mColor; Vector2f mInitPos; Vector2f mPos; Vector2f mSpeed; Sizef mSize; Recti mRect; - Clock mElapsed; + Clock mElapsed; Vector2i mTiles; Rectf mAABB; Sizef mRealSize; diff --git a/include/eepp/graphics/subtexture.hpp b/include/eepp/graphics/subtexture.hpp index 071f32ee2..3b3776504 100644 --- a/include/eepp/graphics/subtexture.hpp +++ b/include/eepp/graphics/subtexture.hpp @@ -143,6 +143,10 @@ class EE_API SubTexture { /** Sets the Destination Size as the Source Rect Size ( the real size of the SubTexture ). */ void resetDestSize(); + + Float getPixelDensity() const; + + void setPixelDensity( const Float & pixelDensity ); protected: Uint8 * mPixels; Uint8 * mAlpha; @@ -153,6 +157,7 @@ class EE_API SubTexture { Recti mSrcRect; Sizef mDestSize; Vector2i mOffset; + Float mPixelDensity; void createUnnamed(); }; diff --git a/include/eepp/graphics/texturepacker.hpp b/include/eepp/graphics/texturepacker.hpp index 37960b9f6..d129c552e 100644 --- a/include/eepp/graphics/texturepacker.hpp +++ b/include/eepp/graphics/texturepacker.hpp @@ -52,11 +52,12 @@ class EE_API TexturePacker { /** Creates a new texture packer indicating the size of the texture atlas. * @param MaxWidth The maximum width that the texture atlas will use. * @param MaxHeight The maximum height that the texture atlas will use. + * @param PixelDensity Indicates the device pixel density that represents the resources that will the packer pack. * @param ForcePowOfTwo Indicates that if the max with and height must be adjusted to fit a power of two texture. * @param PixelBorder Indicates how many pixels will be added to separate one image to another in the texture atlas. Usefull to avoid artifacts when rendered scaled SubTextures. Use at least 1 pixel to separate images if you will scale any SubTexture. * @param AllowFlipping Indicates if the images can be flipped inside the texture atlas. This is not compatible with eepp ( since it can't flip the textures back to the original orientation ). So avoid it for eepp. */ - TexturePacker( const Uint32& MaxWidth, const Uint32& MaxHeight, const bool& ForcePowOfTwo = true, const Uint32& PixelBorder = 0, const bool& AllowFlipping = false ); + TexturePacker( const Uint32& MaxWidth, const Uint32& MaxHeight, const EE_PIXEL_DENSITY& PixelDensity = PD_MDPI, const bool& ForcePowOfTwo = true, const Uint32& PixelBorder = 0, const bool& AllowFlipping = false ); ~TexturePacker(); @@ -88,17 +89,18 @@ class EE_API TexturePacker { * If the instance of the texture packer was created without indicating this data, this must be called before adding any texture or image. * @param MaxWidth The maximum width that the texture atlas will use. * @param MaxHeight The maximum height that the texture atlas will use. + * @param PixelDensity Indicates the device pixel density that represents the resources that will the packer pack. * @param ForcePowOfTwo Indicates that if the max with and height must be adjusted to fit a power of two texture. * @param PixelBorder Indicates how many pixels will be added to separate one image to another in the texture atlas. Usefull to avoid artifacts when rendered scaled SubTextures. Use at least 1 pixel to separate images if you will scale any SubTexture. * @param AllowFlipping Indicates if the images can be flipped inside the texture atlas. This is not compatible with eepp ( since it can't flip the textures back to the original orientation ). So avoid it for eepp. */ - void setOptions( const Uint32& MaxWidth, const Uint32& MaxHeight, const bool& ForcePowOfTwo = true, const Uint32& PixelBorder = 0, const bool& AllowFlipping = false ); + void setOptions( const Uint32& MaxWidth, const Uint32& MaxHeight, const EE_PIXEL_DENSITY& PixelDensity = PD_MDPI, const bool& ForcePowOfTwo = true, const Uint32& PixelBorder = 0, const bool& AllowFlipping = false ); /** @return The texture atlas to generate width. */ - const Int32& width() const; + const Int32& getWidth() const; /** @return The texture atlas to generate height */ - const Int32& height() const; + const Int32& getHeight() const; /** @return If the texture atlas has already been saved, returns the file path to the texture atlas. */ const std::string& getFilepath() const; @@ -113,7 +115,7 @@ class EE_API TexturePacker { Int32 mLongestEdge; Int32 mTotalArea; - TexturePackerNode * mFreeList; + TexturePackerNode * mFreeList; Int32 mWidth; Int32 mHeight; bool mPacked; @@ -126,6 +128,7 @@ class EE_API TexturePacker { Int32 mPlacedCount; bool mForcePowOfTwo; Int32 mPixelBorder; + EE_PIXEL_DENSITY mPixelDensity; bool mSaveExtensions; EE_SAVE_TYPE mFormat; @@ -139,7 +142,7 @@ class EE_API TexturePacker { void saveSubTextures(); - void newFree( Int32 x, Int32 y, Int32 width, Int32 height ); + void newFree( Int32 x, Int32 y, Int32 getWidth, Int32 getHeight ); bool mergeNodes(); @@ -151,15 +154,11 @@ class EE_API TexturePacker { Int32 getChildCount(); - const Int32& getWidth() const; - - const Int32& getHeight() const; - const Int32& getPlacedCount() const; sTextureHdr createTextureHdr( TexturePacker * Packer ); - void createSubTexturesHdr( TexturePacker * Packer, std::vector& SubTextures ); + void createSubTexturesHdr(TexturePacker * Packer, std::vector & SubTextures ); TexturePackerNode * getBestFit( TexturePackerTex * t, TexturePackerNode ** prevBestFit, Int32 * EdgeCount ); diff --git a/include/eepp/ui/base.hpp b/include/eepp/ui/base.hpp index 39d7aa5d0..cf17c58b4 100644 --- a/include/eepp/ui/base.hpp +++ b/include/eepp/ui/base.hpp @@ -24,6 +24,7 @@ using namespace EE::Window; #include #include +#include using namespace EE::Graphics; #endif diff --git a/include/eepp/ui/uicontrol.hpp b/include/eepp/ui/uicontrol.hpp index 2ec94a404..f22c29808 100644 --- a/include/eepp/ui/uicontrol.hpp +++ b/include/eepp/ui/uicontrol.hpp @@ -22,8 +22,6 @@ class UIManager; class EE_API UIControl { public: - static Float getPixelDensity(); - typedef cb::Callback1 UIEventCallback; class CreateParams { @@ -441,38 +439,6 @@ class EE_API UIControl { void setInternalPixelsHeight( const Int32& height ); - Float pxToDp( Float px ); - - Int32 pxToDpI( Float px ); - - Float dpToPx( Float dp ); - - Int32 dpToPxI( Float dp ); - - Sizei dpToPxI(Sizei size); - - Sizei pxToDpI( Sizei size ); - - Recti dpToPxI( Recti size); - - Recti pxToDpI( Recti size ); - - Rectf dpToPx( Rectf size); - - Rectf pxToDp( Rectf size ); - - Sizef dpToPx( Sizef size); - - Sizef pxToDp( Sizef size ); - - Sizei dpToPxI( Sizef size); - - Sizei pxToDpI( Sizef size ); - - Vector2i dpToPxI( Vector2i pos ); - - Vector2i pxToDpI( Vector2i pos ); - UIControl * findIdHash( const Uint32& idHash ); }; diff --git a/include/eepp/ui/uiskincomplex.hpp b/include/eepp/ui/uiskincomplex.hpp index 80252de6f..fce580f98 100644 --- a/include/eepp/ui/uiskincomplex.hpp +++ b/include/eepp/ui/uiskincomplex.hpp @@ -8,7 +8,7 @@ namespace EE { namespace UI { class EE_API UISkinComplex : public UISkin { public: - static std::string GetSideSuffix( const Uint32& Side ); + static std::string getSideSuffix( const Uint32& Side ); enum UISkinComplexSides { Left = 0, diff --git a/include/eepp/ui/uitheme.hpp b/include/eepp/ui/uitheme.hpp index 5fb7ea154..9e2a0e868 100644 --- a/include/eepp/ui/uitheme.hpp +++ b/include/eepp/ui/uitheme.hpp @@ -52,9 +52,9 @@ class EE_API UITheme : protected ResourceManager { static UITheme * loadFromPath( UITheme * tTheme, const std::string& Path, const std::string ImgExt = "png" ); - static UITheme * loadFromTextureAtlas( Graphics::TextureAtlas * getTextureAtlas, const std::string& getName, const std::string NameAbbr ); + static UITheme * loadFromTextureAtlas( Graphics::TextureAtlas * getTextureAtlas, const std::string& Name, const std::string NameAbbr ); - static UITheme * loadFromPath( const std::string& Path, const std::string& getName, const std::string& NameAbbr, const std::string ImgExt = "png" ); + static UITheme * loadFromPath( const std::string& Path, const std::string& Name, const std::string& NameAbbr, const std::string ImgExt = "png" ); void addThemeElement( const std::string& Element ); diff --git a/include/eepp/window/engine.hpp b/include/eepp/window/engine.hpp index b201716b9..e8a363ae4 100755 --- a/include/eepp/window/engine.hpp +++ b/include/eepp/window/engine.hpp @@ -125,10 +125,6 @@ class EE_API Engine { /** @return The id of the thread that was used to initialize the OpenGL Context. */ Uint32 getMainThreadId(); - - Float getPixelDensity() const; - - void setPixelDensity( const Float & pixelDensity ); protected: friend class Window; @@ -137,7 +133,6 @@ class EE_API Engine { EE::Window::Window * mWindow; bool mSharedGLContext; Uint32 mMainThreadId; - Float mPixelDensity; Engine(); diff --git a/projects/linux/ee.files b/projects/linux/ee.files index 8a75f036f..93d2745ea 100644 --- a/projects/linux/ee.files +++ b/projects/linux/ee.files @@ -1,4 +1,8 @@ +../../include/eepp/graphics/font.hpp ../../src/eepp/gaming/mapobjectlayer.cpp +../../src/eepp/graphics/globalbatchrenderer.cpp +../../src/eepp/graphics/pixeldensity.cpp +../../src/eepp/graphics/pixelperfect.cpp ee.config ee.includes ../../../eeiv/src/capp.cpp diff --git a/projects/linux/ee.includes b/projects/linux/ee.includes index c4d88f340..a9e2103fa 100644 --- a/projects/linux/ee.includes +++ b/projects/linux/ee.includes @@ -3,3 +3,5 @@ ../../src/examples/strobe ../../../eeiv/src . +../../include/eepp/graphics +../../src/eepp/graphics diff --git a/src/eepp/gaming/gameobjectsprite.cpp b/src/eepp/gaming/gameobjectsprite.cpp index 082744225..59c34f815 100644 --- a/src/eepp/gaming/gameobjectsprite.cpp +++ b/src/eepp/gaming/gameobjectsprite.cpp @@ -92,7 +92,7 @@ void GameObjectSprite::setTilePosition( Vector2i pos ) { Sizei GameObjectSprite::getSize() { if ( NULL != mSprite ) - return mSprite->getSubTexture(0)->getRealSize(); + return mSprite->getSubTexture(0)->getSize(); return Sizei(); } diff --git a/src/eepp/gaming/gameobjectsubtexture.cpp b/src/eepp/gaming/gameobjectsubtexture.cpp index 832e05cf3..76645e296 100644 --- a/src/eepp/gaming/gameobjectsubtexture.cpp +++ b/src/eepp/gaming/gameobjectsubtexture.cpp @@ -92,7 +92,7 @@ void GameObjectSubTexture::setTilePosition( Vector2i pos ) { Sizei GameObjectSubTexture::getSize() { if ( NULL != mSubTexture ) - return mSubTexture->getRealSize(); + return mSubTexture->getSize(); return Sizei(); } diff --git a/src/eepp/gaming/gameobjectvirtual.cpp b/src/eepp/gaming/gameobjectvirtual.cpp index 9e1b838cd..00936ec47 100644 --- a/src/eepp/gaming/gameobjectvirtual.cpp +++ b/src/eepp/gaming/gameobjectvirtual.cpp @@ -47,7 +47,7 @@ Uint32 GameObjectVirtual::getRealType() const { Sizei GameObjectVirtual::getSize() { if ( NULL != mSubTexture ) - return mSubTexture->getRealSize(); + return mSubTexture->getSize(); if ( NULL != mLayer ) return mLayer->getMap()->getTileSize(); diff --git a/src/eepp/gaming/mapeditor/uimap.cpp b/src/eepp/gaming/mapeditor/uimap.cpp index bd5ae45aa..cae3451bb 100644 --- a/src/eepp/gaming/mapeditor/uimap.cpp +++ b/src/eepp/gaming/mapeditor/uimap.cpp @@ -31,7 +31,7 @@ UIMap::UIMap( const UIComplexControl::CreateParams& Params, UITheme * Theme, Til mMap->setBackColor( ColorA( 100, 100, 100, 100 ) ); mMap->setGridLinesColor( ColorA( 150, 150, 150, 150 ) ); - mMap->setScale( getPixelDensity() ); + mMap->setScale( PixelDensity::getPixelDensity() ); mMap->setDrawCallback( cb::Make0( this, &UIMap::mapDraw ) ); mMap->setViewSize( mRealSize ); diff --git a/src/eepp/graphics/font.cpp b/src/eepp/graphics/font.cpp index 2234ca00d..b0672ddb6 100644 --- a/src/eepp/graphics/font.cpp +++ b/src/eepp/graphics/font.cpp @@ -131,7 +131,7 @@ void Font::draw( TextCache& TextCache, const Float& X, const Float& Y, const Uin setColor( TextCache.getShadowColor() ); } - Float pd = Window::Engine::instance()->getPixelDensity(); + Float pd = PixelDensity::getPixelDensity(); draw( X + 1 * pd, Y + 1 * pd, f, Scale, Angle, Effect ); diff --git a/src/eepp/graphics/pixeldensity.cpp b/src/eepp/graphics/pixeldensity.cpp new file mode 100644 index 000000000..37de0165a --- /dev/null +++ b/src/eepp/graphics/pixeldensity.cpp @@ -0,0 +1,83 @@ +#include + +namespace EE { namespace Graphics { + +Float PixelDensity::sPixelDensity = 1.f; + +const Float& PixelDensity::getPixelDensity() { + return sPixelDensity; +} + +void PixelDensity::setPixelDensity( const Float& pixelDensity ) { + sPixelDensity = pixelDensity; +} + +void PixelDensity::setPixelDensity( const EE_PIXEL_DENSITY& pixelDensity ) { + sPixelDensity = toFloat( pixelDensity ); +} + +Float PixelDensity::dpToPx( Float dp ) { + return dp * getPixelDensity(); +} + +Int32 PixelDensity::dpToPxI( Float dp ) { + return (Int32)dpToPx( dp ); +} + +Float PixelDensity::pxToDp( Float px ) { + return px / getPixelDensity(); +} + +Int32 PixelDensity::pxToDpI( Float px ) { + return (Int32)pxToDp( px ); +} + +Sizei PixelDensity::dpToPxI( Sizei size ) { + return Sizei( dpToPxI( size.x ), dpToPxI( size.y ) ); +} + +Sizei PixelDensity::pxToDpI( Sizei size ) { + return Sizei( pxToDpI( size.x ), pxToDpI( size.y ) ); +} + +Recti PixelDensity::dpToPxI( Recti rect ) { + return rect * getPixelDensity(); +} + +Recti PixelDensity::pxToDpI( Recti rect ) { + return rect / getPixelDensity(); +} + +Rectf PixelDensity::dpToPx( Rectf rect ) { + return rect * getPixelDensity(); +} + +Rectf PixelDensity::pxToDp( Rectf rect ) { + return rect / getPixelDensity(); +} + +Sizef PixelDensity::dpToPx( Sizef size ) { + return size * getPixelDensity(); +} + +Sizef PixelDensity::pxToDp( Sizef size ) { + return size * getPixelDensity(); +} + +Sizei PixelDensity::dpToPxI( Sizef size ) { + return Sizei( dpToPxI( size.x ), dpToPxI( size.y ) ); +} + +Sizei PixelDensity::pxToDpI( Sizef size ) { + return Sizei( pxToDpI( size.x ), pxToDpI( size.y ) ); +} + +Vector2i PixelDensity::dpToPxI( Vector2i pos ) { + return Sizei( dpToPxI( pos.x ), dpToPxI( pos.y ) ); +} + +Vector2i PixelDensity::pxToDpI( Vector2i pos ) { + return Sizei( pxToDpI( pos.x ), pxToDpI( pos.y ) ); +} + +}} diff --git a/src/eepp/graphics/subtexture.cpp b/src/eepp/graphics/subtexture.cpp index 8b6272264..609d48591 100644 --- a/src/eepp/graphics/subtexture.cpp +++ b/src/eepp/graphics/subtexture.cpp @@ -16,7 +16,8 @@ SubTexture::SubTexture() : mTexture(NULL), mSrcRect( Recti(0,0,0,0) ), mDestSize(0,0), - mOffset(0,0) + mOffset(0,0), + mPixelDensity(1) { createUnnamed(); } @@ -30,7 +31,8 @@ SubTexture::SubTexture( const Uint32& TexId, const std::string& Name ) : mTexture( TextureFactory::instance()->getTexture( TexId ) ), mSrcRect( Recti( 0, 0, NULL != mTexture ? mTexture->getImageWidth() : 0, NULL != mTexture ? mTexture->getImageHeight() : 0 ) ), mDestSize( (Float)mSrcRect.getSize().getWidth(), (Float)mSrcRect.getSize().getHeight() ), - mOffset(0,0) + mOffset(0,0), + mPixelDensity(1) { createUnnamed(); } @@ -44,7 +46,8 @@ SubTexture::SubTexture( const Uint32& TexId, const Recti& SrcRect, const std::st mTexture( TextureFactory::instance()->getTexture( TexId ) ), mSrcRect( SrcRect ), mDestSize( (Float)( mSrcRect.Right - mSrcRect.Left ), (Float)( mSrcRect.Bottom - mSrcRect.Top ) ), - mOffset(0,0) + mOffset(0,0), + mPixelDensity(1) { createUnnamed(); } @@ -58,7 +61,8 @@ SubTexture::SubTexture( const Uint32& TexId, const Recti& SrcRect, const Sizef& mTexture( TextureFactory::instance()->getTexture( TexId ) ), mSrcRect(SrcRect), mDestSize(DestSize), - mOffset(0,0) + mOffset(0,0), + mPixelDensity(1) { createUnnamed(); } @@ -72,7 +76,8 @@ SubTexture::SubTexture( const Uint32& TexId, const Recti& SrcRect, const Sizef& mTexture( TextureFactory::instance()->getTexture( TexId ) ), mSrcRect(SrcRect), mDestSize(DestSize), - mOffset(Offset) + mOffset(Offset), + mPixelDensity(1) { createUnnamed(); } @@ -370,8 +375,17 @@ bool SubTexture::saveToFile(const std::string& filepath, const EE_SAVE_TYPE& For void SubTexture::resetDestSize() { Sizei Size = mSrcRect.getSize(); - mDestSize.x = (Float)Size.getWidth(); - mDestSize.y = (Float)Size.getHeight(); + mDestSize.x = (Float)Size.getWidth() / mPixelDensity * PixelDensity::getPixelDensity(); + mDestSize.y = (Float)Size.getHeight() / mPixelDensity * PixelDensity::getPixelDensity(); +} + +Float SubTexture::getPixelDensity() const { + return mPixelDensity; +} + +void SubTexture::setPixelDensity( const Float & pixelDensity ) { + mPixelDensity = pixelDensity; + resetDestSize(); } }} diff --git a/src/eepp/graphics/textureatlasloader.cpp b/src/eepp/graphics/textureatlasloader.cpp index 2b9700a19..7ef46bfb1 100644 --- a/src/eepp/graphics/textureatlasloader.cpp +++ b/src/eepp/graphics/textureatlasloader.cpp @@ -94,7 +94,7 @@ void TextureAtlasLoader::loadFromStream( IOStream& IOS ) { if ( IOS.isOpen() ) { IOS.read( (char*)&mTexGrHdr, sizeof(sTextureAtlasHdr) ); - if ( mTexGrHdr.Magic == EE_TEXTURE_ATLAS_MAGIC || mTexGrHdr.Magic == EE_TEXTURE_ATLAS_MAGIC_OLD ) { + if ( mTexGrHdr.Magic == EE_TEXTURE_ATLAS_MAGIC ) { for ( Uint32 i = 0; i < mTexGrHdr.TextureCount; i++ ) { sTextureHdr tTextureHdr; sTempTexAtlas tTexAtlas; @@ -232,6 +232,7 @@ void TextureAtlasLoader::createSubTextures() { SubTexture * tSubTexture = eeNew( SubTexture, ( tTex->getId(), tRect, Sizef( (Float)tSh->DestWidth, (Float)tSh->DestHeight ), Vector2i( tSh->OffsetX, tSh->OffsetY ), SubTextureName ) ); + tSubTexture->setPixelDensity( PixelDensity::toFloat( tSh->PixelDensity ) ); //if ( tSh->Flags & HDR_SUBTEXTURE_FLAG_FLIPED ) // Should rotate the sub texture, but.. sub texture rotation is not stored. @@ -433,7 +434,7 @@ bool TextureAtlasLoader::updateTextureAtlas( std::string TextureAtlasPath, std:: std::string tapath( FileSystem::fileRemoveExtension( TextureAtlasPath ) + "." + Image::saveTypeToExtension( mTexGrHdr.Format ) ); if ( 2 == NeedUpdate ) { - TexturePacker tp( mTexGrHdr.Width, mTexGrHdr.Height, 0 != ( mTexGrHdr.Flags & HDR_TEXTURE_ATLAS_POW_OF_TWO ), mTexGrHdr.PixelBorder, mTexGrHdr.Flags & HDR_TEXTURE_ATLAS_ALLOW_FLIPPING ); + TexturePacker tp( mTexGrHdr.Width, mTexGrHdr.Height, PD_MDPI, 0 != ( mTexGrHdr.Flags & HDR_TEXTURE_ATLAS_POW_OF_TWO ), mTexGrHdr.PixelBorder, mTexGrHdr.Flags & HDR_TEXTURE_ATLAS_ALLOW_FLIPPING ); tp.addTexturesPath( ImagesPath ); diff --git a/src/eepp/graphics/texturepacker.cpp b/src/eepp/graphics/texturepacker.cpp index f4d4e0429..10087155f 100644 --- a/src/eepp/graphics/texturepacker.cpp +++ b/src/eepp/graphics/texturepacker.cpp @@ -8,7 +8,7 @@ namespace EE { namespace Graphics { -TexturePacker::TexturePacker( const Uint32& MaxWidth, const Uint32& MaxHeight, const bool& ForcePowOfTwo, const Uint32& PixelBorder, const bool& AllowFlipping ) : +TexturePacker::TexturePacker( const Uint32& MaxWidth, const Uint32& MaxHeight, const EE_PIXEL_DENSITY& PixelDensity, const bool& ForcePowOfTwo, const Uint32& PixelBorder, const bool& AllowFlipping ) : mLongestEdge(0), mTotalArea(0), mFreeList(NULL), @@ -24,7 +24,7 @@ TexturePacker::TexturePacker( const Uint32& MaxWidth, const Uint32& MaxHeight, c mForcePowOfTwo(true), mPixelBorder(0) { - setOptions( MaxWidth, MaxHeight, ForcePowOfTwo, PixelBorder, AllowFlipping ); + setOptions( MaxWidth, MaxHeight, PixelDensity, ForcePowOfTwo, PixelBorder, AllowFlipping ); } TexturePacker::TexturePacker() : @@ -78,7 +78,7 @@ void TexturePacker::close() { eeSAFE_DELETE( mChild ); } -void TexturePacker::setOptions( const Uint32& MaxWidth, const Uint32& MaxHeight, const bool& ForcePowOfTwo, const Uint32& PixelBorder, const bool& AllowFlipping ) { +void TexturePacker::setOptions( const Uint32& MaxWidth, const Uint32& MaxHeight, const EE_PIXEL_DENSITY& PixelDensity, const bool& ForcePowOfTwo, const Uint32& PixelBorder, const bool& AllowFlipping ) { if ( !mTextures.size() ) { // only can change the dimensions before adding any texture mWidth = MaxWidth; mHeight = MaxHeight; @@ -92,6 +92,7 @@ void TexturePacker::setOptions( const Uint32& MaxWidth, const Uint32& MaxHeight, mForcePowOfTwo = ForcePowOfTwo; mAllowFlipping = AllowFlipping; mPixelBorder = PixelBorder; + mPixelDensity = PixelDensity; } } @@ -341,7 +342,7 @@ void TexturePacker::insertTexture( TexturePackerTex * t, TexturePackerNode * bes } void TexturePacker::createChild() { - mChild = eeNew( TexturePacker, ( mWidth, mHeight, mForcePowOfTwo, mPixelBorder, mAllowFlipping ) ); + mChild = eeNew( TexturePacker, ( mWidth, mHeight, mPixelDensity, mForcePowOfTwo, mPixelBorder, mAllowFlipping ) ); std::list::iterator it; std::list< std::list::iterator > remove; @@ -595,6 +596,8 @@ void TexturePacker::saveSubTextures() { sTextureAtlasHdr TexGrHdr; TexGrHdr.Magic = EE_TEXTURE_ATLAS_MAGIC; + TexGrHdr.Version = 1000; + TexGrHdr.Date = static_cast( Sys::getSystemTime() ); TexGrHdr.TextureCount = 1 + getChildCount(); TexGrHdr.Format = mFormat; TexGrHdr.Width = mWidth; @@ -602,6 +605,8 @@ void TexturePacker::saveSubTextures() { TexGrHdr.PixelBorder = mPixelBorder; TexGrHdr.Flags = 0; + memset( TexGrHdr.Reserved, 0, 16 ); + if ( mAllowFlipping ) TexGrHdr.Flags |= HDR_TEXTURE_ATLAS_ALLOW_FLIPPING; @@ -694,6 +699,7 @@ void TexturePacker::createSubTexturesHdr( TexturePacker * Packer, std::vectory(); tSubTextureHdr.Date = FileSystem::fileGetModificationDate( tTex->name() ); tSubTextureHdr.Flags = 0; + tSubTextureHdr.PixelDensity = (Uint32)mPixelDensity; if ( tTex->flipped() ) tSubTextureHdr.Flags |= HDR_SUBTEXTURE_FLAG_FLIPED; @@ -772,12 +778,4 @@ const Int32& TexturePacker::getPlacedCount() const { return mPlacedCount; } -const Int32& TexturePacker::width() const { - return mWidth; -} - -const Int32& TexturePacker::height() const { - return mHeight; -} - }} diff --git a/src/eepp/graphics/ttffont.cpp b/src/eepp/graphics/ttffont.cpp index e0b61e4f1..b961c684a 100755 --- a/src/eepp/graphics/ttffont.cpp +++ b/src/eepp/graphics/ttffont.cpp @@ -46,7 +46,7 @@ bool TTFFont::loadFromMemory( Uint8* TTFData, const unsigned int& TTFDataSize, c mLoadedFromMemory = true; - Int32 rSize = (Int32)((Float)Size * Window::Engine::instance()->getPixelDensity()); + Int32 rSize = (Int32)((Float)Size * PixelDensity::getPixelDensity()); mFont = hkFontManager::instance()->OpenFromMemory( reinterpret_cast(&TTFData[0]), TTFDataSize, rSize, 0, NumCharsToGen ); @@ -64,7 +64,7 @@ bool TTFFont::load( const std::string& Filepath, const unsigned int& Size, EE_TT if ( FileSystem::fileExists( Filepath ) ) { mLoadedFromMemory = false; - Int32 rSize = (Int32)((Float)Size * Window::Engine::instance()->getPixelDensity()); + Int32 rSize = (Int32)((Float)Size * PixelDensity::getPixelDensity()); mFont = hkFontManager::instance()->OpenFromFile( Filepath.c_str(), rSize, 0, NumCharsToGen ); diff --git a/src/eepp/ui/tools/textureatlaseditor.cpp b/src/eepp/ui/tools/textureatlaseditor.cpp index ad08916e0..090efa05a 100644 --- a/src/eepp/ui/tools/textureatlaseditor.cpp +++ b/src/eepp/ui/tools/textureatlaseditor.cpp @@ -135,10 +135,10 @@ void TextureAtlasEditor::onResetDestSize( const UIEvent * Event ) { const UIEventMouse * MouseEvent = reinterpret_cast ( Event ); if ( NULL != mCurSubTexture && MouseEvent->getFlags() & EE_BUTTON_LMASK ) { - Sizei RealSize = mCurSubTexture->getRealSize(); - mCurSubTexture->resetDestSize(); + Sizei RealSize = mCurSubTexture->getSize(); + mSpinDestW->setValue( RealSize.getWidth() ); mSpinDestH->setValue( RealSize.getHeight() ); } diff --git a/src/eepp/ui/tools/textureatlasnew.cpp b/src/eepp/ui/tools/textureatlasnew.cpp index cdb170ec1..43ef127a8 100644 --- a/src/eepp/ui/tools/textureatlasnew.cpp +++ b/src/eepp/ui/tools/textureatlasnew.cpp @@ -127,7 +127,7 @@ void TextureAtlasNew::textureAtlasSave( const UIEvent * Event ) { b = static_cast( mPixelSpace->getValue() ); if ( Res1 && Res2 ) { - Graphics::TexturePacker * TexturePacker = eeNew( Graphics::TexturePacker, ( w, h, false, b ) ); + Graphics::TexturePacker * TexturePacker = eeNew( Graphics::TexturePacker, ( w, h, PD_MDPI, false, b ) ); TexturePacker->addTexturesPath( mTGPath->getText() ); diff --git a/src/eepp/ui/tools/textureatlassubtextureeditor.cpp b/src/eepp/ui/tools/textureatlassubtextureeditor.cpp index 735f0c610..29624eedc 100644 --- a/src/eepp/ui/tools/textureatlassubtextureeditor.cpp +++ b/src/eepp/ui/tools/textureatlassubtextureeditor.cpp @@ -35,9 +35,9 @@ TextureAtlasSubTextureEditor::~TextureAtlasSubTextureEditor() { void TextureAtlasSubTextureEditor::draw() { Primitives P; P.setColor( ColorA( 255, 0, 0, mAlpha ) ); - P.setLineWidth( dpToPx( 1.f ) ); + P.setLineWidth( PixelDensity::dpToPx( 1.f ) ); - Vector2i uiCenterPx = dpToPxI( mUICenter ); + Vector2i uiCenterPx = PixelDensity::dpToPxI( mUICenter ); P.drawLine( Line2f( Vector2f( mScreenPos.x, mScreenPos.y + uiCenterPx.y ), Vector2f( mScreenPos.x + mRealSize.getWidth(), mScreenPos.y + uiCenterPx.y ) ) ); P.drawLine( Line2f( Vector2f( mScreenPos.x + uiCenterPx.x, mScreenPos.y ), Vector2f( mScreenPos.x + uiCenterPx.x, mScreenPos.y + mRealSize.getHeight() ) ) ); @@ -46,12 +46,12 @@ void TextureAtlasSubTextureEditor::draw() { } void TextureAtlasSubTextureEditor::update() { - Vector2i Pos = mDrag->getPosition(); + Vector2i Pos = mDrag->getRealPosition(); UIComplexControl::update(); - if ( NULL != mGfx->getSubTexture() && mDrag->isDragEnabled() && mDrag->isDragging() && Pos != mDrag->getPosition() ) { - Vector2i Diff = -( Pos - mDrag->getPosition() ); + if ( NULL != mGfx->getSubTexture() && mDrag->isDragEnabled() && mDrag->isDragging() && Pos != mDrag->getRealPosition() ) { + Vector2i Diff = -( Pos - mDrag->getRealPosition() ); mGfx->getSubTexture()->setOffset( Vector2i( mGfx->getSubTexture()->getOffset().x + Diff.x, mGfx->getSubTexture()->getOffset().y + Diff.y ) ); diff --git a/src/eepp/ui/uicheckbox.cpp b/src/eepp/ui/uicheckbox.cpp index 6c579f1f7..3f26991e1 100644 --- a/src/eepp/ui/uicheckbox.cpp +++ b/src/eepp/ui/uicheckbox.cpp @@ -160,7 +160,7 @@ void UICheckBox::setPadding( const Recti& padding ) { mActiveButton->setPosition( mPadding.Left, mActiveButton->getPosition().y ); mInactiveButton->setPosition( mPadding.Left, mInactiveButton->getPosition().y ); - mRealPadding.Left = mActiveButton->getRealPosition().x + mActiveButton->getRealSize().getWidth() + dpToPxI( mTextSeparation ); + mRealPadding.Left = mActiveButton->getRealPosition().x + mActiveButton->getRealSize().getWidth() + PixelDensity::dpToPxI( mTextSeparation ); } UIControlAnim * UICheckBox::getActiveButton() const { diff --git a/src/eepp/ui/uicombobox.cpp b/src/eepp/ui/uicombobox.cpp index 11569f3c8..052f5fbb1 100644 --- a/src/eepp/ui/uicombobox.cpp +++ b/src/eepp/ui/uicombobox.cpp @@ -52,7 +52,7 @@ void UIComboBox::createButton() { SubTexture * tSubTexture = tComplex->getSubTextureSide( UISkinState::StateNormal, UISkinComplex::Right ); if ( NULL != tSubTexture ) - btnWidth = tSubTexture->getRealSize().getWidth(); + btnWidth = tSubTexture->getSize().getWidth(); } } diff --git a/src/eepp/ui/uicommondialog.cpp b/src/eepp/ui/uicommondialog.cpp index fa0084348..1ef4c1835 100644 --- a/src/eepp/ui/uicommondialog.cpp +++ b/src/eepp/ui/uicommondialog.cpp @@ -17,12 +17,12 @@ UICommonDialog::UICommonDialog( const UICommonDialog::CreateParams& Params ) : { if ( mSize.getWidth() < CDLG_MIN_WIDTH ) { mSize.x = CDLG_MIN_WIDTH; - mRealSize.x = dpToPxI( CDLG_MIN_WIDTH ); + mRealSize.x = PixelDensity::dpToPxI( CDLG_MIN_WIDTH ); } if ( mSize.getHeight() < CDLG_MIN_HEIGHT ) { mSize.y = CDLG_MIN_HEIGHT; - mRealSize.y = dpToPxI( CDLG_MIN_HEIGHT ); + mRealSize.y = PixelDensity::dpToPxI( CDLG_MIN_HEIGHT ); } if ( mMinWindowSize.getWidth() < CDLG_MIN_WIDTH ) diff --git a/src/eepp/ui/uicomplexcontrol.cpp b/src/eepp/ui/uicomplexcontrol.cpp index 5529a1e71..55ab9cadd 100644 --- a/src/eepp/ui/uicomplexcontrol.cpp +++ b/src/eepp/ui/uicomplexcontrol.cpp @@ -60,7 +60,7 @@ void UIComplexControl::update() { if ( Time::Zero == UIThemeManager::instance()->getTooltipTimeToShow() ) { if ( !mTooltip->isVisible() || UIThemeManager::instance()->getTooltipFollowMouse() ) - mTooltip->setPosition( pxToDpI( Pos ) ); + mTooltip->setPosition( PixelDensity::pxToDpI( Pos ) ); mTooltip->show(); } else { @@ -70,7 +70,7 @@ void UIComplexControl::update() { if ( mTooltip->getTooltipTime() >= UIThemeManager::instance()->getTooltipTimeToShow() ) { if ( mTooltip->getTooltipTime().asMilliseconds() != -1.f ) { - mTooltip->setPosition( pxToDpI( Pos ) ); + mTooltip->setPosition( PixelDensity::pxToDpI( Pos ) ); mTooltip->show(); @@ -80,7 +80,7 @@ void UIComplexControl::update() { } if ( UIThemeManager::instance()->getTooltipFollowMouse() ) { - mTooltip->setPosition( pxToDpI( Pos ) ); + mTooltip->setPosition( PixelDensity::pxToDpI( Pos ) ); } } else { mTooltip->setTooltipTime( Milliseconds( 0.f ) ); @@ -165,7 +165,7 @@ void UIComplexControl::onParentSizeChange( const Vector2i& SizeChange ) { if ( mFlags & UI_ANCHOR_RIGHT ) { if ( NULL != mParentCtrl ) { - newSize.x = mParentCtrl->getSize().getWidth() - mPos.x - pxToDpI( mDistToBorder.Right ); + newSize.x = mParentCtrl->getSize().getWidth() - mPos.x - PixelDensity::pxToDpI( mDistToBorder.Right ); if ( newSize.x < mMinControlSize.getWidth() ) newSize.x = mMinControlSize.getWidth(); @@ -180,7 +180,7 @@ void UIComplexControl::onParentSizeChange( const Vector2i& SizeChange ) { if ( mFlags & UI_ANCHOR_BOTTOM ) { if ( NULL != mParentCtrl ) { - newSize.y = mParentCtrl->getSize().y - mPos.y - pxToDpI( mDistToBorder.Bottom ); + newSize.y = mParentCtrl->getSize().y - mPos.y - PixelDensity::pxToDpI( mDistToBorder.Bottom ); if ( newSize.y < mMinControlSize.getHeight() ) newSize.y = mMinControlSize.getHeight(); diff --git a/src/eepp/ui/uicontrol.cpp b/src/eepp/ui/uicontrol.cpp index 95d4806e1..6c74c0957 100644 --- a/src/eepp/ui/uicontrol.cpp +++ b/src/eepp/ui/uicontrol.cpp @@ -9,15 +9,11 @@ namespace EE { namespace UI { -Float UIControl::getPixelDensity() { - return Engine::instance()->getPixelDensity(); -} - UIControl::UIControl( const CreateParams& Params ) : mPos( Params.Pos ), - mRealPos( Params.Pos.x * getPixelDensity(), Params.Pos.y * getPixelDensity() ), + mRealPos( Params.Pos.x * PixelDensity::getPixelDensity(), Params.Pos.y * PixelDensity::getPixelDensity() ), mSize( Params.Size ), - mRealSize( dpToPxI( Params.Size ) ), + mRealSize( PixelDensity::dpToPxI( Params.Size ) ), mFlags( Params.Flags ), mData( 0 ), mParentCtrl( Params.ParentCtrl ), @@ -151,7 +147,7 @@ Uint32 UIControl::onMessage( const UIMessage * Msg ) { void UIControl::setInternalPosition( const Vector2i& Pos ) { mPos = Pos; - mRealPos = Vector2i( Pos.x * getPixelDensity(), Pos.y * getPixelDensity() ); + mRealPos = Vector2i( Pos.x * PixelDensity::getPixelDensity(), Pos.y * PixelDensity::getPixelDensity() ); } void UIControl::setPosition( const Vector2i& Pos ) { @@ -164,7 +160,7 @@ void UIControl::setPosition( const Int32& x, const Int32& y ) { } void UIControl::setPixelsPosition( const Vector2i& Pos ) { - mPos = Vector2i( pxToDpI( Pos.x ), pxToDpI( Pos.y ) ); + mPos = Vector2i( PixelDensity::pxToDpI( Pos.x ), PixelDensity::pxToDpI( Pos.y ) ); mRealPos = Pos; onPositionChange(); } @@ -183,11 +179,11 @@ const Vector2i &UIControl::getRealPosition() const { void UIControl::setInternalSize( const Sizei& size ) { mSize = size; - mRealSize = Sizei( size.x * getPixelDensity(), size.y * getPixelDensity() ); + mRealSize = Sizei( size.x * PixelDensity::getPixelDensity(), size.y * PixelDensity::getPixelDensity() ); } void UIControl::setInternalPixelsSize( const Sizei& size ) { - mSize = pxToDpI( size ); + mSize = PixelDensity::pxToDpI( size ); mRealSize = size; } @@ -210,7 +206,7 @@ void UIControl::setSize( const Int32& Width, const Int32& Height ) { } void UIControl::setPixelsSize( const Sizei & size ) { - setSize( pxToDpI( size ) ); + setSize( PixelDensity::pxToDpI( size ) ); } void UIControl::setPixelsSize( const Int32& x, const Int32& y ) { @@ -334,7 +330,7 @@ void UIControl::drawHighlightFocus() { P.setFillMode( DRAW_LINE ); P.setBlendMode( getBlendMode() ); P.setColor( UIManager::instance()->getHighlightFocusColor() ); - P.setLineWidth( dpToPxI( 1 ) ); + P.setLineWidth( PixelDensity::dpToPxI( 1 ) ); P.drawRectangle( getRectf() ); } } @@ -345,7 +341,7 @@ void UIControl::drawOverControl() { P.setFillMode( DRAW_LINE ); P.setBlendMode( getBlendMode() ); P.setColor( UIManager::instance()->getHighlightOverColor() ); - P.setLineWidth( dpToPxI( 1 ) ); + P.setLineWidth( PixelDensity::dpToPxI( 1 ) ); P.drawRectangle( getRectf() ); } } @@ -367,7 +363,7 @@ void UIControl::drawBox() { P.setFillMode( DRAW_LINE ); P.setBlendMode( getBlendMode() ); P.setColor( ColorA::colorFromPointer( this ) ); - P.setLineWidth( dpToPxI( 1 ) ); + P.setLineWidth( PixelDensity::dpToPxI( 1 ) ); P.drawRectangle( getRectf() ); } } @@ -662,70 +658,6 @@ Rectf UIControl::getRectf() { return Rectf( mScreenPosf, Sizef( (Float)mRealSize.getWidth(), (Float)mRealSize.getHeight() ) ); } -Float UIControl::dpToPx( Float dp ) { - return dp * getPixelDensity(); -} - -Int32 UIControl::dpToPxI( Float dp ) { - return (Int32)dpToPx( dp ); -} - -Float UIControl::pxToDp( Float px ) { - return px / getPixelDensity(); -} - -Int32 UIControl::pxToDpI( Float px ) { - return (Int32)pxToDp( px ); -} - -Sizei UIControl::dpToPxI( Sizei size ) { - return Sizei( dpToPxI( size.x ), dpToPxI( size.y ) ); -} - -Sizei UIControl::pxToDpI( Sizei size ) { - return Sizei( pxToDpI( size.x ), pxToDpI( size.y ) ); -} - -Recti UIControl::dpToPxI( Recti rect ) { - return rect * getPixelDensity(); -} - -Recti UIControl::pxToDpI( Recti rect ) { - return rect / getPixelDensity(); -} - -Rectf UIControl::dpToPx( Rectf rect ) { - return rect * getPixelDensity(); -} - -Rectf UIControl::pxToDp( Rectf rect ) { - return rect / getPixelDensity(); -} - -Sizef UIControl::dpToPx( Sizef size ) { - return size * getPixelDensity(); -} - -Sizef UIControl::pxToDp( Sizef size ) { - return size * getPixelDensity(); -} - -Sizei UIControl::dpToPxI( Sizef size ) { - return Sizei( dpToPxI( size.x ), dpToPxI( size.y ) ); -} - -Sizei UIControl::pxToDpI( Sizef size ) { - return Sizei( pxToDpI( size.x ), pxToDpI( size.y ) ); -} - -Vector2i UIControl::dpToPxI( Vector2i pos ) { - return Sizei( dpToPxI( pos.x ), dpToPxI( pos.y ) ); -} - -Vector2i UIControl::pxToDpI( Vector2i pos ) { - return Sizei( pxToDpI( pos.x ), pxToDpI( pos.y ) ); -} - void UIControl::backgroundDraw() { Primitives P; Rectf R = getRectf(); @@ -751,7 +683,7 @@ void UIControl::borderDraw() { Primitives P; P.setFillMode( DRAW_LINE ); P.setBlendMode( getBlendMode() ); - P.setLineWidth( dpToPx( mBorder->getWidth() ) ); + P.setLineWidth( PixelDensity::dpToPx( mBorder->getWidth() ) ); P.setColor( mBorder->getColor() ); //! @TODO: Check why was this +0.1f -0.1f? @@ -1347,28 +1279,28 @@ Recti UIControl::makePadding( bool PadLeft, bool PadRight, bool PadTop, bool Pad tSubTexture = tComplex->getSubTextureSide( UISkinState::StateNormal, UISkinComplex::Left ); if ( NULL != tSubTexture ) - tPadding.Left = tSubTexture->getRealSize().getWidth(); + tPadding.Left = tSubTexture->getSize().getWidth(); } if ( PadRight ) { tSubTexture = tComplex->getSubTextureSide( UISkinState::StateNormal, UISkinComplex::Right ); if ( NULL != tSubTexture ) - tPadding.Right = tSubTexture->getRealSize().getWidth(); + tPadding.Right = tSubTexture->getSize().getWidth(); } if ( PadTop ) { tSubTexture = tComplex->getSubTextureSide( UISkinState::StateNormal, UISkinComplex::Up ); if ( NULL != tSubTexture ) - tPadding.Top = tSubTexture->getRealSize().getHeight(); + tPadding.Top = tSubTexture->getSize().getHeight(); } if ( PadBottom ) { tSubTexture = tComplex->getSubTextureSide( UISkinState::StateNormal, UISkinComplex::Down ); if ( NULL != tSubTexture ) - tPadding.Bottom = tSubTexture->getRealSize().getHeight(); + tPadding.Bottom = tSubTexture->getSize().getHeight(); } } } @@ -1498,11 +1430,11 @@ void UIControl::worldToControl( Vector2i& pos ) const { } Pos = Vector2f( Pos.x / scale.x, Pos.y / scale.y ); - pos = Vector2i( Pos.x / getPixelDensity(), Pos.y / getPixelDensity() ); + pos = Vector2i( Pos.x / PixelDensity::getPixelDensity(), Pos.y / PixelDensity::getPixelDensity() ); } void UIControl::controlToWorld( Vector2i& pos ) const { - Vector2f Pos( (Float)pos.x * getPixelDensity(), (Float)pos.y * getPixelDensity() ); + Vector2f Pos( (Float)pos.x * PixelDensity::getPixelDensity(), (Float)pos.y * PixelDensity::getPixelDensity() ); std::list parents; diff --git a/src/eepp/ui/uicontrolanim.cpp b/src/eepp/ui/uicontrolanim.cpp index a261e23a5..65f955c19 100644 --- a/src/eepp/ui/uicontrolanim.cpp +++ b/src/eepp/ui/uicontrolanim.cpp @@ -81,7 +81,7 @@ const OriginPoint& UIControlAnim::getRotationOriginPoint() const { } void UIControlAnim::setRotationOriginPoint( const OriginPoint & center ) { - mRotationOriginPoint = dpToPx( center ); + mRotationOriginPoint = PixelDensity::dpToPx( center ); updateOriginPoint(); } @@ -126,7 +126,7 @@ const OriginPoint& UIControlAnim::getScaleOriginPoint() const { } void UIControlAnim::setScaleOriginPoint( const OriginPoint & center ) { - mScaleOriginPoint = dpToPx( center ); + mScaleOriginPoint = PixelDensity::dpToPx( center ); updateOriginPoint(); } @@ -385,7 +385,7 @@ void UIControlAnim::borderDraw() { Primitives P; P.setFillMode( DRAW_LINE ); P.setBlendMode( getBlendMode() ); - P.setLineWidth( dpToPx( mBorder->getWidth() ) ); + P.setLineWidth( PixelDensity::dpToPx( mBorder->getWidth() ) ); P.setColor( getColor( mBorder->getColor() ) ); //! @TODO: Check why was this +0.1f -0.1f? diff --git a/src/eepp/ui/uidragable.cpp b/src/eepp/ui/uidragable.cpp index 50258182f..35b50a787 100644 --- a/src/eepp/ui/uidragable.cpp +++ b/src/eepp/ui/uidragable.cpp @@ -71,12 +71,12 @@ void UIDragable::update() { Vector2i Pos( UIManager::instance()->getMousePos() ); - if ( mDragPoint != Pos && ( abs( mDragPoint.x - Pos.x ) > getPixelDensity() || abs( mDragPoint.y - Pos.y ) > getPixelDensity() ) ) { + if ( mDragPoint != Pos && ( abs( mDragPoint.x - Pos.x ) > PixelDensity::getPixelDensity() || abs( mDragPoint.y - Pos.y ) > PixelDensity::getPixelDensity() ) ) { if ( onDrag( Pos ) ) { Sizei dragDiff; - dragDiff.x = (Int32)( (Float)( mDragPoint.x - Pos.x ) / getPixelDensity() ); - dragDiff.y = (Int32)( (Float)( mDragPoint.y - Pos.y ) / getPixelDensity() ); + dragDiff.x = (Int32)( (Float)( mDragPoint.x - Pos.x ) / PixelDensity::getPixelDensity() ); + dragDiff.y = (Int32)( (Float)( mDragPoint.y - Pos.y ) / PixelDensity::getPixelDensity() ); setInternalPosition( mPos - dragDiff ); diff --git a/src/eepp/ui/uigfx.cpp b/src/eepp/ui/uigfx.cpp index 0099b0015..9dc04f8da 100644 --- a/src/eepp/ui/uigfx.cpp +++ b/src/eepp/ui/uigfx.cpp @@ -45,7 +45,7 @@ void UIGfx::setSubTexture( Graphics::SubTexture * subTexture ) { autoSize(); if ( NULL != mSubTexture && mSize.x == 0 && mSize.y == 0 ) { - setPixelsSize( Sizei( mSubTexture->getDestSize().x, mSubTexture->getDestSize().y ) ); + setPixelsSize( mSubTexture->getSize() ); } autoAlign(); @@ -67,7 +67,7 @@ void UIGfx::draw() { if ( mVisible ) { if ( NULL != mSubTexture && 0.f != mAlpha ) { Sizef oDestSize = mSubTexture->getDestSize(); - Vector2i oOff = mSubTexture->getOffset(); + Vector2i oOff = mSubTexture->getOffset(); if ( mFlags & UI_FIT_TO_CONTROL ) { mSubTexture->setOffset( Vector2i( 0, 0 ) ); diff --git a/src/eepp/ui/uilistbox.cpp b/src/eepp/ui/uilistbox.cpp index 3c012fa83..28e63089d 100644 --- a/src/eepp/ui/uilistbox.cpp +++ b/src/eepp/ui/uilistbox.cpp @@ -174,7 +174,7 @@ void UIListBox::setTheme( UITheme * Theme ) { void UIListBox::autoPadding() { if ( mFlags & UI_AUTO_PADDING ) { - mPaddingContainer = pxToDpI( makePadding() ); + mPaddingContainer = PixelDensity::pxToDpI( makePadding() ); } } @@ -388,7 +388,7 @@ void UIListBox::setRowHeight() { if ( NULL != mFont ) FontSize = mFont->getFontHeight(); - mRowHeight = (Uint32)pxToDpI( FontSize + 4 ); + mRowHeight = (Uint32)PixelDensity::pxToDpI( FontSize + 4 ); } if ( tOldRowHeight != mRowHeight ) { @@ -527,9 +527,9 @@ void UIListBox::updateScroll( bool FromScrollChange ) { Int32 ScrollH; if ( mVScrollBar->isVisible() ) - ScrollH = pxToDpI( mMaxTextWidth ) - mContainer->getSize().getWidth() + mVScrollBar->getSize().getWidth(); + ScrollH = PixelDensity::pxToDpI( mMaxTextWidth ) - mContainer->getSize().getWidth() + mVScrollBar->getSize().getWidth(); else - ScrollH = pxToDpI( mMaxTextWidth ) - mContainer->getSize().getWidth(); + ScrollH = PixelDensity::pxToDpI( mMaxTextWidth ) - mContainer->getSize().getWidth(); Int32 HScrolleable = (Uint32)( mHScrollBar->getValue() * ScrollH ); diff --git a/src/eepp/ui/uimanager.cpp b/src/eepp/ui/uimanager.cpp index 35759c8a1..50b3a297d 100644 --- a/src/eepp/ui/uimanager.cpp +++ b/src/eepp/ui/uimanager.cpp @@ -51,7 +51,7 @@ void UIManager::init( Uint32 Flags, EE::Window::Window * window ) { UIWindow::CreateParams Params; Params.setParent( NULL ); Params.setPosition( 0, 0 ); - Params.setSize( (Float)Engine::instance()->getWidth() / UIControl::getPixelDensity(), (Float)Engine::instance()->getHeight() / UIControl::getPixelDensity() ); + Params.setSize( (Float)Engine::instance()->getWidth() / PixelDensity::getPixelDensity(), (Float)Engine::instance()->getHeight() / PixelDensity::getPixelDensity() ); Params.Flags = UI_CONTROL_DEFAULT_FLAGS | UI_REPORT_SIZE_CHANGE_TO_CHILDS; Params.WinFlags = UI_WIN_NO_BORDER | UI_WIN_RESIZEABLE; Params.MinWindowSize = Sizei( 0, 0 ); @@ -111,7 +111,7 @@ void UIManager::inputCallback( InputEvent * Event ) { } void UIManager::resizeControl( EE::Window::Window * win ) { - mControl->setSize( (Float)mWindow->getWidth() / UIControl::getPixelDensity(), (Float)mWindow->getHeight() / UIControl::getPixelDensity() ); + mControl->setSize( (Float)mWindow->getWidth() / PixelDensity::getPixelDensity(), (Float)mWindow->getHeight() / PixelDensity::getPixelDensity() ); sendMsg( mControl, UIMessage::MsgWindowResize ); std::list::iterator it; diff --git a/src/eepp/ui/uimenu.cpp b/src/eepp/ui/uimenu.cpp index b759af67b..3e8f7c082 100644 --- a/src/eepp/ui/uimenu.cpp +++ b/src/eepp/ui/uimenu.cpp @@ -149,7 +149,7 @@ bool UIMenu::checkControlSize( UIControl * Control, const bool& Resize ) { } if ( mFlags & UI_AUTO_SIZE ) { - Int32 textWidth = pxToDpI( tItem->getTextBox()->getTextWidth() ); + Int32 textWidth = PixelDensity::pxToDpI( tItem->getTextBox()->getTextWidth() ); if ( Control->isType( UI_TYPE_MENUSUBMENU ) ) { UIMenuSubMenu * tMenu = reinterpret_cast ( tItem ); @@ -346,7 +346,7 @@ void UIMenu::onSizeChange() { void UIMenu::autoPadding() { if ( mFlags & UI_AUTO_PADDING ) { - mPadding = pxToDpI( makePadding() ); + mPadding = PixelDensity::pxToDpI( makePadding() ); } } diff --git a/src/eepp/ui/uimenusubmenu.cpp b/src/eepp/ui/uimenusubmenu.cpp index 8b19613db..c7a8b64bb 100644 --- a/src/eepp/ui/uimenusubmenu.cpp +++ b/src/eepp/ui/uimenusubmenu.cpp @@ -49,7 +49,7 @@ void UIMenuSubMenu::setTheme( UITheme * Theme ) { void UIMenuSubMenu::onSizeChange() { UIMenuItem::onSizeChange(); - mArrow->setPosition( getParent()->getSize().getWidth() - mArrow->getSize().getWidth() - dpToPxI( 1 ), 0 ); + mArrow->setPosition( getParent()->getSize().getWidth() - mArrow->getSize().getWidth() - PixelDensity::dpToPxI( 1 ), 0 ); mArrow->centerVertical(); } diff --git a/src/eepp/ui/uiprogressbar.cpp b/src/eepp/ui/uiprogressbar.cpp index f499db869..efb03de04 100644 --- a/src/eepp/ui/uiprogressbar.cpp +++ b/src/eepp/ui/uiprogressbar.cpp @@ -45,7 +45,7 @@ void UIProgressBar::draw() { ColorA C( mParallax->getColor() ); C.Alpha = (Uint8)mAlpha; - Rectf fillerMargin = dpToPx( mFillerMargin ); + Rectf fillerMargin = PixelDensity::dpToPx( mFillerMargin ); mParallax->setColor( C ); mParallax->setPosition( Vector2f( mScreenPos.x + fillerMargin.Left, mScreenPos.y + fillerMargin.Top ) ); @@ -71,12 +71,12 @@ void UIProgressBar::setTheme( UITheme * Theme ) { Float Height = (Float)getSkinSize().getHeight(); if ( !mVerticalExpand ) - Height = (Float)tSubTexture->getRealSize().getHeight(); + Height = (Float)tSubTexture->getSize().getHeight(); if ( Height > mRealSize.getHeight() ) Height = mRealSize.getHeight(); - Rectf fillerMargin = dpToPx( mFillerMargin ); + Rectf fillerMargin = PixelDensity::dpToPx( mFillerMargin ); mParallax = eeNew( ScrollParallax, ( tSubTexture, Vector2f( mScreenPos.x + fillerMargin.Left, mScreenPos.y + fillerMargin.Top ), Sizef( ( ( mRealSize.getWidth() - fillerMargin.Left - fillerMargin.Right ) * mProgress ) / mTotalSteps, Height - fillerMargin.Top - fillerMargin.Bottom ), mSpeed ) ); } @@ -96,12 +96,12 @@ void UIProgressBar::onSizeChange() { Float Height = (Float)mRealSize.getHeight(); if ( !mVerticalExpand && mParallax->getSubTexture() ) - Height = (Float)mParallax->getSubTexture()->getRealSize().getHeight(); + Height = (Float)mParallax->getSubTexture()->getSize().getHeight(); if ( Height > mRealSize.getHeight() ) Height = mRealSize.getHeight(); - Rectf fillerMargin = dpToPx( mFillerMargin ); + Rectf fillerMargin = PixelDensity::dpToPx( mFillerMargin ); mParallax->setSize( Sizef( ( ( mRealSize.getWidth() - fillerMargin.Left - fillerMargin.Right ) * mProgress ) / mTotalSteps, Height - fillerMargin.Top - fillerMargin.Bottom ) ); } diff --git a/src/eepp/ui/uipushbutton.cpp b/src/eepp/ui/uipushbutton.cpp index 507fef087..23d0456df 100644 --- a/src/eepp/ui/uipushbutton.cpp +++ b/src/eepp/ui/uipushbutton.cpp @@ -70,7 +70,7 @@ void UIPushButton::onSizeChange() { mTextBox->setPosition( 0, 0 ); } - mIcon->setPosition( pxToDpI( mIconSpace ), 0 ); + mIcon->setPosition( PixelDensity::pxToDpI( mIconSpace ), 0 ); mIcon->centerVertical(); if ( NULL != mTextBox ) { diff --git a/src/eepp/ui/uiradiobutton.cpp b/src/eepp/ui/uiradiobutton.cpp index eaa36cf9c..91cf21a2c 100644 --- a/src/eepp/ui/uiradiobutton.cpp +++ b/src/eepp/ui/uiradiobutton.cpp @@ -223,7 +223,7 @@ void UIRadioButton::setPadding( const Recti& padding ) { mActiveButton->setPosition( mPadding.Left, mActiveButton->getPosition().y ); mInactiveButton->setPosition( mPadding.Left, mInactiveButton->getPosition().y ); - mRealPadding.Left = mActiveButton->getRealPosition().x + mActiveButton->getRealSize().getWidth() + dpToPxI( mTextSeparation ); + mRealPadding.Left = mActiveButton->getRealPosition().x + mActiveButton->getRealSize().getWidth() + PixelDensity::dpToPxI( mTextSeparation ); } UIControlAnim * UIRadioButton::getActiveButton() const { diff --git a/src/eepp/ui/uiscrollbar.cpp b/src/eepp/ui/uiscrollbar.cpp index 5b55e29d7..b03163795 100644 --- a/src/eepp/ui/uiscrollbar.cpp +++ b/src/eepp/ui/uiscrollbar.cpp @@ -121,7 +121,7 @@ void UIScrollBar::autoSize() { if ( NULL != tSkin ) { Sizei size = tSkin->getSize(); - mMinControlSize = pxToDpI( size ); + mMinControlSize = PixelDensity::pxToDpI( size ); if ( mFlags & UI_AUTO_SIZE ) { if ( mSlider->isVertical() ) { diff --git a/src/eepp/ui/uiskincomplex.cpp b/src/eepp/ui/uiskincomplex.cpp index 3e68039ba..69b5ddf7b 100644 --- a/src/eepp/ui/uiskincomplex.cpp +++ b/src/eepp/ui/uiskincomplex.cpp @@ -7,7 +7,7 @@ static const char SideSuffix[ UISkinComplex::SideCount ][4] = { "ml", "mr","d","u","ul","ur","dl","dr","m" }; -std::string UISkinComplex::GetSideSuffix( const Uint32& Side ) { +std::string UISkinComplex::getSideSuffix( const Uint32& Side ) { eeASSERT( Side < UISkinComplex::SideCount ); return std::string( SideSuffix[ Side ] ); @@ -42,7 +42,7 @@ void UISkinComplex::draw( const Float& X, const Float& Y, const Float& Width, co Sizei uls; if ( NULL != tSubTexture ) { - uls = tSubTexture->getRealSize(); + uls = tSubTexture->getSize(); tSubTexture->draw( X, Y, mTempColor ); } @@ -52,7 +52,7 @@ void UISkinComplex::draw( const Float& X, const Float& Y, const Float& Width, co Sizei dls; if ( NULL != tSubTexture ) { - dls = tSubTexture->getRealSize(); + dls = tSubTexture->getSize(); tSubTexture->draw( X, Y + Height - dls.getHeight(), mTempColor ); } @@ -62,7 +62,7 @@ void UISkinComplex::draw( const Float& X, const Float& Y, const Float& Width, co Sizei urs; if ( NULL != tSubTexture ) { - urs = tSubTexture->getRealSize(); + urs = tSubTexture->getSize(); tSubTexture->draw( X + Width - urs.getWidth(), Y, mTempColor ); } @@ -72,7 +72,7 @@ void UISkinComplex::draw( const Float& X, const Float& Y, const Float& Width, co Sizei drs; if ( NULL != tSubTexture ) { - drs = tSubTexture->getRealSize(); + drs = tSubTexture->getSize(); tSubTexture->draw( X + Width - drs.getWidth(), Y + Height - drs.getHeight(), mTempColor ); } @@ -87,7 +87,7 @@ void UISkinComplex::draw( const Float& X, const Float& Y, const Float& Width, co tSubTexture->resetDestSize(); if ( uls.getWidth() == 0 ) - uls.x = tSubTexture->getRealSize().getWidth(); + uls.x = tSubTexture->getSize().getWidth(); } tSubTexture = mSubTexture[ State ][ Up ]; @@ -100,21 +100,21 @@ void UISkinComplex::draw( const Float& X, const Float& Y, const Float& Width, co tSubTexture->resetDestSize(); if ( urs.getHeight() == 0 ) - urs.y = tSubTexture->getRealSize().getHeight(); + urs.y = tSubTexture->getSize().getHeight(); if ( uls.getHeight() == 0 ) - uls.y = tSubTexture->getRealSize().getHeight(); + uls.y = tSubTexture->getSize().getHeight(); } tSubTexture = mSubTexture[ State ][ Right ]; if ( NULL != tSubTexture ) { if ( urs.getWidth() == 0 ) - urs.x = tSubTexture->getRealSize().getWidth(); + urs.x = tSubTexture->getSize().getWidth(); tSubTexture->setDestSize( Sizef( tSubTexture->getDestSize().x, Height - urs.getHeight() - drs.getHeight() ) ); - tSubTexture->draw( X + Width - tSubTexture->getRealSize().getWidth(), Y + urs.getHeight(), mTempColor ); + tSubTexture->draw( X + Width - tSubTexture->getSize().getWidth(), Y + urs.getHeight(), mTempColor ); tSubTexture->resetDestSize(); } @@ -124,12 +124,12 @@ void UISkinComplex::draw( const Float& X, const Float& Y, const Float& Width, co if ( NULL != tSubTexture ) { tSubTexture->setDestSize( Sizef( Width - dls.getWidth() - drs.getWidth(), tSubTexture->getDestSize().y ) ); - tSubTexture->draw( X + dls.getWidth(), Y + Height - tSubTexture->getRealSize().getHeight(), mTempColor ); + tSubTexture->draw( X + dls.getWidth(), Y + Height - tSubTexture->getSize().getHeight(), mTempColor ); tSubTexture->resetDestSize(); if ( dls.getHeight() == 0 && drs.getHeight() == 0 ) - dls.setHeight( tSubTexture->getRealSize().getHeight() ); + dls.setHeight( tSubTexture->getSize().getHeight() ); } tSubTexture = mSubTexture[ State ][ Center ]; @@ -204,32 +204,32 @@ void UISkinComplex::cacheSize() { SubTexture * tSubTexture = mSubTexture[ state ][ Center ]; if ( NULL != tSubTexture ) { - w += tSubTexture->getRealSize().x; - h += tSubTexture->getRealSize().y; + w += tSubTexture->getSize().x; + h += tSubTexture->getSize().y; } tSubTexture = mSubTexture[ state ][ Up ]; if ( NULL != tSubTexture ) { - h += tSubTexture->getRealSize().y; + h += tSubTexture->getSize().y; } tSubTexture = mSubTexture[ state ][ Down ]; if ( NULL != tSubTexture ) { - h += tSubTexture->getRealSize().y; + h += tSubTexture->getSize().y; } tSubTexture = mSubTexture[ state ][ Left ]; if ( NULL != tSubTexture ) { - w += tSubTexture->getRealSize().x; + w += tSubTexture->getSize().x; } tSubTexture = mSubTexture[ state ][ Right ]; if ( NULL != tSubTexture ) { - w += tSubTexture->getRealSize().x; + w += tSubTexture->getSize().x; } mSize[ state ] = Sizei( w, h ); diff --git a/src/eepp/ui/uiskinsimple.cpp b/src/eepp/ui/uiskinsimple.cpp index 1141a91d6..27392e114 100644 --- a/src/eepp/ui/uiskinsimple.cpp +++ b/src/eepp/ui/uiskinsimple.cpp @@ -74,7 +74,7 @@ UISkin * UISkinSimple::clone() { Sizei UISkinSimple::getSize( const Uint32 & state ) { if ( NULL != mSubTexture[ state ] ) { - return mSubTexture[ state ]->getRealSize(); + return mSubTexture[ state ]->getSize(); } return Sizei(); diff --git a/src/eepp/ui/uislider.cpp b/src/eepp/ui/uislider.cpp index 1ce9f5293..0516bfe45 100644 --- a/src/eepp/ui/uislider.cpp +++ b/src/eepp/ui/uislider.cpp @@ -66,9 +66,9 @@ UISlider::UISlider() : Sizei bgSize; if ( UI_HORIZONTAL == mOrientation ) - bgSize = dpToPxI( Sizei( mSize.getWidth() - 16, 8 ) ); + bgSize = PixelDensity::dpToPxI( Sizei( mSize.getWidth() - 16, 8 ) ); else - bgSize = dpToPxI( Sizei( 8, mSize.getHeight() - 16 ) ); + bgSize = PixelDensity::dpToPxI( Sizei( 8, mSize.getHeight() - 16 ) ); mBackSlider = eeNew( UIControlAnim, () ); mBackSlider->setParent( this ); @@ -82,7 +82,7 @@ UISlider::UISlider() : mSlider->setEnabled( true ); mSlider->setVisible( true ); mSlider->setDragEnabled( true ); - mSlider->setSize( dpToPxI( 16 ), dpToPxI( 16 ) ); + mSlider->setSize( PixelDensity::dpToPxI( 16 ), PixelDensity::dpToPxI( 16 ) ); mSlider->setPosition( 0, 0 ); if ( UI_HORIZONTAL == mOrientation ) diff --git a/src/eepp/ui/uitab.cpp b/src/eepp/ui/uitab.cpp index b98c8a620..5a66afdd0 100644 --- a/src/eepp/ui/uitab.cpp +++ b/src/eepp/ui/uitab.cpp @@ -108,7 +108,7 @@ void UITab::setText( const String &text ) { void UITab::autoSize() { if ( mFlags & UI_AUTO_SIZE ) { - Uint32 w = pxToDpI( mTextBox->getTextWidth() ) + getSkinSize().getWidth(); + Uint32 w = PixelDensity::pxToDpI( mTextBox->getTextWidth() ) + getSkinSize().getWidth(); UITabWidget * tTabW = getTabWidget(); diff --git a/src/eepp/ui/uitabwidget.cpp b/src/eepp/ui/uitabwidget.cpp index 7f23e0746..51a754a9e 100644 --- a/src/eepp/ui/uitabwidget.cpp +++ b/src/eepp/ui/uitabwidget.cpp @@ -73,7 +73,7 @@ void UITabWidget::setTheme( UITheme * Theme ) { Sizei tSize1 = getSkinSize( tSkin ); Sizei tSize2 = getSkinSize( tSkin, UISkinState::StateSelected ); - mTabWidgetHeight = pxToDpI( eemax( tSize1.getHeight(), tSize2.getHeight() ) ); + mTabWidgetHeight = PixelDensity::pxToDpI( eemax( tSize1.getHeight(), tSize2.getHeight() ) ); seContainerSize(); orderTabs(); diff --git a/src/eepp/ui/uitextbox.cpp b/src/eepp/ui/uitextbox.cpp index 70d9baafc..72e2448d9 100644 --- a/src/eepp/ui/uitextbox.cpp +++ b/src/eepp/ui/uitextbox.cpp @@ -240,11 +240,11 @@ void UITextBox::onFontChanged() { void UITextBox::setPadding( const Recti& padding ) { mPadding = padding; - mRealPadding = dpToPxI( padding ); + mRealPadding = PixelDensity::dpToPxI( padding ); } void UITextBox::setPixelsPadding( const Recti& padding ) { - mPadding = pxToDpI( padding ); + mPadding = PixelDensity::pxToDpI( padding ); mRealPadding = padding; } @@ -284,7 +284,7 @@ Uint32 UITextBox::onMouseDoubleClick( const Vector2i& Pos, const Uint32 Flags ) if ( isTextSelectionEnabled() && ( Flags & EE_BUTTON_LMASK ) ) { Vector2i controlPos( Pos ); worldToControl( controlPos ); - controlPos = dpToPxI( controlPos ); + controlPos = PixelDensity::dpToPxI( controlPos ); Int32 curPos = mTextCache->getFont()->findClosestCursorPosFromPoint( mTextCache->getText(), controlPos ); @@ -320,7 +320,7 @@ Uint32 UITextBox::onMouseDown( const Vector2i& Pos, const Uint32 Flags ) { if ( isTextSelectionEnabled() && ( Flags & EE_BUTTON_LMASK ) ) { Vector2i controlPos( Pos ); worldToControl( controlPos ); - controlPos = dpToPxI( controlPos ); + controlPos = PixelDensity::dpToPxI( controlPos ); Int32 curPos = mTextCache->getFont()->findClosestCursorPosFromPoint( mTextCache->getText(), controlPos ); diff --git a/src/eepp/ui/uitextedit.cpp b/src/eepp/ui/uitextedit.cpp index 18567fc28..94e4a84ca 100644 --- a/src/eepp/ui/uitextedit.cpp +++ b/src/eepp/ui/uitextedit.cpp @@ -103,7 +103,7 @@ void UITextEdit::onSizeChange() { mHScrollBar->setSize( mSize.getWidth(), mHScrollBar->getSize().getHeight() ); mVScrollBar->setSize( mVScrollBar->getSize().getWidth(), mSize.getHeight() ); - mTextInput->setPosition( pxToDpI( mPadding.Left ), pxToDpI( mPadding.Top ) ); + mTextInput->setPosition( PixelDensity::pxToDpI( mPadding.Left ), PixelDensity::pxToDpI( mPadding.Top ) ); scrollbarsSet(); diff --git a/src/eepp/ui/uitextinput.cpp b/src/eepp/ui/uitextinput.cpp index 53e69e341..576ded3ed 100644 --- a/src/eepp/ui/uitextinput.cpp +++ b/src/eepp/ui/uitextinput.cpp @@ -250,7 +250,7 @@ Uint32 UITextInput::onMouseClick( const Vector2i& Pos, const Uint32 Flags ) { if ( Flags & EE_BUTTON_LMASK ) { Vector2i controlPos( Pos ); worldToControl( controlPos ); - controlPos = dpToPxI( controlPos ); + controlPos = PixelDensity::dpToPxI( controlPos ); Int32 curPos = mTextCache->getFont()->findClosestCursorPosFromPoint( mTextCache->getText(), controlPos ); diff --git a/src/eepp/ui/uitheme.cpp b/src/eepp/ui/uitheme.cpp index 916b402bc..be67e2338 100644 --- a/src/eepp/ui/uitheme.cpp +++ b/src/eepp/ui/uitheme.cpp @@ -34,7 +34,7 @@ namespace EE { namespace UI { -static void LoadThemeElements( std::list& UI_THEME_ELEMENTS, std::list& UI_THEME_ICONS ) { +static void loadThemeElements( std::list& UI_THEME_ELEMENTS, std::list& UI_THEME_ICONS ) { UI_THEME_ELEMENTS.push_back( "control" ); UI_THEME_ELEMENTS.push_back( "button" ); UI_THEME_ELEMENTS.push_back( "textinput" ); @@ -132,7 +132,7 @@ UITheme * UITheme::loadFromTextureAtlas( UITheme * tTheme, Graphics::TextureAtla Clock TE; - LoadThemeElements( tTheme->mUIElements, tTheme->mUIIcons ); + loadThemeElements( tTheme->mUIElements, tTheme->mUIIcons ); Uint32 i; bool Found; @@ -170,7 +170,7 @@ UITheme * UITheme::loadFromTextureAtlas( UITheme * tTheme, Graphics::TextureAtla UITheme * UITheme::loadFromPath( UITheme * tTheme, const std::string& Path, const std::string ImgExt ) { Clock TE; - LoadThemeElements( tTheme->mUIElements, tTheme->mUIIcons ); + loadThemeElements( tTheme->mUIElements, tTheme->mUIIcons ); Uint32 i; bool Found; @@ -247,7 +247,7 @@ bool UITheme::searchFilesInAtlas( Graphics::TextureAtlas * SG, std::string Eleme // Search Complex Skin for ( i = 0; i < UISkinState::StateCount; i++ ) { for ( s = 0; s < UISkinComplex::SideCount; s++ ) { - ElemName = Element + "_" + UISkin::getSkinStateName( i ) + "_" + UISkinComplex::GetSideSuffix( s ); + ElemName = Element + "_" + UISkin::getSkinStateName( i ) + "_" + UISkinComplex::getSideSuffix( s ); if ( SG->getByName( ElemName ) ) { IsComplex = 1; @@ -287,7 +287,7 @@ bool UITheme::searchFilesOfElement( Graphics::TextureAtlas * SG, const std::stri // Search Complex Skin for ( i = 0; i < UISkinState::StateCount; i++ ) { for ( s = 0; s < UISkinComplex::SideCount; s++ ) { - ElemName = Element + "_" + UISkin::getSkinStateName( i ) + "_" + UISkinComplex::GetSideSuffix( s ); + ElemName = Element + "_" + UISkin::getSkinStateName( i ) + "_" + UISkinComplex::getSideSuffix( s ); ElemPath = Path + ElemName; ElemFullPath = ElemPath + "." + ImgExt; diff --git a/src/eepp/ui/uiwindow.cpp b/src/eepp/ui/uiwindow.cpp index 65103ad1c..1a1560646 100644 --- a/src/eepp/ui/uiwindow.cpp +++ b/src/eepp/ui/uiwindow.cpp @@ -345,7 +345,7 @@ void UIWindow::fixChildsSize() { if ( mDecoAutoSize ) { decoSize = mDecoSize = Sizei( mRealSize.getWidth(), mWindowDecoration->getSkinSize().getHeight() ); } else { - decoSize = dpToPxI( mDecoSize ); + decoSize = PixelDensity::dpToPxI( mDecoSize ); } mWindowDecoration->setPixelsSize( mDecoSize ); @@ -362,7 +362,7 @@ void UIWindow::fixChildsSize() { mBorderLeft->setPixelsSize( Sizei( mBorderLeft->getSkinSize().getWidth(), BorderHeight ) ); mBorderRight->setPixelsSize( Sizei( mBorderRight->getSkinSize().getWidth(), BorderHeight ) ); } else { - Sizei borderSize = dpToPxI( mBorderSize ); + Sizei borderSize = PixelDensity::dpToPxI( mBorderSize ); mBorderLeft->setSize( borderSize.getWidth(), BorderHeight ); mBorderRight->setSize( borderSize.getWidth(), BorderHeight ); @@ -518,7 +518,7 @@ void UIWindow::tryResize( const UI_RESIZE_TYPE& Type ) { mResizeType = Type; - Pos = dpToPxI( Pos ); + Pos = PixelDensity::dpToPxI( Pos ); switch ( mResizeType ) { @@ -590,7 +590,7 @@ void UIWindow::updateResize() { worldToControl( Pos ); - Pos = dpToPxI( Pos ); + Pos = PixelDensity::dpToPxI( Pos ); switch ( mResizeType ) { case RESIZE_RIGHT: @@ -657,7 +657,7 @@ void UIWindow::internalSize( const Int32& w, const Int32& h ) { } void UIWindow::internalSize( Sizei Size ) { - Sizei realMin = dpToPxI( mMinWindowSize ); + Sizei realMin = PixelDensity::dpToPxI( mMinWindowSize ); if ( Size.x < realMin.x || Size.y < realMin.y ) { if ( Size.x < realMin.x && Size.y < realMin.y ) { diff --git a/src/eepp/ui/uiwinmenu.cpp b/src/eepp/ui/uiwinmenu.cpp index cd7d2d8f9..10afa53ae 100644 --- a/src/eepp/ui/uiwinmenu.cpp +++ b/src/eepp/ui/uiwinmenu.cpp @@ -80,7 +80,7 @@ void UIWinMenu::setTheme( UITheme * Theme ) { } if ( 0 == mMenuHeight && NULL != getSkin() && NULL != getSkin() ) { - mMenuHeight = pxToDpI( getSkin()->getSize().getHeight() ); + mMenuHeight = PixelDensity::pxToDpI( getSkin()->getSize().getHeight() ); setSize( getParent()->getSize().getWidth(), mMenuHeight ); @@ -156,7 +156,7 @@ void UIWinMenu::refreshButtons() { UISelectButton * pbut = it->first; UITextBox * tbox = pbut->getTextBox(); - pbut->setSize( pxToDpI( tbox->getTextWidth() ) + mButtonMargin, getSize().getHeight() ); + pbut->setSize( PixelDensity::pxToDpI( tbox->getTextWidth() ) + mButtonMargin, getSize().getHeight() ); pbut->setPosition( xpos, ycenter ); xpos += pbut->getSize().getWidth() + mMarginBetweenButtons; diff --git a/src/eepp/window/engine.cpp b/src/eepp/window/engine.cpp index 846a38fb8..21aeafa1a 100755 --- a/src/eepp/window/engine.cpp +++ b/src/eepp/window/engine.cpp @@ -39,8 +39,7 @@ Engine::Engine() : mBackend( NULL ), mWindow( NULL ), mSharedGLContext( false ), - mMainThreadId( 0 ), - mPixelDensity( 1 ) + mMainThreadId( 0 ) { TextureAtlasManager::createSingleton(); } @@ -166,7 +165,7 @@ EE::Window::Window * Engine::createWindow( WindowSettings Settings, ContextSetti mWindows.push_back( mWindow ); - setPixelDensity( Settings.PixelDensity ); + PixelDensity::setPixelDensity( Settings.PixelDensity ); return window; } @@ -252,7 +251,7 @@ WindowSettings Engine::createWindowSettings( IniFile * ini, std::string iniKeyNa int BitColor = ini->getValueI( iniKeyName, "BitColor", 32); bool Windowed = ini->getValueB( iniKeyName, "Windowed", true ); bool Resizeable = ini->getValueB( iniKeyName, "Resizeable", true ); - float pixelDensity = ini->getValueF( iniKeyName, "PixelDensity", getPixelDensity() ); + float pixelDensity = ini->getValueF( iniKeyName, "PixelDensity", PixelDensity::getPixelDensity() ); std::string Backend = ini->getValue( iniKeyName, "Backend", "" ); Uint32 WinBackend = getDefaultBackend(); @@ -334,14 +333,4 @@ Uint32 Engine::getMainThreadId() { return mMainThreadId; } -Float Engine::getPixelDensity() const -{ - return mPixelDensity; -} - -void Engine::setPixelDensity(const Float & pixelDensity) -{ - mPixelDensity = pixelDensity; -} - }} diff --git a/src/test/eetest.cpp b/src/test/eetest.cpp index 9e7e91b06..ef2cbf4d9 100644 --- a/src/test/eetest.cpp +++ b/src/test/eetest.cpp @@ -159,7 +159,7 @@ void EETest::createUIThemeTextureAtlas() { std::string Path( MyPath + "ui/" + mThemeName ); if ( !FileSystem::fileExists( tgpath + EE_TEXTURE_ATLAS_EXTENSION ) ) { - TexturePacker tp( 512, 512, true, 2 ); + TexturePacker tp( 512, 512, mThemeName.find_first_of( "2x" ) != std::string::npos ? PD_XHDPI : PD_MDPI, true, 2 ); tp.addTexturesPath( Path ); tp.packTextures(); tp.save( tgpath + ".png", SAVE_TYPE_PNG ); @@ -256,11 +256,11 @@ void EETest::createUI() { Clock TE; mThemeName = "uitheme"; - - if ( Engine::instance()->getPixelDensity() == 2 ) { +/* + if ( PixelDensity::getPixelDensity() == 2 ) { mThemeName += "2x"; } - +*/ createUIThemeTextureAtlas(); eePRINTL( "Texture Atlas Loading Time: %4.3f ms.", TE.getElapsed().asMilliseconds() ); @@ -850,7 +850,7 @@ void EETest::showMenu() { if ( Menu->show() ) { Vector2i Pos = mWindow->getInput()->getMousePos(); UIMenu::fixMenuPos( Pos , Menu ); - Menu->setPosition( Sizei( (Float)Pos.x / EE->getPixelDensity(), (Float)Pos.y / EE->getPixelDensity() ) ); + Menu->setPosition( Sizei( (Float)Pos.x / PixelDensity::getPixelDensity(), (Float)Pos.y / PixelDensity::getPixelDensity() ) ); } } @@ -912,6 +912,18 @@ void EETest::onTextureLoaded( ResourceLoader * ResLoaded ) { } void EETest::loadTextures() { + if ( !FileSystem::fileExists( MyPath + "atlases/bnb.eta" ) ) { + TexturePacker tp( 512, 512, PD_MDPI, true, 0 ); + tp.addTexturesPath( MyPath + "atlases/bnb/" ); + tp.save( MyPath + "atlases/bnb.png" ); + } + + if ( !FileSystem::fileExists( MyPath + "atlases/tiles.eta" ) ) { + TexturePacker tp( 256, 32, PD_MDPI, true, 0 ); + tp.addTexturesPath( MyPath + "atlases/tiles/" ); + tp.save( MyPath + "atlases/tiles.png" ); + } + Clock TE; Uint32 i;