diff --git a/MANIFEST.in b/MANIFEST.in index 2676ed3bd4ac7bcee65b67daf8acde27342d7407..3332b747feab75a4763c54894f951856df9c0222 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -9,7 +9,7 @@ include requirements_continuous_integration.txt -graft flatland/svg +graft flatland/png graft env_data diff --git a/flatland/png/Background_#91D1DD.png b/flatland/png/Background_#91D1DD.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb65bb2a11d2f0dd1ff1ffa8ef531dcb95013fa Binary files /dev/null and b/flatland/png/Background_#91D1DD.png differ diff --git a/flatland/png/Background_#9CCB89.png b/flatland/png/Background_#9CCB89.png new file mode 100644 index 0000000000000000000000000000000000000000..37225578ba2f96d057f0c021e015298c8401072f Binary files /dev/null and b/flatland/png/Background_#9CCB89.png differ diff --git a/flatland/png/Background_#AA7B55.png b/flatland/png/Background_#AA7B55.png new file mode 100644 index 0000000000000000000000000000000000000000..4612900b00ba98a45c5437f9c9d244a187c8eb2c Binary files /dev/null and b/flatland/png/Background_#AA7B55.png differ diff --git a/flatland/png/Background_#DEBDA0.png b/flatland/png/Background_#DEBDA0.png new file mode 100644 index 0000000000000000000000000000000000000000..9b12f19a4968052e91eff8e7fb0d92742b63af7a Binary files /dev/null and b/flatland/png/Background_#DEBDA0.png differ diff --git a/flatland/png/Background_Light_green.png b/flatland/png/Background_Light_green.png new file mode 100644 index 0000000000000000000000000000000000000000..08286a234bea95bc2b6696fdae2907260033ce50 Binary files /dev/null and b/flatland/png/Background_Light_green.png differ diff --git a/flatland/png/Background_city.png b/flatland/png/Background_city.png new file mode 100644 index 0000000000000000000000000000000000000000..e63f1c1e09566bdcd3905879f1b99063426f9e54 Binary files /dev/null and b/flatland/png/Background_city.png differ diff --git a/flatland/png/Background_rail.png b/flatland/png/Background_rail.png new file mode 100644 index 0000000000000000000000000000000000000000..9a5a9bd6f9ef1402b33fb2a5f5069579da5d5972 Binary files /dev/null and b/flatland/png/Background_rail.png differ diff --git a/flatland/png/Background_white.png b/flatland/png/Background_white.png new file mode 100644 index 0000000000000000000000000000000000000000..60e2e79a23effda1f878f7b4fdb49d3180432c54 Binary files /dev/null and b/flatland/png/Background_white.png differ diff --git a/flatland/png/Background_white_filter.png b/flatland/png/Background_white_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..72aadb480418cc2ae93247a1768737d98c319fb6 Binary files /dev/null and b/flatland/png/Background_white_filter.png differ diff --git a/flatland/png/Bahnhof_#d50000.png b/flatland/png/Bahnhof_#d50000.png new file mode 100644 index 0000000000000000000000000000000000000000..03dec9edd361247593689fa497bc20831237dfdd Binary files /dev/null and b/flatland/png/Bahnhof_#d50000.png differ diff --git a/flatland/png/Bahnhof_#d50000_Deadend_links.png b/flatland/png/Bahnhof_#d50000_Deadend_links.png new file mode 100644 index 0000000000000000000000000000000000000000..7d383d00cfd8761efda94e0e6152d55b5ef187b2 Binary files /dev/null and b/flatland/png/Bahnhof_#d50000_Deadend_links.png differ diff --git a/flatland/png/Bahnhof_#d50000_Deadend_oben.png b/flatland/png/Bahnhof_#d50000_Deadend_oben.png new file mode 100644 index 0000000000000000000000000000000000000000..9f6d5089bf929c6f997dd0cc35a75595f68df868 Binary files /dev/null and b/flatland/png/Bahnhof_#d50000_Deadend_oben.png differ diff --git a/flatland/png/Bahnhof_#d50000_Deadend_rechts.png b/flatland/png/Bahnhof_#d50000_Deadend_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..ebcba77e700bcda85bbc57e4c9120605c20431d7 Binary files /dev/null and b/flatland/png/Bahnhof_#d50000_Deadend_rechts.png differ diff --git a/flatland/png/Bahnhof_#d50000_Deadend_unten.png b/flatland/png/Bahnhof_#d50000_Deadend_unten.png new file mode 100644 index 0000000000000000000000000000000000000000..356f8f739442a80834859eb7660253ed80fe5018 Binary files /dev/null and b/flatland/png/Bahnhof_#d50000_Deadend_unten.png differ diff --git a/flatland/png/Bahnhof_#d50000_Gleis_horizontal.png b/flatland/png/Bahnhof_#d50000_Gleis_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..c3069a08dfcd326cc20ff92a34f484281394e47e Binary files /dev/null and b/flatland/png/Bahnhof_#d50000_Gleis_horizontal.png differ diff --git a/flatland/png/Bahnhof_#d50000_Gleis_vertikal.png b/flatland/png/Bahnhof_#d50000_Gleis_vertikal.png new file mode 100644 index 0000000000000000000000000000000000000000..a689dbe46d7c3ca4151049499f0fd6e811decb6e Binary files /dev/null and b/flatland/png/Bahnhof_#d50000_Gleis_vertikal.png differ diff --git a/flatland/png/Bahnhof_#d50000_target.png b/flatland/png/Bahnhof_#d50000_target.png new file mode 100644 index 0000000000000000000000000000000000000000..202b12508c9fe0bd98ca03b3b8eaada329a8c9f0 Binary files /dev/null and b/flatland/png/Bahnhof_#d50000_target.png differ diff --git a/flatland/png/Buildings-Bank.png b/flatland/png/Buildings-Bank.png new file mode 100644 index 0000000000000000000000000000000000000000..7c43368579f031a7664868f5b485a539fbb32879 Binary files /dev/null and b/flatland/png/Buildings-Bank.png differ diff --git a/flatland/png/Buildings-Bar.png b/flatland/png/Buildings-Bar.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d6100d7966554a1032188deeeae409d34868a9 Binary files /dev/null and b/flatland/png/Buildings-Bar.png differ diff --git a/flatland/png/Buildings-Fabrik_A.png b/flatland/png/Buildings-Fabrik_A.png new file mode 100644 index 0000000000000000000000000000000000000000..a0dae7e656c25d1ccf8207532883571dc1aaa6ab Binary files /dev/null and b/flatland/png/Buildings-Fabrik_A.png differ diff --git a/flatland/png/Buildings-Fabrik_B.png b/flatland/png/Buildings-Fabrik_B.png new file mode 100644 index 0000000000000000000000000000000000000000..30fd8cef8d0a6b99850a9bbc12b45b49bc5b0313 Binary files /dev/null and b/flatland/png/Buildings-Fabrik_B.png differ diff --git a/flatland/png/Buildings-Fabrik_C.png b/flatland/png/Buildings-Fabrik_C.png new file mode 100644 index 0000000000000000000000000000000000000000..cbbeff18f60b5c5c8ef581be9fcac68f8c7c87e8 Binary files /dev/null and b/flatland/png/Buildings-Fabrik_C.png differ diff --git a/flatland/png/Buildings-Fabrik_D.png b/flatland/png/Buildings-Fabrik_D.png new file mode 100644 index 0000000000000000000000000000000000000000..411aa65db4f4bb040587c41b625591d15ebed23a Binary files /dev/null and b/flatland/png/Buildings-Fabrik_D.png differ diff --git a/flatland/png/Buildings-Fabrik_E.png b/flatland/png/Buildings-Fabrik_E.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e5a341b5f540ed151c48d36813f25006e4175a Binary files /dev/null and b/flatland/png/Buildings-Fabrik_E.png differ diff --git a/flatland/png/Buildings-Fabrik_F.png b/flatland/png/Buildings-Fabrik_F.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3e141882173110b710311400586de4a2e27f0e Binary files /dev/null and b/flatland/png/Buildings-Fabrik_F.png differ diff --git a/flatland/png/Buildings-Fabrik_G.png b/flatland/png/Buildings-Fabrik_G.png new file mode 100644 index 0000000000000000000000000000000000000000..bf19757cd6fb5d21c970c3bca77b70ea2931b658 Binary files /dev/null and b/flatland/png/Buildings-Fabrik_G.png differ diff --git a/flatland/png/Buildings-Fabrik_H.png b/flatland/png/Buildings-Fabrik_H.png new file mode 100644 index 0000000000000000000000000000000000000000..cf64fd0e2ababc400706bf8df61da6172366577e Binary files /dev/null and b/flatland/png/Buildings-Fabrik_H.png differ diff --git a/flatland/png/Buildings-Fabrik_I.png b/flatland/png/Buildings-Fabrik_I.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3047bc000c7c0773d750d0aaf841f9842157d9 Binary files /dev/null and b/flatland/png/Buildings-Fabrik_I.png differ diff --git a/flatland/png/Buildings-Hochhaus.png b/flatland/png/Buildings-Hochhaus.png new file mode 100644 index 0000000000000000000000000000000000000000..d88f746902ec5b9b6589eebd728d38222d9d60f4 Binary files /dev/null and b/flatland/png/Buildings-Hochhaus.png differ diff --git a/flatland/png/Buildings-Hotel.png b/flatland/png/Buildings-Hotel.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e3bcb0e5510e3366cb710d595c419cb47782e4 Binary files /dev/null and b/flatland/png/Buildings-Hotel.png differ diff --git a/flatland/png/Buildings-Office.png b/flatland/png/Buildings-Office.png new file mode 100644 index 0000000000000000000000000000000000000000..5a93cce74144e6f44c529d53e2052da5175c885f Binary files /dev/null and b/flatland/png/Buildings-Office.png differ diff --git a/flatland/png/Buildings-Polizei.png b/flatland/png/Buildings-Polizei.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6c73f716acb585e8c82a60db4ea7bf8908055 Binary files /dev/null and b/flatland/png/Buildings-Polizei.png differ diff --git a/flatland/png/Buildings-Post.png b/flatland/png/Buildings-Post.png new file mode 100644 index 0000000000000000000000000000000000000000..cdbf3ab3432cec2e623b1a5dda14b63b9abd9433 Binary files /dev/null and b/flatland/png/Buildings-Post.png differ diff --git a/flatland/png/Buildings-Supermarkt.png b/flatland/png/Buildings-Supermarkt.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a1c343c1a3dd4363559b3b03c581995c0b4155 Binary files /dev/null and b/flatland/png/Buildings-Supermarkt.png differ diff --git a/flatland/png/Buildings-Tankstelle.png b/flatland/png/Buildings-Tankstelle.png new file mode 100644 index 0000000000000000000000000000000000000000..b59703f50a2813ca75c3e3905f02c13eb1ae0a0d Binary files /dev/null and b/flatland/png/Buildings-Tankstelle.png differ diff --git a/flatland/png/Buildings-Wohnhaus.png b/flatland/png/Buildings-Wohnhaus.png new file mode 100644 index 0000000000000000000000000000000000000000..2c5ee1f4fe8576215e6b47cf2b10e8f0a5afb76d Binary files /dev/null and b/flatland/png/Buildings-Wohnhaus.png differ diff --git a/flatland/png/Cell_occupied.png b/flatland/png/Cell_occupied.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4fd0cca086e768b8d4847f45db8629c23a0b78 Binary files /dev/null and b/flatland/png/Cell_occupied.png differ diff --git a/flatland/png/Gleis_Deadend.png b/flatland/png/Gleis_Deadend.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6c61d59d9c744f4f56735e642fb51ab537a917 Binary files /dev/null and b/flatland/png/Gleis_Deadend.png differ diff --git a/flatland/png/Gleis_Diamond_Crossing.png b/flatland/png/Gleis_Diamond_Crossing.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8d6e70d65abcc4b047d514880bfe2440eb8f42 Binary files /dev/null and b/flatland/png/Gleis_Diamond_Crossing.png differ diff --git a/flatland/png/Gleis_Kurve_oben_links.png b/flatland/png/Gleis_Kurve_oben_links.png new file mode 100644 index 0000000000000000000000000000000000000000..50385cf113a75ab0465c3095e281d4b4b3dd3748 Binary files /dev/null and b/flatland/png/Gleis_Kurve_oben_links.png differ diff --git a/flatland/png/Gleis_Kurve_oben_links_unten_rechts.png b/flatland/png/Gleis_Kurve_oben_links_unten_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc4a2f2585429bf6a61383d05702fa3696e5f7c Binary files /dev/null and b/flatland/png/Gleis_Kurve_oben_links_unten_rechts.png differ diff --git a/flatland/png/Gleis_Kurve_oben_rechts.png b/flatland/png/Gleis_Kurve_oben_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..be4c7183c6a4b3aea7cd74657abcf2ee1dacc607 Binary files /dev/null and b/flatland/png/Gleis_Kurve_oben_rechts.png differ diff --git a/flatland/png/Gleis_Kurve_unten_links.png b/flatland/png/Gleis_Kurve_unten_links.png new file mode 100644 index 0000000000000000000000000000000000000000..8c5b8c257bf2ac8bdb226f72009e68105c082352 Binary files /dev/null and b/flatland/png/Gleis_Kurve_unten_links.png differ diff --git a/flatland/png/Gleis_Kurve_unten_rechts.png b/flatland/png/Gleis_Kurve_unten_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..4fc6d8b256d8fc289678f11918ec8fe0b39ec24c Binary files /dev/null and b/flatland/png/Gleis_Kurve_unten_rechts.png differ diff --git a/flatland/png/Gleis_horizontal.png b/flatland/png/Gleis_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..4c50711239e5e3cb8d9303165f20af49d25cc5c8 Binary files /dev/null and b/flatland/png/Gleis_horizontal.png differ diff --git a/flatland/png/Gleis_horizontal_Perron.png b/flatland/png/Gleis_horizontal_Perron.png new file mode 100644 index 0000000000000000000000000000000000000000..a42c1fe5021a6fd07c9a97d8977a9a7710a2ef90 Binary files /dev/null and b/flatland/png/Gleis_horizontal_Perron.png differ diff --git a/flatland/png/Gleis_vertikal.png b/flatland/png/Gleis_vertikal.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7b38353f6c8eac684ced4093bc4011fbbe7a7e Binary files /dev/null and b/flatland/png/Gleis_vertikal.png differ diff --git a/flatland/png/Gleis_vertikal_Perron.png b/flatland/png/Gleis_vertikal_Perron.png new file mode 100644 index 0000000000000000000000000000000000000000..4161c9c9fbb33546f45cf4048dd8a66ed7494bae Binary files /dev/null and b/flatland/png/Gleis_vertikal_Perron.png differ diff --git a/flatland/png/Scenery-Bergwelt_A_Teil_1_links.png b/flatland/png/Scenery-Bergwelt_A_Teil_1_links.png new file mode 100644 index 0000000000000000000000000000000000000000..854574dddaad767f3b1a2ed1c0f407d6e176f509 Binary files /dev/null and b/flatland/png/Scenery-Bergwelt_A_Teil_1_links.png differ diff --git a/flatland/png/Scenery-Bergwelt_A_Teil_2_mitte.png b/flatland/png/Scenery-Bergwelt_A_Teil_2_mitte.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e4e42c57a1ebfa02bf628e15f02f536b395a2e Binary files /dev/null and b/flatland/png/Scenery-Bergwelt_A_Teil_2_mitte.png differ diff --git a/flatland/png/Scenery-Bergwelt_A_Teil_3_rechts.png b/flatland/png/Scenery-Bergwelt_A_Teil_3_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..67a6635d631c52f9c3b68394362a16b6aa2bde80 Binary files /dev/null and b/flatland/png/Scenery-Bergwelt_A_Teil_3_rechts.png differ diff --git a/flatland/png/Scenery-Bergwelt_B.png b/flatland/png/Scenery-Bergwelt_B.png new file mode 100644 index 0000000000000000000000000000000000000000..28f45d22126047650c9cf160e8691ed0e21bae9c Binary files /dev/null and b/flatland/png/Scenery-Bergwelt_B.png differ diff --git a/flatland/png/Scenery-Bergwelt_C_Teil_1_links.png b/flatland/png/Scenery-Bergwelt_C_Teil_1_links.png new file mode 100644 index 0000000000000000000000000000000000000000..8adaeed56c0da8a00b1bd30c2b6cdde9b8e0c561 Binary files /dev/null and b/flatland/png/Scenery-Bergwelt_C_Teil_1_links.png differ diff --git a/flatland/png/Scenery-Bergwelt_C_Teil_2_rechts.png b/flatland/png/Scenery-Bergwelt_C_Teil_2_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..462f804ce142b83423a278e30b2c2c979af85e98 Binary files /dev/null and b/flatland/png/Scenery-Bergwelt_C_Teil_2_rechts.png differ diff --git a/flatland/png/Scenery-Laubbaume_A.png b/flatland/png/Scenery-Laubbaume_A.png new file mode 100644 index 0000000000000000000000000000000000000000..ee456c85381b65f2d7fff9cedb86a39aaab416f2 Binary files /dev/null and b/flatland/png/Scenery-Laubbaume_A.png differ diff --git a/flatland/png/Scenery-Laubbaume_B.png b/flatland/png/Scenery-Laubbaume_B.png new file mode 100644 index 0000000000000000000000000000000000000000..472f7c77bb4b7a2089b22b868ddf1cbc9a842d87 Binary files /dev/null and b/flatland/png/Scenery-Laubbaume_B.png differ diff --git a/flatland/png/Scenery-Laubbaume_C.png b/flatland/png/Scenery-Laubbaume_C.png new file mode 100644 index 0000000000000000000000000000000000000000..04d83ea93cae15036f56295f00f2a2fe9fc77297 Binary files /dev/null and b/flatland/png/Scenery-Laubbaume_C.png differ diff --git a/flatland/png/Scenery-Nadelbaume_A.png b/flatland/png/Scenery-Nadelbaume_A.png new file mode 100644 index 0000000000000000000000000000000000000000..e768bf3d86a3ced97dd21138c6d3eef6097fef6e Binary files /dev/null and b/flatland/png/Scenery-Nadelbaume_A.png differ diff --git a/flatland/png/Scenery-Nadelbaume_B.png b/flatland/png/Scenery-Nadelbaume_B.png new file mode 100644 index 0000000000000000000000000000000000000000..831b64931976f79c1dce7853618dd2c9d1754b83 Binary files /dev/null and b/flatland/png/Scenery-Nadelbaume_B.png differ diff --git a/flatland/png/Scenery_Water.png b/flatland/png/Scenery_Water.png new file mode 100644 index 0000000000000000000000000000000000000000..195e17afe8225c16516cb163b2b27c65a69681d2 Binary files /dev/null and b/flatland/png/Scenery_Water.png differ diff --git a/flatland/png/Selected_Agent.png b/flatland/png/Selected_Agent.png new file mode 100644 index 0000000000000000000000000000000000000000..d89edac21241634a1f7e581f7583ee3de7e3a2e3 Binary files /dev/null and b/flatland/png/Selected_Agent.png differ diff --git a/flatland/png/Selected_Target.png b/flatland/png/Selected_Target.png new file mode 100644 index 0000000000000000000000000000000000000000..547cdf09db30cd53780a71c1f9bc1f5f4de2b147 Binary files /dev/null and b/flatland/png/Selected_Target.png differ diff --git a/flatland/png/Weiche_Double_Slip.png b/flatland/png/Weiche_Double_Slip.png new file mode 100644 index 0000000000000000000000000000000000000000..17b76fef8621848cfc2d886c1dcef9a856308ae5 Binary files /dev/null and b/flatland/png/Weiche_Double_Slip.png differ diff --git a/flatland/png/Weiche_Single_Slip.png b/flatland/png/Weiche_Single_Slip.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a539204cc58df8066ee9cfb0220198575b35a8 Binary files /dev/null and b/flatland/png/Weiche_Single_Slip.png differ diff --git a/flatland/png/Weiche_Symetrical.png b/flatland/png/Weiche_Symetrical.png new file mode 100644 index 0000000000000000000000000000000000000000..14755867a67471e1655ceb2e1d88a718dd944731 Binary files /dev/null and b/flatland/png/Weiche_Symetrical.png differ diff --git a/flatland/png/Weiche_Symetrical_gerade.png b/flatland/png/Weiche_Symetrical_gerade.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f7ba79cb8f7baf69ffb6e8197535f053cf8844 Binary files /dev/null and b/flatland/png/Weiche_Symetrical_gerade.png differ diff --git a/flatland/png/Weiche_horizontal_oben_links.png b/flatland/png/Weiche_horizontal_oben_links.png new file mode 100644 index 0000000000000000000000000000000000000000..7cc6027a7a7187a195bdd67b559a6d761969c845 Binary files /dev/null and b/flatland/png/Weiche_horizontal_oben_links.png differ diff --git a/flatland/png/Weiche_horizontal_oben_rechts.png b/flatland/png/Weiche_horizontal_oben_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7e311dfb902cda76dc506ee93545cf15ca1ae9 Binary files /dev/null and b/flatland/png/Weiche_horizontal_oben_rechts.png differ diff --git a/flatland/png/Weiche_horizontal_unten_links.png b/flatland/png/Weiche_horizontal_unten_links.png new file mode 100644 index 0000000000000000000000000000000000000000..398fba4941dfa985ae0b04ce5da0507f53ed2492 Binary files /dev/null and b/flatland/png/Weiche_horizontal_unten_links.png differ diff --git a/flatland/png/Weiche_horizontal_unten_rechts.png b/flatland/png/Weiche_horizontal_unten_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd0774e58c357d1d6d4a6d88afea545f841fea2 Binary files /dev/null and b/flatland/png/Weiche_horizontal_unten_rechts.png differ diff --git a/flatland/png/Weiche_vertikal_oben_links.png b/flatland/png/Weiche_vertikal_oben_links.png new file mode 100644 index 0000000000000000000000000000000000000000..9f78446d114b6255e0cde1797b4c7f259035beb9 Binary files /dev/null and b/flatland/png/Weiche_vertikal_oben_links.png differ diff --git a/flatland/png/Weiche_vertikal_oben_rechts.png b/flatland/png/Weiche_vertikal_oben_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..a80b689bc567639d7d6d2018735f04d4f7d3624e Binary files /dev/null and b/flatland/png/Weiche_vertikal_oben_rechts.png differ diff --git a/flatland/png/Weiche_vertikal_unten_links.png b/flatland/png/Weiche_vertikal_unten_links.png new file mode 100644 index 0000000000000000000000000000000000000000..ae5575ae956c266b73a2cffc000b919337289a60 Binary files /dev/null and b/flatland/png/Weiche_vertikal_unten_links.png differ diff --git a/flatland/png/Weiche_vertikal_unten_rechts.png b/flatland/png/Weiche_vertikal_unten_rechts.png new file mode 100644 index 0000000000000000000000000000000000000000..4c74ccc409b4c5da472e8edb9f12bd35ae64e997 Binary files /dev/null and b/flatland/png/Weiche_vertikal_unten_rechts.png differ diff --git a/flatland/png/Zug_1_Weiche_#0091ea.png b/flatland/png/Zug_1_Weiche_#0091ea.png new file mode 100644 index 0000000000000000000000000000000000000000..a7967fd643defe2a1ba1e25d342d545b11a43b95 Binary files /dev/null and b/flatland/png/Zug_1_Weiche_#0091ea.png differ diff --git a/flatland/png/Zug_1_Weiche_#0091ea_old.png b/flatland/png/Zug_1_Weiche_#0091ea_old.png new file mode 100644 index 0000000000000000000000000000000000000000..385d9361e5d03d3c14b567395127b873479cc76b Binary files /dev/null and b/flatland/png/Zug_1_Weiche_#0091ea_old.png differ diff --git a/flatland/png/Zug_1_Weiche_#00c853_old.png b/flatland/png/Zug_1_Weiche_#00c853_old.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc8a230c16fde7b81f3d03d9aaf67a41457ecfa Binary files /dev/null and b/flatland/png/Zug_1_Weiche_#00c853_old.png differ diff --git a/flatland/png/Zug_1_Weiche_#d50000.png b/flatland/png/Zug_1_Weiche_#d50000.png new file mode 100644 index 0000000000000000000000000000000000000000..edb9e06c8157d3b4537717175f16abf222512a1f Binary files /dev/null and b/flatland/png/Zug_1_Weiche_#d50000.png differ diff --git a/flatland/png/Zug_2_Weiche_#0091ea.png b/flatland/png/Zug_2_Weiche_#0091ea.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f25ca3b66b78e9658566161d37c4fb9d51f957 Binary files /dev/null and b/flatland/png/Zug_2_Weiche_#0091ea.png differ diff --git a/flatland/png/Zug_2_Weiche_#0091ea_old.png b/flatland/png/Zug_2_Weiche_#0091ea_old.png new file mode 100644 index 0000000000000000000000000000000000000000..855514d974259276ff488bc3b80a11e7c309883d Binary files /dev/null and b/flatland/png/Zug_2_Weiche_#0091ea_old.png differ diff --git a/flatland/png/Zug_2_Weiche_#00c853_old.png b/flatland/png/Zug_2_Weiche_#00c853_old.png new file mode 100644 index 0000000000000000000000000000000000000000..0de6eac28599a19612d223764e68fb096802f88c Binary files /dev/null and b/flatland/png/Zug_2_Weiche_#00c853_old.png differ diff --git a/flatland/png/Zug_Gleis_#0091ea.png b/flatland/png/Zug_Gleis_#0091ea.png new file mode 100644 index 0000000000000000000000000000000000000000..37ea891c5b5eb2d515901284f8e69880005e75f6 Binary files /dev/null and b/flatland/png/Zug_Gleis_#0091ea.png differ diff --git a/flatland/png/Zug_Gleis_#0091ea_old.png b/flatland/png/Zug_Gleis_#0091ea_old.png new file mode 100644 index 0000000000000000000000000000000000000000..131c8518b640f0994a78cb5e5a5073d3ab9c2d7d Binary files /dev/null and b/flatland/png/Zug_Gleis_#0091ea_old.png differ diff --git a/flatland/png/Zug_Gleis_#00c853_old.png b/flatland/png/Zug_Gleis_#00c853_old.png new file mode 100644 index 0000000000000000000000000000000000000000..2593d68b2b5cf8947da59ad68b4655313671a200 Binary files /dev/null and b/flatland/png/Zug_Gleis_#00c853_old.png differ diff --git a/flatland/png/Zug_Gleis_#d50000.png b/flatland/png/Zug_Gleis_#d50000.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4623fd6076c0f53fa0d00889270ec258301fcc Binary files /dev/null and b/flatland/png/Zug_Gleis_#d50000.png differ diff --git a/flatland/png/__init__.py b/flatland/png/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py index a7f47d4d821b5f1f6965ff4f39e265475264fa2b..2d0713b118344b8e26c041a120d9fdaed49e21ab 100644 --- a/flatland/utils/graphics_pil.py +++ b/flatland/utils/graphics_pil.py @@ -10,22 +10,6 @@ from pkg_resources import resource_string as resource_bytes from flatland.utils.graphics_layer import GraphicsLayer - -def enable_windows_cairo_support(): - if os.name == 'nt': - import site - import ctypes.util - default_os_path = os.environ['PATH'] - os.environ['PATH'] = '' - for s in site.getsitepackages(): - os.environ['PATH'] = os.environ['PATH'] + ';' + s + '\\cairo' - os.environ['PATH'] = os.environ['PATH'] + ';' + default_os_path - if ctypes.util.find_library('cairo') is None: - print("Error: cairo not installed") - - -enable_windows_cairo_support() -from cairosvg import svg2png # noqa: E402 from flatland.core.grid.rail_env_grid import RailEnvTransitions # noqa: E402 @@ -284,98 +268,99 @@ class PILSVG(PILGL): def pil_from_svg_file(self, package, resource): bytestring = resource_bytes(package, resource) - bytesPNG = svg2png(bytestring=bytestring, output_height=self.nPixCell, output_width=self.nPixCell) - with io.BytesIO(bytesPNG) as fIn: + with io.BytesIO(bytestring) as fIn: pil_img = Image.open(fIn) - pil_img.load() - + pil_img = pil_img.resize( + (self.nPixCell, self.nPixCell), + Image.ANTIALIAS + ) return pil_img def load_buildings(self): lBuildingFiles = [ - "Buildings-Bank.svg", - "Buildings-Bar.svg", - "Buildings-Wohnhaus.svg", - "Buildings-Hochhaus.svg", - "Buildings-Hotel.svg", - "Buildings-Office.svg", - "Buildings-Polizei.svg", - "Buildings-Post.svg", - "Buildings-Supermarkt.svg", - "Buildings-Tankstelle.svg", - "Buildings-Fabrik_A.svg", - "Buildings-Fabrik_B.svg", - "Buildings-Fabrik_C.svg", - "Buildings-Fabrik_D.svg", - "Buildings-Fabrik_E.svg", - "Buildings-Fabrik_F.svg", - "Buildings-Fabrik_G.svg", - "Buildings-Fabrik_H.svg", - "Buildings-Fabrik_I.svg" + "Buildings-Bank.png", + "Buildings-Bar.png", + "Buildings-Wohnhaus.png", + "Buildings-Hochhaus.png", + "Buildings-Hotel.png", + "Buildings-Office.png", + "Buildings-Polizei.png", + "Buildings-Post.png", + "Buildings-Supermarkt.png", + "Buildings-Tankstelle.png", + "Buildings-Fabrik_A.png", + "Buildings-Fabrik_B.png", + "Buildings-Fabrik_C.png", + "Buildings-Fabrik_D.png", + "Buildings-Fabrik_E.png", + "Buildings-Fabrik_F.png", + "Buildings-Fabrik_G.png", + "Buildings-Fabrik_H.png", + "Buildings-Fabrik_I.png" ] - imgBg = self.pil_from_svg_file('flatland.svg', "Background_city.svg") + imgBg = self.pil_from_svg_file('flatland.png', "Background_city.png") imgBg = imgBg.convert("RGBA") #print("imgBg mode:", imgBg.mode) self.lBuildings = [] for sFile in lBuildingFiles: #print("Loading:", sFile) - img = self.pil_from_svg_file('flatland.svg', sFile) + img = self.pil_from_svg_file('flatland.png', sFile) #print("img mode:", img.mode) img = Image.alpha_composite(imgBg, img) self.lBuildings.append(img) def load_scenery(self): scenery_files = [ - "Scenery-Laubbaume_A.svg", - "Scenery-Laubbaume_B.svg", - "Scenery-Laubbaume_C.svg", - "Scenery-Nadelbaume_A.svg", - "Scenery-Nadelbaume_B.svg", - "Scenery-Bergwelt_B.svg" + "Scenery-Laubbaume_A.png", + "Scenery-Laubbaume_B.png", + "Scenery-Laubbaume_C.png", + "Scenery-Nadelbaume_A.png", + "Scenery-Nadelbaume_B.png", + "Scenery-Bergwelt_B.png" ] scenery_files_d2 = [ - "Scenery-Bergwelt_C_Teil_1_links.svg", - "Scenery-Bergwelt_C_Teil_2_rechts.svg" + "Scenery-Bergwelt_C_Teil_1_links.png", + "Scenery-Bergwelt_C_Teil_2_rechts.png" ] scenery_files_d3 = [ - "Scenery-Bergwelt_A_Teil_1_links.svg", - "Scenery-Bergwelt_A_Teil_2_mitte.svg", - "Scenery-Bergwelt_A_Teil_3_rechts.svg" + "Scenery-Bergwelt_A_Teil_1_links.png", + "Scenery-Bergwelt_A_Teil_2_mitte.png", + "Scenery-Bergwelt_A_Teil_3_rechts.png" ] scenery_files_water = [ - "Scenery_Water.svg" + "Scenery_Water.png" ] - img_back_ground = self.pil_from_svg_file('flatland.svg', "Background_Light_green.svg").convert("RGBA") + img_back_ground = self.pil_from_svg_file('flatland.png', "Background_Light_green.png").convert("RGBA") - self.scenery_background_white = self.pil_from_svg_file('flatland.svg', "Background_white.svg").convert("RGBA") + self.scenery_background_white = self.pil_from_svg_file('flatland.png', "Background_white.png").convert("RGBA") self.scenery = [] for file in scenery_files: - img = self.pil_from_svg_file('flatland.svg', file) + img = self.pil_from_svg_file('flatland.png', file) img = Image.alpha_composite(img_back_ground, img) self.scenery.append(img) self.scenery_d2 = [] for file in scenery_files_d2: - img = self.pil_from_svg_file('flatland.svg', file) + img = self.pil_from_svg_file('flatland.png', file) img = Image.alpha_composite(img_back_ground, img) self.scenery_d2.append(img) self.scenery_d3 = [] for file in scenery_files_d3: - img = self.pil_from_svg_file('flatland.svg', file) + img = self.pil_from_svg_file('flatland.png', file) img = Image.alpha_composite(img_back_ground, img) self.scenery_d3.append(img) self.scenery_water = [] for file in scenery_files_water: - img = self.pil_from_svg_file('flatland.svg', file) + img = self.pil_from_svg_file('flatland.png', file) img = Image.alpha_composite(img_back_ground, img) self.scenery_water.append(img) @@ -383,55 +368,55 @@ class PILSVG(PILGL): """ Load the rail SVG images, apply rotations, and store as PIL images. """ rail_files = { - "": "Background_Light_green.svg", - "WE": "Gleis_Deadend.svg", - "WW EE NN SS": "Gleis_Diamond_Crossing.svg", - "WW EE": "Gleis_horizontal.svg", - "EN SW": "Gleis_Kurve_oben_links.svg", - "WN SE": "Gleis_Kurve_oben_rechts.svg", - "ES NW": "Gleis_Kurve_unten_links.svg", - "NE WS": "Gleis_Kurve_unten_rechts.svg", - "NN SS": "Gleis_vertikal.svg", - "NN SS EE WW ES NW SE WN": "Weiche_Double_Slip.svg", - "EE WW EN SW": "Weiche_horizontal_oben_links.svg", - "EE WW SE WN": "Weiche_horizontal_oben_rechts.svg", - "EE WW ES NW": "Weiche_horizontal_unten_links.svg", - "EE WW NE WS": "Weiche_horizontal_unten_rechts.svg", - "NN SS EE WW NW ES": "Weiche_Single_Slip.svg", - "NE NW ES WS": "Weiche_Symetrical.svg", - "NN SS EN SW": "Weiche_vertikal_oben_links.svg", - "NN SS SE WN": "Weiche_vertikal_oben_rechts.svg", - "NN SS NW ES": "Weiche_vertikal_unten_links.svg", - "NN SS NE WS": "Weiche_vertikal_unten_rechts.svg", - "NE NW ES WS SS NN": "Weiche_Symetrical_gerade.svg", - "NE EN SW WS": "Gleis_Kurve_oben_links_unten_rechts.svg" + "": "Background_Light_green.png", + "WE": "Gleis_Deadend.png", + "WW EE NN SS": "Gleis_Diamond_Crossing.png", + "WW EE": "Gleis_horizontal.png", + "EN SW": "Gleis_Kurve_oben_links.png", + "WN SE": "Gleis_Kurve_oben_rechts.png", + "ES NW": "Gleis_Kurve_unten_links.png", + "NE WS": "Gleis_Kurve_unten_rechts.png", + "NN SS": "Gleis_vertikal.png", + "NN SS EE WW ES NW SE WN": "Weiche_Double_Slip.png", + "EE WW EN SW": "Weiche_horizontal_oben_links.png", + "EE WW SE WN": "Weiche_horizontal_oben_rechts.png", + "EE WW ES NW": "Weiche_horizontal_unten_links.png", + "EE WW NE WS": "Weiche_horizontal_unten_rechts.png", + "NN SS EE WW NW ES": "Weiche_Single_Slip.png", + "NE NW ES WS": "Weiche_Symetrical.png", + "NN SS EN SW": "Weiche_vertikal_oben_links.png", + "NN SS SE WN": "Weiche_vertikal_oben_rechts.png", + "NN SS NW ES": "Weiche_vertikal_unten_links.png", + "NN SS NE WS": "Weiche_vertikal_unten_rechts.png", + "NE NW ES WS SS NN": "Weiche_Symetrical_gerade.png", + "NE EN SW WS": "Gleis_Kurve_oben_links_unten_rechts.png" } target_files = { - "EW": "Bahnhof_#d50000_Deadend_links.svg", - "NS": "Bahnhof_#d50000_Deadend_oben.svg", - "WE": "Bahnhof_#d50000_Deadend_rechts.svg", - "SN": "Bahnhof_#d50000_Deadend_unten.svg", - "EE WW": "Bahnhof_#d50000_Gleis_horizontal.svg", - "NN SS": "Bahnhof_#d50000_Gleis_vertikal.svg"} + "EW": "Bahnhof_#d50000_Deadend_links.png", + "NS": "Bahnhof_#d50000_Deadend_oben.png", + "WE": "Bahnhof_#d50000_Deadend_rechts.png", + "SN": "Bahnhof_#d50000_Deadend_unten.png", + "EE WW": "Bahnhof_#d50000_Gleis_horizontal.png", + "NN SS": "Bahnhof_#d50000_Gleis_vertikal.png"} # Dict of rail cell images indexed by binary transitions pil_rail_files_org = self.load_svgs(rail_files, rotate=True) - pil_rail_files = self.load_svgs(rail_files, rotate=True, background_image="Background_rail.svg", - whitefilter="Background_white_filter.svg") + pil_rail_files = self.load_svgs(rail_files, rotate=True, background_image="Background_rail.png", + whitefilter="Background_white_filter.png") # Load the target files (which have rails and transitions of their own) # They are indexed by (binTrans, iAgent), ie a tuple of the binary transition and the agent index pil_target_files_org = self.load_svgs(target_files, rotate=False, agent_colors=self.agent_colors) pil_target_files = self.load_svgs(target_files, rotate=False, agent_colors=self.agent_colors, - background_image="Background_rail.svg", - whitefilter="Background_white_filter.svg") + background_image="Background_rail.png", + whitefilter="Background_white_filter.png") # Load station and recolorize them - station = self.pil_from_svg_file('flatland.svg', "Bahnhof_#d50000_target.svg") + station = self.pil_from_svg_file('flatland.png', "Bahnhof_#d50000_target.png") self.station_colors = self.recolor_image(station, [0, 0, 0], self.agent_colors, False) - cell_occupied = self.pil_from_svg_file('flatland.svg', "Cell_occupied.svg") + cell_occupied = self.pil_from_svg_file('flatland.png', "Cell_occupied.png") self.cell_occupied = self.recolor_image(cell_occupied, [0, 0, 0], self.agent_colors, False) # Merge them with the regular rails. @@ -460,14 +445,14 @@ class PILSVG(PILGL): transition_16_bit_string = "".join(transition_16_bit) binary_trans = int(transition_16_bit_string, 2) - pil_rail = self.pil_from_svg_file('flatland.svg', file).convert("RGBA") + pil_rail = self.pil_from_svg_file('flatland.png', file).convert("RGBA") if background_image is not None: - img_bg = self.pil_from_svg_file('flatland.svg', background_image).convert("RGBA") + img_bg = self.pil_from_svg_file('flatland.png', background_image).convert("RGBA") pil_rail = Image.alpha_composite(img_bg, pil_rail) if whitefilter is not None: - img_bg = self.pil_from_svg_file('flatland.svg', whitefilter).convert("RGBA") + img_bg = self.pil_from_svg_file('flatland.png', whitefilter).convert("RGBA") pil_rail = Image.alpha_composite(pil_rail, img_bg) if rotate: @@ -559,7 +544,7 @@ class PILSVG(PILGL): if target is not None: if is_selected: - svgBG = self.pil_from_svg_file('flatland.svg', "Selected_Target.svg") + svgBG = self.pil_from_svg_file('flatland.png', "Selected_Target.png") self.clear_layer(PILGL.SELECTED_TARGET_LAYER, 0) self.draw_image_row_col(svgBG, (row, col), layer=PILGL.SELECTED_TARGET_LAYER) @@ -584,9 +569,9 @@ class PILSVG(PILGL): # Seed initial train/zug files indexed by tuple(iDirIn, iDirOut): file_directory = { - (0, 0): "Zug_Gleis_#0091ea.svg", - (1, 2): "Zug_1_Weiche_#0091ea.svg", - (0, 3): "Zug_2_Weiche_#0091ea.svg" + (0, 0): "Zug_Gleis_#0091ea.png", + (1, 2): "Zug_1_Weiche_#0091ea.png", + (0, 3): "Zug_2_Weiche_#0091ea.png" } # "paint" color of the train images we load - this is the color we will change. @@ -599,7 +584,7 @@ class PILSVG(PILGL): for directions, path_svg in file_directory.items(): in_direction, out_direction = directions - pil_zug = self.pil_from_svg_file('flatland.svg', path_svg) + pil_zug = self.pil_from_svg_file('flatland.png', path_svg) # Rotate both the directions and the image and save in the dict for rot_direction in range(4): @@ -629,7 +614,7 @@ class PILSVG(PILGL): self.draw_image_row_col(self.scenery_background_white, (row, col), layer=PILGL.RAIL_LAYER) if is_selected: - bg_svg = self.pil_from_svg_file('flatland.svg', "Selected_Agent.svg") + bg_svg = self.pil_from_svg_file('flatland.png', "Selected_Agent.png") self.clear_layer(PILGL.SELECTED_AGENT_LAYER, 0) self.draw_image_row_col(bg_svg, (row, col), layer=PILGL.SELECTED_AGENT_LAYER) if show_debug: diff --git a/requirements_dev.txt b/requirements_dev.txt index 0ab724bc490026c20b0d070a9c97f0a6651869ef..75ed1bf26924a366e3aabd8da1e2e34480f647bd 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -8,7 +8,6 @@ numpy>=1.16.2 recordtype>=1.3 matplotlib>=3.0.2 Pillow>=5.4.1 -CairoSVG>=2.3.1 msgpack==0.6.1 msgpack-numpy>=0.4.4.0 svgutils>=0.3.1 diff --git a/scripts/convert_svg_2_png.py b/scripts/convert_svg_2_png.py new file mode 100755 index 0000000000000000000000000000000000000000..021c4ef593e87bb54a5351f8e69053e705eb6ca4 --- /dev/null +++ b/scripts/convert_svg_2_png.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +import glob +from cairosvg import svg2png +import os +import shutil +import tqdm + +import io +from PIL import Image + +######################################################## +######################################################## +# +# Converts SVG assets into PNG assets +# +# We use this approach to drop the CairoSVG dependency +# from the flatland requirements. +# +# Usage Requires : +# +# conda install cairo +# +######################################################## +######################################################## + +TARGET_PNG_WIDTH=300 +TARGET_PNG_HEIGHT=300 + +SVG_FOLDER="../flatland/svg" +TARGET_FOLDER="../flatland/png" + +# Delete target PNG files, if they exist +for _png_file in glob.glob(os.path.join(TARGET_FOLDER, "*.png")): + os.remove(_png_file) + +# Convert all SVG files into PNG files +for _source_svg_path in tqdm.tqdm(glob.glob(os.path.join(SVG_FOLDER, "*.svg"))): + base_filename = os.path.basename(_source_svg_path) + target_filename = base_filename.replace(".svg", ".png") + target_filepath = os.path.join( + TARGET_FOLDER, + target_filename + ) + bytesPNG = svg2png(file_obj=open(_source_svg_path, "rb")) + with io.BytesIO(bytesPNG) as fIn: + im = Image.open(fIn) + im = im.resize((TARGET_PNG_WIDTH, TARGET_PNG_WIDTH)) + im.load() + assert im.size == (TARGET_PNG_WIDTH, TARGET_PNG_HEIGHT) + im.save(target_filepath) +