diff --git a/flatland/png/Background_Light_green.png b/flatland/png/Background_Light_green.png index 08286a234bea95bc2b6696fdae2907260033ce50..86c5ac45d980920f6230526158c0ac9294b293ca 100644 Binary files a/flatland/png/Background_Light_green.png and b/flatland/png/Background_Light_green.png differ diff --git a/flatland/png/Background_city.png b/flatland/png/Background_city.png index e63f1c1e09566bdcd3905879f1b99063426f9e54..be605ec4d54091e1b7abf83bf6d67010cafde78c 100644 Binary files a/flatland/png/Background_city.png and b/flatland/png/Background_city.png differ diff --git a/flatland/png/Background_rail.png b/flatland/png/Background_rail.png index 9a5a9bd6f9ef1402b33fb2a5f5069579da5d5972..ff4d94c2c5761d38f0bcebda9580fb79b61387aa 100644 Binary files a/flatland/png/Background_rail.png and b/flatland/png/Background_rail.png differ diff --git a/flatland/png/Background_white_filter.png b/flatland/png/Background_white_filter.png index 72aadb480418cc2ae93247a1768737d98c319fb6..5ca44a22542bcf0433cda44505facc7c296ca936 100644 Binary files a/flatland/png/Background_white_filter.png and b/flatland/png/Background_white_filter.png differ diff --git a/flatland/png/Bahnhof_#d50000.png b/flatland/png/Bahnhof_#d50000.png index 03dec9edd361247593689fa497bc20831237dfdd..3d72c293e8668b194136a0c590151db354895d24 100644 Binary files a/flatland/png/Bahnhof_#d50000.png 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 index 7d383d00cfd8761efda94e0e6152d55b5ef187b2..e2ca62361d9c21a05b22837106a461d7eb899d7c 100644 Binary files a/flatland/png/Bahnhof_#d50000_Deadend_links.png 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 index 9f6d5089bf929c6f997dd0cc35a75595f68df868..b4549771e0cb6d6c89e25d44d4b3d47494266aa0 100644 Binary files a/flatland/png/Bahnhof_#d50000_Deadend_oben.png 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 index ebcba77e700bcda85bbc57e4c9120605c20431d7..ddf29db9292c3628f81b2c88f0b18c644189b801 100644 Binary files a/flatland/png/Bahnhof_#d50000_Deadend_rechts.png 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 index 356f8f739442a80834859eb7660253ed80fe5018..6894e69a23af6657b6f6b376a0bc62f2160bf423 100644 Binary files a/flatland/png/Bahnhof_#d50000_Deadend_unten.png 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 index c3069a08dfcd326cc20ff92a34f484281394e47e..786f79ecb9abc3851b71dc6c724850130a804376 100644 Binary files a/flatland/png/Bahnhof_#d50000_Gleis_horizontal.png 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 index a689dbe46d7c3ca4151049499f0fd6e811decb6e..989bb50b61eda56a77cad448baac68df3efa8ae4 100644 Binary files a/flatland/png/Bahnhof_#d50000_Gleis_vertikal.png 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 index 202b12508c9fe0bd98ca03b3b8eaada329a8c9f0..8bf4844238ebeafced9007c6126b00962d853fc7 100644 Binary files a/flatland/png/Bahnhof_#d50000_target.png and b/flatland/png/Bahnhof_#d50000_target.png differ diff --git a/flatland/png/Buildings-Bank.png b/flatland/png/Buildings-Bank.png index 7c43368579f031a7664868f5b485a539fbb32879..16f36237475709510d4d5692367bb3edc8fd3a99 100644 Binary files a/flatland/png/Buildings-Bank.png and b/flatland/png/Buildings-Bank.png differ diff --git a/flatland/png/Buildings-Bar.png b/flatland/png/Buildings-Bar.png index e7d6100d7966554a1032188deeeae409d34868a9..0fb222ba686ffe83ee7fa3d856d4713f74149a64 100644 Binary files a/flatland/png/Buildings-Bar.png and b/flatland/png/Buildings-Bar.png differ diff --git a/flatland/png/Buildings-Fabrik_A.png b/flatland/png/Buildings-Fabrik_A.png index a0dae7e656c25d1ccf8207532883571dc1aaa6ab..3c94bafec37a70a878a0827473f47bfee29532dc 100644 Binary files a/flatland/png/Buildings-Fabrik_A.png 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 index 30fd8cef8d0a6b99850a9bbc12b45b49bc5b0313..fc3f4771652f9e1a8b8f333177f7edf60d2dd3ee 100644 Binary files a/flatland/png/Buildings-Fabrik_B.png 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 index cbbeff18f60b5c5c8ef581be9fcac68f8c7c87e8..bbbee1d0e184099c5ca865fc76ee94e9fd5b4076 100644 Binary files a/flatland/png/Buildings-Fabrik_C.png 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 index 411aa65db4f4bb040587c41b625591d15ebed23a..8cb2fb938900aae809e59e7ff06608fc2ca70f22 100644 Binary files a/flatland/png/Buildings-Fabrik_D.png 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 index c1e5a341b5f540ed151c48d36813f25006e4175a..49920e1bfb1e5e5ec000b6213c59cc556e5a3c0b 100644 Binary files a/flatland/png/Buildings-Fabrik_E.png 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 index fb3e141882173110b710311400586de4a2e27f0e..662bac6c3c316a7e1a726de1a49db8a9e9cfaa8f 100644 Binary files a/flatland/png/Buildings-Fabrik_F.png 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 index bf19757cd6fb5d21c970c3bca77b70ea2931b658..57c2f404e0d552737d09a7c3283623f901085b5b 100644 Binary files a/flatland/png/Buildings-Fabrik_G.png 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 index cf64fd0e2ababc400706bf8df61da6172366577e..4b18616022713bf71702963cfbdf31a3f6e9fc3d 100644 Binary files a/flatland/png/Buildings-Fabrik_H.png 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 index 4b3047bc000c7c0773d750d0aaf841f9842157d9..00fc9e512854131faa00a3f3f22ac45d0b37a564 100644 Binary files a/flatland/png/Buildings-Fabrik_I.png and b/flatland/png/Buildings-Fabrik_I.png differ diff --git a/flatland/png/Buildings-Hochhaus.png b/flatland/png/Buildings-Hochhaus.png index d88f746902ec5b9b6589eebd728d38222d9d60f4..e60202e4630e709780e023f5cba2517630ae3f9b 100644 Binary files a/flatland/png/Buildings-Hochhaus.png and b/flatland/png/Buildings-Hochhaus.png differ diff --git a/flatland/png/Buildings-Hotel.png b/flatland/png/Buildings-Hotel.png index e5e3bcb0e5510e3366cb710d595c419cb47782e4..bf14135fde6ad8be1160038477ce597cbab9b90c 100644 Binary files a/flatland/png/Buildings-Hotel.png and b/flatland/png/Buildings-Hotel.png differ diff --git a/flatland/png/Buildings-Office.png b/flatland/png/Buildings-Office.png index 5a93cce74144e6f44c529d53e2052da5175c885f..07647072287f63bcfbb42e44415e50d8a3f8ad32 100644 Binary files a/flatland/png/Buildings-Office.png and b/flatland/png/Buildings-Office.png differ diff --git a/flatland/png/Buildings-Polizei.png b/flatland/png/Buildings-Polizei.png index a6d6c73f716acb585e8c82a60db4ea7bf8908055..bc273f49df0b821b6704db43ce09ed66339a9185 100644 Binary files a/flatland/png/Buildings-Polizei.png and b/flatland/png/Buildings-Polizei.png differ diff --git a/flatland/png/Buildings-Post.png b/flatland/png/Buildings-Post.png index cdbf3ab3432cec2e623b1a5dda14b63b9abd9433..a1f93c6659cfa43f7f0af739d146b4ae91edb23e 100644 Binary files a/flatland/png/Buildings-Post.png and b/flatland/png/Buildings-Post.png differ diff --git a/flatland/png/Buildings-Supermarkt.png b/flatland/png/Buildings-Supermarkt.png index e2a1c343c1a3dd4363559b3b03c581995c0b4155..ec8ebd504b0867e5b5564e49b3c81ce5a405b159 100644 Binary files a/flatland/png/Buildings-Supermarkt.png and b/flatland/png/Buildings-Supermarkt.png differ diff --git a/flatland/png/Buildings-Tankstelle.png b/flatland/png/Buildings-Tankstelle.png index b59703f50a2813ca75c3e3905f02c13eb1ae0a0d..84d81081327994cb403ec587a909d737382a7af9 100644 Binary files a/flatland/png/Buildings-Tankstelle.png and b/flatland/png/Buildings-Tankstelle.png differ diff --git a/flatland/png/Buildings-Wohnhaus.png b/flatland/png/Buildings-Wohnhaus.png index 2c5ee1f4fe8576215e6b47cf2b10e8f0a5afb76d..3a05a5a29a3ff65315d5c93ef6d10f902ee41000 100644 Binary files a/flatland/png/Buildings-Wohnhaus.png and b/flatland/png/Buildings-Wohnhaus.png differ diff --git a/flatland/png/Cell_occupied.png b/flatland/png/Cell_occupied.png index fd4fd0cca086e768b8d4847f45db8629c23a0b78..08db69fc682b16ad5adadafb31018f441316f50a 100644 Binary files a/flatland/png/Cell_occupied.png and b/flatland/png/Cell_occupied.png differ diff --git a/flatland/png/Gleis_Deadend.png b/flatland/png/Gleis_Deadend.png index bc6c61d59d9c744f4f56735e642fb51ab537a917..47eb7687a8a2af37ba204ff02b58006ebc32705f 100644 Binary files a/flatland/png/Gleis_Deadend.png and b/flatland/png/Gleis_Deadend.png differ diff --git a/flatland/png/Gleis_Diamond_Crossing.png b/flatland/png/Gleis_Diamond_Crossing.png index ac8d6e70d65abcc4b047d514880bfe2440eb8f42..9d3612a9851ae2fa44d130a4be438113395c68a8 100644 Binary files a/flatland/png/Gleis_Diamond_Crossing.png 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 index 50385cf113a75ab0465c3095e281d4b4b3dd3748..394c1b654b665f99f52d5b363ac925fe950cfa15 100644 Binary files a/flatland/png/Gleis_Kurve_oben_links.png 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 index dfc4a2f2585429bf6a61383d05702fa3696e5f7c..c0b379760ba2c15784065eb4ffcce2560e87eb3e 100644 Binary files a/flatland/png/Gleis_Kurve_oben_links_unten_rechts.png 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 index be4c7183c6a4b3aea7cd74657abcf2ee1dacc607..3ff468049e196d90ade6d01027149671b358716b 100644 Binary files a/flatland/png/Gleis_Kurve_oben_rechts.png 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 index 8c5b8c257bf2ac8bdb226f72009e68105c082352..9c462811b50afd3d72d1f6b432943df6f3855757 100644 Binary files a/flatland/png/Gleis_Kurve_unten_links.png 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 index 4fc6d8b256d8fc289678f11918ec8fe0b39ec24c..4b3a0baca81c97dc16fcc701b8f74ab0dcb6b5a5 100644 Binary files a/flatland/png/Gleis_Kurve_unten_rechts.png and b/flatland/png/Gleis_Kurve_unten_rechts.png differ diff --git a/flatland/png/Gleis_horizontal.png b/flatland/png/Gleis_horizontal.png index 4c50711239e5e3cb8d9303165f20af49d25cc5c8..b1d2b1a8c91e6ccf312e5b35257f844b7bf87d76 100644 Binary files a/flatland/png/Gleis_horizontal.png and b/flatland/png/Gleis_horizontal.png differ diff --git a/flatland/png/Gleis_horizontal_Perron.png b/flatland/png/Gleis_horizontal_Perron.png index a42c1fe5021a6fd07c9a97d8977a9a7710a2ef90..97e9aedaf6445d7f6b20c0065bafc5a24b75b2c9 100644 Binary files a/flatland/png/Gleis_horizontal_Perron.png and b/flatland/png/Gleis_horizontal_Perron.png differ diff --git a/flatland/png/Gleis_vertikal.png b/flatland/png/Gleis_vertikal.png index 5c7b38353f6c8eac684ced4093bc4011fbbe7a7e..f7cbcf6476dfc6ed3de2c51f9ec6cd6b60984d25 100644 Binary files a/flatland/png/Gleis_vertikal.png and b/flatland/png/Gleis_vertikal.png differ diff --git a/flatland/png/Gleis_vertikal_Perron.png b/flatland/png/Gleis_vertikal_Perron.png index 4161c9c9fbb33546f45cf4048dd8a66ed7494bae..3b8e024921b77ac2591ee3db94387c512f7fe8ae 100644 Binary files a/flatland/png/Gleis_vertikal_Perron.png 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 index 854574dddaad767f3b1a2ed1c0f407d6e176f509..473265c3385e88a4b5b731369a763626238dd9f6 100644 Binary files a/flatland/png/Scenery-Bergwelt_A_Teil_1_links.png 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 index f2e4e42c57a1ebfa02bf628e15f02f536b395a2e..05e2a6b78303835fb33efdc25fae3b7e229ab419 100644 Binary files a/flatland/png/Scenery-Bergwelt_A_Teil_2_mitte.png 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 index 67a6635d631c52f9c3b68394362a16b6aa2bde80..60dd90b55d05dd149a125e39a0972cfd3b551a7b 100644 Binary files a/flatland/png/Scenery-Bergwelt_A_Teil_3_rechts.png 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 index 28f45d22126047650c9cf160e8691ed0e21bae9c..b5afa6d04945e6a5513364663b131c072e8ac717 100644 Binary files a/flatland/png/Scenery-Bergwelt_B.png 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 index 8adaeed56c0da8a00b1bd30c2b6cdde9b8e0c561..3e9dfdd5d3d8b3dad91e02f5e660517af737e567 100644 Binary files a/flatland/png/Scenery-Bergwelt_C_Teil_1_links.png 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 index 462f804ce142b83423a278e30b2c2c979af85e98..edb60268adcb47a97a90c1ce9896faf7ef777355 100644 Binary files a/flatland/png/Scenery-Bergwelt_C_Teil_2_rechts.png 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 index ee456c85381b65f2d7fff9cedb86a39aaab416f2..cdaafecaf5c9bd6daf70a4ab25281cb532a04044 100644 Binary files a/flatland/png/Scenery-Laubbaume_A.png 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 index 472f7c77bb4b7a2089b22b868ddf1cbc9a842d87..fe75f1c20bbe9c3ad49755b20e3357a30a8ddae0 100644 Binary files a/flatland/png/Scenery-Laubbaume_B.png 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 index 04d83ea93cae15036f56295f00f2a2fe9fc77297..c3994a3dc849503381b4a90998795b4874f61e2f 100644 Binary files a/flatland/png/Scenery-Laubbaume_C.png 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 index e768bf3d86a3ced97dd21138c6d3eef6097fef6e..428d6e12419a1d33ee3c7d3c56ea2ede1213d65a 100644 Binary files a/flatland/png/Scenery-Nadelbaume_A.png 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 index 831b64931976f79c1dce7853618dd2c9d1754b83..885596172225b6612b6b0fc9702023df1de09270 100644 Binary files a/flatland/png/Scenery-Nadelbaume_B.png and b/flatland/png/Scenery-Nadelbaume_B.png differ diff --git a/flatland/png/Scenery_Water.png b/flatland/png/Scenery_Water.png index 195e17afe8225c16516cb163b2b27c65a69681d2..d71fb9d17110f9da3d6e211dd95c6413b398b472 100644 Binary files a/flatland/png/Scenery_Water.png and b/flatland/png/Scenery_Water.png differ diff --git a/flatland/png/Selected_Agent.png b/flatland/png/Selected_Agent.png index d89edac21241634a1f7e581f7583ee3de7e3a2e3..36586a336fd6b61372f0a94f087e426c77bafbd1 100644 Binary files a/flatland/png/Selected_Agent.png and b/flatland/png/Selected_Agent.png differ diff --git a/flatland/png/Selected_Target.png b/flatland/png/Selected_Target.png index 547cdf09db30cd53780a71c1f9bc1f5f4de2b147..892e4de0fc8ee0c0038d4b7bbc6a7b3df835fdcb 100644 Binary files a/flatland/png/Selected_Target.png and b/flatland/png/Selected_Target.png differ diff --git a/flatland/png/Weiche_Double_Slip.png b/flatland/png/Weiche_Double_Slip.png index 17b76fef8621848cfc2d886c1dcef9a856308ae5..e284da8f6c3871ec93717b2131739ecbeb21aca9 100644 Binary files a/flatland/png/Weiche_Double_Slip.png 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 index c1a539204cc58df8066ee9cfb0220198575b35a8..382620dea1eaec7c1b5a109efad70a862c12db23 100644 Binary files a/flatland/png/Weiche_Single_Slip.png and b/flatland/png/Weiche_Single_Slip.png differ diff --git a/flatland/png/Weiche_Symetrical.png b/flatland/png/Weiche_Symetrical.png index 14755867a67471e1655ceb2e1d88a718dd944731..d021af9aadddb741ad461ac37fe7e1ea635aabf1 100644 Binary files a/flatland/png/Weiche_Symetrical.png and b/flatland/png/Weiche_Symetrical.png differ diff --git a/flatland/png/Weiche_Symetrical_gerade.png b/flatland/png/Weiche_Symetrical_gerade.png index e5f7ba79cb8f7baf69ffb6e8197535f053cf8844..1439f35767d413b5f472c91076a9281bca1f9001 100644 Binary files a/flatland/png/Weiche_Symetrical_gerade.png 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 index 7cc6027a7a7187a195bdd67b559a6d761969c845..1ba0640097f8043504de7833052acc31d60803ea 100644 Binary files a/flatland/png/Weiche_horizontal_oben_links.png 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 index 2b7e311dfb902cda76dc506ee93545cf15ca1ae9..746ef4fc21e80cfbb84c3ba87a941b85ec05244a 100644 Binary files a/flatland/png/Weiche_horizontal_oben_rechts.png 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 index 398fba4941dfa985ae0b04ce5da0507f53ed2492..eb8a122e5a9fd1fb29fa8e74535c110b8f4571b1 100644 Binary files a/flatland/png/Weiche_horizontal_unten_links.png 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 index 6dd0774e58c357d1d6d4a6d88afea545f841fea2..513cf8fc12d45f862315c489474cf4c36ea4ff2b 100644 Binary files a/flatland/png/Weiche_horizontal_unten_rechts.png 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 index 9f78446d114b6255e0cde1797b4c7f259035beb9..bed9876779b7b7e71119ca2f8a710914a7987682 100644 Binary files a/flatland/png/Weiche_vertikal_oben_links.png 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 index a80b689bc567639d7d6d2018735f04d4f7d3624e..b1c18f8bf868545475cba31a8ecaa3d020f06792 100644 Binary files a/flatland/png/Weiche_vertikal_oben_rechts.png 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 index ae5575ae956c266b73a2cffc000b919337289a60..ac01b8f602212ca46a6e2893c96a7fe327a6989d 100644 Binary files a/flatland/png/Weiche_vertikal_unten_links.png 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 index 4c74ccc409b4c5da472e8edb9f12bd35ae64e997..14d0dc4eaff52a1fcff059600acf3710187589a0 100644 Binary files a/flatland/png/Weiche_vertikal_unten_rechts.png 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 index a7967fd643defe2a1ba1e25d342d545b11a43b95..9a8e079b2a96d53c0192a548e1ce28f200cad823 100644 Binary files a/flatland/png/Zug_1_Weiche_#0091ea.png 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 index 385d9361e5d03d3c14b567395127b873479cc76b..f4188bab7837b4e9d1c240ded75a0d630816c21e 100644 Binary files a/flatland/png/Zug_1_Weiche_#0091ea_old.png 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 index cdc8a230c16fde7b81f3d03d9aaf67a41457ecfa..7251f050213324a61f3576dc69b1de4a99ad45e1 100644 Binary files a/flatland/png/Zug_1_Weiche_#00c853_old.png 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 index edb9e06c8157d3b4537717175f16abf222512a1f..fd93c7bd24dc1976ee29cc972b7a04703152a276 100644 Binary files a/flatland/png/Zug_1_Weiche_#d50000.png 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 index c7f25ca3b66b78e9658566161d37c4fb9d51f957..6592ddf637c325b9356455d2a9e049e31fdbc921 100644 Binary files a/flatland/png/Zug_2_Weiche_#0091ea.png 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 index 855514d974259276ff488bc3b80a11e7c309883d..c7ccd69a427c16d863ed715feea15e039e7b9b30 100644 Binary files a/flatland/png/Zug_2_Weiche_#0091ea_old.png 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 index 0de6eac28599a19612d223764e68fb096802f88c..9d0d518b73d846d47efa4001e3c28730320d1f7c 100644 Binary files a/flatland/png/Zug_2_Weiche_#00c853_old.png 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 index 37ea891c5b5eb2d515901284f8e69880005e75f6..d4091a3937846d5dd65538d329902abe8228b481 100644 Binary files a/flatland/png/Zug_Gleis_#0091ea.png 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 index 131c8518b640f0994a78cb5e5a5073d3ab9c2d7d..e1283e36c621c037965db123437322e8c590ec03 100644 Binary files a/flatland/png/Zug_Gleis_#0091ea_old.png 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 index 2593d68b2b5cf8947da59ad68b4655313671a200..ea9e378a516c35676b78f9fdfe7b7246d72c9b65 100644 Binary files a/flatland/png/Zug_Gleis_#00c853_old.png 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 index 2a4623fd6076c0f53fa0d00889270ec258301fcc..f5d944b531b9adf180c7ea04873f0490ef00ed8c 100644 Binary files a/flatland/png/Zug_Gleis_#d50000.png and b/flatland/png/Zug_Gleis_#d50000.png differ diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py index 595b6ed61e84bf7e677745d378b918a36eb44a45..c2cb9f45875799f6d84e069f94b8b4c1051cfda8 100644 --- a/flatland/utils/graphics_pil.py +++ b/flatland/utils/graphics_pil.py @@ -9,6 +9,22 @@ 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 @@ -263,99 +279,104 @@ class PILSVG(PILGL): def pil_from_svg_file(self, package, resource): bytestring = resource_bytes(package, resource) - with io.BytesIO(bytestring) as fIn: + bytesPNG = svg2png(bytestring=bytestring, output_height=self.nPixCell, output_width=self.nPixCell) + with io.BytesIO(bytesPNG) as fIn: pil_img = Image.open(fIn) - pil_img = pil_img.resize( - (self.nPixCell, self.nPixCell), - Image.ANTIALIAS - ) + pil_img.load() + return pil_img + def pil_from_svg_bytes(self, bytesSVG): + bytesPNG = svg2png(bytesSVG, output_height=self.nPixCell, output_width=self.nPixCell) + with io.BytesIO(bytesPNG) as fIn: + pil_img = Image.open(fIn) + return pil_img + def load_buildings(self): lBuildingFiles = [ - "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" + "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" ] - imgBg = self.pil_from_svg_file('flatland.png', "Background_city.png") + imgBg = self.pil_from_svg_file('flatland.svg', "Background_city.svg") 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.png', sFile) + img = self.pil_from_svg_file('flatland.svg', 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.png", - "Scenery-Laubbaume_B.png", - "Scenery-Laubbaume_C.png", - "Scenery-Nadelbaume_A.png", - "Scenery-Nadelbaume_B.png", - "Scenery-Bergwelt_B.png" + "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_files_d2 = [ - "Scenery-Bergwelt_C_Teil_1_links.png", - "Scenery-Bergwelt_C_Teil_2_rechts.png" + "Scenery-Bergwelt_C_Teil_1_links.svg", + "Scenery-Bergwelt_C_Teil_2_rechts.svg" ] scenery_files_d3 = [ - "Scenery-Bergwelt_A_Teil_1_links.png", - "Scenery-Bergwelt_A_Teil_2_mitte.png", - "Scenery-Bergwelt_A_Teil_3_rechts.png" + "Scenery-Bergwelt_A_Teil_1_links.svg", + "Scenery-Bergwelt_A_Teil_2_mitte.svg", + "Scenery-Bergwelt_A_Teil_3_rechts.svg" ] scenery_files_water = [ - "Scenery_Water.png" + "Scenery_Water.svg" ] - img_back_ground = self.pil_from_svg_file('flatland.png', "Background_Light_green.png").convert("RGBA") + img_back_ground = self.pil_from_svg_file('flatland.svg', "Background_Light_green.svg").convert("RGBA") - self.scenery_background_white = self.pil_from_svg_file('flatland.png', "Background_white.png").convert("RGBA") + self.scenery_background_white = self.pil_from_svg_file('flatland.svg', "Background_white.svg").convert("RGBA") self.scenery = [] for file in scenery_files: - img = self.pil_from_svg_file('flatland.png', file) + img = self.pil_from_svg_file('flatland.svg', 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.png', file) + img = self.pil_from_svg_file('flatland.svg', 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.png', file) + img = self.pil_from_svg_file('flatland.svg', 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.png', file) + img = self.pil_from_svg_file('flatland.svg', file) img = Image.alpha_composite(img_back_ground, img) self.scenery_water.append(img) @@ -363,55 +384,55 @@ class PILSVG(PILGL): """ Load the rail SVG images, apply rotations, and store as PIL images. """ rail_files = { - "": "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" + "": "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" } target_files = { - "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"} + "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"} # 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.png", - whitefilter="Background_white_filter.png") + pil_rail_files = self.load_svgs(rail_files, rotate=True, background_image="Background_rail.svg", + whitefilter="Background_white_filter.svg") # 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.png", - whitefilter="Background_white_filter.png") + background_image="Background_rail.svg", + whitefilter="Background_white_filter.svg") # Load station and recolorize them - station = self.pil_from_svg_file('flatland.png', "Bahnhof_#d50000_target.png") + station = self.pil_from_svg_file('flatland.svg', "Bahnhof_#d50000_target.svg") self.station_colors = self.recolor_image(station, [0, 0, 0], self.agent_colors, False) - cell_occupied = self.pil_from_svg_file('flatland.png', "Cell_occupied.png") + cell_occupied = self.pil_from_svg_file('flatland.svg', "Cell_occupied.svg") self.cell_occupied = self.recolor_image(cell_occupied, [0, 0, 0], self.agent_colors, False) # Merge them with the regular rails. @@ -440,14 +461,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.png', file).convert("RGBA") + pil_rail = self.pil_from_svg_file('flatland.svg', file).convert("RGBA") if background_image is not None: - img_bg = self.pil_from_svg_file('flatland.png', background_image).convert("RGBA") + img_bg = self.pil_from_svg_file('flatland.svg', 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.png', whitefilter).convert("RGBA") + img_bg = self.pil_from_svg_file('flatland.svg', whitefilter).convert("RGBA") pil_rail = Image.alpha_composite(pil_rail, img_bg) if rotate: @@ -539,7 +560,7 @@ class PILSVG(PILGL): if target is not None: if is_selected: - svgBG = self.pil_from_svg_file('flatland.png', "Selected_Target.png") + svgBG = self.pil_from_svg_file('flatland.svg', "Selected_Target.svg") self.clear_layer(PILGL.SELECTED_TARGET_LAYER, 0) self.draw_image_row_col(svgBG, (row, col), layer=PILGL.SELECTED_TARGET_LAYER) @@ -564,9 +585,9 @@ class PILSVG(PILGL): # Seed initial train/zug files indexed by tuple(iDirIn, iDirOut): file_directory = { - (0, 0): "Zug_Gleis_#0091ea.png", - (1, 2): "Zug_1_Weiche_#0091ea.png", - (0, 3): "Zug_2_Weiche_#0091ea.png" + (0, 0): "Zug_Gleis_#0091ea.svg", + (1, 2): "Zug_1_Weiche_#0091ea.svg", + (0, 3): "Zug_2_Weiche_#0091ea.svg" } # "paint" color of the train images we load - this is the color we will change. @@ -579,7 +600,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.png', path_svg) + pil_zug = self.pil_from_svg_file('flatland.svg', path_svg) # Rotate both the directions and the image and save in the dict for rot_direction in range(4): @@ -609,7 +630,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.png', "Selected_Agent.png") + bg_svg = self.pil_from_svg_file('flatland.svg', "Selected_Agent.svg") 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/scripts/convert_svg_2_png.py b/scripts/convert_svg_2_png.py index 021c4ef593e87bb54a5351f8e69053e705eb6ca4..398835490ad54eb69a8fdf2e7daeac6f7ab1186d 100755 --- a/scripts/convert_svg_2_png.py +++ b/scripts/convert_svg_2_png.py @@ -42,10 +42,13 @@ for _source_svg_path in tqdm.tqdm(glob.glob(os.path.join(SVG_FOLDER, "*.svg"))): TARGET_FOLDER, target_filename ) - bytesPNG = svg2png(file_obj=open(_source_svg_path, "rb")) + bytesPNG = svg2png( + file_obj=open(_source_svg_path, "rb"), + output_height=TARGET_PNG_WIDTH, + output_width=TARGET_PNG_HEIGHT + ) 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)