Compare commits
1267 Commits
5.0.0-rc2-dev
...
5.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 24ab8141ae | |||
| 7848c3acf3 | |||
| 752cc43fb8 | |||
| cf5d3ae43f | |||
| e22113ccef | |||
| 35dc387fc6 | |||
| 025578fee7 | |||
| 45a3d86d36 | |||
| 9f1b6680a2 | |||
| 385eb49cb2 | |||
| 61b94c8c2c | |||
| 4aeef1e09e | |||
| 93caff0ac1 | |||
| 4e3fe6c55d | |||
| 9240a54f4a | |||
| 4e04468e47 | |||
| 857d038b5d | |||
| ec1eaf5d2d | |||
| 7134b1c83f | |||
| bc8739f930 | |||
| 805bb3160f | |||
| 187d7729ff | |||
| 940b08ab85 | |||
| e8c8bf8d11 | |||
| 5d8c3e5033 | |||
| ec5ed68af8 | |||
| f66ccfb64f | |||
| 7eac7dcdcb | |||
| 1b1a3763d2 | |||
| 50eedcf0b3 | |||
| 62561292e9 | |||
| 03132cabee | |||
| 82c9e54735 | |||
| c0d9b9ab81 | |||
| daf4985a60 | |||
| b1805dd254 | |||
| 66b0aca696 | |||
| 22fbf30f22 | |||
| f3d1f31e1d | |||
| 9610f8f208 | |||
| 76adf7dbe8 | |||
| 3f32f0be9e | |||
| a77caa6baa | |||
| 0b5ca1a883 | |||
| 839ade2c05 | |||
| 922ce89643 | |||
| 78f7ba10ef | |||
| dd39599903 | |||
| dba32717b1 | |||
| 57800b934e | |||
| 4daaaa373c | |||
| 36bb92f844 | |||
| d95ab28db9 | |||
| 09616fff7a | |||
| f87a22fefb | |||
| 2701bdbbac | |||
| 49753d9dad | |||
| 272b477e91 | |||
| e453b5b87b | |||
| c08d3baf8c | |||
| 3d9e6867cf | |||
| bd1b15ded7 | |||
| 8f87aae99e | |||
| 43987cc50c | |||
| 6106210c87 | |||
| b37bc69476 | |||
| cccf4cf20b | |||
| 99549f816f | |||
| e34dc4abb1 | |||
| 82b37a5cbe | |||
| 561dc052ff | |||
| 553b529fd4 | |||
| 7573c6a4e4 | |||
| c000d70a51 | |||
| 234b01905d | |||
| a5bdee747a | |||
| 9977d0d737 | |||
| 46f7011463 | |||
| 876232aa7a | |||
| 39c38fb386 | |||
| 99f25b0895 | |||
| a43ec3e3f0 | |||
| 7b596f0365 | |||
| dd22c73666 | |||
| d15b34988d | |||
| 5e0ef36719 | |||
| 6994291997 | |||
| 9837d1624f | |||
| 13a41f11eb | |||
| 59723ce3ab | |||
| 79d19d9055 | |||
| 115f318976 | |||
| 51a74b53cb | |||
| f591f8741a | |||
| f56ea6bf3c | |||
| e3f12ec0d9 | |||
| c26311918e | |||
| 1f19903e7e | |||
| 1e223b9027 | |||
| 036288d18f | |||
| 8efdcbfaf1 | |||
| 6c3b4e5824 | |||
| 9831a14ef3 | |||
| f3400e03c6 | |||
| 04e699f789 | |||
| 9e61ebfb0b | |||
| 9e355c29f1 | |||
| 5ce0c2065c | |||
| 3f58dce1de | |||
| c5c89fd216 | |||
| 1820e81f5e | |||
| 4fcd80eda1 | |||
| e7a9643b37 | |||
| 3e28ac9c7c | |||
| 4c37defd35 | |||
| a4564db082 | |||
| dd3c24faf8 | |||
| 0a9aedda8b | |||
| 48b4a897af | |||
| 4c409fbac9 | |||
| b4fc7575a5 | |||
| 4560d4ef69 | |||
| 3a03c79255 | |||
| fca0785754 | |||
| 30d398b108 | |||
| dd7ce9f00a | |||
| 4f2f8e7f67 | |||
| c7e511c919 | |||
| d769d1649a | |||
| 2ae8f6337d | |||
| 97c5e0a835 | |||
| c722ea7a0c | |||
| 5c600e992a | |||
| a055916f92 | |||
| e3d5734f76 | |||
| 3d0915a33e | |||
| a67bfa6207 | |||
| a454adb3ba | |||
| 5019fd0aab | |||
| 2c6d0ffe27 | |||
| 0ff84865ca | |||
| 36746a0941 | |||
| 22df4e301b | |||
| ac0c7441b4 | |||
| 2196959539 | |||
| 06ac172c27 | |||
| e7c51a6a6c | |||
| 079d6b2009 | |||
| 8cbe5c2184 | |||
| a7d7ab32c6 | |||
| 61715a8df5 | |||
| a149960faa | |||
| 650ff5e5fe | |||
| 0c42d988f7 | |||
| a84de7cccf | |||
| e9b1552b16 | |||
| 27b88be61f | |||
| 280573e9af | |||
| 14e42fec7e | |||
| 7e8c5b9574 | |||
| 500abd0ac4 | |||
| e29e7ff95d | |||
| fb580d3694 | |||
| b987126b7d | |||
| 3919345003 | |||
| 1df99c264f | |||
| 4d094da2fa | |||
| 2c5154c630 | |||
| f85dc57642 | |||
| 3da86dc24b | |||
| 5e9b4dd6a5 | |||
| 1f60d8fdbf | |||
| 7012226284 | |||
| 48bbde65b3 | |||
| bdcae5f593 | |||
| b7b125d83c | |||
| 9eec296b0a | |||
| ec81f3267f | |||
| f0e9e3b9d5 | |||
| ee12fe6eff | |||
| d6b95236a4 | |||
| fbe677e46e | |||
| f84bd0d836 | |||
| 25b6604fc5 | |||
| fbd6654f9a | |||
| b8ae4e0195 | |||
| 9527034e0f | |||
| 6754aa8a74 | |||
| 0c659eda78 | |||
| 20ea486378 | |||
| 0c94b3239d | |||
| d8e276bc4f | |||
| b7a321d143 | |||
| f6d9c3a733 | |||
| 7ed07cae70 | |||
| 8bb0fabcba | |||
| da4d9ee392 | |||
| a4ddbff321 | |||
| 3c87ab94a2 | |||
| e424f29bbb | |||
| 3587789ae2 | |||
| 8cb389d95c | |||
| 0f78fe5a5a | |||
| 333ba4b9a2 | |||
| 7e2e39ce30 | |||
| b167c41d1b | |||
| dc022dcdae | |||
| e2c6422838 | |||
| 182b8a32df | |||
| 831978293f | |||
| 64f46448ea | |||
| ca1f50a023 | |||
| 626f5ac45a | |||
| a45a8e8797 | |||
| c7d39d22db | |||
| b764bb1d6d | |||
| 64eaaa4f58 | |||
| 0e946dad1a | |||
| 1c2f06106d | |||
| edbf34c2b2 | |||
| 26cbdbf103 | |||
| f163d9ff2a | |||
| 9230189f62 | |||
| 9d241ba812 | |||
| 57c3e98f8c | |||
| 349d1562af | |||
| d81bcee10d | |||
| 016c02a42d | |||
| 80e7a83fb0 | |||
| d2aa976017 | |||
| 9476b53533 | |||
| 5e19ed29b8 | |||
| aa340e6b85 | |||
| 9a80ebf387 | |||
| df1fa37fd8 | |||
| 370a412f49 | |||
| d63c1a2118 | |||
| 35576adb73 | |||
| 4ff426275f | |||
| 7dc9f99165 | |||
| 30da1a3b02 | |||
| 3dcf04fdb8 | |||
| 6fbc7bb4ce | |||
| 3af2026061 | |||
| 6bd8cb9b8f | |||
| b23b48b9a7 | |||
| 84427f463c | |||
| bded0cfc19 | |||
| eaf938c7e9 | |||
| 3e22e5ccd3 | |||
| e81faa2d5f | |||
| 9f7109826d | |||
| 9a13dd48af | |||
| 14ce518208 | |||
| 0013e0cad1 | |||
| 840a8b1d36 | |||
| 5e1605af19 | |||
| 101b68b610 | |||
| 3df27430c7 | |||
| 520c6116f5 | |||
| 66a489f6b6 | |||
| 9b1f2447b6 | |||
| b3db6572e8 | |||
| 4af699e919 | |||
| a14b552d89 | |||
| eb2857deab | |||
| 42d05e21a7 | |||
| d3deaf5ff5 | |||
| 47c44b4d83 | |||
| b43b78bdd2 | |||
| 33075e55a4 | |||
| ce379f56af | |||
| b0b5d91390 | |||
| 0748c118dd | |||
| 246a9286a9 | |||
| 8181646794 | |||
| 06ff56325c | |||
| 76f151b4d8 | |||
| d83cff63f6 | |||
| d30ac2967a | |||
| 7eea8f808d | |||
| 80fa480388 | |||
| f10aa6c857 | |||
| 9d1b5698e9 | |||
| 01c2d93a81 | |||
| 847f4f50b1 | |||
| 930f3dd74f | |||
| ef38a198d1 | |||
| 1f6f76beb9 | |||
| f785d27498 | |||
| b8bbb15aa1 | |||
| 47a4099e64 | |||
| 73a8d2a9d5 | |||
| 1751e4631c | |||
| a7cd62ad12 | |||
| dd436b658a | |||
| e2122db587 | |||
| cf04d341ec | |||
| f634b75652 | |||
| a552b4ccca | |||
| a1ef441dd9 | |||
| 8394e2b71e | |||
| 79e0bb08d0 | |||
| 77217b2089 | |||
| 44337dec56 | |||
| 147c1e6088 | |||
| 6990824597 | |||
| f52763f22b | |||
| f6f726acab | |||
| 462549fc84 | |||
| 3c7b91b96a | |||
| 81a5c0e3bf | |||
| a08c0ac08c | |||
| 7ef97e0bca | |||
| 04a462e48f | |||
| f0b3cf8077 | |||
| 1541cbdf04 | |||
| 44c1f5785b | |||
| feebb3a36c | |||
| 11c248a463 | |||
| 52734058a7 | |||
| ba3f2b30ee | |||
| 03fa645743 | |||
| 94891b75f9 | |||
| a99eeb44d3 | |||
| 834d9335dd | |||
| ae02039ed4 | |||
| 4959f91dac | |||
| 7b7355772e | |||
| 583a9c08c0 | |||
| 94b6f848bb | |||
| eb97634bdf | |||
| 7d66dc0cc3 | |||
| 316ff2898d | |||
| b82bf7c449 | |||
| b37969f584 | |||
| 0d4d24ed22 | |||
| 11ab8f6dc1 | |||
| 860a95ca30 | |||
| f6bd6b1360 | |||
| 4dd2de9057 | |||
| 34c6393b71 | |||
| 41d6fc648d | |||
| 1f04b5fc7d | |||
| 468d26d9d1 | |||
| 939450856a | |||
| 5001b056ac | |||
| 137799165d | |||
| 9302bbce59 | |||
| 5411b951ae | |||
| bc7bd107d9 | |||
| fb1aa56b77 | |||
| 04706d9d02 | |||
| 47106b6861 | |||
| aae30cc7c1 | |||
| 70506cc31d | |||
| e95d06e811 | |||
| cee313da8c | |||
| 5de246c5be | |||
| 72b49acccf | |||
| e624bbae8a | |||
| ade3c2b129 | |||
| 660aed71b4 | |||
| 16411c8c1e | |||
| 9605dd8e1d | |||
| 5d276a43f6 | |||
| 4186626069 | |||
| 2798035f85 | |||
| 61c3bc4af4 | |||
| 896ad3774d | |||
| 0555bbc656 | |||
| 8a2639325d | |||
| 5c65881fde | |||
| da61285a29 | |||
| de7791cc8b | |||
| 813c1a2ba2 | |||
| 3f783d2318 | |||
| 850aac5ec5 | |||
| 9edfd25b95 | |||
| 0e3be5776c | |||
| 8444b1b617 | |||
| b9874da3a6 | |||
| 5098c5796a | |||
| c5c52c3dfd | |||
| fb9ccd855d | |||
| 72238e260a | |||
| 7558c71aca | |||
| 68f6e3ad44 | |||
| 6d77e594b5 | |||
| a5b92a1fe4 | |||
| 40d2535625 | |||
| abd8927d71 | |||
| a5c213c23d | |||
| 64e98c8e54 | |||
| 228881f552 | |||
| 51c7381fd5 | |||
| 9552e02727 | |||
| 271826f8f3 | |||
| 5263558eaa | |||
| a300006956 | |||
| e0c881b639 | |||
| aaf47bbe71 | |||
| 7d62f14dd0 | |||
| 9e4511eb11 | |||
| 9354372a0c | |||
| da392728d4 | |||
| a288d6199e | |||
| 58814e838d | |||
| f95b77b61a | |||
| ee34aab07a | |||
| 39ac5e0af8 | |||
| 7343e78347 | |||
| 5dbfa6a9c1 | |||
| ff1802d7a1 | |||
| 63a952d239 | |||
| 6f65f835f4 | |||
| e4a6f2e523 | |||
| 6bd708621b | |||
| 0b8cf93888 | |||
| 27c9c6ceed | |||
| 8910894fab | |||
| d3c41dd247 | |||
| 0a91f0bc9c | |||
| 975e777149 | |||
| 6e57266136 | |||
| d4393b2813 | |||
| 8f984c2899 | |||
| 3cf9009f73 | |||
| bfa89039c4 | |||
| 9a228d8ec9 | |||
| fc71fc6474 | |||
| 7c49bcd3a6 | |||
| f51f30fb1e | |||
| c5cde53dff | |||
| 3ce8a4856a | |||
| d90d4ff682 | |||
| fe1f837d0c | |||
| eeb273faa0 | |||
| 36504b3071 | |||
| d03e92a3a2 | |||
| 8c63dac0c3 | |||
| 52fceb3243 | |||
| ce9cc4ea38 | |||
| c5f56ef573 | |||
| d2436e7478 | |||
| dfa9175209 | |||
| 71e64de3a4 | |||
| 94f161b8c2 | |||
| e789523632 | |||
| a12b9db584 | |||
| f914558e7b | |||
| a8db21319f | |||
| 2cb65f9c19 | |||
| da66005254 | |||
| 7db88126c5 | |||
| da061718e5 | |||
| c614f73c50 | |||
| 250d958ebb | |||
| cd5f727880 | |||
| b89f6d4af3 | |||
| 61597db12d | |||
| 32f599654f | |||
| 145835661b | |||
| adc61024d3 | |||
| 81af2db614 | |||
| cb925a6646 | |||
| 6090f9001e | |||
| 8f5cb32598 | |||
| cf2a07559d | |||
| 190d4d6f55 | |||
| 3893c43eb0 | |||
| ca548809da | |||
| 8506cdf3ae | |||
| 8d52dc9451 | |||
| b625d29151 | |||
| 8c5037a48b | |||
| b8f960ea09 | |||
| c4b447f3f9 | |||
| 6f249e5eb6 | |||
| e3c4a96f5c | |||
| 2d812c2827 | |||
| 5d8dd38664 | |||
| 6a2dc8d4eb | |||
| cdde4c4b40 | |||
| 0fd0e84162 | |||
| 2b22cbe94d | |||
| 10ec39a107 | |||
| c49a4398a1 | |||
| b4f9b5359d | |||
| 0c2f9b1827 | |||
| 3a8a718e43 | |||
| 5678a166ee | |||
| 8badfea17a | |||
| e27d31d51d | |||
| c48e5b6423 | |||
| 052ca08546 | |||
| 62a5ee8c21 | |||
| 63c9e11aae | |||
| 8f6ae70400 | |||
| dcf60f8e6f | |||
| 2bd0a027a2 | |||
| 6b1df2e992 | |||
| 0c1172b17d | |||
| b2d0631370 | |||
| 019ada0a92 | |||
| 0bcfb2c7df | |||
| c5696738d2 | |||
| d62b4f36a6 | |||
| d22fceca7c | |||
| bbc01e0c2b | |||
| 149f4f68c9 | |||
| 45dad4ded5 | |||
| 5010a461e1 | |||
| 2363f36033 | |||
| ec98bbba11 | |||
| 689db4f038 | |||
| d09445cf34 | |||
| 85921535b3 | |||
| 5e30e4d475 | |||
| 8cb68a3585 | |||
| df495b1d65 | |||
| 1ebee39973 | |||
| d1cab6ec62 | |||
| dfcdfe91fa | |||
| 7c52af2d50 | |||
| 93e75af388 | |||
| 144549ebca | |||
| afc28ef5db | |||
| 828faecce9 | |||
| 904eb82368 | |||
| 584409b2ef | |||
| 538ab0eb3f | |||
| 161b4a56fc | |||
| 509793a5b4 | |||
| 23a9fcd91d | |||
| 86d6ed5abf | |||
| d8687e4eaf | |||
| 8da242c593 | |||
| 1a6e8d4713 | |||
| 2832f997c5 | |||
| a9dc417319 | |||
| c30dd24cc1 | |||
| b94e0a2031 | |||
| 54766bac40 | |||
| e57cd291ff | |||
| 9311393016 | |||
| ba1e0efdad | |||
| 9704891c8f | |||
| 6e5131be5a | |||
| 2bab30d9ac | |||
| da5f2874c5 | |||
| 6a726ca299 | |||
| f2aea97807 | |||
| d67821d771 | |||
| 108dc20fba | |||
| 62d6750ced | |||
| 09622a4c9f | |||
| e91e88bfa1 | |||
| 6e83f99c72 | |||
| f73b9a55a7 | |||
| 2ed24a46b2 | |||
| daa7abec70 | |||
| dffdf04cd9 | |||
| a65088419e | |||
| 933ff189ad | |||
| e339007d22 | |||
| d41e64b0ff | |||
| 7bd9fc9235 | |||
| 7b887c4844 | |||
| b67bab2f98 | |||
| 1f898b1e80 | |||
| 03b85c7544 | |||
| b9808da0a8 | |||
| 787ee62db3 | |||
| 194c57133c | |||
| 6866c0c8a5 | |||
| 31b026c70f | |||
| e5374981aa | |||
| 36850a539b | |||
| b90f70e230 | |||
| a997aad144 | |||
| 4cc62ce038 | |||
| 8a70acb821 | |||
| dcf4d7caa7 | |||
| c8f4e1051b | |||
| 2b46bda2f2 | |||
| 471e3de5a7 | |||
| 8cb3aa79f2 | |||
| 046e73ecac | |||
| 44bf92ae64 | |||
| ad6956b05d | |||
| 5c5b74b29e | |||
| dbc2eea3db | |||
| 4c7f5f2a2f | |||
| ffe194567a | |||
| d2d5657aff | |||
| ef698384a7 | |||
| a3770bf6e1 | |||
| d35a6f1e6d | |||
| 07e7340a96 | |||
| db8c57dbc6 | |||
| b29550de5d | |||
| 90951ac1d1 | |||
| 5a90858a46 | |||
| aa7da5dfcd | |||
| a31017bc9c | |||
| cad2d0656c | |||
| 32af04c6a6 | |||
| 1f5b575eaf | |||
| c23b263e39 | |||
| bfe636d327 | |||
| 5ca6864a40 | |||
| e0ca5bab11 | |||
| 9648584827 | |||
| b2c4519c2c | |||
| 93c7f65d96 | |||
| 684f085ac5 | |||
| 1ac905d3ee | |||
| 296ada95a3 | |||
| 5b44e80355 | |||
| 0f5eb421b3 | |||
| 7c7a6ea979 | |||
| a2448cf4a5 | |||
| d0d9bb25c0 | |||
| 8411ef04d0 | |||
| 70cd27314b | |||
| 72a70d61d8 | |||
| bf135b0690 | |||
| 2eddf1d8db | |||
| af739f5b00 | |||
| c842ddfb97 | |||
| 106dd60e45 | |||
| 2f157f9b23 | |||
| 037f7a1698 | |||
| 6b973f42eb | |||
| 76d3b6f04a | |||
| 73eab29802 | |||
| 439cc6a967 | |||
| 69a31242b9 | |||
| 62522ee450 | |||
| 2836d36de8 | |||
| aec490e3ac | |||
| 8f2fee8bb8 | |||
| 75e91f4cfd | |||
| 26197c333e | |||
| 295941c14d | |||
| 6b3410974d | |||
| 5d71153eab | |||
| 6850e23fe0 | |||
| b2b70ed7e3 | |||
| 12487e14ab | |||
| 2f5fdcf329 | |||
| 5ac4dbe641 | |||
| 7395949ae0 | |||
| b636aaddf6 | |||
| c8a784058e | |||
| ae711d9994 | |||
| 7b734551d3 | |||
| 21ceb786ac | |||
| 41b92b6d0f | |||
| ccb668c105 | |||
| 2a87117edc | |||
| 458f9f5c97 | |||
| 91cfecaa12 | |||
| 5a051358b7 | |||
| 9960416e32 | |||
| 4d6947b56a | |||
| 539d12b08f | |||
| 095112a902 | |||
| 502bed083d | |||
| a9dd5b5335 | |||
| cfd2f1d001 | |||
| 942d4e7658 | |||
| ccce376e33 | |||
| bc67d1ad8c | |||
| 986b90424b | |||
| 7d9dea7897 | |||
| 5e5e80d392 | |||
| 6ccc8577ad | |||
| 641c8bb548 | |||
| 7a923ab969 | |||
| 888c434776 | |||
| a7528df198 | |||
| dcf02f5f67 | |||
| 5342aacf97 | |||
| ac778bc5b4 | |||
| 09a6bada03 | |||
| 68e69fe95d | |||
| 528a67b27c | |||
| 91209e194c | |||
| 7a7da560bc | |||
| 26ee673a6b | |||
| 4b3772cf07 | |||
| 7e29ff0bc4 | |||
| 8d017c9261 | |||
| d0ffff3b88 | |||
| 345f7d0732 | |||
| bfc70c8208 | |||
| 319908b7f4 | |||
| 143d580596 | |||
| 482fd866b3 | |||
| bd5eee50f4 | |||
| dbfa9093ab | |||
| b618da1fac | |||
| 96b5dee48f | |||
| 1a617dd66b | |||
| e6bb917ebf | |||
| ef1d1f80e5 | |||
| 802a96299a | |||
| 3d76fcaa3b | |||
| f911ef5186 | |||
| ca06e67ffc | |||
| aa0d67bdde | |||
| f2f1ce232d | |||
| 48910f3efc | |||
| 2694a76785 | |||
| 3e652f2d40 | |||
| 2baca1d650 | |||
| 445c0e66fb | |||
| 722886c9c7 | |||
| 805c38ffc5 | |||
| 60abff1c02 | |||
| 424fe8acd4 | |||
| 2c1f14fce5 | |||
| c55cb8c557 | |||
| f451ffb877 | |||
| 83319f74c3 | |||
| 2da575d539 | |||
| 617d9288ab | |||
| 32bb6064d7 | |||
| 07281d78ad | |||
| 8c2a7138d1 | |||
| 4640a656a2 | |||
| 3693e3b1e0 | |||
| b2a9df33ea | |||
| 6f6b65821a | |||
| 0cbc611135 | |||
| 938f8b1a9a | |||
| 006bfabbdf | |||
| 0e79538601 | |||
| e219ff0c2f | |||
| 3d2e103374 | |||
| 3c00b2a2a8 | |||
| fbb8ccb9ad | |||
| 30d1db6b1f | |||
| 9b9345abba | |||
| d562a7b26d | |||
| b834031425 | |||
| 9956ea20e7 | |||
| bc7ccab642 | |||
| 0ed6751ebe | |||
| 38dae061ce | |||
| f96328afef | |||
| 0b07f2ba9e | |||
| 65c3046fc9 | |||
| f977d210ad | |||
| b9adcbdbe3 | |||
| 8234cf721c | |||
| 340b9fc2a5 | |||
| a73cbe221a | |||
| f55ad77da6 | |||
| 202e81eaa5 | |||
| 34fed2075a | |||
| 87f18665fc | |||
| c8d1e056f3 | |||
| aa71d41a59 | |||
| 50588dcd1e | |||
| 2925b93571 | |||
| cfa9916836 | |||
| 3cc0554e33 | |||
| 648803dcf7 | |||
| 41c1657eb6 | |||
| 4202bb6af6 | |||
| e75762b1e3 | |||
| d776eaca83 | |||
| a93da4aba6 | |||
| 4302394990 | |||
| fc8b852c41 | |||
| 5fb7f5a615 | |||
| 86906b05e0 | |||
| 554cb54a4f | |||
| 536529e48f | |||
| 5506efaee5 | |||
| b9239d8728 | |||
| 9201417c06 | |||
| f81c77cd4e | |||
| 1a5139b91f | |||
| 0a58de0c46 | |||
| dce0743ddb | |||
| e3a06dca70 | |||
| 2865084ce8 | |||
| a695c995c7 | |||
| 4526f40fe1 | |||
| a8ef222517 | |||
| d3f23a62ec | |||
| c960d671cd | |||
| e4feb315d5 | |||
| 442d1169a8 | |||
| 7e47ef7471 | |||
| 3179e40b57 | |||
| f68268c8ca | |||
| 7b3dc9c28d | |||
| 41ac458e79 | |||
| 90741a9d76 | |||
| ad0deb16a2 | |||
| 794e8d8a04 | |||
| 626c8a71f7 | |||
| fdd3f52e2d | |||
| db2cda7271 | |||
| 2d5da8b04f | |||
| 853f73e6b7 | |||
| ca544eb138 | |||
| 6d855cbccb | |||
| 854cb70052 | |||
| 3be876c388 | |||
| 45d1c19eb7 | |||
| 0294e41cbc | |||
| e84e5606c9 | |||
| 000457db7c | |||
| 268aeeb18f | |||
| 9865fcd929 | |||
| b46fc7fe9c | |||
| 12ec56bc15 | |||
| 2974a2c10a | |||
| d2cf2fe61c | |||
| 8fcdc4f6c3 | |||
| 3e64c9de38 | |||
| 9203e397fe | |||
| 07dc12fdd3 | |||
| e9ef555c6a | |||
| 4a254ee7f3 | |||
| 9b5bbd7c77 | |||
| a1acec5f13 | |||
| 2a419156e0 | |||
| 81843c37a4 | |||
| 89bf02adb7 | |||
| 0e151687e3 | |||
| a41b2d6803 | |||
| b907fb856d | |||
| 3f734eb1b5 | |||
| 862fb430e7 | |||
| e57435c0fc | |||
| 1663627135 | |||
| 0f3fc4b6eb | |||
| 4e99b0d0e7 | |||
| 58c27398cb | |||
| b766dbc7a4 | |||
| f42ca89bb4 | |||
| df8bc93e4b | |||
| c421840a9e | |||
| 0d8692da20 | |||
| 86f744a1fd | |||
| 18b0b78397 | |||
| c1ae2fd0a8 | |||
| 4f3b77347a | |||
| 9ea360f168 | |||
| 5ef715f3d3 | |||
| 84151990cd | |||
| cb134fd065 | |||
| 20c30a4425 | |||
| f83ebb316e | |||
| 05dae96275 | |||
| 4b0d477c76 | |||
| 9bd6d5e97c | |||
| 900bf0c7a6 | |||
| a597ebc85e | |||
| d54a252eaa | |||
| 9f5316e38f | |||
| a11714b1a4 | |||
| 77b3a662fc | |||
| 1f32f7c55b | |||
| efa2a13eaa | |||
| cb2c447c23 | |||
| 7f6e26e55a | |||
| baef22df9a | |||
| 0bd5cc4470 | |||
| be4d7987d3 | |||
| 2bfbff104e | |||
| b9b8d14eb9 | |||
| 0dc719ca1a | |||
| e7ed415930 | |||
| 78c9b34b5d | |||
| 9ee698bbcd | |||
| fdb6bbab7b | |||
| 591a303777 | |||
| 15c64ee92d | |||
| 24b8768f43 | |||
| db73daa09c | |||
| 611d5a0dc4 | |||
| 94dbcc7199 | |||
| 6fb47faebd | |||
| d1af5210e0 | |||
| bbb513e2e5 | |||
| 906b389fab | |||
| 696ff81dc7 | |||
| df43f071e1 | |||
| 5e36fe8df7 | |||
| 70988271c1 | |||
| 8b21a0a53d | |||
| 2e4f50f206 | |||
| 7943372e8b | |||
| a2f118d2fa | |||
| 71bf488507 | |||
| 6d06ed3579 | |||
| f8a3ec4974 | |||
| c867de53b8 | |||
| 747e14f9e1 | |||
| 4b2ced341e | |||
| 53b1ec8146 | |||
| d391489596 | |||
| f4c972db5e | |||
| 89381e1103 | |||
| ee05b1c92e | |||
| 532bf09817 | |||
| dd56f16776 | |||
| 0171547154 | |||
| e750417fa0 | |||
| 54f14b08ca | |||
| fa39acfc2f | |||
| 5b8c35f64d | |||
| 62c5a706d5 | |||
| b813eac254 | |||
| e3d9a23867 | |||
| 62fe78f08c | |||
| 8bb9084ea9 | |||
| 7d3d9f7188 | |||
| 2e0b75c058 | |||
| 7483a73a5f | |||
| b8c282fa6f | |||
| 081c77f6bd | |||
| 1ec217d70e | |||
| 7c70e969db | |||
| 4917540069 | |||
| eb9099238a | |||
| 88915f7940 | |||
| 168112cf84 | |||
| 99e79c077a | |||
| 0f0d9afa66 | |||
| d1ab62fb4d | |||
| ed99251f0b | |||
| 6740a37632 | |||
| 6a4d14bade | |||
| 952aa7a1a6 | |||
| ffa454d6f9 | |||
| 2edc675eaf | |||
| 545e6bbd0c | |||
| 78161b5922 | |||
| 602d9e1972 | |||
| 0ded476f9d | |||
| 9472444b41 | |||
| ced0fcee1e | |||
| 886dc48cc4 | |||
| 8b94606fb5 | |||
| 778a3a4777 | |||
| ca4e4aead4 | |||
| 347f6daddc | |||
| 1dd4af2972 | |||
| 1cd64778d6 | |||
| a8b1c2a8f2 | |||
| b3e3964787 | |||
| ba49bd0386 | |||
| c8c5b5da07 | |||
| a763435b59 | |||
| f4ce8766e3 | |||
| b24b0d5dfe | |||
| 8d8c422a19 | |||
| 33f795be4f | |||
| c6e6134ebd | |||
| bfe9eff878 | |||
| 6b51cc33da | |||
| 4b5ca0ec14 | |||
| 4594fedc2c | |||
| 97fffe875f | |||
| f317b10adf | |||
| fb882633b2 | |||
| 6940f92469 | |||
| 5957bc7dba | |||
| 7df943af9c | |||
| cd0cd242d1 | |||
| fbf10e941b | |||
| d2d0660647 | |||
| a0364a1137 | |||
| 29ebca4053 | |||
| 434b385a95 | |||
| e9537953cd | |||
| 97f8a3361e | |||
| 6331f94544 | |||
| 058f2bffd0 | |||
| 5b653c0c1e | |||
| 9bc97a9316 | |||
| 94c780975e | |||
| e1c8822b9e | |||
| 62fd734007 | |||
| 351fc0c343 | |||
| a931ac436a | |||
| 4152069504 | |||
| 79fe134495 | |||
| 99e659ff54 | |||
| ff3f229871 | |||
| ea3f8743fd | |||
| 8cdb82df42 | |||
| bad462a228 | |||
| 61e42ba392 | |||
| 50053e7f27 | |||
| 33620ecc85 | |||
| dfd2a8fc48 | |||
| 7b4a8d7eb5 | |||
| 477b4c5447 | |||
| 31081269d3 | |||
| 285bf79370 | |||
| b9ce203487 | |||
| b53ed148f3 | |||
| c78171d01f | |||
| 73408f3f21 | |||
| 683be7155e | |||
| b5f1fdd981 | |||
| 3103e3dc4c | |||
| b40bf4c0ea | |||
| 620c2af356 | |||
| 33dcc080ea | |||
| a42aed3305 | |||
| 17d63dbc1f | |||
| 5ba3e43d31 | |||
| eebabf165b | |||
| 47e4798423 | |||
| 2ff74cb3fc | |||
| 1a845bc4ad | |||
| 5e34563f52 | |||
| ce610f33a2 | |||
| 4e76a18d5d | |||
| aa0ae48dda | |||
| 89ebab5df2 | |||
| df924a5e68 | |||
| bc1b10bc92 | |||
| 4723aae18c | |||
| 827b818b5d | |||
| e0e0687cd7 | |||
| 1684fc735a | |||
| b8fd2f3c79 | |||
| d3e7efcd66 | |||
| b335ef0531 | |||
| 1537cbc59c | |||
| 9e8bcbea04 | |||
| 3f52e87224 | |||
| 819056df9d | |||
| 3b0a758f97 | |||
| 0a4c04530a | |||
| a1a4275e8b | |||
| fb31bc1ca7 | |||
| 5ae9ac566f | |||
| 86603125ac | |||
| 2cc5c6fd45 | |||
| 0a81782b5d | |||
| 89d350a7d2 | |||
| c6ef0d57f1 | |||
| d9d9a54aa8 | |||
| e14a7c928c | |||
| 213b600b54 | |||
| a75ead5efd | |||
| 8904b2e046 | |||
| e8df845b3f | |||
| e4d512a293 | |||
| 3d12a6889b | |||
| fa41026f36 | |||
| 66d5d10b49 | |||
| f7ad77004d | |||
| d432a985ab | |||
| 5896723c60 | |||
| 128a7f252c | |||
| 543faa385b | |||
| 2f86b497d9 | |||
| 71d8a1ea1e | |||
| a5cca18dd1 | |||
| 8567eab09a | |||
| 83efd6b8a3 | |||
| d906acc0eb | |||
| aeb999b9ae | |||
| 4055c435a5 | |||
| 4c9be316dd | |||
| 133b681006 | |||
| 9d0cd1a188 | |||
| 9d98fe1b80 | |||
| 935a5cada8 | |||
| f32f14dc8f | |||
| 43899bbe0e | |||
| 3d32ee774e | |||
| 4eedb3a27d | |||
| b1f613071d | |||
| ab37801489 | |||
| d64c89d964 | |||
| 243ce6979b | |||
| 53c9143b64 | |||
| d52491c715 | |||
| 17f6d09935 | |||
| f1cf95b8dd | |||
| 17c0917dac | |||
| 2230abde1b | |||
| 83d5a770e8 | |||
| f7cbf157a9 | |||
| ea4cee3393 | |||
| 3d27dbdcbb | |||
| 82e5110733 | |||
| 7fbf7bbf42 | |||
| 2e12175c13 | |||
| a4519478f0 | |||
| ce8d5787f7 | |||
| 6d5389a90c | |||
| 649809a38f | |||
| 26392f8070 | |||
| 52ab6216c0 | |||
| 30a78f00bc | |||
| 3fcc84dde3 | |||
| 51fe063524 | |||
| 9c62792245 | |||
| 921e68107b | |||
| eeeed88425 | |||
| 308f28d2d4 | |||
| f1b48eb4f4 | |||
| c7cc795095 | |||
| 4693fd6200 | |||
| e4b847b345 | |||
| ad5311f393 | |||
| 5fea89ebd5 | |||
| 33423fe88d | |||
| 8ff91cc0da | |||
| 5aa4129a88 | |||
| de8716bcc2 | |||
| f76b89cf99 | |||
| 74e13aebca | |||
| 8639c308fa | |||
| 3cbf5f4942 | |||
| a607174f9a | |||
| 583ee0e4c3 | |||
| 9bede6900c | |||
| 182b134872 | |||
| 8a35e58987 | |||
| ab730709c7 | |||
| 0bdae22af7 | |||
| 9ce768c29a | |||
| b3601bd540 | |||
| d74bb131e1 | |||
| a5844c9bb8 | |||
| dfc47464d7 | |||
| 23f49f014b | |||
| 3e033aee0c | |||
| 8f0c798dc8 | |||
| 38d211b5e1 | |||
| 1e66a23dbc | |||
| 9c532dfada | |||
| c3333d4665 | |||
| 1ae721442c | |||
| 85c8648045 | |||
| 414e6614f1 | |||
| 8fcbb64a46 | |||
| ebd2b78f86 | |||
| a3562b354b | |||
| c69db6cf8f | |||
| 944a0b195e | |||
| 44b81c99ec | |||
| 2b34426c36 | |||
| 49486b83b0 | |||
| a164f7e2da | |||
| f2bb398ae6 | |||
| 48459e4268 | |||
| aff350f593 | |||
| e62db2841a | |||
| f7ef010fe1 | |||
| 5a33f09608 | |||
| ff91e9b253 | |||
| cfbd156adc | |||
| 218f66a08b | |||
| 5bbb4489b3 | |||
| e0b33ee8a6 | |||
| 62bcf4fde4 | |||
| 3e54e16bdc | |||
| 0521b63503 | |||
| 4be12292a0 | |||
| fabbc48b40 | |||
| 9c44d67f3b | |||
| f4eb63f871 | |||
| 90e2c8dd7f | |||
| cd2224b94d | |||
| d2c86f8594 | |||
| 01ef0bd2e9 | |||
| 8f42e128da | |||
| a786078747 | |||
| 2af51ef20f | |||
| 1f09990618 | |||
| 260f680c6c | |||
| 419a16ae58 | |||
| 8e8d95dd7f | |||
| f7158e834d | |||
| a3941b1dec | |||
| 77346d81ce | |||
| 1f078f533b | |||
| 9016344bb3 | |||
| 3d9c25494c | |||
| 2da7199a37 | |||
| 284c346828 | |||
| 43147a3a7a | |||
| c294a54c57 | |||
| c77d13292b | |||
| 919b449595 | |||
| d3b259cc09 | |||
| af7064ef89 | |||
| aeae32b1a2 | |||
| 3760b6820f | |||
| 818d4257c9 | |||
| d5cd9761dd | |||
| e6245c5c5a | |||
| 8e1d397587 | |||
| 33d925f631 | |||
| cb052b42a6 | |||
| 3f1a3fe65b | |||
| be13bb0013 | |||
| 18167f829a | |||
| 1d5df8e975 | |||
| d5ac7c031d | |||
| 1ac5ec1fc8 | |||
| 0923c7f4de | |||
| 52fcddf4f4 | |||
| 886159347a | |||
| e3c71efbeb | |||
| de6b32d236 | |||
| 9127e09815 | |||
| 98616da017 | |||
| ce1bd4c6b7 | |||
| fef1ba9993 | |||
| 88fb4c57e5 | |||
| 675bd39e8a | |||
| 2c85de3ab2 | |||
| 2c54f6fe32 | |||
| de483ac1aa | |||
| 490a2105c3 | |||
| cd14525839 | |||
| e2408989a4 | |||
| 37beb726e3 | |||
| eb94d2fcd0 | |||
| a59864201a | |||
| 5f578c884c | |||
| 5f2b8e0409 | |||
| 0d794b20bb | |||
| 4124019f41 | |||
| 80035661dc | |||
| 5292829e05 | |||
| b03ac1f614 | |||
| 449da4303e | |||
| 55edf1aad2 | |||
| ad6571a508 | |||
| 31e78d670d | |||
| b9285cf0e5 | |||
| 319b7cfc67 | |||
| e21f18a176 | |||
| 4ec7a02ccd | |||
| d7bb83ddcb | |||
| be8bb24390 | |||
| cfd67163a1 | |||
| b90528a7ae | |||
| 2b52415cae | |||
| 9679bd55c1 | |||
| 6256feb9db | |||
| 5a86083a08 | |||
| ff305781fb | |||
| 39e81b253b | |||
| 485f90f27a | |||
| cb14742442 | |||
| 21f46776c6 |
@@ -61,6 +61,7 @@ demos/**/_autosave-*
|
||||
# editor/OS fluff
|
||||
.*.swp
|
||||
*~
|
||||
.idea
|
||||
.DS_Store
|
||||
*.png
|
||||
*.kiface
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2015-2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
||||
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -34,7 +35,13 @@
|
||||
#include <wx/log.h>
|
||||
#include <wx/stdpaths.h>
|
||||
|
||||
#include <boost/version.hpp>
|
||||
|
||||
#if BOOST_VERSION >= 106800
|
||||
#include <boost/uuid/detail/sha1.hpp>
|
||||
#else
|
||||
#include <boost/uuid/sha1.hpp>
|
||||
#endif
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/ext.hpp>
|
||||
@@ -52,6 +59,7 @@
|
||||
|
||||
static wxCriticalSection lock3D_cache;
|
||||
|
||||
|
||||
static bool isSHA1Same( const unsigned char* shaA, const unsigned char* shaB )
|
||||
{
|
||||
for( int i = 0; i < 20; ++i )
|
||||
@@ -61,6 +69,7 @@ static bool isSHA1Same( const unsigned char* shaA, const unsigned char* shaB )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
static bool checkTag( const char* aTag, void* aPluginMgrPtr )
|
||||
{
|
||||
if( NULL == aTag || NULL == aPluginMgrPtr )
|
||||
@@ -71,6 +80,7 @@ static bool checkTag( const char* aTag, void* aPluginMgrPtr )
|
||||
return pp->CheckTag( aTag );
|
||||
}
|
||||
|
||||
|
||||
static const wxString sha1ToWXString( const unsigned char* aSHA1Sum )
|
||||
{
|
||||
unsigned char uc;
|
||||
@@ -151,14 +161,8 @@ void S3D_CACHE_ENTRY::SetSHA1( const unsigned char* aSHA1Sum )
|
||||
{
|
||||
if( NULL == aSHA1Sum )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * [BUG] NULL passed for aSHA1Sum";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * [BUG] NULL passed for aSHA1Sum",
|
||||
__FILE__, __FUNCTION__, __LINE__ );
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -186,6 +190,7 @@ S3D_CACHE::S3D_CACHE()
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
S3D_CACHE::~S3D_CACHE()
|
||||
{
|
||||
FlushCache();
|
||||
@@ -210,8 +215,8 @@ SCENEGRAPH* S3D_CACHE::load( const wxString& aModelFile, S3D_CACHE_ENTRY** aCach
|
||||
if( full3Dpath.empty() )
|
||||
{
|
||||
// the model cannot be found; we cannot proceed
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] could not find model '%s'\n",
|
||||
aModelFile.GetData() );
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * [3D model] could not find model '%s'\n",
|
||||
__FILE__, __FUNCTION__, __LINE__, aModelFile );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -294,15 +299,8 @@ SCENEGRAPH* S3D_CACHE::checkCache( const wxString& aFileName, S3D_CACHE_ENTRY**
|
||||
if( m_CacheMap.insert( std::pair< wxString, S3D_CACHE_ENTRY* >
|
||||
( aFileName, ep ) ).second == false )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * [BUG] duplicate entry in map file; key = '";
|
||||
ostr << aFileName.ToUTF8() << "'";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * [BUG] duplicate entry in map file; key = '%s'",
|
||||
__FILE__, __FUNCTION__, __LINE__, aFileName );
|
||||
|
||||
m_CacheList.pop_back();
|
||||
delete ep;
|
||||
@@ -325,15 +323,8 @@ SCENEGRAPH* S3D_CACHE::checkCache( const wxString& aFileName, S3D_CACHE_ENTRY**
|
||||
if( m_CacheMap.insert( std::pair< wxString, S3D_CACHE_ENTRY* >
|
||||
( aFileName, ep ) ).second == false )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * [BUG] duplicate entry in map file; key = '";
|
||||
ostr << aFileName.ToUTF8() << "'";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * [BUG] duplicate entry in map file; key = '%s'",
|
||||
__FILE__, __FUNCTION__, __LINE__, aFileName );
|
||||
|
||||
m_CacheList.pop_back();
|
||||
delete ep;
|
||||
@@ -364,28 +355,16 @@ bool S3D_CACHE::getSHA1( const wxString& aFileName, unsigned char* aSHA1Sum )
|
||||
{
|
||||
if( aFileName.empty() )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * [BUG] empty filename";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * [BUG] empty filename",
|
||||
__FILE__, __FUNCTION__, __LINE__ );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if( NULL == aSHA1Sum )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * [BUG] NULL pointer passed for aMD5Sum";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n * [BUG] NULL pointer passed for aMD5Sum",
|
||||
__FILE__, __FUNCTION__, __LINE__ );
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -434,17 +413,16 @@ bool S3D_CACHE::loadCacheData( S3D_CACHE_ENTRY* aCacheItem )
|
||||
|
||||
if( bname.empty() )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] cannot load cached model; no file hash available\n" );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE,
|
||||
" * [3D model] cannot load cached model; no file hash available" );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if( m_CacheDir.empty() )
|
||||
{
|
||||
wxString errmsg = "cannot load cached model; config directory unknown";
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] %s\n", errmsg.GetData() );
|
||||
wxLogTrace( MASK_3D_CACHE,
|
||||
" * [3D model] cannot load cached model; config directory unknown" );
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -454,8 +432,7 @@ bool S3D_CACHE::loadCacheData( S3D_CACHE_ENTRY* aCacheItem )
|
||||
if( !wxFileName::FileExists( fname ) )
|
||||
{
|
||||
wxString errmsg = "cannot open file";
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] %s '%s'\n",
|
||||
errmsg.GetData(), fname.GetData() );
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] %s '%s'", errmsg.GetData(), fname.GetData() );
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -475,28 +452,16 @@ bool S3D_CACHE::saveCacheData( S3D_CACHE_ENTRY* aCacheItem )
|
||||
{
|
||||
if( NULL == aCacheItem )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * NULL passed for aCacheItem";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * NULL passed for aCacheItem",
|
||||
__FILE__, __FUNCTION__, __LINE__ );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if( NULL == aCacheItem->sceneData )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * aCacheItem has no valid scene data";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * aCacheItem has no valid scene data",
|
||||
__FILE__, __FUNCTION__, __LINE__ );
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -505,17 +470,16 @@ bool S3D_CACHE::saveCacheData( S3D_CACHE_ENTRY* aCacheItem )
|
||||
|
||||
if( bname.empty() )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] cannot load cached model; no file hash available\n" );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE,
|
||||
" * [3D model] cannot load cached model; no file hash available" );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if( m_CacheDir.empty() )
|
||||
{
|
||||
wxString errmsg = "cannot load cached model; config directory unknown";
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] %s\n", errmsg.GetData() );
|
||||
wxLogTrace( MASK_3D_CACHE,
|
||||
" * [3D model] cannot load cached model; config directory unknown" );
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -526,9 +490,8 @@ bool S3D_CACHE::saveCacheData( S3D_CACHE_ENTRY* aCacheItem )
|
||||
{
|
||||
if( !wxFileName::FileExists( fname ) )
|
||||
{
|
||||
wxString errmsg = _( "path exists but is not a regular file" );
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] %s '%s'\n", errmsg.GetData(),
|
||||
fname.ToUTF8() );
|
||||
wxLogTrace( MASK_3D_CACHE, " * [3D model] path exists but is not a regular file '%s'",
|
||||
fname );
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -559,14 +522,9 @@ bool S3D_CACHE::Set3DConfigDir( const wxString& aConfigDir )
|
||||
|
||||
if( !cfgdir.DirExists() )
|
||||
{
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
wxString errmsg = _( "failed to create 3D configuration directory" );
|
||||
ostr << " * " << errmsg.ToUTF8() << "\n";
|
||||
errmsg = _( "config directory" );
|
||||
ostr << " * " << errmsg.ToUTF8() << " '";
|
||||
ostr << cfgdir.GetPath().ToUTF8() << "'";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
wxLogTrace( MASK_3D_CACHE,
|
||||
"%s:%s:%d\n * failed to create 3D configuration directory '%s'",
|
||||
__FILE__, __FUNCTION__, __LINE__, cfgdir.GetPath() );
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -577,15 +535,10 @@ bool S3D_CACHE::Set3DConfigDir( const wxString& aConfigDir )
|
||||
// inform the file resolver of the config directory
|
||||
if( !m_FNResolver->Set3DConfigDir( m_ConfigDir ) )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * could not set 3D Config Directory on filename resolver\n";
|
||||
ostr << " * config directory: '" << m_ConfigDir.ToUTF8() << "'";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE,
|
||||
"%s:%s:%d\n * could not set 3D Config Directory on filename resolver\n"
|
||||
" * config directory: '%s'",
|
||||
__FILE__, __FUNCTION__, __LINE__, m_ConfigDir );
|
||||
}
|
||||
|
||||
// 3D cache data must go to a user's cache directory;
|
||||
@@ -597,20 +550,20 @@ bool S3D_CACHE::Set3DConfigDir( const wxString& aConfigDir )
|
||||
// 3. MSWin: AppData\Local\kicad\3d
|
||||
wxString cacheDir;
|
||||
|
||||
#if defined(_WIN32)
|
||||
#if defined(_WIN32)
|
||||
wxStandardPaths::Get().UseAppInfo( wxStandardPaths::AppInfo_None );
|
||||
cacheDir = wxStandardPaths::Get().GetUserLocalDataDir();
|
||||
cacheDir.append( "\\kicad\\3d" );
|
||||
#elif defined(__APPLE)
|
||||
#elif defined(__APPLE)
|
||||
cacheDir = "${HOME}/Library/Caches/kicad/3d";
|
||||
#else // assume Linux
|
||||
#else // assume Linux
|
||||
cacheDir = ExpandEnvVarSubstitutions( "${XDG_CACHE_HOME}" );
|
||||
|
||||
if( cacheDir.empty() || cacheDir == "${XDG_CACHE_HOME}" )
|
||||
cacheDir = "${HOME}/.cache";
|
||||
|
||||
cacheDir.append( "/kicad/3d" );
|
||||
#endif
|
||||
#endif
|
||||
|
||||
cacheDir = ExpandEnvVarSubstitutions( cacheDir );
|
||||
cfgdir.Assign( cacheDir, "" );
|
||||
@@ -621,14 +574,8 @@ bool S3D_CACHE::Set3DConfigDir( const wxString& aConfigDir )
|
||||
|
||||
if( !cfgdir.DirExists() )
|
||||
{
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
wxString errmsg = "failed to create 3D cache directory";
|
||||
ostr << " * " << errmsg.ToUTF8() << "\n";
|
||||
errmsg = "cache directory";
|
||||
ostr << " * " << errmsg.ToUTF8() << " '";
|
||||
ostr << cfgdir.GetPath().ToUTF8() << "'";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * failed to create 3D cache directory '%s'",
|
||||
__FILE__, __FUNCTION__, __LINE__, cfgdir.GetPath() );
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -681,11 +628,8 @@ wxString S3D_CACHE::Get3DConfigDir( bool createDefault )
|
||||
|
||||
if( !cfgpath.DirExists() )
|
||||
{
|
||||
std::ostringstream ostr;
|
||||
wxString errmsg = "failed to create 3D configuration directory";
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * " << errmsg.ToUTF8();
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
wxLogTrace( MASK_3D_CACHE, "%s:%s:%d\n * failed to create 3D configuration directory '%s'",
|
||||
__FILE__, __FUNCTION__, __LINE__, cfgpath.GetPath() );
|
||||
|
||||
return wxT( "" );
|
||||
}
|
||||
@@ -788,14 +732,9 @@ S3DMODEL* S3D_CACHE::GetModel( const wxString& aModelFileName )
|
||||
|
||||
if( !cp )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
do {
|
||||
std::ostringstream ostr;
|
||||
ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||
ostr << " * [BUG] model loaded with no associated S3D_CACHE_ENTRY";
|
||||
wxLogTrace( MASK_3D_CACHE, "%s\n", ostr.str().c_str() );
|
||||
} while( 0 );
|
||||
#endif
|
||||
wxLogTrace( MASK_3D_CACHE,
|
||||
"%s:%s:%d\n * [BUG] model loaded with no associated S3D_CACHE_ENTRY",
|
||||
__FILE__, __FUNCTION__, __LINE__ );
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <wx/log.h>
|
||||
#include <wx/msgdlg.h>
|
||||
#include <pgm_base.h>
|
||||
#include <trace_helpers.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "3d_filename_resolver.h"
|
||||
@@ -317,7 +318,8 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
|
||||
wxString errmsg = "[3D File Resolver] No such path; ensure the environment var is defined";
|
||||
errmsg.append( "\n" );
|
||||
errmsg.append( tname );
|
||||
wxLogMessage( errmsg );
|
||||
errmsg.append( "\n" );
|
||||
wxLogTrace( tracePathsAndFiles, errmsg );
|
||||
}
|
||||
|
||||
return wxEmptyString;
|
||||
@@ -374,8 +376,7 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
|
||||
}
|
||||
|
||||
// ${ENV_VAR} paths have already been checked; skip them
|
||||
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" )
|
||||
|| sPL->m_alias.StartsWith( "$(" ) ) )
|
||||
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" ) || sPL->m_alias.StartsWith( "$(" ) ) )
|
||||
++sPL;
|
||||
|
||||
// at this point the filename must contain an alias or else it is invalid
|
||||
@@ -392,7 +393,8 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
|
||||
wxString errmsg = "[3D File Resolver] No such path";
|
||||
errmsg.append( "\n" );
|
||||
errmsg.append( tname );
|
||||
wxLogTrace( MASK_3D_RESOLVER, errmsg );
|
||||
errmsg.append( "\n" );
|
||||
wxLogTrace( tracePathsAndFiles, errmsg );
|
||||
}
|
||||
|
||||
return wxEmptyString;
|
||||
@@ -428,7 +430,8 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
|
||||
wxString errmsg = "[3D File Resolver] No such path; ensure the path alias is defined";
|
||||
errmsg.append( "\n" );
|
||||
errmsg.append( tname.substr( 1 ) );
|
||||
wxLogTrace( MASK_3D_RESOLVER, errmsg );
|
||||
errmsg.append( "\n" );
|
||||
wxLogTrace( tracePathsAndFiles, errmsg );
|
||||
}
|
||||
|
||||
return wxEmptyString;
|
||||
@@ -641,40 +644,13 @@ bool S3D_FILENAME_RESOLVER::writePathList( void )
|
||||
std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
|
||||
std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
|
||||
|
||||
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" )
|
||||
|| sPL->m_alias.StartsWith( "$(" ) ) )
|
||||
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" ) || sPL->m_alias.StartsWith( "$(" ) ) )
|
||||
++sPL;
|
||||
|
||||
wxFileName cfgpath( m_ConfigDir, S3D_RESOLVER_CONFIG );
|
||||
wxString cfgname = cfgpath.GetFullPath();
|
||||
std::ofstream cfgFile;
|
||||
|
||||
if( sPL == ePL )
|
||||
{
|
||||
wxMessageDialog md( NULL,
|
||||
_( "3D search path list is empty;\ncontinue to write empty file?" ),
|
||||
_( "Write 3D search path list" ), wxYES_NO );
|
||||
|
||||
if( md.ShowModal() == wxID_YES )
|
||||
{
|
||||
cfgFile.open( cfgname.ToUTF8(), std::ios_base::trunc );
|
||||
|
||||
if( !cfgFile.is_open() )
|
||||
{
|
||||
wxMessageBox( _( "Could not open configuration file" ),
|
||||
_( "Write 3D search path list" ) );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
cfgFile << "#V" << CFGFILE_VERSION << "\n";
|
||||
cfgFile.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
cfgFile.open( cfgname.ToUTF8(), std::ios_base::trunc );
|
||||
|
||||
if( !cfgFile.is_open() )
|
||||
|
||||
@@ -75,8 +75,7 @@ void DLG_3D_PATH_CONFIG::initDialog()
|
||||
size_t listsize = rpaths->size();
|
||||
size_t listidx = 0;
|
||||
|
||||
while( rI != rE && ( (*rI).m_alias.StartsWith( "${" )
|
||||
|| (*rI).m_alias.StartsWith( "$(" ) ) )
|
||||
while( rI != rE && ( (*rI).m_alias.StartsWith( "${" ) || (*rI).m_alias.StartsWith( "$(" ) ) )
|
||||
{
|
||||
++listidx;
|
||||
++rI;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
||||
* Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
||||
* Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -39,7 +39,7 @@
|
||||
#define ID_CFG_PATHS ( ID_SET_DIR + 1 )
|
||||
|
||||
|
||||
wxBEGIN_EVENT_TABLE( DLG_SELECT_3DMODEL, wxDialog )
|
||||
wxBEGIN_EVENT_TABLE( DLG_SELECT_3DMODEL, DIALOG_SHIM )
|
||||
EVT_DIRCTRL_SELECTIONCHANGED( ID_FILE_TREE, DLG_SELECT_3DMODEL::OnSelectionChanged )
|
||||
EVT_DIRCTRL_FILEACTIVATED( ID_FILE_TREE, DLG_SELECT_3DMODEL::OnFileActivated )
|
||||
EVT_CHOICE( ID_SET_DIR, DLG_SELECT_3DMODEL::SetRootDir )
|
||||
@@ -49,9 +49,9 @@ wxEND_EVENT_TABLE()
|
||||
|
||||
DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheManager,
|
||||
MODULE_3D_SETTINGS* aModelItem, wxString& prevModelSelectDir, int& prevModelWildcard ) :
|
||||
wxDialog( aParent, wxID_ANY, _( "Select 3D Model" ), wxDefaultPosition,
|
||||
wxSize( 500,200 ), wxCAPTION | wxRESIZE_BORDER | wxCLOSE_BOX
|
||||
| wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxSYSTEM_MENU ),
|
||||
DIALOG_SHIM( aParent, wxID_ANY, _( "Select 3D Model" ), wxDefaultPosition,
|
||||
wxSize( 500,200 ), wxCAPTION | wxRESIZE_BORDER | wxCLOSE_BOX
|
||||
| wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxSYSTEM_MENU ),
|
||||
m_model( aModelItem ), m_cache( aCacheManager ), m_previousDir( prevModelSelectDir ),
|
||||
m_previousFilterIndex( prevModelWildcard )
|
||||
{
|
||||
@@ -79,18 +79,16 @@ DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheMana
|
||||
|
||||
|
||||
m_FileTree->ShowHidden( false );
|
||||
m_FileTree->SetMinSize( wxSize( 300,100 ) );
|
||||
m_FileTree->SetMinSize( wxSize( 300, 400 ) );
|
||||
m_FileTree->SetLabel( wxT( "3D_MODEL_SELECTOR" ) );
|
||||
|
||||
bSizer2->Add( m_FileTree, 1, wxEXPAND | wxALL, 5 );
|
||||
bSizer1->Add( bSizer2, 1, wxEXPAND, 5 );
|
||||
bSizer1->Add( bSizer2, 3, wxEXPAND, 5 );
|
||||
|
||||
m_modelViewer = new C3D_MODEL_VIEWER( this,
|
||||
COGL_ATT_LIST::GetAttributesList( true ),
|
||||
m_cache );
|
||||
m_modelViewer->SetMinSize( wxSize( 512, 384 ) );
|
||||
m_modelViewer = new C3D_MODEL_VIEWER( this, COGL_ATT_LIST::GetAttributesList( true ), m_cache );
|
||||
m_modelViewer->SetMinSize( wxSize( 500, 400 ) );
|
||||
|
||||
bSizer1->Add( m_modelViewer, 0, wxCENTER, 5 );
|
||||
bSizer1->Add( m_modelViewer, 5, wxEXPAND | wxALL | wxCENTER, 5 );
|
||||
|
||||
// create the filter list
|
||||
if( NULL != m_cache )
|
||||
@@ -108,7 +106,6 @@ DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheMana
|
||||
|
||||
if( sL != eL )
|
||||
filter.Append( wxT( "|" ) );
|
||||
|
||||
}
|
||||
|
||||
if( !filter.empty() )
|
||||
@@ -137,7 +134,7 @@ DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheMana
|
||||
dirChoices->SetMinSize( wxSize( 320, 12 ) );
|
||||
|
||||
wxStaticText* stDirChoice = new wxStaticText( this, -1, _( "Paths:" ) );
|
||||
wxButton* cfgPaths = new wxButton( this, ID_CFG_PATHS, _( "Configure Path" ) );
|
||||
wxButton* cfgPaths = new wxButton( this, ID_CFG_PATHS, _( "Configure Paths" ) );
|
||||
hboxDirChoice->Add( stDirChoice, 0, wxALL | wxCENTER, 5 );
|
||||
hboxDirChoice->Add( dirChoices, 1, wxEXPAND | wxALL, 5 );
|
||||
hboxDirChoice->Add( cfgPaths, 0, wxALL, 5 );
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
||||
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -38,15 +39,17 @@
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/frame.h>
|
||||
|
||||
class MODULE_3D_SETTINGS;
|
||||
class S3D_CACHE;
|
||||
class S3D_FILENAME_RESOLVER;
|
||||
class C3D_MODEL_VIEWER;
|
||||
#include <dialog_shim.h>
|
||||
|
||||
class DLG_SELECT_3DMODEL : public wxDialog
|
||||
class MODULE_3D_SETTINGS;
|
||||
class S3D_CACHE;
|
||||
class S3D_FILENAME_RESOLVER;
|
||||
class C3D_MODEL_VIEWER;
|
||||
|
||||
class DLG_SELECT_3DMODEL : public DIALOG_SHIM
|
||||
{
|
||||
private:
|
||||
MODULE_3D_SETTINGS* m_model; // data for the selected model
|
||||
MODULE_3D_SETTINGS* m_model; // data for the selected model
|
||||
S3D_CACHE* m_cache; // cache manager
|
||||
S3D_FILENAME_RESOLVER* m_resolver; // 3D filename resolver
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ private:
|
||||
|
||||
void View3DLeft( wxCommandEvent& event ) override
|
||||
{
|
||||
m_previewPane->SetView3D( 'X' );
|
||||
m_previewPane->SetView3D( GR_KB_SHIFT + 'X' );
|
||||
}
|
||||
|
||||
void View3DFront( wxCommandEvent& event ) override
|
||||
@@ -163,7 +163,7 @@ private:
|
||||
|
||||
void View3DTop( wxCommandEvent& event ) override
|
||||
{
|
||||
m_previewPane->SetView3D( 'z' );
|
||||
m_previewPane->SetView3D( 'Z' );
|
||||
}
|
||||
|
||||
void View3DUpdate( wxCommandEvent& event ) override
|
||||
@@ -174,17 +174,17 @@ private:
|
||||
|
||||
void View3DRight( wxCommandEvent& event ) override
|
||||
{
|
||||
m_previewPane->SetView3D( 'x' );
|
||||
m_previewPane->SetView3D( 'X' );
|
||||
}
|
||||
|
||||
void View3DBack( wxCommandEvent& event ) override
|
||||
{
|
||||
m_previewPane->SetView3D( 'y' );
|
||||
m_previewPane->SetView3D( GR_KB_SHIFT + 'Y' );
|
||||
}
|
||||
|
||||
void View3DBottom( wxCommandEvent& event ) override
|
||||
{
|
||||
m_previewPane->SetView3D( 'Z' );
|
||||
m_previewPane->SetView3D( GR_KB_SHIFT + 'Z' );
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <class_board.h>
|
||||
#include <3d_math.h>
|
||||
#include "3d_fastmath.h"
|
||||
#include <geometry/geometry_utils.h>
|
||||
|
||||
/**
|
||||
* Trace mask used to enable or disable the trace output of this class.
|
||||
@@ -62,7 +63,7 @@ CINFO3D_VISU::CINFO3D_VISU() :
|
||||
|
||||
m_boardPos = wxPoint();
|
||||
m_boardSize = wxSize();
|
||||
m_boardCenter = SFVEC3F();
|
||||
m_boardCenter = SFVEC3F( 0.0f );
|
||||
|
||||
m_boardBoudingBox.Reset();
|
||||
m_board2dBBox3DU.Reset();
|
||||
@@ -243,37 +244,19 @@ int CINFO3D_VISU::GetCopperThicknessBIU() const
|
||||
return COPPER_THICKNESS;
|
||||
}
|
||||
|
||||
// Constant factors used for number of segments approximation calcs
|
||||
#define MIN_SEG_PER_CIRCLE 12
|
||||
#define MAX_SEG_PER_CIRCLE 48
|
||||
|
||||
#define SEG_MIN_FACTOR_BIU ( 0.10f * IU_PER_MM )
|
||||
#define SEG_MAX_FACTOR_BIU ( 6.00f * IU_PER_MM )
|
||||
|
||||
|
||||
unsigned int CINFO3D_VISU::GetNrSegmentsCircle( float aDiameter3DU ) const
|
||||
{
|
||||
wxASSERT( aDiameter3DU > 0.0f );
|
||||
|
||||
unsigned int result = mapf( aDiameter3DU,
|
||||
m_calc_seg_min_factor3DU, m_calc_seg_max_factor3DU,
|
||||
(float)MIN_SEG_PER_CIRCLE, (float)MAX_SEG_PER_CIRCLE );
|
||||
wxASSERT( result > 1 );
|
||||
|
||||
return result;
|
||||
return GetNrSegmentsCircle( (int)( aDiameter3DU / m_biuTo3Dunits ) );
|
||||
}
|
||||
|
||||
|
||||
unsigned int CINFO3D_VISU::GetNrSegmentsCircle( int aDiameterBUI ) const
|
||||
unsigned int CINFO3D_VISU::GetNrSegmentsCircle( int aDiameterBIU ) const
|
||||
{
|
||||
wxASSERT( aDiameterBUI > 0 );
|
||||
wxASSERT( aDiameterBIU > 0 );
|
||||
|
||||
unsigned int result = mapf( (float)aDiameterBUI,
|
||||
(float)SEG_MIN_FACTOR_BIU, (float)SEG_MAX_FACTOR_BIU,
|
||||
(float)MIN_SEG_PER_CIRCLE, (float)MAX_SEG_PER_CIRCLE );
|
||||
wxASSERT( result > 1 );
|
||||
|
||||
return result;
|
||||
return GetArcToSegmentCount( aDiameterBIU / 2, ARC_HIGH_DEF, 360.0 );
|
||||
}
|
||||
|
||||
|
||||
@@ -281,7 +264,7 @@ double CINFO3D_VISU::GetCircleCorrectionFactor( int aNrSides ) const
|
||||
{
|
||||
wxASSERT( aNrSides >= 3 );
|
||||
|
||||
return 1.0 / cos( M_PI / ( (double)aNrSides * 2.0 ) );
|
||||
return GetCircletoPolyCorrectionFactor( aNrSides );
|
||||
}
|
||||
|
||||
|
||||
@@ -318,10 +301,6 @@ void CINFO3D_VISU::InitSettings( REPORTER *aStatusTextReporter )
|
||||
// Calculate the convertion to apply to all positions.
|
||||
m_biuTo3Dunits = RANGE_SCALE_3D / std::max( m_boardSize.x, m_boardSize.y );
|
||||
|
||||
// Calculate factors for cicle segment approximation
|
||||
m_calc_seg_min_factor3DU = (float)( SEG_MIN_FACTOR_BIU * m_biuTo3Dunits );
|
||||
m_calc_seg_max_factor3DU = (float)( SEG_MAX_FACTOR_BIU * m_biuTo3Dunits );
|
||||
|
||||
m_epoxyThickness3DU = m_board->GetDesignSettings().GetBoardThickness() *
|
||||
m_biuTo3Dunits;
|
||||
|
||||
|
||||
@@ -394,10 +394,10 @@ class CINFO3D_VISU
|
||||
|
||||
/**
|
||||
* @brief GetNrSegmentsCircle
|
||||
* @param aDiameterBUI: diameter in board unities
|
||||
* @param aDiameterBIU: diameter in board internal units
|
||||
* @return number of sides that should be used in that circle
|
||||
*/
|
||||
unsigned int GetNrSegmentsCircle( int aDiameterBUI ) const;
|
||||
unsigned int GetNrSegmentsCircle( int aDiameterBIU ) const;
|
||||
|
||||
/**
|
||||
* @brief GetCircleCorrectionFactor - computes a angle correction
|
||||
@@ -427,11 +427,11 @@ class CINFO3D_VISU
|
||||
|
||||
void createNewPad( const D_PAD* aPad,
|
||||
CGENERICCONTAINER2D *aDstContainer,
|
||||
const wxSize &aInflateValue ) const;
|
||||
wxSize aInflateValue ) const;
|
||||
|
||||
void createNewPadWithClearance( const D_PAD *aPad,
|
||||
CGENERICCONTAINER2D *aDstContainer,
|
||||
int aClearanceValue ) const;
|
||||
wxSize aClearanceValue ) const;
|
||||
|
||||
COBJECT2D *createNewPadDrill( const D_PAD* aPad, int aInflateValue );
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include "../3d_rendering/3d_render_raytracing/accelerators/ccontainer2d.h"
|
||||
#include "../3d_rendering/3d_render_raytracing/shapes3D/ccylinder.h"
|
||||
#include "../3d_rendering/3d_render_raytracing/shapes3D/clayeritem.h"
|
||||
#include <openmp_mutex.h>
|
||||
|
||||
#include <class_board.h>
|
||||
#include <class_module.h>
|
||||
#include <class_pad.h>
|
||||
@@ -66,7 +66,7 @@ static const CBBOX2D *s_boardBBox3DU = NULL;
|
||||
static const BOARD_ITEM *s_boardItem = NULL;
|
||||
|
||||
// This is a call back function, used by DrawGraphicText to draw the 3D text shape:
|
||||
void addTextSegmToContainer( int x0, int y0, int xf, int yf )
|
||||
void addTextSegmToContainer( int x0, int y0, int xf, int yf, void* aData )
|
||||
{
|
||||
wxASSERT( s_boardBBox3DU != NULL );
|
||||
wxASSERT( s_dstcontainer != NULL );
|
||||
@@ -297,10 +297,14 @@ COBJECT2D *CINFO3D_VISU::createNewTrack( const TRACK* aTrack,
|
||||
// board_items_to_polygon_shape_transform.cpp
|
||||
void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
CGENERICCONTAINER2D *aDstContainer,
|
||||
int aClearanceValue ) const
|
||||
wxSize aClearanceValue ) const
|
||||
{
|
||||
const int dx = (aPad->GetSize().x / 2) + aClearanceValue;
|
||||
const int dy = (aPad->GetSize().y / 2) + aClearanceValue;
|
||||
// note: for most of shapes, aClearanceValue.x = aClearanceValue.y
|
||||
// only rectangular and oval shapes can have different values
|
||||
// when drawn on the solder paste layer, because we can have a margin that is a
|
||||
// percent of pad size
|
||||
const int dx = (aPad->GetSize().x / 2) + aClearanceValue.x;
|
||||
const int dy = (aPad->GetSize().y / 2) + aClearanceValue.y;
|
||||
|
||||
if( !dx || !dy )
|
||||
{
|
||||
@@ -328,7 +332,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
|
||||
case PAD_SHAPE_OVAL:
|
||||
{
|
||||
if( abs( dx - dy ) == 0 )
|
||||
if( dx == dy )
|
||||
{
|
||||
// The segment object cannot store start and end the same position,
|
||||
// so add a circle instead
|
||||
@@ -351,7 +355,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
shape_offset.y = dy - dx;
|
||||
iwidth = dx * 2;
|
||||
}
|
||||
else //if( dy <= dx )
|
||||
else //if( dy < dx )
|
||||
{
|
||||
shape_offset.x = dy - dx;
|
||||
iwidth = dy * 2;
|
||||
@@ -374,8 +378,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
}
|
||||
else
|
||||
{
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( start3DU,
|
||||
end3DU,
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( start3DU, end3DU,
|
||||
iwidth * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
}
|
||||
@@ -386,7 +389,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
case PAD_SHAPE_TRAPEZOID:
|
||||
case PAD_SHAPE_RECT:
|
||||
{
|
||||
// https://github.com/KiCad/kicad-source-mirror/blob/0cab3e47ad8097db7b898b3cef2cf9b235318ca3/pcbnew/board_items_to_polygon_shape_transform.cpp#L613
|
||||
// see pcbnew/board_items_to_polygon_shape_transform.cpp
|
||||
|
||||
wxPoint corners[4];
|
||||
aPad->BuildPadPolygon( corners, wxSize( 0, 0), aPad->GetOrientation() );
|
||||
@@ -415,38 +418,34 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
*aPad ) );
|
||||
|
||||
// Add the PAD contours
|
||||
// !TODO: check the corners because it cannot add
|
||||
// roundsegments that are in the same start and end position
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[0],
|
||||
corners3DU[1],
|
||||
aClearanceValue * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[1],
|
||||
corners3DU[2],
|
||||
aClearanceValue * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[2],
|
||||
corners3DU[3],
|
||||
aClearanceValue * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[3],
|
||||
corners3DU[0],
|
||||
aClearanceValue * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
// Round segments cannot have 0-length elements, so we approximate them
|
||||
// as a small circle
|
||||
for( int i = 1; i <= 4; i++ )
|
||||
{
|
||||
if( Is_segment_a_circle( corners3DU[i - 1], corners3DU[i & 3] ) )
|
||||
{
|
||||
aDstContainer->Add( new CFILLEDCIRCLE2D( corners3DU[i - 1],
|
||||
aClearanceValue.x * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[i - 1],
|
||||
corners3DU[i & 3],
|
||||
aClearanceValue.x * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case PAD_SHAPE_ROUNDRECT:
|
||||
{
|
||||
const int pad_radius = aPad->GetRoundRectCornerRadius();
|
||||
const int rounding_radius = pad_radius + aClearanceValue;
|
||||
|
||||
wxSize shapesize( aPad->GetSize() );
|
||||
shapesize.x += aClearanceValue * 2;
|
||||
shapesize.y += aClearanceValue * 2;
|
||||
shapesize.x += aClearanceValue.x * 2;
|
||||
shapesize.y += aClearanceValue.y * 2;
|
||||
|
||||
int rounding_radius = aPad->GetRoundRectCornerRadius( shapesize );
|
||||
|
||||
wxPoint corners[4];
|
||||
|
||||
@@ -471,27 +470,24 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
*aPad ) );
|
||||
|
||||
// Add the PAD contours
|
||||
// !TODO: check the corners because it cannot add
|
||||
// roundsegments that are in the same start and end position
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[0],
|
||||
corners3DU[1],
|
||||
rounding_radius * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[1],
|
||||
corners3DU[2],
|
||||
rounding_radius * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[2],
|
||||
corners3DU[3],
|
||||
rounding_radius * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[3],
|
||||
corners3DU[0],
|
||||
rounding_radius * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
// Round segments cannot have 0-length elements, so we approximate them
|
||||
// as a small circle
|
||||
for( int i = 1; i <= 4; i++ )
|
||||
{
|
||||
if( Is_segment_a_circle( corners3DU[i - 1], corners3DU[i & 3] ) )
|
||||
{
|
||||
aDstContainer->Add( new CFILLEDCIRCLE2D( corners3DU[i - 1],
|
||||
rounding_radius * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[i - 1],
|
||||
corners3DU[i & 3],
|
||||
rounding_radius * 2.0f * m_biuTo3Dunits,
|
||||
*aPad ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -501,12 +497,8 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
|
||||
polyList.Append( aPad->GetCustomShapeAsPolygon() );
|
||||
aPad->CustomShapeAsPolygonToBoardPosition( &polyList, aPad->ShapePos(), aPad->GetOrientation() );
|
||||
|
||||
if( aClearanceValue )
|
||||
polyList.Inflate( aClearanceValue, 32 );
|
||||
|
||||
// This convert the poly in outline and holes
|
||||
polyList.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||
polyList.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
|
||||
if( aClearanceValue.x )
|
||||
polyList.Inflate( aClearanceValue.x, 32 );
|
||||
|
||||
// Add the PAD polygon
|
||||
Convert_shape_line_polygon_to_triangles( polyList, *aDstContainer, m_biuTo3Dunits, *aPad );
|
||||
@@ -576,7 +568,7 @@ COBJECT2D *CINFO3D_VISU::createNewPadDrill( const D_PAD* aPad, int aInflateValue
|
||||
// board_items_to_polygon_shape_transform.cpp
|
||||
void CINFO3D_VISU::createNewPad( const D_PAD* aPad,
|
||||
CGENERICCONTAINER2D *aDstContainer,
|
||||
const wxSize &aInflateValue ) const
|
||||
wxSize aInflateValue ) const
|
||||
{
|
||||
switch( aPad->GetShape() )
|
||||
{
|
||||
@@ -584,7 +576,7 @@ void CINFO3D_VISU::createNewPad( const D_PAD* aPad,
|
||||
case PAD_SHAPE_OVAL:
|
||||
case PAD_SHAPE_ROUNDRECT:
|
||||
case PAD_SHAPE_CUSTOM:
|
||||
createNewPadWithClearance( aPad, aDstContainer, aInflateValue.x );
|
||||
createNewPadWithClearance( aPad, aDstContainer, aInflateValue );
|
||||
break;
|
||||
|
||||
case PAD_SHAPE_TRAPEZOID:
|
||||
@@ -760,8 +752,9 @@ void CINFO3D_VISU::AddShapeWithClearanceToContainer( const DRAWSEGMENT* aDrawSeg
|
||||
PCB_LAYER_ID aLayerId,
|
||||
int aClearanceValue )
|
||||
{
|
||||
// The full width of the lines to create:
|
||||
const int linewidth = aDrawSegment->GetWidth() + (2 * aClearanceValue);
|
||||
// The full width of the lines to create
|
||||
// The extra 1 protects the inner/outer radius values from degeneracy
|
||||
const int linewidth = aDrawSegment->GetWidth() + (2 * aClearanceValue) + 1;
|
||||
|
||||
switch( aDrawSegment->GetShape() )
|
||||
{
|
||||
@@ -827,11 +820,8 @@ void CINFO3D_VISU::AddShapeWithClearanceToContainer( const DRAWSEGMENT* aDrawSeg
|
||||
|
||||
aDrawSegment->TransformShapeWithClearanceToPolygon( polyList, aClearanceValue,
|
||||
segcountforcircle, correctionFactor );
|
||||
// This convert the poly in outline and holes
|
||||
// Note: This two sequencial calls are need in order to get
|
||||
// the triangulation function to work properly.
|
||||
|
||||
polyList.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||
polyList.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
|
||||
|
||||
if( polyList.IsEmpty() ) // Just for caution
|
||||
break;
|
||||
@@ -858,24 +848,14 @@ void CINFO3D_VISU::AddSolidAreasShapesToContainer( const ZONE_CONTAINER* aZoneCo
|
||||
PCB_LAYER_ID aLayerId )
|
||||
{
|
||||
// Copy the polys list because we have to simplify it
|
||||
SHAPE_POLY_SET polyList = SHAPE_POLY_SET(aZoneContainer->GetFilledPolysList());
|
||||
SHAPE_POLY_SET polyList = SHAPE_POLY_SET( aZoneContainer->GetFilledPolysList(), true );
|
||||
|
||||
// This convert the poly in outline and holes
|
||||
|
||||
// Note: This two sequencial calls are need in order to get
|
||||
// the triangulation function to work properly.
|
||||
polyList.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||
polyList.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
|
||||
|
||||
if( polyList.IsEmpty() )
|
||||
return;
|
||||
|
||||
Convert_shape_line_polygon_to_triangles( polyList,
|
||||
*aDstContainer,
|
||||
m_biuTo3Dunits,
|
||||
*aZoneContainer );
|
||||
|
||||
|
||||
// add filled areas outlines, which are drawn with thick lines segments
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
for( int i = 0; i < polyList.OutlineCount(); ++i )
|
||||
@@ -893,10 +873,11 @@ void CINFO3D_VISU::AddSolidAreasShapesToContainer( const ZONE_CONTAINER* aZoneCo
|
||||
|
||||
if( Is_segment_a_circle( start3DU, end3DU ) )
|
||||
{
|
||||
aDstContainer->Add( new CFILLEDCIRCLE2D( start3DU,
|
||||
(aZoneContainer->GetMinThickness() / 2) *
|
||||
m_biuTo3Dunits,
|
||||
*aZoneContainer ) );
|
||||
float radius = (aZoneContainer->GetMinThickness() / 2) * m_biuTo3Dunits;
|
||||
|
||||
if( radius > 0.0 ) // degenerated circles crash 3D viewer
|
||||
aDstContainer->Add( new CFILLEDCIRCLE2D( start3DU, radius ,
|
||||
*aZoneContainer ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -922,11 +903,12 @@ void CINFO3D_VISU::AddSolidAreasShapesToContainer( const ZONE_CONTAINER* aZoneCo
|
||||
|
||||
if( Is_segment_a_circle( start3DU, end3DU ) )
|
||||
{
|
||||
aDstContainer->Add(
|
||||
new CFILLEDCIRCLE2D( start3DU,
|
||||
(aZoneContainer->GetMinThickness() / 2) *
|
||||
m_biuTo3Dunits,
|
||||
*aZoneContainer ) );
|
||||
float radius = (aZoneContainer->GetMinThickness() / 2) * m_biuTo3Dunits;
|
||||
|
||||
if( radius > 0.0 ) // degenerated circles crash 3D viewer
|
||||
aDstContainer->Add(
|
||||
new CFILLEDCIRCLE2D( start3DU, radius,
|
||||
*aZoneContainer ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include "../3d_rendering/3d_render_raytracing/accelerators/ccontainer2d.h"
|
||||
#include "../3d_rendering/3d_render_raytracing/shapes3D/ccylinder.h"
|
||||
#include "../3d_rendering/3d_render_raytracing/shapes3D/clayeritem.h"
|
||||
#include <openmp_mutex.h>
|
||||
|
||||
#include <class_board.h>
|
||||
#include <class_module.h>
|
||||
#include <class_pad.h>
|
||||
@@ -52,6 +52,9 @@
|
||||
#include <trigo.h>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
|
||||
#include <profile.h>
|
||||
|
||||
@@ -788,36 +791,43 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
|
||||
|
||||
// Add zones objects
|
||||
// /////////////////////////////////////////////////////////////////////
|
||||
for( unsigned int lIdx = 0; lIdx < layer_id.size(); ++lIdx )
|
||||
std::atomic<size_t> nextZone( 0 );
|
||||
std::atomic<size_t> threadsFinished( 0 );
|
||||
|
||||
size_t parallelThreadCount = std::max<size_t>( std::thread::hardware_concurrency(), 2 );
|
||||
for( size_t ii = 0; ii < parallelThreadCount; ++ii )
|
||||
{
|
||||
const PCB_LAYER_ID curr_layer_id = layer_id[lIdx];
|
||||
|
||||
if( aStatusTextReporter )
|
||||
aStatusTextReporter->Report( wxString::Format( _( "Create zones of layer %s" ),
|
||||
LSET::Name( curr_layer_id ) ) );
|
||||
|
||||
wxASSERT( m_layers_container2D.find( curr_layer_id ) != m_layers_container2D.end() );
|
||||
|
||||
CBVHCONTAINER2D *layerContainer = m_layers_container2D[curr_layer_id];
|
||||
|
||||
// ADD COPPER ZONES
|
||||
for( int ii = 0; ii < m_board->GetAreaCount(); ++ii )
|
||||
std::thread t = std::thread( [&]()
|
||||
{
|
||||
const ZONE_CONTAINER* zone = m_board->GetArea( ii );
|
||||
const PCB_LAYER_ID zonelayer = zone->GetLayer();
|
||||
|
||||
if( zonelayer == curr_layer_id )
|
||||
for( size_t areaId = nextZone.fetch_add( 1 );
|
||||
areaId < static_cast<size_t>( m_board->GetAreaCount() );
|
||||
areaId = nextZone.fetch_add( 1 ) )
|
||||
{
|
||||
AddSolidAreasShapesToContainer( zone,
|
||||
layerContainer,
|
||||
curr_layer_id );
|
||||
const ZONE_CONTAINER* zone = m_board->GetArea( areaId );
|
||||
|
||||
if( zone == nullptr )
|
||||
break;
|
||||
|
||||
auto layerContainer = m_layers_container2D.find( zone->GetLayer() );
|
||||
|
||||
if( layerContainer != m_layers_container2D.end() )
|
||||
AddSolidAreasShapesToContainer( zone, layerContainer->second,
|
||||
zone->GetLayer() );
|
||||
}
|
||||
}
|
||||
|
||||
threadsFinished++;
|
||||
} );
|
||||
|
||||
t.detach();
|
||||
}
|
||||
|
||||
while( threadsFinished < parallelThreadCount )
|
||||
std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) );
|
||||
|
||||
}
|
||||
|
||||
#ifdef PRINT_STATISTICS_3D_VIEWER
|
||||
printf( "T13: %.3f ms\n", (float)( GetRunningMicroSecs() - start_Time ) / 1e3 );
|
||||
printf( "fill zones T13: %.3f ms\n", (float)( GetRunningMicroSecs() - start_Time ) / 1e3 );
|
||||
start_Time = GetRunningMicroSecs();
|
||||
#endif
|
||||
|
||||
@@ -825,29 +835,18 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
|
||||
GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
|
||||
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
|
||||
{
|
||||
// Add zones poly contourns
|
||||
// /////////////////////////////////////////////////////////////////////
|
||||
for( unsigned int lIdx = 0; lIdx < layer_id.size(); ++lIdx )
|
||||
// ADD COPPER ZONES
|
||||
for( int ii = 0; ii < m_board->GetAreaCount(); ++ii )
|
||||
{
|
||||
const PCB_LAYER_ID curr_layer_id = layer_id[lIdx];
|
||||
const ZONE_CONTAINER* zone = m_board->GetArea( ii );
|
||||
|
||||
wxASSERT( m_layers_poly.find( curr_layer_id ) != m_layers_poly.end() );
|
||||
if( zone == nullptr )
|
||||
break;
|
||||
|
||||
SHAPE_POLY_SET *layerPoly = m_layers_poly[curr_layer_id];
|
||||
auto layerContainer = m_layers_poly.find( zone->GetLayer() );
|
||||
|
||||
// ADD COPPER ZONES
|
||||
for( int ii = 0; ii < m_board->GetAreaCount(); ++ii )
|
||||
{
|
||||
const ZONE_CONTAINER* zone = m_board->GetArea( ii );
|
||||
const LAYER_NUM zonelayer = zone->GetLayer();
|
||||
|
||||
if( zonelayer == curr_layer_id )
|
||||
{
|
||||
zone->TransformSolidAreasShapesToPolygonSet( *layerPoly,
|
||||
segcountforcircle,
|
||||
correctionFactor );
|
||||
}
|
||||
}
|
||||
if( layerContainer != m_layers_poly.end() )
|
||||
zone->TransformSolidAreasShapesToPolygonSet( *layerContainer->second, segcountforcircle, correctionFactor );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -865,22 +864,35 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
|
||||
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
|
||||
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
|
||||
{
|
||||
const int nLayers = layer_id.size();
|
||||
std::atomic<size_t> nextItem( 0 );
|
||||
std::atomic<size_t> threadsFinished( 0 );
|
||||
|
||||
#pragma omp parallel for
|
||||
for( signed int lIdx = 0; lIdx < nLayers; ++lIdx )
|
||||
size_t parallelThreadCount = std::min<size_t>(
|
||||
std::max<size_t>( std::thread::hardware_concurrency(), 2 ),
|
||||
layer_id.size() );
|
||||
for( size_t ii = 0; ii < parallelThreadCount; ++ii )
|
||||
{
|
||||
const PCB_LAYER_ID curr_layer_id = layer_id[lIdx];
|
||||
std::thread t = std::thread( [&nextItem, &threadsFinished, &layer_id, this]()
|
||||
{
|
||||
for( size_t i = nextItem.fetch_add( 1 );
|
||||
i < layer_id.size();
|
||||
i = nextItem.fetch_add( 1 ) )
|
||||
{
|
||||
auto layerPoly = m_layers_poly.find( layer_id[i] );
|
||||
|
||||
wxASSERT( m_layers_poly.find( curr_layer_id ) != m_layers_poly.end() );
|
||||
if( layerPoly != m_layers_poly.end() )
|
||||
// This will make a union of all added contours
|
||||
layerPoly->second->Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||
}
|
||||
|
||||
SHAPE_POLY_SET *layerPoly = m_layers_poly[curr_layer_id];
|
||||
threadsFinished++;
|
||||
} );
|
||||
|
||||
wxASSERT( layerPoly != NULL );
|
||||
|
||||
// This will make a union of all added contourns
|
||||
layerPoly->Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||
t.detach();
|
||||
}
|
||||
|
||||
while( threadsFinished < parallelThreadCount )
|
||||
std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) );
|
||||
}
|
||||
|
||||
#ifdef PRINT_STATISTICS_3D_VIEWER
|
||||
|
||||
@@ -52,8 +52,19 @@ void CINFO3D_VISU::buildPadShapePolygon( const D_PAD* aPad,
|
||||
case PAD_SHAPE_CIRCLE:
|
||||
case PAD_SHAPE_OVAL:
|
||||
case PAD_SHAPE_ROUNDRECT:
|
||||
aPad->TransformShapeWithClearanceToPolygon( aCornerBuffer, aInflateValue.x,
|
||||
{
|
||||
// We are using TransformShapeWithClearanceToPolygon to build the shape.
|
||||
// Currently, this method uses only the same inflate value for X and Y dirs.
|
||||
// so because here this is not the case, we use a inflated dummy pad to build
|
||||
// the polygonal shape
|
||||
// TODO: remove this dummy pad when TransformShapeWithClearanceToPolygon will use
|
||||
// a wxSize to inflate the pad size
|
||||
D_PAD dummy( *aPad );
|
||||
wxSize new_size = aPad->GetSize() + aInflateValue + aInflateValue;
|
||||
dummy.SetSize( new_size );
|
||||
dummy.TransformShapeWithClearanceToPolygon( aCornerBuffer, 0,
|
||||
aSegmentsPerCircle, aCorrectionFactor );
|
||||
}
|
||||
break;
|
||||
|
||||
case PAD_SHAPE_TRAPEZOID:
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#include <class_board.h>
|
||||
#include "status_text_reporter.h"
|
||||
#include <gl_context_mgr.h>
|
||||
#include <profile.h> // To use GetRunningMicroSecs or an other profiling utility
|
||||
#include <profile.h> // To use GetRunningMicroSecs or another profiling utility
|
||||
#include <bitmaps.h>
|
||||
#include <hotkeys_basic.h>
|
||||
#include <menus_helpers.h>
|
||||
@@ -701,27 +701,27 @@ void EDA_3D_CANVAS::OnPopUpMenu( wxCommandEvent &event )
|
||||
break;
|
||||
|
||||
case ID_POPUP_VIEW_XPOS:
|
||||
key = 'x';
|
||||
break;
|
||||
|
||||
case ID_POPUP_VIEW_XNEG:
|
||||
key = 'X';
|
||||
break;
|
||||
|
||||
case ID_POPUP_VIEW_YPOS:
|
||||
key = 'y';
|
||||
case ID_POPUP_VIEW_XNEG:
|
||||
key = GR_KB_SHIFT + 'X';
|
||||
break;
|
||||
|
||||
case ID_POPUP_VIEW_YNEG:
|
||||
case ID_POPUP_VIEW_YPOS:
|
||||
key = 'Y';
|
||||
break;
|
||||
|
||||
case ID_POPUP_VIEW_YNEG:
|
||||
key = GR_KB_SHIFT + 'Y';
|
||||
break;
|
||||
|
||||
case ID_POPUP_VIEW_ZPOS:
|
||||
key = 'z';
|
||||
key = 'Z';
|
||||
break;
|
||||
|
||||
case ID_POPUP_VIEW_ZNEG:
|
||||
key = 'Z';
|
||||
key = GR_KB_SHIFT + 'Z';
|
||||
break;
|
||||
|
||||
case ID_POPUP_MOVE3D_LEFT:
|
||||
@@ -758,12 +758,27 @@ void EDA_3D_CANVAS::OnCharHook( wxKeyEvent &event )
|
||||
void EDA_3D_CANVAS::OnKeyEvent( wxKeyEvent& event )
|
||||
{
|
||||
//wxLogTrace( m_logTrace, wxT( "EDA_3D_CANVAS::OnKeyEvent" ) );
|
||||
int localkey = event.GetKeyCode();
|
||||
|
||||
// Use only upper char values in comparisons
|
||||
// (the Shift modifier is a separate attribute)
|
||||
if( (localkey >= 'a') && (localkey <= 'z') )
|
||||
localkey += 'A' - 'a';
|
||||
|
||||
if( m_camera_is_moving )
|
||||
return;
|
||||
|
||||
SetView3D( event.GetKeyCode() );
|
||||
event.Skip();
|
||||
if( event.ShiftDown() )
|
||||
localkey |= GR_KB_SHIFT;
|
||||
|
||||
if( event.ControlDown() )
|
||||
localkey |= GR_KB_CTRL;
|
||||
|
||||
if( event.AltDown() )
|
||||
localkey |= GR_KB_ALT;
|
||||
|
||||
if( !SetView3D( localkey ) )
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
@@ -875,54 +890,55 @@ void EDA_3D_CANVAS::move_pivot_based_on_cur_mouse_position()
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_CANVAS::SetView3D( int keycode )
|
||||
bool EDA_3D_CANVAS::SetView3D( int aKeycode )
|
||||
{
|
||||
if( m_camera_is_moving )
|
||||
return;
|
||||
return false;
|
||||
|
||||
const float delta_move = m_delta_move_step_factor * m_settings.CameraGet().ZoomGet();
|
||||
const float arrow_moving_time_speed = 8.0f;
|
||||
bool handled = false;
|
||||
|
||||
switch( keycode )
|
||||
switch( aKeycode )
|
||||
{
|
||||
case WXK_SPACE:
|
||||
move_pivot_based_on_cur_mouse_position();
|
||||
return;
|
||||
return true;
|
||||
|
||||
case WXK_LEFT:
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Pan_T1( SFVEC3F( -delta_move, 0.0f, 0.0f ) );
|
||||
request_start_moving_camera( arrow_moving_time_speed, false );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case WXK_RIGHT:
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Pan_T1( SFVEC3F( +delta_move, 0.0f, 0.0f ) );
|
||||
request_start_moving_camera( arrow_moving_time_speed, false );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case WXK_UP:
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Pan_T1( SFVEC3F( 0.0f, +delta_move, 0.0f ) );
|
||||
request_start_moving_camera( arrow_moving_time_speed, false );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case WXK_DOWN:
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Pan_T1( SFVEC3F( 0.0f, -delta_move, 0.0f ) );
|
||||
request_start_moving_camera( arrow_moving_time_speed, false );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case WXK_HOME:
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
request_start_moving_camera( glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case WXK_END:
|
||||
break;
|
||||
@@ -932,25 +948,28 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().RotateZ_T1( glm::radians( 45.0f ) );
|
||||
request_start_moving_camera();
|
||||
handled = true;
|
||||
break;
|
||||
|
||||
case WXK_F1:
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
|
||||
if( m_settings.CameraGet().Zoom_T1( 1.4f ) )
|
||||
request_start_moving_camera( 3.0f );
|
||||
return;
|
||||
|
||||
return true;
|
||||
|
||||
case WXK_F2:
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
|
||||
if( m_settings.CameraGet().Zoom_T1( 1/1.4f ) )
|
||||
request_start_moving_camera( 3.0f );
|
||||
return;
|
||||
|
||||
return true;
|
||||
|
||||
case '+':
|
||||
break;
|
||||
|
||||
case '-':
|
||||
break;
|
||||
|
||||
@@ -959,6 +978,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
|
||||
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL,
|
||||
!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL ) );
|
||||
ReloadRequest();
|
||||
handled = true;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
@@ -966,6 +986,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
|
||||
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT,
|
||||
!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT ) );
|
||||
ReloadRequest();
|
||||
handled = true;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
@@ -973,6 +994,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
|
||||
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL,
|
||||
!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL ) );
|
||||
ReloadRequest();
|
||||
handled = true;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
@@ -981,62 +1003,62 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
request_start_moving_camera( glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case 'x':
|
||||
case 'X':
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
m_settings.CameraGet().RotateZ_T1( glm::radians( -90.0f ) );
|
||||
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
|
||||
request_start_moving_camera();
|
||||
return;
|
||||
return true;
|
||||
|
||||
case 'X':
|
||||
case GR_KB_SHIFT + 'X':
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
m_settings.CameraGet().RotateZ_T1( glm::radians( 90.0f ) );
|
||||
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
|
||||
request_start_moving_camera();
|
||||
return;
|
||||
return true;
|
||||
|
||||
case 'y':
|
||||
case 'Y':
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
|
||||
request_start_moving_camera();
|
||||
return;
|
||||
return true;
|
||||
|
||||
case 'Y':
|
||||
case GR_KB_SHIFT + 'Y':
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
|
||||
m_settings.CameraGet().RotateZ_T1( glm::radians( -180.0f ) );
|
||||
request_start_moving_camera();
|
||||
return;
|
||||
|
||||
case 'z':
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
request_start_moving_camera(
|
||||
glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case 'Z':
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
m_settings.CameraGet().RotateX_T1( glm::radians( -180.0f ) );
|
||||
request_start_moving_camera(
|
||||
glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
|
||||
return;
|
||||
return true;
|
||||
|
||||
case GR_KB_SHIFT + 'Z':
|
||||
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
|
||||
m_settings.CameraGet().SetT0_and_T1_current_T();
|
||||
m_settings.CameraGet().Reset_T1();
|
||||
m_settings.CameraGet().RotateY_T1( glm::radians( 180.0f ) );
|
||||
request_start_moving_camera(
|
||||
glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
|
||||
return true;
|
||||
|
||||
default:
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
m_mouse_was_moved = true;
|
||||
@@ -1045,6 +1067,8 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
|
||||
|
||||
DisplayStatus();
|
||||
Request_refresh();
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -100,9 +100,11 @@ class EDA_3D_CANVAS : public HIDPI_GL_CANVAS
|
||||
|
||||
/**
|
||||
* @brief SetView3D - Helper function to call view commands
|
||||
* @param keycode: ascii key commands
|
||||
* @param aKeycode: ascii key commands
|
||||
* @return true if the key code was handled,
|
||||
* false if no command found for this code.
|
||||
*/
|
||||
void SetView3D( int keycode );
|
||||
bool SetView3D( int aKeycode );
|
||||
|
||||
/**
|
||||
* @brief RenderEngineChanged - Notify that the render engine was changed
|
||||
@@ -121,6 +123,8 @@ class EDA_3D_CANVAS : public HIDPI_GL_CANVAS
|
||||
*/
|
||||
void Request_refresh( bool aRedrawImmediately = true );
|
||||
|
||||
void OnKeyEvent( wxKeyEvent& event );
|
||||
|
||||
private:
|
||||
|
||||
void OnPaint( wxPaintEvent &event );
|
||||
@@ -149,8 +153,6 @@ class EDA_3D_CANVAS : public HIDPI_GL_CANVAS
|
||||
|
||||
void OnCharHook( wxKeyEvent& event );
|
||||
|
||||
void OnKeyEvent( wxKeyEvent& event );
|
||||
|
||||
void OnTimerTimeout_Editing( wxTimerEvent& event );
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "../../3d_fastmath.h"
|
||||
#include <trigo.h>
|
||||
#include <project.h>
|
||||
#include <profile.h> // To use GetRunningMicroSecs or an other profiling utility
|
||||
#include <profile.h> // To use GetRunningMicroSecs or another profiling utility
|
||||
|
||||
|
||||
void C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer( const CFILLEDCIRCLE2D * aFilledCircle,
|
||||
@@ -369,7 +369,8 @@ void C3D_RENDER_OGL_LEGACY::reload( REPORTER *aStatusTextReporter )
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CCONTAINER2D boardContainer;
|
||||
Convert_shape_line_polygon_to_triangles( m_settings.GetBoardPoly(),
|
||||
SHAPE_POLY_SET tmpBoard = m_settings.GetBoardPoly();
|
||||
Convert_shape_line_polygon_to_triangles( tmpBoard,
|
||||
boardContainer,
|
||||
m_settings.BiuTo3Dunits(),
|
||||
(const BOARD_ITEM &)*m_settings.GetBoard() );
|
||||
@@ -614,11 +615,9 @@ void C3D_RENDER_OGL_LEGACY::reload( REPORTER *aStatusTextReporter )
|
||||
{
|
||||
const SHAPE_POLY_SET *polyList = map_poly.at( layer_id );
|
||||
|
||||
layerTriangles->AddToMiddleContourns( *polyList,
|
||||
layer_z_bot,
|
||||
layer_z_top,
|
||||
m_settings.BiuTo3Dunits(),
|
||||
false );
|
||||
if( polyList->OutlineCount() > 0 )
|
||||
layerTriangles->AddToMiddleContourns( *polyList, layer_z_bot, layer_z_top,
|
||||
m_settings.BiuTo3Dunits(), false );
|
||||
}
|
||||
|
||||
// Create display list
|
||||
@@ -642,7 +641,7 @@ void C3D_RENDER_OGL_LEGACY::reload( REPORTER *aStatusTextReporter )
|
||||
if( aStatusTextReporter )
|
||||
aStatusTextReporter->Report( _( "Loading 3D models" ) );
|
||||
|
||||
load_3D_models();
|
||||
load_3D_models( aStatusTextReporter );
|
||||
|
||||
#ifdef PRINT_STATISTICS_3D_VIEWER
|
||||
unsigned stats_end_models_Load_Time = GetRunningMicroSecs();
|
||||
@@ -768,9 +767,11 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
|
||||
{
|
||||
const VIA *via = static_cast<const VIA*>(track);
|
||||
|
||||
const float holediameter = via->GetDrillValue() * m_settings.BiuTo3Dunits();
|
||||
const float thickness = m_settings.GetCopperThickness3DU();
|
||||
const float hole_inner_radius = ( holediameter / 2.0f );
|
||||
const float holediameter = via->GetDrillValue() * m_settings.BiuTo3Dunits();
|
||||
const float thickness = m_settings.GetCopperThickness3DU();
|
||||
const int nrSegments = m_settings.GetNrSegmentsCircle( via->GetDrillValue() );
|
||||
const double correctionFactor = m_settings.GetCircleCorrectionFactor( nrSegments );
|
||||
const float hole_inner_radius = ( holediameter / 2.0f ) * correctionFactor;
|
||||
|
||||
const SFVEC2F via_center( via->GetStart().x * m_settings.BiuTo3Dunits(),
|
||||
-via->GetStart().y * m_settings.BiuTo3Dunits() );
|
||||
@@ -790,7 +791,7 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
|
||||
hole_inner_radius + thickness,
|
||||
ztop,
|
||||
zbot,
|
||||
m_settings.GetNrSegmentsCircle( via->GetDrillValue() ),
|
||||
nrSegments,
|
||||
layerTriangleVIA );
|
||||
}
|
||||
}
|
||||
@@ -829,20 +830,20 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
|
||||
|
||||
// we use the hole diameter to calculate the seg count.
|
||||
// for round holes, drillsize.x == drillsize.y
|
||||
// for oblong holes, the diameter is the smaller of
|
||||
// (drillsize.x, drillsize.y)
|
||||
const int diam = std::min( drillsize.x, drillsize.y ) +
|
||||
m_settings.GetCopperThicknessBIU() * 2;
|
||||
|
||||
const int segmentsPerCircle = m_settings.GetNrSegmentsCircle( diam );
|
||||
// for slots, the diameter is the smaller of (drillsize.x, drillsize.y)
|
||||
int copperThickness = m_settings.GetCopperThicknessBIU();
|
||||
int radius = std::min( drillsize.x, drillsize.y ) / 2 + copperThickness;
|
||||
int nrSegments = m_settings.GetNrSegmentsCircle( radius * 2 );
|
||||
double correctionFactor = m_settings.GetCircleCorrectionFactor( nrSegments );
|
||||
int correction = radius * ( correctionFactor - 1 );
|
||||
|
||||
pad->BuildPadDrillShapePolygon( tht_outer_holes_poly,
|
||||
m_settings.GetCopperThicknessBIU(),
|
||||
segmentsPerCircle );
|
||||
copperThickness + correction,
|
||||
nrSegments );
|
||||
|
||||
pad->BuildPadDrillShapePolygon( tht_inner_holes_poly,
|
||||
0,
|
||||
segmentsPerCircle );
|
||||
correction,
|
||||
nrSegments );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -921,7 +922,7 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
|
||||
* cache for this render. (cache based on C_OGL_3DMODEL with associated
|
||||
* openGL lists in GPU memory)
|
||||
*/
|
||||
void C3D_RENDER_OGL_LEGACY::load_3D_models()
|
||||
void C3D_RENDER_OGL_LEGACY::load_3D_models( REPORTER *aStatusTextReporter )
|
||||
{
|
||||
if( (!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL )) &&
|
||||
(!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT )) &&
|
||||
@@ -943,7 +944,18 @@ void C3D_RENDER_OGL_LEGACY::load_3D_models()
|
||||
{
|
||||
if( !sM->m_Filename.empty() )
|
||||
{
|
||||
if( aStatusTextReporter )
|
||||
{
|
||||
// Display the short filename of the 3D model loaded:
|
||||
// (the full name is usually too long to be displayed)
|
||||
wxFileName fn( sM->m_Filename );
|
||||
wxString msg;
|
||||
msg.Printf( _( "Loading %s" ), fn.GetFullName() );
|
||||
aStatusTextReporter->Report( msg );
|
||||
}
|
||||
|
||||
// Check if the model is not present in our cache map
|
||||
// (Not already loaded in memory)
|
||||
if( m_3dmodel_map.find( sM->m_Filename ) == m_3dmodel_map.end() )
|
||||
{
|
||||
// It is not present, try get it from cache
|
||||
|
||||
@@ -174,7 +174,7 @@ private:
|
||||
|
||||
void generate_3D_Vias_and_Pads();
|
||||
|
||||
void load_3D_models();
|
||||
void load_3D_models( REPORTER *aStatusTextReporter );
|
||||
|
||||
/**
|
||||
* @brief render_3D_models
|
||||
|
||||
@@ -218,7 +218,7 @@ C_OGL_3DMODEL::C_OGL_3DMODEL( const S3DMODEL &a3DModel,
|
||||
glDisableClientState( GL_NORMAL_ARRAY );
|
||||
glDisableClientState( GL_VERTEX_ARRAY );
|
||||
|
||||
glFinish();
|
||||
glFlush();
|
||||
|
||||
delete [] pColorRGBA;
|
||||
}
|
||||
@@ -319,7 +319,7 @@ C_OGL_3DMODEL::C_OGL_3DMODEL( const S3DMODEL &a3DModel,
|
||||
for( unsigned int mesh_i = 0; mesh_i < a3DModel.m_MeshesSize; ++mesh_i )
|
||||
m_model_bbox.Union( m_meshs_bbox[mesh_i] );
|
||||
|
||||
glFinish();
|
||||
glFlush();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
#include "clayer_triangles.h"
|
||||
#include <wx/debug.h> // For the wxASSERT
|
||||
#include <mutex>
|
||||
#include <thread>
|
||||
#include <atomic>
|
||||
|
||||
|
||||
CLAYER_TRIANGLE_CONTAINER::CLAYER_TRIANGLE_CONTAINER( unsigned int aNrReservedTriangles,
|
||||
@@ -219,8 +222,8 @@ void CLAYER_TRIANGLES::AddToMiddleContourns( const std::vector< SFVEC2F > &aCont
|
||||
const SFVEC2F &v0 = aContournPoints[i + 0];
|
||||
const SFVEC2F &v1 = aContournPoints[i + 1];
|
||||
|
||||
#pragma omp critical
|
||||
{
|
||||
std::lock_guard<std::mutex> lock( m_middle_layer_lock );
|
||||
m_layer_middle_contourns_quads->AddQuad( SFVEC3F( v0.x, v0.y, zTop ),
|
||||
SFVEC3F( v1.x, v1.y, zTop ),
|
||||
SFVEC3F( v1.x, v1.y, zBot ),
|
||||
@@ -279,8 +282,6 @@ void CLAYER_TRIANGLES::AddToMiddleContourns( const SHAPE_POLY_SET &aPolySet,
|
||||
double aBiuTo3Du,
|
||||
bool aInvertFaceDirection )
|
||||
{
|
||||
wxASSERT( aPolySet.OutlineCount() > 0 );
|
||||
|
||||
if( aPolySet.OutlineCount() == 0 )
|
||||
return;
|
||||
|
||||
@@ -305,21 +306,41 @@ void CLAYER_TRIANGLES::AddToMiddleContourns( const SHAPE_POLY_SET &aPolySet,
|
||||
m_layer_middle_contourns_quads->Reserve_More( nrContournPointsToReserve * 2,
|
||||
true );
|
||||
|
||||
#pragma omp parallel for
|
||||
for( signed int i = 0; i < aPolySet.OutlineCount(); ++i )
|
||||
std::atomic<int> nextItem( 0 );
|
||||
std::atomic<size_t> threadsFinished( 0 );
|
||||
|
||||
size_t parallelThreadCount = std::min<size_t>(
|
||||
std::max<size_t>( std::thread::hardware_concurrency(), 2 ),
|
||||
static_cast<size_t>( aPolySet.OutlineCount() ) );
|
||||
for( size_t ii = 0; ii < parallelThreadCount; ++ii )
|
||||
{
|
||||
// Add outline
|
||||
const SHAPE_LINE_CHAIN& pathOutline = aPolySet.COutline( i );
|
||||
|
||||
AddToMiddleContourns( pathOutline, zBot, zTop, aBiuTo3Du, aInvertFaceDirection );
|
||||
|
||||
// Add holes for this outline
|
||||
for( int h = 0; h < aPolySet.HoleCount( i ); ++h )
|
||||
std::thread t = std::thread( [&]()
|
||||
{
|
||||
const SHAPE_LINE_CHAIN &hole = aPolySet.CHole( i, h );
|
||||
AddToMiddleContourns( hole, zBot, zTop, aBiuTo3Du, aInvertFaceDirection );
|
||||
}
|
||||
for( int i = nextItem.fetch_add( 1 );
|
||||
i < aPolySet.OutlineCount();
|
||||
i = nextItem.fetch_add( 1 ) )
|
||||
{
|
||||
// Add outline
|
||||
const SHAPE_LINE_CHAIN& pathOutline = aPolySet.COutline( i );
|
||||
|
||||
AddToMiddleContourns( pathOutline, zBot, zTop, aBiuTo3Du, aInvertFaceDirection );
|
||||
|
||||
// Add holes for this outline
|
||||
for( int h = 0; h < aPolySet.HoleCount( i ); ++h )
|
||||
{
|
||||
const SHAPE_LINE_CHAIN &hole = aPolySet.CHole( i, h );
|
||||
AddToMiddleContourns( hole, zBot, zTop, aBiuTo3Du, aInvertFaceDirection );
|
||||
}
|
||||
}
|
||||
|
||||
threadsFinished++;
|
||||
} );
|
||||
|
||||
t.detach();
|
||||
}
|
||||
|
||||
while( threadsFinished < parallelThreadCount )
|
||||
std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <geometry/shape_line_chain.h>
|
||||
#include <geometry/shape_poly_set.h>
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
|
||||
|
||||
typedef std::vector< SFVEC3F > SFVEC3F_VECTOR;
|
||||
@@ -174,6 +175,8 @@ public:
|
||||
float zTop,
|
||||
bool aInvertFaceDirection );
|
||||
|
||||
std::mutex m_middle_layer_lock;
|
||||
|
||||
CLAYER_TRIANGLE_CONTAINER *m_layer_top_segment_ends;
|
||||
CLAYER_TRIANGLE_CONTAINER *m_layer_top_triangles;
|
||||
CLAYER_TRIANGLE_CONTAINER *m_layer_middle_contourns_quads;
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include "ccontainer2d.h"
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
#include <boost/range/algorithm/partition.hpp>
|
||||
#include <boost/range/algorithm/nth_element.hpp>
|
||||
#include <wx/debug.h>
|
||||
@@ -46,6 +47,7 @@ CGENERICCONTAINER2D::CGENERICCONTAINER2D( OBJECT2D_TYPE aObjType )
|
||||
|
||||
void CGENERICCONTAINER2D::Clear()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
m_bbox.Reset();
|
||||
|
||||
for( LIST_OBJECT2D::iterator ii = m_objects.begin();
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include "../shapes2D/cobject2d.h"
|
||||
#include <list>
|
||||
#include <mutex>
|
||||
|
||||
typedef std::list<COBJECT2D *> LIST_OBJECT2D;
|
||||
typedef std::list<const COBJECT2D *> CONST_LIST_OBJECT2D;
|
||||
@@ -52,6 +53,7 @@ public:
|
||||
{
|
||||
if( aObject ) // Only add if it is a valid pointer
|
||||
{
|
||||
std::lock_guard<std::mutex> lock( m_lock );
|
||||
m_objects.push_back( aObject );
|
||||
m_bbox.Union( aObject->GetBBox() );
|
||||
}
|
||||
@@ -70,6 +72,7 @@ public:
|
||||
CONST_LIST_OBJECT2D &aOutList ) const = 0;
|
||||
|
||||
private:
|
||||
std::mutex m_lock;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
#include <class_module.h>
|
||||
|
||||
#include <base_units.h>
|
||||
#include <profile.h> // To use GetRunningMicroSecs or an other profiling utility
|
||||
#include <profile.h> // To use GetRunningMicroSecs or another profiling utility
|
||||
|
||||
/**
|
||||
* Scale convertion from 3d model units to pcb units
|
||||
@@ -918,7 +918,6 @@ void C3D_RENDER_RAYTRACING::reload( REPORTER *aStatusTextReporter )
|
||||
}
|
||||
m_accelerator = 0;
|
||||
|
||||
//m_accelerator = new CGRID( m_object_container );
|
||||
m_accelerator = new CBVH_PBRT( m_object_container );
|
||||
|
||||
#ifdef PRINT_STATISTICS_3D_VIEWER
|
||||
@@ -1211,7 +1210,7 @@ void C3D_RENDER_RAYTRACING::load_3D_models()
|
||||
|
||||
wxPoint pos = module->GetPosition();
|
||||
|
||||
glm::mat4 moduleMatrix = glm::mat4();
|
||||
glm::mat4 moduleMatrix = glm::mat4( 1.0f );
|
||||
|
||||
moduleMatrix = glm::translate( moduleMatrix,
|
||||
SFVEC3F( pos.x * m_settings.BiuTo3Dunits(),
|
||||
|
||||
@@ -131,7 +131,7 @@ private:
|
||||
unsigned long int m_stats_start_rendering_time;
|
||||
|
||||
/// Save the number of blocks progress of the render
|
||||
long m_nrBlocksRenderProgress;
|
||||
size_t m_nrBlocksRenderProgress;
|
||||
|
||||
CPOSTSHADER_SSAO m_postshader_ssao;
|
||||
|
||||
@@ -165,7 +165,7 @@ private:
|
||||
std::vector< SFVEC2UI > m_blockPositions;
|
||||
|
||||
/// this flags if a position was already processed (cleared each new render)
|
||||
std::vector< bool > m_blockPositionsWasProcessed;
|
||||
std::vector< int > m_blockPositionsWasProcessed;
|
||||
|
||||
/// this encodes the Morton code positions (on fast preview mode)
|
||||
std::vector< SFVEC2UI > m_blockPositionsFast;
|
||||
|
||||
@@ -50,9 +50,9 @@ void RAY::Init( const SFVEC3F& o, const SFVEC3F& d )
|
||||
// Amy Williams Steve Barrus R. Keith Morley Peter Shirley
|
||||
// University of Utah
|
||||
// http://people.csail.mit.edu/amy/papers/box-jgt.pdf
|
||||
m_dirIsNeg[0] = m_Dir.x <= 0.0f;
|
||||
m_dirIsNeg[1] = m_Dir.y <= 0.0f;
|
||||
m_dirIsNeg[2] = m_Dir.z <= 0.0f;
|
||||
m_dirIsNeg[0] = m_Dir.x < 0.0f;
|
||||
m_dirIsNeg[1] = m_Dir.y < 0.0f;
|
||||
m_dirIsNeg[2] = m_Dir.z < 0.0f;
|
||||
|
||||
|
||||
// ray slope
|
||||
|
||||
@@ -35,9 +35,9 @@
|
||||
|
||||
#include <wx/glcanvas.h> // CALLBACK definition, needed on Windows
|
||||
// alse needed on OSX to define __DARWIN__
|
||||
|
||||
#include <geometry/polygon_triangulation.h>
|
||||
#include "../../../3d_fastmath.h"
|
||||
#include <poly2tri/poly2tri.h>
|
||||
|
||||
|
||||
|
||||
CTRIANGLE2D::CTRIANGLE2D ( const SFVEC2F &aV1,
|
||||
@@ -126,172 +126,28 @@ bool CTRIANGLE2D::IsPointInside( const SFVEC2F &aPoint ) const
|
||||
const float c = 1.0f - a - b;
|
||||
|
||||
return 0.0f <= c && c <= 1.0f;
|
||||
/*
|
||||
return 0.0f <= a && a <= 1.0f &&
|
||||
0.0f <= b && b <= 1.0f &&
|
||||
0.0f <= c && c <= 1.0f;*/
|
||||
}
|
||||
|
||||
|
||||
template <class C> void FreeClear( C & cntr )
|
||||
{
|
||||
for( typename C::iterator it = cntr.begin();
|
||||
it != cntr.end();
|
||||
++it )
|
||||
{
|
||||
delete * it;
|
||||
}
|
||||
|
||||
cntr.clear();
|
||||
}
|
||||
|
||||
// Note: Please check edgeshrink.cpp in order to learn the EdgeShrink propose
|
||||
|
||||
#define APPLY_EDGE_SHRINK
|
||||
|
||||
#ifdef APPLY_EDGE_SHRINK
|
||||
extern void EdgeShrink( std::vector<SFVEC2I64> &aPath );
|
||||
|
||||
#define POLY_SCALE_FACT 256
|
||||
#define POLY_SCALE_FACT_INVERSE (1.0 / (double)(POLY_SCALE_FACT))
|
||||
#endif
|
||||
|
||||
void Convert_shape_line_polygon_to_triangles( const SHAPE_POLY_SET &aPolyList,
|
||||
void Convert_shape_line_polygon_to_triangles( SHAPE_POLY_SET &aPolyList,
|
||||
CGENERICCONTAINER2D &aDstContainer,
|
||||
float aBiuTo3DunitsScale ,
|
||||
const BOARD_ITEM &aBoardItem )
|
||||
{
|
||||
unsigned int nOutlines = aPolyList.OutlineCount();
|
||||
|
||||
aPolyList.CacheTriangulation();
|
||||
const double conver_d = (double)aBiuTo3DunitsScale;
|
||||
|
||||
for( unsigned int idx = 0; idx < nOutlines; ++idx )
|
||||
for( unsigned int i = 0; i < aPolyList.TriangulatedPolyCount(); i++ )
|
||||
{
|
||||
const SHAPE_LINE_CHAIN &outlinePath = aPolyList.COutline( idx );
|
||||
auto triPoly = aPolyList.TriangulatedPolygon( i );
|
||||
|
||||
wxASSERT( outlinePath.PointCount() >= 3 );
|
||||
|
||||
std::vector<SFVEC2I64> scaledOutline;
|
||||
scaledOutline.resize( outlinePath.PointCount() );
|
||||
|
||||
// printf("\nidx: %u\n", idx);
|
||||
|
||||
// Apply a scale to the points
|
||||
for( unsigned int i = 0;
|
||||
i < (unsigned int)outlinePath.PointCount();
|
||||
++i )
|
||||
for( size_t i = 0; i < triPoly->GetTriangleCount(); i++ )
|
||||
{
|
||||
const VECTOR2I& a = outlinePath.CPoint( i );
|
||||
|
||||
#ifdef APPLY_EDGE_SHRINK
|
||||
scaledOutline[i] = SFVEC2I64( (glm::int64)a.x * POLY_SCALE_FACT,
|
||||
(glm::int64)a.y * POLY_SCALE_FACT );
|
||||
#else
|
||||
scaledOutline[i] = SFVEC2I64( (glm::int64)a.x,
|
||||
(glm::int64)a.y );
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef APPLY_EDGE_SHRINK
|
||||
// Apply a modification to the points
|
||||
EdgeShrink( scaledOutline );
|
||||
#endif
|
||||
// Copy to a array of pointers
|
||||
std::vector<p2t::Point*> polyline;
|
||||
polyline.resize( outlinePath.PointCount() );
|
||||
|
||||
for( unsigned int i = 0;
|
||||
i < (unsigned int)scaledOutline.size();
|
||||
++i )
|
||||
{
|
||||
const SFVEC2I64 &a = scaledOutline[i];
|
||||
|
||||
//printf("%lu %lu\n", a.x, a.y);
|
||||
|
||||
polyline[i] = new p2t::Point( (double)a.x,
|
||||
(double)a.y );
|
||||
}
|
||||
|
||||
// Start creating the structured to be triangulated
|
||||
p2t::CDT* cdt = new p2t::CDT( polyline );
|
||||
|
||||
// Add holes for this outline
|
||||
unsigned int nHoles = aPolyList.HoleCount( idx );
|
||||
|
||||
std::vector< std::vector<p2t::Point*> > polylineHoles;
|
||||
|
||||
polylineHoles.resize( nHoles );
|
||||
|
||||
for( unsigned int idxHole = 0; idxHole < nHoles; ++idxHole )
|
||||
{
|
||||
const SHAPE_LINE_CHAIN &outlineHoles = aPolyList.CHole( idx,
|
||||
idxHole );
|
||||
|
||||
wxASSERT( outlineHoles.PointCount() >= 3 );
|
||||
|
||||
std::vector<SFVEC2I64> scaledHole;
|
||||
scaledHole.resize( outlineHoles.PointCount() );
|
||||
|
||||
// Apply a scale to the points
|
||||
for( unsigned int i = 0;
|
||||
i < (unsigned int)outlineHoles.PointCount();
|
||||
++i )
|
||||
{
|
||||
const VECTOR2I &h = outlineHoles.CPoint( i );
|
||||
#ifdef APPLY_EDGE_SHRINK
|
||||
scaledHole[i] = SFVEC2I64( (glm::int64)h.x * POLY_SCALE_FACT,
|
||||
(glm::int64)h.y * POLY_SCALE_FACT );
|
||||
#else
|
||||
scaledHole[i] = SFVEC2I64( (glm::int64)h.x,
|
||||
(glm::int64)h.y );
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef APPLY_EDGE_SHRINK
|
||||
// Apply a modification to the points
|
||||
EdgeShrink( scaledHole );
|
||||
#endif
|
||||
|
||||
// Resize and reserve space
|
||||
polylineHoles[idxHole].resize( outlineHoles.PointCount() );
|
||||
|
||||
for( unsigned int i = 0;
|
||||
i < (unsigned int)outlineHoles.PointCount();
|
||||
++i )
|
||||
{
|
||||
const SFVEC2I64 &h = scaledHole[i];
|
||||
|
||||
polylineHoles[idxHole][i] = new p2t::Point( h.x, h.y );
|
||||
}
|
||||
|
||||
cdt->AddHole( polylineHoles[idxHole] );
|
||||
}
|
||||
|
||||
// Triangulate
|
||||
cdt->Triangulate();
|
||||
|
||||
// Hint: if you find any crashes on the triangulation poly2tri library,
|
||||
// you can use the following site to debug the points and it will mark
|
||||
// the errors in the polygon:
|
||||
// http://r3mi.github.io/poly2tri.js/
|
||||
|
||||
|
||||
// Get and add triangles
|
||||
std::vector<p2t::Triangle*> triangles;
|
||||
triangles = cdt->GetTriangles();
|
||||
|
||||
#ifdef APPLY_EDGE_SHRINK
|
||||
const double conver_d = (double)aBiuTo3DunitsScale *
|
||||
POLY_SCALE_FACT_INVERSE;
|
||||
#else
|
||||
const double conver_d = (double)aBiuTo3DunitsScale;
|
||||
#endif
|
||||
for( unsigned int i = 0; i < triangles.size(); ++i )
|
||||
{
|
||||
p2t::Triangle& t = *triangles[i];
|
||||
|
||||
p2t::Point& a = *t.GetPoint( 0 );
|
||||
p2t::Point& b = *t.GetPoint( 1 );
|
||||
p2t::Point& c = *t.GetPoint( 2 );
|
||||
VECTOR2I a;
|
||||
VECTOR2I b;
|
||||
VECTOR2I c;
|
||||
triPoly->GetTriangle( i, a, b, c );
|
||||
|
||||
aDstContainer.Add( new CTRIANGLE2D( SFVEC2F( a.x * conver_d,
|
||||
-a.y * conver_d ),
|
||||
@@ -302,15 +158,5 @@ void Convert_shape_line_polygon_to_triangles( const SHAPE_POLY_SET &aPolyList,
|
||||
aBoardItem ) );
|
||||
}
|
||||
|
||||
// Delete created data
|
||||
delete cdt;
|
||||
|
||||
// Free points
|
||||
FreeClear(polyline);
|
||||
|
||||
for( unsigned int idxHole = 0; idxHole < nHoles; ++idxHole )
|
||||
{
|
||||
FreeClear( polylineHoles[idxHole] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
};
|
||||
|
||||
|
||||
void Convert_shape_line_polygon_to_triangles( const SHAPE_POLY_SET &aPolyList,
|
||||
void Convert_shape_line_polygon_to_triangles( SHAPE_POLY_SET &aPolyList,
|
||||
CGENERICCONTAINER2D &aDstContainer,
|
||||
float aBiuTo3DunitsScale,
|
||||
const BOARD_ITEM &aBoardItem );
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file edgeshrink.cpp
|
||||
* @brief The edgeShrink function was found in the project clip2tri by the:
|
||||
* Bitfighter project (http://bitfighter.org)
|
||||
* https://github.com/raptor/clip2tri
|
||||
* https://github.com/raptor/clip2tri/blob/f62a734d22733814b8a970ed8a68a4d94c24fa5f/clip2tri/clip2tri.cpp#L150
|
||||
*/
|
||||
|
||||
#include <plugins/3dapi/xv3d_types.h>
|
||||
#include <vector>
|
||||
|
||||
// clip2tri is Licenced under:
|
||||
|
||||
// The MIT License (MIT)
|
||||
|
||||
// Copyright (c) 2014 Bitfighter developers
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
|
||||
// Shrink large polygons by reducing each coordinate by 1 in the
|
||||
// general direction of the last point as we wind around
|
||||
//
|
||||
// This normally wouldn't work in every case, but our upscaled-by-1000 polygons
|
||||
// have little chance to create new duplicate points with this method.
|
||||
//
|
||||
// For information on why this was needed, see:
|
||||
//
|
||||
// https://github.com/greenm01/poly2tri/issues/90
|
||||
//
|
||||
|
||||
#define S_INC 1
|
||||
|
||||
void EdgeShrink( std::vector<SFVEC2I64> &aPath )
|
||||
{
|
||||
unsigned int prev = aPath.size() - 1;
|
||||
|
||||
for( unsigned int i = 0; i < aPath.size(); i++ )
|
||||
{
|
||||
// Adjust coordinate by 1 depending on the direction
|
||||
(aPath[i].x - aPath[prev].x) > 0 ? aPath[i].x -= S_INC :
|
||||
aPath[i].x += S_INC;
|
||||
|
||||
(aPath[i].y - aPath[prev].y) > 0 ? aPath[i].y -= S_INC :
|
||||
aPath[i].y += S_INC;
|
||||
|
||||
prev = i;
|
||||
}
|
||||
}
|
||||
@@ -271,7 +271,7 @@ SFVEC3F CBBOX::Offset( const SFVEC3F &p ) const
|
||||
// https://github.com/mmp/pbrt-v2/blob/master/src/core/geometry.cpp#L68
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
#if 0
|
||||
bool CBBOX::Intersect( const RAY &aRay, float *aOutHitt0, float *aOutHitt1 )
|
||||
bool CBBOX::Intersect( const RAY &aRay, float *aOutHitt0, float *aOutHitt1 ) const
|
||||
{
|
||||
float t0 = 0.0f;
|
||||
float t1 = FLT_MAX;
|
||||
|
||||
@@ -31,6 +31,10 @@
|
||||
#include "buffers_debug.h"
|
||||
#include <string.h> // For memcpy
|
||||
|
||||
#include <atomic>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
|
||||
#ifndef CLAMP
|
||||
#define CLAMP(n, min, max) {if( n < min ) n=min; else if( n > max ) n = max;}
|
||||
#endif
|
||||
@@ -469,34 +473,51 @@ void CIMAGE::EfxFilter( CIMAGE *aInImg, E_FILTER aFilterType )
|
||||
aInImg->m_wraping = WRAP_CLAMP;
|
||||
m_wraping = WRAP_CLAMP;
|
||||
|
||||
#pragma omp parallel for
|
||||
for( int iy = 0; iy < (int)m_height; iy++)
|
||||
std::atomic<size_t> nextRow( 0 );
|
||||
std::atomic<size_t> threadsFinished( 0 );
|
||||
|
||||
size_t parallelThreadCount = std::max<size_t>( std::thread::hardware_concurrency(), 2 );
|
||||
|
||||
for( size_t ii = 0; ii < parallelThreadCount; ++ii )
|
||||
{
|
||||
for( int ix = 0; ix < (int)m_width; ix++ )
|
||||
std::thread t = std::thread( [&]()
|
||||
{
|
||||
int v = 0;
|
||||
|
||||
for( int sy = 0; sy < 5; sy++ )
|
||||
for( size_t iy = nextRow.fetch_add( 1 );
|
||||
iy < m_height;
|
||||
iy = nextRow.fetch_add( 1 ) )
|
||||
{
|
||||
for( int sx = 0; sx < 5; sx++ )
|
||||
for( size_t ix = 0; ix < m_width; ix++ )
|
||||
{
|
||||
int factor = filter.kernel[sx][sy];
|
||||
unsigned char pixelv = aInImg->Getpixel( ix + sx - 2,
|
||||
iy + sy - 2 );
|
||||
int v = 0;
|
||||
|
||||
v += pixelv * factor;
|
||||
for( size_t sy = 0; sy < 5; sy++ )
|
||||
{
|
||||
for( size_t sx = 0; sx < 5; sx++ )
|
||||
{
|
||||
int factor = filter.kernel[sx][sy];
|
||||
unsigned char pixelv = aInImg->Getpixel( ix + sx - 2,
|
||||
iy + sy - 2 );
|
||||
|
||||
v += pixelv * factor;
|
||||
}
|
||||
}
|
||||
|
||||
v /= filter.div;
|
||||
v += filter.offset;
|
||||
CLAMP(v, 0, 255);
|
||||
//TODO: This needs to write to a separate buffer
|
||||
m_pixels[ix + iy * m_width] = v;
|
||||
}
|
||||
}
|
||||
|
||||
v /= filter.div;
|
||||
threadsFinished++;
|
||||
} );
|
||||
|
||||
v += filter.offset;
|
||||
|
||||
CLAMP(v, 0, 255);
|
||||
|
||||
m_pixels[ix + iy * m_width] = v;
|
||||
}
|
||||
t.detach();
|
||||
}
|
||||
|
||||
while( threadsFinished < parallelThreadCount )
|
||||
std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,423 @@
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
||||
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@gmail.com>
|
||||
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file 3d_menubar.cpp
|
||||
*/
|
||||
|
||||
#include <fctsys.h>
|
||||
|
||||
#include <eda_3d_viewer.h>
|
||||
#include <3d_canvas/cinfo3d_visu.h>
|
||||
#include <menus_helpers.h>
|
||||
#include <3d_viewer_id.h>
|
||||
#include "help_common_strings.h"
|
||||
|
||||
extern struct EDA_HOTKEY_CONFIG g_3DViewer_Hokeys_Descr[];
|
||||
|
||||
void EDA_3D_VIEWER::CreateMenuBar()
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::CreateMenuBar" ) );
|
||||
|
||||
wxMenuBar* menuBar = new wxMenuBar;
|
||||
wxMenu* fileMenu = new wxMenu;
|
||||
wxMenu* editMenu = new wxMenu;
|
||||
wxMenu* viewMenu = new wxMenu;
|
||||
wxMenu* prefsMenu = new wxMenu;
|
||||
wxMenu* helpMenu = new wxMenu;
|
||||
|
||||
menuBar->Append( fileMenu, _( "&File" ) );
|
||||
|
||||
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_PNG,
|
||||
_( "Export Current View as PNG..." ),
|
||||
KiBitmap( export_xpm ) );
|
||||
|
||||
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_JPEG,
|
||||
_( "Export Current View as JPEG..." ),
|
||||
KiBitmap( export_xpm ) );
|
||||
|
||||
fileMenu->AppendSeparator();
|
||||
AddMenuItem( fileMenu, wxID_EXIT,
|
||||
_( "&Exit" ),
|
||||
KiBitmap( exit_xpm ) );
|
||||
|
||||
menuBar->Append( editMenu, _( "&Edit" ) );
|
||||
|
||||
AddMenuItem( editMenu, ID_TOOL_SCREENCOPY_TOCLIBBOARD,
|
||||
_( "Copy 3D Image" ),
|
||||
KiBitmap( copy_xpm ) );
|
||||
|
||||
menuBar->Append( viewMenu, _( "&View" ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_ZOOM_IN,
|
||||
_( "Zoom &In" ), HELP_ZOOM_IN,
|
||||
KiBitmap( zoom_in_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_ZOOM_OUT,
|
||||
_( "Zoom &Out" ), HELP_ZOOM_OUT,
|
||||
KiBitmap( zoom_out_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_ZOOM_PAGE,
|
||||
_( "Zoom to &Fit" ), HELP_ZOOM_FIT,
|
||||
KiBitmap( zoom_fit_in_page_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_ZOOM_REDRAW,
|
||||
_( "&Redraw" ), HELP_ZOOM_REDRAW,
|
||||
KiBitmap( zoom_redraw_xpm ) );
|
||||
|
||||
viewMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( viewMenu, ID_ROTATE3D_X_NEG,
|
||||
_( "Rotate X Clockwise" ),
|
||||
KiBitmap( rotate_neg_x_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_ROTATE3D_X_POS,
|
||||
_( "Rotate X Counterclockwise" ),
|
||||
KiBitmap( rotate_pos_x_xpm ) );
|
||||
|
||||
viewMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( viewMenu, ID_ROTATE3D_Y_NEG,
|
||||
_( "Rotate Y Clockwise" ),
|
||||
KiBitmap( rotate_neg_y_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_ROTATE3D_Y_POS,
|
||||
_( "Rotate Y Counterclockwise" ),
|
||||
KiBitmap( rotate_pos_y_xpm ) );
|
||||
|
||||
viewMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( viewMenu, ID_ROTATE3D_Z_NEG,
|
||||
_( "Rotate Z Clockwise" ),
|
||||
KiBitmap( rotate_neg_z_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_ROTATE3D_Z_POS,
|
||||
_( "Rotate Z Counterclockwise" ),
|
||||
KiBitmap( rotate_pos_z_xpm ) );
|
||||
|
||||
viewMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( viewMenu, ID_MOVE3D_LEFT,
|
||||
_( "Move left" ),
|
||||
KiBitmap( left_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_MOVE3D_RIGHT,
|
||||
_( "Move right" ),
|
||||
KiBitmap( right_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_MOVE3D_UP,
|
||||
_( "Move up" ),
|
||||
KiBitmap( up_xpm ) );
|
||||
|
||||
AddMenuItem( viewMenu, ID_MOVE3D_DOWN,
|
||||
_( "Move down" ),
|
||||
KiBitmap( down_xpm ) );
|
||||
|
||||
menuBar->Append( prefsMenu, _( "&Preferences" ) );
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_MOUSEWHEEL_PANNING,
|
||||
_( "Use Touchpad to Pan" ),
|
||||
KiBitmap( tools_xpm ), wxITEM_CHECK );
|
||||
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( prefsMenu, ID_TOOL_SET_VISIBLE_ITEMS,
|
||||
_( "Display Options" ),
|
||||
KiBitmap( read_setup_xpm ) );
|
||||
|
||||
wxMenu * renderEngineList = new wxMenu;
|
||||
AddMenuItem( prefsMenu, renderEngineList, ID_MENU3D_ENGINE,
|
||||
_( "Render Engine" ), KiBitmap( render_mode_xpm ) );
|
||||
|
||||
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_OPENGL_LEGACY,
|
||||
_( "OpenGL" ),
|
||||
wxEmptyString );
|
||||
|
||||
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_RAYTRACING,
|
||||
_( "Raytracing" ),
|
||||
wxEmptyString );
|
||||
|
||||
renderEngineList->Check( ID_MENU3D_ENGINE_OPENGL_LEGACY,
|
||||
m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
|
||||
|
||||
renderEngineList->Check( ID_MENU3D_ENGINE_RAYTRACING,
|
||||
m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
|
||||
|
||||
wxMenu * renderOptionsMenu = new wxMenu;
|
||||
AddMenuItem( prefsMenu, renderOptionsMenu, ID_MENU3D_FL,
|
||||
_( "Render Options" ), KiBitmap( options_3drender_xpm ) );
|
||||
|
||||
wxMenu * materialsList = new wxMenu;
|
||||
AddMenuItem( renderOptionsMenu, materialsList, ID_MENU3D_FL_RENDER_MATERIAL,
|
||||
_( "Material Properties" ), KiBitmap( color_materials_xpm ) );
|
||||
|
||||
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL,
|
||||
_( "Use All Properties" ),
|
||||
_( "Use all material properties from each 3D model file" ) );
|
||||
|
||||
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY,
|
||||
_( "Use Diffuse Only" ),
|
||||
_( "Use only the diffuse color property from model 3D model file " ) );
|
||||
|
||||
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE,
|
||||
_( "CAD Color Style" ),
|
||||
_( "Use a CAD color style based on the diffuse color of the material" ) );
|
||||
|
||||
// Add specific preferences for OpenGL
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
wxMenu * renderOptionsMenu_OPENGL = new wxMenu;
|
||||
|
||||
AddMenuItem( renderOptionsMenu, renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL,
|
||||
_( "OpenGL Options" ), KiBitmap( tools_xpm ) );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS,
|
||||
_( "Show Copper Thickness" ),
|
||||
_( "Shows the copper thickness on copper layers (slower loading)"),
|
||||
KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX,
|
||||
_( "Show Model Bounding Boxes" ),
|
||||
KiBitmap( ortho_xpm ), wxITEM_CHECK );
|
||||
|
||||
|
||||
// Add specific preferences for Raytracing
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
wxMenu * renderOptionsMenu_RAYTRACING = new wxMenu;
|
||||
AddMenuItem( renderOptionsMenu, renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING,
|
||||
_( "Raytracing Options" ), KiBitmap( tools_xpm ) );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS,
|
||||
_( "Render Shadows" ),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES,
|
||||
_( "Procedural Textures" ),
|
||||
_( "Apply procedural textures to materials (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_BACKFLOOR,
|
||||
_( "Add Floor" ),
|
||||
_( "Adds a floor plane below the board (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFRACTIONS,
|
||||
_( "Refractions" ),
|
||||
_( "Render materials with refractions properties on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFLECTIONS,
|
||||
_( "Reflections" ),
|
||||
_( "Render materials with reflections properties on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING,
|
||||
_( "Anti-aliasing" ),
|
||||
_( "Render with improved quality on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_POST_PROCESSING,
|
||||
_( "Post-processing" ),
|
||||
_( "Apply Screen Space Ambient Occlusion and Global Illumination reflections on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
|
||||
// Colors, axis and grid elements
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Add submenu set Colors
|
||||
wxMenu * setColorMenu = new wxMenu;
|
||||
AddMenuItem( prefsMenu, setColorMenu, ID_MENU3D_COLOR,
|
||||
_( "Choose Colors" ), KiBitmap( palette_xpm ) );
|
||||
|
||||
wxMenu * setBgColorMenu = new wxMenu;
|
||||
AddMenuItem( setColorMenu, setBgColorMenu, ID_MENU3D_BGCOLOR,
|
||||
_( "Background Color" ), KiBitmap( palette_xpm ) );
|
||||
|
||||
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_TOP_SELECTION,
|
||||
_( "Background Top Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
|
||||
|
||||
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_BOTTOM_SELECTION,
|
||||
_( "Background Bottom Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_SILKSCREEN_COLOR_SELECTION,
|
||||
_( "Silkscreen Color..." ), KiBitmap( setcolor_silkscreen_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERMASK_COLOR_SELECTION,
|
||||
_( "Solder Mask Color..." ), KiBitmap( setcolor_soldermask_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERPASTE_COLOR_SELECTION,
|
||||
_( "Solder Paste Color..." ), KiBitmap( setcolor_solderpaste_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_COPPER_COLOR_SELECTION,
|
||||
_( "Copper/Surface Finish Color..." ), KiBitmap( setcolor_copper_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_PCB_BODY_COLOR_SELECTION,
|
||||
_( "Board Body Color..." ), KiBitmap( setcolor_board_body_xpm ) );
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_AXIS_ONOFF,
|
||||
_( "Show 3D &Axis" ), KiBitmap( axis3d_front_xpm ), wxITEM_CHECK );
|
||||
|
||||
|
||||
// Creates grid menu
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxMenu * gridlistMenu = new wxMenu;
|
||||
AddMenuItem( prefsMenu, gridlistMenu, ID_MENU3D_GRID,
|
||||
_( "3D Grid" ), KiBitmap( grid_xpm ) );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_NOGRID, _( "No 3D Grid" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_10_MM, _( "3D Grid 10 mm" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_5_MM, _( "3D Grid 5 mm" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_2P5_MM, _( "3D Grid 2.5 mm" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_1_MM, _( "3D Grid 1 mm" ), wxEmptyString );
|
||||
|
||||
// If the grid is on, check the corresponding menuitem showing the grid size
|
||||
if( m_settings.GridGet() != GRID3D_NONE )
|
||||
{
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_10_MM, m_settings.GridGet() == GRID3D_10MM );
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_5_MM, m_settings.GridGet() == GRID3D_5MM );
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_2P5_MM, m_settings.GridGet() == GRID3D_2P5MM );
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_1_MM, m_settings.GridGet() == GRID3D_1MM );
|
||||
}
|
||||
else
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_NOGRID, true );
|
||||
|
||||
// Reset options
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_RESET_DEFAULTS,
|
||||
_( "Reset to Default Settings" ),
|
||||
KiBitmap( tools_xpm ) );
|
||||
|
||||
// Help menu
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
menuBar->Append( helpMenu, _( "&Help" ) );
|
||||
|
||||
AddMenuItem( helpMenu, wxID_HELP,
|
||||
_( "Pcbnew &Manual" ),
|
||||
_( "Open Pcbnew Manual" ),
|
||||
KiBitmap( online_help_xpm ) );
|
||||
|
||||
AddMenuItem( helpMenu, wxID_INDEX,
|
||||
_( "&Getting Started in KiCad" ),
|
||||
_( "Open \"Getting Started in KiCad\" guide for beginners" ),
|
||||
KiBitmap( help_xpm ) );
|
||||
|
||||
wxString text = AddHotkeyName( _( "&List Hotkeys..." ), g_3DViewer_Hokeys_Descr, HK_HELP );
|
||||
AddMenuItem( helpMenu, ID_MENU3D_HELP_HOTKEY_SHOW_CURRENT_LIST,
|
||||
text,
|
||||
_( "Displays the current hotkeys list and corresponding commands" ),
|
||||
KiBitmap( hotkeys_xpm ) );
|
||||
|
||||
helpMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( helpMenu, ID_HELP_GET_INVOLVED,
|
||||
_( "Get &Involved" ),
|
||||
_( "Contribute to KiCad (opens a web browser)" ),
|
||||
KiBitmap( info_xpm ) );
|
||||
|
||||
helpMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( helpMenu, wxID_ABOUT,
|
||||
_( "&About KiCad" ),
|
||||
_( "Display KiCad About dialog" ),
|
||||
KiBitmap( about_xpm ) );
|
||||
|
||||
SetMenuBar( menuBar );
|
||||
SetMenuBarOptionsState();
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::SetMenuBarOptionsState()
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState" ) );
|
||||
|
||||
wxMenuBar* menuBar = GetMenuBar();
|
||||
|
||||
if( menuBar == NULL )
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState menuBar == NULL" ) );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
wxMenuItem* item;
|
||||
// Set the state of toggle menus according to the current display options
|
||||
item = menuBar->FindItem( ID_MENU3D_MOUSEWHEEL_PANNING );
|
||||
item->Check( m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) );
|
||||
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_ENGINE_OPENGL_LEGACY );
|
||||
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_ENGINE_RAYTRACING );
|
||||
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL );
|
||||
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_NORMAL );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY );
|
||||
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_DIFFUSE_ONLY );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE );
|
||||
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_CAD_MODE );
|
||||
|
||||
// OpenGL
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX ) );
|
||||
|
||||
// Raytracing
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_SHADOWS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_BACKFLOOR );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_BACKFLOOR ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFRACTIONS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFRACTIONS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFLECTIONS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFLECTIONS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_POST_PROCESSING );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES ) );
|
||||
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_AXIS_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_AXIS ) );
|
||||
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
*
|
||||
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
||||
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@gmail.com>
|
||||
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -63,8 +63,8 @@ void EDA_3D_VIEWER::ReCreateMainToolbar()
|
||||
m_mainToolBar->AddSeparator();
|
||||
|
||||
m_mainToolBar->AddTool( ID_TOOL_SET_VISIBLE_ITEMS, wxEmptyString,
|
||||
KiBitmap( read_setup_xpm ),
|
||||
_( "Set display options, and some layers visibility" ) );
|
||||
KiBitmap( read_setup_xpm ),
|
||||
_( "Set display options, and some layers visibility" ) );
|
||||
m_mainToolBar->AddSeparator();
|
||||
|
||||
m_mainToolBar->AddTool( ID_RENDER_CURRENT_VIEW, wxEmptyString,
|
||||
@@ -84,34 +84,34 @@ void EDA_3D_VIEWER::ReCreateMainToolbar()
|
||||
_( "Redraw view" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ),
|
||||
_( "Fit in page" ) );
|
||||
_( "Zoom to fit 3D model" ) );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
m_mainToolBar->AddTool( ID_ROTATE3D_X_NEG, wxEmptyString,
|
||||
KiBitmap( rotate_neg_x_xpm ),
|
||||
_( "Rotate X <-" ) );
|
||||
_( "Rotate X Clockwise" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_ROTATE3D_X_POS, wxEmptyString,
|
||||
KiBitmap( rotate_pos_x_xpm ),
|
||||
_( "Rotate X ->" ) );
|
||||
_( "Rotate X Counterclockwise" ) );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
m_mainToolBar->AddTool( ID_ROTATE3D_Y_NEG, wxEmptyString,
|
||||
KiBitmap( rotate_neg_y_xpm ),
|
||||
_( "Rotate Y <-" ) );
|
||||
_( "Rotate Y Clockwise" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_ROTATE3D_Y_POS, wxEmptyString,
|
||||
KiBitmap( rotate_pos_y_xpm ),
|
||||
_( "Rotate Y ->" ) );
|
||||
_( "Rotate Y Counterclockwise" ) );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
m_mainToolBar->AddTool( ID_ROTATE3D_Z_NEG, wxEmptyString,
|
||||
KiBitmap( rotate_neg_z_xpm ),
|
||||
_( "Rotate Z <-" ) );
|
||||
_( "Rotate Z Clockwise" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_ROTATE3D_Z_POS, wxEmptyString,
|
||||
KiBitmap( rotate_pos_z_xpm ),
|
||||
_( "Rotate Z ->" ) );
|
||||
_( "Rotate Z Counterclockwise" ) );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
m_mainToolBar->AddTool( ID_MOVE3D_LEFT, wxEmptyString, KiBitmap( left_xpm ),
|
||||
@@ -135,392 +135,6 @@ void EDA_3D_VIEWER::ReCreateMainToolbar()
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::CreateMenuBar()
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::CreateMenuBar" ) );
|
||||
|
||||
wxMenuBar* menuBar = new wxMenuBar;
|
||||
wxMenu* fileMenu = new wxMenu;
|
||||
wxMenu* editMenu = new wxMenu;
|
||||
wxMenu* prefsMenu = new wxMenu;
|
||||
wxMenu* helpMenu = new wxMenu;
|
||||
|
||||
menuBar->Append( fileMenu, _( "&File" ) );
|
||||
|
||||
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_PNG,
|
||||
_( "Export Current View as PNG..." ),
|
||||
KiBitmap( export_xpm ) );
|
||||
|
||||
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_JPEG,
|
||||
_( "Export Current View as JPEG..." ),
|
||||
KiBitmap( export_xpm ) );
|
||||
|
||||
fileMenu->AppendSeparator();
|
||||
AddMenuItem( fileMenu, wxID_EXIT,
|
||||
_( "&Exit" ),
|
||||
KiBitmap( exit_xpm ) );
|
||||
|
||||
menuBar->Append( editMenu, _( "&Edit" ) );
|
||||
|
||||
AddMenuItem( editMenu, ID_TOOL_SCREENCOPY_TOCLIBBOARD,
|
||||
_( "Copy 3D Image" ),
|
||||
KiBitmap( copy_xpm ) );
|
||||
|
||||
menuBar->Append( prefsMenu, _( "&Preferences" ) );
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_MOUSEWHEEL_PANNING,
|
||||
_( "Use Touchpad to Pan" ),
|
||||
KiBitmap( tools_xpm ), wxITEM_CHECK );
|
||||
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_REALISTIC_MODE,
|
||||
_( "Realistic Mode" ),
|
||||
KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
|
||||
|
||||
wxMenu * renderEngineList = new wxMenu;
|
||||
AddMenuItem( prefsMenu, renderEngineList, ID_MENU3D_ENGINE,
|
||||
_( "Render Engine" ), KiBitmap( render_mode_xpm ) );
|
||||
|
||||
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_OPENGL_LEGACY,
|
||||
_( "OpenGL" ),
|
||||
wxEmptyString );
|
||||
|
||||
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_RAYTRACING,
|
||||
_( "Raytracing" ),
|
||||
wxEmptyString );
|
||||
|
||||
renderEngineList->Check( ID_MENU3D_ENGINE_OPENGL_LEGACY,
|
||||
m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
|
||||
|
||||
renderEngineList->Check( ID_MENU3D_ENGINE_RAYTRACING,
|
||||
m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
|
||||
|
||||
wxMenu * renderOptionsMenu = new wxMenu;
|
||||
AddMenuItem( prefsMenu, renderOptionsMenu, ID_MENU3D_FL,
|
||||
_( "Render Options" ), KiBitmap( options_3drender_xpm ) );
|
||||
|
||||
wxMenu * materialsList = new wxMenu;
|
||||
AddMenuItem( renderOptionsMenu, materialsList, ID_MENU3D_FL_RENDER_MATERIAL,
|
||||
_( "Material Properties" ), KiBitmap( color_materials_xpm ) );
|
||||
|
||||
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL,
|
||||
_( "Use All Properties" ),
|
||||
_( "Use all material properties from each 3D model file" ) );
|
||||
|
||||
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY,
|
||||
_( "Use Diffuse Only" ),
|
||||
_( "Use only the diffuse color property from model 3D model file " ) );
|
||||
|
||||
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE,
|
||||
_( "CAD Color Style" ),
|
||||
_( "Use a CAD color style based on the diffuse color of the material" ) );
|
||||
|
||||
// Add specific preferences for OpenGL
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
wxMenu * renderOptionsMenu_OPENGL = new wxMenu;
|
||||
|
||||
AddMenuItem( renderOptionsMenu, renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL,
|
||||
_( "OpenGL Options" ), KiBitmap( tools_xpm ) );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS,
|
||||
_( "Show Copper Thickness" ),
|
||||
_( "Shows the copper thickness on copper layers (slower loading)"),
|
||||
KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX,
|
||||
_( "Show Model Bounding Boxes" ),
|
||||
KiBitmap( ortho_xpm ), wxITEM_CHECK );
|
||||
|
||||
|
||||
// Add specific preferences for Raytracing
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
wxMenu * renderOptionsMenu_RAYTRACING = new wxMenu;
|
||||
AddMenuItem( renderOptionsMenu, renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING,
|
||||
_( "Raytracing Options" ), KiBitmap( tools_xpm ) );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS,
|
||||
_( "Render Shadows" ),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES,
|
||||
_( "Procedural Textures" ),
|
||||
_( "Apply procedural textures to materials (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_BACKFLOOR,
|
||||
_( "Add Floor" ),
|
||||
_( "Adds a floor plane below the board (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFRACTIONS,
|
||||
_( "Refractions" ),
|
||||
_( "Render materials with refractions properties on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFLECTIONS,
|
||||
_( "Reflections" ),
|
||||
_( "Render materials with reflections properties on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING,
|
||||
_( "Anti-aliasing" ),
|
||||
_( "Render with improoved quality on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_POST_PROCESSING,
|
||||
_( "Post-processing" ),
|
||||
_( "Apply Screen Space Ambient Occlusion and Global Illumination reflections on final render (slow)"),
|
||||
KiBitmap( green_xpm ), wxITEM_CHECK );
|
||||
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
|
||||
// Colors, axis and grid elements
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Add submenu set Colors
|
||||
wxMenu * setColorMenu = new wxMenu;
|
||||
AddMenuItem( prefsMenu, setColorMenu, ID_MENU3D_COLOR,
|
||||
_( "Choose Colors" ), KiBitmap( palette_xpm ) );
|
||||
|
||||
wxMenu * setBgColorMenu = new wxMenu;
|
||||
AddMenuItem( setColorMenu, setBgColorMenu, ID_MENU3D_BGCOLOR,
|
||||
_( "Background Color" ), KiBitmap( palette_xpm ) );
|
||||
|
||||
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_TOP_SELECTION,
|
||||
_( "Background Top Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
|
||||
|
||||
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_BOTTOM_SELECTION,
|
||||
_( "Background Bottom Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_SILKSCREEN_COLOR_SELECTION,
|
||||
_( "Silkscreen Color..." ), KiBitmap( setcolor_silkscreen_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERMASK_COLOR_SELECTION,
|
||||
_( "Solder Mask Color..." ), KiBitmap( setcolor_soldermask_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERPASTE_COLOR_SELECTION,
|
||||
_( "Solder Paste Color..." ), KiBitmap( setcolor_solderpaste_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_COPPER_COLOR_SELECTION,
|
||||
_( "Copper/Surface Finish Color..." ), KiBitmap( setcolor_copper_xpm ) );
|
||||
|
||||
AddMenuItem( setColorMenu, ID_MENU3D_PCB_BODY_COLOR_SELECTION,
|
||||
_( "Board Body Color..." ), KiBitmap( setcolor_board_body_xpm ) );
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_AXIS_ONOFF,
|
||||
_( "Show 3D &Axis" ), KiBitmap( axis3d_front_xpm ), wxITEM_CHECK );
|
||||
|
||||
|
||||
// Creates grid menu
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxMenu * gridlistMenu = new wxMenu;
|
||||
AddMenuItem( prefsMenu, gridlistMenu, ID_MENU3D_GRID,
|
||||
_( "3D Grid" ), KiBitmap( grid_xpm ) );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_NOGRID, _( "No 3D Grid" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_10_MM, _( "3D Grid 10 mm" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_5_MM, _( "3D Grid 5 mm" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_2P5_MM, _( "3D Grid 2.5 mm" ), wxEmptyString );
|
||||
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_1_MM, _( "3D Grid 1 mm" ), wxEmptyString );
|
||||
|
||||
// If the grid is on, check the corresponding menuitem showing the grid size
|
||||
if( m_settings.GridGet() != GRID3D_NONE )
|
||||
{
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_10_MM, m_settings.GridGet() == GRID3D_10MM );
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_5_MM, m_settings.GridGet() == GRID3D_5MM );
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_2P5_MM, m_settings.GridGet() == GRID3D_2P5MM );
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_1_MM, m_settings.GridGet() == GRID3D_1MM );
|
||||
}
|
||||
else
|
||||
gridlistMenu->Check( ID_MENU3D_GRID_NOGRID, true );
|
||||
|
||||
|
||||
// Display elements options
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_SHOW_BOARD_BODY,
|
||||
_( "Show Board Bod&y" ), KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_ZONE_ONOFF,
|
||||
_( "Show Zone &Filling" ), KiBitmap( add_zone_xpm ), wxITEM_CHECK );
|
||||
|
||||
wxMenu * moduleAttributes = new wxMenu;
|
||||
AddMenuItem( prefsMenu, moduleAttributes, ID_MENU3D_MODULE_ONOFF,
|
||||
_( "Show 3D M&odels" ), KiBitmap( shape_3d_xpm ) );
|
||||
moduleAttributes->AppendCheckItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL,
|
||||
_( "Through Hole" ),
|
||||
_( "Footprint Properties -> Placement type -> Through hole" ) );
|
||||
|
||||
moduleAttributes->AppendCheckItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL_INSERT,
|
||||
_( "Surface Mount" ),
|
||||
_( "Footprint Properties -> Placement type -> Surface mount" ) );
|
||||
|
||||
moduleAttributes->AppendCheckItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_VIRTUAL,
|
||||
_( "Virtual" ),
|
||||
_( "Footprint Properties -> Placement type -> Virtual (eg: edge connectors, test points, mechanical parts)" ) );
|
||||
|
||||
// Layer options
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
wxMenu * layersMenu = new wxMenu;
|
||||
AddMenuItem( prefsMenu, layersMenu, ID_MENU3D_LAYERS,
|
||||
_( "Show &Layers" ), KiBitmap( tools_xpm ) );
|
||||
|
||||
AddMenuItem( layersMenu, ID_MENU3D_ADHESIVE_ONOFF,
|
||||
_( "Show &Adhesive Layers" ), KiBitmap( tools_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( layersMenu, ID_MENU3D_SILKSCREEN_ONOFF,
|
||||
_( "Show &Silkscreen Layers" ), KiBitmap( text_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( layersMenu, ID_MENU3D_SOLDER_MASK_ONOFF,
|
||||
_( "Show Solder &Mask Layers" ), KiBitmap( pads_mask_layers_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( layersMenu, ID_MENU3D_SOLDER_PASTE_ONOFF,
|
||||
_( "Show Solder &Paste Layers" ), KiBitmap( pads_mask_layers_xpm ), wxITEM_CHECK );
|
||||
|
||||
// Other layers are not "board" layers, and are not shown in realistic mode
|
||||
// These menus will be disabled in in realistic mode
|
||||
AddMenuItem( layersMenu, ID_MENU3D_COMMENTS_ONOFF,
|
||||
_( "Show &Comments and Drawings Layers" ), KiBitmap( editor_xpm ), wxITEM_CHECK );
|
||||
|
||||
AddMenuItem( layersMenu, ID_MENU3D_ECO_ONOFF,
|
||||
_( "Show &Eco Layers" ), KiBitmap( editor_xpm ), wxITEM_CHECK );
|
||||
|
||||
// Reset options
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( prefsMenu, ID_MENU3D_RESET_DEFAULTS,
|
||||
_( "Reset to Default Settings" ),
|
||||
KiBitmap( tools_xpm ) );
|
||||
|
||||
// Help menu
|
||||
// /////////////////////////////////////////////////////////////////////////
|
||||
menuBar->Append( helpMenu, _( "&Help" ) );
|
||||
|
||||
AddMenuItem( helpMenu, ID_MENU3D_HELP_HOTKEY_SHOW_CURRENT_LIST,
|
||||
_( "&List Hotkeys..." ),
|
||||
_( "Displays the current hotkeys list and corresponding commands" ),
|
||||
KiBitmap( hotkeys_xpm ) );
|
||||
|
||||
SetMenuBar( menuBar );
|
||||
SetMenuBarOptionsState();
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::SetMenuBarOptionsState()
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState" ) );
|
||||
|
||||
wxMenuBar* menuBar = GetMenuBar();
|
||||
|
||||
if( menuBar == NULL )
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState menuBar == NULL" ) );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
wxMenuItem* item;
|
||||
// Set the state of toggle menus according to the current display options
|
||||
item = menuBar->FindItem( ID_MENU3D_MOUSEWHEEL_PANNING );
|
||||
item->Check( m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) );
|
||||
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_ENGINE_OPENGL_LEGACY );
|
||||
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_ENGINE_RAYTRACING );
|
||||
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_REALISTIC_MODE );
|
||||
item->Check( m_settings.GetFlag( FL_USE_REALISTIC_MODE ) );
|
||||
item = menuBar->FindItem( ID_MENU3D_COMMENTS_ONOFF );
|
||||
item->Enable( !m_settings.GetFlag( FL_USE_REALISTIC_MODE ) );
|
||||
item = menuBar->FindItem( ID_MENU3D_ECO_ONOFF );
|
||||
item->Enable( !m_settings.GetFlag( FL_USE_REALISTIC_MODE ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL );
|
||||
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_NORMAL );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY );
|
||||
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_DIFFUSE_ONLY );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE );
|
||||
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_CAD_MODE );
|
||||
|
||||
// OpenGL
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX ) );
|
||||
|
||||
// Raytracing
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_SHADOWS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_BACKFLOOR );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_BACKFLOOR ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFRACTIONS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFRACTIONS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFLECTIONS );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFLECTIONS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_POST_PROCESSING );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES );
|
||||
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES ) );
|
||||
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_SHOW_BOARD_BODY );
|
||||
item->Check( m_settings.GetFlag( FL_SHOW_BOARD_BODY ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL );
|
||||
item->Check( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL_INSERT );
|
||||
item->Check( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_VIRTUAL );
|
||||
item->Check( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_ZONE_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_ZONE ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_AXIS_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_AXIS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_ADHESIVE_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_ADHESIVE ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_SILKSCREEN_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_SILKSCREEN ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_SOLDER_MASK_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_SOLDERMASK ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_SOLDER_PASTE_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_SOLDERPASTE ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_COMMENTS_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_COMMENTS ) );
|
||||
|
||||
item = menuBar->FindItem( ID_MENU3D_ECO_ONOFF );
|
||||
item->Check( m_settings.GetFlag( FL_ECO ));
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::SetToolbars()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -54,9 +54,7 @@ void EDA_3D_VIEWER::Install3DViewOptionDialog( wxCommandEvent& event )
|
||||
{
|
||||
SetMenuBarOptionsState();
|
||||
|
||||
// Force immediate display redraw:
|
||||
ReloadRequest();
|
||||
m_canvas->Request_refresh();
|
||||
NewDisplay( true );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Aug 4 2017)
|
||||
// C++ code generated with wxFormBuilder (version Jul 11 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "dialog_3D_view_option_base.h"
|
||||
@@ -87,7 +87,10 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
|
||||
fgSizerRenderOptions->Add( fgSizer3, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizeLeft->Add( fgSizerRenderOptions, 1, wxEXPAND, 5 );
|
||||
bSizeLeft->Add( fgSizerRenderOptions, 0, wxEXPAND|wxBOTTOM, 5 );
|
||||
|
||||
|
||||
bSizeLeft->Add( 0, 10, 0, 0, 5 );
|
||||
|
||||
m_staticText3DmodelVisibility = new wxStaticText( this, wxID_ANY, _("3D model visibility:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText3DmodelVisibility->Wrap( -1 );
|
||||
@@ -128,10 +131,10 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
|
||||
fgSizer3DVisibility->Add( m_checkBox3DshapesVirtual, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
bSizeLeft->Add( fgSizer3DVisibility, 1, wxEXPAND, 5 );
|
||||
bSizeLeft->Add( fgSizer3DVisibility, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizerUpper->Add( bSizeLeft, 1, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
|
||||
bSizerUpper->Add( bSizeLeft, 1, wxEXPAND, 5 );
|
||||
|
||||
m_staticlineVertical = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
|
||||
bSizerUpper->Add( m_staticlineVertical, 0, wxEXPAND | wxALL, 5 );
|
||||
@@ -190,9 +193,12 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
|
||||
fgSizerShowBrdLayersOpts->Add( m_checkBoxAdhesive, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
bSizeLayer->Add( fgSizerShowBrdLayersOpts, 1, wxEXPAND, 5 );
|
||||
bSizeLayer->Add( fgSizerShowBrdLayersOpts, 0, wxEXPAND, 5 );
|
||||
|
||||
m_staticTextUserLayers = new wxStaticText( this, wxID_ANY, _("User layers:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
bSizeLayer->Add( 0, 10, 0, 0, 5 );
|
||||
|
||||
m_staticTextUserLayers = new wxStaticText( this, wxID_ANY, _("User layers (not shown in realistic mode):"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextUserLayers->Wrap( -1 );
|
||||
m_staticTextUserLayers->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
|
||||
|
||||
@@ -222,7 +228,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
|
||||
fgSizerShowUserLayersOpts->Add( m_checkBoxECO, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
bSizeLayer->Add( fgSizerShowUserLayersOpts, 1, wxEXPAND, 5 );
|
||||
bSizeLayer->Add( fgSizerShowUserLayersOpts, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizerRight->Add( bSizeLayer, 1, wxEXPAND, 5 );
|
||||
@@ -234,7 +240,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
|
||||
bSizerMain->Add( bSizerUpper, 1, wxEXPAND, 5 );
|
||||
|
||||
m_staticlineH = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizerMain->Add( m_staticlineH, 0, wxEXPAND | wxALL, 5 );
|
||||
bSizerMain->Add( m_staticlineH, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||
|
||||
m_sdbSizer = new wxStdDialogButtonSizer();
|
||||
m_sdbSizerOK = new wxButton( this, wxID_OK );
|
||||
@@ -243,7 +249,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
|
||||
m_sdbSizer->AddButton( m_sdbSizerCancel );
|
||||
m_sdbSizer->Realize();
|
||||
|
||||
bSizerMain->Add( m_sdbSizer, 0, wxALL|wxEXPAND, 5 );
|
||||
bSizerMain->Add( m_sdbSizer, 0, wxALL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
|
||||
this->SetSizer( bSizerMain );
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<wxFormBuilder_Project>
|
||||
<FileVersion major="1" minor="13" />
|
||||
<FileVersion major="1" minor="14" />
|
||||
<object class="Project" expanded="1">
|
||||
<property name="class_decoration"></property>
|
||||
<property name="code_generation">C++</property>
|
||||
@@ -14,6 +14,7 @@
|
||||
<property name="file">dialog_3D_view_option_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="indent_with_spaces"></property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">dialog_3D_view_option_base</property>
|
||||
<property name="namespace"></property>
|
||||
@@ -44,7 +45,7 @@
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">DIALOG_3D_VIEW_OPTIONS_BASE</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">571,399</property>
|
||||
<property name="size">571,372</property>
|
||||
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
|
||||
<property name="title">3D Display Options</property>
|
||||
@@ -54,13 +55,20 @@
|
||||
<property name="window_style"></property>
|
||||
<event name="OnActivate"></event>
|
||||
<event name="OnActivateApp"></event>
|
||||
<event name="OnAuiFindManager"></event>
|
||||
<event name="OnAuiPaneActivated"></event>
|
||||
<event name="OnAuiPaneButton"></event>
|
||||
<event name="OnAuiPaneClose"></event>
|
||||
<event name="OnAuiPaneMaximize"></event>
|
||||
<event name="OnAuiPaneRestore"></event>
|
||||
<event name="OnAuiRender"></event>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnClose"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -75,17 +83,23 @@
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMaximize"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnMove"></event>
|
||||
<event name="OnMoveEnd"></event>
|
||||
<event name="OnMoveStart"></event>
|
||||
<event name="OnMoving"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnShow"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
@@ -104,7 +118,7 @@
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
@@ -144,6 +158,7 @@
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Render options:</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
@@ -169,7 +184,14 @@
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -196,8 +218,8 @@
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<property name="flag">wxEXPAND|wxBOTTOM</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxFlexGridSizer" expanded="1">
|
||||
<property name="cols">3</property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
@@ -276,7 +298,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -363,7 +392,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox">OnCheckRealisticMode</event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -455,7 +491,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -542,7 +585,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -634,7 +684,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -721,7 +778,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -813,7 +877,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -900,7 +971,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -992,7 +1070,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -1079,7 +1164,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -1125,6 +1217,16 @@
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag"></property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="spacer" expanded="1">
|
||||
<property name="height">10</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="width">0</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
@@ -1158,6 +1260,7 @@
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">3D model visibility:</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
@@ -1183,7 +1286,14 @@
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -1211,7 +1321,7 @@
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxFlexGridSizer" expanded="1">
|
||||
<property name="cols">3</property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
@@ -1290,7 +1400,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -1377,7 +1494,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -1469,7 +1593,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -1556,7 +1687,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -1648,7 +1786,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -1735,7 +1880,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -1821,7 +1973,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -1897,6 +2056,7 @@
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Board layers:</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
@@ -1922,7 +2082,14 @@
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -1950,7 +2117,7 @@
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxFlexGridSizer" expanded="1">
|
||||
<property name="cols">3</property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
@@ -2029,7 +2196,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -2116,7 +2290,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -2208,7 +2389,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -2295,7 +2483,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -2387,7 +2582,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -2474,7 +2676,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -2566,7 +2775,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -2653,7 +2869,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -2681,6 +2904,16 @@
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag"></property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="spacer" expanded="1">
|
||||
<property name="height">10</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="width">0</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
@@ -2713,7 +2946,8 @@
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">User layers:</property>
|
||||
<property name="label">User layers (not shown in realistic mode):</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
@@ -2739,7 +2973,14 @@
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -2767,7 +3008,7 @@
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxFlexGridSizer" expanded="1">
|
||||
<property name="cols">3</property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
@@ -2846,7 +3087,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -2933,7 +3181,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -3025,7 +3280,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -3112,7 +3374,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
@@ -3148,7 +3417,7 @@
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND | wxALL</property>
|
||||
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticLine" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
@@ -3202,7 +3471,14 @@
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnAux1DClick"></event>
|
||||
<event name="OnAux1Down"></event>
|
||||
<event name="OnAux1Up"></event>
|
||||
<event name="OnAux2DClick"></event>
|
||||
<event name="OnAux2Down"></event>
|
||||
<event name="OnAux2Up"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCharHook"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
@@ -3229,7 +3505,7 @@
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxEXPAND</property>
|
||||
<property name="flag">wxALL|wxALIGN_RIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStdDialogButtonSizer" expanded="1">
|
||||
<property name="Apply">0</property>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Aug 4 2017)
|
||||
// C++ code generated with wxFormBuilder (version Jul 11 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __DIALOG_3D_VIEW_OPTION_BASE_H__
|
||||
@@ -11,8 +11,6 @@
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
class DIALOG_SHIM;
|
||||
|
||||
#include "dialog_shim.h"
|
||||
#include <wx/string.h>
|
||||
#include <wx/stattext.h>
|
||||
@@ -85,7 +83,7 @@ class DIALOG_3D_VIEW_OPTIONS_BASE : public DIALOG_SHIM
|
||||
|
||||
public:
|
||||
|
||||
DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("3D Display Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 571,399 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("3D Display Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 571,372 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
~DIALOG_3D_VIEW_OPTIONS_BASE();
|
||||
|
||||
};
|
||||
|
||||
@@ -141,24 +141,17 @@ BEGIN_EVENT_TABLE( EDA_3D_VIEWER, EDA_BASE_FRAME )
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway,
|
||||
PCB_BASE_FRAME *aParent,
|
||||
const wxString &aTitle,
|
||||
long style ) :
|
||||
EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway, PCB_BASE_FRAME *aParent,
|
||||
const wxString &aTitle, long style ) :
|
||||
|
||||
KIWAY_PLAYER( aKiway,
|
||||
aParent,
|
||||
FRAME_PCB_DISPLAY3D,
|
||||
aTitle,
|
||||
wxDefaultPosition,
|
||||
wxDefaultSize,
|
||||
style,
|
||||
VIEWER3D_FRAMENAME )
|
||||
KIWAY_PLAYER( aKiway, aParent,
|
||||
FRAME_PCB_DISPLAY3D, aTitle,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
style, VIEWER3D_FRAMENAME )
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::EDA_3D_VIEWER %s" ), aTitle );
|
||||
|
||||
m_canvas = NULL;
|
||||
m_defaultFileName = "";
|
||||
|
||||
// Give it an icon
|
||||
wxIcon icon;
|
||||
@@ -203,6 +196,8 @@ EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway,
|
||||
m_mainToolBar->EnableTool( ID_RENDER_CURRENT_VIEW,
|
||||
(m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY) );
|
||||
|
||||
m_mainToolBar->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( EDA_3D_VIEWER::OnKeyEvent ), NULL, this );
|
||||
|
||||
// Fixes bug in Windows (XP and possibly others) where the canvas requires the focus
|
||||
// in order to receive mouse events. Otherwise, the user has to click somewhere on
|
||||
// the canvas before it will respond to mouse wheel events.
|
||||
@@ -213,6 +208,8 @@ EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway,
|
||||
|
||||
EDA_3D_VIEWER::~EDA_3D_VIEWER()
|
||||
{
|
||||
m_mainToolBar->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( EDA_3D_VIEWER::OnKeyEvent ), NULL, this );
|
||||
|
||||
m_auimgr.UnInit();
|
||||
|
||||
// m_canvas delete will be called by wxWidget manager
|
||||
@@ -284,8 +281,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
break;
|
||||
|
||||
case ID_RELOAD3D_BOARD:
|
||||
ReloadRequest();
|
||||
m_canvas->Request_refresh();
|
||||
NewDisplay( true );
|
||||
break;
|
||||
|
||||
case ID_ROTATE3D_X_POS:
|
||||
@@ -351,7 +347,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
if( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY )
|
||||
m_canvas->Request_refresh();
|
||||
else
|
||||
ReloadRequest();
|
||||
NewDisplay( true );
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -361,7 +357,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
if( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY )
|
||||
m_canvas->Request_refresh();
|
||||
else
|
||||
ReloadRequest();
|
||||
NewDisplay( true );
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -392,27 +388,27 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
case ID_MENU3D_REALISTIC_MODE:
|
||||
m_settings.SetFlag( FL_USE_REALISTIC_MODE, isChecked );
|
||||
SetMenuBarOptionsState();
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL:
|
||||
m_settings.MaterialModeSet( MATERIAL_MODE_NORMAL );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY:
|
||||
m_settings.MaterialModeSet( MATERIAL_MODE_DIFFUSE_ONLY );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE:
|
||||
m_settings.MaterialModeSet( MATERIAL_MODE_CAD_MODE );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS:
|
||||
m_settings.SetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS, isChecked );
|
||||
ReloadRequest();
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX:
|
||||
@@ -427,12 +423,12 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
|
||||
case ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES:
|
||||
m_settings.SetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_RAYTRACING_BACKFLOOR:
|
||||
m_settings.SetFlag( FL_RENDER_RAYTRACING_BACKFLOOR, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_RAYTRACING_REFRACTIONS:
|
||||
@@ -447,7 +443,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
|
||||
case ID_MENU3D_FL_RAYTRACING_POST_PROCESSING:
|
||||
m_settings.SetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING:
|
||||
@@ -457,7 +453,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
|
||||
case ID_MENU3D_SHOW_BOARD_BODY:
|
||||
m_settings.SetFlag( FL_SHOW_BOARD_BODY, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_AXIS_ONOFF:
|
||||
@@ -467,52 +463,52 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
|
||||
case ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL:
|
||||
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL_INSERT:
|
||||
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_VIRTUAL:
|
||||
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_ZONE_ONOFF:
|
||||
m_settings.SetFlag( FL_ZONE, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_ADHESIVE_ONOFF:
|
||||
m_settings.SetFlag( FL_ADHESIVE, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_SILKSCREEN_ONOFF:
|
||||
m_settings.SetFlag( FL_SILKSCREEN, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_SOLDER_MASK_ONOFF:
|
||||
m_settings.SetFlag( FL_SOLDERMASK, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_SOLDER_PASTE_ONOFF:
|
||||
m_settings.SetFlag( FL_SOLDERPASTE, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_COMMENTS_ONOFF:
|
||||
m_settings.SetFlag( FL_COMMENTS, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_ECO_ONOFF:
|
||||
m_settings.SetFlag( FL_ECO, isChecked );
|
||||
ReloadRequest( );
|
||||
NewDisplay( true );
|
||||
return;
|
||||
|
||||
case ID_MENU3D_RESET_DEFAULTS:
|
||||
@@ -525,10 +521,10 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
|
||||
// Refresh menu option state
|
||||
SetMenuBarOptionsState();
|
||||
|
||||
// Tell canvas that we (may) changed the render engine
|
||||
// Tell canvas that we (may have) changed the render engine
|
||||
RenderEngineChanged();
|
||||
|
||||
ReloadRequest();
|
||||
NewDisplay( true );
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -905,6 +901,15 @@ void EDA_3D_VIEWER::OnRightClick( const wxPoint &MousePos, wxMenu *PopMenu )
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::OnKeyEvent( wxKeyEvent& event )
|
||||
{
|
||||
if( m_canvas )
|
||||
return m_canvas->OnKeyEvent( event );
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::RedrawActiveWindow( wxDC *DC, bool EraseBg )
|
||||
{
|
||||
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::RedrawActiveWindow" ) );
|
||||
@@ -934,7 +939,7 @@ void EDA_3D_VIEWER::takeScreenshot( wxCommandEvent& event )
|
||||
fn.SetExt( file_ext );
|
||||
|
||||
fullFileName = EDA_FILE_SELECTOR( _( "3D Image File Name:" ), fn.GetPath(),
|
||||
m_defaultFileName, file_ext, mask, this,
|
||||
m_defaultSaveScreenshotFileName, file_ext, mask, this,
|
||||
wxFD_SAVE | wxFD_OVERWRITE_PROMPT, true );
|
||||
|
||||
if( fullFileName.IsEmpty() )
|
||||
@@ -1050,7 +1055,7 @@ bool EDA_3D_VIEWER::Set3DSilkScreenColorFromUser()
|
||||
&definedColors );
|
||||
|
||||
if( change )
|
||||
NewDisplay();
|
||||
NewDisplay( true );
|
||||
|
||||
return change;
|
||||
}
|
||||
@@ -1086,7 +1091,7 @@ bool EDA_3D_VIEWER::Set3DSolderMaskColorFromUser()
|
||||
&definedColors );
|
||||
|
||||
if( change )
|
||||
NewDisplay();
|
||||
NewDisplay( true );
|
||||
|
||||
return change;
|
||||
}
|
||||
@@ -1112,7 +1117,7 @@ bool EDA_3D_VIEWER::Set3DCopperColorFromUser()
|
||||
&definedColors );
|
||||
|
||||
if( change )
|
||||
NewDisplay();
|
||||
NewDisplay( true );
|
||||
|
||||
return change;
|
||||
}
|
||||
@@ -1142,7 +1147,7 @@ bool EDA_3D_VIEWER::Set3DBoardBodyColorFromUser()
|
||||
&definedColors );
|
||||
|
||||
if( change )
|
||||
NewDisplay();
|
||||
NewDisplay( true );
|
||||
|
||||
return change;
|
||||
}
|
||||
@@ -1167,74 +1172,7 @@ bool EDA_3D_VIEWER::Set3DSolderPasteColorFromUser()
|
||||
&definedColors );
|
||||
|
||||
if( change )
|
||||
NewDisplay();
|
||||
NewDisplay( true );
|
||||
|
||||
return change;
|
||||
}
|
||||
|
||||
|
||||
// Define 3D Viewer Hotkeys
|
||||
static EDA_HOTKEY Hk3D_PivotCenter( _HKI( "Center pivot rotation (Middle mouse click)" ), 0, WXK_SPACE );
|
||||
static EDA_HOTKEY Hk3D_MoveLeft( _HKI( "Move board Left" ), ID_POPUP_MOVE3D_LEFT, WXK_LEFT );
|
||||
static EDA_HOTKEY Hk3D_MoveRight( _HKI( "Move board Right" ), ID_POPUP_MOVE3D_RIGHT, WXK_RIGHT );
|
||||
static EDA_HOTKEY Hk3D_MoveUp( _HKI( "Move board Up" ), ID_POPUP_MOVE3D_UP, WXK_UP );
|
||||
static EDA_HOTKEY Hk3D_MoveDown( _HKI( "Move board Down" ), ID_POPUP_MOVE3D_DOWN, WXK_DOWN );
|
||||
static EDA_HOTKEY Hk3D_HomeView( _HKI( "Home view" ), 0, WXK_HOME );
|
||||
static EDA_HOTKEY Hk3D_ResetView( _HKI( "Reset view" ), 0, 'R' );
|
||||
|
||||
static EDA_HOTKEY Hk3D_ViewFront( _HKI( "View Front" ), ID_POPUP_VIEW_YPOS, 'Y' );
|
||||
static EDA_HOTKEY Hk3D_ViewBack( _HKI( "View Back" ), ID_POPUP_VIEW_YNEG, GR_KB_SHIFT + 'Y' );
|
||||
static EDA_HOTKEY Hk3D_ViewLeft( _HKI( "View Left" ), ID_POPUP_VIEW_XNEG, GR_KB_SHIFT + 'X' );
|
||||
static EDA_HOTKEY Hk3D_ViewRight( _HKI( "View Right" ), ID_POPUP_VIEW_XPOS, 'X' );
|
||||
static EDA_HOTKEY Hk3D_ViewTop( _HKI( "View Top" ), ID_POPUP_VIEW_ZPOS, 'Z' );
|
||||
static EDA_HOTKEY Hk3D_ViewBot( _HKI( "View Bot" ), ID_POPUP_VIEW_ZNEG, GR_KB_SHIFT + 'Z' );
|
||||
|
||||
static EDA_HOTKEY Hk3D_Rotate45axisZ( _HKI( "Rotate 45 degrees over Z axis" ), 0, WXK_TAB );
|
||||
static EDA_HOTKEY Hk3D_ZoomIn( _HKI( "Zoom in " ), ID_POPUP_ZOOMIN, WXK_F1 );
|
||||
static EDA_HOTKEY Hk3D_ZoomOut( _HKI( "Zoom out" ), ID_POPUP_ZOOMOUT, WXK_F2 );
|
||||
static EDA_HOTKEY Hk3D_AttributesTHT( _HKI( "Toggle 3D models with type Through Hole" ), 0, 'T' );
|
||||
static EDA_HOTKEY Hk3D_AttributesSMD( _HKI( "Toggle 3D models with type Surface Mount" ), 0, 'S' );
|
||||
static EDA_HOTKEY Hk3D_AttributesVirtual( _HKI( "Toggle 3D models with type Virtual" ), 0, 'V' );
|
||||
|
||||
static wxString viewer3DSectionTitle( _HKI( "Viewer 3D" ) );
|
||||
|
||||
// List of hotkey descriptors for the 3D Viewer only
|
||||
// !TODO: this is used just for help menu, the structured are not used yet in the viewer
|
||||
static EDA_HOTKEY* viewer3d_Hotkey_List[] =
|
||||
{
|
||||
&Hk3D_PivotCenter,
|
||||
&Hk3D_MoveLeft,
|
||||
&Hk3D_MoveRight,
|
||||
&Hk3D_MoveUp,
|
||||
&Hk3D_MoveDown,
|
||||
&Hk3D_HomeView,
|
||||
&Hk3D_ResetView,
|
||||
&Hk3D_ViewFront,
|
||||
&Hk3D_ViewBack,
|
||||
&Hk3D_ViewLeft,
|
||||
&Hk3D_ViewRight,
|
||||
&Hk3D_ViewTop,
|
||||
&Hk3D_ViewBot,
|
||||
&Hk3D_Rotate45axisZ,
|
||||
&Hk3D_ZoomIn,
|
||||
&Hk3D_ZoomOut,
|
||||
&Hk3D_AttributesTHT,
|
||||
&Hk3D_AttributesSMD,
|
||||
&Hk3D_AttributesVirtual,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
// list of sections and corresponding hotkey list for the 3D Viewer
|
||||
// (used to list current hotkeys)
|
||||
struct EDA_HOTKEY_CONFIG g_3DViewer_Hokeys_Descr[] =
|
||||
{
|
||||
{ &g_CommonSectionTag, viewer3d_Hotkey_List, &viewer3DSectionTitle },
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::DisplayHotKeys()
|
||||
{
|
||||
DisplayHotkeyList( this, g_3DViewer_Hokeys_Descr );
|
||||
}
|
||||
|
||||
@@ -52,8 +52,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
|
||||
|
||||
public:
|
||||
|
||||
EDA_3D_VIEWER( KIWAY *aKiway,
|
||||
PCB_BASE_FRAME *aParent,
|
||||
EDA_3D_VIEWER( KIWAY *aKiway, PCB_BASE_FRAME *aParent,
|
||||
const wxString &aTitle,
|
||||
long style = KICAD_DEFAULT_3D_DRAWFRAME_STYLE );
|
||||
|
||||
@@ -66,7 +65,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
|
||||
/**
|
||||
* Request reloading the 3D view. However the request will be executed
|
||||
* only when the 3D canvas is refreshed.
|
||||
* It allows to prepare changes and request for 3D rebuild only when all
|
||||
* It allows one to prepare changes and request for 3D rebuild only when all
|
||||
* changes are committed.
|
||||
* This is made because the 3D rebuild can take a long time, and this rebuild
|
||||
* cannot always made after each change, for calculation time reason.
|
||||
@@ -93,14 +92,14 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
|
||||
void SetDefaultFileName( const wxString &aFn )
|
||||
{
|
||||
wxFileName fn( aFn );
|
||||
m_defaultFileName = fn.GetName();
|
||||
m_defaultSaveScreenshotFileName = fn.GetName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Function GetDefaultFileName
|
||||
* @return the default suggested file name
|
||||
*/
|
||||
const wxString &GetDefaultFileName() const { return m_defaultFileName; }
|
||||
const wxString &GetDefaultFileName() const { return m_defaultSaveScreenshotFileName; }
|
||||
|
||||
/**
|
||||
* Function GetSettings
|
||||
@@ -202,8 +201,8 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
|
||||
void LoadSettings( wxConfigBase *aCfg ) override;
|
||||
|
||||
void OnLeftClick( wxDC *DC, const wxPoint &MousePos );
|
||||
|
||||
void OnRightClick( const wxPoint &MousePos, wxMenu *PopMenu );
|
||||
void OnKeyEvent( wxKeyEvent& event );
|
||||
|
||||
void RedrawActiveWindow( wxDC *DC, bool EraseBg );
|
||||
|
||||
@@ -226,7 +225,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
|
||||
/**
|
||||
* Filename to propose for save a screenshot
|
||||
*/
|
||||
wxString m_defaultFileName;
|
||||
wxString m_defaultSaveScreenshotFileName;
|
||||
|
||||
/**
|
||||
* The canvas where the openGL context will be rendered
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file hotkeys.cpp
|
||||
* @brief list of hotkeys used in 3D viewer
|
||||
*/
|
||||
|
||||
#include <hotkeys_basic.h>
|
||||
#include "eda_3d_viewer.h"
|
||||
#include "../3d_viewer_id.h"
|
||||
|
||||
// Define 3D Viewer Hotkeys
|
||||
static EDA_HOTKEY HkHotkeysHelp( _HKI( "Help (this window)" ), HK_HELP, GR_KB_CTRL + WXK_F1 );
|
||||
static EDA_HOTKEY Hk3D_PivotCenter( _HKI( "Center pivot rotation (Middle mouse click)" ), 0, WXK_SPACE );
|
||||
static EDA_HOTKEY Hk3D_MoveLeft( _HKI( "Move board Left" ), ID_POPUP_MOVE3D_LEFT, WXK_LEFT );
|
||||
static EDA_HOTKEY Hk3D_MoveRight( _HKI( "Move board Right" ), ID_POPUP_MOVE3D_RIGHT, WXK_RIGHT );
|
||||
static EDA_HOTKEY Hk3D_MoveUp( _HKI( "Move board Up" ), ID_POPUP_MOVE3D_UP, WXK_UP );
|
||||
static EDA_HOTKEY Hk3D_MoveDown( _HKI( "Move board Down" ), ID_POPUP_MOVE3D_DOWN, WXK_DOWN );
|
||||
static EDA_HOTKEY Hk3D_HomeView( _HKI( "Home view" ), 0, WXK_HOME );
|
||||
static EDA_HOTKEY Hk3D_ResetView( _HKI( "Reset view" ), 0, 'R' );
|
||||
|
||||
static EDA_HOTKEY Hk3D_ViewFront( _HKI( "View Front" ), ID_POPUP_VIEW_YPOS, 'Y' );
|
||||
static EDA_HOTKEY Hk3D_ViewBack( _HKI( "View Back" ), ID_POPUP_VIEW_YNEG, GR_KB_SHIFT + 'Y' );
|
||||
static EDA_HOTKEY Hk3D_ViewLeft( _HKI( "View Left" ), ID_POPUP_VIEW_XNEG, GR_KB_SHIFT + 'X' );
|
||||
static EDA_HOTKEY Hk3D_ViewRight( _HKI( "View Right" ), ID_POPUP_VIEW_XPOS, 'X' );
|
||||
static EDA_HOTKEY Hk3D_ViewTop( _HKI( "View Top" ), ID_POPUP_VIEW_ZPOS, 'Z' );
|
||||
static EDA_HOTKEY Hk3D_ViewBot( _HKI( "View Bot" ), ID_POPUP_VIEW_ZNEG, GR_KB_SHIFT + 'Z' );
|
||||
|
||||
static EDA_HOTKEY Hk3D_Rotate45axisZ( _HKI( "Rotate 45 degrees over Z axis" ), 0, WXK_TAB );
|
||||
static EDA_HOTKEY Hk3D_ZoomIn( _HKI( "Zoom in " ), ID_POPUP_ZOOMIN, WXK_F1 );
|
||||
static EDA_HOTKEY Hk3D_ZoomOut( _HKI( "Zoom out" ), ID_POPUP_ZOOMOUT, WXK_F2 );
|
||||
static EDA_HOTKEY Hk3D_AttributesTHT( _HKI( "Toggle 3D models with type Through Hole" ), 0, 'T' );
|
||||
static EDA_HOTKEY Hk3D_AttributesSMD( _HKI( "Toggle 3D models with type Surface Mount" ), 0, 'S' );
|
||||
static EDA_HOTKEY Hk3D_AttributesVirtual( _HKI( "Toggle 3D models with type Virtual" ), 0, 'V' );
|
||||
|
||||
static wxString viewer3DSectionTitle( _HKI( "Viewer 3D" ) );
|
||||
|
||||
// List of hotkey descriptors for the 3D Viewer only
|
||||
// !TODO: this is used just for help menu, the structured are not used yet in the viewer
|
||||
static EDA_HOTKEY* viewer3d_Hotkey_List[] =
|
||||
{
|
||||
&HkHotkeysHelp,
|
||||
&Hk3D_PivotCenter,
|
||||
&Hk3D_MoveLeft,
|
||||
&Hk3D_MoveRight,
|
||||
&Hk3D_MoveUp,
|
||||
&Hk3D_MoveDown,
|
||||
&Hk3D_HomeView,
|
||||
&Hk3D_ResetView,
|
||||
&Hk3D_ViewFront,
|
||||
&Hk3D_ViewBack,
|
||||
&Hk3D_ViewLeft,
|
||||
&Hk3D_ViewRight,
|
||||
&Hk3D_ViewTop,
|
||||
&Hk3D_ViewBot,
|
||||
&Hk3D_Rotate45axisZ,
|
||||
&Hk3D_ZoomIn,
|
||||
&Hk3D_ZoomOut,
|
||||
&Hk3D_AttributesTHT,
|
||||
&Hk3D_AttributesSMD,
|
||||
&Hk3D_AttributesVirtual,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
// list of sections and corresponding hotkey list for the 3D Viewer
|
||||
// (used to list current hotkeys)
|
||||
struct EDA_HOTKEY_CONFIG g_3DViewer_Hokeys_Descr[] =
|
||||
{
|
||||
{ &g_CommonSectionTag, viewer3d_Hotkey_List, &viewer3DSectionTitle },
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::DisplayHotKeys()
|
||||
{
|
||||
DisplayHotkeyList( this, g_3DViewer_Hokeys_Descr );
|
||||
}
|
||||
@@ -40,11 +40,6 @@ set(3D-VIEWER_SRCS
|
||||
${DIR_DLG}/dlg_select_3dmodel.cpp
|
||||
${DIR_DLG}/panel_prev_3d_base.cpp
|
||||
${DIR_DLG}/panel_prev_model.cpp
|
||||
../polygon/poly2tri/common/shapes.cc
|
||||
../polygon/poly2tri/sweep/advancing_front.cc
|
||||
../polygon/poly2tri/sweep/cdt.cc
|
||||
../polygon/poly2tri/sweep/sweep.cc
|
||||
../polygon/poly2tri/sweep/sweep_context.cc
|
||||
3d_canvas/cinfo3d_visu.cpp
|
||||
3d_canvas/create_layer_items.cpp
|
||||
3d_canvas/create_3Dgraphic_brd_items.cpp
|
||||
@@ -79,7 +74,6 @@ set(3D-VIEWER_SRCS
|
||||
${DIR_RAY_2D}/cring2d.cpp
|
||||
${DIR_RAY_2D}/croundsegment2d.cpp
|
||||
${DIR_RAY_2D}/ctriangle2d.cpp
|
||||
${DIR_RAY_2D}/edgeshrink.cpp
|
||||
${DIR_RAY_3D}/cbbox.cpp
|
||||
${DIR_RAY_3D}/cbbox_ray.cpp
|
||||
${DIR_RAY_3D}/ccylinder.cpp
|
||||
@@ -97,6 +91,8 @@ set(3D-VIEWER_SRCS
|
||||
3d_rendering/cpostshader.cpp
|
||||
3d_rendering/cpostshader_ssao.cpp
|
||||
3d_rendering/ctrack_ball.cpp
|
||||
3d_viewer/3d_menubar.cpp
|
||||
3d_viewer/hotkeys.cpp
|
||||
3d_rendering/test_cases.cpp
|
||||
3d_rendering/trackball.cpp
|
||||
3d_viewer/3d_toolbar.cpp
|
||||
|
||||
@@ -50,6 +50,9 @@ void OGL_GetScreenshot( wxImage &aDstImage )
|
||||
// Alphabuffer was causing some transparency problems on some systems (Windows)
|
||||
// unsigned char* alphabuffer = (unsigned char*) malloc( viewport.x * viewport.y );
|
||||
|
||||
// Call glFinish before screenshot to ensure everything is fully drawn.
|
||||
glFinish();
|
||||
|
||||
glPixelStorei( GL_PACK_ALIGNMENT, 1 );
|
||||
glReadBuffer( GL_BACK_LEFT );
|
||||
|
||||
@@ -130,7 +133,7 @@ GLuint OGL_LoadTexture( const CIMAGE &aImage )
|
||||
|
||||
glBindTexture( GL_TEXTURE_2D, 0 );
|
||||
|
||||
glFinish();
|
||||
glFlush();
|
||||
|
||||
free( rgbaBuffer );
|
||||
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @file openmp_mutex.h
|
||||
* @brief a mutex for openmp got from the website:
|
||||
* http://bisqwit.iki.fi/story/howto/openmp/
|
||||
* by Joel Yliluoma <bisqwit@iki.fi>
|
||||
*/
|
||||
|
||||
#ifndef _OPENMP_MUTEX_H
|
||||
#define _OPENMP_MUTEX_H
|
||||
|
||||
#ifdef _OPENMP
|
||||
|
||||
# include <omp.h>
|
||||
|
||||
struct MutexType
|
||||
{
|
||||
MutexType() { omp_init_lock( &lock ); }
|
||||
~MutexType() { omp_destroy_lock( &lock ); }
|
||||
void Lock() { omp_set_lock( &lock ); }
|
||||
void Unlock() { omp_unset_lock( &lock ); }
|
||||
|
||||
MutexType( const MutexType& ) { omp_init_lock( &lock ); }
|
||||
MutexType& operator= ( const MutexType& ) { return *this; }
|
||||
public:
|
||||
omp_lock_t lock;
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
/// A dummy mutex that doesn't actually exclude anything,
|
||||
/// but as there is no parallelism either, no worries.
|
||||
struct MutexType
|
||||
{
|
||||
void Lock() {}
|
||||
void Unlock() {}
|
||||
};
|
||||
#endif
|
||||
|
||||
/// An exception-safe scoped lock-keeper.
|
||||
struct ScopedLock
|
||||
{
|
||||
explicit ScopedLock( MutexType& m ) : mut( m ), locked( true ) { mut.Lock(); }
|
||||
~ScopedLock() { Unlock(); }
|
||||
void Unlock() { if( !locked ) return; locked = false; mut.Unlock(); }
|
||||
void LockAgain() { if( locked ) return; mut.Lock(); locked = true; }
|
||||
|
||||
private:
|
||||
MutexType& mut;
|
||||
bool locked;
|
||||
|
||||
private: // prevent copying the scoped lock.
|
||||
void operator=(const ScopedLock&);
|
||||
ScopedLock(const ScopedLock&);
|
||||
};
|
||||
|
||||
#endif // _OPENMP_MUTEX_H
|
||||
@@ -34,7 +34,7 @@ Andrew Zonenberg <azonenberg[at]drawersteak-dot-com>
|
||||
Cirilo Bernardo <cirilo_bernardo[at]yahoo-dot-com>
|
||||
Adam Wolf <adamwolf[at]feelslikeburning-dot-com>
|
||||
Bernhard Stegmaier <stegmaier[at]sw-systems-dot-de>
|
||||
Chris Pavlina <pavlina.chris[at]gmail-dot-com>
|
||||
Alexis Lockwood <alexlockwood[at]fastmail-dot-com>
|
||||
Simon Richter <Simon.Richter[at]hogyros-dot-de>
|
||||
Mario Luzeiro <mrluzeiro[at]ua-dot-pt>
|
||||
Mateusz Skowroński <skowri[at]gmail-dot-com>
|
||||
|
||||
@@ -21,6 +21,15 @@
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
#
|
||||
|
||||
cmake_minimum_required( VERSION 2.8.12 FATAL_ERROR )
|
||||
# because of http://public.kitware.com/Bug/view.php?id=10395
|
||||
|
||||
# See https://gitlab.kitware.com/cmake/cmake/issues/15943
|
||||
# Remove as soon as 3.1 is minimum required version
|
||||
if(POLICY CMP0025)
|
||||
cmake_policy(SET CMP0025 NEW) # CMake 3.0
|
||||
endif()
|
||||
|
||||
# Default to CMAKE_BUILD_TYPE = Release unless overridden on command line
|
||||
# http://www.cmake.org/pipermail/cmake/2008-September/023808.html
|
||||
if( DEFINED CMAKE_BUILD_TYPE )
|
||||
@@ -33,12 +42,16 @@ project( kicad )
|
||||
|
||||
include( GNUInstallDirs )
|
||||
|
||||
cmake_minimum_required( VERSION 2.8.12 FATAL_ERROR )
|
||||
# because of http://public.kitware.com/Bug/view.php?id=10395
|
||||
|
||||
# Path to local CMake modules.
|
||||
set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules )
|
||||
|
||||
# On Windows, binaries created by link option -g3 are very large (more than 1Gb for pcbnew,
|
||||
# and more than 3Gb for the full kicad suite)
|
||||
# This option create binaries using link option -g1 that create much smaller files, but
|
||||
# there are less info in debug (but the file names and line numbers are available)
|
||||
option( BUILD_SMALL_DEBUG_FILES "In debug build: create smaller binaries." OFF )
|
||||
|
||||
|
||||
#
|
||||
# KiCad build options should be added below.
|
||||
#
|
||||
@@ -66,13 +79,17 @@ option( KICAD_SCRIPTING_WXPYTHON
|
||||
ON )
|
||||
|
||||
option( KICAD_SCRIPTING_ACTION_MENU
|
||||
"Build a tools menu with registred python plugins: actions plugins (default OFF)."
|
||||
)
|
||||
"Build a tools menu with registered python plugins: actions plugins (default ON)."
|
||||
ON )
|
||||
|
||||
option( KICAD_USE_OCE
|
||||
"Build tools and plugins related to OpenCascade Community Edition (default OFF)"
|
||||
"Build tools and plugins related to OpenCascade Community Edition (default ON)"
|
||||
ON )
|
||||
|
||||
option( KICAD_USE_OCC
|
||||
"Build tools and plugins related to OpenCascade Technology (overrides KICAD_USE_OCE, default OFF)"
|
||||
OFF )
|
||||
|
||||
option( KICAD_INSTALL_DEMOS
|
||||
"Install kicad demos and examples (default ON)"
|
||||
ON )
|
||||
@@ -205,6 +222,44 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
#================================================
|
||||
# Provide access to CCACHE
|
||||
#================================================
|
||||
if (USE_CCACHE)
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
if(CCACHE_FOUND)
|
||||
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
|
||||
set(RULE_LAUNCH_COMPILE "${RULE_LAUNCH_COMPILE} ${CCACHE_FOUND}")
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH_COMPILE})
|
||||
|
||||
get_property(RULE_LAUNCH_LINK GLOBAL PROPERTY RULE_LAUNCH_LINK)
|
||||
set(RULE_LAUNCH_LINK "${RULE_LAUNCH_LINK} ${CCACHE_FOUND}")
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${RULE_LAUNCH_LINK})
|
||||
|
||||
message(STATUS "Used ${CCACHE_FOUND} for compilation.")
|
||||
else(CCACHE_FOUND)
|
||||
message(STATUS "CCache was requested but not found.")
|
||||
endif(CCACHE_FOUND)
|
||||
endif(USE_CCACHE)
|
||||
|
||||
|
||||
#================================================
|
||||
# Provide access to CCACHE
|
||||
#================================================
|
||||
if (USE_DISTCC)
|
||||
find_program(DISTCC_FOUND distcc)
|
||||
if(DISTCC_FOUND)
|
||||
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
|
||||
set(RULE_LAUNCH_COMPILE "${RULE_LAUNCH_COMPILE} ${DISTCC_FOUND}")
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH_COMPILE})
|
||||
message(STATUS "Using ${DISTCC_FOUND} for distributed build.")
|
||||
else(DISTCC_FOUND)
|
||||
message(INFO "Distcc was requested but not found.")
|
||||
endif(DISTCC_FOUND)
|
||||
endif(USE_DISTCC)
|
||||
|
||||
|
||||
#================================================
|
||||
# Set flags for GCC, or treat llvm as GCC
|
||||
#================================================
|
||||
@@ -219,6 +274,10 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||
set( TO_LINKER -XLinker )
|
||||
else()
|
||||
set( TO_LINKER -Wl )
|
||||
# Set 32-bit flag for GCC to prevent excess precision
|
||||
if( CMAKE_SIZEOF_VOID_P EQUAL 4 )
|
||||
set( CMAKE_CXX_FLAGS "-ffloat-store ${CMAKE_CXX_FLAGS}" )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Establish -Wall early, so specialized relaxations of this may come
|
||||
@@ -226,8 +285,18 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||
set( CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}" )
|
||||
set( CMAKE_CXX_FLAGS "-Wall ${CMAKE_CXX_FLAGS}" )
|
||||
|
||||
set( CMAKE_C_FLAGS_DEBUG "-g3 -ggdb3 -DDEBUG" )
|
||||
set( CMAKE_CXX_FLAGS_DEBUG "-g3 -ggdb3 -DDEBUG -Wno-deprecated-declarations" )
|
||||
# Link flags in Debug: -g1 and -ggdb1 or -g1 and -ggdb3 can be used.
|
||||
# Level 1 produces minimal information, enough for making basic backtraces.
|
||||
# This includes descriptions of functions and external variables, and line number tables,
|
||||
# but no information about local variables.
|
||||
# Level 3 includes full information, but binaries are much larger.
|
||||
if( BUILD_SMALL_DEBUG_FILES )
|
||||
set( CMAKE_C_FLAGS_DEBUG "-g1 -ggdb1 -DDEBUG" )
|
||||
set( CMAKE_CXX_FLAGS_DEBUG "-g1 -ggdb1 -DDEBUG -Wno-deprecated-declarations" )
|
||||
else()
|
||||
set( CMAKE_C_FLAGS_DEBUG "-g3 -ggdb3 -DDEBUG" )
|
||||
set( CMAKE_CXX_FLAGS_DEBUG "-g3 -ggdb3 -DDEBUG -Wno-deprecated-declarations" )
|
||||
endif()
|
||||
|
||||
if( MINGW )
|
||||
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" )
|
||||
@@ -321,6 +390,12 @@ if( KICAD_USE_OCE )
|
||||
add_definitions( -DKICAD_USE_OCE )
|
||||
endif()
|
||||
|
||||
if( KICAD_USE_OCC )
|
||||
add_definitions( -DKICAD_USE_OCC )
|
||||
remove_definitions( -DKICAD_USE_OCE )
|
||||
unset( KICAD_USE_OCE )
|
||||
endif()
|
||||
|
||||
if( KICAD_USE_CUSTOM_PADS )
|
||||
add_definitions( -DKICAD_USE_CUSTOM_PADS )
|
||||
endif()
|
||||
@@ -356,6 +431,9 @@ if( NOT APPLE )
|
||||
set( KICAD_BIN bin
|
||||
CACHE PATH "Location of KiCad binaries." )
|
||||
|
||||
set( KICAD_DATA ${CMAKE_INSTALL_DATADIR}/kicad
|
||||
CACHE PATH "Location of KiCad data files." )
|
||||
|
||||
if( WIN32 )
|
||||
set( KICAD_PLUGINS ${KICAD_BIN}/scripting/plugins
|
||||
CACHE PATH "Location of KiCad plugins." )
|
||||
@@ -366,7 +444,7 @@ if( NOT APPLE )
|
||||
set( KICAD_USER_PLUGIN ${KICAD_BIN}/plugins
|
||||
CACHE PATH "Location of KiCad user-loaded plugins" )
|
||||
else()
|
||||
set( KICAD_PLUGINS ${CMAKE_INSTALL_LIBDIR}/kicad/plugins
|
||||
set( KICAD_PLUGINS ${KICAD_DATA}/plugins
|
||||
CACHE PATH "Location of KiCad plugins." )
|
||||
|
||||
set( KICAD_LIB ${CMAKE_INSTALL_LIBDIR}
|
||||
@@ -376,8 +454,6 @@ if( NOT APPLE )
|
||||
CACHE PATH "Location of KiCad user-loaded plugins" )
|
||||
endif()
|
||||
|
||||
set( KICAD_DATA ${CMAKE_INSTALL_DATADIR}/kicad
|
||||
CACHE PATH "Location of KiCad data files." )
|
||||
set( KICAD_DOCS ${CMAKE_INSTALL_DATADIR}/doc/kicad
|
||||
CACHE PATH "Location of KiCad documentation files." )
|
||||
set( KICAD_DEMOS ${KICAD_DATA}/demos
|
||||
@@ -471,24 +547,6 @@ include( ExternalProject )
|
||||
#================================================
|
||||
include( CheckFindPackageResult )
|
||||
|
||||
#
|
||||
# Find OpenMP support, optional
|
||||
#
|
||||
|
||||
find_package( OpenMP )
|
||||
|
||||
if( OPENMP_FOUND )
|
||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
|
||||
add_definitions( -DUSE_OPENMP )
|
||||
|
||||
# MinGW does not include the OpenMP link library and FindOpenMP.cmake does not
|
||||
# set it either. Not sure this is the most elegant solution but it works.
|
||||
if( MINGW )
|
||||
set( OPENMP_LIBRARIES gomp )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
# Find wxWidgets library, required
|
||||
#
|
||||
@@ -524,6 +582,7 @@ endif()
|
||||
#
|
||||
# Find OpenGL library, required
|
||||
#
|
||||
set( OpenGL_GL_PREFERENCE "LEGACY" ) # CMake 3.11+ setting; see 'cmake --help-policy CMP0072'
|
||||
find_package( OpenGL REQUIRED )
|
||||
|
||||
#
|
||||
@@ -539,6 +598,8 @@ endif()
|
||||
#
|
||||
find_package( GLM 0.9.5.1 REQUIRED )
|
||||
|
||||
add_definitions( -DGLM_FORCE_CTOR_INIT )
|
||||
|
||||
#
|
||||
# Find CURL library, required for github plugin
|
||||
#
|
||||
@@ -572,9 +633,24 @@ endif()
|
||||
|
||||
# Find OpenCascade Community Edition, required for STEP plugin and tools
|
||||
if( KICAD_USE_OCE )
|
||||
set( LIBS_OCE TKBinXCAF TKPCAF TKSTEP TKXDESTEP TKIGES TKXDEIGES )
|
||||
set( OCC_LIBRARIES TKBinXCAF TKPCAF TKSTEP TKXDESTEP TKIGES TKXDEIGES )
|
||||
|
||||
find_package( OCE 0.16 REQUIRED ${LIBS_OCE} )
|
||||
find_package( OCE 0.16 REQUIRED ${OCC_LIBRARIES} )
|
||||
|
||||
elseif( KICAD_USE_OCC )
|
||||
find_package(OpenCASCADE)
|
||||
if( NOT OCC_FOUND )
|
||||
MESSAGE( FATAL_ERROR "================================================================\n"
|
||||
" KICAD_USE_OCC=True but OpenCASCADE was no found!\n"
|
||||
"================================================================\n")
|
||||
endif()
|
||||
if( OCC_VERSION_STRING VERSION_LESS 6.8.0 )
|
||||
MESSAGE( FATAL_ERROR "================================================================\n"
|
||||
"OpenCASCADE version ${OCC_VERSION_STRING} was found.\n"
|
||||
" KiCad requires a minimum version of 6.8.0\n"
|
||||
"================================================================\n")
|
||||
endif()
|
||||
include_directories( SYSTEM ${OCC_INCLUDE_DIR} )
|
||||
endif()
|
||||
|
||||
# Assist with header file searching optimization:
|
||||
@@ -793,7 +869,7 @@ add_custom_target( uninstall
|
||||
###
|
||||
# Install scripts
|
||||
###
|
||||
if( UNIX )
|
||||
if( UNIX AND NOT APPLE )
|
||||
install( DIRECTORY scripts
|
||||
DESTINATION ${KICAD_DOCS}
|
||||
COMPONENT resources
|
||||
@@ -815,30 +891,31 @@ if( UNIX AND NOT APPLE )
|
||||
|
||||
# Install Mime directory
|
||||
install( DIRECTORY ${UNIX_ICON_FILES}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
|
||||
DESTINATION share
|
||||
COMPONENT resources
|
||||
)
|
||||
|
||||
# Install Icons
|
||||
install( DIRECTORY ${UNIX_MIME_FILES}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
|
||||
DESTINATION share
|
||||
COMPONENT resources
|
||||
)
|
||||
|
||||
# Install Applications directory (.desktop files)
|
||||
install( DIRECTORY ${UNIX_APPLICATIONS_FILES}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
|
||||
DESTINATION share
|
||||
COMPONENT resources
|
||||
)
|
||||
|
||||
# Install AppStream directory (app store entry)
|
||||
install( DIRECTORY ${UNIX_APPDATA_FILES}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
|
||||
DESTINATION share
|
||||
COMPONENT resources
|
||||
)
|
||||
endif()
|
||||
|
||||
#include( CTest )
|
||||
enable_testing()
|
||||
|
||||
if( UNIX AND NOT APPLE )
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
# - Check if a symbol exists as a function, variable, or macro in C++
|
||||
# CHECK_CXX_SYMBOL_EXISTS(<symbol> <files> <variable>)
|
||||
#
|
||||
# Check that the <symbol> is available after including given header
|
||||
# <files> and store the result in a <variable>. Specify the list
|
||||
# of files in one argument as a semicolon-separated list.
|
||||
# CHECK_CXX_SYMBOL_EXISTS() can be used to check in C++ files, as opposed
|
||||
# to CHECK_SYMBOL_EXISTS(), which works only for C.
|
||||
#
|
||||
# If the header files define the symbol as a macro it is considered
|
||||
# available and assumed to work. If the header files declare the
|
||||
# symbol as a function or variable then the symbol must also be
|
||||
# available for linking. If the symbol is a type or enum value
|
||||
# it will not be recognized (consider using CheckTypeSize or
|
||||
# CheckCSourceCompiles).
|
||||
#
|
||||
# The following variables may be set before calling this macro to
|
||||
# modify the way the check is run:
|
||||
#
|
||||
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
|
||||
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
|
||||
# CMAKE_REQUIRED_INCLUDES = list of include directories
|
||||
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2003-2011 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
include(CheckSymbolExists)
|
||||
|
||||
macro(CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
|
||||
_CHECK_SYMBOL_EXISTS("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
|
||||
endmacro()
|
||||
@@ -0,0 +1,192 @@
|
||||
# Try to find OCC
|
||||
# Once done this will define
|
||||
#
|
||||
# OCC_FOUND - system has OCC - OpenCASCADE
|
||||
# OCC_INCLUDE_DIR - where the OCC include directory can be found
|
||||
# OCC_LIBRARY_DIR - where the OCC library directory can be found
|
||||
# OCC_LIBRARIES - Link this to use OCC
|
||||
|
||||
############################################################################
|
||||
#
|
||||
# Modifications Copyright (C) 2018 Seth Hillbrand
|
||||
#
|
||||
# Based on FindOpenCasCade.cmake by the FreeCAD CAx development team
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
# Set the needed libraries
|
||||
set( OCC_LIBS
|
||||
TKBinL
|
||||
TKBin
|
||||
TKBinTObj
|
||||
TKBinXCAF
|
||||
TKBool
|
||||
TKBO
|
||||
TKBRep
|
||||
TKCAF
|
||||
TKCDF
|
||||
TKernel
|
||||
TKFeat
|
||||
TKFillet
|
||||
TKG2d
|
||||
TKG3d
|
||||
TKGeomAlgo
|
||||
TKGeomBase
|
||||
TKHLR
|
||||
TKIGES
|
||||
TKLCAF
|
||||
TKMath
|
||||
TKMesh
|
||||
TKMeshVS
|
||||
TKOffset
|
||||
TKOpenGl
|
||||
TKPrim
|
||||
TKService
|
||||
TKShHealing
|
||||
TKSTEP209
|
||||
TKSTEPAttr
|
||||
TKSTEPBase
|
||||
TKSTEP
|
||||
TKSTL
|
||||
TKTObj
|
||||
TKTopAlgo
|
||||
TKV3d
|
||||
TKVRML
|
||||
TKXCAF
|
||||
TKXDEIGES
|
||||
TKXDESTEP
|
||||
TKXMesh
|
||||
TKXmlL
|
||||
TKXml
|
||||
TKXmlTObj
|
||||
TKXmlXCAF
|
||||
TKXSBase
|
||||
)
|
||||
|
||||
set(OCC_TYPE "OpenCASCADE Standard Edition")
|
||||
if(WIN32)
|
||||
if(CYGWIN OR MINGW)
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
/usr/include/opencascade
|
||||
/usr/local/include/opencascade
|
||||
/opt/opencascade/include
|
||||
/opt/opencascade/inc
|
||||
)
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
HINTS
|
||||
${OCC_LIBRARY_DIR}
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/opencascade/lib
|
||||
)
|
||||
else(CYGWIN OR MINGW)
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
|
||||
)
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
|
||||
)
|
||||
endif(CYGWIN OR MINGW)
|
||||
else(WIN32)
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
/usr/include/opencascade
|
||||
/usr/local/include/opencascade
|
||||
/opt/opencascade/include
|
||||
/opt/opencascade/inc
|
||||
)
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
HINTS
|
||||
${OCC_LIBRARY_DIR}
|
||||
/usr
|
||||
/usr/local
|
||||
/opt/opencascade
|
||||
/opt/opencascade/lin64/gcc
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
endif(WIN32)
|
||||
|
||||
|
||||
if(OCC_LIBRARY)
|
||||
GET_FILENAME_COMPONENT(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
|
||||
IF(NOT OCC_INCLUDE_DIR)
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
${OCC_LIBRARY_DIR}/../inc
|
||||
)
|
||||
ENDIF()
|
||||
else(OCC_LIBRARY)
|
||||
message( "" )
|
||||
message( "*** OpenCascade library missing ***" )
|
||||
message( "Verify your OpenCascade installation or pass CMake" )
|
||||
message( " the library directory as '-DOCC_LIBRARY_DIR=<path>'" )
|
||||
message( "" )
|
||||
message( FATAL_ERROR "" )
|
||||
endif(OCC_LIBRARY)
|
||||
|
||||
if(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
|
||||
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
|
||||
REGEX "#define OCC_VERSION_MAJOR.*"
|
||||
)
|
||||
string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
|
||||
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
|
||||
REGEX "#define OCC_VERSION_MINOR.*"
|
||||
)
|
||||
string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
|
||||
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
|
||||
REGEX "#define OCC_VERSION_MAINTENANCE.*"
|
||||
)
|
||||
string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
|
||||
|
||||
set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
|
||||
else(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
|
||||
message( "" )
|
||||
message( "*** OpenCascade header files missing ***" )
|
||||
message( "Verify your OpenCascade installation or pass CMake" )
|
||||
message( " the header directory as '-DOCC_INCLUDE_DIR=<path>'" )
|
||||
message( "" )
|
||||
message( FATAL_ERROR "" )
|
||||
endif(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set OCC_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
|
||||
|
||||
if(OCC_FOUND)
|
||||
foreach(lib IN LISTS OCC_LIBS)
|
||||
|
||||
#Use the specified library location if given
|
||||
find_library(OCC_TEMP_LIB ${lib} HINTS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH)
|
||||
if(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
|
||||
message( "" )
|
||||
message( "*** OpenCascade library missing ***" )
|
||||
message( "Could not find a library for ${lib} at ${OCC_LIBRARY_DIR}" )
|
||||
message( "Verify your OpenCascade installation or pass CMake" )
|
||||
message( " the library directory as '-DOCC_LIBRARY_DIR=<path>'" )
|
||||
message( "" )
|
||||
message( FATAL_ERROR "" )
|
||||
else(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
|
||||
list(APPEND OCC_LIBRARIES ${OCC_TEMP_LIB})
|
||||
endif(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
|
||||
|
||||
unset(OCC_TEMP_LIB CACHE)
|
||||
endforeach(lib)
|
||||
|
||||
#Convert path names to absolute for cleaner display
|
||||
get_filename_component(OCC_INCLUDE_DIR "${OCC_INCLUDE_DIR}" ABSOLUTE)
|
||||
get_filename_component(OCC_LIBRARY_DIR "${OCC_LIBRARY_DIR}" ABSOLUTE)
|
||||
message(STATUS "Found ${OCC_TYPE} version: ${OCC_VERSION_STRING}")
|
||||
message(STATUS " ++ ${OCC_TYPE} include directory: ${OCC_INCLUDE_DIR}")
|
||||
message(STATUS " ++ ${OCC_TYPE} shared libraries directory: ${OCC_LIBRARY_DIR}")
|
||||
endif(OCC_FOUND)
|
||||
@@ -12,6 +12,15 @@ find_library( NGSPICE_LIBRARY ngspice
|
||||
PATH_SUFFIXES src/.libs lib
|
||||
)
|
||||
|
||||
if( WIN32 AND MSYS )
|
||||
# NGSPICE_LIBRARY points to libngspice.dll.a on Windows,
|
||||
# but the goal is to find out the DLL name.
|
||||
find_library( NGSPICE_DLL NAMES libngspice-0.dll libngspice-1.dll )
|
||||
else()
|
||||
set( NGSPICE_DLL "${NGSPICE_LIBRARY}" )
|
||||
endif()
|
||||
|
||||
|
||||
include( FindPackageHandleStandardArgs )
|
||||
|
||||
if( ${NGSPICE_INCLUDE_DIR} STREQUAL "NGSPICE_INCLUDE_DIR-NOTFOUND" OR ${NGSPICE_LIBRARY} STREQUAL "NGSPICE_LIBRARY-NOTFOUND" )
|
||||
@@ -28,12 +37,10 @@ if( ${NGSPICE_INCLUDE_DIR} STREQUAL "NGSPICE_INCLUDE_DIR-NOTFOUND" OR ${NGSPICE_
|
||||
endif()
|
||||
|
||||
find_package_handle_standard_args( ngspice
|
||||
REQUIRED_VARS
|
||||
NGSPICE_INCLUDE_DIR
|
||||
NGSPICE_LIBRARY
|
||||
)
|
||||
REQUIRED_VARS NGSPICE_INCLUDE_DIR NGSPICE_LIBRARY NGSPICE_DLL )
|
||||
|
||||
mark_as_advanced(
|
||||
NGSPICE_INCLUDE_DIR
|
||||
NGSPICE_LIBRARY
|
||||
NGSPICE_DLL
|
||||
)
|
||||
|
||||
@@ -35,4 +35,4 @@
|
||||
# be set after each version tag is added to the git repo. This will
|
||||
# give developers a reasonable idea where which branch was used to build
|
||||
# KiCad.
|
||||
set( KICAD_VERSION "5.0.0-rc2-dev-unknown" )
|
||||
set( KICAD_VERSION "5.0.2-unknown" )
|
||||
|
||||
@@ -72,4 +72,7 @@
|
||||
#define KIFACE_SUFFIX "@KIFACE_SUFFIX@"
|
||||
#define KIFACE_PREFIX "@KIFACE_PREFIX@"
|
||||
|
||||
/// Allows scripts install directory to be referenced by the program code.
|
||||
#define PYTHON_DEST "@PYTHON_DEST@"
|
||||
|
||||
#endif // CONFIG_H_
|
||||
|
||||
@@ -1128,7 +1128,7 @@ removed: (common/infospgm.cpp) is no longer needed
|
||||
When a sheet is deleted by block delete. it is put in undo list.
|
||||
It is really deleted after 10 changes (when the undo list is full).
|
||||
At this time, the associated data is also deleted.
|
||||
If an other (not deleted) sheet shares the same data, this data is lost.
|
||||
If another (not deleted) sheet shares the same data, this data is lost.
|
||||
Need work to solve this problem and keep the undo/redo feature.
|
||||
|
||||
|
||||
|
||||
@@ -281,7 +281,7 @@ Component library object and other minor improvements.
|
||||
Speed up ZONE_CONTAINER::Copy method
|
||||
Speed up NETINFO_ITEM* BOARD::FindNet( const wxString& aNetname ) by using afast binary search
|
||||
Switch to kbool V2.1. This version solves others problems in zones calculations.
|
||||
Adding an other way to generate thermal shape; DO NOT USE: this is for kbool tests only
|
||||
Adding another way to generate thermal shape; DO NOT USE: this is for kbool tests only
|
||||
(I am thinking some bugs are remaining, so i am always working on kbool tests.
|
||||
Klaas Olwerda is supporting me)
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ PROJECT_BRIEF =
|
||||
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
|
||||
# Doxygen will copy the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO =
|
||||
PROJECT_LOGO = ../kicad_doxygen_logo.png
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
|
||||
@@ -95,22 +95,35 @@ available and is always required to build KiCad.
|
||||
|
||||
## Python Programming Language ## {#python}
|
||||
|
||||
The [Python][] programming language is used to provide scripting support to KiCad. It only needs
|
||||
to be install if the [KiCad scripting](#kicad_scripting) build configuration option is enabled.
|
||||
The [Python][] programming language is used to provide scripting support to KiCad. It needs
|
||||
to be installed unless the [KiCad scripting](#kicad_scripting) build configuration option is
|
||||
disabled.
|
||||
|
||||
## wxPython Library ## {#wxpython}
|
||||
|
||||
The [wxPython][] library is used to provide a scripting console for Pcbnew. It only needs to be
|
||||
installed if the [wxPython scripting](#wxpython_scripting) build configuration option is enabled.
|
||||
When building KiCad with wxPython support, make sure the version of the wxWidgets library and
|
||||
the version of wxPython installed on your system are the same. Mismatched versions have been
|
||||
known to cause runtime issues.
|
||||
The [wxPython][] library is used to provide a scripting console for Pcbnew. It needs to be
|
||||
installed unless the [wxPython scripting](#wxpython_scripting) build configuration option is
|
||||
disabled. When building KiCad with wxPython support, make sure the version of the wxWidgets
|
||||
library and the version of wxPython installed on your system are the same. Mismatched versions
|
||||
have been known to cause runtime issues.
|
||||
|
||||
## Curl Multi-Protocol File Transfer Library ## {#curl}
|
||||
|
||||
The [Curl Multi-Protocol File Transfer Library][libcurl] is used to provide secure internet
|
||||
file transfer access for the [GitHub][] plug in. This library only needs to be installed if
|
||||
the GitHub plug build option is enabled.
|
||||
file transfer access for the [GitHub][] plug in. This library needs to be installed unless
|
||||
the GitHub plug build option is disabled.
|
||||
|
||||
## OpenCascade Community Edition (OCE) ## {#oce}
|
||||
|
||||
The [OpenCascade Community Edition][liboce] is used to provide support for loading and saving
|
||||
3D model file formats such as STEP. This library needs to be installed unless the OCE build
|
||||
option is disabled.
|
||||
|
||||
## Ngspice Library ## {#ngspice}
|
||||
|
||||
The [Ngspice Library][libngsice] is used to provide Spice simulation support in the schematic
|
||||
editor. Make sure the the version of ngspice library used was built with the--with-ngshared
|
||||
option. This library needs to be installed unless the Spice build option is disabled.
|
||||
|
||||
# KiCad Build Configuration Options # {#build_opts}
|
||||
|
||||
@@ -175,29 +188,22 @@ The KICAD_SCRIPTING_ACTION_MENU option allows Python scripts to be added directl
|
||||
menu. This option is disabled by default. Please note that this option is highly experimental
|
||||
and can cause Pcbnew to crash if Python scripts create an invalid object state within Pcbnew.
|
||||
|
||||
## Setting the Build Version and Repository Name ## {#build_version_opt}
|
||||
## KiCad Build Version ## {#build_version_opt}
|
||||
|
||||
The KiCad version string is defined by the three CMake variables KICAD_VERSION, KICAD_BRANCH_NAME,
|
||||
and KICAD_VERSION_EXTRA. Variables KICAD_BRANCH_NAME and KICAD_VERSION_EXTRA are defined as empty
|
||||
strings and can be set at configuration. Unless the source branch is a stable release archive,
|
||||
KICAD_VERSION is set to "no-vcs-found". If an optional variable is not define, it is not appended
|
||||
to the full version string. If an optional variable is defined it is appended along with a leading
|
||||
'-' to the full version string as follows:
|
||||
The KiCad version string is defined by the output of `git describe --dirty` when git is available
|
||||
or the version string defined in CMakeModules/KiCadVersion.cmake with the value of
|
||||
KICAD_VERSION_EXTRA appended to the former. If the KICAD_VERSION_EXTRA variable is not define,
|
||||
it is not appended to the version string. If the KICAD_VERSION_EXTRA variable is defined it
|
||||
is appended along with a leading '-' to the full version string as follows:
|
||||
|
||||
KICAD_VERSION[-KICAD_BRANCH_NAME][-KICAD_VERSION_EXTRA]
|
||||
(KICAD_VERSION[-KICAD_VERSION_EXTRA])
|
||||
|
||||
When the version string is set to "no-vcs-found", the build script automatically creates the
|
||||
version string information from the [git][] repository information as follows:
|
||||
The build script automatically creates the version string information from the [git][] repository
|
||||
information as follows:
|
||||
|
||||
(2016-08-26 revision 67230ac)-master
|
||||
| | |
|
||||
| | branch name, "HEAD" if not on a branch,
|
||||
| | or "unknown" if no .git present
|
||||
| |
|
||||
| abbreviated commit hash, or no-git if no .git
|
||||
| present
|
||||
(5.0.0-rc2-dev-100-g5a33f0960)
|
||||
|
|
||||
date of commit, or date of build if no .git present
|
||||
output of `git describe --dirty` if git is available.
|
||||
|
||||
# Getting the KiCad Source Code ## {#getting_src}
|
||||
|
||||
@@ -215,7 +221,7 @@ copy on your machine by using the following command:
|
||||
|
||||
Here is a list of source links:
|
||||
|
||||
Stable release archive: https://launchpad.net/kicad/4.0/4.0.2/+download/kicad-4.0.2.tar.xz
|
||||
Stable release archive: https://launchpad.net/kicad/4.0/4.0.7/+download/kicad-4.0.7.tar.xz
|
||||
|
||||
Development branch: https://code.launchpad.net/~kicad-product-committers/kicad/+git/product-git/+ref/master
|
||||
|
||||
@@ -230,9 +236,6 @@ To perform a full build on Linux, run the following commands:
|
||||
mkdir build/debug # Optional for debug build.
|
||||
cd build/release
|
||||
cmake -DCMAKE_BUILD_TYPE=Release \
|
||||
-DKICAD_SCRIPTING=ON \
|
||||
-DKICAD_SCRIPTING_MODULES=ON \
|
||||
-DKICAD_SCRIPTING_WXPYTHON=ON \
|
||||
../../
|
||||
make
|
||||
sudo make install
|
||||
@@ -249,38 +252,19 @@ the dependencies from source which is a huge and frustrating undertaking. The [
|
||||
provides packages for all of the require dependencies to build KiCad. To setup the [MSYS2][]
|
||||
build environment, depending on your system download and run either the [MSYS2 32-bit Installer][]
|
||||
or the [MSYS2 64-bit Installer][]. After the installer is finished, update to the latest
|
||||
package versions by running the `msys2_shell.bat` file located in the MSYS2 install path and
|
||||
package versions by running the `msys2_shell.cmd` file located in the MSYS2 install path and
|
||||
running the command `pacman -Syu`. If the msys2-runtime package is updated, close the shell
|
||||
and run `msys2_shell.bat`.
|
||||
and run `msys2_shell.cmd`.
|
||||
|
||||
## MSYS2 the Easy Way ## {#msys2_easy}
|
||||
## Building using MSYS2 ## {#msys2_build}
|
||||
|
||||
The easiest way to build KiCad using the [MSYS2][] build environment is to use the KiCad
|
||||
[PKGBUILD][] provided by the MSYS2 project to build package using the head of the KiCad
|
||||
development branch. To build the KiCad package, run the `msys2_shell.bat` file located in the
|
||||
MSYS2 install path and run the following commands:
|
||||
|
||||
pacman -S base-devel git
|
||||
mkdir src
|
||||
cd src
|
||||
git clone https://github.com/Alexpux/MINGW-packages
|
||||
cd MinGW-packages/mingw-w64-kicad-git
|
||||
makepkg-mingw -is
|
||||
|
||||
This will download and install all of the build dependencies, clone the KiCad source mirror
|
||||
from GitHub, create both 32-bit and 64-bit KiCad packages depending on your MSYS setup, and
|
||||
install the newly built KiCad packages. Please note that this build process takes a very
|
||||
long time to build even on a fast system.
|
||||
|
||||
|
||||
## MSYS2 the Hard Way ## {#msys2_hard}
|
||||
|
||||
If you do not want to create KiCad packages and prefer the traditional `make && make install`
|
||||
method of building KiCad, your task is significantly more involved. For 64 bit builds run
|
||||
the `mingw64_shell.bat` file located in the MSYS2 install path. At the command prompt run the
|
||||
the following commands:
|
||||
The following commands assume you are building for 64-bit Windows, and that you already have
|
||||
the KiCad source code in a folder called `kicad-source` in your home directory. See below
|
||||
for changes if you need to build for 32-bit instead. Run `mingw64.exe` from the MSYS2
|
||||
install path. At the command prompt run the the following commands:
|
||||
|
||||
pacman -S base-devel \
|
||||
git \
|
||||
mingw-w64-x86_64-cmake \
|
||||
mingw-w64-x86_64-doxygen \
|
||||
mingw-w64-x86_64-gcc \
|
||||
@@ -294,7 +278,9 @@ the following commands:
|
||||
mingw-w64-x86_64-wxPython \
|
||||
mingw-w64-x86_64-wxWidgets \
|
||||
mingw-w64-x86_64-toolchain \
|
||||
mingw-w64-x86_64-glm
|
||||
mingw-w64-x86_64-glm \
|
||||
mingw-w64-x86_64-oce \
|
||||
mingw-w64-x86_64-ngspice
|
||||
cd kicad-source
|
||||
mkdir -p build/release
|
||||
mkdir build/debug # Optional for debug build.
|
||||
@@ -304,15 +290,13 @@ the following commands:
|
||||
-DCMAKE_PREFIX_PATH=/mingw64 \
|
||||
-DCMAKE_INSTALL_PREFIX=/mingw64 \
|
||||
-DDEFAULT_INSTALL_PATH=/mingw64 \
|
||||
-DKICAD_SCRIPTING=ON \
|
||||
-DKICAD_SCRIPTING_MODULES=ON \
|
||||
-DKICAD_SCRIPTING_WXPYTHON=ON \
|
||||
../../
|
||||
make install
|
||||
|
||||
For 32-bit builds, run `mingw32_shell.bat` and change `x86_64` to `i686` in the package names and
|
||||
For 32-bit builds, run `mingw32.exe` and change `x86_64` to `i686` in the package names and
|
||||
change the paths in the cmake configuration from `/mingw64` to `/mingw32`.
|
||||
|
||||
For debug builds, run the cmake command with `-DCMAKE_BUILD_TYPE=Debug` from the `build/debug` folder.
|
||||
|
||||
## Known MSYS2 Build Issues ## {#known_issues_msys2}
|
||||
|
||||
@@ -328,13 +312,27 @@ to crash. You must downgrade to version 1.57 by running the command:
|
||||
pacman -U /var/cache/pacman/pkg/mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz
|
||||
|
||||
If the file mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz is no longer in your pacman cache,
|
||||
you will have to down load it from the [MSYS2 64-bit SourceForge repo][]. You should also
|
||||
you will have to download it from the [MSYS2 64-bit SourceForge repo][]. You should also
|
||||
configure pacman to prevent upgrading the 64-bit Boost package by adding:
|
||||
|
||||
IgnorePkg = mingw-w64-x86_64-boost
|
||||
|
||||
to your /etc/pacman.conf file.
|
||||
|
||||
### Building OCE from source
|
||||
|
||||
KiCad requires OCE by default, and the version installed by `pacman` can cause build errors in
|
||||
x86_64 systems as of March 2018. In order to work around this, you can build OCE from source on
|
||||
these systems. Building OCE on Windows requires that you place the source code in a very short
|
||||
directory path, otherwise you will run into errors caused by the maximum path length on Windows.
|
||||
In the example below, the `MINGW-packages` repository is cloned to `/c/mwp`, which is equivalent to
|
||||
`C:\mwp` in Windows path terminology. You may wish to change the destination of the `git clone`
|
||||
command if you do not want to place it on the root of your C drive, but if you run in to strange
|
||||
compilation errors about missing files, it is probably because your path is too long.
|
||||
|
||||
git clone https://github.com/Alexpux/MINGW-packages /c/mwp
|
||||
cd /c/mwp/mingw-w64-oce
|
||||
makepkg-mingw -is
|
||||
|
||||
# Building KiCad on macOS # {#build_osx}
|
||||
|
||||
@@ -345,10 +343,10 @@ building and packaging KiCad on macOS, see the [macOS bundle build scripts][].
|
||||
In the following set of commands, replace the macOS version number (i.e. 10.9) with the desired
|
||||
minimum version. It may be easiest to build for the same version you are running.
|
||||
|
||||
KiCad currently won't work with a stock version of wxWidgets that can be downloaded or installed by
|
||||
package managers like MacPorts or Homebrew. To avoid having to deal with patches a [KiCad fork of
|
||||
wxWidgets][] is being maintained on GitHub. All the needed patches and some other fixes/improvements
|
||||
are contained in the `kicad/macos-wx-3.0` branch.
|
||||
KiCad currently won't work with a stock version of wxWidgets that can be downloaded or
|
||||
installed by package managers like MacPorts or Homebrew. To avoid having to deal with
|
||||
patches a [KiCad fork of wxWidgets][] is being maintained on GitHub. All the needed patches
|
||||
and some other fixes/improvements are contained in the `kicad/macos-wx-3.0` branch.
|
||||
|
||||
To perform a wxWidgets build, execute the following commands:
|
||||
|
||||
@@ -411,9 +409,6 @@ configuration as follows to point it to your own wxWidgets/wxPython:
|
||||
-DCMAKE_CXX_COMPILER=clang++ \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
|
||||
-DwxWidgets_CONFIG_EXECUTABLE=<your wxWidgets build folder>/wx-bin/bin/wx-config \
|
||||
-DKICAD_SCRIPTING=ON \
|
||||
-DKICAD_SCRIPTING_MODULES=ON \
|
||||
-DKICAD_SCRIPTING_WXPYTHON=ON \
|
||||
-DPYTHON_EXECUTABLE=<path-to-python-exe>/python \
|
||||
-DPYTHON_SITE_PACKAGE_PATH=<your wxWidgets build folder>/wx-bin/lib/python2.7/site-packages \
|
||||
-DCMAKE_INSTALL_PREFIX=../bin \
|
||||
@@ -456,9 +451,9 @@ you will have to apply the Boost patches in the KiCad source [patches folder][].
|
||||
[Cairo]: http://cairographics.org/
|
||||
[Python]: https://www.python.org/
|
||||
[wxPython]: http://wxpython.org/
|
||||
[MSYS2]: http://msys2.github.io/
|
||||
[MSYS2 32-bit Installer]: http://repo.msys2.org/distrib/i686/msys2-i686-20150916.exe
|
||||
[MSYS2 64-bit Installer]: http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20150916.exe
|
||||
[MSYS2]: http://www.msys2.org/
|
||||
[MSYS2 32-bit Installer]: http://repo.msys2.org/distrib/i686/msys2-i686-20161025.exe
|
||||
[MSYS2 64-bit Installer]: http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe
|
||||
[PKGBUILD]: https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-kicad-git/PKGBUILD
|
||||
[macOS bundle build scripts]:http://bazaar.launchpad.net/~adamwolf/+junk/kicad-mac-packaging/files
|
||||
[KiCad fork of wxWidgets]:https://github.com/KiCad/wxWidgets
|
||||
@@ -469,3 +464,5 @@ you will have to apply the Boost patches in the KiCad source [patches folder][].
|
||||
[GLM]: http://glm.g-truc.net/
|
||||
[git]: https://git-scm.com/
|
||||
[OCE]: https://github.com/tpaviot/oce
|
||||
[liboce]: https://github.com/tpaviot/oce
|
||||
[libngspice]: https://sourceforge.net/projects/ngspice/
|
||||
|
||||
|
After Width: | Height: | Size: 8.7 KiB |
@@ -45,7 +45,7 @@ PROJECT_BRIEF =
|
||||
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
|
||||
# Doxygen will copy the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO =
|
||||
PROJECT_LOGO = Documentation/kicad_doxygen_logo.png
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
|
||||
@@ -0,0 +1,661 @@
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU Affero General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU Affero General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If your software can interact with users remotely through a computer
|
||||
network, you should also make sure that it provides a way for users to
|
||||
get its source. For example, if your program is a web application, its
|
||||
interface could display a "Source" link that leads users to an archive
|
||||
of the code. There are many ways you could offer source, and different
|
||||
solutions will be better for different programs; see section 13 for the
|
||||
specific requirements.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
@@ -0,0 +1,13 @@
|
||||
The majority of KiCad's source code is developed and distributed under the terms
|
||||
of the GPLv3 or later. However, It does include some third-party code licensed
|
||||
under AGPLv3 or later.
|
||||
|
||||
Both licenses are compatible, but a combined works as is will be governed under
|
||||
the terms of the AGPLv3 (or later). This includes any binary distribution of the
|
||||
KiCad EDA suite by the KiCad project or any third party, e.g. Linux distributor.
|
||||
|
||||
You are free to use the *sources* under the terms of their respective licenses.
|
||||
|
||||
Licensed under AGPLv3 (or later):
|
||||
- TTL [https://www.sintef.no/projectweb/geometry-toolkits/ttl/], sources in include/ttl/*
|
||||
Licensed under GPLv3 (or later):
|
||||
@@ -19,7 +19,7 @@
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string></string>
|
||||
<key>CFBundleName</key>
|
||||
<string>bitmap2component</string>
|
||||
<string>Bitmap 2 Component</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
@@ -32,6 +32,8 @@
|
||||
<true/>
|
||||
<key>LSRequiresCarbon</key>
|
||||
<true/>
|
||||
<key>NSRequiresAquaSystemAppearance</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
|
||||
@@ -639,7 +639,7 @@ void BM2CMP_FRAME::ExportFile( FILE* aOutfile, OUTPUT_FMT_ID aFormat )
|
||||
if( !potrace_bitmap )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( wxT( "Error allocating memory for potrace bitmap" ) );
|
||||
msg.Printf( _( "Error allocating memory for potrace bitmap" ) );
|
||||
wxMessageBox( msg );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// C++ code generated with wxFormBuilder (version Jun 5 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -119,21 +119,21 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
|
||||
brightSizer->Add( sbSizerInfo, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
m_buttonLoad = new wxButton( m_panelRight, wxID_ANY, _("Load Bitmap"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
brightSizer->Add( m_buttonLoad, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
brightSizer->Add( m_buttonLoad, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
m_buttonExport = new wxButton( m_panelRight, wxID_ANY, _("Export"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_buttonExport->SetToolTip( _("Create a library file for Eeschema\nThis library contains only one component: logo") );
|
||||
|
||||
brightSizer->Add( m_buttonExport, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
brightSizer->Add( m_buttonExport, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
wxString m_radioBoxFormatChoices[] = { _("Eeschema (.lib file)"), _("Pcbnew (.kicad_mod file)"), _("Postscript (.ps file)"), _("Logo for title block (.kicad_wks file)") };
|
||||
int m_radioBoxFormatNChoices = sizeof( m_radioBoxFormatChoices ) / sizeof( wxString );
|
||||
m_radioBoxFormat = new wxRadioBox( m_panelRight, wxID_ANY, _("Format"), wxDefaultPosition, wxDefaultSize, m_radioBoxFormatNChoices, m_radioBoxFormatChoices, 1, wxRA_SPECIFY_COLS );
|
||||
m_radioBoxFormat = new wxRadioBox( m_panelRight, wxID_ANY, _("Format:"), wxDefaultPosition, wxDefaultSize, m_radioBoxFormatNChoices, m_radioBoxFormatChoices, 1, wxRA_SPECIFY_COLS );
|
||||
m_radioBoxFormat->SetSelection( 1 );
|
||||
brightSizer->Add( m_radioBoxFormat, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizer2;
|
||||
sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( m_panelRight, wxID_ANY, _("Image Options") ), wxVERTICAL );
|
||||
sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( m_panelRight, wxID_ANY, _("Image Options:") ), wxVERTICAL );
|
||||
|
||||
m_ThresholdText = new wxStaticText( sbSizer2->GetStaticBox(), wxID_ANY, _("Black / White Threshold:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ThresholdText->Wrap( -1 );
|
||||
@@ -142,7 +142,7 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_sliderThreshold = new wxSlider( sbSizer2->GetStaticBox(), wxID_ANY, 50, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
|
||||
m_sliderThreshold->SetToolTip( _("Adjust the level to convert the greyscale picture to a black and white picture.") );
|
||||
|
||||
sbSizer2->Add( m_sliderThreshold, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
sbSizer2->Add( m_sliderThreshold, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
m_checkNegative = new wxCheckBox( sbSizer2->GetStaticBox(), wxID_ANY, _("Negative"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
sbSizer2->Add( m_checkNegative, 0, wxBOTTOM|wxTOP, 10 );
|
||||
@@ -153,7 +153,7 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
|
||||
wxString m_radio_PCBLayerChoices[] = { _("Front silk screen"), _("Front solder mask"), _("User layer Eco1"), _("User layer Eco2") };
|
||||
int m_radio_PCBLayerNChoices = sizeof( m_radio_PCBLayerChoices ) / sizeof( wxString );
|
||||
m_radio_PCBLayer = new wxRadioBox( m_panelRight, wxID_ANY, _("Board Layer for Outline:"), wxDefaultPosition, wxDefaultSize, m_radio_PCBLayerNChoices, m_radio_PCBLayerChoices, 1, wxRA_SPECIFY_COLS );
|
||||
m_radio_PCBLayer->SetSelection( 3 );
|
||||
m_radio_PCBLayer->SetSelection( 0 );
|
||||
m_radio_PCBLayer->SetToolTip( _("Choose the board layer to place the outline.\nThe 2 invisible fields reference and value are always placed on the silk screen layer.") );
|
||||
|
||||
brightSizer->Add( m_radio_PCBLayer, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<property name="file">bitmap2cmp_gui_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="indent_with_spaces"></property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">bitmap2cmp_gui</property>
|
||||
<property name="namespace"></property>
|
||||
@@ -1812,7 +1813,7 @@
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT</property>
|
||||
<property name="flag">wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxButton" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
@@ -1900,7 +1901,7 @@
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT</property>
|
||||
<property name="flag">wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxButton" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
@@ -2019,7 +2020,7 @@
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Format</property>
|
||||
<property name="label">Format:</property>
|
||||
<property name="majorDimension">1</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
@@ -2082,7 +2083,7 @@
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticBoxSizer" expanded="1">
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Image Options</property>
|
||||
<property name="label">Image Options:</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">sbSizer2</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
@@ -2174,7 +2175,7 @@
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT</property>
|
||||
<property name="flag">wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxSlider" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
@@ -2420,7 +2421,7 @@
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="selection">3</property>
|
||||
<property name="selection">0</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style">wxRA_SPECIFY_COLS</property>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// C++ code generated with wxFormBuilder (version Jun 5 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# This program source code file is part of KICAD, a free EDA CAD application.
|
||||
#
|
||||
# Copyright (C) 2011 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
# Copyright (C) 2011-2016 Kicad Developers, see change_log.txt for contributors#.
|
||||
# Copyright (C) 2011-2018 Kicad Developers, see AUTHORS.txt for contributors.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@@ -98,6 +98,7 @@ set( BMAPS_SMALL
|
||||
pintype_opencoll
|
||||
pintype_openemit
|
||||
pintype_noconnect
|
||||
refresh
|
||||
tree_nosel
|
||||
tree_sel
|
||||
)
|
||||
@@ -304,8 +305,7 @@ set( BMAPS_MID
|
||||
label2glabel
|
||||
label2text
|
||||
label
|
||||
lang_catalan
|
||||
lang_chinese
|
||||
lang_ca
|
||||
lang_bg
|
||||
lang_cs
|
||||
lang_def
|
||||
@@ -326,6 +326,7 @@ set( BMAPS_MID
|
||||
lang_sk
|
||||
lang_sl
|
||||
lang_lt
|
||||
lang_zh
|
||||
language
|
||||
layers_manager
|
||||
leave_sheet
|
||||
@@ -344,6 +345,7 @@ set( BMAPS_MID
|
||||
load_module_board
|
||||
load_module_lib
|
||||
local_ratsnest
|
||||
lock_unlock
|
||||
locked
|
||||
measurement
|
||||
minus
|
||||
@@ -411,6 +413,7 @@ set( BMAPS_MID
|
||||
options_all_vias
|
||||
options_arc
|
||||
options_circle
|
||||
options_generic
|
||||
options_module
|
||||
options_pad
|
||||
options_pinsheet
|
||||
@@ -630,7 +633,7 @@ function( svg2png inputFile outFile pngWidth pngHeight )
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${outFile}
|
||||
COMMAND ${Inkscape_EXECUTABLE} --export-area-snap -f ${inputFile} -e ${outFile}
|
||||
COMMAND ${Inkscape_EXECUTABLE} --without-gui --export-area-snap -f ${inputFile} -e ${outFile}
|
||||
-w ${pngWidth} -h ${pngHeight} > ${logfile}
|
||||
DEPENDS ${inputFile}
|
||||
COMMENT "Creating ${pngHeight} pixel tall ${outFile}"
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
/* Do not modify this file, it was automatically generated by the
|
||||
* PNG2cpp CMake script, using a *.png file as input.
|
||||
*/
|
||||
|
||||
#include <bitmaps.h>
|
||||
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff,
|
||||
0x61, 0x00, 0x00, 0x01, 0x0b, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x9d, 0xd3, 0xbd, 0x4a, 0x43,
|
||||
0x41, 0x10, 0x05, 0xe0, 0xcf, 0xc4, 0x18, 0xd2, 0xda, 0x08, 0x82, 0x18, 0xc1, 0xce, 0x1f, 0xb0,
|
||||
0x55, 0x44, 0xc1, 0x42, 0x1b, 0xf3, 0x22, 0x8a, 0xb6, 0x62, 0x2f, 0x82, 0xb1, 0xf0, 0x25, 0x2c,
|
||||
0x05, 0x15, 0x2c, 0x54, 0x62, 0x91, 0x32, 0x88, 0x85, 0x79, 0x01, 0x5b, 0x1f, 0x20, 0x2a, 0x11,
|
||||
0x7f, 0x9a, 0x09, 0x5c, 0x96, 0x24, 0x24, 0x39, 0x70, 0x2f, 0x3b, 0x3b, 0x7b, 0xe6, 0xec, 0xbd,
|
||||
0x67, 0x86, 0xde, 0x18, 0xc7, 0x1c, 0xca, 0xc8, 0x67, 0xf6, 0x8f, 0x51, 0xea, 0xc3, 0xb3, 0x8e,
|
||||
0x5b, 0xb4, 0xf0, 0x17, 0x4f, 0x0b, 0x57, 0x38, 0x8d, 0xb8, 0x9c, 0x55, 0xe9, 0x20, 0x8f, 0x73,
|
||||
0x1c, 0xe2, 0x07, 0x35, 0xbc, 0x22, 0x87, 0x25, 0x54, 0x32, 0xe7, 0xa7, 0xf0, 0x96, 0x2a, 0x5f,
|
||||
0x44, 0xf5, 0xa7, 0xac, 0x42, 0x60, 0x17, 0xed, 0xcc, 0x8d, 0x2a, 0x29, 0x79, 0x23, 0x12, 0x35,
|
||||
0x14, 0x92, 0xdc, 0x22, 0x9a, 0x78, 0x46, 0x03, 0x8f, 0xd8, 0x49, 0x0b, 0xdc, 0xe1, 0x17, 0x0b,
|
||||
0x46, 0xc0, 0x04, 0xbe, 0x70, 0x3f, 0x0a, 0x39, 0x87, 0x19, 0x14, 0xf1, 0x32, 0x04, 0x6f, 0x05,
|
||||
0xfb, 0x98, 0x14, 0xaf, 0xbd, 0xd8, 0x1c, 0x14, 0x67, 0xa9, 0x9d, 0xc3, 0xe2, 0x01, 0x9f, 0x49,
|
||||
0x1b, 0x0c, 0x8c, 0x79, 0x7c, 0xe3, 0x3a, 0x4d, 0x6c, 0x87, 0x45, 0x8d, 0xb0, 0xac, 0x19, 0x16,
|
||||
0x66, 0x51, 0x44, 0x3d, 0x1c, 0x5b, 0xd3, 0xa5, 0x59, 0x3a, 0x8d, 0xd2, 0x8e, 0x38, 0x55, 0xae,
|
||||
0x47, 0xbe, 0xda, 0xad, 0x95, 0xdf, 0x33, 0xeb, 0x31, 0x1c, 0x60, 0x33, 0xd4, 0x96, 0xb1, 0x15,
|
||||
0xae, 0x55, 0x71, 0xd4, 0xed, 0xdb, 0x66, 0xa3, 0xfa, 0x09, 0x2e, 0x93, 0x61, 0xfa, 0xc0, 0x0d,
|
||||
0x56, 0xfb, 0xfd, 0x9c, 0x52, 0x8c, 0x6a, 0xf6, 0x16, 0xd3, 0x31, 0xd2, 0x85, 0x5e, 0xa4, 0x7f,
|
||||
0x48, 0xf6, 0x3b, 0x32, 0xac, 0x39, 0x22, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
|
||||
0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE refresh_xpm[1] = {{ png, sizeof( png ), "refresh_xpm" }};
|
||||
|
||||
//EOF
|
||||
@@ -8,91 +8,90 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x05, 0x33, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0xd6, 0x79, 0x4c, 0x93,
|
||||
0x67, 0x1c, 0x07, 0xf0, 0x87, 0x8a, 0x47, 0xbd, 0xa6, 0x80, 0x32, 0x20, 0x9b, 0xd3, 0x2c, 0xf3,
|
||||
0x0f, 0x37, 0xdd, 0x8c, 0x59, 0xe2, 0xa6, 0x8b, 0xc6, 0x73, 0x32, 0xe4, 0xb2, 0xf4, 0x82, 0xb6,
|
||||
0x54, 0xe9, 0x05, 0x0c, 0x14, 0x07, 0x2a, 0xa0, 0x4e, 0x86, 0x58, 0x70, 0x43, 0x64, 0x72, 0x08,
|
||||
0x11, 0x10, 0x25, 0xa0, 0x53, 0x4e, 0x07, 0x28, 0x08, 0x55, 0x04, 0x15, 0x1c, 0x1e, 0xc1, 0x33,
|
||||
0xe2, 0x7d, 0x15, 0x2b, 0x16, 0x15, 0x95, 0xb6, 0xef, 0x77, 0x6f, 0xbb, 0xd0, 0x50, 0x0e, 0xe9,
|
||||
0x96, 0xf9, 0x24, 0x4f, 0xde, 0xb4, 0xe9, 0xf3, 0x7c, 0xde, 0xe7, 0xf7, 0x7b, 0xfa, 0x7b, 0x1e,
|
||||
0x42, 0xac, 0x6d, 0xcb, 0x04, 0x9f, 0x11, 0x57, 0x1e, 0x87, 0xb8, 0xf9, 0xce, 0x24, 0x2c, 0xd6,
|
||||
0x68, 0xf2, 0x3e, 0xda, 0x68, 0xd6, 0x2a, 0xb9, 0x3d, 0x4f, 0xd2, 0x31, 0x37, 0x22, 0xa6, 0x6b,
|
||||
0x41, 0xe4, 0xd6, 0x76, 0x67, 0x41, 0x90, 0x76, 0x3c, 0x47, 0xa2, 0x71, 0x11, 0x06, 0x5d, 0x9c,
|
||||
0x24, 0x0e, 0x3d, 0xc8, 0xf4, 0x12, 0x87, 0xd1, 0x2f, 0xb1, 0x84, 0xb8, 0xf9, 0x4d, 0x26, 0x9b,
|
||||
0x37, 0x33, 0xfe, 0xbd, 0xe0, 0x21, 0x1a, 0xe7, 0xc0, 0x95, 0x96, 0x2f, 0x8a, 0x8a, 0xd3, 0xde,
|
||||
0x78, 0xf8, 0x18, 0x2d, 0x77, 0xef, 0xa3, 0xbb, 0xe9, 0xf4, 0x7a, 0x5c, 0x7f, 0xf0, 0x08, 0x25,
|
||||
0x67, 0xce, 0x21, 0xfe, 0x50, 0xa9, 0x9e, 0xbf, 0x7d, 0x57, 0xfb, 0x8c, 0xe0, 0x0d, 0x6d, 0xf4,
|
||||
0x0b, 0x68, 0xed, 0x79, 0xd2, 0x7b, 0x4e, 0x7e, 0x81, 0x35, 0xf6, 0x3c, 0x79, 0xd4, 0xe0, 0xc8,
|
||||
0x0f, 0xdc, 0xd9, 0xf4, 0xa0, 0x87, 0x3b, 0x8a, 0x2b, 0xde, 0x52, 0x14, 0x85, 0x9a, 0x8b, 0x97,
|
||||
0x21, 0x4a, 0x4c, 0x87, 0x35, 0xad, 0xfd, 0xe5, 0x2b, 0x2c, 0x88, 0x8c, 0xd3, 0x8f, 0xf0, 0xf2,
|
||||
0xd7, 0xbd, 0x8b, 0xb0, 0x19, 0xcf, 0x91, 0x46, 0x4c, 0x12, 0x87, 0xb4, 0x37, 0xdf, 0xbc, 0x6d,
|
||||
0x1e, 0x7c, 0xeb, 0x89, 0x1a, 0x85, 0x0d, 0x4d, 0x56, 0x41, 0xe1, 0xd9, 0xf9, 0x7a, 0x3a, 0xac,
|
||||
0x86, 0x31, 0xac, 0x95, 0x2f, 0xfb, 0x27, 0x96, 0x73, 0x1d, 0xed, 0x79, 0xb2, 0x86, 0x15, 0x71,
|
||||
0x49, 0x1d, 0x2f, 0x5f, 0xbf, 0xb1, 0x18, 0x6c, 0x84, 0xd2, 0xcb, 0xab, 0x07, 0x45, 0x92, 0x4a,
|
||||
0x2b, 0x29, 0x47, 0x5f, 0x85, 0xa1, 0xf5, 0xb1, 0x1a, 0xe3, 0xd8, 0x92, 0x67, 0x7d, 0x0c, 0x5b,
|
||||
0x0f, 0xe1, 0x62, 0x7b, 0xae, 0x44, 0xbd, 0xbf, 0xf6, 0x94, 0xbe, 0xbf, 0x09, 0xfe, 0xba, 0x79,
|
||||
0x0b, 0x9e, 0xb1, 0x89, 0xef, 0x44, 0x72, 0x6b, 0xea, 0xa8, 0x09, 0x7c, 0xb9, 0xa1, 0x3b, 0x97,
|
||||
0x1f, 0xf8, 0x04, 0x68, 0x2c, 0x77, 0x15, 0x5b, 0x7a, 0x88, 0xe9, 0x23, 0xc1, 0xf7, 0x9b, 0x12,
|
||||
0x90, 0x53, 0x7d, 0x02, 0x9a, 0x8e, 0x17, 0x7d, 0x26, 0x79, 0xab, 0xd3, 0xe1, 0xd1, 0xb3, 0xe7,
|
||||
0x03, 0x22, 0xc6, 0x4d, 0x61, 0xc7, 0x93, 0x1a, 0x1a, 0xaf, 0xb7, 0x9a, 0x3e, 0x77, 0xe9, 0xf4,
|
||||
0xa0, 0x73, 0xac, 0xb6, 0x80, 0x46, 0xb2, 0x65, 0x0d, 0x0b, 0x53, 0x8a, 0xb0, 0x38, 0xa5, 0x88,
|
||||
0x9a, 0x16, 0xf1, 0xab, 0x7e, 0x2c, 0x3f, 0x90, 0x1a, 0xc9, 0x96, 0x1a, 0x26, 0x4b, 0x7e, 0xea,
|
||||
0x62, 0x29, 0x93, 0x91, 0x79, 0xb4, 0x16, 0x75, 0x97, 0xaf, 0x61, 0xe9, 0x26, 0x65, 0xbf, 0xc8,
|
||||
0xc9, 0x96, 0xab, 0xb0, 0xe3, 0x4a, 0x0c, 0xaa, 0x4b, 0x57, 0xa8, 0xee, 0xef, 0x3a, 0x3a, 0x5f,
|
||||
0xc3, 0x9e, 0x2b, 0xbd, 0x6f, 0x09, 0x71, 0xe4, 0xe5, 0x5e, 0x05, 0x75, 0x08, 0x3b, 0xa3, 0x46,
|
||||
0x78, 0xe3, 0x53, 0xac, 0x39, 0xfd, 0x04, 0x32, 0xd5, 0x1d, 0xb8, 0x1f, 0xac, 0xc7, 0xac, 0x1d,
|
||||
0xf9, 0x94, 0xcb, 0x9a, 0xad, 0x3a, 0x26, 0x47, 0x4e, 0x31, 0x96, 0x0b, 0xe0, 0x20, 0x08, 0xd6,
|
||||
0x2f, 0x8a, 0x8e, 0xa7, 0xb6, 0xfd, 0x51, 0x82, 0xbb, 0xea, 0x36, 0x5c, 0xb8, 0x7d, 0x07, 0x74,
|
||||
0x5e, 0x0d, 0x47, 0x1a, 0x9b, 0xa9, 0x9e, 0x78, 0x9b, 0xb6, 0x03, 0x13, 0xf9, 0xf2, 0x56, 0x0b,
|
||||
0x88, 0xc9, 0x96, 0xe6, 0x2f, 0xda, 0x53, 0x01, 0xc9, 0x89, 0x3b, 0x90, 0x9d, 0xbc, 0x0b, 0x09,
|
||||
0x8d, 0x88, 0x8e, 0xdf, 0x04, 0xbb, 0xf2, 0x0a, 0xdc, 0xca, 0x2e, 0x60, 0xc1, 0xe1, 0xb3, 0xf8,
|
||||
0x7a, 0x5f, 0x0d, 0x26, 0x29, 0xb3, 0xe0, 0x1c, 0x9f, 0x8d, 0xd1, 0xe1, 0x09, 0x94, 0xad, 0x38,
|
||||
0x4c, 0x6f, 0xe3, 0xbd, 0x92, 0x62, 0x78, 0x0a, 0x91, 0x5c, 0x5a, 0x69, 0xe8, 0xbd, 0xca, 0x7b,
|
||||
0x6d, 0x1a, 0x38, 0xf2, 0x15, 0x57, 0x2c, 0xa0, 0xe1, 0x2b, 0x02, 0x76, 0xcf, 0xde, 0x75, 0x18,
|
||||
0x9c, 0xa3, 0x57, 0xc1, 0x3b, 0x76, 0xcd, 0xf4, 0xf4, 0x2e, 0x6f, 0xa1, 0x91, 0xf3, 0x58, 0x58,
|
||||
0xd8, 0x88, 0x6f, 0x0f, 0x9c, 0xc2, 0xe7, 0x19, 0x65, 0x60, 0x0a, 0x43, 0xe1, 0x92, 0x56, 0x84,
|
||||
0x71, 0x3b, 0x0b, 0x30, 0x74, 0x7b, 0x0e, 0x88, 0x72, 0x0f, 0x6c, 0x04, 0x21, 0x86, 0xf2, 0xa6,
|
||||
0x0b, 0x7d, 0xc2, 0x69, 0xfc, 0x83, 0x3b, 0x09, 0x02, 0x9b, 0x2d, 0x77, 0x9c, 0xa7, 0x38, 0xfe,
|
||||
0x8b, 0x84, 0x5c, 0x2c, 0x2b, 0x69, 0x86, 0x6b, 0xe9, 0x79, 0xd3, 0x73, 0x71, 0x51, 0x13, 0xe6,
|
||||
0x1f, 0x3a, 0x83, 0x6f, 0xe8, 0x90, 0xce, 0xa4, 0x57, 0x33, 0x35, 0xf3, 0x08, 0x26, 0x6c, 0x49,
|
||||
0x85, 0xc3, 0xef, 0x07, 0x31, 0xf2, 0xb7, 0x7d, 0x26, 0xa4, 0x1b, 0x2a, 0x3b, 0xdb, 0xdc, 0x07,
|
||||
0xba, 0x74, 0xfb, 0x1e, 0xe8, 0x52, 0xd5, 0x60, 0x01, 0x31, 0x96, 0x0b, 0xd7, 0x4f, 0x8e, 0x49,
|
||||
0xc7, 0x9c, 0x03, 0xf5, 0x98, 0x4b, 0xe7, 0x65, 0x0e, 0xbd, 0x82, 0xd9, 0x05, 0x27, 0x31, 0x2b,
|
||||
0xaf, 0x16, 0xd3, 0x73, 0xab, 0x30, 0x35, 0xab, 0x02, 0x8e, 0x5b, 0x33, 0x30, 0x4c, 0xb4, 0x1a,
|
||||
0x23, 0xd6, 0x25, 0x80, 0x11, 0x93, 0x06, 0xf2, 0x4b, 0x5a, 0x37, 0xa4, 0x2f, 0x3e, 0x7d, 0xae,
|
||||
0x0f, 0xd4, 0x74, 0xa3, 0x15, 0x2e, 0x82, 0xa0, 0xda, 0x5e, 0xe5, 0x86, 0x1f, 0xe8, 0xb8, 0x21,
|
||||
0x51, 0x6f, 0x9c, 0x74, 0x46, 0x6e, 0x35, 0xa6, 0xef, 0xad, 0xc2, 0xb4, 0x9c, 0xa3, 0x26, 0x60,
|
||||
0x4a, 0x66, 0x19, 0x9c, 0x12, 0xf3, 0x30, 0x6a, 0x4d, 0x2c, 0x46, 0x44, 0x25, 0x82, 0x11, 0xbd,
|
||||
0x03, 0x64, 0x6d, 0x1c, 0x08, 0x5b, 0x06, 0x12, 0x95, 0x04, 0xe2, 0x25, 0xa6, 0x56, 0xed, 0xcc,
|
||||
0x80, 0xf6, 0x55, 0x27, 0x9e, 0x3c, 0xd7, 0x9a, 0x21, 0xe3, 0x2e, 0x75, 0x16, 0x06, 0x97, 0x5b,
|
||||
0x42, 0xae, 0x7c, 0xe1, 0xd8, 0xd5, 0xb1, 0xaf, 0x3f, 0xc9, 0x28, 0x45, 0x77, 0xff, 0x38, 0xbd,
|
||||
0x18, 0xce, 0xa9, 0x85, 0x60, 0x06, 0x6e, 0xc4, 0xd0, 0x55, 0xe1, 0x60, 0xd2, 0xe1, 0xb2, 0x89,
|
||||
0xcf, 0x32, 0x87, 0xcc, 0x1c, 0x3a, 0xbe, 0x42, 0xbf, 0x2e, 0x3b, 0xdf, 0xb4, 0xc5, 0xbf, 0xfc,
|
||||
0x71, 0x03, 0xf2, 0x54, 0xf5, 0x88, 0x2d, 0x28, 0x86, 0x7f, 0xd2, 0x6e, 0x38, 0xf9, 0x29, 0x0a,
|
||||
0x2d, 0x21, 0x37, 0x5f, 0xef, 0x61, 0x8a, 0xa8, 0x0e, 0xbb, 0xe4, 0x03, 0x30, 0xf6, 0xf1, 0xc9,
|
||||
0x05, 0x18, 0x9b, 0x90, 0x83, 0xe1, 0xe1, 0x4a, 0x0c, 0xdb, 0xb2, 0x0b, 0x43, 0x12, 0xb2, 0xfb,
|
||||
0x00, 0x3d, 0x72, 0xa4, 0xcb, 0x57, 0x35, 0x58, 0x84, 0xcd, 0x58, 0x23, 0x67, 0x04, 0xaf, 0xef,
|
||||
0x1c, 0xe3, 0x23, 0x0e, 0xe8, 0x75, 0xa8, 0xf9, 0x2e, 0xb5, 0x11, 0x87, 0xb5, 0x1b, 0x27, 0xb4,
|
||||
0xa5, 0x01, 0xe3, 0x93, 0x9e, 0xe0, 0x9f, 0x10, 0x0d, 0x00, 0xf4, 0x84, 0xf6, 0xd7, 0xd6, 0x5b,
|
||||
0x40, 0x79, 0x74, 0x19, 0xb3, 0xe3, 0x48, 0x4e, 0x1b, 0x0b, 0x74, 0xaf, 0x15, 0x71, 0xe7, 0x10,
|
||||
0x61, 0xc8, 0x53, 0xd3, 0xe0, 0xb0, 0x58, 0x90, 0x80, 0xf0, 0x41, 0x01, 0x33, 0xe4, 0x17, 0xa2,
|
||||
0xdb, 0x5b, 0x5d, 0x67, 0x46, 0xd4, 0x74, 0x9e, 0x1c, 0x78, 0x32, 0x0d, 0x71, 0xe7, 0x7c, 0xd4,
|
||||
0x4f, 0xd5, 0xe6, 0x7c, 0x45, 0xf8, 0x8a, 0x36, 0xf2, 0x73, 0x0a, 0x88, 0x22, 0x9a, 0xde, 0x51,
|
||||
0xe9, 0xd6, 0x43, 0x82, 0x90, 0xae, 0xac, 0x2a, 0x95, 0x19, 0x5a, 0xb2, 0x51, 0xf9, 0x7c, 0xd4,
|
||||
0x0a, 0x7f, 0xff, 0x01, 0x8e, 0x07, 0xdf, 0x4f, 0x89, 0xa7, 0xa8, 0x93, 0xc8, 0x22, 0xad, 0x06,
|
||||
0x7a, 0x42, 0x99, 0x95, 0xb5, 0x26, 0x24, 0xeb, 0x98, 0x4a, 0x3f, 0x81, 0x2f, 0x53, 0x0d, 0x7c,
|
||||
0xd4, 0xcd, 0x9b, 0x67, 0x4b, 0xdc, 0x45, 0xa9, 0xf4, 0xd1, 0xfd, 0x98, 0xb0, 0xa5, 0x1a, 0x12,
|
||||
0xb4, 0xb1, 0x8b, 0x6c, 0x4e, 0xb6, 0x1a, 0xda, 0x5d, 0x71, 0x1c, 0x0f, 0x34, 0xcf, 0x8c, 0x35,
|
||||
0xef, 0x29, 0x59, 0x26, 0xfa, 0xd0, 0xba, 0x7b, 0x82, 0x2b, 0x6f, 0x0a, 0x71, 0x17, 0xae, 0x25,
|
||||
0x5e, 0xfe, 0xe7, 0x88, 0x97, 0xa8, 0x9d, 0xac, 0x5c, 0xfb, 0x82, 0x44, 0x28, 0x41, 0xb6, 0x65,
|
||||
0x0e, 0x08, 0xa5, 0xfe, 0x59, 0x85, 0xef, 0xd6, 0xc5, 0x68, 0x99, 0xde, 0xfe, 0xdc, 0xff, 0x76,
|
||||
0xfd, 0x59, 0xc2, 0xb2, 0xa3, 0x61, 0x16, 0xf1, 0xf0, 0x2f, 0x21, 0xee, 0x02, 0x2d, 0xe1, 0x05,
|
||||
0x69, 0x48, 0x68, 0x0c, 0x45, 0x62, 0xd2, 0x7a, 0x40, 0xa1, 0x6f, 0x17, 0x46, 0xc6, 0x19, 0xe8,
|
||||
0x03, 0xaf, 0xfc, 0xff, 0xb9, 0x73, 0x19, 0xc3, 0xeb, 0xca, 0x9b, 0x4f, 0x3c, 0x84, 0x29, 0x74,
|
||||
0x7f, 0x48, 0x7c, 0x24, 0x6d, 0x24, 0x30, 0xfa, 0x8d, 0x0d, 0x57, 0xde, 0x35, 0xdc, 0x98, 0x5f,
|
||||
0x4f, 0xbf, 0x89, 0xef, 0xe5, 0xae, 0x67, 0xba, 0x50, 0xba, 0x09, 0x22, 0x18, 0x9e, 0xe2, 0x96,
|
||||
0x21, 0xee, 0x02, 0xde, 0x60, 0x3f, 0xff, 0x1b, 0x73, 0x06, 0xe5, 0x5c, 0xf9, 0x44, 0x86, 0x22,
|
||||
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x05, 0x22, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x7b, 0x4c, 0x53,
|
||||
0x57, 0x1c, 0xc7, 0x0f, 0x2f, 0x85, 0xa1, 0x43, 0x51, 0xc4, 0x69, 0x9c, 0xd3, 0xa1, 0x43, 0xf7,
|
||||
0xd2, 0x2c, 0x33, 0x73, 0x33, 0x4e, 0xb7, 0x3f, 0x30, 0x30, 0xa8, 0x1d, 0x14, 0xfa, 0x6e, 0xa1,
|
||||
0x50, 0x4a, 0x0b, 0x8a, 0x80, 0x82, 0x65, 0xa8, 0x20, 0x38, 0x50, 0xd1, 0xa9, 0x81, 0x15, 0x54,
|
||||
0x64, 0xb0, 0xcc, 0x17, 0x1a, 0x11, 0x4d, 0x71, 0xc8, 0x1c, 0xc3, 0x17, 0x28, 0x4e, 0x97, 0x88,
|
||||
0xe0, 0x0b, 0xc7, 0x94, 0x39, 0x79, 0x6b, 0x7d, 0xd0, 0xc2, 0xfd, 0xee, 0xdc, 0x3a, 0x9d, 0xa5,
|
||||
0x80, 0xb8, 0xb8, 0x6f, 0x72, 0x92, 0x7b, 0x4f, 0x4e, 0xce, 0x27, 0xbf, 0xc7, 0xf9, 0x9e, 0x43,
|
||||
0xc8, 0x20, 0x65, 0xcf, 0x11, 0x7a, 0xd9, 0x71, 0xc4, 0x3b, 0x89, 0xb7, 0x20, 0x81, 0xf8, 0xc9,
|
||||
0xe6, 0x12, 0x1e, 0x6f, 0x08, 0x79, 0xa9, 0xfa, 0x40, 0xe9, 0xe0, 0xca, 0x57, 0x6e, 0x1a, 0x2f,
|
||||
0x8d, 0x32, 0xb8, 0x85, 0xc4, 0x62, 0x4a, 0x6c, 0x3a, 0xe3, 0x2a, 0x8b, 0x66, 0x86, 0x06, 0x28,
|
||||
0x98, 0xa1, 0x81, 0x61, 0x3d, 0xce, 0x82, 0x70, 0xc3, 0x70, 0xbe, 0xea, 0xaa, 0x8d, 0xaf, 0xb8,
|
||||
0x88, 0xf8, 0x08, 0xb5, 0xc4, 0x4f, 0x38, 0x9f, 0xcc, 0x93, 0x3b, 0xbe, 0x18, 0xc4, 0x57, 0x32,
|
||||
0x89, 0x42, 0x6a, 0x35, 0xd9, 0xf9, 0x06, 0xfd, 0xd9, 0xf3, 0x98, 0x9d, 0x9c, 0x8d, 0xf8, 0x33,
|
||||
0x2d, 0x88, 0x3a, 0xd9, 0x84, 0x90, 0x63, 0xd7, 0xc1, 0x2d, 0x3e, 0x87, 0x8f, 0xb7, 0xeb, 0xe1,
|
||||
0xb9, 0xae, 0x00, 0xe3, 0xb5, 0x1b, 0xe1, 0x1a, 0x91, 0xc8, 0x38, 0x8a, 0x34, 0x8c, 0x2d, 0x57,
|
||||
0xce, 0xd8, 0x70, 0xe5, 0x3d, 0xf6, 0x01, 0x8a, 0x0e, 0x1a, 0xb9, 0xdd, 0x80, 0x0c, 0x47, 0xae,
|
||||
0x4c, 0x34, 0x4a, 0x10, 0xde, 0x7a, 0xf8, 0xcc, 0xaf, 0x0c, 0xa8, 0x2a, 0x2f, 0xd6, 0x61, 0xf6,
|
||||
0xaa, 0x2d, 0xd0, 0xd6, 0xb4, 0x61, 0x11, 0x05, 0x05, 0x53, 0x50, 0x40, 0xe9, 0x45, 0x2c, 0x28,
|
||||
0xae, 0xc1, 0x27, 0x7b, 0x4e, 0xe0, 0xbd, 0xc2, 0xa3, 0x98, 0xbc, 0xed, 0x10, 0xdc, 0xb2, 0x8a,
|
||||
0xe0, 0x98, 0x59, 0x00, 0x22, 0x5d, 0x0c, 0xe2, 0x27, 0x01, 0x9b, 0x91, 0xbe, 0x09, 0x3c, 0x9e,
|
||||
0x93, 0x9b, 0x30, 0x22, 0x6f, 0x56, 0x4c, 0x52, 0xc7, 0xad, 0xd6, 0x36, 0x3c, 0x51, 0x55, 0xfd,
|
||||
0x55, 0xcc, 0xd4, 0x66, 0x9a, 0x21, 0xa1, 0x15, 0x37, 0x20, 0x28, 0xab, 0x87, 0xdf, 0xa1, 0x0b,
|
||||
0xf8, 0x6c, 0x5f, 0x15, 0x3e, 0xdc, 0x59, 0x81, 0x69, 0xf9, 0x47, 0x30, 0x21, 0xa7, 0x18, 0x23,
|
||||
0x36, 0xef, 0x86, 0x6d, 0x78, 0x02, 0x48, 0xe8, 0x32, 0xd8, 0x2c, 0x94, 0x33, 0xfd, 0xa4, 0x4a,
|
||||
0xf0, 0xb6, 0xab, 0x20, 0xbc, 0x21, 0xb1, 0x60, 0xcf, 0xc3, 0x1e, 0x86, 0xc1, 0xb3, 0xba, 0xd0,
|
||||
0xf0, 0x3b, 0xa6, 0xc7, 0xa5, 0x41, 0x5a, 0x7e, 0x05, 0x81, 0x47, 0x2e, 0xc1, 0x97, 0x42, 0x3e,
|
||||
0xdf, 0x5f, 0x8d, 0x8f, 0x76, 0x55, 0xe2, 0xdd, 0x82, 0x32, 0x4c, 0xda, 0xfa, 0x38, 0x1a, 0x87,
|
||||
0xa8, 0x64, 0x1a, 0x4d, 0x34, 0x48, 0xfa, 0x76, 0x0a, 0x92, 0x59, 0x81, 0x6c, 0x86, 0xf9, 0x87,
|
||||
0x68, 0x5e, 0x93, 0x68, 0xda, 0x8e, 0xd7, 0xd6, 0xa3, 0x2f, 0xd5, 0xdd, 0x6c, 0x82, 0x47, 0xf4,
|
||||
0x2a, 0x0a, 0x38, 0x0f, 0xaf, 0x03, 0x67, 0xf1, 0x69, 0xd1, 0x29, 0xcc, 0xda, 0xf9, 0x0b, 0xde,
|
||||
0xa1, 0x10, 0x36, 0x65, 0xee, 0xd9, 0xfb, 0xe0, 0x18, 0xbf, 0x0e, 0x44, 0xa0, 0x06, 0xf9, 0x7a,
|
||||
0x1b, 0x48, 0x46, 0x9e, 0x35, 0x88, 0x46, 0x51, 0x6a, 0xc7, 0x91, 0x20, 0x6d, 0x77, 0x31, 0x73,
|
||||
0xba, 0xee, 0x2a, 0x1e, 0x76, 0x19, 0xad, 0x40, 0x37, 0xfe, 0x6a, 0xc6, 0xeb, 0xea, 0x44, 0x73,
|
||||
0x3d, 0x58, 0xc0, 0x8c, 0xc2, 0x72, 0x78, 0xee, 0x28, 0xc5, 0xc4, 0xdc, 0x83, 0x8f, 0xeb, 0x92,
|
||||
0xb8, 0x11, 0x24, 0x48, 0x05, 0x92, 0x9a, 0x63, 0x86, 0x98, 0x23, 0xe2, 0xf4, 0x02, 0x8d, 0x95,
|
||||
0x68, 0x4e, 0x46, 0xe7, 0x16, 0xc2, 0x37, 0x25, 0x93, 0xf1, 0x50, 0xc6, 0x98, 0x46, 0xf0, 0x95,
|
||||
0xcc, 0x1b, 0x8a, 0xe8, 0x9e, 0xc0, 0xf4, 0xcd, 0xa6, 0xec, 0xc3, 0x47, 0x99, 0x33, 0x97, 0xaf,
|
||||
0xa3, 0xf1, 0x4e, 0x0b, 0xc6, 0x29, 0x97, 0x62, 0x7a, 0xfe, 0x8f, 0x98, 0x92, 0xa7, 0xa7, 0x80,
|
||||
0x12, 0x8c, 0xfd, 0x76, 0xbf, 0xb9, 0x26, 0x43, 0x56, 0x66, 0x81, 0xf0, 0xc2, 0x40, 0x68, 0x57,
|
||||
0x9a, 0x21, 0xec, 0xa0, 0x51, 0xd9, 0x72, 0x83, 0x7b, 0x2c, 0x40, 0xe3, 0x64, 0x51, 0xfa, 0xde,
|
||||
0x29, 0xbb, 0xd3, 0x71, 0x17, 0x05, 0x3f, 0x55, 0x42, 0x92, 0xa9, 0x63, 0x66, 0x44, 0x69, 0x8d,
|
||||
0x63, 0xc4, 0xea, 0x1e, 0x5b, 0x8e, 0x14, 0xce, 0x91, 0x2b, 0x30, 0x6c, 0x79, 0x26, 0x86, 0xa5,
|
||||
0xe6, 0xc2, 0x69, 0x7d, 0x21, 0x6c, 0x92, 0xff, 0x81, 0x24, 0x6d, 0xfa, 0x17, 0xc2, 0x8e, 0xb4,
|
||||
0x5c, 0xd8, 0x7e, 0x29, 0xef, 0xee, 0x15, 0x91, 0x7a, 0x57, 0x69, 0xcd, 0x05, 0x0c, 0xa4, 0x07,
|
||||
0x5d, 0x5d, 0x18, 0x2e, 0x8a, 0x80, 0x43, 0xc2, 0x7a, 0xd8, 0x68, 0xbe, 0xa2, 0x05, 0x5f, 0x04,
|
||||
0xe2, 0x1f, 0x0a, 0x22, 0xd2, 0x80, 0xd0, 0x6e, 0xb4, 0x80, 0xb0, 0x23, 0x55, 0x07, 0x3b, 0xff,
|
||||
0x10, 0xa3, 0x05, 0x68, 0x8c, 0x48, 0x95, 0x5b, 0x74, 0xa2, 0x7a, 0x40, 0x10, 0xdb, 0x85, 0x2e,
|
||||
0x22, 0xb5, 0xf5, 0x86, 0x3c, 0xe5, 0xd3, 0xe2, 0x5b, 0x8c, 0x94, 0x6c, 0x0a, 0x52, 0x3c, 0xb2,
|
||||
0x00, 0x8d, 0x0c, 0x52, 0xae, 0xfd, 0xae, 0xbc, 0x12, 0xcf, 0x93, 0x8b, 0x30, 0xc2, 0x7a, 0xc3,
|
||||
0xa0, 0x70, 0x90, 0x35, 0x5b, 0xad, 0xe7, 0x69, 0x4a, 0xa9, 0x33, 0xdc, 0xb7, 0x00, 0x0d, 0x59,
|
||||
0x28, 0x5b, 0x9e, 0x75, 0xb8, 0x6c, 0x40, 0x88, 0x4e, 0x5f, 0x8e, 0x89, 0x8a, 0x25, 0x70, 0x11,
|
||||
0xab, 0xa9, 0xd5, 0x2c, 0x87, 0xdd, 0xe2, 0x14, 0x90, 0x27, 0x9d, 0x96, 0x96, 0x63, 0x0d, 0x5a,
|
||||
0xb9, 0x99, 0x05, 0xdd, 0xb5, 0x3c, 0x45, 0x5f, 0x88, 0x34, 0x19, 0x45, 0x25, 0xdd, 0xfd, 0xa5,
|
||||
0xec, 0x76, 0x7b, 0x07, 0x54, 0x59, 0x79, 0x68, 0x37, 0xdc, 0x87, 0xd1, 0xd4, 0x8d, 0xb3, 0x57,
|
||||
0xae, 0x23, 0xf3, 0x80, 0x1e, 0xde, 0xa9, 0xdf, 0xc0, 0x86, 0xda, 0xcc, 0x70, 0x1a, 0xe9, 0xc8,
|
||||
0xc8, 0x24, 0x90, 0x98, 0x35, 0x66, 0x00, 0xdb, 0xda, 0x6c, 0x73, 0xd8, 0xf3, 0x42, 0xdb, 0x2c,
|
||||
0x41, 0x3e, 0x22, 0x19, 0xeb, 0x06, 0xbd, 0x21, 0x8f, 0x8c, 0x46, 0x70, 0x56, 0x6f, 0xc0, 0xda,
|
||||
0x7d, 0x87, 0xfa, 0x8d, 0x74, 0x92, 0x22, 0xba, 0xfb, 0x78, 0x6d, 0x1d, 0xf6, 0x1e, 0xaf, 0x82,
|
||||
0x4a, 0x97, 0x0f, 0xcf, 0x48, 0x2d, 0x5e, 0xa5, 0xe0, 0x57, 0x24, 0x91, 0x70, 0xe0, 0x29, 0x6e,
|
||||
0xf7, 0xb2, 0x1e, 0xb1, 0xbf, 0x46, 0x97, 0x7f, 0xf7, 0xd9, 0x0d, 0x58, 0x9f, 0x63, 0xfd, 0xad,
|
||||
0xa4, 0xfa, 0xdc, 0x80, 0x29, 0x7d, 0x33, 0x74, 0x89, 0xa9, 0xfe, 0xe6, 0x9f, 0x16, 0x73, 0x6c,
|
||||
0xd4, 0x73, 0x96, 0xa6, 0x18, 0x9c, 0xb8, 0x8a, 0x78, 0x4b, 0x90, 0xb7, 0x78, 0x81, 0x24, 0x33,
|
||||
0xbb, 0xfd, 0xc9, 0x42, 0xd6, 0x19, 0xa6, 0x47, 0x2c, 0x43, 0xf1, 0xe9, 0x9a, 0xe7, 0x36, 0x88,
|
||||
0x47, 0x58, 0x8c, 0xa9, 0xb6, 0xf1, 0x96, 0xc5, 0xdc, 0x0f, 0x3f, 0x9f, 0xe8, 0xa6, 0xd7, 0xcb,
|
||||
0x69, 0xd6, 0xda, 0x7a, 0x9b, 0xe9, 0x1c, 0x4e, 0xea, 0x86, 0x16, 0x76, 0xd1, 0xc1, 0xaa, 0x1a,
|
||||
0x6c, 0x3d, 0x72, 0x0c, 0x6d, 0xf7, 0x0c, 0x18, 0x8c, 0xa6, 0x28, 0x63, 0x4d, 0xbf, 0x35, 0x34,
|
||||
0x3e, 0x73, 0xd0, 0x3b, 0x31, 0x5a, 0xa8, 0x6a, 0x25, 0x1c, 0xfe, 0x04, 0x6b, 0xd7, 0xf6, 0xe3,
|
||||
0xcf, 0x9c, 0xaf, 0x4d, 0x6d, 0xee, 0xbc, 0xff, 0x00, 0x3e, 0xc9, 0xeb, 0xd0, 0xd8, 0xdc, 0x82,
|
||||
0xc1, 0x6a, 0x6a, 0x78, 0xac, 0xe9, 0xdc, 0xb5, 0x86, 0xa7, 0xff, 0x5e, 0x2b, 0x32, 0x3a, 0x9c,
|
||||
0x03, 0x82, 0x83, 0xfb, 0xbe, 0x1e, 0xfc, 0xc4, 0x1e, 0xe3, 0xa4, 0x91, 0x86, 0xa4, 0xef, 0x8b,
|
||||
0xf0, 0xa2, 0x7a, 0x2b, 0x3c, 0xce, 0x58, 0x7d, 0xf9, 0x9a, 0xf9, 0x7b, 0x47, 0x59, 0x45, 0xb7,
|
||||
0x9b, 0x48, 0x55, 0xd1, 0xff, 0x75, 0x3a, 0x6f, 0x9e, 0xfd, 0x68, 0x81, 0x4a, 0x37, 0x82, 0x1f,
|
||||
0x76, 0xfb, 0xfd, 0x45, 0xda, 0xd6, 0xf4, 0xbd, 0x25, 0xc6, 0x4b, 0x7f, 0xdc, 0x1a, 0x34, 0xe8,
|
||||
0x54, 0xdd, 0x15, 0x73, 0xf3, 0x8c, 0x12, 0xaa, 0x5a, 0x88, 0xb7, 0x7c, 0xec, 0xe0, 0xde, 0x09,
|
||||
0x3e, 0xc2, 0xc9, 0xce, 0x01, 0x8a, 0x38, 0x6a, 0xa2, 0x35, 0xee, 0x12, 0x75, 0xbb, 0x74, 0xa3,
|
||||
0xee, 0x1e, 0x5b, 0xb7, 0x2e, 0x93, 0xa9, 0x4f, 0x90, 0xa7, 0x2a, 0xce, 0xc8, 0x5e, 0xf3, 0x73,
|
||||
0x13, 0x56, 0x77, 0x3a, 0xf9, 0x07, 0x0b, 0xfe, 0xdb, 0x0b, 0xc8, 0x8b, 0xe7, 0x4a, 0xc1, 0x3c,
|
||||
0x77, 0xb1, 0xfa, 0xe0, 0xab, 0x81, 0x8a, 0xce, 0xb9, 0xf1, 0xab, 0x5b, 0x73, 0xf4, 0xe5, 0x4c,
|
||||
0x53, 0xeb, 0xd3, 0x06, 0xc5, 0x34, 0xd5, 0xb2, 0x2e, 0x7e, 0xc6, 0x96, 0x1e, 0x37, 0x51, 0x84,
|
||||
0xfe, 0xe5, 0x3c, 0xbb, 0x68, 0x7a, 0x29, 0x74, 0xbe, 0x4b, 0x50, 0x68, 0xf6, 0x48, 0xbe, 0xb2,
|
||||
0x89, 0xb6, 0x7f, 0x73, 0xea, 0xee, 0x03, 0x8f, 0xe8, 0x39, 0x32, 0xd2, 0x48, 0x1e, 0x10, 0xae,
|
||||
0x64, 0x0c, 0xf9, 0x5f, 0xe4, 0x2d, 0x9d, 0xea, 0xc4, 0x95, 0xc7, 0xbb, 0x8b, 0x23, 0x2e, 0xda,
|
||||
0x71, 0xe4, 0xc2, 0xe7, 0x2d, 0xff, 0x1b, 0xc0, 0xf8, 0x47, 0x1e, 0xb0, 0x6f, 0x75, 0x78, 0x00,
|
||||
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE axis3d_back_xpm[1] = {{ png, sizeof( png ), "axis3d_back_xpm" }};
|
||||
|
||||
@@ -8,90 +8,91 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x05, 0x22, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x7b, 0x4c, 0x53,
|
||||
0x57, 0x1c, 0xc7, 0x0f, 0x2f, 0x85, 0xa1, 0x43, 0x51, 0xc4, 0x69, 0x9c, 0xd3, 0xa1, 0x43, 0xf7,
|
||||
0xd2, 0x2c, 0x33, 0x73, 0x33, 0x4e, 0xb7, 0x3f, 0x30, 0x30, 0xa8, 0x1d, 0x14, 0xfa, 0x6e, 0xa1,
|
||||
0x50, 0x4a, 0x0b, 0x8a, 0x80, 0x82, 0x65, 0xa8, 0x20, 0x38, 0x50, 0xd1, 0xa9, 0x81, 0x15, 0x54,
|
||||
0x64, 0xb0, 0xcc, 0x17, 0x1a, 0x11, 0x4d, 0x71, 0xc8, 0x1c, 0xc3, 0x17, 0x28, 0x4e, 0x97, 0x88,
|
||||
0xe0, 0x0b, 0xc7, 0x94, 0x39, 0x79, 0x6b, 0x7d, 0xd0, 0xc2, 0xfd, 0xee, 0xdc, 0x3a, 0x9d, 0xa5,
|
||||
0x80, 0xb8, 0xb8, 0x6f, 0x72, 0x92, 0x7b, 0x4f, 0x4e, 0xce, 0x27, 0xbf, 0xc7, 0xf9, 0x9e, 0x43,
|
||||
0xc8, 0x20, 0x65, 0xcf, 0x11, 0x7a, 0xd9, 0x71, 0xc4, 0x3b, 0x89, 0xb7, 0x20, 0x81, 0xf8, 0xc9,
|
||||
0xe6, 0x12, 0x1e, 0x6f, 0x08, 0x79, 0xa9, 0xfa, 0x40, 0xe9, 0xe0, 0xca, 0x57, 0x6e, 0x1a, 0x2f,
|
||||
0x8d, 0x32, 0xb8, 0x85, 0xc4, 0x62, 0x4a, 0x6c, 0x3a, 0xe3, 0x2a, 0x8b, 0x66, 0x86, 0x06, 0x28,
|
||||
0x98, 0xa1, 0x81, 0x61, 0x3d, 0xce, 0x82, 0x70, 0xc3, 0x70, 0xbe, 0xea, 0xaa, 0x8d, 0xaf, 0xb8,
|
||||
0x88, 0xf8, 0x08, 0xb5, 0xc4, 0x4f, 0x38, 0x9f, 0xcc, 0x93, 0x3b, 0xbe, 0x18, 0xc4, 0x57, 0x32,
|
||||
0x89, 0x42, 0x6a, 0x35, 0xd9, 0xf9, 0x06, 0xfd, 0xd9, 0xf3, 0x98, 0x9d, 0x9c, 0x8d, 0xf8, 0x33,
|
||||
0x2d, 0x88, 0x3a, 0xd9, 0x84, 0x90, 0x63, 0xd7, 0xc1, 0x2d, 0x3e, 0x87, 0x8f, 0xb7, 0xeb, 0xe1,
|
||||
0xb9, 0xae, 0x00, 0xe3, 0xb5, 0x1b, 0xe1, 0x1a, 0x91, 0xc8, 0x38, 0x8a, 0x34, 0x8c, 0x2d, 0x57,
|
||||
0xce, 0xd8, 0x70, 0xe5, 0x3d, 0xf6, 0x01, 0x8a, 0x0e, 0x1a, 0xb9, 0xdd, 0x80, 0x0c, 0x47, 0xae,
|
||||
0x4c, 0x34, 0x4a, 0x10, 0xde, 0x7a, 0xf8, 0xcc, 0xaf, 0x0c, 0xa8, 0x2a, 0x2f, 0xd6, 0x61, 0xf6,
|
||||
0xaa, 0x2d, 0xd0, 0xd6, 0xb4, 0x61, 0x11, 0x05, 0x05, 0x53, 0x50, 0x40, 0xe9, 0x45, 0x2c, 0x28,
|
||||
0xae, 0xc1, 0x27, 0x7b, 0x4e, 0xe0, 0xbd, 0xc2, 0xa3, 0x98, 0xbc, 0xed, 0x10, 0xdc, 0xb2, 0x8a,
|
||||
0xe0, 0x98, 0x59, 0x00, 0x22, 0x5d, 0x0c, 0xe2, 0x27, 0x01, 0x9b, 0x91, 0xbe, 0x09, 0x3c, 0x9e,
|
||||
0x93, 0x9b, 0x30, 0x22, 0x6f, 0x56, 0x4c, 0x52, 0xc7, 0xad, 0xd6, 0x36, 0x3c, 0x51, 0x55, 0xfd,
|
||||
0x55, 0xcc, 0xd4, 0x66, 0x9a, 0x21, 0xa1, 0x15, 0x37, 0x20, 0x28, 0xab, 0x87, 0xdf, 0xa1, 0x0b,
|
||||
0xf8, 0x6c, 0x5f, 0x15, 0x3e, 0xdc, 0x59, 0x81, 0x69, 0xf9, 0x47, 0x30, 0x21, 0xa7, 0x18, 0x23,
|
||||
0x36, 0xef, 0x86, 0x6d, 0x78, 0x02, 0x48, 0xe8, 0x32, 0xd8, 0x2c, 0x94, 0x33, 0xfd, 0xa4, 0x4a,
|
||||
0xf0, 0xb6, 0xab, 0x20, 0xbc, 0x21, 0xb1, 0x60, 0xcf, 0xc3, 0x1e, 0x86, 0xc1, 0xb3, 0xba, 0xd0,
|
||||
0xf0, 0x3b, 0xa6, 0xc7, 0xa5, 0x41, 0x5a, 0x7e, 0x05, 0x81, 0x47, 0x2e, 0xc1, 0x97, 0x42, 0x3e,
|
||||
0xdf, 0x5f, 0x8d, 0x8f, 0x76, 0x55, 0xe2, 0xdd, 0x82, 0x32, 0x4c, 0xda, 0xfa, 0x38, 0x1a, 0x87,
|
||||
0xa8, 0x64, 0x1a, 0x4d, 0x34, 0x48, 0xfa, 0x76, 0x0a, 0x92, 0x59, 0x81, 0x6c, 0x86, 0xf9, 0x87,
|
||||
0x68, 0x5e, 0x93, 0x68, 0xda, 0x8e, 0xd7, 0xd6, 0xa3, 0x2f, 0xd5, 0xdd, 0x6c, 0x82, 0x47, 0xf4,
|
||||
0x2a, 0x0a, 0x38, 0x0f, 0xaf, 0x03, 0x67, 0xf1, 0x69, 0xd1, 0x29, 0xcc, 0xda, 0xf9, 0x0b, 0xde,
|
||||
0xa1, 0x10, 0x36, 0x65, 0xee, 0xd9, 0xfb, 0xe0, 0x18, 0xbf, 0x0e, 0x44, 0xa0, 0x06, 0xf9, 0x7a,
|
||||
0x1b, 0x48, 0x46, 0x9e, 0x35, 0x88, 0x46, 0x51, 0x6a, 0xc7, 0x91, 0x20, 0x6d, 0x77, 0x31, 0x73,
|
||||
0xba, 0xee, 0x2a, 0x1e, 0x76, 0x19, 0xad, 0x40, 0x37, 0xfe, 0x6a, 0xc6, 0xeb, 0xea, 0x44, 0x73,
|
||||
0x3d, 0x58, 0xc0, 0x8c, 0xc2, 0x72, 0x78, 0xee, 0x28, 0xc5, 0xc4, 0xdc, 0x83, 0x8f, 0xeb, 0x92,
|
||||
0xb8, 0x11, 0x24, 0x48, 0x05, 0x92, 0x9a, 0x63, 0x86, 0x98, 0x23, 0xe2, 0xf4, 0x02, 0x8d, 0x95,
|
||||
0x68, 0x4e, 0x46, 0xe7, 0x16, 0xc2, 0x37, 0x25, 0x93, 0xf1, 0x50, 0xc6, 0x98, 0x46, 0xf0, 0x95,
|
||||
0xcc, 0x1b, 0x8a, 0xe8, 0x9e, 0xc0, 0xf4, 0xcd, 0xa6, 0xec, 0xc3, 0x47, 0x99, 0x33, 0x97, 0xaf,
|
||||
0xa3, 0xf1, 0x4e, 0x0b, 0xc6, 0x29, 0x97, 0x62, 0x7a, 0xfe, 0x8f, 0x98, 0x92, 0xa7, 0xa7, 0x80,
|
||||
0x12, 0x8c, 0xfd, 0x76, 0xbf, 0xb9, 0x26, 0x43, 0x56, 0x66, 0x81, 0xf0, 0xc2, 0x40, 0x68, 0x57,
|
||||
0x9a, 0x21, 0xec, 0xa0, 0x51, 0xd9, 0x72, 0x83, 0x7b, 0x2c, 0x40, 0xe3, 0x64, 0x51, 0xfa, 0xde,
|
||||
0x29, 0xbb, 0xd3, 0x71, 0x17, 0x05, 0x3f, 0x55, 0x42, 0x92, 0xa9, 0x63, 0x66, 0x44, 0x69, 0x8d,
|
||||
0x63, 0xc4, 0xea, 0x1e, 0x5b, 0x8e, 0x14, 0xce, 0x91, 0x2b, 0x30, 0x6c, 0x79, 0x26, 0x86, 0xa5,
|
||||
0xe6, 0xc2, 0x69, 0x7d, 0x21, 0x6c, 0x92, 0xff, 0x81, 0x24, 0x6d, 0xfa, 0x17, 0xc2, 0x8e, 0xb4,
|
||||
0x5c, 0xd8, 0x7e, 0x29, 0xef, 0xee, 0x15, 0x91, 0x7a, 0x57, 0x69, 0xcd, 0x05, 0x0c, 0xa4, 0x07,
|
||||
0x5d, 0x5d, 0x18, 0x2e, 0x8a, 0x80, 0x43, 0xc2, 0x7a, 0xd8, 0x68, 0xbe, 0xa2, 0x05, 0x5f, 0x04,
|
||||
0xe2, 0x1f, 0x0a, 0x22, 0xd2, 0x80, 0xd0, 0x6e, 0xb4, 0x80, 0xb0, 0x23, 0x55, 0x07, 0x3b, 0xff,
|
||||
0x10, 0xa3, 0x05, 0x68, 0x8c, 0x48, 0x95, 0x5b, 0x74, 0xa2, 0x7a, 0x40, 0x10, 0xdb, 0x85, 0x2e,
|
||||
0x22, 0xb5, 0xf5, 0x86, 0x3c, 0xe5, 0xd3, 0xe2, 0x5b, 0x8c, 0x94, 0x6c, 0x0a, 0x52, 0x3c, 0xb2,
|
||||
0x00, 0x8d, 0x0c, 0x52, 0xae, 0xfd, 0xae, 0xbc, 0x12, 0xcf, 0x93, 0x8b, 0x30, 0xc2, 0x7a, 0xc3,
|
||||
0xa0, 0x70, 0x90, 0x35, 0x5b, 0xad, 0xe7, 0x69, 0x4a, 0xa9, 0x33, 0xdc, 0xb7, 0x00, 0x0d, 0x59,
|
||||
0x28, 0x5b, 0x9e, 0x75, 0xb8, 0x6c, 0x40, 0x88, 0x4e, 0x5f, 0x8e, 0x89, 0x8a, 0x25, 0x70, 0x11,
|
||||
0xab, 0xa9, 0xd5, 0x2c, 0x87, 0xdd, 0xe2, 0x14, 0x90, 0x27, 0x9d, 0x96, 0x96, 0x63, 0x0d, 0x5a,
|
||||
0xb9, 0x99, 0x05, 0xdd, 0xb5, 0x3c, 0x45, 0x5f, 0x88, 0x34, 0x19, 0x45, 0x25, 0xdd, 0xfd, 0xa5,
|
||||
0xec, 0x76, 0x7b, 0x07, 0x54, 0x59, 0x79, 0x68, 0x37, 0xdc, 0x87, 0xd1, 0xd4, 0x8d, 0xb3, 0x57,
|
||||
0xae, 0x23, 0xf3, 0x80, 0x1e, 0xde, 0xa9, 0xdf, 0xc0, 0x86, 0xda, 0xcc, 0x70, 0x1a, 0xe9, 0xc8,
|
||||
0xc8, 0x24, 0x90, 0x98, 0x35, 0x66, 0x00, 0xdb, 0xda, 0x6c, 0x73, 0xd8, 0xf3, 0x42, 0xdb, 0x2c,
|
||||
0x41, 0x3e, 0x22, 0x19, 0xeb, 0x06, 0xbd, 0x21, 0x8f, 0x8c, 0x46, 0x70, 0x56, 0x6f, 0xc0, 0xda,
|
||||
0x7d, 0x87, 0xfa, 0x8d, 0x74, 0x92, 0x22, 0xba, 0xfb, 0x78, 0x6d, 0x1d, 0xf6, 0x1e, 0xaf, 0x82,
|
||||
0x4a, 0x97, 0x0f, 0xcf, 0x48, 0x2d, 0x5e, 0xa5, 0xe0, 0x57, 0x24, 0x91, 0x70, 0xe0, 0x29, 0x6e,
|
||||
0xf7, 0xb2, 0x1e, 0xb1, 0xbf, 0x46, 0x97, 0x7f, 0xf7, 0xd9, 0x0d, 0x58, 0x9f, 0x63, 0xfd, 0xad,
|
||||
0xa4, 0xfa, 0xdc, 0x80, 0x29, 0x7d, 0x33, 0x74, 0x89, 0xa9, 0xfe, 0xe6, 0x9f, 0x16, 0x73, 0x6c,
|
||||
0xd4, 0x73, 0x96, 0xa6, 0x18, 0x9c, 0xb8, 0x8a, 0x78, 0x4b, 0x90, 0xb7, 0x78, 0x81, 0x24, 0x33,
|
||||
0xbb, 0xfd, 0xc9, 0x42, 0xd6, 0x19, 0xa6, 0x47, 0x2c, 0x43, 0xf1, 0xe9, 0x9a, 0xe7, 0x36, 0x88,
|
||||
0x47, 0x58, 0x8c, 0xa9, 0xb6, 0xf1, 0x96, 0xc5, 0xdc, 0x0f, 0x3f, 0x9f, 0xe8, 0xa6, 0xd7, 0xcb,
|
||||
0x69, 0xd6, 0xda, 0x7a, 0x9b, 0xe9, 0x1c, 0x4e, 0xea, 0x86, 0x16, 0x76, 0xd1, 0xc1, 0xaa, 0x1a,
|
||||
0x6c, 0x3d, 0x72, 0x0c, 0x6d, 0xf7, 0x0c, 0x18, 0x8c, 0xa6, 0x28, 0x63, 0x4d, 0xbf, 0x35, 0x34,
|
||||
0x3e, 0x73, 0xd0, 0x3b, 0x31, 0x5a, 0xa8, 0x6a, 0x25, 0x1c, 0xfe, 0x04, 0x6b, 0xd7, 0xf6, 0xe3,
|
||||
0xcf, 0x9c, 0xaf, 0x4d, 0x6d, 0xee, 0xbc, 0xff, 0x00, 0x3e, 0xc9, 0xeb, 0xd0, 0xd8, 0xdc, 0x82,
|
||||
0xc1, 0x6a, 0x6a, 0x78, 0xac, 0xe9, 0xdc, 0xb5, 0x86, 0xa7, 0xff, 0x5e, 0x2b, 0x32, 0x3a, 0x9c,
|
||||
0x03, 0x82, 0x83, 0xfb, 0xbe, 0x1e, 0xfc, 0xc4, 0x1e, 0xe3, 0xa4, 0x91, 0x86, 0xa4, 0xef, 0x8b,
|
||||
0xf0, 0xa2, 0x7a, 0x2b, 0x3c, 0xce, 0x58, 0x7d, 0xf9, 0x9a, 0xf9, 0x7b, 0x47, 0x59, 0x45, 0xb7,
|
||||
0x9b, 0x48, 0x55, 0xd1, 0xff, 0x75, 0x3a, 0x6f, 0x9e, 0xfd, 0x68, 0x81, 0x4a, 0x37, 0x82, 0x1f,
|
||||
0x76, 0xfb, 0xfd, 0x45, 0xda, 0xd6, 0xf4, 0xbd, 0x25, 0xc6, 0x4b, 0x7f, 0xdc, 0x1a, 0x34, 0xe8,
|
||||
0x54, 0xdd, 0x15, 0x73, 0xf3, 0x8c, 0x12, 0xaa, 0x5a, 0x88, 0xb7, 0x7c, 0xec, 0xe0, 0xde, 0x09,
|
||||
0x3e, 0xc2, 0xc9, 0xce, 0x01, 0x8a, 0x38, 0x6a, 0xa2, 0x35, 0xee, 0x12, 0x75, 0xbb, 0x74, 0xa3,
|
||||
0xee, 0x1e, 0x5b, 0xb7, 0x2e, 0x93, 0xa9, 0x4f, 0x90, 0xa7, 0x2a, 0xce, 0xc8, 0x5e, 0xf3, 0x73,
|
||||
0x13, 0x56, 0x77, 0x3a, 0xf9, 0x07, 0x0b, 0xfe, 0xdb, 0x0b, 0xc8, 0x8b, 0xe7, 0x4a, 0xc1, 0x3c,
|
||||
0x77, 0xb1, 0xfa, 0xe0, 0xab, 0x81, 0x8a, 0xce, 0xb9, 0xf1, 0xab, 0x5b, 0x73, 0xf4, 0xe5, 0x4c,
|
||||
0x53, 0xeb, 0xd3, 0x06, 0xc5, 0x34, 0xd5, 0xb2, 0x2e, 0x7e, 0xc6, 0x96, 0x1e, 0x37, 0x51, 0x84,
|
||||
0xfe, 0xe5, 0x3c, 0xbb, 0x68, 0x7a, 0x29, 0x74, 0xbe, 0x4b, 0x50, 0x68, 0xf6, 0x48, 0xbe, 0xb2,
|
||||
0x89, 0xb6, 0x7f, 0x73, 0xea, 0xee, 0x03, 0x8f, 0xe8, 0x39, 0x32, 0xd2, 0x48, 0x1e, 0x10, 0xae,
|
||||
0x64, 0x0c, 0xf9, 0x5f, 0xe4, 0x2d, 0x9d, 0xea, 0xc4, 0x95, 0xc7, 0xbb, 0x8b, 0x23, 0x2e, 0xda,
|
||||
0x71, 0xe4, 0xc2, 0xe7, 0x2d, 0xff, 0x1b, 0xc0, 0xf8, 0x47, 0x1e, 0xb0, 0x6f, 0x75, 0x78, 0x00,
|
||||
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x05, 0x33, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0xd6, 0x79, 0x4c, 0x93,
|
||||
0x67, 0x1c, 0x07, 0xf0, 0x87, 0x8a, 0x47, 0xbd, 0xa6, 0x80, 0x32, 0x20, 0x9b, 0xd3, 0x2c, 0xf3,
|
||||
0x0f, 0x37, 0xdd, 0x8c, 0x59, 0xe2, 0xa6, 0x8b, 0xc6, 0x73, 0x32, 0xe4, 0xb2, 0xf4, 0x82, 0xb6,
|
||||
0x54, 0xe9, 0x05, 0x0c, 0x14, 0x07, 0x2a, 0xa0, 0x4e, 0x86, 0x58, 0x70, 0x43, 0x64, 0x72, 0x08,
|
||||
0x11, 0x10, 0x25, 0xa0, 0x53, 0x4e, 0x07, 0x28, 0x08, 0x55, 0x04, 0x15, 0x1c, 0x1e, 0xc1, 0x33,
|
||||
0xe2, 0x7d, 0x15, 0x2b, 0x16, 0x15, 0x95, 0xb6, 0xef, 0x77, 0x6f, 0xbb, 0xd0, 0x50, 0x0e, 0xe9,
|
||||
0x96, 0xf9, 0x24, 0x4f, 0xde, 0xb4, 0xe9, 0xf3, 0x7c, 0xde, 0xe7, 0xf7, 0x7b, 0xfa, 0x7b, 0x1e,
|
||||
0x42, 0xac, 0x6d, 0xcb, 0x04, 0x9f, 0x11, 0x57, 0x1e, 0x87, 0xb8, 0xf9, 0xce, 0x24, 0x2c, 0xd6,
|
||||
0x68, 0xf2, 0x3e, 0xda, 0x68, 0xd6, 0x2a, 0xb9, 0x3d, 0x4f, 0xd2, 0x31, 0x37, 0x22, 0xa6, 0x6b,
|
||||
0x41, 0xe4, 0xd6, 0x76, 0x67, 0x41, 0x90, 0x76, 0x3c, 0x47, 0xa2, 0x71, 0x11, 0x06, 0x5d, 0x9c,
|
||||
0x24, 0x0e, 0x3d, 0xc8, 0xf4, 0x12, 0x87, 0xd1, 0x2f, 0xb1, 0x84, 0xb8, 0xf9, 0x4d, 0x26, 0x9b,
|
||||
0x37, 0x33, 0xfe, 0xbd, 0xe0, 0x21, 0x1a, 0xe7, 0xc0, 0x95, 0x96, 0x2f, 0x8a, 0x8a, 0xd3, 0xde,
|
||||
0x78, 0xf8, 0x18, 0x2d, 0x77, 0xef, 0xa3, 0xbb, 0xe9, 0xf4, 0x7a, 0x5c, 0x7f, 0xf0, 0x08, 0x25,
|
||||
0x67, 0xce, 0x21, 0xfe, 0x50, 0xa9, 0x9e, 0xbf, 0x7d, 0x57, 0xfb, 0x8c, 0xe0, 0x0d, 0x6d, 0xf4,
|
||||
0x0b, 0x68, 0xed, 0x79, 0xd2, 0x7b, 0x4e, 0x7e, 0x81, 0x35, 0xf6, 0x3c, 0x79, 0xd4, 0xe0, 0xc8,
|
||||
0x0f, 0xdc, 0xd9, 0xf4, 0xa0, 0x87, 0x3b, 0x8a, 0x2b, 0xde, 0x52, 0x14, 0x85, 0x9a, 0x8b, 0x97,
|
||||
0x21, 0x4a, 0x4c, 0x87, 0x35, 0xad, 0xfd, 0xe5, 0x2b, 0x2c, 0x88, 0x8c, 0xd3, 0x8f, 0xf0, 0xf2,
|
||||
0xd7, 0xbd, 0x8b, 0xb0, 0x19, 0xcf, 0x91, 0x46, 0x4c, 0x12, 0x87, 0xb4, 0x37, 0xdf, 0xbc, 0x6d,
|
||||
0x1e, 0x7c, 0xeb, 0x89, 0x1a, 0x85, 0x0d, 0x4d, 0x56, 0x41, 0xe1, 0xd9, 0xf9, 0x7a, 0x3a, 0xac,
|
||||
0x86, 0x31, 0xac, 0x95, 0x2f, 0xfb, 0x27, 0x96, 0x73, 0x1d, 0xed, 0x79, 0xb2, 0x86, 0x15, 0x71,
|
||||
0x49, 0x1d, 0x2f, 0x5f, 0xbf, 0xb1, 0x18, 0x6c, 0x84, 0xd2, 0xcb, 0xab, 0x07, 0x45, 0x92, 0x4a,
|
||||
0x2b, 0x29, 0x47, 0x5f, 0x85, 0xa1, 0xf5, 0xb1, 0x1a, 0xe3, 0xd8, 0x92, 0x67, 0x7d, 0x0c, 0x5b,
|
||||
0x0f, 0xe1, 0x62, 0x7b, 0xae, 0x44, 0xbd, 0xbf, 0xf6, 0x94, 0xbe, 0xbf, 0x09, 0xfe, 0xba, 0x79,
|
||||
0x0b, 0x9e, 0xb1, 0x89, 0xef, 0x44, 0x72, 0x6b, 0xea, 0xa8, 0x09, 0x7c, 0xb9, 0xa1, 0x3b, 0x97,
|
||||
0x1f, 0xf8, 0x04, 0x68, 0x2c, 0x77, 0x15, 0x5b, 0x7a, 0x88, 0xe9, 0x23, 0xc1, 0xf7, 0x9b, 0x12,
|
||||
0x90, 0x53, 0x7d, 0x02, 0x9a, 0x8e, 0x17, 0x7d, 0x26, 0x79, 0xab, 0xd3, 0xe1, 0xd1, 0xb3, 0xe7,
|
||||
0x03, 0x22, 0xc6, 0x4d, 0x61, 0xc7, 0x93, 0x1a, 0x1a, 0xaf, 0xb7, 0x9a, 0x3e, 0x77, 0xe9, 0xf4,
|
||||
0xa0, 0x73, 0xac, 0xb6, 0x80, 0x46, 0xb2, 0x65, 0x0d, 0x0b, 0x53, 0x8a, 0xb0, 0x38, 0xa5, 0x88,
|
||||
0x9a, 0x16, 0xf1, 0xab, 0x7e, 0x2c, 0x3f, 0x90, 0x1a, 0xc9, 0x96, 0x1a, 0x26, 0x4b, 0x7e, 0xea,
|
||||
0x62, 0x29, 0x93, 0x91, 0x79, 0xb4, 0x16, 0x75, 0x97, 0xaf, 0x61, 0xe9, 0x26, 0x65, 0xbf, 0xc8,
|
||||
0xc9, 0x96, 0xab, 0xb0, 0xe3, 0x4a, 0x0c, 0xaa, 0x4b, 0x57, 0xa8, 0xee, 0xef, 0x3a, 0x3a, 0x5f,
|
||||
0xc3, 0x9e, 0x2b, 0xbd, 0x6f, 0x09, 0x71, 0xe4, 0xe5, 0x5e, 0x05, 0x75, 0x08, 0x3b, 0xa3, 0x46,
|
||||
0x78, 0xe3, 0x53, 0xac, 0x39, 0xfd, 0x04, 0x32, 0xd5, 0x1d, 0xb8, 0x1f, 0xac, 0xc7, 0xac, 0x1d,
|
||||
0xf9, 0x94, 0xcb, 0x9a, 0xad, 0x3a, 0x26, 0x47, 0x4e, 0x31, 0x96, 0x0b, 0xe0, 0x20, 0x08, 0xd6,
|
||||
0x2f, 0x8a, 0x8e, 0xa7, 0xb6, 0xfd, 0x51, 0x82, 0xbb, 0xea, 0x36, 0x5c, 0xb8, 0x7d, 0x07, 0x74,
|
||||
0x5e, 0x0d, 0x47, 0x1a, 0x9b, 0xa9, 0x9e, 0x78, 0x9b, 0xb6, 0x03, 0x13, 0xf9, 0xf2, 0x56, 0x0b,
|
||||
0x88, 0xc9, 0x96, 0xe6, 0x2f, 0xda, 0x53, 0x01, 0xc9, 0x89, 0x3b, 0x90, 0x9d, 0xbc, 0x0b, 0x09,
|
||||
0x8d, 0x88, 0x8e, 0xdf, 0x04, 0xbb, 0xf2, 0x0a, 0xdc, 0xca, 0x2e, 0x60, 0xc1, 0xe1, 0xb3, 0xf8,
|
||||
0x7a, 0x5f, 0x0d, 0x26, 0x29, 0xb3, 0xe0, 0x1c, 0x9f, 0x8d, 0xd1, 0xe1, 0x09, 0x94, 0xad, 0x38,
|
||||
0x4c, 0x6f, 0xe3, 0xbd, 0x92, 0x62, 0x78, 0x0a, 0x91, 0x5c, 0x5a, 0x69, 0xe8, 0xbd, 0xca, 0x7b,
|
||||
0x6d, 0x1a, 0x38, 0xf2, 0x15, 0x57, 0x2c, 0xa0, 0xe1, 0x2b, 0x02, 0x76, 0xcf, 0xde, 0x75, 0x18,
|
||||
0x9c, 0xa3, 0x57, 0xc1, 0x3b, 0x76, 0xcd, 0xf4, 0xf4, 0x2e, 0x6f, 0xa1, 0x91, 0xf3, 0x58, 0x58,
|
||||
0xd8, 0x88, 0x6f, 0x0f, 0x9c, 0xc2, 0xe7, 0x19, 0x65, 0x60, 0x0a, 0x43, 0xe1, 0x92, 0x56, 0x84,
|
||||
0x71, 0x3b, 0x0b, 0x30, 0x74, 0x7b, 0x0e, 0x88, 0x72, 0x0f, 0x6c, 0x04, 0x21, 0x86, 0xf2, 0xa6,
|
||||
0x0b, 0x7d, 0xc2, 0x69, 0xfc, 0x83, 0x3b, 0x09, 0x02, 0x9b, 0x2d, 0x77, 0x9c, 0xa7, 0x38, 0xfe,
|
||||
0x8b, 0x84, 0x5c, 0x2c, 0x2b, 0x69, 0x86, 0x6b, 0xe9, 0x79, 0xd3, 0x73, 0x71, 0x51, 0x13, 0xe6,
|
||||
0x1f, 0x3a, 0x83, 0x6f, 0xe8, 0x90, 0xce, 0xa4, 0x57, 0x33, 0x35, 0xf3, 0x08, 0x26, 0x6c, 0x49,
|
||||
0x85, 0xc3, 0xef, 0x07, 0x31, 0xf2, 0xb7, 0x7d, 0x26, 0xa4, 0x1b, 0x2a, 0x3b, 0xdb, 0xdc, 0x07,
|
||||
0xba, 0x74, 0xfb, 0x1e, 0xe8, 0x52, 0xd5, 0x60, 0x01, 0x31, 0x96, 0x0b, 0xd7, 0x4f, 0x8e, 0x49,
|
||||
0xc7, 0x9c, 0x03, 0xf5, 0x98, 0x4b, 0xe7, 0x65, 0x0e, 0xbd, 0x82, 0xd9, 0x05, 0x27, 0x31, 0x2b,
|
||||
0xaf, 0x16, 0xd3, 0x73, 0xab, 0x30, 0x35, 0xab, 0x02, 0x8e, 0x5b, 0x33, 0x30, 0x4c, 0xb4, 0x1a,
|
||||
0x23, 0xd6, 0x25, 0x80, 0x11, 0x93, 0x06, 0xf2, 0x4b, 0x5a, 0x37, 0xa4, 0x2f, 0x3e, 0x7d, 0xae,
|
||||
0x0f, 0xd4, 0x74, 0xa3, 0x15, 0x2e, 0x82, 0xa0, 0xda, 0x5e, 0xe5, 0x86, 0x1f, 0xe8, 0xb8, 0x21,
|
||||
0x51, 0x6f, 0x9c, 0x74, 0x46, 0x6e, 0x35, 0xa6, 0xef, 0xad, 0xc2, 0xb4, 0x9c, 0xa3, 0x26, 0x60,
|
||||
0x4a, 0x66, 0x19, 0x9c, 0x12, 0xf3, 0x30, 0x6a, 0x4d, 0x2c, 0x46, 0x44, 0x25, 0x82, 0x11, 0xbd,
|
||||
0x03, 0x64, 0x6d, 0x1c, 0x08, 0x5b, 0x06, 0x12, 0x95, 0x04, 0xe2, 0x25, 0xa6, 0x56, 0xed, 0xcc,
|
||||
0x80, 0xf6, 0x55, 0x27, 0x9e, 0x3c, 0xd7, 0x9a, 0x21, 0xe3, 0x2e, 0x75, 0x16, 0x06, 0x97, 0x5b,
|
||||
0x42, 0xae, 0x7c, 0xe1, 0xd8, 0xd5, 0xb1, 0xaf, 0x3f, 0xc9, 0x28, 0x45, 0x77, 0xff, 0x38, 0xbd,
|
||||
0x18, 0xce, 0xa9, 0x85, 0x60, 0x06, 0x6e, 0xc4, 0xd0, 0x55, 0xe1, 0x60, 0xd2, 0xe1, 0xb2, 0x89,
|
||||
0xcf, 0x32, 0x87, 0xcc, 0x1c, 0x3a, 0xbe, 0x42, 0xbf, 0x2e, 0x3b, 0xdf, 0xb4, 0xc5, 0xbf, 0xfc,
|
||||
0x71, 0x03, 0xf2, 0x54, 0xf5, 0x88, 0x2d, 0x28, 0x86, 0x7f, 0xd2, 0x6e, 0x38, 0xf9, 0x29, 0x0a,
|
||||
0x2d, 0x21, 0x37, 0x5f, 0xef, 0x61, 0x8a, 0xa8, 0x0e, 0xbb, 0xe4, 0x03, 0x30, 0xf6, 0xf1, 0xc9,
|
||||
0x05, 0x18, 0x9b, 0x90, 0x83, 0xe1, 0xe1, 0x4a, 0x0c, 0xdb, 0xb2, 0x0b, 0x43, 0x12, 0xb2, 0xfb,
|
||||
0x00, 0x3d, 0x72, 0xa4, 0xcb, 0x57, 0x35, 0x58, 0x84, 0xcd, 0x58, 0x23, 0x67, 0x04, 0xaf, 0xef,
|
||||
0x1c, 0xe3, 0x23, 0x0e, 0xe8, 0x75, 0xa8, 0xf9, 0x2e, 0xb5, 0x11, 0x87, 0xb5, 0x1b, 0x27, 0xb4,
|
||||
0xa5, 0x01, 0xe3, 0x93, 0x9e, 0xe0, 0x9f, 0x10, 0x0d, 0x00, 0xf4, 0x84, 0xf6, 0xd7, 0xd6, 0x5b,
|
||||
0x40, 0x79, 0x74, 0x19, 0xb3, 0xe3, 0x48, 0x4e, 0x1b, 0x0b, 0x74, 0xaf, 0x15, 0x71, 0xe7, 0x10,
|
||||
0x61, 0xc8, 0x53, 0xd3, 0xe0, 0xb0, 0x58, 0x90, 0x80, 0xf0, 0x41, 0x01, 0x33, 0xe4, 0x17, 0xa2,
|
||||
0xdb, 0x5b, 0x5d, 0x67, 0x46, 0xd4, 0x74, 0x9e, 0x1c, 0x78, 0x32, 0x0d, 0x71, 0xe7, 0x7c, 0xd4,
|
||||
0x4f, 0xd5, 0xe6, 0x7c, 0x45, 0xf8, 0x8a, 0x36, 0xf2, 0x73, 0x0a, 0x88, 0x22, 0x9a, 0xde, 0x51,
|
||||
0xe9, 0xd6, 0x43, 0x82, 0x90, 0xae, 0xac, 0x2a, 0x95, 0x19, 0x5a, 0xb2, 0x51, 0xf9, 0x7c, 0xd4,
|
||||
0x0a, 0x7f, 0xff, 0x01, 0x8e, 0x07, 0xdf, 0x4f, 0x89, 0xa7, 0xa8, 0x93, 0xc8, 0x22, 0xad, 0x06,
|
||||
0x7a, 0x42, 0x99, 0x95, 0xb5, 0x26, 0x24, 0xeb, 0x98, 0x4a, 0x3f, 0x81, 0x2f, 0x53, 0x0d, 0x7c,
|
||||
0xd4, 0xcd, 0x9b, 0x67, 0x4b, 0xdc, 0x45, 0xa9, 0xf4, 0xd1, 0xfd, 0x98, 0xb0, 0xa5, 0x1a, 0x12,
|
||||
0xb4, 0xb1, 0x8b, 0x6c, 0x4e, 0xb6, 0x1a, 0xda, 0x5d, 0x71, 0x1c, 0x0f, 0x34, 0xcf, 0x8c, 0x35,
|
||||
0xef, 0x29, 0x59, 0x26, 0xfa, 0xd0, 0xba, 0x7b, 0x82, 0x2b, 0x6f, 0x0a, 0x71, 0x17, 0xae, 0x25,
|
||||
0x5e, 0xfe, 0xe7, 0x88, 0x97, 0xa8, 0x9d, 0xac, 0x5c, 0xfb, 0x82, 0x44, 0x28, 0x41, 0xb6, 0x65,
|
||||
0x0e, 0x08, 0xa5, 0xfe, 0x59, 0x85, 0xef, 0xd6, 0xc5, 0x68, 0x99, 0xde, 0xfe, 0xdc, 0xff, 0x76,
|
||||
0xfd, 0x59, 0xc2, 0xb2, 0xa3, 0x61, 0x16, 0xf1, 0xf0, 0x2f, 0x21, 0xee, 0x02, 0x2d, 0xe1, 0x05,
|
||||
0x69, 0x48, 0x68, 0x0c, 0x45, 0x62, 0xd2, 0x7a, 0x40, 0xa1, 0x6f, 0x17, 0x46, 0xc6, 0x19, 0xe8,
|
||||
0x03, 0xaf, 0xfc, 0xff, 0xb9, 0x73, 0x19, 0xc3, 0xeb, 0xca, 0x9b, 0x4f, 0x3c, 0x84, 0x29, 0x74,
|
||||
0x7f, 0x48, 0x7c, 0x24, 0x6d, 0x24, 0x30, 0xfa, 0x8d, 0x0d, 0x57, 0xde, 0x35, 0xdc, 0x98, 0x5f,
|
||||
0x4f, 0xbf, 0x89, 0xef, 0xe5, 0xae, 0x67, 0xba, 0x50, 0xba, 0x09, 0x22, 0x18, 0x9e, 0xe2, 0x96,
|
||||
0x21, 0xee, 0x02, 0xde, 0x60, 0x3f, 0xff, 0x1b, 0x73, 0x06, 0xe5, 0x5c, 0xf9, 0x44, 0x86, 0x22,
|
||||
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE axis3d_front_xpm[1] = {{ png, sizeof( png ), "axis3d_front_xpm" }};
|
||||
|
||||
@@ -25,6 +25,6 @@ static const unsigned char png[] = {
|
||||
0x2b, 0xeb, 0x17, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE lang_chinese_xpm[1] = {{ png, sizeof( png ), "lang_chinese_xpm" }};
|
||||
const BITMAP_OPAQUE lang_zh_xpm[1] = {{ png, sizeof( png ), "lang_zh_xpm" }};
|
||||
|
||||
//EOF
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
/* Do not modify this file, it was automatically generated by the
|
||||
* PNG2cpp CMake script, using a *.png file as input.
|
||||
*/
|
||||
|
||||
#include <bitmaps.h>
|
||||
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0x6c, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0x41, 0x4e, 0xc2,
|
||||
0x40, 0x14, 0x86, 0x89, 0x17, 0xe0, 0x0c, 0x24, 0xba, 0x10, 0xd8, 0x72, 0x0d, 0xb8, 0x82, 0x96,
|
||||
0xa4, 0xab, 0x76, 0x26, 0x8d, 0x3b, 0x63, 0x08, 0x89, 0xc6, 0xd4, 0xb4, 0x55, 0xd0, 0xa5, 0xb2,
|
||||
0x82, 0x5b, 0xc8, 0xce, 0x13, 0xb0, 0x29, 0xac, 0x75, 0xd1, 0x4d, 0x17, 0x6c, 0x80, 0x92, 0x90,
|
||||
0x0c, 0xef, 0x9f, 0xb4, 0x2b, 0x3b, 0xd4, 0x58, 0x4a, 0x8c, 0x4a, 0xf2, 0x85, 0x97, 0x79, 0x2f,
|
||||
0xff, 0x97, 0x29, 0xc3, 0xa4, 0xa5, 0xd2, 0x9f, 0xf9, 0x3c, 0x19, 0x46, 0xa5, 0xcf, 0x98, 0xd7,
|
||||
0x63, 0x6c, 0xd2, 0xe7, 0x7c, 0x0e, 0x64, 0x4d, 0x6b, 0xe8, 0x25, 0x73, 0x86, 0x63, 0x54, 0x98,
|
||||
0xc3, 0x3c, 0xe6, 0xb2, 0x09, 0x77, 0xf9, 0x1c, 0xa0, 0xc6, 0x1a, 0x7a, 0x3b, 0x25, 0x14, 0xd6,
|
||||
0xa2, 0xd0, 0x25, 0x21, 0x14, 0x2c, 0x7a, 0x9c, 0x37, 0x29, 0xac, 0x45, 0xa1, 0x4b, 0x42, 0xa4,
|
||||
0xe2, 0xb1, 0x05, 0xf7, 0x78, 0x53, 0x25, 0x39, 0xa1, 0xa0, 0x55, 0x1c, 0x38, 0xa4, 0xc0, 0x86,
|
||||
0xad, 0xeb, 0x65, 0x80, 0x9a, 0xfa, 0x23, 0xf4, 0x1e, 0x38, 0x8b, 0x2e, 0xee, 0x78, 0x24, 0x03,
|
||||
0x1d, 0x36, 0xa4, 0x9d, 0x34, 0x74, 0x5b, 0x2f, 0x03, 0xd4, 0xb4, 0x3e, 0x8a, 0x85, 0x2b, 0xeb,
|
||||
0xde, 0x3a, 0xfe, 0x24, 0xa2, 0x90, 0x17, 0x04, 0x51, 0xe0, 0x60, 0xc7, 0x8e, 0x07, 0x98, 0xb9,
|
||||
0xbe, 0x94, 0x41, 0xca, 0x39, 0xf4, 0x62, 0xd9, 0x73, 0x9a, 0xe8, 0x03, 0x21, 0x8f, 0xa6, 0x59,
|
||||
0x55, 0x05, 0xa0, 0x87, 0x19, 0xcf, 0x62, 0xc2, 0x74, 0xd5, 0x73, 0xe8, 0x41, 0x44, 0xdf, 0xef,
|
||||
0x69, 0xa2, 0x0d, 0x42, 0xba, 0xdd, 0xee, 0x91, 0x2a, 0x00, 0xbd, 0xf8, 0xf1, 0x65, 0xce, 0xc5,
|
||||
0x3b, 0xda, 0xa4, 0x89, 0xe4, 0x0f, 0x9e, 0x75, 0x2a, 0xbf, 0x3a, 0x97, 0x1c, 0x8c, 0x7f, 0x51,
|
||||
0x3e, 0xd1, 0x69, 0xad, 0x66, 0x13, 0x6b, 0x42, 0x7c, 0x93, 0x75, 0xb5, 0x5e, 0xbf, 0x55, 0x88,
|
||||
0xde, 0x40, 0x22, 0xca, 0x23, 0x49, 0x88, 0x32, 0xef, 0xb5, 0x3d, 0x48, 0x24, 0xb9, 0x44, 0x5a,
|
||||
0xbb, 0x2d, 0xa6, 0xb3, 0x99, 0xf0, 0xa7, 0x53, 0x71, 0x4e, 0x75, 0x61, 0x22, 0x08, 0xc2, 0x30,
|
||||
0x94, 0xf8, 0xbe, 0xff, 0x0b, 0x44, 0x78, 0x5c, 0x41, 0x10, 0x48, 0xce, 0x34, 0xad, 0x38, 0x11,
|
||||
0x78, 0x1d, 0x8f, 0x25, 0x85, 0x1e, 0x86, 0x83, 0x8a, 0xae, 0x3a, 0x1d, 0x49, 0xe1, 0xa2, 0x7d,
|
||||
0xfe, 0x8f, 0x0e, 0x73, 0x33, 0xe0, 0x9e, 0xca, 0x7b, 0xd7, 0x11, 0x37, 0x3f, 0xe2, 0xf5, 0x6d,
|
||||
0x0b, 0x54, 0xe3, 0x75, 0x92, 0x1e, 0x22, 0x94, 0xee, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE lock_unlock_xpm[1] = {{ png, sizeof( png ), "lock_unlock_xpm" }};
|
||||
|
||||
//EOF
|
||||
@@ -8,33 +8,35 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0x95, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x6e, 0x80,
|
||||
0x91, 0x18, 0x45, 0xcd, 0xcd, 0xcd, 0x8a, 0x7f, 0xff, 0xfe, 0xcd, 0x01, 0x32, 0x5d, 0x80, 0x58,
|
||||
0x1e, 0x2a, 0xfc, 0x10, 0x88, 0xf7, 0x30, 0x33, 0x33, 0x4f, 0xa9, 0xad, 0xad, 0xbd, 0x4f, 0xb1,
|
||||
0x45, 0x8d, 0x8d, 0x8d, 0xfe, 0xff, 0xff, 0xff, 0x5f, 0x0e, 0x64, 0x72, 0xe2, 0x50, 0xf2, 0x0d,
|
||||
0x88, 0x23, 0x1b, 0x1a, 0x1a, 0x36, 0xe1, 0x33, 0x87, 0x89, 0x80, 0x4f, 0x54, 0x81, 0x96, 0xac,
|
||||
0x80, 0x5a, 0xb2, 0x84, 0x89, 0x89, 0xc9, 0x8c, 0x83, 0x83, 0x43, 0x00, 0x84, 0x41, 0x6c, 0xa0,
|
||||
0xd8, 0x52, 0x20, 0xe6, 0x02, 0xe2, 0x95, 0x40, 0x8b, 0x54, 0xf0, 0x99, 0xc5, 0x82, 0x4f, 0x12,
|
||||
0x18, 0x5c, 0xe5, 0x40, 0x8a, 0x03, 0x88, 0xe7, 0x01, 0x0d, 0x4a, 0x46, 0x93, 0x3e, 0x0d, 0xc4,
|
||||
0x31, 0x40, 0xf1, 0x9f, 0x40, 0x3a, 0x09, 0x88, 0x41, 0x6a, 0x53, 0xc9, 0xf2, 0x11, 0x10, 0xb8,
|
||||
0x43, 0xe9, 0x5e, 0x3c, 0x6a, 0x7a, 0xd1, 0xd4, 0x92, 0x65, 0x91, 0x24, 0x94, 0xbe, 0x81, 0x47,
|
||||
0x0d, 0x4c, 0x4e, 0x8a, 0x12, 0x8b, 0x98, 0x41, 0x04, 0x30, 0x78, 0xfe, 0xe1, 0x52, 0x80, 0x24,
|
||||
0xc7, 0x4c, 0x89, 0x45, 0x54, 0x03, 0xc3, 0xcf, 0x22, 0x8c, 0x0c, 0x1b, 0x11, 0x11, 0xd1, 0x01,
|
||||
0xa4, 0x0a, 0x81, 0xf9, 0x87, 0x0d, 0x98, 0xbc, 0x19, 0xfe, 0xfd, 0xfb, 0x47, 0x12, 0x06, 0xea,
|
||||
0xf9, 0x05, 0xa4, 0x7b, 0x4f, 0x9e, 0x3c, 0x59, 0x85, 0xd7, 0x47, 0x40, 0x0b, 0x0a, 0x81, 0x8a,
|
||||
0xd9, 0xfe, 0xfc, 0xf9, 0x03, 0xd2, 0x44, 0x10, 0x83, 0xd4, 0x21, 0x63, 0x90, 0x5e, 0x20, 0x2e,
|
||||
0x22, 0x98, 0x61, 0x41, 0x0a, 0x09, 0xb8, 0x98, 0xa0, 0xaf, 0x80, 0x80, 0x9d, 0x18, 0x8b, 0x70,
|
||||
0x1a, 0x6a, 0x60, 0x60, 0xc0, 0x90, 0x96, 0x96, 0x06, 0xf2, 0x35, 0xc3, 0xb4, 0x69, 0xd3, 0x18,
|
||||
0x4e, 0x9f, 0x3e, 0x8d, 0x22, 0x0f, 0x12, 0x27, 0x3a, 0x31, 0xa0, 0x05, 0x03, 0x0a, 0x4e, 0x4d,
|
||||
0x4d, 0x65, 0x10, 0x12, 0x12, 0x62, 0x10, 0x16, 0x16, 0x66, 0xc8, 0xc8, 0xc8, 0x80, 0x07, 0x1d,
|
||||
0x88, 0xc6, 0x67, 0x09, 0x41, 0x1f, 0x61, 0x09, 0x12, 0x0c, 0x47, 0x91, 0x9d, 0xbc, 0xf1, 0x45,
|
||||
0xf6, 0xe4, 0xc9, 0x93, 0x19, 0x7e, 0xff, 0xfe, 0x0d, 0xc6, 0x13, 0x27, 0x4e, 0x24, 0x29, 0x79,
|
||||
0xb3, 0x60, 0x73, 0x25, 0x2e, 0x1f, 0x01, 0x93, 0x2c, 0xc3, 0xf5, 0xeb, 0xd7, 0x21, 0x45, 0xf7,
|
||||
0xe9, 0xd3, 0x94, 0x59, 0x84, 0x2f, 0xe8, 0x08, 0xc5, 0x03, 0x45, 0x16, 0xa1, 0x47, 0xf4, 0x91,
|
||||
0x23, 0x47, 0xa8, 0x63, 0x11, 0x7a, 0xd0, 0xa1, 0x83, 0x8d, 0x1b, 0x37, 0x52, 0xa7, 0xac, 0x03,
|
||||
0x15, 0x21, 0x30, 0x5f, 0x51, 0x00, 0x7e, 0x12, 0x63, 0x51, 0x2f, 0x30, 0xa8, 0x7e, 0x51, 0x60,
|
||||
0xc9, 0x2f, 0xa0, 0xfe, 0x9e, 0x01, 0x6b, 0xd7, 0x01, 0x00, 0x25, 0x5a, 0xbf, 0x01, 0x77, 0x49,
|
||||
0xeb, 0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x01, 0xb6, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x96, 0x3f, 0x6f, 0xd3,
|
||||
0x60, 0x10, 0x87, 0x9f, 0x73, 0x2b, 0x43, 0x99, 0xaa, 0x64, 0x2a, 0x4b, 0x85, 0x44, 0xf7, 0x4c,
|
||||
0xfd, 0x04, 0x48, 0x1d, 0x59, 0x83, 0xc4, 0x44, 0xe2, 0x34, 0x03, 0x4b, 0x59, 0x2a, 0x55, 0x2a,
|
||||
0x0a, 0xb0, 0x30, 0x90, 0x21, 0x0a, 0xca, 0x40, 0x2a, 0x26, 0x10, 0x30, 0x86, 0x99, 0x31, 0x8b,
|
||||
0xe5, 0x0f, 0x10, 0xb6, 0xaa, 0x5f, 0x02, 0xa9, 0xb1, 0xef, 0xbd, 0x0e, 0xfd, 0x03, 0x71, 0x6b,
|
||||
0x3b, 0x8d, 0x23, 0x21, 0xf5, 0xa4, 0x9b, 0xee, 0xfc, 0x3e, 0xf7, 0xbb, 0xbb, 0xf7, 0x95, 0xe1,
|
||||
0xae, 0x99, 0xcc, 0x93, 0xf4, 0xae, 0xd9, 0x7c, 0x64, 0x26, 0x2f, 0x45, 0x78, 0x62, 0xb0, 0x79,
|
||||
0xf1, 0xe1, 0x89, 0x19, 0xbf, 0x44, 0xec, 0xe3, 0xe1, 0xd1, 0xd1, 0x71, 0x69, 0xd0, 0x9b, 0x66,
|
||||
0xf3, 0xa9, 0x20, 0xdf, 0x80, 0xb5, 0x8c, 0x94, 0x3f, 0x22, 0x3c, 0x3b, 0x1c, 0x0e, 0x7f, 0xe6,
|
||||
0x9d, 0xe3, 0xe5, 0x2a, 0xd9, 0xdd, 0xdd, 0x12, 0xe4, 0xfb, 0x39, 0x44, 0xbe, 0x20, 0x6c, 0xfb,
|
||||
0x9e, 0xac, 0xfb, 0x9e, 0xac, 0x23, 0x6c, 0x0b, 0x7c, 0x05, 0x1e, 0x98, 0xf1, 0xa3, 0xd3, 0x68,
|
||||
0x3c, 0xce, 0x3b, 0x6b, 0x35, 0x57, 0x8e, 0xba, 0x7d, 0xe0, 0x3e, 0xc2, 0xe7, 0xd7, 0xc3, 0x4f,
|
||||
0x8d, 0x54, 0x34, 0x02, 0x9e, 0xbf, 0x0d, 0x82, 0x53, 0x8c, 0x17, 0x9e, 0xc8, 0x3e, 0x10, 0x2c,
|
||||
0xa4, 0xc8, 0x60, 0x07, 0xc0, 0x25, 0x5e, 0x37, 0x2b, 0xe7, 0x6f, 0xcc, 0xdb, 0x59, 0xb8, 0x75,
|
||||
0xc0, 0x06, 0x00, 0x9b, 0x1b, 0xbf, 0x33, 0x33, 0xae, 0x62, 0xf6, 0xb0, 0x0c, 0x68, 0x05, 0xa0,
|
||||
0xd3, 0xe9, 0xb8, 0xac, 0x84, 0x7f, 0x62, 0x2b, 0x65, 0x40, 0x4b, 0xb3, 0xbb, 0x07, 0xba, 0x76,
|
||||
0x61, 0xeb, 0xf5, 0xfa, 0x7b, 0x60, 0xcf, 0xcc, 0x7c, 0x55, 0xc5, 0x39, 0x77, 0x2b, 0x57, 0xd5,
|
||||
0xa9, 0x73, 0xae, 0x1b, 0x86, 0xe1, 0x41, 0xae, 0x22, 0x33, 0xdb, 0x53, 0x55, 0x3f, 0x49, 0x12,
|
||||
0x54, 0xb5, 0xd0, 0x93, 0x24, 0x99, 0x71, 0x55, 0xf5, 0x55, 0xf5, 0x55, 0xe1, 0x85, 0x55, 0x55,
|
||||
0xbf, 0xa0, 0xe2, 0x42, 0x55, 0xc0, 0xbd, 0x79, 0x40, 0x99, 0x87, 0xd6, 0x6a, 0x35, 0x5a, 0xad,
|
||||
0x16, 0x66, 0xc6, 0x60, 0x30, 0x20, 0x8a, 0xa2, 0x99, 0xb8, 0x99, 0xcd, 0xbf, 0x0c, 0xa9, 0x36,
|
||||
0xcc, 0x78, 0x10, 0x04, 0x54, 0x2a, 0x15, 0xaa, 0xd5, 0x2a, 0xed, 0x76, 0xfb, 0xaa, 0x75, 0xaa,
|
||||
0x9a, 0x0b, 0x29, 0x54, 0x74, 0x43, 0x4b, 0xae, 0x15, 0xb5, 0xf0, 0x7a, 0xe7, 0x0d, 0xbb, 0xdf,
|
||||
0xef, 0x13, 0xc7, 0x31, 0x71, 0x1c, 0xd3, 0xeb, 0xf5, 0x6e, 0xb5, 0xde, 0xab, 0x37, 0x55, 0x99,
|
||||
0xa5, 0x28, 0x0c, 0x43, 0x26, 0x93, 0xc9, 0xf9, 0xd3, 0x1d, 0x45, 0xe5, 0x40, 0x79, 0xad, 0x2b,
|
||||
0x9a, 0x43, 0x29, 0x50, 0x7a, 0xd0, 0xe3, 0xf1, 0x78, 0x39, 0xa0, 0x74, 0xeb, 0xd2, 0x36, 0x1a,
|
||||
0x8d, 0x96, 0xf3, 0xd6, 0xa9, 0xea, 0xf4, 0x52, 0x55, 0x09, 0x3b, 0x9d, 0x07, 0xd4, 0x35, 0xb3,
|
||||
0x69, 0x09, 0xc8, 0xd4, 0xcc, 0x3e, 0xfc, 0xb7, 0xff, 0xba, 0x33, 0x76, 0xe5, 0xc3, 0xdb, 0x78,
|
||||
0x51, 0xf1, 0x43, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE locked_xpm[1] = {{ png, sizeof( png ), "locked_xpm" }};
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
/* Do not modify this file, it was automatically generated by the
|
||||
* PNG2cpp CMake script, using a *.png file as input.
|
||||
*/
|
||||
|
||||
#include <bitmaps.h>
|
||||
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0xe4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x96, 0xcb, 0x4e, 0xc2,
|
||||
0x50, 0x10, 0x86, 0xe5, 0x1a, 0xee, 0x7b, 0x71, 0xa1, 0xc4, 0xc4, 0xb7, 0x20, 0xc0, 0x93, 0xd0,
|
||||
0x9d, 0x5b, 0x36, 0x2c, 0x54, 0x8c, 0x81, 0xd7, 0x21, 0x21, 0xc2, 0x1b, 0x40, 0xa1, 0xc0, 0x82,
|
||||
0xd7, 0xf0, 0x05, 0xb8, 0x18, 0x83, 0xe4, 0x38, 0x5f, 0xd3, 0x63, 0x1a, 0x52, 0x69, 0x05, 0xad,
|
||||
0x36, 0x99, 0x30, 0xcc, 0x99, 0xff, 0x9f, 0x73, 0xe6, 0xd2, 0xd3, 0xb3, 0xb3, 0xff, 0xf8, 0xc4,
|
||||
0x62, 0x31, 0x43, 0x64, 0xeb, 0x88, 0xf1, 0x6b, 0x81, 0x0a, 0x85, 0xc2, 0x73, 0xa7, 0xd3, 0x51,
|
||||
0x08, 0xfa, 0x4f, 0x70, 0x5e, 0x8b, 0x44, 0xf6, 0x8d, 0xb9, 0x5c, 0xee, 0xa5, 0xdb, 0xed, 0x2a,
|
||||
0x04, 0xdd, 0x03, 0x17, 0x71, 0xb0, 0xfe, 0x4f, 0x22, 0x91, 0xb8, 0x8d, 0x46, 0xa3, 0x3b, 0x21,
|
||||
0xb2, 0xe4, 0x6f, 0xc9, 0x1d, 0x3c, 0x99, 0x4c, 0xbe, 0xcd, 0xe7, 0x73, 0x85, 0xa0, 0xef, 0x91,
|
||||
0x96, 0xc0, 0x80, 0x85, 0xc3, 0x2f, 0xce, 0x8d, 0xe4, 0xfe, 0xbd, 0xdf, 0xef, 0xab, 0x46, 0xa3,
|
||||
0xb1, 0x4d, 0xa5, 0x52, 0xeb, 0x78, 0x3c, 0xfe, 0x94, 0xcf, 0xe7, 0xcd, 0x74, 0x3a, 0xfd, 0x6a,
|
||||
0x18, 0xc6, 0x66, 0x3a, 0x9d, 0x2a, 0x04, 0x1d, 0x1b, 0x6b, 0xf8, 0xe0, 0x0b, 0x06, 0x2c, 0x1c,
|
||||
0x70, 0x1d, 0x0a, 0x14, 0x61, 0x57, 0x00, 0x16, 0x8b, 0x85, 0xea, 0xf5, 0x7a, 0xaa, 0x5a, 0xad,
|
||||
0xae, 0x9a, 0xcd, 0xe6, 0x6e, 0x38, 0x1c, 0xaa, 0xf1, 0x78, 0xac, 0x4c, 0xd3, 0xb4, 0x05, 0x1d,
|
||||
0x1b, 0x6b, 0xf8, 0xe0, 0x0b, 0x06, 0xac, 0x93, 0x8d, 0x88, 0xdf, 0xa9, 0x2e, 0x65, 0x77, 0x36,
|
||||
0x70, 0x36, 0x9b, 0xa9, 0xc9, 0x64, 0xf2, 0x49, 0x8c, 0xee, 0x16, 0x1d, 0x18, 0x1d, 0x5f, 0x4e,
|
||||
0x03, 0x36, 0x70, 0x9d, 0x48, 0x45, 0xb9, 0x5c, 0x5e, 0xeb, 0x20, 0xfc, 0x5a, 0x96, 0x65, 0xa7,
|
||||
0x0c, 0x42, 0x04, 0x1d, 0x9b, 0xdb, 0x07, 0x0c, 0xd8, 0xc0, 0x2d, 0x47, 0xde, 0x49, 0x89, 0x26,
|
||||
0x80, 0x94, 0xdd, 0x56, 0x2a, 0x95, 0xa5, 0xa4, 0x65, 0x8d, 0x48, 0xba, 0x96, 0xd8, 0x58, 0xd3,
|
||||
0xc1, 0xc0, 0x80, 0x0d, 0xdc, 0xda, 0x99, 0x4c, 0x66, 0xa3, 0x6b, 0xc2, 0xae, 0x21, 0x14, 0xf2,
|
||||
0x8d, 0x74, 0xda, 0x9d, 0xac, 0x9f, 0x8b, 0x14, 0x45, 0x7f, 0xc0, 0x36, 0x18, 0x0c, 0x6c, 0x1f,
|
||||
0x5d, 0x33, 0x1a, 0xe4, 0x50, 0xea, 0xea, 0x0c, 0x20, 0xb3, 0x41, 0xdb, 0xd2, 0x51, 0xba, 0x26,
|
||||
0xec, 0x98, 0x93, 0x88, 0xfd, 0x7e, 0x1f, 0x24, 0xb6, 0x56, 0xad, 0x56, 0x5b, 0xea, 0x53, 0x81,
|
||||
0x01, 0x0b, 0x07, 0x5c, 0xce, 0x50, 0xd7, 0xdd, 0xaf, 0x96, 0x6d, 0xbb, 0xdd, 0xb6, 0x07, 0x91,
|
||||
0x19, 0x01, 0xe8, 0x2e, 0x32, 0xa9, 0xe2, 0x14, 0x1e, 0x1b, 0x2c, 0xb2, 0xe6, 0x6e, 0x1a, 0xb0,
|
||||
0x70, 0xc0, 0x05, 0x27, 0xdc, 0xe1, 0x07, 0xf2, 0x4b, 0x1d, 0x85, 0xa7, 0x26, 0x1e, 0xa9, 0x7b,
|
||||
0xfc, 0x56, 0xea, 0xf6, 0x9b, 0x81, 0x82, 0x7e, 0xd1, 0x0c, 0x2d, 0xe7, 0x64, 0x17, 0x04, 0x39,
|
||||
0xa6, 0x19, 0x7c, 0xdb, 0x1b, 0x42, 0x76, 0xaf, 0xdb, 0x5b, 0xf4, 0x15, 0x36, 0x8f, 0xf6, 0x1e,
|
||||
0x05, 0x9e, 0xa3, 0xb0, 0x06, 0xf6, 0x2a, 0x8c, 0x57, 0x50, 0x68, 0x2f, 0xd5, 0x63, 0xae, 0x89,
|
||||
0xd1, 0x31, 0xd7, 0x44, 0x68, 0x17, 0x5f, 0xe0, 0xab, 0x3c, 0x9b, 0xcd, 0x9e, 0x76, 0x95, 0x87,
|
||||
0xfd, 0x71, 0xf2, 0xb7, 0x9f, 0x5b, 0xa7, 0x3c, 0x1f, 0x74, 0xcf, 0xc8, 0x85, 0x45, 0xfc, 0x99,
|
||||
0x61, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE options_generic_xpm[1] = {{ png, sizeof( png ), "options_generic_xpm" }};
|
||||
|
||||
//EOF
|
||||
@@ -8,60 +8,63 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x03, 0x39, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x4b, 0x48, 0x54,
|
||||
0x61, 0x14, 0xc7, 0xcf, 0xe4, 0x68, 0xd9, 0xcb, 0x32, 0x98, 0x87, 0x3a, 0x8d, 0x35, 0x4d, 0xf9,
|
||||
0x48, 0xc8, 0xd2, 0x9c, 0xc7, 0xbd, 0xe3, 0xe0, 0x73, 0x9c, 0x06, 0x17, 0xd5, 0x64, 0x48, 0x8a,
|
||||
0x91, 0x2d, 0x6a, 0x51, 0xa2, 0x05, 0x56, 0x10, 0x91, 0x2d, 0x22, 0x5a, 0x48, 0xab, 0x6a, 0x5b,
|
||||
0xd0, 0x2a, 0x82, 0xa0, 0x76, 0x05, 0xd6, 0x2e, 0xdb, 0x44, 0x44, 0xa8, 0xd9, 0x5b, 0x7b, 0xf8,
|
||||
0xca, 0xd0, 0xcc, 0xcc, 0xec, 0x7f, 0xc6, 0xef, 0xc2, 0x75, 0xbc, 0x33, 0x8e, 0x56, 0x74, 0xe0,
|
||||
0xcf, 0xc7, 0xb9, 0xf7, 0xfb, 0xce, 0xef, 0x7e, 0x8f, 0x73, 0xbe, 0x4b, 0xf4, 0x1f, 0x2c, 0xf0,
|
||||
0xb7, 0x02, 0xfd, 0x24, 0x3a, 0x30, 0x49, 0xd4, 0x3b, 0x4e, 0xd4, 0xdd, 0x41, 0x54, 0xaf, 0x7e,
|
||||
0xb7, 0x0a, 0x7a, 0x23, 0xda, 0x19, 0xe6, 0x97, 0xe5, 0x6b, 0x15, 0x1e, 0xcf, 0xdd, 0x80, 0xc7,
|
||||
0x63, 0xf7, 0x49, 0x52, 0x4b, 0x85, 0x2c, 0x3f, 0xaa, 0x90, 0xa4, 0x53, 0x91, 0x20, 0x53, 0x44,
|
||||
0x3a, 0x80, 0x3e, 0xa1, 0x9d, 0x62, 0x0d, 0x13, 0x0d, 0x16, 0x13, 0xc9, 0xca, 0xfb, 0x3a, 0xa8,
|
||||
0x17, 0xaa, 0x0e, 0x1f, 0x88, 0xc0, 0x23, 0xd0, 0x14, 0x82, 0x7f, 0x44, 0x3b, 0x09, 0xf5, 0x41,
|
||||
0x57, 0xa3, 0x81, 0x46, 0x75, 0xba, 0x2f, 0x2a, 0xd0, 0x80, 0x55, 0x35, 0xab, 0x3b, 0x02, 0x74,
|
||||
0x33, 0x22, 0x48, 0x96, 0x9f, 0x04, 0x9c, 0xce, 0x54, 0x7e, 0x16, 0x74, 0x3a, 0x13, 0x23, 0x70,
|
||||
0x74, 0x45, 0x0e, 0x47, 0x7d, 0xab, 0xcd, 0xf6, 0x6d, 0x84, 0x68, 0x74, 0x88, 0xa8, 0xef, 0x2c,
|
||||
0xd1, 0x95, 0x0c, 0xa2, 0x5d, 0xfc, 0x72, 0x3d, 0xd4, 0x23, 0x40, 0xdc, 0xae, 0xd5, 0x02, 0x95,
|
||||
0xcb, 0xf2, 0xd6, 0x39, 0xb6, 0x46, 0x57, 0xe2, 0x74, 0xd6, 0x96, 0xbb, 0xdd, 0xfd, 0x56, 0x83,
|
||||
0xa1, 0x11, 0x9d, 0x03, 0xeb, 0x88, 0x76, 0x67, 0x12, 0x95, 0x1e, 0x22, 0x5a, 0xcd, 0x1d, 0x4e,
|
||||
0x08, 0x88, 0xa2, 0x23, 0x5a, 0x20, 0xaf, 0xd7, 0xbb, 0x3c, 0x1a, 0xa5, 0xd4, 0xe5, 0xaa, 0x61,
|
||||
0x48, 0xaa, 0xd1, 0xd8, 0x00, 0xd7, 0x00, 0xc5, 0x31, 0x5c, 0x28, 0x64, 0x95, 0xd0, 0x1a, 0xe8,
|
||||
0xbd, 0x38, 0x0c, 0x95, 0x5a, 0xa0, 0x60, 0x76, 0x76, 0x42, 0x8c, 0x10, 0xa3, 0x80, 0x68, 0x5a,
|
||||
0xbc, 0x00, 0x51, 0x84, 0x3d, 0xfa, 0xa5, 0xfe, 0x32, 0xb5, 0x15, 0x17, 0x14, 0xec, 0x63, 0x88,
|
||||
0xc5, 0x6c, 0x6e, 0x84, 0x6b, 0x8e, 0x06, 0x61, 0xe3, 0xaf, 0x7d, 0x37, 0xdf, 0x7c, 0x09, 0x83,
|
||||
0xa4, 0xcc, 0x05, 0x61, 0x5b, 0x0c, 0xbd, 0x9d, 0x0f, 0x04, 0x1b, 0x5f, 0x1d, 0x82, 0x98, 0x4c,
|
||||
0x4d, 0x70, 0xd3, 0x62, 0x81, 0xb0, 0x2d, 0x11, 0x09, 0x3b, 0x5f, 0xc8, 0x31, 0xb8, 0x96, 0x6d,
|
||||
0x58, 0x7a, 0x24, 0x75, 0x13, 0x72, 0xed, 0xa9, 0xaf, 0xb0, 0x30, 0x1f, 0x4b, 0x7d, 0x0f, 0xea,
|
||||
0xc6, 0xb3, 0x76, 0x9f, 0xc7, 0xb3, 0x53, 0x3d, 0x36, 0x31, 0x56, 0x50, 0x99, 0xcb, 0xb5, 0x57,
|
||||
0x05, 0xe1, 0x54, 0x88, 0x43, 0xf5, 0xb8, 0x80, 0xc0, 0x63, 0x08, 0x5c, 0x84, 0x34, 0xd8, 0xc1,
|
||||
0x87, 0x87, 0x73, 0xce, 0x27, 0xcb, 0x75, 0xbc, 0xbf, 0xd0, 0x41, 0x65, 0xfc, 0x52, 0xe8, 0x75,
|
||||
0xac, 0x90, 0x34, 0x93, 0xe9, 0x38, 0xdc, 0x74, 0x86, 0x04, 0x83, 0xc1, 0x38, 0x04, 0xfa, 0x0e,
|
||||
0x5d, 0xe7, 0x3e, 0x3c, 0x83, 0x50, 0xde, 0x39, 0x9d, 0xc9, 0xa1, 0xc3, 0x34, 0x5d, 0x51, 0x7a,
|
||||
0x94, 0x18, 0xcb, 0xa0, 0x57, 0x51, 0x37, 0xde, 0xed, 0xae, 0x42, 0xad, 0x1b, 0x4c, 0x37, 0x9b,
|
||||
0x39, 0xef, 0x90, 0x8b, 0xa4, 0x57, 0x12, 0x15, 0x81, 0x86, 0xa1, 0x1b, 0x1a, 0x20, 0x7e, 0xd7,
|
||||
0x0f, 0x75, 0x28, 0x71, 0x38, 0x19, 0x5f, 0x2e, 0x00, 0x32, 0x5d, 0x78, 0x3d, 0x9e, 0xa3, 0x08,
|
||||
0x36, 0x0e, 0x88, 0x5f, 0x01, 0xf9, 0xbd, 0x5e, 0x93, 0x28, 0xc2, 0x63, 0xe5, 0x92, 0x54, 0xa2,
|
||||
0xf4, 0x5d, 0x01, 0x75, 0x6b, 0x41, 0xb0, 0x54, 0xa7, 0x31, 0xe0, 0xab, 0xd5, 0x6c, 0x3e, 0x09,
|
||||
0x77, 0x43, 0x38, 0x44, 0x05, 0xdb, 0xe3, 0x97, 0xa4, 0x07, 0x08, 0xdc, 0x2b, 0x6a, 0x63, 0x17,
|
||||
0x74, 0xcb, 0xef, 0x76, 0xe7, 0xa9, 0xfb, 0x69, 0x82, 0xca, 0x24, 0xa9, 0x19, 0x90, 0x1f, 0xde,
|
||||
0xfc, 0xfc, 0xc7, 0xc5, 0x0e, 0xc7, 0x6d, 0x77, 0x6e, 0x6e, 0xca, 0x5c, 0xfb, 0x18, 0xbe, 0x47,
|
||||
0xe1, 0xb6, 0x12, 0x7a, 0x31, 0x63, 0x26, 0xb2, 0xdc, 0x80, 0x01, 0x13, 0x76, 0x8b, 0xe5, 0x1c,
|
||||
0xdc, 0x8d, 0x38, 0x08, 0x45, 0xf0, 0x1f, 0xa2, 0x35, 0xfc, 0x29, 0xa8, 0x4b, 0x35, 0x93, 0xc3,
|
||||
0x38, 0x2d, 0x13, 0x9b, 0xd2, 0xd3, 0xcf, 0xc3, 0xcd, 0x14, 0x25, 0x8a, 0x78, 0x19, 0x30, 0xc3,
|
||||
0xfb, 0x67, 0x88, 0x16, 0x2d, 0xf4, 0xf6, 0x4d, 0x82, 0x3a, 0x43, 0x33, 0x71, 0xb9, 0xf6, 0xe3,
|
||||
0xfc, 0x4f, 0x64, 0xd8, 0x6c, 0x17, 0xe1, 0x66, 0x29, 0x10, 0xd5, 0x17, 0x37, 0x73, 0x7e, 0x2c,
|
||||
0x14, 0xc4, 0x55, 0xbb, 0x03, 0xd3, 0xad, 0xe5, 0x99, 0x6c, 0xb6, 0xdb, 0x5b, 0xb5, 0x20, 0xca,
|
||||
0xa5, 0x87, 0xa5, 0x69, 0xd3, 0x3a, 0x0f, 0x50, 0x8d, 0x58, 0x9d, 0x88, 0xc6, 0x17, 0x53, 0x27,
|
||||
0xbe, 0x74, 0x4c, 0xce, 0xcb, 0x6b, 0xdb, 0x9e, 0x93, 0xd3, 0xc8, 0xc9, 0x89, 0x65, 0x0a, 0x6a,
|
||||
0x09, 0xa0, 0x67, 0x9c, 0xa8, 0x61, 0x31, 0x8c, 0xe2, 0x3e, 0xe3, 0x7c, 0xbc, 0xcc, 0x59, 0xa1,
|
||||
0x55, 0xff, 0x78, 0xe9, 0x86, 0xe2, 0xf5, 0xfa, 0x7e, 0x68, 0x00, 0xfa, 0x1c, 0x4d, 0x09, 0x7a,
|
||||
0xfd, 0x07, 0xf4, 0x7f, 0xae, 0xa1, 0x9e, 0xb0, 0x4b, 0xb4, 0x4b, 0xcc, 0x74, 0xd6, 0x81, 0x48,
|
||||
0x16, 0x4a, 0x8a, 0x51, 0xfc, 0x0f, 0x61, 0x15, 0xca, 0x52, 0x01, 0xda, 0xa1, 0x16, 0x68, 0xcb,
|
||||
0xbf, 0xf8, 0x2f, 0xac, 0x82, 0x2e, 0xd1, 0xf4, 0xaf, 0xd5, 0xac, 0x4b, 0xf2, 0x37, 0x49, 0x1a,
|
||||
0x27, 0x8b, 0xe9, 0xf5, 0x90, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
|
||||
0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x03, 0x73, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x5b, 0x6c, 0x4c,
|
||||
0x51, 0x14, 0x86, 0xd7, 0xe8, 0xb4, 0x75, 0xab, 0x6b, 0x32, 0x97, 0xea, 0xb4, 0x43, 0xb5, 0xaa,
|
||||
0x45, 0x48, 0xca, 0x5c, 0xce, 0xa5, 0x87, 0x32, 0x9d, 0x19, 0x4c, 0xe2, 0x61, 0x52, 0x71, 0x17,
|
||||
0x95, 0x20, 0x22, 0xe2, 0x92, 0x94, 0x87, 0x46, 0xf0, 0xe0, 0x41, 0xa2, 0xf1, 0xc4, 0x83, 0x37,
|
||||
0x22, 0xe2, 0xf2, 0xe0, 0xf2, 0xd4, 0x44, 0x88, 0x08, 0x89, 0xc6, 0x83, 0x84, 0xaa, 0x56, 0x5b,
|
||||
0xea, 0xae, 0x9d, 0x22, 0x8a, 0x28, 0xea, 0x5f, 0x63, 0x9f, 0xe6, 0x18, 0xa7, 0x63, 0x5a, 0xc4,
|
||||
0x4e, 0xfe, 0x9c, 0xb3, 0x66, 0xef, 0xbd, 0xbe, 0xbd, 0xd6, 0xde, 0xeb, 0xec, 0x21, 0xfa, 0x0f,
|
||||
0x6d, 0xd1, 0xdf, 0x72, 0xf4, 0x85, 0x68, 0xdd, 0x57, 0xa2, 0x67, 0x9f, 0x88, 0x5a, 0x1a, 0x88,
|
||||
0xd6, 0xe3, 0x27, 0x8b, 0xde, 0x37, 0x06, 0x7a, 0x24, 0x9e, 0x7f, 0xd4, 0x7a, 0xe1, 0x14, 0xa0,
|
||||
0x97, 0x78, 0xf6, 0xb2, 0xde, 0x12, 0xc5, 0xca, 0x88, 0xe6, 0xea, 0xfd, 0x6b, 0xa0, 0x67, 0xd0,
|
||||
0x32, 0xe3, 0xa4, 0x88, 0xc7, 0x63, 0x0f, 0x2b, 0x4a, 0x5d, 0x48, 0x51, 0x2e, 0x41, 0xc5, 0x21,
|
||||
0x59, 0x3e, 0x81, 0x67, 0x73, 0x50, 0x55, 0x57, 0x27, 0x03, 0x75, 0x5b, 0x2c, 0x6f, 0x0c, 0xa0,
|
||||
0xce, 0x3c, 0xa2, 0x2a, 0xbd, 0xff, 0x92, 0x00, 0x9d, 0x35, 0x4e, 0x0a, 0x6a, 0x9a, 0x1b, 0x8e,
|
||||
0x7b, 0xa1, 0xcf, 0xd0, 0x7b, 0xa8, 0x0b, 0x6a, 0x0d, 0xca, 0xf2, 0x96, 0x7e, 0x38, 0x96, 0x79,
|
||||
0x5e, 0x6f, 0x55, 0x6d, 0x7e, 0xfe, 0x87, 0xf7, 0x44, 0xdd, 0x5d, 0x44, 0xaf, 0xf7, 0x12, 0x1d,
|
||||
0x9d, 0x42, 0x14, 0xe5, 0xce, 0x49, 0xd0, 0x53, 0x01, 0xe2, 0x67, 0xae, 0x09, 0x88, 0x75, 0x52,
|
||||
0xd3, 0xb4, 0xa1, 0xfc, 0x7b, 0x34, 0x1a, 0x4d, 0x33, 0x83, 0xcc, 0xf7, 0xf9, 0x56, 0x55, 0x48,
|
||||
0x52, 0xc7, 0x44, 0x9b, 0x6d, 0xc7, 0x0c, 0x24, 0x64, 0x22, 0x86, 0x16, 0x11, 0x55, 0xac, 0x22,
|
||||
0x1a, 0xcf, 0x03, 0x76, 0x09, 0x88, 0xae, 0x2d, 0x26, 0xa0, 0x0f, 0x81, 0x40, 0x60, 0x44, 0xb2,
|
||||
0xbd, 0x59, 0xe0, 0xf7, 0xaf, 0x64, 0xc8, 0x04, 0xbb, 0x7d, 0x2b, 0x4c, 0x1b, 0x94, 0x26, 0x0e,
|
||||
0x41, 0xdf, 0x41, 0x88, 0xd0, 0x0f, 0xe2, 0x13, 0x71, 0x18, 0x22, 0x26, 0xa0, 0xb6, 0x01, 0x40,
|
||||
0xec, 0x02, 0x62, 0xda, 0xd2, 0x05, 0x88, 0xfa, 0xd9, 0xa3, 0xc6, 0xfe, 0x26, 0x96, 0x7b, 0x3c,
|
||||
0x2b, 0x18, 0xe2, 0x72, 0x3a, 0xb7, 0xc1, 0x74, 0x26, 0x83, 0x70, 0xcb, 0x80, 0xda, 0x13, 0x7f,
|
||||
0x5c, 0x2c, 0xcb, 0xb9, 0x80, 0xc4, 0x82, 0x8a, 0x72, 0x3d, 0x05, 0x48, 0x36, 0x43, 0xc2, 0xb2,
|
||||
0x5c, 0x18, 0xd2, 0xb4, 0xcd, 0x61, 0x49, 0xaa, 0x0a, 0xf8, 0xfd, 0xb6, 0xc4, 0x39, 0x99, 0xd0,
|
||||
0xe3, 0x81, 0xd4, 0x0b, 0x36, 0x7e, 0x59, 0x1c, 0xe2, 0x70, 0x6c, 0x87, 0x99, 0x53, 0x52, 0x52,
|
||||
0x92, 0x81, 0x63, 0x7f, 0x1c, 0xea, 0xe8, 0x3b, 0x40, 0xaa, 0xca, 0x27, 0x54, 0x33, 0xce, 0x1b,
|
||||
0x2a, 0x0a, 0x76, 0xa0, 0x90, 0x1d, 0x30, 0x5d, 0x1c, 0x09, 0x1c, 0xd7, 0x40, 0x3d, 0xa8, 0xb5,
|
||||
0x4e, 0x38, 0x3f, 0xc5, 0xfb, 0xca, 0x30, 0xd4, 0xe1, 0x45, 0xe3, 0xdc, 0x61, 0xa9, 0x82, 0x90,
|
||||
0x8e, 0xa5, 0x06, 0x48, 0x6e, 0x1c, 0x12, 0x0a, 0x65, 0x22, 0xbd, 0xf7, 0xd9, 0x31, 0x43, 0x78,
|
||||
0x1c, 0xde, 0x2f, 0xc4, 0xa3, 0x92, 0xe5, 0x9b, 0xc6, 0xf9, 0xc3, 0xa1, 0xb6, 0x54, 0x21, 0x39,
|
||||
0x0e, 0xc7, 0x4e, 0x98, 0x6e, 0x7d, 0xe3, 0xe1, 0x7c, 0x49, 0xf0, 0x47, 0x51, 0x7f, 0x83, 0xee,
|
||||
0x20, 0x65, 0x37, 0x60, 0xb7, 0x88, 0x14, 0x5e, 0x31, 0xfa, 0xe0, 0x1a, 0x69, 0x4d, 0x06, 0x29,
|
||||
0x97, 0xa4, 0x4a, 0x38, 0x8c, 0xb9, 0x9d, 0x4e, 0xae, 0x3b, 0xd4, 0x22, 0x59, 0xf5, 0x3e, 0xac,
|
||||
0xfa, 0x98, 0x58, 0x7d, 0x37, 0xf4, 0x82, 0x05, 0xd0, 0x47, 0x11, 0xe1, 0x39, 0xa3, 0x9f, 0x91,
|
||||
0x50, 0xcb, 0x60, 0x20, 0x22, 0x4d, 0x67, 0xc4, 0xea, 0xeb, 0x17, 0xca, 0xf2, 0x24, 0x44, 0x14,
|
||||
0x00, 0x88, 0x0f, 0xc5, 0x37, 0xec, 0xd1, 0x06, 0xe3, 0xd8, 0x2c, 0xe8, 0xa1, 0x19, 0x04, 0xa9,
|
||||
0xaa, 0x01, 0xe4, 0x5d, 0x9e, 0xd3, 0xb9, 0x1b, 0xe6, 0xe4, 0x44, 0x48, 0x3c, 0x75, 0x8a, 0x72,
|
||||
0x5a, 0x80, 0x9a, 0xe3, 0x1f, 0x62, 0x59, 0xae, 0x13, 0xf6, 0xbd, 0x88, 0x24, 0x65, 0xfd, 0x16,
|
||||
0x14, 0x90, 0xe5, 0x6a, 0x40, 0x3e, 0x6b, 0xb3, 0x67, 0xd7, 0x97, 0x7b, 0xbd, 0xe7, 0xa5, 0x59,
|
||||
0xb3, 0xb2, 0xcd, 0x16, 0x13, 0x2a, 0x2b, 0xdb, 0x88, 0x28, 0x3e, 0x09, 0xe7, 0xed, 0xd0, 0x57,
|
||||
0xa4, 0x2f, 0x86, 0xe7, 0xfa, 0xc4, 0xb1, 0xa3, 0xa0, 0xe6, 0x9f, 0x22, 0x51, 0x94, 0xad, 0x7c,
|
||||
0x5c, 0x0b, 0x5c, 0xae, 0xfd, 0x30, 0x0b, 0x71, 0x10, 0xe6, 0xc1, 0xbe, 0x66, 0x56, 0x84, 0xfc,
|
||||
0x3d, 0x43, 0xdf, 0x21, 0xc0, 0x6e, 0x87, 0x55, 0xb5, 0x01, 0xef, 0x57, 0xf1, 0xbe, 0xdc, 0x6c,
|
||||
0x51, 0x0c, 0x6a, 0x32, 0x44, 0xb2, 0x09, 0x2b, 0xea, 0x99, 0xe2, 0x76, 0x1f, 0x80, 0x39, 0x55,
|
||||
0x7c, 0xa2, 0x08, 0xd5, 0x5e, 0x8a, 0x08, 0x2f, 0xef, 0x21, 0x1a, 0x32, 0xd8, 0x8b, 0x71, 0x34,
|
||||
0xf4, 0x20, 0x1e, 0x89, 0xdf, 0xbf, 0x16, 0x39, 0xef, 0x29, 0xca, 0xcf, 0x3f, 0x08, 0xb3, 0x58,
|
||||
0x87, 0xf4, 0xed, 0x87, 0xaa, 0x56, 0xa3, 0x7f, 0xcd, 0x60, 0x41, 0xfc, 0xd5, 0x6e, 0xac, 0xc0,
|
||||
0x7d, 0xc2, 0x91, 0x4c, 0x2b, 0x28, 0xa8, 0x35, 0x83, 0xc4, 0xef, 0x22, 0x9f, 0x6f, 0x18, 0xa7,
|
||||
0xc6, 0xc4, 0x47, 0x18, 0x5a, 0x29, 0xb2, 0xd3, 0x6f, 0x1b, 0xcb, 0x11, 0xf1, 0xd9, 0x57, 0x4a,
|
||||
0x4b, 0xaf, 0xce, 0x99, 0x3e, 0x7d, 0x1b, 0x17, 0x27, 0xd2, 0x14, 0x35, 0x13, 0x40, 0x77, 0x4d,
|
||||
0x2e, 0x3f, 0xbb, 0xb8, 0xcf, 0xb8, 0x1e, 0x8f, 0x70, 0x55, 0x98, 0x7d, 0xc9, 0x39, 0x75, 0x5d,
|
||||
0xe9, 0x56, 0x6b, 0x07, 0xd4, 0x09, 0xbd, 0x4a, 0xa6, 0x0c, 0xab, 0xf5, 0x39, 0xc6, 0x37, 0x98,
|
||||
0xe8, 0x69, 0xc2, 0x25, 0xda, 0x24, 0x22, 0xfd, 0xe5, 0x40, 0x8c, 0x13, 0x1a, 0x9d, 0xa2, 0x26,
|
||||
0x40, 0x79, 0x42, 0xc5, 0x06, 0xc0, 0x2d, 0x68, 0x1f, 0x34, 0xf3, 0x5f, 0xfc, 0x2f, 0xac, 0x84,
|
||||
0x0e, 0x43, 0x8a, 0xf1, 0xfa, 0xd6, 0xdb, 0x77, 0xcb, 0x1b, 0x49, 0x88, 0x18, 0x0b, 0x33, 0xe5,
|
||||
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE polar_coord_xpm[1] = {{ png, sizeof( png ), "polar_coord_xpm" }};
|
||||
|
||||
@@ -8,34 +8,25 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0xa5, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x6e, 0x80,
|
||||
0x91, 0x52, 0x03, 0x9a, 0x9b, 0x9b, 0x15, 0xff, 0xfe, 0xfd, 0x9b, 0x03, 0x64, 0xba, 0x00, 0xb1,
|
||||
0x3c, 0x54, 0xf8, 0x21, 0x10, 0xef, 0x61, 0x66, 0x66, 0x9e, 0x52, 0x5b, 0x5b, 0x7b, 0x9f, 0x62,
|
||||
0x8b, 0x1a, 0x1b, 0x1b, 0xfd, 0xff, 0xff, 0xff, 0xbf, 0x1c, 0xc8, 0xe4, 0xc4, 0xa1, 0xe4, 0x1b,
|
||||
0x10, 0x47, 0x36, 0x34, 0x34, 0x6c, 0x62, 0xa4, 0xc0, 0x27, 0xaa, 0x40, 0x9f, 0x5c, 0x02, 0x32,
|
||||
0x39, 0x80, 0x78, 0x09, 0x13, 0x13, 0xd3, 0x24, 0x36, 0x36, 0xb6, 0x5b, 0x20, 0xb9, 0x5f, 0xbf,
|
||||
0x7e, 0xa9, 0xfd, 0xfb, 0xf7, 0x2f, 0x1f, 0xc8, 0x8c, 0x06, 0xe2, 0x1f, 0x40, 0xac, 0xcb, 0x42,
|
||||
0xae, 0x45, 0x40, 0x4b, 0xca, 0xa1, 0x96, 0xcc, 0x03, 0xba, 0x38, 0x19, 0x4d, 0xfa, 0x34, 0x10,
|
||||
0xc7, 0x00, 0xc5, 0x7f, 0x02, 0xe9, 0x24, 0x20, 0x2e, 0x67, 0xa2, 0x20, 0xe4, 0xdc, 0xa1, 0x74,
|
||||
0x2f, 0x1e, 0x35, 0x30, 0x39, 0x77, 0x4a, 0x2c, 0x92, 0x84, 0xd2, 0x37, 0xf0, 0xa8, 0x81, 0xc9,
|
||||
0x49, 0x51, 0x62, 0x11, 0x33, 0x88, 0x00, 0x06, 0xcf, 0x3f, 0x5c, 0x0a, 0x90, 0xe4, 0x98, 0x99,
|
||||
0xe8, 0x95, 0x8f, 0x86, 0x9f, 0x45, 0xe0, 0xe4, 0x1d, 0x11, 0x11, 0xd1, 0x01, 0xa4, 0x0a, 0x81,
|
||||
0x99, 0x8f, 0x0d, 0x98, 0x6c, 0x19, 0x80, 0x79, 0x80, 0x20, 0x3e, 0x70, 0xe0, 0x00, 0x98, 0xb6,
|
||||
0xb1, 0xb1, 0xf9, 0x0f, 0xd4, 0xf3, 0x0b, 0xc8, 0xee, 0x3d, 0x79, 0xf2, 0x64, 0x15, 0x16, 0x3b,
|
||||
0x8e, 0xc0, 0x4b, 0x86, 0xf0, 0xf0, 0xf0, 0x9f, 0x40, 0x85, 0x6c, 0xc4, 0x58, 0x00, 0xc2, 0x38,
|
||||
0x1c, 0xf3, 0xf3, 0xcc, 0x99, 0x33, 0x1c, 0x78, 0x7d, 0x04, 0xd4, 0xc8, 0x46, 0x86, 0xc1, 0x28,
|
||||
0x18, 0x08, 0xd8, 0x09, 0x06, 0x1d, 0xb2, 0x41, 0xe8, 0x86, 0x1a, 0x18, 0x18, 0x30, 0xa4, 0xa5,
|
||||
0xa5, 0x31, 0x00, 0x83, 0x95, 0x61, 0xda, 0xb4, 0x69, 0x0c, 0xa7, 0x4f, 0x9f, 0x46, 0x91, 0x07,
|
||||
0x89, 0x13, 0x9d, 0x18, 0xfe, 0xfc, 0xf9, 0x03, 0xc7, 0x20, 0x8b, 0x90, 0x71, 0x6a, 0x6a, 0x2a,
|
||||
0x83, 0x90, 0x90, 0x10, 0x83, 0xb0, 0xb0, 0x30, 0x43, 0x46, 0x46, 0x06, 0x58, 0x0c, 0xa6, 0x8e,
|
||||
0x58, 0x4b, 0xb0, 0xfa, 0x08, 0x4b, 0x90, 0xa0, 0x00, 0x90, 0x25, 0x64, 0x27, 0x6f, 0x74, 0x5f,
|
||||
0x20, 0xfb, 0x70, 0xf2, 0xe4, 0xc9, 0x0c, 0xbf, 0x7f, 0xff, 0x06, 0xe3, 0x89, 0x13, 0x27, 0x52,
|
||||
0x96, 0xbc, 0x41, 0x06, 0xe2, 0xf2, 0x11, 0x30, 0xc9, 0x32, 0x5c, 0xbf, 0x7e, 0x1d, 0x52, 0x24,
|
||||
0x9f, 0x3e, 0x4d, 0x99, 0x45, 0xf8, 0x82, 0x8e, 0x94, 0x78, 0x20, 0xd9, 0x22, 0xf4, 0x88, 0x3e,
|
||||
0x72, 0xe4, 0x08, 0x75, 0x2c, 0x42, 0x0f, 0x3a, 0x74, 0xb0, 0x71, 0xe3, 0x46, 0xea, 0x94, 0x75,
|
||||
0xa0, 0x22, 0x04, 0xe6, 0x2b, 0x0a, 0xc0, 0x4f, 0x62, 0x2c, 0xea, 0x05, 0x06, 0xd5, 0x2f, 0x0a,
|
||||
0x2c, 0xf9, 0x05, 0xd4, 0xdf, 0x33, 0x28, 0xda, 0x75, 0x00, 0xe1, 0xa2, 0xc4, 0xfc, 0xec, 0xf5,
|
||||
0xed, 0x82, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x01, 0x0f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x05, 0x68,
|
||||
0x20, 0xb6, 0x26, 0x45, 0x31, 0xa1, 0x32, 0xb9, 0x37, 0xa1, 0x2a, 0xf9, 0x22, 0x10, 0x7f, 0x80,
|
||||
0xe2, 0x8b, 0x20, 0x31, 0x90, 0x1c, 0x55, 0x2c, 0x49, 0xac, 0x4e, 0xf1, 0x4f, 0xa8, 0x4a, 0xf9,
|
||||
0x06, 0x34, 0xf8, 0x3f, 0x0e, 0xfc, 0x35, 0xbe, 0x32, 0xc9, 0x8f, 0x22, 0x4b, 0x12, 0x6a, 0x12,
|
||||
0x54, 0x81, 0x06, 0x7d, 0x07, 0x19, 0x18, 0x5f, 0x95, 0xbc, 0x38, 0xa1, 0x22, 0xd5, 0x34, 0xad,
|
||||
0x3c, 0x8d, 0x1f, 0x84, 0x41, 0xec, 0x84, 0xca, 0x94, 0x25, 0x50, 0xcb, 0xbe, 0x27, 0x57, 0x24,
|
||||
0xab, 0x90, 0x6f, 0x51, 0x75, 0xca, 0x1c, 0xa8, 0x41, 0x73, 0x71, 0xaa, 0x01, 0xca, 0x41, 0x1d,
|
||||
0x32, 0x9b, 0x6c, 0x8b, 0x80, 0x9a, 0x1f, 0x83, 0x0c, 0x49, 0xac, 0x4c, 0xd4, 0xc2, 0x19, 0xb4,
|
||||
0x40, 0x39, 0xa8, 0x63, 0x1e, 0x91, 0xef, 0xa3, 0xaa, 0xe4, 0x3f, 0x20, 0x43, 0x1a, 0x1a, 0x1a,
|
||||
0x98, 0x70, 0xa9, 0x01, 0xc9, 0x41, 0x2d, 0xfa, 0x43, 0x89, 0x45, 0xe0, 0x08, 0xa7, 0x96, 0xba,
|
||||
0x51, 0x8b, 0xf0, 0xab, 0x33, 0x36, 0x36, 0xee, 0x00, 0xe2, 0x9f, 0x40, 0xfc, 0x9f, 0x4c, 0x0c,
|
||||
0xd2, 0xdb, 0x86, 0x23, 0x75, 0x1e, 0x06, 0x61, 0x98, 0x45, 0x94, 0x58, 0x02, 0xc3, 0x3f, 0x08,
|
||||
0x06, 0x03, 0x15, 0x2c, 0x01, 0x63, 0x8a, 0x2c, 0xca, 0xcc, 0xcc, 0xfc, 0x7f, 0xe3, 0xc6, 0x0d,
|
||||
0x30, 0xce, 0xc8, 0xc8, 0xa0, 0x9d, 0x45, 0x20, 0x0b, 0xde, 0xbc, 0x79, 0x03, 0xc6, 0xd7, 0xaf,
|
||||
0x5f, 0x1f, 0x06, 0x16, 0x81, 0x82, 0xeb, 0xf9, 0xf3, 0xe7, 0x60, 0x4c, 0xd3, 0xa0, 0x03, 0xe1,
|
||||
0x7d, 0xfb, 0xf6, 0x81, 0x31, 0x4d, 0x13, 0x03, 0x5d, 0x2d, 0x6a, 0x6a, 0x6a, 0x02, 0x63, 0x9a,
|
||||
0x5b, 0x44, 0xcd, 0x7c, 0x44, 0xb7, 0x92, 0xa1, 0x8d, 0xd2, 0xb2, 0xce, 0xc8, 0xc8, 0xa8, 0x65,
|
||||
0x50, 0x34, 0xcb, 0x00, 0xfd, 0x52, 0x19, 0xe9, 0xa4, 0x86, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE unlocked_xpm[1] = {{ png, sizeof( png ), "unlocked_xpm" }};
|
||||
|
||||
@@ -8,42 +8,55 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x02, 0x1d, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x94, 0xcf, 0x6a, 0x1a,
|
||||
0x51, 0x14, 0xc6, 0xa7, 0xa1, 0x5d, 0xa6, 0x69, 0x37, 0x85, 0xf6, 0x1d, 0x14, 0xff, 0x6b, 0x23,
|
||||
0xea, 0x3c, 0x82, 0x1a, 0x48, 0xa2, 0x48, 0x41, 0x7d, 0x01, 0x91, 0x96, 0x96, 0xac, 0x5c, 0x88,
|
||||
0x4f, 0x20, 0x4c, 0x5e, 0x41, 0xa1, 0x2d, 0x29, 0x5d, 0x86, 0x2c, 0xc4, 0x95, 0x33, 0xd9, 0xa4,
|
||||
0xef, 0x50, 0x02, 0x69, 0xd3, 0x86, 0x2e, 0x1a, 0x12, 0xe2, 0xed, 0xf7, 0x0d, 0x67, 0x21, 0x83,
|
||||
0x72, 0xe7, 0x0a, 0x42, 0x2f, 0x1c, 0x46, 0x67, 0xee, 0xbd, 0xbf, 0xf3, 0x9d, 0xef, 0xdc, 0x6b,
|
||||
0x59, 0x06, 0xc3, 0x75, 0x5d, 0xbb, 0x58, 0x2c, 0xfe, 0x4a, 0x26, 0x93, 0x8a, 0x4f, 0xfc, 0xef,
|
||||
0x85, 0xf9, 0x9f, 0xc9, 0x64, 0xfe, 0x98, 0x70, 0x2c, 0x2e, 0xf2, 0x3c, 0x4f, 0x99, 0x06, 0xd7,
|
||||
0x19, 0x81, 0x98, 0xe9, 0x3a, 0x20, 0x2a, 0xfb, 0xbf, 0x14, 0x41, 0xc9, 0x4e, 0x2a, 0x95, 0x3a,
|
||||
0xac, 0xd5, 0x6a, 0x5e, 0xb3, 0xd9, 0x54, 0x8c, 0x4e, 0xa7, 0xa3, 0x1c, 0xc7, 0x51, 0xd3, 0xe9,
|
||||
0x54, 0x0b, 0x62, 0x25, 0x74, 0x80, 0x27, 0x89, 0x44, 0xe2, 0x08, 0xcf, 0xdf, 0x9c, 0x0c, 0xd8,
|
||||
0xbc, 0x5a, 0xad, 0x2a, 0x46, 0xa9, 0x54, 0xf2, 0x37, 0x28, 0x14, 0x0a, 0xaa, 0xdf, 0xef, 0xab,
|
||||
0xd9, 0x6c, 0xb6, 0x9e, 0xa2, 0x48, 0x24, 0xf2, 0x1c, 0x1b, 0x9d, 0x21, 0xe6, 0x88, 0x4f, 0x00,
|
||||
0xe6, 0x16, 0x3d, 0xe2, 0xc6, 0xa3, 0xd1, 0x48, 0xb5, 0xdb, 0x6d, 0x1f, 0xd8, 0x68, 0x34, 0xd4,
|
||||
0x64, 0x32, 0x31, 0xf3, 0x88, 0x4a, 0x04, 0xf2, 0x17, 0x2a, 0x6a, 0x3a, 0x8f, 0x86, 0xc3, 0xa1,
|
||||
0xca, 0xe5, 0x72, 0x3e, 0x6c, 0x99, 0xb2, 0x95, 0x8a, 0xa4, 0x5c, 0xf3, 0x45, 0x88, 0x9c, 0xa3,
|
||||
0xde, 0xaa, 0xf2, 0x10, 0x46, 0x65, 0x83, 0xc1, 0x20, 0x9c, 0x47, 0x34, 0x9e, 0x9e, 0x00, 0xf2,
|
||||
0xd1, 0xb4, 0xeb, 0x5a, 0xad, 0x96, 0xef, 0x59, 0xb0, 0x41, 0x96, 0x2a, 0xa2, 0x0a, 0x66, 0x40,
|
||||
0x4f, 0x4c, 0xcf, 0xd1, 0x78, 0x3c, 0xf6, 0xb3, 0x67, 0x37, 0x6a, 0x3d, 0x02, 0xe0, 0x18, 0x93,
|
||||
0xaf, 0xf0, 0xf3, 0x91, 0xa9, 0x22, 0xfa, 0x43, 0x45, 0xdd, 0x6e, 0x57, 0xaf, 0x08, 0x90, 0xaf,
|
||||
0x50, 0xe5, 0xae, 0xb8, 0xeb, 0x7a, 0xba, 0x33, 0x53, 0xa9, 0x54, 0xfc, 0x12, 0x6a, 0x3d, 0x02,
|
||||
0xe4, 0x0b, 0x3e, 0x78, 0xeb, 0xde, 0x0c, 0xe5, 0x72, 0xd9, 0x3f, 0xd0, 0x61, 0x14, 0x39, 0x52,
|
||||
0xba, 0xad, 0xe0, 0x37, 0xde, 0xc2, 0xba, 0x5b, 0x9b, 0xdd, 0x5a, 0xaf, 0xd7, 0xdd, 0xc0, 0x77,
|
||||
0x7b, 0x99, 0xa2, 0x43, 0x4e, 0x88, 0xc7, 0xe3, 0xaf, 0x2d, 0xc3, 0x81, 0xb5, 0x79, 0x69, 0xa4,
|
||||
0x7d, 0xed, 0xe4, 0x6c, 0x36, 0xfb, 0x14, 0x93, 0x99, 0xcd, 0xe7, 0x35, 0x40, 0x2c, 0xfb, 0x75,
|
||||
0x3e, 0x9f, 0xdf, 0x0e, 0x7b, 0x89, 0x7e, 0x90, 0xcc, 0x1a, 0x06, 0x90, 0x37, 0xb2, 0xe6, 0x5d,
|
||||
0xe8, 0xcc, 0x6c, 0xdb, 0x7e, 0x8c, 0x85, 0xa7, 0x58, 0x78, 0x1b, 0x06, 0x26, 0x90, 0x07, 0xc4,
|
||||
0x0d, 0x4a, 0xfe, 0xca, 0xa8, 0x0c, 0xb1, 0x58, 0xec, 0x99, 0xc0, 0x98, 0xe5, 0x49, 0x3a, 0x9d,
|
||||
0xde, 0x0d, 0x34, 0xc8, 0x16, 0x3d, 0x91, 0x72, 0xb1, 0x09, 0x6e, 0xe4, 0xf9, 0x2d, 0x1a, 0x8d,
|
||||
0xbe, 0x30, 0x82, 0x51, 0x19, 0x16, 0xbe, 0x17, 0xcf, 0xb8, 0xc9, 0x0f, 0xc4, 0xb9, 0xc4, 0x4f,
|
||||
0x79, 0x77, 0x8d, 0x78, 0x8b, 0x78, 0x89, 0xb8, 0x90, 0x77, 0xf7, 0x48, 0xe0, 0x12, 0xb1, 0x67,
|
||||
0x04, 0xa4, 0xb9, 0xec, 0x24, 0xb6, 0x3e, 0x15, 0x88, 0x0a, 0x87, 0xef, 0x16, 0x8d, 0xa7, 0x12,
|
||||
0xbc, 0xbf, 0x13, 0x98, 0x0f, 0xc4, 0x9c, 0x03, 0x6b, 0x13, 0x03, 0x9b, 0x7f, 0x5f, 0x00, 0x6d,
|
||||
0x0e, 0xc6, 0x72, 0x71, 0xf3, 0x20, 0x6c, 0x23, 0xaa, 0xa8, 0x20, 0x08, 0xb3, 0x36, 0x35, 0x82,
|
||||
0xb0, 0x7f, 0xa8, 0x11, 0x18, 0x39, 0x35, 0x06, 0xa4, 0x45, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x02, 0xf4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x55, 0x4d, 0x4f, 0x1a,
|
||||
0x51, 0x14, 0x9d, 0xa4, 0xe9, 0xa6, 0xe9, 0xd7, 0xa6, 0xe9, 0x3f, 0x68, 0xbb, 0x37, 0x62, 0x50,
|
||||
0xdc, 0x35, 0x42, 0x13, 0x92, 0x06, 0x09, 0xec, 0x74, 0x05, 0x7e, 0xa0, 0x69, 0x64, 0xd5, 0x45,
|
||||
0x89, 0x5d, 0x10, 0x05, 0xe3, 0xc6, 0x88, 0xa6, 0xa8, 0x11, 0x49, 0xd3, 0x85, 0x7c, 0x18, 0x05,
|
||||
0x45, 0x5c, 0x89, 0xa9, 0x44, 0x4d, 0x01, 0x15, 0x74, 0x61, 0xbb, 0x60, 0xd7, 0xd2, 0x76, 0x63,
|
||||
0xd3, 0xc4, 0x6e, 0x4c, 0xe7, 0xf5, 0x9e, 0x97, 0x8c, 0x19, 0x11, 0xc6, 0x19, 0x43, 0x5f, 0x72,
|
||||
0x43, 0x66, 0xe6, 0xbd, 0x77, 0xee, 0x3d, 0xe7, 0xdc, 0x8b, 0x20, 0x68, 0x58, 0xb9, 0x5c, 0x6e,
|
||||
0xa8, 0xbd, 0xbd, 0x5d, 0x6c, 0x6a, 0x6a, 0x62, 0xf8, 0xa5, 0xe7, 0x2d, 0x35, 0xcf, 0x3a, 0x9d,
|
||||
0x4e, 0xd4, 0x82, 0x23, 0xe0, 0x50, 0x3e, 0x9f, 0x67, 0x5a, 0x03, 0xe7, 0x34, 0x01, 0x21, 0xd3,
|
||||
0x9b, 0x00, 0xa1, 0x32, 0x4d, 0x40, 0x1d, 0x1d, 0x1d, 0xe2, 0xf1, 0xf1, 0x31, 0x43, 0xec, 0xef,
|
||||
0xef, 0x37, 0xb6, 0x22, 0xc6, 0xd8, 0x83, 0x58, 0x2c, 0xb6, 0x34, 0x31, 0x31, 0xf1, 0x7d, 0x64,
|
||||
0x64, 0x44, 0x74, 0xb9, 0x5c, 0x0c, 0x31, 0x3e, 0x3e, 0xce, 0xe8, 0x3d, 0xdb, 0xdd, 0xdd, 0x65,
|
||||
0x07, 0x07, 0x07, 0x8a, 0x40, 0x60, 0x42, 0x11, 0x24, 0x91, 0x48, 0xbc, 0x1d, 0x1d, 0x1d, 0xfd,
|
||||
0xd3, 0xda, 0xda, 0xca, 0x37, 0xb7, 0xb5, 0xb5, 0x31, 0xab, 0xd5, 0xca, 0x43, 0xfe, 0x6e, 0x6e,
|
||||
0x6e, 0xee, 0xe6, 0x15, 0x45, 0x22, 0x91, 0x0f, 0x5d, 0x5d, 0x5d, 0xdc, 0x41, 0xfd, 0xfd, 0xfd,
|
||||
0x62, 0x30, 0x18, 0x3c, 0x19, 0x1e, 0x1e, 0x66, 0x47, 0x47, 0x47, 0x3c, 0x0a, 0x85, 0x02, 0xdb,
|
||||
0xd8, 0xd8, 0x60, 0x6e, 0xb7, 0x9b, 0x03, 0xf6, 0xf4, 0xf4, 0xb0, 0xbd, 0xbd, 0x3d, 0x6d, 0x1a,
|
||||
0xa1, 0x12, 0x80, 0x90, 0x2d, 0xd9, 0xf4, 0xf4, 0xf4, 0x29, 0xd1, 0xf3, 0xbc, 0x9e, 0xeb, 0x0e,
|
||||
0x0f, 0x0f, 0x39, 0x85, 0xd8, 0xdb, 0xdb, 0xdb, 0xab, 0xbe, 0x22, 0x68, 0x02, 0xba, 0x90, 0xe5,
|
||||
0xd4, 0xd4, 0xd4, 0x69, 0xa5, 0x52, 0x79, 0x24, 0xeb, 0xa3, 0xad, 0x5a, 0x17, 0x41, 0xa3, 0x68,
|
||||
0x34, 0xca, 0x2b, 0x03, 0x8d, 0xd5, 0x9a, 0xd5, 0xd4, 0x88, 0x0e, 0x2c, 0x81, 0xff, 0xbe, 0xbe,
|
||||
0x3e, 0x51, 0xaa, 0x44, 0x4d, 0x1f, 0x15, 0x8b, 0x45, 0x4e, 0x23, 0x34, 0x83, 0x41, 0xae, 0xad,
|
||||
0x08, 0xee, 0x42, 0x06, 0xd0, 0x44, 0x6b, 0x1f, 0xa5, 0xd3, 0x69, 0x9e, 0x7d, 0x3c, 0x1e, 0x57,
|
||||
0xd6, 0x88, 0x68, 0xbb, 0xe7, 0xf1, 0x78, 0xce, 0x0d, 0x06, 0x03, 0x5b, 0x5d, 0x5d, 0x0d, 0x68,
|
||||
0x9d, 0x0c, 0x30, 0x08, 0x2a, 0x82, 0xf5, 0xe5, 0x7d, 0x76, 0xa5, 0x22, 0x02, 0x7a, 0xea, 0x74,
|
||||
0x3a, 0xc5, 0xce, 0xce, 0x4e, 0x56, 0x2a, 0x95, 0x5e, 0xd6, 0x98, 0x75, 0x5b, 0x4a, 0x40, 0x70,
|
||||
0xa3, 0xc5, 0x62, 0x61, 0x83, 0x83, 0x83, 0xbc, 0xa9, 0xeb, 0x6a, 0x44, 0x40, 0x4f, 0x00, 0x84,
|
||||
0xcd, 0x74, 0xc8, 0xa2, 0xb5, 0x22, 0x09, 0x68, 0x60, 0x60, 0xe0, 0x12, 0x50, 0xad, 0x8a, 0xee,
|
||||
0x4a, 0xd4, 0xad, 0xad, 0xad, 0x5d, 0xa1, 0x0e, 0x53, 0x58, 0x69, 0x4a, 0xa3, 0xcf, 0x60, 0x24,
|
||||
0xaf, 0xd7, 0x2b, 0x9a, 0x4c, 0x26, 0xf9, 0xf7, 0xa1, 0xba, 0x66, 0x98, 0x9d, 0x9d, 0xfd, 0x2c,
|
||||
0x68, 0x5c, 0x33, 0x33, 0x33, 0x5f, 0x70, 0x96, 0xee, 0xa8, 0x5c, 0xbb, 0x99, 0xec, 0x1d, 0x87,
|
||||
0xa0, 0xd4, 0x7c, 0xe2, 0xce, 0xce, 0x8e, 0x51, 0x2d, 0xc8, 0xf6, 0xf6, 0xb6, 0x99, 0xce, 0xfc,
|
||||
0x05, 0x1b, 0xe4, 0xba, 0x88, 0x9a, 0x21, 0x7a, 0xdf, 0xe7, 0xf3, 0x9d, 0x21, 0xb3, 0x40, 0x20,
|
||||
0x70, 0xa9, 0x61, 0xeb, 0xad, 0x72, 0xb9, 0xfc, 0x78, 0x72, 0x72, 0xf2, 0x37, 0xce, 0x8c, 0x8d,
|
||||
0x8d, 0x9d, 0xd1, 0x1d, 0x0f, 0x55, 0x65, 0xb7, 0xbc, 0xbc, 0xec, 0x91, 0x46, 0x10, 0x4d, 0x87,
|
||||
0x5f, 0xd9, 0x6c, 0xf6, 0x85, 0x52, 0x25, 0x00, 0xc1, 0xde, 0x96, 0x96, 0x16, 0x96, 0x4a, 0xa5,
|
||||
0x72, 0x9a, 0xf8, 0x5e, 0x5c, 0x5c, 0x7c, 0xdf, 0xdd, 0xdd, 0xcd, 0x05, 0x05, 0x8d, 0xc4, 0xff,
|
||||
0x09, 0x5d, 0xf2, 0x0e, 0xb6, 0x87, 0x23, 0xc9, 0x2c, 0x41, 0xe8, 0x08, 0xba, 0xb0, 0x07, 0x20,
|
||||
0xf8, 0xb5, 0xdb, 0xed, 0x22, 0x7d, 0xfb, 0x98, 0xc9, 0x64, 0x5e, 0x53, 0x65, 0xb7, 0x55, 0x81,
|
||||
0xad, 0xac, 0xac, 0xbc, 0xf1, 0xfb, 0xfd, 0x67, 0xd0, 0x0c, 0x97, 0xc0, 0x51, 0xe8, 0x31, 0x84,
|
||||
0xf4, 0x37, 0x01, 0x4d, 0x40, 0xd7, 0xfa, 0xfa, 0xfa, 0x27, 0x9b, 0xcd, 0xc6, 0x13, 0x6b, 0x6e,
|
||||
0x6e, 0x66, 0x46, 0xa3, 0x91, 0x85, 0xc3, 0xe1, 0x6f, 0x6a, 0xa8, 0xbf, 0xd0, 0x8c, 0xa6, 0x73,
|
||||
0x0c, 0x4e, 0x22, 0xfb, 0x9e, 0xa3, 0xcf, 0x1c, 0x0e, 0x87, 0x88, 0x36, 0xc0, 0x3b, 0x08, 0x2f,
|
||||
0x69, 0x92, 0x4c, 0x26, 0x33, 0x7a, 0xbd, 0x9e, 0x27, 0x80, 0x00, 0x9d, 0xf3, 0xf3, 0xf3, 0x3f,
|
||||
0x55, 0x83, 0xc9, 0x40, 0xef, 0x60, 0x7a, 0x50, 0x3c, 0xc3, 0xb8, 0xaa, 0xfe, 0xbe, 0xb9, 0xb9,
|
||||
0xf9, 0xca, 0x6c, 0x36, 0x5f, 0x00, 0xc9, 0xc1, 0x84, 0x46, 0x2e, 0x02, 0xbf, 0xb5, 0xb0, 0xb0,
|
||||
0xf0, 0x15, 0x97, 0x57, 0x83, 0x09, 0x8d, 0x5e, 0xa0, 0x09, 0x15, 0x54, 0x83, 0x09, 0xff, 0x63,
|
||||
0x01, 0x2c, 0x14, 0x0a, 0xfd, 0x90, 0x83, 0xfd, 0x03, 0x15, 0xf7, 0xfe, 0x53, 0x91, 0x84, 0x3e,
|
||||
0x9c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE zoom_area_xpm[1] = {{ png, sizeof( png ), "zoom_area_xpm" }};
|
||||
|
||||
@@ -8,35 +8,50 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0xbc, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0xcb, 0x4a, 0xc3,
|
||||
0x40, 0x14, 0x86, 0x6b, 0xd1, 0xa5, 0xb7, 0x8d, 0xa0, 0xef, 0x90, 0x90, 0xa4, 0x0d, 0x55, 0xb3,
|
||||
0xc9, 0x3b, 0x08, 0x56, 0xa1, 0xb8, 0x2c, 0x64, 0xef, 0xa5, 0xf8, 0x20, 0xd6, 0x97, 0xd0, 0xda,
|
||||
0xea, 0x52, 0x7c, 0x01, 0x2f, 0x0b, 0x7d, 0x07, 0x11, 0x62, 0xab, 0x8d, 0x0b, 0x45, 0xb1, 0xf5,
|
||||
0xff, 0xe5, 0x04, 0x42, 0x16, 0xed, 0x4c, 0x34, 0x1b, 0x31, 0xf0, 0x93, 0x64, 0x3a, 0x67, 0xbe,
|
||||
0x39, 0x97, 0x39, 0x69, 0xa1, 0xf0, 0x7f, 0xfd, 0x89, 0xab, 0x54, 0x2a, 0xcd, 0x96, 0xcb, 0xe5,
|
||||
0x0d, 0xc7, 0x71, 0x0e, 0xf1, 0x7c, 0x4a, 0xf1, 0x19, 0xaa, 0x56, 0x2a, 0x95, 0x99, 0xdf, 0x00,
|
||||
0x4c, 0x61, 0xb1, 0x7d, 0xdc, 0x9f, 0xa1, 0x21, 0x14, 0x42, 0x57, 0xa2, 0x50, 0xc6, 0x9e, 0xa0,
|
||||
0x86, 0xef, 0xfb, 0x93, 0x99, 0x20, 0x86, 0x61, 0xcc, 0x63, 0x81, 0x0b, 0x68, 0x00, 0x1d, 0x03,
|
||||
0xb8, 0x8c, 0xe1, 0x89, 0xc4, 0x94, 0xa2, 0x6d, 0xdb, 0x2b, 0xf8, 0xad, 0x45, 0x20, 0x3c, 0x3e,
|
||||
0xb7, 0x2c, 0x6b, 0x4e, 0xdb, 0x13, 0x81, 0xbc, 0x62, 0x81, 0xcd, 0x71, 0xf3, 0xb1, 0x89, 0x1a,
|
||||
0xe6, 0xbe, 0x11, 0xa6, 0xe5, 0x99, 0x84, 0x6b, 0x40, 0x48, 0x10, 0x04, 0x2f, 0xf5, 0x7a, 0x7d,
|
||||
0x38, 0x4a, 0x9c, 0x23, 0x30, 0x7a, 0xb6, 0xab, 0x9c, 0x78, 0xe6, 0x04, 0x06, 0x47, 0x7c, 0xe7,
|
||||
0x42, 0x51, 0x14, 0x8d, 0x14, 0xe7, 0x88, 0xed, 0x09, 0x73, 0xa6, 0x54, 0x20, 0xf4, 0x82, 0x3b,
|
||||
0x93, 0x9c, 0x68, 0x81, 0x5c, 0xd7, 0x5d, 0x15, 0xdb, 0xaa, 0x4a, 0xd8, 0x58, 0xc2, 0x61, 0x9c,
|
||||
0x78, 0x1d, 0x10, 0x0b, 0x04, 0xb6, 0x5d, 0xe8, 0x40, 0x25, 0x74, 0x67, 0xf0, 0xea, 0x32, 0x7e,
|
||||
0xd7, 0x04, 0xd1, 0xfe, 0x1a, 0xf6, 0x1d, 0x95, 0xd0, 0x75, 0x78, 0x4e, 0x7e, 0x00, 0xba, 0x41,
|
||||
0x54, 0xda, 0x2a, 0x1e, 0x35, 0x25, 0x74, 0xc5, 0x5c, 0x43, 0xc7, 0x56, 0xc3, 0x84, 0xf2, 0x30,
|
||||
0xea, 0x82, 0x60, 0xeb, 0x49, 0x31, 0xac, 0x8f, 0x05, 0xb1, 0x34, 0xa5, 0xad, 0xb4, 0x32, 0x80,
|
||||
0x18, 0xf6, 0x9e, 0xe7, 0x79, 0xd3, 0xaa, 0x67, 0xa9, 0x21, 0x3b, 0xab, 0xa9, 0x1e, 0x58, 0x40,
|
||||
0xb6, 0xc4, 0x66, 0x47, 0xb9, 0x33, 0xb0, 0x8d, 0xb0, 0x9d, 0xb0, 0xad, 0x10, 0xa6, 0x10, 0x6e,
|
||||
0x42, 0x3e, 0xa1, 0x3e, 0x42, 0xbe, 0xa4, 0xd5, 0xef, 0xd8, 0x20, 0x05, 0xc6, 0x5d, 0xb6, 0x79,
|
||||
0x18, 0xe3, 0x02, 0x89, 0x13, 0xcf, 0x9c, 0x48, 0xb8, 0xd8, 0xc5, 0xfb, 0x72, 0xbf, 0x33, 0x4d,
|
||||
0x73, 0x41, 0x0b, 0x46, 0xcf, 0x60, 0xb8, 0x27, 0x39, 0xe3, 0x22, 0x8f, 0x3c, 0x27, 0xa2, 0xae,
|
||||
0x8c, 0xf5, 0xa0, 0x6d, 0x68, 0x11, 0xba, 0x95, 0xb1, 0x0f, 0x6c, 0xe0, 0x01, 0x5a, 0xd3, 0x02,
|
||||
0x32, 0xb9, 0xac, 0x24, 0x96, 0x3e, 0x3d, 0x10, 0x2f, 0x9a, 0x1c, 0x4b, 0x26, 0x9e, 0x9e, 0x60,
|
||||
0xfc, 0x5d, 0x60, 0xdf, 0x40, 0xa5, 0x76, 0x94, 0xf1, 0x63, 0x79, 0x9f, 0x00, 0xe5, 0x07, 0x63,
|
||||
0xb8, 0xb8, 0x78, 0x1a, 0x96, 0x8b, 0x57, 0xf4, 0x20, 0x0d, 0xcb, 0xed, 0x0f, 0x4d, 0x1a, 0xf6,
|
||||
0x05, 0x34, 0x6e, 0x0d, 0x75, 0xfe, 0xd5, 0x32, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0xce, 0x00, 0x00, 0x02, 0xac, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0x3b, 0x6b, 0x9a,
|
||||
0x61, 0x14, 0x0e, 0x94, 0x2e, 0x6d, 0x62, 0xbb, 0xf4, 0x2f, 0xa4, 0xdd, 0x45, 0xc5, 0xcb, 0x58,
|
||||
0x90, 0x80, 0x50, 0x54, 0x74, 0xd3, 0x29, 0x31, 0xba, 0x74, 0x10, 0xa4, 0x43, 0xd5, 0x6e, 0x5e,
|
||||
0x36, 0xaf, 0xa9, 0x0a, 0x5e, 0x28, 0x1d, 0x34, 0x1a, 0xe2, 0x1d, 0xb2, 0x28, 0x54, 0x51, 0x68,
|
||||
0x05, 0x45, 0x97, 0xa4, 0x7b, 0x6b, 0xdb, 0xa1, 0x69, 0x85, 0x74, 0x09, 0xfd, 0xde, 0x9e, 0x47,
|
||||
0x62, 0x11, 0x49, 0xf4, 0xd3, 0xda, 0x4e, 0x15, 0x0e, 0xea, 0xf7, 0x9e, 0x73, 0x9e, 0xf7, 0x7d,
|
||||
0xce, 0x73, 0xce, 0xfb, 0x6d, 0x6c, 0xfc, 0xff, 0xfc, 0x8b, 0x0f, 0x63, 0x6c, 0x93, 0xec, 0xd1,
|
||||
0x95, 0xdd, 0x5d, 0x77, 0xf2, 0x7b, 0xd9, 0x6c, 0xf6, 0xc8, 0xe7, 0xf3, 0x7d, 0x72, 0x38, 0x1c,
|
||||
0x97, 0x7b, 0x7b, 0x7b, 0x0c, 0x86, 0xdf, 0xf4, 0x6c, 0x78, 0x78, 0x78, 0x98, 0x23, 0x1f, 0xc1,
|
||||
0x1f, 0x81, 0x14, 0x0a, 0x85, 0x17, 0x2e, 0x97, 0xeb, 0x87, 0x4c, 0x26, 0x63, 0x42, 0xa1, 0x90,
|
||||
0xc9, 0xe5, 0x72, 0xa6, 0xd5, 0x6a, 0xc7, 0x36, 0xfd, 0xcc, 0xed, 0x76, 0x5f, 0x1c, 0x1f, 0x1f,
|
||||
0xdb, 0x57, 0x02, 0xc9, 0x64, 0x32, 0xaf, 0x0d, 0x06, 0x03, 0x87, 0x64, 0x16, 0x8b, 0x85, 0x8b,
|
||||
0x44, 0x22, 0xa7, 0x95, 0x4a, 0x25, 0xd4, 0xef, 0xf7, 0x9f, 0xc0, 0xca, 0xe5, 0xf2, 0x41, 0x34,
|
||||
0x1a, 0x3d, 0xdd, 0xdf, 0xdf, 0x1f, 0xfb, 0xc0, 0x37, 0x9d, 0x4e, 0xbf, 0x5a, 0xfa, 0x24, 0x08,
|
||||
0x14, 0x8b, 0xc5, 0x2c, 0x1c, 0x0e, 0x9f, 0xb7, 0xdb, 0xed, 0xc7, 0x37, 0xf9, 0xb6, 0x5a, 0x2d,
|
||||
0x65, 0x28, 0x14, 0xfa, 0x06, 0x5f, 0xa3, 0xd1, 0xc8, 0xf1, 0x3e, 0x19, 0x6a, 0x02, 0xba, 0xb0,
|
||||
0x4b, 0x4a, 0x70, 0x6e, 0xb7, 0xdb, 0x4f, 0x6c, 0x36, 0xdb, 0xd7, 0x79, 0x06, 0x1f, 0x80, 0x21,
|
||||
0x06, 0x34, 0xf2, 0xaa, 0x19, 0x15, 0xf7, 0x08, 0xfc, 0x9b, 0xcd, 0x66, 0x0e, 0x27, 0xb1, 0x5a,
|
||||
0xad, 0xdf, 0x89, 0x26, 0xd6, 0xe9, 0x74, 0xae, 0x35, 0xac, 0xc1, 0x87, 0x7c, 0x77, 0x40, 0x23,
|
||||
0x6a, 0x46, 0xe2, 0xc9, 0x2e, 0x04, 0x82, 0xba, 0xb0, 0x33, 0xd4, 0x04, 0xff, 0x91, 0xa4, 0xd7,
|
||||
0xeb, 0xb1, 0xd1, 0x68, 0x74, 0xad, 0x61, 0x0d, 0x3e, 0xf0, 0xa5, 0x9a, 0x9d, 0x21, 0xd6, 0xef,
|
||||
0xf7, 0x0f, 0x17, 0xd1, 0xb6, 0x45, 0x34, 0x5c, 0x2a, 0x14, 0x0a, 0x56, 0x2a, 0x95, 0x82, 0xcb,
|
||||
0x02, 0x51, 0xcc, 0x01, 0x4e, 0x04, 0xe9, 0xcf, 0xed, 0x33, 0x5a, 0x7c, 0x48, 0x3d, 0xc2, 0x69,
|
||||
0x34, 0x1a, 0x06, 0x65, 0x2d, 0x0b, 0x34, 0x18, 0x0c, 0x34, 0x6a, 0xb5, 0x9a, 0x99, 0x4c, 0x26,
|
||||
0x8e, 0x72, 0x6d, 0xcf, 0x03, 0xda, 0x06, 0x10, 0x9c, 0x29, 0x48, 0xbd, 0x2c, 0x50, 0xb7, 0xdb,
|
||||
0xd5, 0x21, 0x16, 0x39, 0x16, 0x01, 0x6d, 0x4e, 0xa8, 0xa3, 0x22, 0xaf, 0x44, 0x1d, 0x84, 0x84,
|
||||
0x1c, 0x0b, 0x95, 0x37, 0x11, 0x43, 0x2c, 0x16, 0x3b, 0x5b, 0x41, 0x0c, 0xef, 0x11, 0x8b, 0xd1,
|
||||
0xc4, 0x47, 0xde, 0x39, 0x14, 0x14, 0x52, 0x45, 0x33, 0xf2, 0x95, 0x77, 0xa3, 0xd1, 0x50, 0x51,
|
||||
0xcc, 0x4f, 0xb0, 0x91, 0xcb, 0xe5, 0x32, 0x7c, 0x1a, 0x56, 0x80, 0xa6, 0xc3, 0xce, 0x82, 0xc1,
|
||||
0x20, 0xaf, 0x86, 0x25, 0x95, 0x9d, 0x04, 0x02, 0x81, 0x11, 0x62, 0xbc, 0x5e, 0x2f, 0x1a, 0xf6,
|
||||
0x3e, 0xaf, 0xe9, 0x80, 0x31, 0x32, 0x19, 0x41, 0xe8, 0xf8, 0x66, 0xb3, 0xb9, 0x73, 0x93, 0x2f,
|
||||
0x4e, 0x02, 0x10, 0xf8, 0x4a, 0x24, 0x12, 0x46, 0xf3, 0xf0, 0xdd, 0x52, 0xf3, 0x0e, 0x03, 0x12,
|
||||
0xb3, 0x0b, 0xbb, 0x04, 0x8d, 0x18, 0xa0, 0x94, 0xe4, 0x25, 0x64, 0x0f, 0x45, 0x12, 0x65, 0x11,
|
||||
0xd4, 0x11, 0x74, 0xc1, 0x07, 0x20, 0xf8, 0xd6, 0xeb, 0xf5, 0x1c, 0xad, 0xbd, 0xa9, 0xd7, 0xeb,
|
||||
0xcf, 0xe8, 0x64, 0xb7, 0x79, 0x81, 0xe5, 0xf3, 0xf9, 0xe7, 0x1e, 0x8f, 0xe7, 0x02, 0x35, 0x43,
|
||||
0x12, 0x28, 0x0a, 0x3d, 0x06, 0x9b, 0x5c, 0x13, 0xa8, 0x09, 0xe8, 0xaa, 0x56, 0xab, 0x6f, 0x75,
|
||||
0x3a, 0xdd, 0x78, 0x63, 0x22, 0x91, 0x88, 0x29, 0x95, 0x4a, 0x96, 0x4a, 0xa5, 0x3e, 0x0e, 0x87,
|
||||
0xc3, 0x07, 0x7c, 0x87, 0xac, 0x00, 0xb3, 0x0b, 0x4a, 0x72, 0x3a, 0x9d, 0xb8, 0xf8, 0xb8, 0xdd,
|
||||
0xdd, 0x5d, 0x0e, 0x12, 0xc6, 0x33, 0x14, 0x7e, 0x52, 0x93, 0x62, 0xb1, 0x58, 0x97, 0x4a, 0xa5,
|
||||
0xe3, 0x0d, 0xc0, 0x40, 0x67, 0x3c, 0x1e, 0xff, 0xc2, 0x1b, 0x6c, 0x0a, 0xf4, 0x0e, 0xa6, 0xc7,
|
||||
0xd5, 0x55, 0xbe, 0x35, 0xbb, 0x5e, 0xab, 0xd5, 0x9e, 0xaa, 0x54, 0xaa, 0xdf, 0x40, 0xd3, 0x60,
|
||||
0xeb, 0xbe, 0xf6, 0x6f, 0x25, 0x93, 0xc9, 0x0f, 0x48, 0x3e, 0x0b, 0xb6, 0xf6, 0x17, 0x18, 0xd0,
|
||||
0x84, 0x13, 0xcc, 0x82, 0xfd, 0x95, 0xb7, 0x25, 0x80, 0x25, 0x12, 0x89, 0xcf, 0xd3, 0x60, 0xbf,
|
||||
0x00, 0xd9, 0x6f, 0x34, 0xee, 0x2c, 0x55, 0x33, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
|
||||
@@ -8,35 +8,52 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0xa9, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0xcb, 0x4a, 0xc3,
|
||||
0x40, 0x14, 0xad, 0x45, 0x97, 0xbe, 0x36, 0x82, 0xfe, 0x43, 0x4a, 0xf3, 0x22, 0x6a, 0x36, 0xf9,
|
||||
0x07, 0xc1, 0x5a, 0x28, 0x7e, 0x85, 0x8f, 0xe2, 0x87, 0x58, 0x7f, 0x42, 0x6b, 0xab, 0x4b, 0xf1,
|
||||
0x07, 0x7c, 0x2c, 0xf4, 0x1f, 0x44, 0x88, 0xad, 0x76, 0xa5, 0x58, 0x6c, 0x3d, 0x07, 0xee, 0x22,
|
||||
0x0c, 0x09, 0x99, 0x89, 0x66, 0x23, 0x06, 0x0e, 0x09, 0x33, 0x73, 0xef, 0x99, 0x73, 0x5f, 0x6d,
|
||||
0xa5, 0xf2, 0xff, 0xfc, 0x89, 0xc7, 0x75, 0xdd, 0x45, 0xcf, 0xf3, 0x76, 0x1c, 0xc7, 0x39, 0xc1,
|
||||
0xf7, 0x05, 0xc1, 0x6f, 0xa0, 0x11, 0x04, 0xc1, 0xc2, 0x6f, 0x10, 0xcc, 0xc1, 0xd9, 0x11, 0xde,
|
||||
0x6f, 0xc0, 0x14, 0x88, 0x81, 0x5b, 0x41, 0x2c, 0x6b, 0xaf, 0x40, 0x3b, 0x8a, 0xa2, 0xd9, 0x42,
|
||||
0x24, 0x96, 0x65, 0x2d, 0xc3, 0xc1, 0x35, 0x30, 0x01, 0xce, 0x40, 0xb8, 0x8e, 0xe5, 0x99, 0xc4,
|
||||
0x91, 0xaa, 0x6d, 0xdb, 0x1b, 0xd8, 0xeb, 0x92, 0x10, 0x8a, 0xaf, 0xea, 0xf5, 0xfa, 0x92, 0xb1,
|
||||
0x12, 0x21, 0x79, 0x87, 0x83, 0x66, 0xde, 0x79, 0x5c, 0xa2, 0x85, 0xb3, 0x1f, 0x24, 0x33, 0x52,
|
||||
0x26, 0xe1, 0x9a, 0xa4, 0x91, 0x48, 0xb8, 0xa6, 0x19, 0x64, 0x54, 0x76, 0xa0, 0x9d, 0x78, 0xe6,
|
||||
0x04, 0x06, 0xa7, 0x19, 0xfb, 0xa9, 0x44, 0xb2, 0x77, 0xce, 0x9c, 0x69, 0x15, 0x08, 0x55, 0xd0,
|
||||
0x91, 0xe4, 0xc4, 0x88, 0xc8, 0xf7, 0xfd, 0x4d, 0xb1, 0x6d, 0xe8, 0x84, 0x8d, 0x25, 0x1c, 0x2b,
|
||||
0x89, 0xd7, 0x22, 0x62, 0x81, 0x60, 0x6f, 0x00, 0x1c, 0xeb, 0x84, 0xee, 0x12, 0xaa, 0x6e, 0x54,
|
||||
0xc7, 0x79, 0x48, 0x9c, 0xbf, 0x83, 0x7d, 0x5f, 0x27, 0x74, 0x7d, 0xf6, 0xc9, 0x0f, 0x88, 0xee,
|
||||
0x11, 0x95, 0x9e, 0x8e, 0xa2, 0x8e, 0x84, 0xae, 0x5a, 0x6a, 0xe8, 0x38, 0x6a, 0xe8, 0x88, 0xcd,
|
||||
0x68, 0x4a, 0x04, 0xdb, 0x50, 0x8a, 0x61, 0x3b, 0x97, 0x88, 0xa5, 0x29, 0x63, 0xa5, 0x5b, 0x80,
|
||||
0x88, 0x61, 0x1f, 0x86, 0x61, 0x38, 0xaf, 0xdb, 0x4b, 0x6d, 0xb9, 0x59, 0x4b, 0x97, 0x08, 0x24,
|
||||
0xbb, 0x62, 0xb3, 0xaf, 0x3d, 0x19, 0x38, 0x46, 0x38, 0x4e, 0x38, 0x56, 0xd2, 0xc8, 0x32, 0x48,
|
||||
0xbe, 0x80, 0x11, 0x42, 0xbe, 0x66, 0x34, 0xef, 0x38, 0x20, 0x85, 0x8c, 0xb7, 0xec, 0xb1, 0x19,
|
||||
0x95, 0x02, 0xa9, 0x32, 0x27, 0x12, 0x2e, 0xaa, 0x1c, 0xc9, 0xfb, 0xb1, 0x56, 0xab, 0xad, 0x18,
|
||||
0x91, 0x51, 0x19, 0x0c, 0x0f, 0x25, 0x67, 0x74, 0xf2, 0xc2, 0x3e, 0x11, 0x0c, 0x64, 0x6d, 0x08,
|
||||
0xec, 0x01, 0xab, 0xc0, 0x83, 0xac, 0x8d, 0x71, 0x81, 0x67, 0x60, 0xcb, 0x88, 0x90, 0xc9, 0x65,
|
||||
0x25, 0xb1, 0xf4, 0xa9, 0x40, 0x54, 0x74, 0xb8, 0x96, 0x4c, 0x3c, 0x95, 0x60, 0xfd, 0x33, 0xd1,
|
||||
0x5f, 0x63, 0xad, 0x71, 0x54, 0xf0, 0xc7, 0xf2, 0x49, 0x69, 0xe6, 0x72, 0xc8, 0x18, 0x2e, 0x3a,
|
||||
0x57, 0xc9, 0x4a, 0x51, 0x45, 0x05, 0x2a, 0x59, 0x69, 0x7f, 0x68, 0x54, 0xb2, 0x6f, 0xb3, 0xb9,
|
||||
0x02, 0xae, 0xbf, 0xa2, 0x7e, 0x91, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
|
||||
0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x02, 0xbd, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0x3b, 0x8b, 0x5a,
|
||||
0x41, 0x14, 0x5e, 0x08, 0x69, 0x92, 0xdd, 0x4d, 0x8a, 0x0d, 0xf9, 0x07, 0x9b, 0xf4, 0xa2, 0xe2,
|
||||
0xa3, 0x0c, 0xc8, 0x82, 0x10, 0x54, 0xb4, 0x52, 0x2b, 0x9f, 0x4d, 0xda, 0x14, 0x51, 0xd3, 0xf9,
|
||||
0xe8, 0x7c, 0x6e, 0x54, 0xf0, 0x41, 0x48, 0xe1, 0x6b, 0xf1, 0x2d, 0x56, 0x0a, 0x51, 0x14, 0x12,
|
||||
0x41, 0xd0, 0x66, 0x4d, 0x61, 0x97, 0x98, 0xa4, 0xd9, 0x10, 0xd8, 0x34, 0x4b, 0xee, 0x64, 0x3e,
|
||||
0xf1, 0x86, 0x1b, 0x61, 0xf5, 0xea, 0x9a, 0x54, 0xb9, 0x70, 0xf0, 0x3a, 0x73, 0xe6, 0x7c, 0x33,
|
||||
0xe7, 0xfb, 0xce, 0x99, 0xbb, 0xb7, 0xf7, 0xff, 0xf9, 0x17, 0x0f, 0x21, 0x64, 0x9f, 0xda, 0xe3,
|
||||
0x85, 0xdd, 0xdd, 0x75, 0xf0, 0x7b, 0xf9, 0x7c, 0xfe, 0xcc, 0xef, 0xf7, 0x7f, 0x76, 0x3a, 0x9d,
|
||||
0x57, 0x66, 0xb3, 0x99, 0xc0, 0xf0, 0x4e, 0xc7, 0x66, 0xb9, 0x5c, 0xae, 0x40, 0x7d, 0x0e, 0x6f,
|
||||
0x04, 0x52, 0x2e, 0x97, 0x5f, 0xba, 0xdd, 0xee, 0x1f, 0x52, 0xa9, 0x94, 0x08, 0x04, 0x02, 0x22,
|
||||
0x93, 0xc9, 0x88, 0x46, 0xa3, 0x99, 0x1b, 0x77, 0xcc, 0xe3, 0xf1, 0x5c, 0x16, 0x8b, 0x45, 0xc7,
|
||||
0x56, 0x20, 0xd9, 0x6c, 0xf6, 0x8d, 0xc1, 0x60, 0x60, 0x10, 0xcc, 0x6e, 0xb7, 0x33, 0xd1, 0x68,
|
||||
0xf4, 0xbc, 0x5e, 0xaf, 0x87, 0x47, 0xa3, 0xd1, 0x53, 0x58, 0xad, 0x56, 0x3b, 0x8d, 0xc5, 0x62,
|
||||
0xe7, 0x56, 0xab, 0x75, 0xee, 0x03, 0xdf, 0x4c, 0x26, 0xf3, 0x7a, 0xe3, 0x93, 0x60, 0xa1, 0x48,
|
||||
0x24, 0x22, 0x91, 0x48, 0xe4, 0xa2, 0xdf, 0xef, 0x3f, 0x59, 0xa4, 0xf1, 0x88, 0x9a, 0x60, 0x61,
|
||||
0x47, 0x18, 0xeb, 0xf5, 0x7a, 0x8a, 0x70, 0x38, 0xfc, 0x0d, 0xbe, 0x46, 0xa3, 0x91, 0xe1, 0x7d,
|
||||
0x32, 0x70, 0x82, 0x74, 0x61, 0x97, 0x34, 0xc0, 0xc5, 0x6c, 0x36, 0x7b, 0xc0, 0xce, 0x35, 0x9b,
|
||||
0xcd, 0x84, 0x5e, 0xaf, 0x27, 0x30, 0xbc, 0xb3, 0xe3, 0xf0, 0x01, 0x18, 0xd6, 0x20, 0x8d, 0xbc,
|
||||
0x38, 0xa3, 0xe4, 0x9e, 0x21, 0xff, 0x36, 0x9b, 0x8d, 0x61, 0x4f, 0xc2, 0x05, 0x42, 0x30, 0x18,
|
||||
0x17, 0x08, 0x0f, 0xf5, 0x3d, 0x41, 0x1a, 0xc1, 0x19, 0x15, 0x4f, 0x7e, 0x2d, 0x10, 0xd4, 0x85,
|
||||
0x40, 0xe0, 0x64, 0x79, 0x6e, 0x15, 0x10, 0x1e, 0xca, 0xd9, 0x04, 0x73, 0x81, 0x40, 0x60, 0xb6,
|
||||
0x2e, 0x6d, 0x07, 0x0e, 0x87, 0xe3, 0x4a, 0x2e, 0x97, 0x93, 0x6a, 0xb5, 0x1a, 0x02, 0x0f, 0x08,
|
||||
0xc8, 0xda, 0x60, 0x30, 0x98, 0xb0, 0x40, 0x78, 0xe7, 0xce, 0xc1, 0x97, 0xae, 0x39, 0xc5, 0x89,
|
||||
0x20, 0xfd, 0x95, 0x75, 0x46, 0x27, 0x1f, 0xd1, 0x1a, 0x61, 0xd4, 0x6a, 0x35, 0x81, 0xb2, 0x40,
|
||||
0x3a, 0xf8, 0x60, 0x83, 0x5f, 0x67, 0xf0, 0x81, 0xef, 0x78, 0x3c, 0x56, 0xab, 0x54, 0x2a, 0x62,
|
||||
0xb1, 0x58, 0x18, 0xfa, 0xff, 0x78, 0x15, 0xd0, 0x31, 0x80, 0xe0, 0x4c, 0x17, 0xa9, 0x36, 0x05,
|
||||
0x1a, 0x0e, 0x87, 0x5a, 0xac, 0x45, 0x8c, 0x75, 0x40, 0xfb, 0x6c, 0xea, 0x68, 0x9d, 0x6c, 0x95,
|
||||
0x3a, 0x08, 0x09, 0x31, 0xd6, 0x2a, 0x8f, 0x15, 0x43, 0x3c, 0x1e, 0x9f, 0x6c, 0x21, 0x86, 0x0f,
|
||||
0x98, 0x43, 0x6b, 0xe2, 0x23, 0xef, 0x02, 0x08, 0x85, 0x54, 0x51, 0x8c, 0x7c, 0x81, 0x3a, 0x9d,
|
||||
0x8e, 0x92, 0xae, 0xf9, 0x89, 0x6c, 0x14, 0x0a, 0x85, 0x2c, 0x9f, 0x82, 0x3d, 0x44, 0xd1, 0x21,
|
||||
0x58, 0x28, 0x14, 0xe2, 0x55, 0xb0, 0xd3, 0xe9, 0xf4, 0x61, 0x30, 0x18, 0xfc, 0x8e, 0x35, 0x3e,
|
||||
0x9f, 0x0f, 0x05, 0x7b, 0x9f, 0x57, 0x77, 0x40, 0x1b, 0x61, 0x5b, 0x10, 0x2a, 0xbe, 0xdb, 0xed,
|
||||
0x9e, 0x5c, 0xd7, 0x82, 0x70, 0x12, 0x80, 0xc0, 0x57, 0x2c, 0x16, 0x13, 0xda, 0x0f, 0xdf, 0x6f,
|
||||
0xd4, 0xef, 0xd0, 0x20, 0xd1, 0xbb, 0xb0, 0x4b, 0xa4, 0x11, 0x0d, 0x94, 0x06, 0x79, 0x05, 0xd9,
|
||||
0x43, 0x91, 0x54, 0x2c, 0x51, 0xf0, 0x88, 0x74, 0xc1, 0x07, 0x20, 0xf8, 0xd5, 0xe9, 0x74, 0x0c,
|
||||
0x9d, 0x7b, 0xdb, 0x6e, 0xb7, 0x9f, 0xd3, 0xcd, 0xdc, 0xe6, 0x05, 0x56, 0x2a, 0x95, 0x5e, 0x78,
|
||||
0xbd, 0xde, 0x4b, 0x70, 0x86, 0x20, 0x50, 0x14, 0x6a, 0x0c, 0xc6, 0x5e, 0x13, 0xe0, 0x04, 0xe9,
|
||||
0x6a, 0x34, 0x1a, 0xef, 0xb4, 0x5a, 0xed, 0x7c, 0x63, 0x42, 0xa1, 0x90, 0x28, 0x14, 0x0a, 0x92,
|
||||
0x4e, 0xa7, 0x3f, 0x71, 0x53, 0xbf, 0x96, 0x33, 0xf4, 0x2e, 0x28, 0xc9, 0xe5, 0x72, 0xe1, 0xe2,
|
||||
0x63, 0x4c, 0x26, 0x13, 0x03, 0x09, 0x63, 0x0c, 0xc4, 0xb3, 0x9c, 0x54, 0x2a, 0x95, 0xb6, 0x44,
|
||||
0x22, 0xf9, 0x5d, 0x5f, 0x48, 0x67, 0x22, 0x91, 0xf8, 0xca, 0x1b, 0x8c, 0x03, 0x7a, 0x07, 0xdd,
|
||||
0x63, 0x71, 0x95, 0x1f, 0x2c, 0xcf, 0xb7, 0x5a, 0xad, 0x67, 0x4a, 0xa5, 0xf2, 0x8f, 0x62, 0x66,
|
||||
0xc1, 0x76, 0x7d, 0xed, 0xdf, 0x4a, 0xa5, 0x52, 0x1f, 0x11, 0x7c, 0x19, 0x6c, 0xe7, 0x1f, 0x30,
|
||||
0x48, 0x13, 0x4e, 0xb0, 0x0c, 0xf6, 0x57, 0xbe, 0x96, 0x00, 0x96, 0x4c, 0x26, 0xbf, 0x70, 0xc1,
|
||||
0x7e, 0x01, 0x69, 0x5a, 0xc4, 0x6b, 0xd2, 0x18, 0xe5, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE zoom_in_xpm[1] = {{ png, sizeof( png ), "zoom_in_xpm" }};
|
||||
|
||||
@@ -8,34 +8,52 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0x9f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0x4b, 0x4a, 0xc3,
|
||||
0x50, 0x14, 0xad, 0x41, 0x87, 0xfe, 0x26, 0x82, 0xee, 0x21, 0x21, 0x6d, 0x12, 0xa2, 0x66, 0x92,
|
||||
0x3d, 0x08, 0xd6, 0x42, 0x71, 0x15, 0x7e, 0x8a, 0x0b, 0xb1, 0x6e, 0x42, 0x6b, 0xab, 0x43, 0x71,
|
||||
0x03, 0x7e, 0x06, 0xba, 0x07, 0x11, 0x62, 0xab, 0x1d, 0x29, 0x16, 0x5b, 0xcf, 0x81, 0x3b, 0x08,
|
||||
0x6f, 0xd2, 0xfb, 0xa2, 0x99, 0x88, 0x0f, 0x0e, 0x49, 0x5f, 0xdf, 0x7d, 0xe7, 0x9e, 0xfb, 0x6b,
|
||||
0x2b, 0x95, 0xff, 0xf5, 0x27, 0x56, 0x10, 0x04, 0x8b, 0x61, 0x18, 0xee, 0xd4, 0x6a, 0xb5, 0x13,
|
||||
0xbc, 0x5f, 0x10, 0x7c, 0x07, 0xea, 0x71, 0x1c, 0x2f, 0xfc, 0x06, 0xc1, 0x1c, 0x2e, 0x3b, 0xc2,
|
||||
0xf3, 0x0d, 0x98, 0x00, 0x19, 0x70, 0x2b, 0xc8, 0x64, 0xef, 0x15, 0x68, 0xa5, 0x69, 0x3a, 0x5b,
|
||||
0x88, 0xc4, 0x75, 0xdd, 0x65, 0x5c, 0x70, 0x0d, 0x8c, 0x81, 0x33, 0x10, 0xae, 0x63, 0x7b, 0x26,
|
||||
0x77, 0xc4, 0xa9, 0x56, 0xab, 0x1b, 0xf8, 0xae, 0x43, 0x42, 0x28, 0xbe, 0xf2, 0x7d, 0x7f, 0xc9,
|
||||
0x5a, 0x89, 0x90, 0xbc, 0xe3, 0x82, 0xc6, 0xb4, 0xf3, 0x70, 0xa2, 0x89, 0xb3, 0x1f, 0x24, 0xb3,
|
||||
0x52, 0x26, 0xe1, 0x1a, 0x6b, 0x48, 0x0c, 0x32, 0x2a, 0x3b, 0x50, 0x27, 0x9e, 0x39, 0x81, 0xc1,
|
||||
0x69, 0x81, 0x9c, 0x9e, 0x33, 0x67, 0xaa, 0x02, 0xa1, 0x0a, 0x7a, 0x26, 0x39, 0xb1, 0x5a, 0x51,
|
||||
0x14, 0x6d, 0x8a, 0x6d, 0x5d, 0x13, 0x02, 0x96, 0x70, 0x66, 0x24, 0x5e, 0xbb, 0x1c, 0xd8, 0xf6,
|
||||
0x81, 0x63, 0x8d, 0xfc, 0x4b, 0xa8, 0xba, 0xc9, 0x7d, 0x9e, 0x68, 0x90, 0x3b, 0x7f, 0x07, 0xfb,
|
||||
0x9e, 0x26, 0x74, 0x3d, 0xf6, 0xc9, 0x0f, 0x88, 0xee, 0x11, 0x95, 0xae, 0x46, 0x51, 0x5b, 0x42,
|
||||
0xe7, 0x94, 0x1a, 0x3a, 0x8e, 0x1a, 0x7a, 0xc8, 0x66, 0xb4, 0x65, 0x81, 0x6d, 0x22, 0xc5, 0xb0,
|
||||
0x3d, 0xf5, 0x30, 0x4b, 0x53, 0xc6, 0x4a, 0xa7, 0x00, 0x11, 0xc3, 0x3e, 0x48, 0x92, 0x64, 0x5e,
|
||||
0xdb, 0x0f, 0x2d, 0xf1, 0xac, 0x69, 0x41, 0xb2, 0x2b, 0x36, 0xfb, 0x6a, 0xcf, 0x38, 0x46, 0x38,
|
||||
0x4e, 0x38, 0x56, 0x34, 0x64, 0x42, 0xf2, 0x05, 0x0c, 0x11, 0xf2, 0x35, 0xab, 0x30, 0x70, 0x40,
|
||||
0x0a, 0x19, 0xbd, 0xec, 0xb2, 0x19, 0x8d, 0x02, 0x71, 0x98, 0x13, 0x09, 0x17, 0x2b, 0x6f, 0x28,
|
||||
0xcf, 0x47, 0xcf, 0xf3, 0x56, 0xac, 0xc8, 0xa8, 0x0c, 0x86, 0x87, 0x92, 0x33, 0x5e, 0xf2, 0xc2,
|
||||
0x3e, 0x11, 0xf4, 0x65, 0x6f, 0x00, 0xec, 0x01, 0xab, 0xc0, 0x83, 0xec, 0x8d, 0xe0, 0xc0, 0x33,
|
||||
0xb0, 0x65, 0x45, 0xc8, 0xe4, 0xb2, 0x92, 0x58, 0xfa, 0x54, 0x20, 0x2a, 0xda, 0xdc, 0xcb, 0x27,
|
||||
0x9e, 0x4a, 0xb0, 0xff, 0x99, 0xeb, 0xaf, 0x91, 0x6a, 0x1c, 0x15, 0xfc, 0xb1, 0x7c, 0x32, 0x9a,
|
||||
0xb9, 0x1c, 0x32, 0x86, 0x8b, 0x97, 0x9b, 0x64, 0xa5, 0xa8, 0xa2, 0x02, 0x93, 0xac, 0xb4, 0x3f,
|
||||
0x34, 0x26, 0xd9, 0x37, 0xc7, 0x61, 0xe9, 0x1f, 0x03, 0x13, 0x08, 0xbc, 0x00, 0x00, 0x00, 0x00,
|
||||
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x02, 0xb9, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0xdd, 0x6b, 0x52,
|
||||
0x71, 0x18, 0xde, 0x4d, 0x10, 0x7d, 0xac, 0xba, 0x88, 0xfe, 0x83, 0xd5, 0xbd, 0xa0, 0xe2, 0xc7,
|
||||
0x55, 0x92, 0x0c, 0x82, 0xa6, 0xa3, 0xab, 0xda, 0x2e, 0xf2, 0x6b, 0xfb, 0x0b, 0x46, 0xce, 0x2d,
|
||||
0xe8, 0x63, 0x73, 0x35, 0x36, 0xc5, 0xe3, 0xf2, 0x18, 0xfb, 0x20, 0x74, 0x4d, 0x8f, 0x5f, 0x43,
|
||||
0x85, 0x14, 0x4b, 0x61, 0x63, 0x12, 0x11, 0x83, 0x79, 0xb3, 0x15, 0xec, 0x72, 0xae, 0x2e, 0x72,
|
||||
0x5d, 0x2c, 0x0a, 0xd9, 0xf9, 0xf5, 0x7b, 0x6c, 0x67, 0x88, 0xd1, 0xf1, 0xb8, 0xac, 0xab, 0x0e,
|
||||
0xbc, 0x30, 0xc7, 0xf3, 0xbe, 0xcf, 0xfb, 0x3e, 0xef, 0xc7, 0x39, 0x1d, 0x1d, 0xff, 0x9f, 0x7f,
|
||||
0xf1, 0x10, 0x42, 0xce, 0x10, 0xf2, 0xfd, 0xca, 0x4f, 0x23, 0xa7, 0xdb, 0x1c, 0xfc, 0xf3, 0x39,
|
||||
0x8e, 0x0b, 0x46, 0x5d, 0xae, 0xc9, 0xdd, 0x91, 0x11, 0x7b, 0xd5, 0x62, 0x31, 0x11, 0x18, 0xfe,
|
||||
0x76, 0xb9, 0x9e, 0x94, 0xc3, 0xe1, 0x60, 0x84, 0x92, 0x76, 0xfe, 0x11, 0xc9, 0xf2, 0x32, 0x77,
|
||||
0x6f, 0x6c, 0xec, 0xfe, 0x57, 0x95, 0x4a, 0x45, 0x64, 0x32, 0x19, 0x51, 0xab, 0xd5, 0xa4, 0xb7,
|
||||
0xd7, 0x58, 0xb3, 0xfa, 0xff, 0x8d, 0x8f, 0x3f, 0xd8, 0x8f, 0xc7, 0x43, 0x8e, 0x63, 0x91, 0x84,
|
||||
0x42, 0xc1, 0x40, 0x5f, 0xdf, 0x2d, 0x1e, 0xc1, 0x06, 0x07, 0x6d, 0xbc, 0xcf, 0xc7, 0x6c, 0xa6,
|
||||
0xd3, 0x09, 0x66, 0x63, 0xe3, 0xed, 0x0d, 0x58, 0x2a, 0x15, 0x9f, 0x61, 0x59, 0xef, 0xa6, 0xcd,
|
||||
0x66, 0xa9, 0x61, 0x80, 0x5d, 0x5a, 0x0a, 0x3c, 0x6f, 0xb9, 0x12, 0x38, 0xca, 0xe5, 0x72, 0xe2,
|
||||
0xf5, 0xba, 0x2b, 0xc5, 0x62, 0x5e, 0xf7, 0x3b, 0xec, 0xda, 0xda, 0x6b, 0x3d, 0xc3, 0x4c, 0xef,
|
||||
0x01, 0xdb, 0xdf, 0x7f, 0x9b, 0x97, 0x5c, 0x19, 0x7a, 0x02, 0xb9, 0x90, 0x25, 0xc3, 0xb8, 0x2a,
|
||||
0xe5, 0xf2, 0x87, 0x8b, 0xcd, 0x7c, 0x80, 0x01, 0x19, 0x7c, 0x20, 0xa3, 0xa4, 0x9e, 0x85, 0xc3,
|
||||
0x81, 0x28, 0xf4, 0x1f, 0x18, 0xb0, 0xf2, 0x62, 0x95, 0x34, 0x3e, 0xc5, 0x62, 0xa1, 0x1b, 0x32,
|
||||
0xa2, 0x67, 0x1c, 0xb7, 0xc8, 0x35, 0x75, 0xc0, 0x74, 0x21, 0x33, 0xf4, 0xa4, 0xd5, 0xbe, 0xb2,
|
||||
0x2c, 0xb3, 0x05, 0x5f, 0xb7, 0x7b, 0xb2, 0xdc, 0x6c, 0x4f, 0xce, 0x3a, 0x1c, 0x77, 0xab, 0x1a,
|
||||
0x8d, 0x86, 0x24, 0x93, 0x51, 0x0f, 0xfd, 0x7d, 0x21, 0x97, 0xcb, 0x39, 0xa5, 0x18, 0xb0, 0xd4,
|
||||
0x67, 0x06, 0x15, 0x61, 0xf4, 0x45, 0xf7, 0x8c, 0x90, 0x6f, 0x97, 0xe9, 0x8e, 0xf0, 0x46, 0xa3,
|
||||
0x81, 0x60, 0xb2, 0x28, 0x58, 0x66, 0x32, 0x99, 0x88, 0x56, 0xab, 0x15, 0x35, 0x60, 0x80, 0x2d,
|
||||
0x95, 0xde, 0x19, 0x0d, 0x86, 0x1e, 0x62, 0xb5, 0x9a, 0x79, 0x1a, 0xab, 0x4b, 0x8c, 0xa8, 0x0b,
|
||||
0x44, 0x00, 0x53, 0x27, 0x43, 0xab, 0x44, 0xeb, 0xeb, 0x6f, 0x6e, 0xc2, 0x17, 0x31, 0x90, 0xb4,
|
||||
0xe8, 0x89, 0x11, 0xa4, 0xa3, 0x7b, 0x72, 0x2c, 0xe9, 0x30, 0x48, 0x76, 0xfb, 0x50, 0xb5, 0xe9,
|
||||
0xe4, 0x09, 0xc3, 0xe0, 0xf7, 0x7b, 0xb7, 0x5a, 0x1f, 0x06, 0xef, 0x7b, 0xf8, 0xe2, 0x34, 0x49,
|
||||
0x18, 0xef, 0x60, 0x04, 0x0d, 0xc5, 0xa8, 0x62, 0x19, 0xa5, 0x92, 0xac, 0xac, 0xe4, 0xae, 0x53,
|
||||
0x9f, 0x03, 0xa8, 0x11, 0x89, 0x2c, 0x86, 0xa4, 0x5c, 0xe8, 0x4e, 0x2c, 0x1d, 0x32, 0xf3, 0x78,
|
||||
0xa6, 0x25, 0x2d, 0xec, 0xf6, 0x76, 0xe9, 0x12, 0xc5, 0x7e, 0x81, 0xcf, 0xc4, 0xc4, 0x23, 0xba,
|
||||
0xb0, 0x95, 0xf3, 0x92, 0xb2, 0xc3, 0x19, 0x11, 0x4e, 0x10, 0x36, 0x7e, 0x75, 0xf5, 0x55, 0xb7,
|
||||
0x58, 0x25, 0x20, 0x01, 0x16, 0xd5, 0x64, 0xb3, 0xe9, 0x6c, 0x4b, 0x7a, 0xe3, 0x40, 0xe2, 0x76,
|
||||
0x21, 0x4b, 0xc8, 0x88, 0x03, 0x4a, 0x8f, 0xea, 0x53, 0x8c, 0x3d, 0x26, 0x32, 0x95, 0x8a, 0xf9,
|
||||
0xd0, 0x47, 0xc8, 0x05, 0x0c, 0x48, 0x0e, 0xb1, 0x07, 0x99, 0x4c, 0x2a, 0x91, 0xcf, 0xbf, 0x1c,
|
||||
0xa2, 0xea, 0x9c, 0x90, 0x44, 0x96, 0x48, 0x84, 0x87, 0x9d, 0xce, 0x87, 0xfb, 0xe8, 0x19, 0x82,
|
||||
0x60, 0xa2, 0xb0, 0x63, 0x30, 0xe1, 0x35, 0x01, 0x02, 0xc8, 0x45, 0x83, 0x67, 0x05, 0x52, 0x85,
|
||||
0x42, 0x41, 0xf4, 0xfa, 0x6b, 0x64, 0x61, 0xe1, 0xd9, 0x8e, 0x14, 0xe9, 0x8f, 0x7a, 0x86, 0xdb,
|
||||
0x85, 0x49, 0x1a, 0x1d, 0x1d, 0xc6, 0x8b, 0x8f, 0x37, 0x9b, 0xef, 0x10, 0xac, 0xc1, 0xd4, 0xd4,
|
||||
0xe3, 0x72, 0x2c, 0xf6, 0x22, 0x24, 0xf4, 0x24, 0x93, 0x49, 0xc6, 0x95, 0x4a, 0x65, 0x2d, 0x01,
|
||||
0x18, 0xe4, 0x9c, 0x9d, 0x65, 0x3f, 0x49, 0x26, 0xab, 0x23, 0x3d, 0x85, 0x45, 0x3c, 0x7c, 0x95,
|
||||
0xff, 0xb2, 0x27, 0x85, 0x42, 0xd6, 0xae, 0xd3, 0x5d, 0x3d, 0x22, 0xaa, 0x27, 0x6b, 0xf7, 0x37,
|
||||
0xc5, 0xc9, 0xf9, 0x79, 0xff, 0x0e, 0x82, 0x37, 0x92, 0xb5, 0xfd, 0x03, 0x06, 0x32, 0xa1, 0x82,
|
||||
0x46, 0xb2, 0xbf, 0xf2, 0xb5, 0x04, 0xb2, 0xb9, 0x39, 0xf6, 0x63, 0x3d, 0xd9, 0x0f, 0x96, 0x23,
|
||||
0x77, 0x01, 0xad, 0x45, 0x73, 0x44, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
|
||||
0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE zoom_out_xpm[1] = {{ png, sizeof( png ), "zoom_out_xpm" }};
|
||||
|
||||
@@ -8,32 +8,51 @@
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x01, 0x7b, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0xcf, 0x4a, 0xc3,
|
||||
0x40, 0x10, 0xc6, 0xfb, 0xe7, 0x64, 0x95, 0x7a, 0x17, 0x8d, 0x05, 0x8f, 0x91, 0x90, 0xbf, 0x84,
|
||||
0x3c, 0x84, 0x68, 0x29, 0x79, 0x0e, 0x2f, 0x82, 0xa6, 0xbd, 0xf8, 0x0a, 0x1e, 0x6c, 0xf5, 0xea,
|
||||
0x0b, 0x28, 0x56, 0x5f, 0x41, 0x73, 0x10, 0x14, 0x3d, 0xa4, 0x27, 0xb1, 0xfa, 0x12, 0xa2, 0x92,
|
||||
0xfa, 0x0d, 0x8c, 0xb0, 0x2d, 0xd8, 0xee, 0x54, 0x4f, 0xa5, 0x0b, 0x3f, 0x4a, 0xd3, 0x9d, 0xfd,
|
||||
0x66, 0x66, 0xbf, 0xdd, 0xb4, 0x50, 0x98, 0x8f, 0x99, 0x18, 0x8e, 0xe3, 0xac, 0xfb, 0xbe, 0xdf,
|
||||
0xf2, 0x3c, 0xef, 0x1a, 0xdc, 0x83, 0x27, 0x70, 0x05, 0x0e, 0x80, 0xf1, 0x67, 0x01, 0x2c, 0xb2,
|
||||
0xec, 0xba, 0xee, 0x09, 0x3e, 0xbf, 0xc0, 0x00, 0x7c, 0x82, 0x17, 0xf0, 0x0a, 0x3e, 0x94, 0x67,
|
||||
0x1d, 0x9a, 0x3b, 0x75, 0x15, 0x08, 0xce, 0x78, 0xb1, 0x5b, 0xb0, 0x13, 0x45, 0xd1, 0xc2, 0xcf,
|
||||
0xef, 0x96, 0x65, 0x2d, 0x22, 0x89, 0x3a, 0xff, 0x46, 0x73, 0x32, 0x8a, 0x11, 0x57, 0x02, 0x7a,
|
||||
0x20, 0xa7, 0xf6, 0xe0, 0x51, 0x71, 0xcc, 0xf4, 0x12, 0xe6, 0x24, 0x3c, 0x37, 0x0b, 0xc3, 0xb0,
|
||||
0xaa, 0x2d, 0x84, 0xfd, 0x38, 0xe5, 0x2c, 0xf7, 0x05, 0xc9, 0x25, 0x1c, 0xd3, 0xd6, 0x0a, 0xb0,
|
||||
0x6d, 0xbb, 0x46, 0x7d, 0x87, 0xd8, 0x0d, 0x65, 0x2b, 0x68, 0x44, 0x11, 0x71, 0x29, 0xef, 0xa7,
|
||||
0xa1, 0x93, 0x19, 0x39, 0x69, 0x00, 0xa1, 0x6d, 0xe9, 0xbe, 0x22, 0xa6, 0xa1, 0xdd, 0x09, 0xb6,
|
||||
0x2d, 0x39, 0xa9, 0x22, 0x15, 0x32, 0x4d, 0x73, 0x89, 0x2a, 0x82, 0xe0, 0xa5, 0x8e, 0xd0, 0x23,
|
||||
0x59, 0x58, 0x58, 0xc9, 0x21, 0x57, 0x32, 0xca, 0x3b, 0x9c, 0xb8, 0xf2, 0x9b, 0xd0, 0x03, 0xe8,
|
||||
0x4b, 0x84, 0xe0, 0xb4, 0x55, 0xe5, 0xac, 0xa9, 0x1c, 0x8f, 0xab, 0xa8, 0xcb, 0x41, 0x15, 0xe1,
|
||||
0x91, 0xe8, 0x8e, 0x88, 0xd0, 0x1a, 0x1b, 0x3a, 0x66, 0x68, 0x48, 0x84, 0x70, 0x78, 0xb7, 0x54,
|
||||
0x21, 0x7c, 0x3f, 0x9b, 0x94, 0x99, 0xc1, 0x66, 0x48, 0x27, 0x1c, 0xd4, 0xa1, 0x11, 0xc7, 0x71,
|
||||
0x99, 0x5a, 0xce, 0x42, 0x39, 0x12, 0xdd, 0xd4, 0x69, 0x43, 0x9b, 0x03, 0x92, 0x29, 0x4d, 0x71,
|
||||
0xae, 0xbb, 0xb9, 0x55, 0xbe, 0xe7, 0x72, 0x16, 0x2b, 0x49, 0x4c, 0x01, 0xa7, 0x45, 0xd2, 0x4b,
|
||||
0xb5, 0xc7, 0x19, 0xa6, 0xb4, 0x67, 0x74, 0x91, 0x6a, 0x74, 0x63, 0x57, 0x7c, 0x83, 0x73, 0x65,
|
||||
0x1d, 0xe5, 0x95, 0x40, 0x4e, 0x7a, 0x03, 0xcf, 0xe0, 0xe8, 0xdf, 0x5f, 0x7c, 0x41, 0x10, 0xac,
|
||||
0x61, 0xe1, 0x3d, 0x70, 0x01, 0xee, 0x08, 0xb8, 0xaa, 0x39, 0xff, 0x4b, 0x30, 0x5b, 0xe3, 0x1b,
|
||||
0x66, 0x68, 0xb1, 0xc5, 0xd2, 0xe8, 0x19, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
|
||||
0xae, 0x42, 0x60, 0x82,
|
||||
0xce, 0x00, 0x00, 0x02, 0xae, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x05, 0xc3,
|
||||
0x02, 0x1c, 0x3c, 0x78, 0x30, 0x6c, 0xd6, 0xac, 0x59, 0x47, 0x3b, 0x3b, 0x3b, 0x9f, 0x35, 0x35,
|
||||
0x35, 0x7d, 0x68, 0x6d, 0x6d, 0x7d, 0xdf, 0xd3, 0xd3, 0x73, 0x6f, 0xd1, 0xa2, 0x45, 0x9b, 0x2e,
|
||||
0x5f, 0xbe, 0xac, 0x4c, 0xb1, 0x05, 0x7b, 0xf6, 0xec, 0xb1, 0x9d, 0x36, 0x6d, 0xda, 0x83, 0xd0,
|
||||
0xd0, 0xd0, 0xff, 0xc6, 0xc6, 0xc6, 0x60, 0x6c, 0x69, 0x69, 0xf9, 0xdf, 0xc2, 0xc2, 0x02, 0xcc,
|
||||
0x36, 0x35, 0x35, 0xfd, 0x9f, 0x97, 0x97, 0xf7, 0x77, 0xe1, 0xc2, 0x85, 0xc7, 0x5f, 0xbc, 0x78,
|
||||
0xc1, 0x4d, 0x96, 0x25, 0x6b, 0xd6, 0xac, 0xc9, 0x29, 0x2e, 0x2e, 0xfe, 0x05, 0x32, 0x30, 0x3a,
|
||||
0x3a, 0xfa, 0x5f, 0x7f, 0x7f, 0xff, 0xc3, 0xa5, 0x4b, 0x97, 0xae, 0xdd, 0xb6, 0x6d, 0x5b, 0x2b,
|
||||
0x10, 0xf7, 0xcf, 0x9d, 0x3b, 0x77, 0x67, 0x77, 0x77, 0xf7, 0x5b, 0x0f, 0x0f, 0x0f, 0xb0, 0xe5,
|
||||
0x13, 0x27, 0x4e, 0x7c, 0x77, 0xfc, 0xf8, 0x71, 0x4d, 0x92, 0x2c, 0xd9, 0xb2, 0x65, 0x4b, 0x10,
|
||||
0xd0, 0xa5, 0xbf, 0x41, 0x2e, 0xee, 0xea, 0xea, 0xfa, 0xb0, 0x73, 0xe7, 0xce, 0x70, 0x6c, 0xea,
|
||||
0xfe, 0xff, 0xff, 0xcf, 0x04, 0x74, 0xd0, 0xc4, 0xfc, 0xfc, 0x7c, 0xb0, 0x83, 0x26, 0x4d, 0x9a,
|
||||
0xf4, 0x16, 0x08, 0xf8, 0x88, 0xb2, 0x04, 0xa8, 0x99, 0xbd, 0xaf, 0xaf, 0xef, 0x2d, 0x48, 0xe3,
|
||||
0x84, 0x09, 0x13, 0xde, 0x5c, 0xbd, 0x7a, 0x55, 0x82, 0x90, 0x9e, 0xed, 0xdb, 0xb7, 0x83, 0x1d,
|
||||
0x66, 0x6e, 0x6e, 0xfe, 0x7f, 0xde, 0xbc, 0x79, 0xc7, 0x88, 0xb2, 0x68, 0xfd, 0xfa, 0xf5, 0xfd,
|
||||
0x8e, 0x8e, 0x8e, 0xff, 0x73, 0x72, 0x72, 0xfe, 0x1c, 0x38, 0x70, 0xc0, 0x92, 0xd8, 0x50, 0x00,
|
||||
0xea, 0x9b, 0xe0, 0xec, 0xec, 0xfc, 0x1f, 0xe8, 0xbb, 0xbf, 0x67, 0xcf, 0x9e, 0x25, 0x1c, 0x84,
|
||||
0x40, 0xdf, 0x3c, 0x04, 0xf9, 0x66, 0xce, 0x9c, 0x39, 0x27, 0x49, 0x09, 0x6e, 0x60, 0x48, 0xb0,
|
||||
0xb4, 0xb7, 0xb7, 0xbf, 0x33, 0x31, 0x31, 0xf9, 0x0f, 0x4c, 0x1c, 0x1b, 0x09, 0x29, 0x66, 0xad,
|
||||
0xab, 0xab, 0xfb, 0xe9, 0xe9, 0xe9, 0xf9, 0x1f, 0x98, 0xa4, 0xd3, 0x88, 0xb4, 0x80, 0x09, 0x88,
|
||||
0x05, 0x41, 0x18, 0x68, 0xc1, 0x01, 0x68, 0x5c, 0xdd, 0x83, 0x89, 0x01, 0x31, 0x1b, 0x36, 0x4d,
|
||||
0xf2, 0xe9, 0xe9, 0xe9, 0xff, 0x32, 0x33, 0x33, 0xff, 0x01, 0xd9, 0x32, 0xc4, 0xfa, 0x04, 0x98,
|
||||
0x0a, 0xdf, 0x95, 0x97, 0x97, 0xff, 0x29, 0x2b, 0x2b, 0xfb, 0x0b, 0xb2, 0x28, 0x3c, 0x3c, 0xfc,
|
||||
0x1f, 0x88, 0x0f, 0x4c, 0x28, 0x3f, 0xde, 0xbf, 0x7f, 0xaf, 0x80, 0x4d, 0x93, 0x62, 0x6a, 0x6a,
|
||||
0xea, 0xbf, 0xdc, 0xdc, 0x5c, 0x90, 0x45, 0xe2, 0xc4, 0x06, 0x1b, 0x30, 0xe3, 0x6e, 0x07, 0xa5,
|
||||
0x50, 0x58, 0x5e, 0x83, 0xe1, 0xd9, 0xb3, 0x67, 0x9f, 0xc1, 0xe5, 0x3a, 0x1e, 0xa0, 0x4b, 0x7e,
|
||||
0x07, 0x05, 0x05, 0xfd, 0x3f, 0x73, 0xe6, 0x8c, 0x37, 0xb1, 0x16, 0xdd, 0xbb, 0x77, 0x4f, 0x1d,
|
||||
0x98, 0x78, 0xfe, 0x22, 0x5b, 0x92, 0x96, 0x96, 0xf6, 0x17, 0x98, 0xaf, 0xcc, 0x71, 0x6a, 0x02,
|
||||
0x16, 0x33, 0xaf, 0x40, 0x11, 0xba, 0x78, 0xf1, 0xe2, 0x6d, 0xa4, 0x24, 0x06, 0x60, 0x86, 0xbd,
|
||||
0x83, 0x6c, 0xd1, 0xf4, 0xe9, 0xd3, 0xaf, 0xe2, 0xd5, 0x00, 0xca, 0xfd, 0xa0, 0xfc, 0x50, 0x5f,
|
||||
0x5f, 0xff, 0xfd, 0xf1, 0xe3, 0xc7, 0x42, 0xc4, 0x5a, 0x04, 0xcc, 0xd4, 0xa5, 0xee, 0xee, 0xee,
|
||||
0x60, 0x4b, 0x62, 0x63, 0x63, 0xff, 0x01, 0x13, 0x93, 0x17, 0x5e, 0x0d, 0xcf, 0x9e, 0x3d, 0x13,
|
||||
0x01, 0x59, 0x02, 0xb2, 0x0c, 0x18, 0xf6, 0x57, 0x40, 0xa9, 0x8a, 0xd8, 0x44, 0x01, 0x2c, 0x6c,
|
||||
0x3f, 0x83, 0x2c, 0x9a, 0x32, 0x65, 0xca, 0x1d, 0xa2, 0x5c, 0xb7, 0x72, 0xe5, 0xca, 0x36, 0x60,
|
||||
0x41, 0xfa, 0xcf, 0xc9, 0xc9, 0x09, 0x14, 0x84, 0x57, 0x9f, 0x3c, 0x79, 0x22, 0x4c, 0x6c, 0xa2,
|
||||
0x08, 0x0b, 0x0b, 0xfb, 0xbf, 0x6b, 0xd7, 0xae, 0x58, 0xa2, 0xc3, 0x7c, 0xf9, 0xf2, 0xe5, 0xab,
|
||||
0x43, 0x42, 0x42, 0xfe, 0x99, 0x99, 0x99, 0x81, 0x83, 0x11, 0x68, 0xc8, 0x8e, 0x0b, 0x17, 0x2e,
|
||||
0xf8, 0x00, 0x5d, 0x2e, 0x01, 0xc4, 0xb2, 0xd8, 0xf2, 0xc7, 0xfd, 0xfb, 0xf7, 0x35, 0xf6, 0xef,
|
||||
0xdf, 0xff, 0x98, 0xe4, 0x12, 0x7c, 0xf5, 0xea, 0xd5, 0x6d, 0xb5, 0xb5, 0xb5, 0x3f, 0x60, 0xd5,
|
||||
0x42, 0x60, 0x60, 0xe0, 0xff, 0x8c, 0x8c, 0x0c, 0x70, 0x3e, 0x03, 0x96, 0x69, 0x0f, 0x71, 0x04,
|
||||
0xa1, 0x1c, 0x59, 0xd5, 0xc5, 0xf3, 0xe7, 0xcf, 0x45, 0x97, 0x2d, 0x5b, 0xb6, 0x0e, 0x58, 0x8a,
|
||||
0xbf, 0xa8, 0xaa, 0xaa, 0xfa, 0x9d, 0x92, 0x92, 0x02, 0xb6, 0x68, 0xc1, 0x82, 0x05, 0xf7, 0x68,
|
||||
0x56, 0xd3, 0x02, 0x5d, 0xcb, 0x09, 0xca, 0xd4, 0xa0, 0x12, 0x04, 0x88, 0x99, 0x47, 0xdb, 0x1e,
|
||||
0x74, 0x01, 0x00, 0x27, 0x3b, 0xb2, 0x14, 0x1b, 0x88, 0x5c, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x49,
|
||||
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE zoom_redraw_xpm[1] = {{ png, sizeof( png ), "zoom_redraw_xpm" }};
|
||||
|
||||
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.2 KiB |
@@ -1,315 +1,311 @@
|
||||
/* XPM */
|
||||
static char *icon_kicad[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"128 128 181 2 ",
|
||||
"128 128 177 2 ",
|
||||
" c #A33E03",
|
||||
". c #A44006",
|
||||
"X c #A5430A",
|
||||
"o c #A64710",
|
||||
"O c #A74811",
|
||||
"+ c #A84B15",
|
||||
"@ c #A94E18",
|
||||
"# c #AB521F",
|
||||
"o c #A74912",
|
||||
"O c #A84A13",
|
||||
"+ c #A74E1B",
|
||||
"@ c #A94D19",
|
||||
"# c #AB521D",
|
||||
"$ c #876900",
|
||||
"% c #8A6B00",
|
||||
"& c #8F7000",
|
||||
"* c #947300",
|
||||
"= c #997700",
|
||||
"- c #9C7A00",
|
||||
"; c #A27E00",
|
||||
": c #AC5724",
|
||||
"> c #AE5827",
|
||||
", c #AF5D2C",
|
||||
"< c #B26335",
|
||||
"1 c #B3673A",
|
||||
"2 c #B46A3E",
|
||||
"3 c #B56C41",
|
||||
"4 c #BA7146",
|
||||
"5 c #B77148",
|
||||
"6 c #B9744C",
|
||||
"7 c #B97751",
|
||||
"8 c #BC7C56",
|
||||
"9 c #BD7F5B",
|
||||
"0 c #A68100",
|
||||
"q c #AB8500",
|
||||
"w c #AF8800",
|
||||
"e c #B38B00",
|
||||
"r c #B88F00",
|
||||
"t c #B58F0C",
|
||||
"y c #BD9200",
|
||||
"u c #BC950D",
|
||||
"i c #B79313",
|
||||
"p c #B5931D",
|
||||
"a c #BC9618",
|
||||
"s c #BA9723",
|
||||
"d c #BB9B2D",
|
||||
"f c #BC9F38",
|
||||
"g c #C19600",
|
||||
"h c #C69900",
|
||||
"j c #C89B00",
|
||||
"k c #C39A0A",
|
||||
"l c #C29B13",
|
||||
"z c #C39D1C",
|
||||
"x c #C4A024",
|
||||
"c c #C8A52B",
|
||||
"v c #C2A231",
|
||||
"b c #C7A739",
|
||||
"n c #9B8A4D",
|
||||
"m c #BF825E",
|
||||
"M c #A0925F",
|
||||
"N c #BBA146",
|
||||
"B c #BCA24A",
|
||||
"V c #BFA750",
|
||||
"C c #BF8563",
|
||||
"Z c #B8896D",
|
||||
"A c #A49561",
|
||||
"S c #A79863",
|
||||
"D c #AB9B65",
|
||||
"F c #A3976E",
|
||||
"G c #B0A067",
|
||||
"H c #B4A36A",
|
||||
"J c #B9A76C",
|
||||
"K c #BCAB6E",
|
||||
"L c #C0835F",
|
||||
"P c #C1A440",
|
||||
"I c #CDAE44",
|
||||
"U c #C6AA4A",
|
||||
"Y c #C5AD5A",
|
||||
"T c #CAB053",
|
||||
"R c #CFB55E",
|
||||
"E c #D1B557",
|
||||
"W c #C18664",
|
||||
"Q c #C48865",
|
||||
"! c #C38B6A",
|
||||
"~ c #C38F72",
|
||||
"^ c #C49173",
|
||||
"/ c #C99374",
|
||||
"( c #C6967A",
|
||||
") c #C99678",
|
||||
"_ c #C7997D",
|
||||
"` c #C9997D",
|
||||
"' c #C0AE6F",
|
||||
"] c #C9B366",
|
||||
"[ c #C4B16D",
|
||||
"{ c #D4BC6A",
|
||||
"} c #C1AF70",
|
||||
"| c #CEB971",
|
||||
" . c #C9B778",
|
||||
".. c #D5BF73",
|
||||
"X. c #D3C07D",
|
||||
"o. c #A9A187",
|
||||
"O. c #ADA489",
|
||||
"+. c #B2AA8E",
|
||||
"@. c #ABA692",
|
||||
"#. c #B6AE91",
|
||||
"$. c #B8AF91",
|
||||
"%. c #BCB394",
|
||||
"&. c #B3B3B3",
|
||||
"*. c #BBBBBB",
|
||||
"=. c #C79C83",
|
||||
"-. c #C89F86",
|
||||
";. c #CCA187",
|
||||
":. c #CBA38B",
|
||||
">. c #D2A58B",
|
||||
",. c #D5A88E",
|
||||
"<. c #CEBD84",
|
||||
"1. c #C8BA89",
|
||||
"2. c #CDA790",
|
||||
"3. c #CEA994",
|
||||
"4. c #CDAD9B",
|
||||
"5. c #D3AB94",
|
||||
"6. c #D2AF9A",
|
||||
"7. c #C0B797",
|
||||
"8. c #C4BB9A",
|
||||
"9. c #C9BF9E",
|
||||
"0. c #D3B19D",
|
||||
"q. c #D3B5A3",
|
||||
"w. c #D5B8A7",
|
||||
"e. c #D5BBAB",
|
||||
"r. c #DABDAC",
|
||||
"t. c #D5BFB2",
|
||||
"y. c #D4C48C",
|
||||
"u. c #CDC093",
|
||||
"i. c #CAC09F",
|
||||
"p. c #D1C69E",
|
||||
"a. c #D7CA9A",
|
||||
"s. c #CDC3A1",
|
||||
"d. c #D1C7A3",
|
||||
"f. c #D4CAA6",
|
||||
"g. c #DBCFA4",
|
||||
"h. c #D5CBA9",
|
||||
"j. c #D9CEA9",
|
||||
"k. c #DCD1AC",
|
||||
"l. c #CEC9B4",
|
||||
"z. c #CCC0B9",
|
||||
"x. c #D6C1B4",
|
||||
"c. c #DDC5B6",
|
||||
"v. c #D5CDB3",
|
||||
"b. c #DAC6BB",
|
||||
"n. c #D3CDBC",
|
||||
"m. c #D9C9BF",
|
||||
"M. c #DAD1B1",
|
||||
"N. c #DCD4BC",
|
||||
"B. c #E0C7B8",
|
||||
"V. c #E1C8B9",
|
||||
"C. c #C3C3C3",
|
||||
"Z. c #CFC6C1",
|
||||
"A. c #CCCBCB",
|
||||
"S. c #D1CEC3",
|
||||
"D. c #DCCCC2",
|
||||
"F. c #D6D2C4",
|
||||
"G. c #DED3C6",
|
||||
"H. c #D3D2CB",
|
||||
"J. c #DDD4CD",
|
||||
"K. c #D4D4D4",
|
||||
"L. c #DCD7D1",
|
||||
"P. c #DED9D5",
|
||||
"I. c #DCDCDC",
|
||||
"U. c #E5CFC2",
|
||||
"Y. c #E6D0C3",
|
||||
"T. c #E8D2C5",
|
||||
"R. c #E2D3CB",
|
||||
"E. c #E1DCCD",
|
||||
"W. c #E0D7D1",
|
||||
"Q. c #E4DBD4",
|
||||
"!. c #E9DDD5",
|
||||
"~. c #E3DED9",
|
||||
"^. c #E6E1DE",
|
||||
"/. c #ECE2DC",
|
||||
"(. c #E4E4E4",
|
||||
"). c #E9E5E3",
|
||||
"_. c #ECECEC",
|
||||
"`. c #F2EDEA",
|
||||
"'. c #F4F4F4",
|
||||
"]. c #F9F9F9",
|
||||
"[. c None",
|
||||
"& c #906F00",
|
||||
"* c #8F7000",
|
||||
"= c #8E710B",
|
||||
"- c #947300",
|
||||
"; c #997700",
|
||||
": c #9D7A00",
|
||||
"> c #93750B",
|
||||
", c #97780B",
|
||||
"< c #9C7B0B",
|
||||
"1 c #A27E00",
|
||||
"2 c #AC5421",
|
||||
"3 c #AF5927",
|
||||
"4 c #AF5B2A",
|
||||
"5 c #B15E2E",
|
||||
"6 c #927A24",
|
||||
"7 c #A86036",
|
||||
"8 c #AD683F",
|
||||
"9 c #B26232",
|
||||
"0 c #B46638",
|
||||
"q c #B4693D",
|
||||
"w c #B66E45",
|
||||
"e c #AF704B",
|
||||
"r c #B77047",
|
||||
"t c #B67249",
|
||||
"y c #B9744C",
|
||||
"u c #BB7B56",
|
||||
"i c #BD7E5A",
|
||||
"p c #B17B5B",
|
||||
"a c #A68100",
|
||||
"s c #AB8500",
|
||||
"d c #AF8800",
|
||||
"f c #A4820C",
|
||||
"g c #A9860C",
|
||||
"h c #AE890C",
|
||||
"j c #B48B00",
|
||||
"k c #B88F00",
|
||||
"l c #B28D0C",
|
||||
"z c #BC9200",
|
||||
"x c #B6910D",
|
||||
"c c #BC950D",
|
||||
"v c #BD9919",
|
||||
"b c #B89417",
|
||||
"n c #978136",
|
||||
"m c #9A8437",
|
||||
"M c #9D8738",
|
||||
"N c #9F8838",
|
||||
"B c #B99721",
|
||||
"V c #BC9B25",
|
||||
"C c #A48C3A",
|
||||
"Z c #A88F3B",
|
||||
"A c #AC933C",
|
||||
"S c #BB9D35",
|
||||
"D c #B1973D",
|
||||
"F c #B59A3E",
|
||||
"G c #B89D3F",
|
||||
"H c #C19600",
|
||||
"J c #C69900",
|
||||
"K c #C89B00",
|
||||
"L c #C0970D",
|
||||
"P c #C69D0F",
|
||||
"I c #C39D19",
|
||||
"U c #C5A225",
|
||||
"Y c #C0A02D",
|
||||
"T c #CBA72D",
|
||||
"R c #C7A83A",
|
||||
"E c #C4A435",
|
||||
"W c #B99E40",
|
||||
"Q c #BD805C",
|
||||
"! c #BDA44C",
|
||||
"~ c #BE8463",
|
||||
"^ c #B0876F",
|
||||
"/ c #B58A71",
|
||||
"( c #A59B77",
|
||||
") c #C1825E",
|
||||
"_ c #C4A846",
|
||||
"` c #C7A943",
|
||||
"' c #C8AD51",
|
||||
"] c #C2AA59",
|
||||
"[ c #CCB35E",
|
||||
"{ c #D0B350",
|
||||
"} c #C28460",
|
||||
"| c #C58967",
|
||||
" . c #C18A6B",
|
||||
".. c #C68F70",
|
||||
"X. c #C59274",
|
||||
"o. c #C6967B",
|
||||
"O. c #C99779",
|
||||
"+. c #CA987B",
|
||||
"@. c #C6B065",
|
||||
"#. c #CAB56E",
|
||||
"$. c #D0B96A",
|
||||
"%. c #C3B071",
|
||||
"&. c #C7B67A",
|
||||
"*. c #CDBA76",
|
||||
"=. c #D1BE7F",
|
||||
"-. c #D4BE73",
|
||||
";. c #B49685",
|
||||
":. c #B79886",
|
||||
">. c #BBA89E",
|
||||
",. c #BBB4AF",
|
||||
"<. c #B3B3B3",
|
||||
"1. c #BBBBBB",
|
||||
"2. c #C69E87",
|
||||
"3. c #CB9D82",
|
||||
"4. c #CBA38B",
|
||||
"5. c #C7B98B",
|
||||
"6. c #CABA82",
|
||||
"7. c #CFA790",
|
||||
"8. c #CDAC99",
|
||||
"9. c #CDA994",
|
||||
"0. c #D3AB93",
|
||||
"q. c #D1AE9A",
|
||||
"w. c #D3B29E",
|
||||
"e. c #CFB3A2",
|
||||
"r. c #C6B6AC",
|
||||
"t. c #D2B3A1",
|
||||
"y. c #D4BAAB",
|
||||
"u. c #DABDAD",
|
||||
"i. c #D3BDB1",
|
||||
"p. c #CEC08F",
|
||||
"a. c #D4C388",
|
||||
"s. c #CDC29B",
|
||||
"d. c #D5C795",
|
||||
"f. c #CEC7AF",
|
||||
"g. c #D5C9A0",
|
||||
"h. c #D2C8A8",
|
||||
"j. c #D9CDA6",
|
||||
"k. c #D5C2B7",
|
||||
"l. c #DAC1B2",
|
||||
"z. c #D6CEB3",
|
||||
"x. c #D6C3B9",
|
||||
"c. c #D8C8BE",
|
||||
"v. c #D5C9B9",
|
||||
"b. c #D5D0BD",
|
||||
"n. c #D9D2B8",
|
||||
"m. c #DCD3B1",
|
||||
"M. c #C3C3C3",
|
||||
"N. c #CAC7C6",
|
||||
"B. c #CBCBCB",
|
||||
"V. c #DBCBC2",
|
||||
"C. c #D1CEC3",
|
||||
"Z. c #DCD4C5",
|
||||
"A. c #DFD9C6",
|
||||
"S. c #D5D3CC",
|
||||
"D. c #DED6CC",
|
||||
"F. c #D4D4D4",
|
||||
"G. c #DED6D1",
|
||||
"H. c #DCD9D4",
|
||||
"J. c #DCDBDB",
|
||||
"K. c #E1CCC1",
|
||||
"L. c #E1D0C6",
|
||||
"P. c #E4D6CE",
|
||||
"I. c #E3DECE",
|
||||
"U. c #E1D9D5",
|
||||
"Y. c #E2DEDB",
|
||||
"T. c #EAE2DE",
|
||||
"R. c #E4E3DE",
|
||||
"E. c #E4E4E4",
|
||||
"W. c #EDE6E2",
|
||||
"Q. c #EBE8E6",
|
||||
"!. c #EBEBEB",
|
||||
"~. c #F1E7E1",
|
||||
"^. c #F1E9E3",
|
||||
"/. c #F1EBE8",
|
||||
"(. c #F4F4F4",
|
||||
"). c #F9F9F9",
|
||||
"_. c None",
|
||||
/* pixels */
|
||||
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j h j j j j j j j j j j j j j j j j j j j [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j [.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j h j h j j j j j j j j j j j j j [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j [.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.h j j j h j j h j j j j j j j j j j j j j j j j j j j j j j h j j j j j j j j j j h j j j j j j j j j j j j h j h j h j h j h j j h j [.[.[.[.[.[.[.[.[.[.[.[.[.j j j h j j j j j j j j j j j j j j j j j j j h j j h j j j j j j j j [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.h j j h j j h j j j j h h j j h j h j h h h h h j h j h j h h h h h j j h h h h h h h h j h j h h h h h j j j h j h j j h h j h h h j h j [.[.[.[.[.[.[.[.[.[.[.[.j j j j j h j j j j h h j j h j j j j g h h j j j h j h j j j j h h h [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.h h h h h h h h h h h h h h h h h h h h h h h j h h h j h h h j h h h h h h j h j j h j h h h j h j j h h h h h h h h h h h h h h h h h h h h [.[.[.[.[.[.[.[.[.[.[.g h h j h h h h h h h j h h h h g j j j h h h h h h h j g j g h j h h [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.h h h h h h h h h h h h h h h h h h h h h h h h h h j j h j h h h h h h h h h h h h h h h h j h j j h h h h j h h j h h h h h h h h h h h h h h [.[.[.[.[.[.[.[.[.[.[.j j g h h h h h h h h j h h h h h g j h h h h h h h h j h j h h h h [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.h h h h h h h h h j g h h h h h h j h h h h h h h h j y h j h h h h h h h g h h h j h h h h g j g j h h h h g h h j h h h h h h h h h h h h h h h [.[.[.[.[.[.[.[.[.[.g h g h h h h h h g h g h h h h j g h h h h h h h j g j g g h h h h [.[.[.[.[.",
|
||||
"[.[.[.[.[.h g h g g h g h g E X.X.X.{ X.X.X.{ X.{ X.X.X.........X.....X...X...X...X.X.{ X.X...X.....X.X.....X.X.....X.X.....X.X.........X.I h h g h h g g h g h h [.[.[.[.[.[.[.[.[.[.j h h h h h h h h h h h h g j h h h g h g g h h h h h h h h h h [.[.[.[.[.",
|
||||
"[.[.[.[.[.g h h h h h g g h M.(.).).(.).(.(.).).).).).(.).).(.(.(._.(.).).).(._.).).).).(.(.).).).).(.(.).).(.(.(.).(.(.).).(.(.).).(.(.(.(.{ h h h g h h g g h h g [.[.[.[.[.[.[.[.[.[.h h y h h g h g h g g h h g h g g h h h h g g h h g g h h g h [.[.[.[.[.",
|
||||
"[.[.[.[.[.h g g g h h h h h k.).(.(.).(.(._.(._.).(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(.(.).(.(._.(.(.(.(.).(.).(.(.(.(.(.).(.).y.h g h g g h h g g h h [.[.[.[.[.[.[.[.[.[.j h h h h g h g g h h g h g h h g h g h h h g h h h h g h g [.[.[.[.[.",
|
||||
"[.[.[.[.[.g h g g g g g g g k.).(.).(.(.(.(.(.(.(.).(._.(.(._.(.(.(.).(.).(.(.(._.(.(.).(.(.(.(.(.(.(._.(.).(.(.(.(.(._.).(.(._.(.(._.(._.(.(.(.g.k h g g g h g h g g g [.[.[.[.[.[.[.[.[.[.y h g g h g g h g g h g g h g h g h g g h g g g g g g g h [.[.[.[.[.",
|
||||
"[.[.[.[.[.g g g g g g g g g k.(.(.(.).(.(.(.(.(.(.(.(.(.).(.(.(.).).(.(.(.(.(.(.(.(.(.(.).).(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.).(.(.(.(.(.(.(.(.(.N.z g g h g g h y h g g [.[.[.[.[.[.[.[.[.[.h g g g g g h g g g g g g g g g g g g g g g g g g g g g [.[.[.[.[.",
|
||||
"[.[.[.[.[.h g g g g h g g g k.(.(.(.(.(._.'.'._._.'.'.'.'._.'._._.].'._._.'.'.'.'._._.'._.].'._.`.!.r.r.r.r.).'._.'._.]._.'._.].'.'.'.'.(.(.(.(.).(.E.c g g g g g h g g g g [.[.[.[.[.[.[.[.[.[.g h g g g g g g h g g g g g h g g g g h g g g g g g g [.[.[.[.[.",
|
||||
"[.[.[.[.[.g g g g g y g g g j.(.(.(.(.(.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. . T.].].].].].].].].].].].].]._.(.(.(.(.(.(.^.I y g h g g g g g g g g [.[.[.[.[.[.[.[.[.g g g g g g g g g g g g g g y g g g g g g g g g g g [.[.[.[.[.",
|
||||
"[.[.[.[.[.g g g g g g g g g j.(.(.(.(.(.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. T.].].].].].].].].].].].].].].'.(.(.I.(.(.(.^.R y g y g y g g g y g j [.[.[.[.[.[.[.[.[.[.g g g g g g g g g g g g g g g g g g g g g g g g [.[.[.[.[.",
|
||||
"[.[.[.[.[.g g g g g y g g g k.(.(.(.(.(.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,.. . T.].].].].].].].].].].].].].].].].(.(.(.(.I.(.(.X.g y h y h y g g y y y [.[.[.[.[.[.[.[.[.[.g y g y y y g g g g y g g g g g y g g g g y g [.[.[.[.[.",
|
||||
"[.[.[.[.[.y y y y g g y y g j.(.(.(.(.(.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. T.].].].].].].].].].].].].].].].].'.(.(.(.(.I.(.(.a.k y y y g y y h j y y [.[.[.[.[.[.[.[.[.[.g g g g g y g y g g g g g y g g g y g g g g [.[.[.[.[.",
|
||||
"[.[.[.[.[.g y g g y y g g y j.(.(.(.I.I.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].>. T.].].].].].].].].].].].].].].].].].].(.(.I.(.(.(.I.M.l h y y h y y h y y h [.[.[.[.[.[.[.[.[.[.g y g y g y y g y g y g y g y y y g y g g [.[.[.[.[.",
|
||||
"[.[.[.[.[.y g y y g y y y r j.(.I.(.(.(.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. . X T.].].].].].].].].].].].].].].].].].].'._.(.(.I.(.I.^.E.x y y y y g y y y y y [.[.[.[.[.[.[.[.[.[.g y g y g g y g g g y g y y g g y g y g [.[.[.[.[.",
|
||||
"[.[.[.[.[.y y g y y g y g y j.I.(.I.(.I.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. Y.].].].].].].].].].].].].].].].].].].].]._.(.I.(.(.(.I.E.b y y y y y y h y y y y [.[.[.[.[.[.[.[.[.g y y y y g y y y y y g y g g y y y y [.[.[.[.[.",
|
||||
"[.[.[.[.[.y y y y y y y y y j.(.I.(.I.(.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. T.].].].].].].].].].].].].].].].].].].].].]._.(.(.I.I.(.(.I.T y y y y y y y y y y y [.[.[.[.[.[.[.[.[.[.y g y y g y g g y y y y y y g y g [.[.[.[.[.",
|
||||
"[.[.[.[.[.y y y y y y y y y j.I.(.I.(.I.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. Y.].].].].].].].].].].].].].'.].].].].].].].]._.(.I.I.(.I.(.I.| y y y y y y y y y y y [.[.[.[.[.[.[.[.[.[.y y g y y y y y y y y y y y y y [.[.[.[.[.",
|
||||
"[.[.[.[.[.y y y y y y y y y f.~.I.(.I.I.'.].].].].].].].].].].].].].'.].].].].].].].].].].].].].].,. U.].].].'.].].].].].].].].].].].].].].].].].].].].I.I.I.(.I.I.(.y.u y y y y r y y y y y [.[.[.[.[.[.[.[.[.[.y y y y y y y g y y y y y y y [.[.[.[.[.",
|
||||
"[.[.[.[.[.y y r y y y y y y f.(.I.I.I.(.].].].].].].].].].].].].].].].].].].].].].].].].].].'.].].>. Y.].].].].].].].].].].].].].].].].].].].].].].].].'.(.(.(.I.I.(.I.h.u y y r y y y y y y y [.[.[.[.[.[.[.[.[.[.y r y y y y y y r y y y y y [.[.[.[.[.",
|
||||
"[.[.[.[.[.y r y y y r y r y h.I.(.I.I.I.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].>. U.].].].].].].].].].].].].].].].].].].].].].].].].].].(.I.I.I.I.I.(.N.x y y y r y r y r y r [.[.[.[.[.[.[.[.[.[.y y y y y r y y y y r y y [.[.[.[.[.",
|
||||
"[.[.[.[.[.y y r r r r r r r f.I.I.I.I.(.'.].].'.'.].'.].].].].].'.].'.].].'.].'.].].].].].].].].].>. Y.].'.].].'.].'.].'.].].].].].].].].].].].'.].].].].].].(.(.I.I.I.I.I.L.v r y y r y r r y y r y [.[.[.[.[.[.[.[.[.y y r y r y y y y y r y [.[.[.[.[.",
|
||||
"[.[.[.[.[.r y r y r y y r y f.I.(.I.I.I._.].].].].].].].].].].].].].].].].].].].'.].'.].].'.].].].>. U.].].].].].].].].].].].].].'.].'.].].].].].'.].'.].'.].]._.I.(.I.I.I.I.I.U r r y r r y r r y r y [.[.[.[.[.[.[.[.[.[.y y r r y r r r y r [.[.[.[.[.",
|
||||
"[.[.[.[.[.r r r r r r y r r f.I.I.I.I.I.'.].].].].].].'.].'.].].].].'.].'.].].].].'.].].].].'.].].>. U.].'.].].].].].'.].].].].].].].].].].].].].].].].'.'.].].].'.I.I.I.I.I.I.I.] r r r r r r r r r r r [.[.[.[.[.[.[.[.[.[.r y y r r r y r r [.[.[.[.[.",
|
||||
"[.[.[.[.[.r r r r r r y r r f.I.I.I.I.I.'.'.'.].'.].'.].].].'.].'.].'.].].].'.].'.].'.].'.].'.].].,. U.].].'.].'.].'.].'.'.].'.'.'.].'.'.'.].'.'.'.].'.'.].].'.'.].'.(.I.I.I.I.I.I.<.r r y r r r r r r y y [.[.[.[.[.[.[.[.[.[.r r r y r y r r [.[.[.[.[.",
|
||||
"[.[.[.[.[.r r r r r r r r r f.I.I.I.I.I.'.].'.'.'.].].'.].'.'.].'.].].'.].'.'.].].].'.'.].].].'.].,. V.].].].'.].'.].].'.].'.].].].'.].].].'.'.].].'.'.].'.].].'.'.].'.(.I.I.I.I.I.I.p.t r r r r r r r r r r [.[.[.[.[.[.[.[.[.[.r y r r r [.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.r r r r r r r r r d.I.I.I.I.I.'.'.].].].'.].].'.].].'.].'.].].'.].].'.].'.].]./.5.5.6.,.7 / 5.,.5.,.`.].].'.].'.].'.].'.].'.].].].].].'.].].].].'.'.].'.].'.].(.I.I.I.I.I.I.v.a r r r r r r r r r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.r r r e r r r r r d.I.I.K.I.K.'.].'.].].'.].'.].].].].].'.].'.].'.].].].].].'.V. /.].].].'.].'.].].].'.].].'.].'.].].'.].'.].].].'.].'.].'.'.(.I.I.I.I.I.I.F.x e r e r r e r r r r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.r e r r r e e e r d.I.I.I.I.I.'.].'.].].'.'.].'.'.'.'.].'.'.].'.].'.].'.'.].'.V. !.].'.].'.'.].'.'.].'.'.'.'.].'.'.'.].'.].'.'.'.].'.].'.].'.]._.I.K.I.K.I.I.L.N r r e r r e r e r r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.r e e e r r r r e s.I.K.I.I.I.'.'.'.'.'.].'.'.].].'.].'.'.].'.].].'.'.'.].].'.V. !.'.'.].'.'.].].'.].'.'.].'.].].'.].'.'.].].'.'.].].'.'.].'.'.'._.I.I.I.I.I.K.K.Y e e e r r e r e e r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.r e r r e e e e e s.I.I.I.K.K.'.'.].'.].'.'.].'.'.].'.].'.'.].'.'.].'.].'.'.].V. !.'.].'.].].'.'.].'.].'.'.].'.'.].'.'.].'.'.'.].'.'.].'.'.].].'.].'.I.K.K.K.I.I.I. .r r e r e e r e e e r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.e r e e e e r e e d.I.K.I.I.K.'.'.'.].].'.].'.].'.].'.'.'.'.'.'.'.'.'.'.'.'.'.V. W r.r.r.r.4 !.].'.].'.].'.'.].'.'.].'.].'.'.'.'.'.].'.'.].'.'.'.'.'.].].'.'.'.'.'.I.I.I.K.I.I.K.u.t e e e r e e e e e e [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.e e e e e e e e e d.K.I.K.K.I.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.].'.].'.'.'.'.].V. >.'.'.].`.Q !.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.].'.].'.'.'.].].'.].'.'.'.'.'.'.].'.'.'.(.K.I.I.K.I.K.h.i e e e e e e r e r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.r e e r e e e e e s.K.K.I.I.K._.'.'.].'.'.].'.'.'.].'.].'.'.].'.'.'.].].'.].'.V. >.'.'.'.'.Q !.'.'.'.'.'.].'.].'.'.].'.].'.'.].'.'.'.'.'.'.'.'.'.].'.].].'.'.].].'.].'.(.K.K.K.K.I.I.n.s e e e e e e e e e e r [.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.e e e e e e e e e s.I.K.I.K.K.'.'.'.'.].'.'.'.'.].'.'.'.'.'.'.].'.'.].'.'.'.'.V. >.'.'.'.].Q !.'.].'.'.'.'.'.'.'.].'.'.'.'.'.'.'.].'.].].'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'._.K.I.I.K.K.K.H.f e e e e e e e e e e e [.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.e e e e e e e e e s.K.K.K.I.I.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.V. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.K.K.I.K.I.K.K.V e e e e e e e w e e w [.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.e e e w e w e e e s.K.K.I.K.K.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.V. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.].'.'._.I.K.K.K.K.K.K.| w e w e w e w e e e e [.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.e e e e e e w w e s.K.K.K.K.K._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.c. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.I.K.K.K.K.K.K.1.t w e w w e w e w w e [.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.w w w w w w e w e s.K.K.K.K.K.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.V. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.I.K.I.K.K.K.K.s.t w e e w e w w e e e [.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.w w w w w w w w w i.K.K.K.K.K._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.c. ;.'.'.'.'.W Q.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.(.K.K.K.K.K.K.l.p w w w w w w w w w e [.[.[.[.[.[.",
|
||||
"[.[.[.[.[.e w e w w e w w e i.K.K.K.K.K._.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'._.'.'.'.'.'.c. >.'.'.'.'.W !.`.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.(.K.K.K.K.K.K.Z.d w e w w w e w w w e [.[.[.[.[.",
|
||||
"[.[.[.[.[.w w w w w w w w w s.K.K.K.K.K._.'.'.'._.'.'._.'._.'.'.'.'.'.'.'.'.'.'._.'.'._.c. >.'.'.'.`.W !.'.'.'.'.'.'._.'.'.'.'.'.'.'.'._.'.'._.'.'.'.'.'.'.'.'._.'.'._.'.'.'.'.'.'.'.'.'._.'.'._.'.(.K.K.K.K.K.K.A.N w w w w w w w w w [.[.[.[.[.",
|
||||
"[.[.[.[.[.w w w w w w w w w 9.K.K.K.A.K._.'._.'.'.'.'.'.'.'.'.'._.'.'._.'._.'.'.'.'.'.'.c. ;.`.'.'.'.W !.'.'._.'.'._.'.'.'._.'.'.'._.'.'.'._.'.'._.'.'._.'._.'.'.'._.'.'.'._.'.'.'.'._.'.'.'.'.'.'.'._.K.H.K.K.K.K.K.B w w w w w w w w [.[.[.[.[.",
|
||||
"[.[.[.[.[.w w w w w q w q w i.A.K.A.K.A._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.c. >.'.'.'.`.Q !._.'.'.'.'._.'.'.'.'.'._.'.'.'.'.'.'.'._.'.'._.'.'.'.'.'.'._.'.'.'.'.'._._._.'.'._.'.'.'.'.'.'._.K.K.K.K.K.K.' w w w w w w w w [.[.[.[.[.",
|
||||
"[.[.[.[.[.w q w w w w w w w i.K.K.K.K.K._.'.'._.'._._.'.'._.'._.'._.'._._.'.'.'.'._._.'.c. / Q.!.Q.Q.8 Q.'.'._.'.'.'._.'.'._.'.'.'._.'._._.'.'.'.'.'.'.'._.'._.'.'.'._.'.'._.'.'.'.'._.'.'.'.'._._.'._.'.(.K.K.A.A.K.' q w q w q q q w [.[.[.[.[.",
|
||||
"[.[.[.[.[.q w q w q w w q w 9.K.A.K.K.K._.'.'._.'.'._.'._.'.'.'._.'.'.'._.'._.'.'.'._.'.c. Q.'._._.'._._.'.'.'.'._._._.'.'.'._.'._.'.'._.'._.'.'.'._._._.'.'.'.'._._.'._.'.'._.'.'.'.'._.'.'.(.K.A.K.K.K.K w q q w w w q q [.[.[.[.[.",
|
||||
"[.[.[.[.[.w q q q q q q q q i.A.A.K.A.K._._.'.'._.'.'.'._.'._.'._.'._.'.'.'._.'._.'.'.'.c. Q.'.'.'.'.'.'.'._._.'.'.'._.'._.'.'.'._.'.'._.'.'.'._.'._.'.'.'._._.'.'.'.'.'.'._.'.'._._.'.'.'._.(.K.K.K.K.A.' w q w q q w q w [.[.[.[.[.",
|
||||
"[.[.[.[.[.w q q q w q q q w 9.K.K.A.K.A._.'._.'._.'._.'._.'._.'.'._.'._.'._.'._.'.'._.'.c. !.'._.'._._.'._.'.'._._.'.'._._.'.'._.'._._.'._._.'._._.'.'._.'.'._.'.'._._.'.'._.'.'._.'.'.'._.'.(.A.K.A.K.A.K w q q q q q q w [.[.[.[.[.",
|
||||
"[.[.[.[.[.q q q q q q q q q 9.A.A.K.K.K._.'.'._.'._._.'.'.'.'._._.'.'.'.'._._.'._.'.'._.V. Q.'._._.'.'._.'._._.'.'._._.'.'._._.'._.'.'.'.'.'._.'.'.'._.'._._.'.'._.'.'._._.'.'._.'._._.'.'._.(.K.A.K.A.K.K q q q q q q q q [.[.[.[.[.",
|
||||
"[.[.[.[.[.q q q q q q q q q 9.K.A.K.A.A._._.'._._.'._.'._._._.'._._._._._.'.'._.'._._._.R.! ! ! ! , O ! ! ! ! Q /._.'.'._._.'._.'.'._._.'.'._._.'.'.'.'._.`.`._._.'.'._._.'._.`.'._._.`._._._._._._._._.'.'._._.'.(.K.A.A.K.A.K q q q q q q q q [.[.[.[.[.",
|
||||
"[.[.[.[.[.q q q q q q q 0 q 8.A.K.A.A.K._._._.'._._.'._.'._.'._.'.'._.'._.'._.'._.'._.'._._.'._.'.! @ _.'.'._._.'._.'._.'.'._.'._.'._.'._._.'.'._._.`.> + O O + O X X X X X X X . . X r._._._.'._.(.A.A.K.A.K.K q q q q q q q q [.[.[.[.[.",
|
||||
"[.[.[.[.[.q q 0 0 q q q q q 9.A.A.A.A.A._.'.'._.'._._.'._.'.'._._.'.'._.'._.'._._.'.'._.'._._.'._.! @ '._._.'.'._._.'.'._._._.'._._.'._.'._.'.'._._._.O . . 0.'._.'.'.(.A.A.K.A.A.K q q 0 q q q q q [.[.[.[.[.",
|
||||
"[.[.[.[.[.q q q 0 q 0 q q 0 9.A.K.A.K.A._._._._.'._.'._._._._.'._._._._._._._._._._._._.'._.'._._.! @ _._._._._._._._._._._.'._._.'._._._._._._.'.'._.O ;._._._.(.K.A.A.A.K.K q q q q 0 q 0 q [.[.[.[.[.",
|
||||
"[.[.[.[.[.0 q 0 q q q q 0 q 8.A.A.A.K.A._.'._.'._._._._._._.'._._._.'.'.'.'._._.'.'._.'._._._._._.! @ _._._._.'.'.'.'._._.'._.'._.'._._._.'._._._._.'.O ^ _._.(.A.A.A.A.A.K 0 q 0 0 q 0 0 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.q 0 q 0 0 0 0 q 0 8.A.A.A.A.A.(._._._._.'.'._.'._._._.'._._._._._._.'._._._._._.'._.'.'.! @ _.'.'._._._._._._.'._._.'._._._.'._.'._._.'._._.O . . X . X X X O O O O + + @ @ + W _.(.A.K.A.A.A.K q 0 0 q 0 0 q q [.[.[.[.[.",
|
||||
"[.[.[.[.[.0 q 0 q ; q q ; q 8.A.A.A.A.A._._._._._._.'._._._._._._._.'._._._._._._._._.'.'._._._._.! o L L W W L W W L L L C C C W W W W L W W L W W L X . _._._.'._._._.'._._._._.'._._._._.! 6 ~.A.A.A.K.A.J 0 0 0 q 0 0 q 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.q ; 0 0 q ; ; q ; 8.A.A.A.A.A._._._._._._._._.'._._._._._._._.'._._._.'._._._._._._._._.! X _._.'._._._._._._.'._._._._._._._._.=. 1 z.A.A.A.A.K 0 0 q 0 0 0 0 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.0 ; q ; q ; q ; q 7.A.A.A.A.A.(._._._._._._._._._._._._._._._._._._._._._._._._._._._._.! X . _._._._._._._._._._._._._._._._._.`.Q.# Z A.A.A.A.J 0 0 0 ; q 0 0 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.0 q ; q ; q ; q ; 8.A.A.A.A.A._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.! X _._._._._._._._._._._._._._._.'._.U.# ( A.A.C.A.A.J 0 0 0 0 ; 0 0 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.; q q ; ; ; q ; ; 9.A.A.A.C.A.(._._._._._._._._._._._._._._._._._._._._._._._._._._.)._.! . . . . X 8 8 9 9 9 W m W W W W W Q ! ! ! ! o q.(.C.A.A.A.A.J ; 0 0 ; q 0 ; 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.q ; ; ; q ; ; ; ; 8.Z.A.A.A.A.(._._._._._._._._._._.(._._._._._._._.0.1 < < < 3._._._._.W + ~.Q.Q.Q.Q.Q.~.P.~.Q.Q.Q.Q.Q.Q.Q.Q.~.Q.Q.Q.Q.Q.Q.O + b._.(.A.A.A.C.A.K ; 0 ; 0 0 0 0 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.; ; ; q ; ; q ; ; 7.A.C.A.C.A.(._._.(._._._._._._._._._.(._._.)._._.:. ( _.)._._.L o (._.)._._._._._._._._._.(._._._._._._._._.(.(._.O > R._._.I.C.A.C.A.A.J ; ; ; 0 ; ; ; ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.q ; ; ; ; ; ; ; ; 7.A.A.A.C.A.(._._._._._._._._.(._._._._._._._._._.>. =._._._.~.# ~._._._._._.(._._.(.)._._._.(._._.(._.(._._._._.O < ~._.(._.I.A.A.C.A.C.J ; 0 ; ; 0 ; 0 0 [.[.[.[.[.",
|
||||
"[.[.[.[.[.; 0 ; ; ; ; ; ; ; 7.C.A.C.C.A.(._._._.(._._._._._._.(._._._._._._._.:. =._.).Q., Q._._.(._._._._._._._._._._._._._._._._._.(._._.+ 6 )._._._.(.I.C.A.A.C.A.J ; ; ; ; ; ; 0 ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.; ; ; ; ; ; ; ; ; 7.A.C.A.A.C.(._._.(._._._.(._.(._._._.(.(._._.(._.:. =._.R.# 7 _.)._._._.(._.(._.(.(.(._.(.(._.(._._.(._._._.(.c.x.t.t.e.e.w.w.q.q.q.q.q.0.6.6.4.4.3.3.2.2.2.4.).)._.)._._.(.C.C.A.A.C.J ; ; ; ; ; ; ; ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.; ; ; ; ; ; ; ; ; 7.C.A.A.C.A.(._.(._._.(._._._._.(.(.(.(._._.(._._.:. ( b.@ 3 ^._.)._.(._.(._._._._._._._._._._._.(._._.(.(._._._.(._._.(._.).)._._.)._._.(.)._._.(.(._.)._._.(._._.(._.(._.I.C.C.A.C.A.J ; ; ; ; ; ; ; ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.; ; ; ; ; ; ; ; ; 7.A.C.C.A.C.(._.(._._.(._.(.(._._._._._._.(._._.(.:. m o 7 ).(._._._.(._._._.(.(._._.(.(._._.(._.(.(._._._.(.(._._.(._._._._._.(._._.(.)._._.)._.(._._._.)._.(._.(._._.(._.(.C.A.C.A.C.H ; ; ; ; ; ; ; ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.; ; - ; ; ; ; ; ; 7.C.C.C.C.A.(.(._._._._.(._._.(._.(.(._.(._._.(._.:. m _._.(._.(.(._.(._._.(._.(._.(._.(._.(._._._._.(._._._.(._.(._._.(.(._._.(._.(._.(._.(._._.(._.(._._.(.(._._.(.(._.I.C.A.C.C.A.J - ; ; ; ; - ; ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.; ; ; - ; - ; - - %.C.A.A.C.C.(.(._.(.(._._.(.)._.(._._.(._.).(._.(.:. ^ (.(.(._.)._._._._.(.(._.(._.(._.(._.(._.(._.(.(._.(.(._._.(._.(.(._._.(._._.(._.(._.(._.(._.(.)._.(.(._._._.(._._._.I.C.C.C.C.C.J - ; - - ; ; ; ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.; - ; ; ; - ; ; - %.A.C.C.C.C.(.~.J.W.W.W.W.W.L.W.W.W.W.W.W.W.W.W.W.=. -._.(._._.(.(._.(.(.(._._.(._.(.(._._.(._.(.(._.(._.(._._.(.(.(.(._._.(.(.(._.(.(._._.(._.(.(._._.(.(._.(._.(.(.(._.(.(.I.C.C.A.C.C.H - ; ; ; ; ; - - [.[.[.[.[.",
|
||||
"[.[.[.[.[.- ; - - ; - ; - ; %.C.C.C.C.C.(.6 3.).(.(._.(._.(.(._.(._.(.(._.(._._.(.(._.(._.(.(._.(._.(.(._.(._._.(.(._.(._.(.(._.(._.(.(._.(.(.(._._.(._.(._.(._.(._.(.I.C.C.C.A.C.H - - ; - - ; - ; [.[.[.[.[.",
|
||||
"[.[.[.[.[.- ; ; - - - ; - ; %.C.C.C.C.C.(.6 X q.(._.(.(._.(._.(.(._.(._.(.(._.(.(.(.(.(.(._.(.(._.(.(._.(._.(.(._.(._.(._.(.(._.(._.(._.(.(._.(._._.(.(._._.(.(._._.(.(._.I.C.C.C.C.C.H - ; - - - - ; - [.[.[.[.[.",
|
||||
"[.[.[.[.[.; - - ; - - ; - - %.C.C.C.C.C.(.6 t.(._.(._._.(.(.(._.(.(._._.(._.(.(._.(._._.(.(._._.(._.(.(._._.(.(._._.(._.(.(._.(._.(.(.(._._.(._.(.(._.(.(.(.(._.(.(._.(.(.I.C.C.C.C.C.H - - - ; - - - - [.[.[.[.[.",
|
||||
"[.[.[.[.[.- - - - - - - - - %.C.C.C.C.C.(.5 -.(._.(.(._.(._.(._._._.(.(.(.(._.(.(._.(._._._.(.(.(.(._.(.(.(.(.(.(.(._.(._.(._.(.(.(._.(._.(._.(.(.(._.(._.(._._.(.(._.(._.K.C.C.C.C.C.H - ; - - - - ; - [.[.[.[.[.",
|
||||
"[.[.[.[.[.- - - - - - - - - $.C.C.*.C.C.(.:.C W C C ! C ! Z C C C ! C W C ! W 3 ( (._.(.(.(.(.(.(.(.(.(.(._.(.(._._.(.(.(.(.(.(.(._.(._.(._.(._.(._.(.(.(.(.(.(.(._.(._.(.(.(.(.(._.(.(.(._.(.(.(.(.(.(.(.(.I.C.C.C.C.C.H - - - - - - - - [.[.[.[.[.",
|
||||
"[.[.[.[.[.- - - - - - - - - $.C.C.*.C.C.(.(.(.(.(._._.(.(.(.(._.(.(.(.(._.(.(.:. C ).(.).(.(._.(._.(._.(._.(.(.(.(.(.(.(.(.(.(.(._._.(.(.(._.(.(.(._.(._.(._.(._.(._.(.(.(._.(.(.(.(.(._.(.(.(._._.(.(._.(.I.C.C.C.*.C.G = - - - = - = - [.[.[.[.[.",
|
||||
"[.[.[.[.[.- - - - = - - - - $.C.C.C.C.C.(.(._._.(.(.(.(.(._.(._._.(._.(.(.(.(.:. 7 (.(._.(.(.(.(.(.(.(._.(._.(._._.(._._._.(.(.(.(.(._.(.(.(._.(.(.(.(.(.(.(._.(.(.(._.(.(.(._._._.(.(.(.(._.(.(._.(._.(.K.C.*.C.C.C.G - - - - - - - - [.[.[.[.[.",
|
||||
"[.[.[.[.[.- = = = - = - - - $.C.*.C.C.C.I.(.(.(.(.(.(._.(._.(.(.(.(.(.(._.(.(.:. 4 I.(.(._._.(.(.(.(.(.(.(._.(.(.(.(.(.(.(.(._._.(.(.(.(.(.).(.(.(.(._._.(.(.(._.(.(.(.(.(.(.(._.(._.(.(.(.(.(._.(.(.(.I.C.C.C.*.*.H = = - = - - = - [.[.[.[.[.",
|
||||
"[.[.[.[.[.= - - = - - - = = $.*.C.C.*.*.(.(.(.(.(._.(.(.(.(.(.(.(.(._.(.(.(.(.2. o < ~.(.(.(.(.(._.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(.(._.(.(.(.(._.(.(.(.(.(.(.(.(.(.(._.(.(.).(.(.(.(.(.(._.(.(.(.(.(.(.K.C.*.C.C.C.G = = - = - = - - [.[.[.[.[.",
|
||||
"[.[.[.[.[.= = = = - - - = - $.C.C.C.*.C.(.(.(._.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.:. ! : > J.(.).(.(.(.(.(.(.(.(._.(.(.(.(.(.(._.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.K.*.C.*.*.C.G = = = = = = - - [.[.[.[.[.",
|
||||
"[.[.[.[.[.= = = = = = = = = $.*.*.C.C.*.I.(.(.(.(.(.(.(.(.(._.(.(._.(.(.(.).(.:. =.W., : D.(.(.(.(._.(._.(.(.(._.(._.(.(.(.(.(.(.I.: : # : : # : : : # # : # # : # # : # : : # : : # : : # # # # # : # 6 C.*.C.C.*.G = = = = = = = = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= = = = = = = = = #.C.C.*.*.C.(.(.(.(.(.(.(._.(._.(.(.(.(._.(._.(.(.:. ( ).I.3 , (.(.(._.(.(.(.(.(.(.(._.(.(._.(.(.(.).J. < *.C.*.*.*.D = = = = = = = = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= = = = = = = = = #.*.*.C.*.*.I.(._.(._.(.(.(.(.(._.(.(._.(.(.(.(.(.-. ( (.(.).6 D.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.(._.).J. X X X X X X X X o X X o X X X X X X X X X X X 2 *.*.C.*.C.G = = = = = = = = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= = = = = = = = = #.*.*.*.C.C.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.-. ( (.(.(.(.9 (.(.(.(.(.(.(.(.(.(.(.(._.).(.(.(.(.(.L. 1 (.).(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.C.C.*.C.*.G = = = = = = = = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= = = = = * = * = #.*.C.*.*.*.I._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.D.( ( ( =.t.(.(.(.(.D. J.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.L. 1 (.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.K.*.*.*.*.*.G = = * * = = = = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= = = * = = = = = #.*.*.*.*.*.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(.(.).(.(.(.(.(.(.).(.(.(.(.t. D.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. 1 ).(.x., , , , , , , , -.(.(.(.(.(.m 9 9 8 8 8 9 8 8 8 9 8 9 ^ K.*.*.C.*.*.G * = = = = * = = [.[.[.[.[.",
|
||||
"[.[.[.[.[.* * * = * * = * * #.*.C.*.*.*.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.t. S.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.(.e. ! (.(.(.(.).X , K.*.*.*.*.*.D * * = * * = * = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= * = * = * * * = +.*.*.*.*.*.I.(.(.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.t. Z.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 2 I.(.e. ! (.(.(.(.(. , K.*.*.*.*.*.D * = * = * = * = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= * * * = * = * * +.*.*.*.*.*.I.(.(.(.(.(.I.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.I.(.(.(.(.(.(.t. D.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.(.(.J. 1 (.(.t., , , , , , , , =.I.(.(.(.(. , K.*.*.*.*.*.D * * * * * = * = [.[.[.[.[.",
|
||||
"[.[.[.[.[.= * * * * * * * = +.*.*.*.*.*.I.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.I.(.(.(.(.(.(.(.(.(.t. m.(.(.I.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.K. 1 (.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.(.L.I.I.P.P.P.P.L.P.P.L.W.P.I.K.*.*.*.*.*.D * * * * * * * * [.[.[.[.[.",
|
||||
"[.[.[.[.[.* * * * * * * * * O.*.*.*.*.*.I.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.t. m.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.(.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.K.*.*.*.*.*.D * * * * * * * * [.[.[.[.[.",
|
||||
"[.[.[.[.[.* * * * * * * * * O.*.*.*.*.*.P.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.t. m.(.(.I.(.(.(.(.(.(.I.(.(.(.(.I.(.(.(.J. 1 (.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.(.I.(.(.(.K.&.*.*.*.*.S * * * * * * * * [.[.[.[.[.",
|
||||
"[.[.[.[.[.* * * * * * * * * O.*.*.*.*.*.I.^.(.(.(.I.(.(.(.(.(.I.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.(.(.t. m.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.K.*.*.*.&.*.S * * * & * * * * [.[.[.[.[.",
|
||||
"[.[.[.[.[.* * & * * & * * * O.*.*.*.&.&.I.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.I.(.(.I.(.(.I.(.(.I.(.(.(.t. m.I.(.(.(.I.I.(.I.(.I.(.(.I.(.(.(.(.(.J. 1 (.(.(.(.(.I.(.I.(.(.(.(.(.I.(.I.(.(.I.(.(.(.(.(.(.I.(.(.(.(.(.K.*.*.&.*.*.A * & * * * * & * [.[.[.[.[.",
|
||||
"[.[.[.[.[.& * * % * * * & * o.*.&.*.*.*.I.(.(.I.(.I.(.I.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.7 3 3 3 , 1 3 3 3 3 q.(.(.(.(.(.(.(.(.(.I.(.(.I.J. 1 (.t.-.-.-.-.-.-.-.-.-.2.I.(.(.(.(.(.(.(.I.P.5 3 5 5 5 5 5 3 5 b.&.*.*.*.&.S & * & & * * & * [.[.[.[.[.",
|
||||
"[.[.[.[.[.* * & * * & * * * O.*.&.*.*.&.I.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.(.(.I.(.(.(.(.(.(.+ :.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.~ + (.(.(.(.(.(.(.(.(.J. z.&.*.&.&.*.S * & * & * & & & [.[.[.[.[.",
|
||||
"[.[.[.[.[.& & & & & * & % * O.*.*.&.*.*.I.(.I.(.I.(.I.(.(.I.I.(.(.(.(.(.(.(.(.(.(.I.(.(.I.+ :.(.I.I.(.I.(.(.I.I.(.(.I.(.J. 1 I.~ + (.(.I.I.(.(.I.(.I.J. z.*.&.*.*.*.A & & & & & & & * [.[.[.[.[.",
|
||||
"[.[.[.[.[.& & & & & & & & & O.&.&.*.*.&.I.I.I.(.(.(.(.(.(.I.(.(.I.(.(.(.I.(.(.(.I.(.(.I.(.+ 2.(.(.I.(.(.(.(.(.(.(.(.I.I.J. 1 (.~ . + I.I.(.(.(.(.(.(.(.J. z.&.*.&.&.*.S & & & & & & * & [.[.[.[.[.",
|
||||
"[.[.[.[.[.& & & & & & & & * O.*.&.&.&.&.I.(.(.(.(.I.I.(.(.(.(.I.(.(.I.I.(.I.(.I.I.(.(.I.(.> o o o o o o o o o + o o o 3.I.(.(.(.(.I.I.(.I.I.(.(.(.H. 1 (.=.: : : : : : : : : 1 (.(.(.(.I.I.(.I.I.J. z.*.&.*.&.&.A & & & & & & & & [.[.[.[.[.",
|
||||
"[.[.[.[.[.& & & & & & & & & O.&.*.*.&.&.I.(.I.I.(.(.(.I.I.I.(.(.I.(.(.(.I.(.(.(.(.(.(.I.I.(.(.(.(.I.(.(.I.(.(.I.I.(.(.(.I.(.(.I.I.(.(.(.(.(.(.I.(.K.# # 7 (.(.I.(.I.I.(.(.(.I.(.(.(.I.I.I.(.(.(.(.(.I.4.4.4.4.4.4.4.4.4.A.&.&.&.*.*.M % & & & & & & & [.[.[.[.[.",
|
||||
"[.[.[.[.[.& & & & & % & & % O.*.&.&.&.*.I.I.(.(.I.I.(.(.(.(.(.I.(.(.I.(.(.(.I.I.(.I.(.(.(.(.I.(.(.(.I.(.I.(.(.I.I.(.(.I.I.(.(.I.(.(.I.I.(.I.(.(.(.I.I.(.(.I.(.(.(.(.(.(.I.(.I.(.I.(.(.(.(.(.I.I.(.I.(.(.I.(.(.I.I.(.(.I.K.&.*.&.&.&.S % & & & % & & & [.[.[.[.[.",
|
||||
"[.[.[.[.[.& & % % & & & & % O.&.&.&.&.&.I.(.(.I.(.(.I.(.(.(.(.I.(.I.(.(.(.I.(.(.I.(.I.(.(.I.(.I.I.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.(.I.(.(.(.I.(.I.(.I.(.I.(.(.I.(.I.(.(.I.(.(.(.(.I.(.(.(.(.I.I.(.(.(.(.(.(.(.(.K.&.&.&.&.&.A % % & & % % & & [.[.[.[.[.",
|
||||
"[.[.[.[.[.& % & & % % & % & O.&.&.&.*.&.I.I.(.(.(.I.(.(.I.I.(.(.(.I.(.I.(.(.I.(.(.(.I.(.(.I.(.(.(.(.(.I.(.I.I.(.(.I.I.(.(.I.I.(.(.(.I.(.(.(.I.(.I.(.(.(.I.(.(.(.I.(.(.I.(.(.(.I.(.(.I.I.(.(.I.(.I.(.(.(.(.I.I.(.(.I.I.(.A.&.&.*.&.&.S % & & % & & % & [.[.[.[.[.",
|
||||
"[.[.[.[.[.% & % & & & & & % o.&.&.&.*.&.I.^.(.I.(.(.(.(.I.(.(.I.~.I.(.(.I.(.I.(.I.(.(.I.~.I.(.(.(.I.(.I.(.(.I.~.I.(.(.I.(.I.(.I.I.(.(.I.~.I.(.(.I.(.I.(.(.I.(.I.~.I.(.(.I.(.I.(.I.(.(.I.~.I.(.(.(.I.(.I.(.(.I.~.I.(.(.I.A.&.&.&.&.&.S * % % & % % * & [.[.[.[.[.",
|
||||
"[.[.[.[.[.& % % % % % % % & o.&.&.&.&.&.A.K.K.K.K.K.K.A.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.A.&.&.&.&.&.A % & % % & % % * [.[.[.[.[.",
|
||||
"[.[.[.[.[.& % & & % & % % % o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % & % % % % % [.[.[.[.[.",
|
||||
"[.[.[.[.[.% & % % % % % % & o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % % % % % & % [.[.[.[.[.",
|
||||
"[.[.[.[.[.& % % % % % % % % o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % % % % % % & [.[.[.[.[.",
|
||||
"[.[.[.[.[.% % % % % % & % % o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % % % % % % % [.[.[.[.[.",
|
||||
"[.[.[.[.[.% $ % $ % % % % % F @.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.n % % % % % % % % [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.% % % % % $ % $ % $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ % $ $ $ $ % % $ % $ % $ $ $ $ $ $ $ $ % $ % $ % $ $ $ % $ % % $ $ $ $ $ $ % % $ $ % % $ $ $ $ $ % $ $ $ $ % % $ % $ % $ $ $ $ $ $ $ $ % $ % $ % $ $ $ % $ % % % % % % % % % % % % & [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.% % % $ $ % $ $ % % $ % % $ $ $ % $ $ % % $ $ $ % $ % $ $ $ % $ % $ % % $ % % $ $ $ $ $ $ % $ $ $ % % $ $ $ % $ % $ % % $ % % $ $ $ $ $ $ $ % $ $ % % $ $ $ % $ % $ % % $ % $ % $ $ $ % $ % $ $ $ % % $ $ $ % $ % $ $ % % $ $ % % $ % $ $ [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.% $ $ % % $ $ % $ $ $ $ $ $ % % $ % $ $ $ % % $ $ % $ % % $ $ % $ $ $ $ $ $ $ $ % % $ $ % $ $ % $ $ $ % % $ $ % $ $ $ $ $ $ $ $ % % $ % % $ $ % $ $ $ % % $ $ % $ $ $ $ $ $ $ $ % % $ $ $ $ $ % $ $ $ % % $ $ % $ $ $ $ $ % $ $ $ % $ $ % [.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
|
||||
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[."
|
||||
"_._._._._._.K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K _._._._._._._._._._._._._._._._._._._._._.K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K _._._.",
|
||||
"_._._._.K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K J K K K K K K K K K K K K K K J K K K K K K K K K K J K K K _._._._._._._._._._._._._._._._._.K K K K K K K K K K K K K J K K K K K K K K K K K K K K K K K K K K K K _.",
|
||||
"_._._.J J K J K K K K J K K K J K K K K K J K K K K K K K K K K K K K K K K K K K K K K K K K K J J K J J K K K K K K K K J K K K J J K K K J J K K K _._._._._._._._._._._._._._._.K K K K K K K K K K J K K J K K K K K K K K K K K K K J K K K K J K K K K _.",
|
||||
"_._.J K K J K J J K J K J J J K J J J K J K J K K J J J J K J K J J J J K J J K J J J J K J J J K K J K K J K J J J J J J K K J J K K J J J J J K K J K _._._._._._._._._._._._._._.J J J K J J K H K K K K J K K J J J K K J J J J J K J K J K K J K J K K K K ",
|
||||
"_.J J J J J J K J J J J J J J J K J J J K J J J J J J J J J J J J J K J K J H K K J K J J K J J J J K J J J J K J J K J J J J K J J J J K J J J J J J J J J _._._._._._._._._._._._.J J J K J J J J J J J J J J J K J K J J J J J K K K z K J J J J J J J J J K ",
|
||||
"_.J J J J J J J J J J K J J J J J J J J J J J J J J J J J J J J J J J J J J K J J J J J J J J J J J J J J J J J J J J J J J J K J J J K J J J J J J J J J K J _._._._._._._._._._._.K J J J K J J J K J J J K J J J J J J J J J K z K K K K J K K K J K J J J J ",
|
||||
"_.J J J J J J J J J J J J J H J J J J J J J J J J J K J J J J J K J J K H J J J H K J J J J J J J J J J J J J J K J J J J J K H J J J J J J J J J J J J J J J J _._._._._._._._._._._.J J K J J J J H J J J J J J J J J J J J J K K K K J J z J z K J J J J J J ",
|
||||
"J J J H J J J J J J P P P P P I P P P P P P P P P P P P P P P P P P P P P P I P P P P P P P P P P P P P P P P P P P P P P P P I P P P P P P J J J J H J J J J J K _._._._._._._._._._._.J H H K J J J J J J J H K z J J J J J J K z K z J J K K J K J K z J J J ",
|
||||
"H J H J H J H H J P E.E.!.E.E.E.E.!.E.!.!.E.!.Q.!.Q.E.E.!.!.E.E.Q.E.E.E.E.!.!.E.E.!.E.!.!.E.!.Q.Q.!.E.E.E.!.E.!.E.!.E.E.E.E.!.E.!.E.!.E.E.U.T H J H H J H H J J J H _._._._._._._._._._._.H H J J J J J J H J J H J H J J J H J J K J J J J z J z K J J z J z K ",
|
||||
"H J J H J J J J J P E.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.Q.E.!.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.!.E.!.E.E.E.E.E.E.E.E.Q.E.{ J J J J J J J H H K K H _._._._._._._._._._.J J z J J H H J H J J H H J J J J H J z J K z J K J J J K z K J J J ",
|
||||
"J H H J J H H J H P Q.E.E.Q.E.E.E.Q.Q.E.E.E.E.E.E.Q.E.E.E.E.!.E.E.Q.E.E.E.E.!.E.E.Q.Q.E.E.E.E.E.E.E.!.E.Q.E.E.Q.E.E.E.E.E.E.Q.E.E.E.E.!.E.!.E.E.-.J H H H H H H H H H J J _._._._._._._._._._.J J J z J H J J J H J J H J z J J z K J z K z z K z K J J z J z K ",
|
||||
"H J H H H H J H H P E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.!.E.E.Q.E.E.Q.E.E.E.E.E.E.E.E.E.d.P H H J H H J H H H H H _._._._._._._._._._._.z J J J J z H H H J H J J z J K z J z J K J K K z z K K J z J ",
|
||||
"H H H H H H H H H P E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.m.P J H H H H H H H H H H _._._._._._._._._._._.J H H H J H H J H J z J J z z z J z K z K z J z z K z z J z ",
|
||||
"H H H H H H H H H L E.E.E.E.E.R.(.(.(.).).).).).).(.).).).).).(.).).).).).(.).).).(.(.).).).).).+...| | | !.).).(.).).).(.).).).).).(.(.E.E.E.!.E.E.E.A.U H H H H H H H H H H H _._._._._._._._._._._.H H H H H J z H H H H H J J J J J z K z J z J J z J J J J ",
|
||||
"H H H H H H H H H P E.E.E.E.E.R.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ~.).).).).).).).).).).).).).).(.Q.E.E.E.E.E.E.Y.` H H H H H H H H H H H H _._._._._._._._._._.H z H H z J z J H z J z z J z J J z J z J z z J z J z J ",
|
||||
"H H z H H H z H H L E.E.E.E.E.E.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ^.).).).).).).).).).).).).).).).(.E.E.E.E.E.E.E.R.$.H H z H H z H H H z H H _._._._._._._._._._.J H H J z J z H H z J J z J z z J z J z J J z J z J z ",
|
||||
"z H H H H H z H H c E.E.E.J.E.E.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).!.E.E.E.E.E.E.J.p.z H H z H H H z z H H H _._._._._._._._._._._.H H z H z H H H H z z z J J z H H H z z H H H H H ",
|
||||
"z H z z z z H H z c E.E.E.E.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . /.).).).).).).).).).).).).).).).).).).!.R.E.J.J.E.E.E.j.L z z z H z H H z z H z _._._._._._._._._._._.H H H H H z H z z J J z z H H z z J H H H z H z ",
|
||||
"H z H H H z H z H L E.J.E.J.E.E.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).(.E.E.E.E.E.E.E.Z.U z z H H z H H z H H H _._._._._._._._._._._.z z H z z H H z z z z z H z z z H z z z H z H ",
|
||||
"z H z z H z z H z L E.J.E.E.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).).(.E.E.J.J.E.R.E.H.R z z H z z z H z z z z z _._._._._._._._._._.H H z H z H J z J z H z H J H z H H H z H z ",
|
||||
"z H z z z H z z z L E.R.E.J.E.E.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).).).).E.J.J.R.E.J.E.J.[ z z H H z z H z z z z H _._._._._._._._._._.z H z z z z z z J z z z z z z z H z z z H ",
|
||||
"z z z z z z z z z L J.R.J.E.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).).).).).!.E.E.J.E.J.E.E.=.z z z z z z z z z z z z _._._._._._._._._._._.z H z z z z z z z H z z H z z z H z z ",
|
||||
"z z H z z z z z z c E.J.E.J.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ~.).).).).).).).).).).).).).).).).).).(.).).).).).Q.J.E.J.E.J.R.R.g.L z z z z z z z z z z z _._._._._._._._._._._.z z z z J z z z z z z H H z z z z z ",
|
||||
"z z z z z z z z z c E.J.J.E.J.E.!.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . /.).).).).).).).).).).).).).).).).).).).).).).).).).Q.J.E.J.R.J.J.E.n.I z z z z z z z z z z z _._._._._._._._._._._.z z z z z z z H z z z z z z z z H ",
|
||||
"z z z z z z z z z c J.J.E.J.J.J.Q.).).).).).).).).).).).).).).).).).(.).).).).).).).).).).(.).).3 ~.).).).).).).).).).).).).).).).).).).).).).).).).).).(.E.J.J.J.E.J.J.F.E z z z z z z z z z z z z _._._._._._._._._._.z z z z z z z z z z z z z z z z ",
|
||||
"z z z k z k k z z c E.J.E.J.E.J.!.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ~.).).).).).).).).).).).).).).).).).).).).).).).).).).).(.E.E.J.E.J.E.J.J.' z z z z z z z z z k z z _._._._._._._._._._.z z z z z z z z z z z z k z z ",
|
||||
"z z k z k z z z z c J.R.J.J.J.J.(.(.).).(.).).).).).).).).).).).).).).).).).).).).).).(.).).).).2 ~.).).).(.).).).).).).).).).).(.).).(.).).(.).).).).).).).(.E.J.J.E.J.J.J.J.*.z z z z k k z z z k z z _._._._._._._._._._.z z k z k z z z z z z z k z ",
|
||||
"k z k z z z k k z c J.J.J.J.E.J.(.).).(.).).(.).).).).).).(.).).).).(.).).(.).(.).(.).).(.).).).3 ~.).).).).(.).(.).).(.).).).).).).).).).).(.).(.).).(.).(.).).!.J.J.J.R.R.J.J.p.x k z k z k k k z k k z _._._._._._._._._._._.z k z z z z z k k k z z ",
|
||||
"k z k z k z k z k c J.J.J.J.J.J.!.).).).).).(.).).).(.).(.).).(.(.).).(.).(.).).).(.).).).(.).(.# ~.(.).(.).).).).).).).).).).).).(.).).(.).).).(.).).).).(.).).).!.J.J.J.J.J.J.J.n.v z k k k k k k k z z k _._._._._._._._._._._.z k k z k z k k z k k ",
|
||||
"z k k k k k k k z c J.J.R.J.J.J.(.(.).(.).).).).(.).).).).).).).).).).).).).).).).).(.).).).).).2 ~.(.).).).).(.).(.).).).).(.).).).(.).).).).).).).).).).).).(.(.).(.J.J.J.J.J.J.J.S.Y k k z k z k k k k k z k _._._._._._._._._._.k z k k k k z k z _.",
|
||||
"k k k k k k k k k x J.J.J.J.J.J.!.).).(.).(.(.).).(.(.).).(.(.).(.).).(.(.).).(.(.).).(.).(.).(.2 ~.).(.(.).).(.(.).).(.(.(.).).(.(.).).(.).).(.(.).).(.(.(.).).).).(.(.E.J.J.J.J.J.J.H._ k k k k k k k k k k k k _._._._._._._._._._.z k z k z k z k _.",
|
||||
"k k k k k k k k k x J.J.J.J.J.J.!.).(.).(.).).(.).).).(.).).).(.).(.).).(.).(.).).(.).).).(.).).2 ~.).).).).(.).).(.(.).).).(.).).).(.).).(.(.).).(.(.).).).(.).).(.).).(.E.J.J.J.J.J.J.J.#.k k k k k k k k k k k z _._._._._._._._._._._.k k k k _._._.",
|
||||
"j j k k k k j k j x J.J.J.J.J.J.!.).).).(.).(.).(.(.).(.).(.).).(.(.).(.).(.).).).(./.9 9 9 9 9 X 5 9 9 9 9 u.).).).(.).).).(.).(.).).(.(.).).(.(.).).(.(.).).(.).(.).).(.).!.J.J.J.J.J.J.J.p.c k k k j k k j k j k k _._._._._._._._._._._._._._._._._.",
|
||||
"k k j k k k k k k c J.J.F.J.J.F.!.).(.).).(.).).).).).).(.).).(.).).).).(.).).(.(.).^. 0.).(.).).(.(.(.).).).).(.).).(.).).).).(.).).).(.).).).(.(.).).(.!.J.J.J.F.J.J.F.h.b k k k j k k k j k k k _._._._._._._._._._._._._._._._.",
|
||||
"k j k j k j k j j x J.F.J.F.J.J.(.(.).(.(.).(.(.(.(.(.(.(.).).(.).(.(.(.(.).).(.).).Q. 0.).).(.).(.(.).).(.(.).(.).(.).).(.(.).(.).(.(.(.).(.(.(.).(.(.(.(.!.J.J.J.F.J.F.J.n.V j k k k k k k j k j k j _._._._._._._._._._._._._._.",
|
||||
"j k j k j k j k k x J.J.J.J.J.F.!.(.(.).).(.(.).).).(.).(.).(.).(.).(.).(.).(.).(.(.Q. 0.).(.).(.(.).(.(.).(.(.(.).).(.(.).(.(.(.).(.).(.).(.).).(.(.).).(.(.(.J.J.J.J.J.J.H.S.! j j k j j k k j k j k k _._._._._._._._._._._._._.",
|
||||
"j k j k j j k j j x J.J.F.J.J.J.(.(.(.(.(.).).(.(.).(.).(.).).(.(.).(.).(.).).(.).(.^. 0.).).).(.).(.).(.).(.).(.(.(.).(.).(.).(.(.).).(.).).(.).).).).(.).).(.(.R.J.J.F.J.J.J.F.@.j k j k j j j k k j j k _._._._._._._._._._._._.",
|
||||
"j j j k j k j k j x F.F.J.F.J.F.!.(.(.).(.(.(.(.(.(.).(.(.(.(.(.(.(.).(.(.(.(.(.).(.^. o L.K.K.L.L.y 0.(.(.(.).(.(.(.(.(.(.).(.).(.(.(.(.(.).(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.E.F.J.J.F.J.F.J.6.j j j j k j j j j j j k _._._._._._._._._._._.",
|
||||
"k j j j j j j j j x J.J.F.J.F.J.!.(.(.(.).(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.~. O (.).(.(.(.) 0.).(.(.(.(.(.(.).(.(.(.(.(.(.).(.).(.(.(.).).(.(.(.).(.).(.).(.(.(.).(.).(.(.!.J.F.J.J.J.F.J.s.x j j j j j j j k j j j _._._._._._._._._._.",
|
||||
"j j j j j j j j j x F.J.F.J.F.F.!.).(.).(.(.(.(.).(.).(.(.).(.).).(.).(.(.).(.).).(.~. O (.(.).(.).) 0.).).(.).(.(.).(.(.(.).(.).(.(.(.(.).(.(.(.(.(.(.).(.(.(.(.(.(.(.).(.(.(.(.(.(.!.J.F.F.F.J.F.F.b.B k j j j j j j j j j j j _._._._._._._._.",
|
||||
"j j d j j j j j j x J.F.J.J.F.J.!.(.(.(.(.(.(.).(.).(.(.(.).(.(.).(.(.(.(.(.(.(.(.(.~. O ).(.(.(.).Q 0.(.(.).(.(.).(.(.(.).(.(.(.(.(.(.(.).(.(.(.(.(.).(.(.).(.(.(.(.(.).(.(.).(.(.(.(.(.J.J.F.F.J.J.F.S.G j j j j j j d j d j j j _._._._._._._.",
|
||||
"j j j j d j j j j x F.F.F.F.F.F.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.(.(.(.) . 0.(.(.(.(.).(.(.(.).(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.R.F.J.F.F.F.F.J.! j j j j j j j j j j j j _._._._._._.",
|
||||
"d j j j j j j d d x F.J.F.J.J.F.!.(.(.(.(.(.).(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.~. O (.(.).(.(.) 0.).(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.).(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.E.F.F.J.J.F.J.F.&.j d j j j j d d j j j d _._._._._.",
|
||||
"d j d j j d j j j x F.F.F.F.F.F.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.(.(.(.) 0.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.E.F.F.F.F.F.F.F.s.l d d j d j j d d j d j _._._._.",
|
||||
"j j d d j d j d d l F.F.F.J.F.F.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.T. O (.(.(.(.(.) 0.).!.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.!.J.F.F.F.F.J.F.f.b d d d d j j d j j d j _._._.",
|
||||
"d d d j d j d d d x F.F.F.F.F.F.!.(.(.(.!.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.!.(.(.Q 0.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.J.F.F.F.F.F.F.C.S j j d d d d d d j d d _._.",
|
||||
"d j d d d d d j j l F.F.F.F.F.F.E.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.(.(.(.) 0.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.!.J.F.F.F.F.F.F.F.! d d d d d j d d d j j _.",
|
||||
"d d d d d d d d d h F.F.F.F.F.F.!.(.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.(.(.!.(.(.(.W. o (.(.!.(.(.) 0.(.(.(.(.!.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.E.F.F.F.F.F.F.F.%.j d d d d d d d d d _.",
|
||||
"d d d d d d d d d l F.F.F.F.F.F.E.(.(.(.!.(.(.(.(.!.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.T. o (.(.(.!.(.Q 0.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.!.(.!.(.(.!.(.(.(.(.!.(.(.!.(.(.(.(.!.(.(.!.!.(.(.!.(.(.(.(.(.E.F.F.F.F.F.F.B.5.j d d d d d d d d d ",
|
||||
"s d d s d d d d s l F.F.F.B.F.F.E.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.!.!.(.(.!.(.(.(.(.T. . o (.(.(.(.(.) 0.(.(.(.(.(.!.(.(.!.(.!.(.!.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.!.F.F.F.F.F.F.F.W d s d d s d s d d ",
|
||||
"d d d d d d s d d h F.F.F.F.F.F.E.(.!.!.(.!.(.!.!.(.(.(.(.(.!.!.(.(.(.(.!.(.!.(.(.!.T. o (.!.(.(.(.) 0.(.!.!.(.!.(.!.(.(.(.(.(.!.(.(.(.(.(.(.!.(.(.(.!.(.!.!.(.(.(.(.(.!.(.!.(.(.(.(.(.(.(.!.(.(.!.(.(.!.!.(.!.Q.F.B.B.F.F.F.F d d d d d d d d s ",
|
||||
"s d s d s s d s d g F.B.F.B.F.B.Q.(.(.(.(.(.(.(.(.(.!.!.!.(.(.(.!.(.!.(.(.(.(.!.(.(.T. . ) ) ) } ) 3 0.(.(.(.(.(.(.(.(.!.(.!.(.(.(.!.!.(.!.(.!.(.!.(.(.(.(.(.(.!.!.!.(.(.(.!.(.!.(.!.!.(.(.(.!.(.!.(.(.(.!.(.(.(.F.F.F.F.F.F.W s d s s d s s d d ",
|
||||
"s d d s d d s d d h F.F.F.F.B.F.E.(.(.(.!.(.(.(.(.(.!.(.!.(.(.(.!.(.!.(.(.(.!.(.!.(.T. 0.!.!.(.!.(.!.(.(.(.(.!.!.(.(.(.(.(.(.(.(.!.(.!.(.!.(./.!.(.(.(.(.(.!.(.(.(.(.(.!.(.!.(.(.(.(.!.(.(.(.!.(.!.F.B.F.F.F.B.W s s s d s d d s s ",
|
||||
"d s s d s s s s d h B.F.B.B.F.F.Q.(.!.!.(.!.(.!.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.T. 0.(.(.(.(.(.!.(.!.(.(.(.(.(.!.(.!.!.(.!.(.(.(.!.(.(.(.(.(.(.!.(.!.(.!.(.!.(.!.(.(.(.(.(.!.(.(.(.(.!.(.(.(.!.F.F.B.F.F.F.W d d d s d s s s d ",
|
||||
"s s s s s s s d s h B.F.F.B.F.B.E.!.(.(.(.!.!.(.!.(.(.!.(.!.(.!.!.(.(.!.!.(.!.(.(.!.T. 0.!.!.(.(.!.(.(.!.(.!.(.!.!.(.!.(.(.(.!.!.(.(.(.(.!.!.(.(.!.(.!.(.(.(.(.!.(.!.(.!.(.(.!.!.(.(.!.(.!.(.!.!.(.B.F.B.F.B.F.W s s s s s s s s s ",
|
||||
"s s s s s s s s s g F.F.B.F.B.F.Q.(.!.(.!.(.(.!.(.!.(.(.!.(.!.(.!.(.!.(.(.!.(.!./.(.T. . 0.(.!.(.!.(.!.(.(.!.(.!.(.(.!.(.!.(.!.(.(.!.!.(.!.(.(.!.(.(.!.(.(.!.!.(.(.!.(.!.(.!.(.!.(.!.(.(.!.(.!.(.(.!.F.B.F.B.F.B.D s s s s s s s s s ",
|
||||
"s s s s s s s s s h B.F.F.B.F.F.E.!.(.!.!.(.!.(.!.!.(.!.(.!.(.!.(.(.!.(.!.(.!.!.(.!.Q.7.7.0.7.7. 2 4.0.7.7.7.L.(.(.!.!.(.(.!.!.(.!.(.!.(.(.!.(.!.(.(.!.P.P.P.P.P.P.P.K.K.K.K.K.K.K.K.K.K.K.V.l.u.l.u.l.l.P.(.!.!.(.!.(.!.B.B.F.B.B.B.W s s s s s 1 s s s ",
|
||||
"s s 1 s s s s s a g F.B.B.F.B.B.E.(.(.!.(.!.(.!.!.(.!.(.!.(.!.(.!.!.(.!.(.!.(.!.!.(.!.(.!.!.(.!. 0 (.(.!.(.!.(.!.!.(.(.!.!.(.!.!.!.!.(.!.!.(.!.(.!.!.T. o u.!.(.!.(.!.(.F.F.B.F.F.B.W s s s s s s s s s ",
|
||||
"s s s s s a s s s h B.B.B.B.F.B.E.!.!.(.!.(.!.(.!.(.(.!.(.!.!.(.(.!.!.(.!.(.(.!.!.(.(.!.!.(.(.!. 0 !.!.(.(.!.!.(.(.!.!.(.(.!.!.(.(.!.!.(.(.(.!.!.(.!.T. 0.!.(.(.!.!.B.B.B.B.B.B.W 1 1 s s s s s s 1 ",
|
||||
"s 1 s s s a s a s g B.F.F.B.B.B.E.(.!.!.!.(.!.!.!.!.(.!.!.!.(.!.!.(.!.!.(.!.!.!.!.!.!.(.(.!.!.(. 0 (.!.!.!.(.!.!.!.!.(.!.(.!.(.!.!.(.(.!.!.!.!.(.!.(.T. +.!.!.!.!.B.F.F.B.B.F.W a s s 1 s 1 s s s ",
|
||||
"s 1 s s a s s s s g F.B.B.B.F.B.E.(.!.!.(.!.!.(.(.!.!.(.!.!.(.!.!.!.(.!.!.(.!.(.(.!.(.!.!.(.!.!. 0 !.!.(.!.(.!.(.!.!.(.!.!.!.!.(.!.(.!.!.!.(.(.!.!.!.T. ) Q.!.!.B.F.B.B.B.B.W a a s a s s s s a ",
|
||||
"s s a s s a a s 1 g B.B.B.B.B.B.E.!.(.!.(.!.!.(.(.!.!.(.!.(.!.!.!.(.!.!.!.!.!.(.(.!.!.(.!.!.(.!. 0 !.!.(.!.!.!.(.!.(.!./.!.(.!.!.!.(.!.(.!.!.!.!.(.!.T. y Q.!.B.B.B.B.B.B.W : a a s a 1 s 1 s ",
|
||||
"a a a a a a s a s g B.B.B.B.B.B.E.!.!.!.!.!.(.!.!.!.(.!.!.!.!.(.!.!.!.(.(.!.!.!.!.(.!.!.!.!.!.!. # .............. ................................... . l.~.Y.Y.Y.W.Y.Y.Y.T.T.Y.Q.!.!.!.!./.L.2 0 Y.B.B.B.B.B.B.W a s a s a 1 s s 1 ",
|
||||
"a a s a a a a a a g B.B.F.B.B.B.E.!.!.(.!.!.!.!.!.!.!.!.!.(.!.!.!.(.!.!.!.!.(.!.!.!.!.!.(.!.!.(. . . K.!.!.(.!./.!.!.!.!.(.!.!.(.!.(.!.!.(.Y.5 2 r.B.F.B.B.B.W s a a a a s 1 s s ",
|
||||
"s a a a a a a a f f B.B.B.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!. K.!.!.!.!.!.!.!.(.!.!.!.!.!.(.!.!.!./.!.V.X 2 N.B.B.B.B.A a a a a a a a a a ",
|
||||
"1 a a a a a a a s < B.B.B.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.(.!.!.!. V.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.K.2 2 r.B.B.B.B.B.W a a a a a a a a a ",
|
||||
"a 1 a a a 1 a a 1 g B.B.M.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!. X.7.7.7.7.7.0.7.q.t.w.w.t.w.w.w.t.u.7.X 0 Y.B.B.N.B.B.B.A a a a a a a a a a ",
|
||||
"a a 1 a a a a 1 1 f M.B.B.B.M.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.y.O.3.+.3.i.!.!.Q.!.!. 2 3.3.3.3.3.3.3.3.3.3.2.3.3.3.3.3.3.3.2.3.3.3.3.3.3.O. u Q.Q.N.B.N.B.B.M.W a : a a a 1 a 1 a ",
|
||||
"a a 1 a a a a a a g B.N.B.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.u .!.!.!.!.!. 9 !.!.!.Q.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.Y. / !.!.!.B.B.B.B.N.N.A a a a a a a a 1 a ",
|
||||
"1 a a 1 1 1 1 a 1 g B.B.M.B.M.B.E.E.!.!.!.!.E.!.!.!.!.!.!.E.!.!.!.!.!.!.!.i .!.!.!.Q.J. E.!.!.!.Q.!.!.!.!.!.!.!.!.E.!.!.!.!.!.!.!.!.Q.Q.Q.Y. X q.!.!.!.E.B.N.B.M.B.N.A a 1 1 1 a 1 a a 1 ",
|
||||
"a a 1 a a a 1 a 1 f M.B.M.B.M.B.E.!.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.Q.!.!.!.u | !.Q.!.P.5 D.!.!.!.!.Q.!.!.E.!.!.!.!.Q.!.!.!.!.!.E.!.!.!.!.!.Y. O i.!.!.Q.!.!.M.B.B.B.N.B.W a a 1 a 1 1 a 1 a ",
|
||||
"1 1 1 1 1 1 1 1 1 f M.N.B.M.B.B.E.E.!.!.!.E.!.!.E.!.E.!.!.!.E.!.E.Q.Q.!.Q.u | !.Q.V.# O E.E.!.E.!.E.!.!.!.E.!.!.Q.Q.!.E.!.!.E.!.!.Q.Q.Q.!.Y.9 9 9 9 7 2 2 2 3 2 2 2 2 2 @ O O O O o O O o X 4 G.Q.!.!.Q.E.!.B.M.M.B.B.M.C < 1 1 1 1 1 1 a : ",
|
||||
"1 1 1 1 1 1 1 1 1 g B.N.M.N.B.M.J.E.!.!.!.!.E.!.E.!.!.!.!.E.!.E.!.!.!.!.!.u | Q.i.o o y.Q.Q.!.!.!.!.!.E.!.E.!.!.E.E.!.!.!.!.E.E.!.!.!.!.!.E.!.!.E.!.!.!.!.!.E.E.!.!.!.!.E.!.E.Q.!.Q.!.!.!.!.!.E.!.E.!.E.!.!.E.B.B.B.B.N.B.A a 1 1 1 1 1 1 1 1 ",
|
||||
"1 1 1 1 1 1 1 a 1 g N.N.M.N.M.M.E.!.E.!.E.!.!.!.!.!.!.E.!.!.!.!.E.!.E.!.E.i .w. @ i.!.Q.!.E.E.!.E.!.!.!.!.!.!.!.!.!.!.E.!.!.E.!.E.!.E.!.!.!.!.!.!.E.!.E.!.!.!.!.E.!.!.!.!.!.Q.!.!.E.E.!.E.!.!.!.E.!.!.!.!.E.M.M.M.M.M.N.A : 1 1 1 a 1 1 1 1 ",
|
||||
"1 1 1 1 1 1 1 1 1 < N.N.B.B.M.B.J.!.E.!.!.!.E.!.!.E.E.!.E.!.!.E.!.!.E.!.!.u w # K.E.E.!.!.E.E.!.!.E.E.!.E.E.E.!.!.E.E.!.E.!.!.!.E.!.!.!.E.!.!.E.E.!.E.E.!.E.!.E.!.E.E.!.E.!.!.E.!.E.E.!.!.E.E.!.!.E.!.E.!.E.M.B.B.M.N.N.A a 1 1 1 : 1 a 1 1 ",
|
||||
"1 1 : 1 1 1 1 : 1 < M.N.M.M.B.M.J.E.!.E.E.E.!.E.!.E.!.!.!.E.E.!.E.!.!.E.Q.i 4 G.Q.!.!.!.E.!.!.E.!.!.!.E.!.!.E.!.!.E.!.E.!.!.E.!.!.E.E.E.!.E.E.!.!.E.!.!.E.!.E.!.E.!.!.E.!.E.!.!.E.!.!.!.E.!.!.E.!.!.!.E.!.E.M.M.N.M.N.M.A : : 1 : a : : 1 : ",
|
||||
"1 1 1 : : 1 1 : 1 < B.N.M.B.M.B.J.!.!.!.!.E.!.E.!.E.!.E.E.!.Q.E.!.Q.Q.Q.E.u w E.E.!.E.E.!.E.!.!.E.!.E.E.!.E.!.!.E.!.E.!.E.!.E.E.!.E.!.!.!.!.E.!.!.E.!.!.!.!.!.!.E.!.!.!.!.E.!.E.!.!.E.!.!.!.E.E.!.!.!.E.!.!.E.B.M.B.M.N.M.W : 1 1 : 1 1 a : 1 ",
|
||||
": : 1 1 1 : 1 1 < < N.N.M.M.M.M.J.L.t.t.t.t.t.t.t.t.t.t.t.t.t.q.e.t.e.t.e.w u E.Q.!.E.!.!.E.!.E.!.E.E.!.!.E.!.!.E.!.E.!.E.!.E.!.!.E.!.E.E.E.E.!.E.!.E.!.E.E.E.E.E.!.E.E.E.!.E.!.!.E.E.!.E.E.!.E.!.E.E.!.!.E.E.!.M.M.M.M.M.N.C : : : 1 1 : : : 1 ",
|
||||
"1 : 1 : : 1 : 1 1 < M.M.M.B.M.M.J.4. .E.E.E.Q.!.E.!.E.E.!.!.E.!.E.E.E.E.E.E.!.!.E.!.E.!.E.E.!.E.!.E.!.!.E.!.E.E.!.E.!.E.!.!.E.!.E.!.E.E.!.E.E.!.E.!.E.!.E.E.!.E.E.E.E.!.E.M.M.B.M.M.M.A 1 : 1 1 : 1 : : 1 ",
|
||||
"1 : : 1 : : : : 1 < M.M.M.M.M.M.J.4. 2.Q.!.E.!.E.E.!.E.E.!.E.E.!.E.!.E.!.!.E.!.E.E.!.E.!.E.E.!.E.!.E.!.E.!.E.E.E.!.E.!.E.!.E.E.!.E.!.E.E.!.E.!.E.E.!.E.!.E.!.!.E.!.E.!.E.E.E.M.M.M.M.M.M.A : : : : : : 1 : : ",
|
||||
": : 1 : : : : : : f M.M.M.M.M.M.J.4. q.Q.E.Q.!.E.!.E.E.!.E.!.E.!.!.E.!.!.E.!.!.E.!.E.Q.Q.E.Q.E.Q.E.Q.E.E.!.E.Q.E.!.E.E.!.E.E.!.E.E.!.E.Q.E.E.Q.Q.E.!.E.E.!.E.Q.E.E.Q.E.Q.E.!.E.M.M.M.M.M.M.Z : a : : : a : : a ",
|
||||
": : : : : : : : : < M.M.M.M.M.M.J.4. i E.Q.E.E.E.!.!.E.E.!.E.!.E.E.E.E.E.!.E.E.u 2 # # 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 p M.M.M.M.Z : : : : : ; : : ; ",
|
||||
": : : : : : : : : f N.M.M.M.M.M.J.i.y u y u y u y u y y u u y u y u y y u + y Y.E.!.E.E.!.E.E.E.!.E.E.E.E.!.E.E.!.E.w . e M.M.M.M.Z : : : : : : : : : ",
|
||||
": : : : : : : ; : < M.M.M.M.1.M.J.E.E.!.Q.E.E.Q.E.E.Q.E.Q.E.E.E.E.E.E.!.E.u 7 U.E.!.E.E.E.!.E.E.E.!.!.E.E.!.E.E.E.8 . e M.M.M.M.Z ; ; : : : : : : : ",
|
||||
": : : : ; : : : : < M.M.M.M.M.M.J.E.E.E.!.E.!.E.!.E.!.E.E.!.E.!.Q.E.E.E.!.u 2 L.E.Q.E.Q.E.!.E.!.E.E.E.E.!.E.!.E.w . e M.M.1.M.Z : : : : : : : : ; ",
|
||||
": : : : : : : : : < 1.M.1.M.M.1.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.!.!.E.!.E.E.u + V.E.E.E.E.E.E.E.!.E.!.E.E.E.E.E.0 8 y y r y y y e y y y y y y y y y e y y y y y y t y y y t t y t y y t y y y t y y y y t e ^ M.M.M.M.Z : ; : ; ; ; : ; : ",
|
||||
": : : ; - ; : : : < M.1.1.M.M.1.J.E.E.E.E.E.!.E.E.E.E.Q.E.!.E.E.E.E.!.E.E.u o e.!.E.E.!.E.E.E.E.!.E.E.E.E.E.w i.Q.E.E.E.!.E.E.E.E.E.E.E.E.Q.E.Q.E.E.E.E.E.E.Q.E.E.E.!.E.E.E.E.E.E.E.E.!.E.E.Q.E.E.E.E.1.1.M.1.1.M.N : : ; : : : : : ; ",
|
||||
"- : ; : : : - : : < M.1.M.M.1.M.J.!.E.E.!.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.i u @ 8.E.E.E.E.Q.E.E.E.E.!.E.E.!.0 y.E.E.Q.E.Q.E.E.Q.E.E.Q.E.E.E.E.E.E.Q.E.!.E.E.E.E.E.E.E.E.E.!.E.E.E.!.E.E.E.E.E.E.Q.E.E.M.M.M.M.M.M.N ; : ; ; ; ; ; ; : ",
|
||||
"; ; ; ; ; ; ; ; ; < 1.M.1.M.1.M.J.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.!.E.E.E.E.u .V.3 X.E.E.E.E.E.E.E.E.E.E.E.E.q u.E.E.E.Q.E.Q.E.Q.E.E.E.E.E.Q.E.E.E.E.E.E.E.!.E.E.E.Q.E.Q.E.E.E.E.E.Q.E.E.E.E.E.Q.E.E.E.1.M.M.1.1.1.C ; ; ; ; ; ; ; : ; ",
|
||||
"; ; ; ; : ; ; ; ; < M.1.M.1.M.1.J.E.E.E.E.E.!.E.E.E.E.E.E.E.!.E.E.E.E.E.E.u .E.G.5 X.E.E.E.E.!.E.E.E.!.E.E.q i.E.E.E.2.@ @ @ @ @ + @ # @ @ @ + !.E.!.E.E.E.E.K.i i i i ~ i i ~ i i i i i Q Q Q Q i i >.M.1.M.M.M.Z ; ; ; ; ; ; ; ; ; ",
|
||||
"; ; ; ; ; ; ; ; ; < M.M.M.1.1.M.J.E.E.E.E.!.E.E.E.E.E.E.E.!.E.E.E.E.Q.E.E.u .E.E.Y.w U.E.Q.E.!.E.!.E.E.E.!.q u.E.E.E.3. !.E.E.!.E.E.!.i. :.M.M.1.M.1.Z ; ; ; ; ; ; ; ; ; ",
|
||||
"; ; ; ; ; ; ; ; - < 1.1.1.M.1.1.J.E.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.u .E.E.E.E.u G.E.E.E.E.E.E.E.!.E.E.q i.E.Q.E.o. E.E.!.E.E.E.E.i. ;.M.1.1.1.M.C ; ; ; ; ; ; ; ; ; ",
|
||||
"; ; ; ; ; ; ; ; - < 1.1.1.1.1.M.J.E.E.E.E.E.!.!.E.E.!.E.E.E.E.E.E.E.E.!.E.i .E.E.Q.E.E.0 E.E.E.E.E.E.E.E.E.E.E.q y.E.E.E.o. E.E.E.E.E.E.E.i. ;.1.M.1.1.1.Z ; ; ; ; ; ; - ; ; ",
|
||||
"- ; ; - - ; ; - ; < 1.M.1.M.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Y.U.U.U.U.Y.E.E.E.E.E.u E.E.E.E.E.E.E.E.E.Q.E.q y.E.E.E.o. E.E.E.E.E.!.E.i. ;.1.M.1.M.1.N ; * ; - - ; ; ; * ",
|
||||
"; - ; - - ; ; , - < 1.1.1.1.1.1.J.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.u E.E.E.E.E.E.E.E.E.E.E.w y.E.E.E.2.2 2 2 2 2 2 2 2 2 2 2 4 E.E.E.E.E.E.E.i. . ;.M.1.1.1.1.N - ; ; ; ; ; ; ; ; ",
|
||||
"- ; - ; ; - ; - - < 1.1.M.1.1.M.J.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.u Y.E.E.E.E.!.E.E.E.E.E.0 y.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.U.y.y.y.y.y.y.y.y.y.y.i.y.y.y.f.y.y.y.y.,.1.1.1.M.1.N ; ; * - ; * - ; * ",
|
||||
"- - - - ; ; - - - > 1.1.1.1.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.u U.E.E.E.E.E.E.E.J.E.J.w y.E.E.E.E.E.E.J.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.1.1.1.1.1.1.C - - - ; - - - - ; ",
|
||||
"- ; - ; - - ; - ; , 1.1.r.1.1.1.F.E.E.E.E.E.E.E.J.E.E.E.E.J.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.u J.E.E.E.E.E.E.E.E.E.E.0 y.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.J.E.E.E.E.E.1.1.1.1.1.1.C - - - - - ; - - - ",
|
||||
"- - - - - - - - - > 1.1.M.1.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Y.u U.E.E.E.E.J.E.E.E.E.E.w y.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.J.E.E.E.E.J.E.E.E.R.E.E.E.E.E.E.E.E.E.E.E.E.E.J.1.1.1.1.1.1.M - - - - - - ; - - ",
|
||||
"- - - - - - - - - > 1.1.1.1.1.1.F.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.J.E.E.E.E.E.E.E.u J.E.E.E.E.E.E.E.E.E.E.0 e.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.1.1.1.1.1.1.N - - - - ; - - - - ",
|
||||
"- - * - - - - - - > 1.1.1.1.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.u Y.E.E.E.E.E.E.E.E.E.E.w y.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.1.1.<.1.1.1.M - - - * - - - - - ",
|
||||
"- - - - - - - - - > 1.1.1.<.1.1.F.E.E.E.E.E.E.E.E.J.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.u Y.E.E.E.E.E.E.E.E.E.E.0 e.E.E.E.E.E.E.E.E.E.E.R.E.J.E.E.R.E.E.E.E.E.E.E.E.E.J.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.J.1.<.1.1.1.1.M - - - - - - - - - ",
|
||||
"* - - - * - * - - > 1.1.<.1.1.<.F.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.J.E.E.E.E.J.E.E.E.E.E.E.u U.E.J.E.R.J.E.E.J.J.E.0 y.E.E.J.E.J.E.E.Y.E.E.E.E.J.E.E.E.E.E.E.E.J.J.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.J.E.E.1.1.1.1.<.<.m - % - - - - - - - ",
|
||||
"- * * - - - * - - > <.<.1.1.1.1.J.E.J.E.E.E.J.E.J.E.E.E.J.E.E.J.E.E.E.J.E.E.J.E.E.E.E.o.e r w e + e t y e w 3.E.E.E.E.E.0 y.E.J.V.V.V.V.V.N.V.V.V.V.V.V.V.V.F.J.E.E.E.E.E.E.J.E.E.E.J.E.x.~ ~ ~ ~ ~ ~ p ~ ~ ~ ~ i ^ <.1.<.1.1.M - - - & - - - % - ",
|
||||
"* % - - - - - - - > 1.<.1.<.1.<.F.E.J.E.E.E.J.E.E.E.E.J.E.E.J.E.E.E.J.E.E.J.E.E.E.E.E.r y E.E.E.E.E.w e.E.i. .E.R.E.E.J.E.E.J.J.E.E.E.E.8. 7 1.1.1.1.<.m - - % - - - - - & ",
|
||||
"& - % - % - % - % > <.1.1.<.<.1.F.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.r y J.E.E.J.E.7 y.E.i. / E.E.E.E.E.E.E.E.E.E.E.E.J.8. 7 1.<.<.1.1.M * - - % - % - - & ",
|
||||
"% - - - % - - - - > 1.<.<.1.1.<.F.E.E.E.E.E.J.E.J.J.E.E.E.E.J.E.E.J.E.E.E.E.J.J.J.E.J.e y E.E.J.E.J.w y.E.i. .J.E.J.E.E.E.E.E.E.E.E.E.E.8. 7 <.1.1.<.1.M - % - % * % - % - ",
|
||||
"& * - % - - % % - > <.1.1.<.<.1.F.J.J.E.E.J.E.E.E.E.E.J.J.E.J.E.E.E.J.J.J.E.E.E.J.E.E.w e E.E.J.E.E.0 y.J.y. / Y.E.E.E.J.E.J.E.J.E.J.J.E.8. 7 1.<.<.1.<.M % - * - * - * * * ",
|
||||
"& & % - * % % - % > 1.<.<.1.1.<.F.E.J.E.E.J.E.E.E.E.E.J.E.E.E.J.J.E.E.E.J.E.E.E.E.E.E.i.e.e.e.e.e.e.e.e.e.e.e.e.e.e.x.E.E.J.J.E.0 e.E.i. .E.E.E.E.J.J.E.J.J.E.E.E.E.8. 7 <.1.<.<.1.m - * * % - % - % - ",
|
||||
"& & - % & - - - % > <.<.<.<.<.<.F.E.J.E.E.J.E.J.J.J.E.E.E.J.E.E.E.E.J.E.E.E.J.J.E.J.J.E.J.E.E.E.E.E.E.E.E.J.E.E.J.E.J.E.E.E.E.E.w y.J.i. ..E.J.J.E.E.E.E.E.E.E.J.E.R.8. 7 <.1.<.1.<.m % % * * % - % % * ",
|
||||
"% - % - % - % % & > <.1.<.<.<.1.F.J.E.E.E.E.J.E.E.E.J.E.J.E.J.E.E.J.E.J.E.J.E.E.J.E.E.E.J.E.E.E.J.J.E.E.E.E.J.J.E.J.E.E.J.J.E.J.0 i.J.V.u u u u i u u i i u u u u u 8.E.E.J.E.J.E.J.E.J.E.E.E.E.8. 7 <.<.<.1.<.M % - % % - - % * % ",
|
||||
"* % * % * % - % % > <.<.1.<.<.<.F.E.E.J.J.E.E.E.E.J.E.E.E.E.J.E.E.J.E.E.E.E.J.E.E.E.E.J.E.E.J.J.E.E.E.J.J.E.E.E.E.E.E.J.E.E.E.E.0 y.E.E.J.E.J.E.E.J.E.J.E.E.J.E.E.J.E.E.J.E.E.E.E.J.E.E.E.E.J.J.S.2.2.4.2.7.2.2.7.2.2.7.2.;.1.<.<.<.<.m - % * - % % - % & ",
|
||||
"* % * % % * % - & = <.<.<.<.<.<.F.E.J.E.E.E.E.J.E.E.J.E.E.J.E.E.E.E.J.E.E.E.E.E.J.E.E.E.J.E.E.E.E.E.J.E.J.E.E.E.E.J.E.E.E.E.E.J.V.i.i.i.J.E.E.Y.J.E.E.J.E.E.J.E.E.E.J.E.E.J.E.E.J.E.E.J.E.E.E.J.E.J.E.E.J.E.E.E.J.E.E.E.E.E.Y.J.<.<.<.1.<.<.m * % & % - % % % & ",
|
||||
"* * % * * * % % % > <.<.<.<.<.<.F.J.J.E.J.J.J.E.E.J.E.J.J.E.E.J.Y.J.E.J.E.J.J.E.E.J.E.J.E.J.J.E.J.J.E.J.E.E.J.J.E.E.J.J.J.E.J.E.J.J.J.E.J.J.J.E.J.E.E.J.J.E.J.E.E.J.E.J.J.E.J.E.E.J.J.E.J.J.J.E.J.E.J.J.E.E.J.J.E.E.J.J.J.J.E.J.<.<.<.<.<.<.m % * % % * % - % % ",
|
||||
"% * * % % % * % % > <.<.<.<.<.<.1.M.M.M.1.M.M.M.M.M.M.M.M.M.M.M.M.M.M.1.M.M.M.1.M.M.M.M.M.M.1.1.M.M.M.M.M.M.1.1.M.M.M.M.M.M.1.M.M.M.M.M.M.M.M.1.M.M.M.M.M.M.M.M.1.M.M.M.M.M.M.M.M.M.M.M.M.M.M.1.M.M.M.M.M.M.1.1.M.M.M.M.M.M.M.M.<.<.<.<.<.<.m % % * % % % * - % ",
|
||||
"% % % % * % % * % = <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.n % % % % * % % % % ",
|
||||
"% * % % % % % % % = <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.n % % % * % % - % % ",
|
||||
"% % * % % % % % % > <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.n $ % % % % % % % % ",
|
||||
"% % % % % % % % % = <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.,.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.6 = % % % % % % % % ",
|
||||
"% $ % % % $ % % % % ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( / ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 6 $ % % % % % % % % ",
|
||||
"% % % % % % % % % $ % % $ % % % % % % % % % % % $ $ $ $ $ $ $ % $ % $ % $ % % % % % % % % % % % $ $ % $ % % $ % % % % % % % % $ % % % % $ % $ % $ $ $ $ $ % % $ % $ % % $ % % % % % $ % % $ % $ $ $ % % $ % % $ $ % % $ % % % $ $ % $ % % % % % % % % % % % % % ",
|
||||
"_.$ $ % $ $ $ $ $ % % $ % $ $ $ $ $ $ % $ $ $ % $ $ $ $ $ $ $ $ % % % $ % $ $ % $ $ $ % $ $ $ % $ $ $ % $ % % $ $ % $ $ $ $ % $ $ $ $ $ % $ % % $ $ $ $ $ $ $ % % $ $ % % $ $ % $ $ % % $ % $ % $ $ % $ $ % % $ % $ $ % $ $ % $ % $ % % $ $ $ $ % % $ % $ $ $ $ ",
|
||||
"_.$ % $ $ $ $ % $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ % $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ % $ $ $ $ $ % $ % $ $ % % $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ % $ % $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ % $ $ % $ $ $ $ % $ $ % % $ % $ $ % $ _.",
|
||||
"_._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _.",
|
||||
"_._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _._.",
|
||||
"_._._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % _._._.",
|
||||
"_._._._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _._._._._.",
|
||||
"_._._._._._._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % _._._._._._._._."
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -1,222 +1,215 @@
|
||||
/* XPM */
|
||||
static char *icon_kicad_64[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"64 64 152 2 ",
|
||||
"64 64 145 2 ",
|
||||
" c #A33E03",
|
||||
". c #A44106",
|
||||
"X c #A5430A",
|
||||
"o c #A94C16",
|
||||
"O c #AB511D",
|
||||
"+ c #876900",
|
||||
"@ c #8A6B00",
|
||||
"# c #8F7000",
|
||||
"$ c #937300",
|
||||
"% c #997700",
|
||||
"& c #9D7A00",
|
||||
"* c #8D7112",
|
||||
"= c #A27E00",
|
||||
"- c #AF5C2B",
|
||||
"; c #B05E2D",
|
||||
": c #B15F30",
|
||||
"> c #957E2D",
|
||||
", c #B36335",
|
||||
"< c #B3673B",
|
||||
"1 c #B56A3D",
|
||||
"2 c #B76D42",
|
||||
"3 c #B97046",
|
||||
"4 c #B77249",
|
||||
"5 c #B9754D",
|
||||
"6 c #BB7A53",
|
||||
"7 c #BD7E59",
|
||||
"8 c #A68100",
|
||||
"9 c #AB8500",
|
||||
"0 c #AF8800",
|
||||
"q c #B38B00",
|
||||
"w c #B88F00",
|
||||
"e c #B28C09",
|
||||
"r c #BC9200",
|
||||
"t c #B9930E",
|
||||
"y c #B28E11",
|
||||
"u c #BB971C",
|
||||
"i c #97802D",
|
||||
"p c #9C832E",
|
||||
"a c #A0872F",
|
||||
"s c #BC9C2E",
|
||||
"d c #A48A30",
|
||||
"f c #A98E31",
|
||||
"g c #AD9232",
|
||||
"h c #B29634",
|
||||
"j c #B69934",
|
||||
"k c #C19600",
|
||||
"l c #C59900",
|
||||
"z c #C99C00",
|
||||
"x c #C09708",
|
||||
"c c #C09A13",
|
||||
"v c #C8A11A",
|
||||
"b c #C29E24",
|
||||
"n c #CAA62C",
|
||||
"m c #C4A438",
|
||||
"M c #988540",
|
||||
"N c #9A8849",
|
||||
"B c #BE815D",
|
||||
"V c #BEA344",
|
||||
"C c #BD8C70",
|
||||
"Z c #C1825D",
|
||||
"A c #CCAE43",
|
||||
"S c #C7AC51",
|
||||
"D c #CFB65F",
|
||||
"F c #C58E6D",
|
||||
"G c #C79375",
|
||||
"H c #C89376",
|
||||
"J c #C69679",
|
||||
"K c #C99578",
|
||||
"L c #C6997F",
|
||||
"P c #CA997C",
|
||||
"I c #C2AC60",
|
||||
"U c #CAB66E",
|
||||
"Y c #C6B67C",
|
||||
"T c #D3C07D",
|
||||
"R c #BC9680",
|
||||
"E c #AEAA9D",
|
||||
"W c #B0AC9F",
|
||||
"Q c #B2AEA1",
|
||||
"! c #B6B2A4",
|
||||
"~ c #B9B5A7",
|
||||
"^ c #BBB7A9",
|
||||
"/ c #BEBAAB",
|
||||
"( c #B3B3B3",
|
||||
") c #BBBBBB",
|
||||
"_ c #C79C82",
|
||||
"` c #C89C82",
|
||||
"' c #CBA48E",
|
||||
"] c #CEBF8A",
|
||||
"[ c #CFA790",
|
||||
"{ c #CCA995",
|
||||
"} c #D0AA94",
|
||||
"| c #C9BE96",
|
||||
" . c #D8B39E",
|
||||
".. c #C5B5AB",
|
||||
"X. c #CBB6A9",
|
||||
"o. c #C1BDAE",
|
||||
"O. c #D4B7A6",
|
||||
"+. c #D5BAAA",
|
||||
"@. c #D9BDAC",
|
||||
"#. c #C4BFB0",
|
||||
"$. c #C3BDB9",
|
||||
"%. c #D6C99A",
|
||||
"&. c #DACB98",
|
||||
"*. c #CCC5AA",
|
||||
"=. c #D1C7A3",
|
||||
"-. c #DCCEA1",
|
||||
";. c #DED3AD",
|
||||
":. c #C6C1B1",
|
||||
">. c #CAC5B5",
|
||||
",. c #CEC9B8",
|
||||
"<. c #D7C1B4",
|
||||
"1. c #D9C3B7",
|
||||
"2. c #D3CDB6",
|
||||
"3. c #D7C5BB",
|
||||
"4. c #D9C6BA",
|
||||
"5. c #D2CDBC",
|
||||
"6. c #DBC9BE",
|
||||
"7. c #D9D0B1",
|
||||
"8. c #D6D1BF",
|
||||
"9. c #E1C6B6",
|
||||
"0. c #C4C3C3",
|
||||
"q. c #CBCBCB",
|
||||
"w. c #DBCCC4",
|
||||
"e. c #DCCFC8",
|
||||
"r. c #D6D2C3",
|
||||
"t. c #DAD5C3",
|
||||
"y. c #DED9C7",
|
||||
"u. c #D6D4CF",
|
||||
"i. c #DDD2CC",
|
||||
"p. c #D4D4D3",
|
||||
"a. c #DDD7D3",
|
||||
"s. c #DED9D4",
|
||||
"d. c #DBDBDB",
|
||||
"f. c #E5CFC2",
|
||||
"g. c #E6D1C4",
|
||||
"h. c #E8D1C5",
|
||||
"j. c #E3D4CA",
|
||||
"k. c #E1DCCB",
|
||||
"l. c #E8D8CF",
|
||||
"z. c #E2DAD6",
|
||||
"x. c #E2DEDC",
|
||||
"c. c #E3E1DD",
|
||||
"v. c #ECE2DC",
|
||||
"b. c #E4E4E4",
|
||||
"n. c #EAE6E3",
|
||||
"m. c #E9E8E7",
|
||||
"M. c #EBEBEB",
|
||||
"N. c #F1E7E2",
|
||||
"B. c #F2E8E3",
|
||||
"V. c #F3F3F3",
|
||||
"C. c #F9F9F9",
|
||||
"Z. c None",
|
||||
". c #A44006",
|
||||
"X c #A6430B",
|
||||
"o c #A84A13",
|
||||
"O c #AB4F1A",
|
||||
"+ c #AB521E",
|
||||
"@ c #876900",
|
||||
"# c #8A6B00",
|
||||
"$ c #906F00",
|
||||
"% c #8F7006",
|
||||
"& c #947301",
|
||||
"* c #997700",
|
||||
"= c #9C7A01",
|
||||
"- c #8F7518",
|
||||
"; c #92771C",
|
||||
": c #957A1C",
|
||||
"> c #9A7E1D",
|
||||
", c #A27E00",
|
||||
"< c #AC5421",
|
||||
"1 c #AD5827",
|
||||
"2 c #AF5C2B",
|
||||
"3 c #B26335",
|
||||
"4 c #B46638",
|
||||
"5 c #B5693D",
|
||||
"6 c #AD6840",
|
||||
"7 c #B76E44",
|
||||
"8 c #B7724A",
|
||||
"9 c #B9734A",
|
||||
"0 c #BB7750",
|
||||
"q c #BB7C57",
|
||||
"w c #BB7D59",
|
||||
"e c #9E811D",
|
||||
"r c #A68101",
|
||||
"t c #AB8500",
|
||||
"y c #AF8801",
|
||||
"u c #B08700",
|
||||
"i c #B38B01",
|
||||
"p c #B88F00",
|
||||
"a c #B48E0D",
|
||||
"s c #B79007",
|
||||
"d c #BC9200",
|
||||
"f c #BD9508",
|
||||
"g c #A3851E",
|
||||
"h c #A7891E",
|
||||
"j c #AB8C1F",
|
||||
"k c #B28E12",
|
||||
"l c #B99312",
|
||||
"z c #BE9814",
|
||||
"x c #B4911B",
|
||||
"c c #AF8F20",
|
||||
"v c #B29120",
|
||||
"b c #BB9923",
|
||||
"n c #BEA039",
|
||||
"m c #C29600",
|
||||
"M c #C69A00",
|
||||
"N c #C89B00",
|
||||
"B c #C49A0A",
|
||||
"V c #C59F1B",
|
||||
"C c #C09F2A",
|
||||
"Z c #C7A52F",
|
||||
"A c #BE825F",
|
||||
"S c #BF8361",
|
||||
"D c #AF8B76",
|
||||
"F c #B08C77",
|
||||
"G c #C3A743",
|
||||
"H c #CBAF4F",
|
||||
"J c #C2AB5B",
|
||||
"K c #D1B555",
|
||||
"L c #C28562",
|
||||
"P c #C28B6B",
|
||||
"I c #C38E70",
|
||||
"U c #C69172",
|
||||
"Y c #C99272",
|
||||
"T c #C8977A",
|
||||
"R c #C7997E",
|
||||
"E c #CB9B7F",
|
||||
"W c #C8B266",
|
||||
"Q c #CEB970",
|
||||
"! c #B99580",
|
||||
"~ c #B09789",
|
||||
"^ c #ADA99B",
|
||||
"/ c #B7ACA6",
|
||||
"( c #BBABA2",
|
||||
") c #BAB1AB",
|
||||
"_ c #B4B4B4",
|
||||
"` c #BCBCBC",
|
||||
"' c #C99D83",
|
||||
"] c #CBA28A",
|
||||
"[ c #C7B780",
|
||||
"{ c #CCBC85",
|
||||
"} c #C1A697",
|
||||
"| c #CDA791",
|
||||
" . c #CCA995",
|
||||
".. c #CEAE9B",
|
||||
"X. c #D2AB94",
|
||||
"o. c #D2AF9B",
|
||||
"O. c #D1B19E",
|
||||
"+. c #CFB2A1",
|
||||
"@. c #D2B3A1",
|
||||
"#. c #D9B9A7",
|
||||
"$. c #D6BBAB",
|
||||
"%. c #DABBA9",
|
||||
"&. c #D6C382",
|
||||
"*. c #CBC09A",
|
||||
"=. c #D3C593",
|
||||
"-. c #D9CB9B",
|
||||
";. c #CDC6AF",
|
||||
":. c #D1C7A6",
|
||||
">. c #D6CDAD",
|
||||
",. c #D6C1B5",
|
||||
"<. c #DAC3B5",
|
||||
"1. c #D7C7BD",
|
||||
"2. c #D9C6BB",
|
||||
"3. c #D4CEBB",
|
||||
"4. c #DDCABF",
|
||||
"5. c #DDD5B9",
|
||||
"6. c #C4C4C4",
|
||||
"7. c #CBC7C5",
|
||||
"8. c #CCCCCC",
|
||||
"9. c #D0CDC1",
|
||||
"0. c #DBCDC4",
|
||||
"q. c #DACFC8",
|
||||
"w. c #D9D5C5",
|
||||
"e. c #D6D3CA",
|
||||
"r. c #DDD2CC",
|
||||
"t. c #DFDBCC",
|
||||
"y. c #D4D4D4",
|
||||
"u. c #DED6D2",
|
||||
"i. c #DDD9D5",
|
||||
"p. c #DCDCDC",
|
||||
"a. c #E2CEC3",
|
||||
"s. c #E4D1C6",
|
||||
"d. c #E2D4CB",
|
||||
"f. c #E8D6CC",
|
||||
"g. c #E6DCD6",
|
||||
"h. c #E2DEDA",
|
||||
"j. c #E5E1DE",
|
||||
"k. c #E8E1DD",
|
||||
"l. c #E4E4E4",
|
||||
"z. c #E8E4E2",
|
||||
"x. c #ECE8E6",
|
||||
"c. c #EBEBEB",
|
||||
"v. c #F4F4F4",
|
||||
"b. c #F9F9F9",
|
||||
"n. c None",
|
||||
/* pixels */
|
||||
"Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.Z.Z.Z.z z z z z z z z z z z z z z z z z z z z z z z z z z z z Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.z z z z z z z z z z z z z Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.Z.z z z z z z z z z z z z z z z z z z z z z z z z z l z z z z z z z Z.Z.Z.Z.Z.Z.Z.z z z z z z z z z z z z z z z z z Z.Z.Z.",
|
||||
"Z.Z.Z.l l l l l l l z l l l z l l l l l l l z l z k k z z l z l l z l z z l Z.Z.Z.Z.Z.Z.l l l z z k z l l z l l z l z l z z Z.Z.",
|
||||
"Z.Z.Z.l l l l l l l l l l l l l l l l l l l l l k z z k l k l l k z k z k z z Z.Z.Z.Z.Z.Z.l l l k z l l l k l l k z k l l l Z.Z.",
|
||||
"Z.Z.Z.l l l l &.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.-.v l l k k l Z.Z.Z.Z.Z.l l k l k l l l k l k l l l l k Z.Z.",
|
||||
"Z.Z.Z.k l k k k.m.b.b.m.b.b.b.b.m.b.b.m.b.b.b.b.m.b.b.m.b.m.b.b.b.m.b.z.n k k l k l Z.Z.Z.Z.Z.l z k l k k l l k z k k l k l Z.Z.",
|
||||
"Z.Z.Z.k k k k k.b.b.M.M.m.M.M.M.M.M.M.M.M.M.V.M.m.j.j.B.M.M.M.M.M.M.b.b.d.A r l r l k Z.Z.Z.Z.Z.l k k k k k k k k k k k k k Z.Z.",
|
||||
"Z.Z.Z.k k k k y.b.b.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.V.b.b.b.D l l r k k Z.Z.Z.Z.Z.k k k k k k k r k k k k k Z.Z.",
|
||||
"Z.Z.Z.k k r r k.b.c.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.C.V.b.c.c.] k k r k l Z.Z.Z.Z.Z.k k k k k k k k k k k k Z.Z.",
|
||||
"Z.Z.Z.k r k r y.c.b.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. . B.C.C.C.C.C.C.C.C.V.b.b.c.%.x k r r r Z.Z.Z.Z.Z.r k r r k r k r k k r Z.Z.",
|
||||
"Z.Z.Z.r r r r y.b.c.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.C.C.C.V.b.c.b.7.u r r r r r Z.Z.Z.Z.Z.r r r r k r r r r Z.Z.",
|
||||
"Z.Z.Z.r r r r y.d.d.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.C.C.C.C.C.b.d.c.t.b r r r r r Z.Z.Z.Z.Z.r k r r r r r r Z.Z.",
|
||||
"Z.Z.Z.r r w w t.d.b.C.C.C.C.C.C.C.C.C.C.C.C.C.C.f. B.C.C.C.C.C.C.C.C.C.C.C.C.M.d.d.a.m r r r r r Z.Z.Z.Z.Z.r r r r r r r Z.Z.",
|
||||
"Z.Z.Z.r r w w t.d.d.V.C.C.C.C.C.C.C.C.V.C.C.C.C.f. N.C.C.V.C.C.C.C.C.C.C.V.C.C.M.d.c.d.S r w w w w Z.Z.Z.Z.Z.r r r r r r Z.Z.",
|
||||
"Z.Z.Z.w w w w t.d.d.V.C.V.C.C.C.C.C.C.C.C.C.C.C.9.X B.C.C.C.C.C.C.C.C.C.C.C.C.V.C.V.d.d.d.U w w w w w Z.Z.Z.Z.Z.w w r w Z.Z.Z.",
|
||||
"Z.Z.Z.w w w w 8.d.d.V.C.V.C.V.C.C.V.V.C.V.C.v.j. . 9.h.v.V.C.V.V.C.V.V.C.V.C.C.C.C.M.d.d.d.] r w w w w Z.Z.Z.Z.Z.Z.w Z.Z.Z.Z.",
|
||||
"Z.Z.Z.w w w w 8.d.d.V.C.C.V.V.C.V.V.C.V.V.C.Z F C.C.C.V.V.C.V.C.C.V.V.C.V.C.V.d.d.d.=.t w w w w w Z.Z.Z.Z.Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.w w w w 8.d.d.V.V.V.C.C.V.V.C.V.C.V.V.Z F C.V.V.C.C.V.C.V.V.C.V.V.V.C.C.V.x.d.d.2.u w q w q w Z.Z.Z.Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.q q q q 5.d.p.V.C.V.C.V.V.C.V.V.V.C.V.Z . 1 l.l.; F V.V.V.V.V.C.V.V.V.V.C.V.C.V.V.V.V.b.d.p.r.s q q q q q Z.Z.Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.q q q w 5.p.d.V.V.V.V.V.V.V.V.C.C.V.V.Z 3 V.C., F V.V.V.C.V.V.C.V.C.V.V.V.C.V.V.V.C.V.b.d.p.u.V q q q q q Z.Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.q q q q 5.d.p.V.V.V.V.V.V.V.V.V.V.V.V.Z . 3 V.C., F V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.M.p.p.d.I q q q q q Z.Z.Z.Z.Z.",
|
||||
"Z.Z.Z.q 0 0 0 5.p.p.V.V.V.V.V.V.V.V.V.V.V.V.Z 3 V.V., F V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.M.d.p.p.Y e q 0 q q Z.Z.Z.Z.",
|
||||
"Z.Z.Z.q 0 0 0 5.p.p.V.V.V.V.V.V.V.V.V.V.V.V.7 3 V.V., F V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.M.d.p.p.| e 0 0 0 0 Z.Z.Z.",
|
||||
"Z.Z.Z.0 0 0 0 ,.p.p.M.V.V.V.V.V.V.V.V.V.V.V.Z 3 V.V., F V.V.V.V.M.V.V.V.M.V.V.M.V.V.M.V.V.V.V.V.V.V.M.d.p.p.*.y 0 0 0 q Z.Z.",
|
||||
"Z.Z.Z.0 0 0 0 ,.q.p.V.V.V.M.V.V.V.V.M.V.M.V.Z 2 N.n., F M.V.V.V.M.V.M.V.V.V.V.V.V.V.V.V.V.V.M.V.M.V.V.V.p.p.p.j 0 0 0 0 Z.Z.",
|
||||
"Z.Z.Z.0 9 0 9 ,.p.p.V.M.V.V.M.V.M.M.V.V.V.V.7 F V.V.M.V.V.V.V.V.M.V.V.M.V.M.V.M.V.M.M.V.V.V.V.M.d.q.p.h 0 9 8 0 Z.Z.",
|
||||
"Z.Z.Z.0 9 9 9 >.q.p.V.M.V.V.V.M.V.V.V.M.V.V.Z F V.M.M.V.M.V.V.V.V.M.V.M.V.V.V.M.M.V.V.V.M.V.V.V.d.p.p.h 9 0 0 8 Z.Z.",
|
||||
"Z.Z.Z.9 9 8 9 >.p.q.M.M.M.M.M.V.M.M.M.V.M.M.f.@.P . +.@.g.V.M.V.M.V.V.M.M.V.` P ` P P P P K K G G G v.M.V.p.p.q.h 9 8 8 0 Z.Z.",
|
||||
"Z.Z.Z.9 9 9 8 >.q.p.M.V.V.V.M.M.V.V.M.M.V.V.M.M.+. X V.M.M.V.V.M.M.M.M.V.M.M.X X - l.M.d.p.q.j 8 0 9 9 Z.Z.",
|
||||
"Z.Z.Z.8 8 9 9 >.q.q.M.M.M.M.M.V.M.M.M.V.M.M.M.V.@. X M.V.M.M.M.M.V.V.M.M.V.M.X X X X X X X O j.p.q.q.h 9 8 8 8 Z.Z.",
|
||||
"Z.Z.Z.8 = 9 9 #.q.q.M.M.M.M.M.M.M.V.M.M.M.V.M.M.@. , , , < , , , < , , , , X L M.M.M.V.M.M.M.V.H o ..q.q.g 9 8 8 8 Z.Z.",
|
||||
"Z.Z.Z.9 8 8 = >.q.q.M.M.M.M.M.M.M.M.M.M.M.M.M.M.@. X C M.M.M.M.M.M.M.M.+. C q.q.g = 9 8 9 Z.Z.",
|
||||
"Z.Z.Z.8 = 9 = #.q.q.M.M.M.M.M.M.M.M.M.x.} } x.M.+. G C F C J F F F F F F F X o - - : : : : , : X { p.0.q.g = = 8 = Z.Z.",
|
||||
"Z.Z.Z.= = = = #.q.0.M.M.M.M.M.M.M.M.m.f. 3.M.` b.M.M.M.b.M.M.M.M.M.M.M.X . o +.M.p.q.q.f = = = 8 Z.Z.",
|
||||
"Z.Z.Z.= = = = #.0.q.b.M.M.m.m.m.M.M.m.w. 1.+.X o b.M.M.b.M.M.m.m.M.M.M.m.B B 7 7 7 6 6 6 6 5 5 5 w.m.m.p.q.0.g = = = = Z.Z.",
|
||||
"Z.Z.Z.= = = = #.q.0.b.M.m.M.M.m.m.m.M.4. H o 1.M.b.M.M.M.m.m.m.M.b.M.m.m.M.M.b.m.m.m.m.m.m.m.m.M.M.m.p.0.q.g = = = = Z.Z.",
|
||||
"Z.Z.Z.= = = = #.0.0.b.M.m.m.m.m.m.m.m.4. O w.M.m.M.M.m.m.m.m.M.b.b.M.m.m.M.b.M.b.b.m.m.m.m.m.m.m.m.m.p.q.0.f = & = = Z.Z.",
|
||||
"Z.Z.Z.= = & & #.0.0.w.C C F F C C F F 7 - j.m.m.b.b.m.b.m.M.b.m.b.M.m.b.m.b.M.b.M.b.m.b.m.m.m.m.b.b.m.q.0.0.f & = & = Z.Z.",
|
||||
"Z.Z.Z.& & = & / 0.0.{ O z.m.m.b.m.m.m.m.m.b.b.M.b.M.b.m.m.m.m.m.b.m.m.m.m.b.M.b.M.m.m.p.0.0.f & & = & Z.Z.",
|
||||
"Z.Z.Z.& & & & / 0.0.+., : , , < , : : - o i.b.b.m.b.m.b.b.m.b.M.M.b.b.b.b.m.m.b.m.b.b.m.b.m.m.b.m.b.b.b.q.0.0.f & & & & Z.Z.",
|
||||
"Z.Z.Z.& & & & / ) 0.b.m.b.b.M.b.m.b.M.3. O w.b.b.m.b.M.b.m.b.b.b.b.m.m.b.m.b.M.b.m.m.b.m.m.b.m.b.m.m.b.q.0.0.d % & & & Z.Z.",
|
||||
"Z.Z.Z.& % & % / 0.0.b.b.b.b.b.b.b.b.b.3. o 3.b.b.b.b.b.b.b.M.b.b.b.b.b.m.b.b.b.b.b.b.b.b.b.b.m.b.b.b.q.0.0.d & % % % Z.Z.",
|
||||
"Z.Z.Z.% % % % / 0.) b.b.b.b.b.b.m.b.b.4. ' X X +.m.b.b.b.b.m.b.b.b.b._ _ ` _ _ _ _ _ _ _ _ _ _ _ _ _ _ ..) ) d % % % % Z.Z.",
|
||||
"Z.Z.Z.% % % % ^ 0.) b.b.b.m.b.m.b.b.m.4. <.4.o b.m.b.m.b.m.b.m.b.d.. . X . . . . R 0.0.d % % % & Z.Z.",
|
||||
"Z.Z.Z.% % % % ^ 0.) b.b.b.b.b.b.b.b.b.w.< < w.b.<. b.b.b.b.b.b.b.b.b.d. ' b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.q.0.) a % % % % Z.Z.",
|
||||
"Z.Z.Z.% $ % $ ~ ) ) b.b.b.b.b.b.b.b.b.b.b.b.b.b.e. d.b.b.b.b.b.b.b.b.s. ' i.o o o o X.m.b.; - - : - - 2 0.) ) a $ % $ % Z.Z.",
|
||||
"Z.Z.Z.% $ $ $ ~ $.) d.b.b.b.b.b.b.b.b.d.b.b.b.b.w. d.b.b.b.b.b.b.b.b.s. ' u.o o o o X.b.b. O q.) ) a % $ $ % Z.Z.",
|
||||
"Z.Z.Z.$ $ $ $ ! ) ) b.b.b.b.b.b.b.b.b.b.b.b.b.b.w. a.b.b.b.b.b.b.b.b.s. ' b.b.b.b.b.b.b.b.d.d.b.x.d.x.x.0.) ) a $ $ $ $ Z.Z.",
|
||||
"Z.Z.Z.$ $ $ $ ! ) ) x.b.b.b.b.b.b.b.b.b.b.b.b.b.e. a.b.b.b.b.b.d.b.b.s. ' b.b.d.b.b.b.b.b.b.b.b.b.b.b.b.0.) ) a $ $ $ $ Z.Z.",
|
||||
"Z.Z.Z.$ $ $ $ ! ( ) d.b.b.b.b.d.b.d.b.b.b.d.w.{ _ ' { X.b.d.b.b.x.b.s. ' w.3.3.<.3.i.b.b.b.b.3.{ { { { 0.( ( p # # $ $ Z.Z.",
|
||||
"Z.Z.Z.$ $ # # Q ( ) d.b.d.d.b.b.b.d.b.b.b.b._ 4 b.b.b.b.b.b.s. ' < J c.c.b.c.C $.) ) a $ # # # Z.Z.",
|
||||
"Z.Z.Z.# # # # Q ) ( b.d.b.b.d.b.b.b.b.d.d.c._ X X X X . 4 b.b.d.b.b.d.s. ' 4 o o o o _ b.b.d.x.C $.) ( > # # # # Z.Z.",
|
||||
"Z.Z.Z.# # # # Q ( ( b.b.b.d.b.b.b.d.b.d.b.b.c.c.d.b.b.b.b.b.d.d.d.b.d.b.d._ 3.b.b.b.b.d.d.b.b.b.x.u.3.w.3.w.) ( ( > # # # # Z.Z.",
|
||||
"Z.Z.Z.# # # # E ) ( d.d.b.b.b.d.b.d.b.b.b.d.b.d.b.d.c.b.d.b.b.b.b.b.d.b.d.b.c.b.d.d.b.b.b.b.d.d.b.c.b.x.d.b.0.( ( p # @ # # Z.Z.",
|
||||
"Z.Z.Z.# # @ # E ( ( d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.0.( ( > @ # @ @ Z.Z.",
|
||||
"Z.Z.Z.# + # + E ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( > @ @ @ # Z.Z.",
|
||||
"Z.Z.Z.+ + # @ W ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( > @ @ @ @ Z.Z.",
|
||||
"Z.Z.Z.# + + @ M N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N * @ @ @ @ Z.Z.",
|
||||
"Z.Z.Z.+ @ + @ + + + + + + + + + + + @ + @ + + + + + + + @ + @ + + + + + + + + + @ + @ + + + + + + + + + @ + @ + @ + @ @ @ Z.Z.Z.",
|
||||
"Z.Z.Z.Z.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ Z.Z.Z.",
|
||||
"Z.Z.Z.Z.Z.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ Z.Z.Z.Z.",
|
||||
"Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z."
|
||||
"n.n.n.N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N n.n.n.n.n.n.n.n.n.n.N N N N N N N N N N M N N N N N N n.",
|
||||
"n.M N M N M M N N N N M N N N N N M N N N M M M M M M N M M M N M M M M M M n.n.n.n.n.n.n.M N N N N N N M M N N N N N N N M N N ",
|
||||
"n.M M M M M M M M M M M M M M M M M N N M M M M M M M M M M M N N M M M M M M n.n.n.n.n.n.M M M M M M M M M M M M M M M M M M N ",
|
||||
"M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M n.n.n.n.n.n.M M M M M M M M M M M M M M M M M M ",
|
||||
"M m M M B l.x.l.l.c.l.c.l.c.l.l.l.l.c.l.c.l.c.l.l.c.l.c.l.l.l.l.c.x.l.K M m M m m m n.n.n.n.n.M M m M m M m m M m M M M M M M d ",
|
||||
"M m m m B l.l.l.l.l.l.l.l.l.c.l.c.l.l.l.l.l.l.x.l.l.x.l.c.l.c.l.l.l.z.l.&.M m m M m M n.n.n.n.n.M m m m M m M m m m m M d M M M ",
|
||||
"m m m m B l.l.l.c.c.v.c.c.v.c.c.v.c.c.v.c.c.v.c.$.$.s.c.c.c.v.c.c.c.l.l.l.-.B m m m m m n.n.n.n.n.m m M m m m m m M M f M M d M ",
|
||||
"m m m m m l.l.l.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o . Y b.b.b.b.b.b.b.v.l.l.l.5.V M d m m M n.n.n.n.n.m m m m m m m d d M d d M d ",
|
||||
"m m m d f l.l.l.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.l.l.l.t.Z f M d f M n.n.n.n.n.n.d m m m m d m m m d m m ",
|
||||
"d d m m B l.p.l.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.l.p.l.p.H M d f f d d n.n.n.n.n.m d m d m d m d m m d ",
|
||||
"d d d d f p.l.p.v.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.b.c.p.l.l.Q d d d d d d n.n.n.n.n.d d d d d d d d d d ",
|
||||
"d d d d f l.p.l.v.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.b.b.x.p.p.p.=.f d d d d d n.n.n.n.n.d d m d m d m d d ",
|
||||
"d d p d f p.j.p.v.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.b.b.b.v.p.p.l.>.z d d d p d n.n.n.n.n.d d d d d d d d ",
|
||||
"d d p d f p.p.p.v.b.v.b.b.b.b.b.b.b.b.v.b.v.b.b.o Y b.v.b.b.b.b.b.b.v.b.b.b.b.b.v.p.p.p.w.b s d d d d n.n.n.n.n.n.p d d d d p ",
|
||||
"p p p d s p.p.p.v.b.b.b.b.b.b.b.b.v.b.b.b.b.b.b.o Y b.b.b.v.b.b.b.b.b.v.b.b.b.b.v.v.l.p.p.i.G d p p p d p n.n.n.n.n.d d p p p ",
|
||||
"d p p p s p.p.y.v.b.v.b.v.b.b.b.b.b.v.v.b.v.v.b.o P b.v.b.b.b.b.b.v.b.b.v.b.v.b.b.b.v.x.p.p.i.W p p p p p p n.n.n.n.n.d p d n.",
|
||||
"i p p p a p.p.i.v.v.b.b.b.v.v.b.b.v.b.b.v.' O O . X O O f.b.v.b.v.b.b.b.v.b.v.v.b.v.b.v.l.p.p.p.{ a p i d i p n.n.n.n.n.n.n.n.",
|
||||
"i p p p s i.p.y.v.v.v.v.v.b.b.v.b.v.v.v.b.U . . s.b.v.v.b.v.v.v.b.v.b.b.v.b.v.b.v.c.i.y.p.:.l i d i p p n.n.n.n.n.n.n.",
|
||||
"i p i i a y.y.p.v.v.b.v.v.v.b.b.v.v.b.b.b.Y 7 7 5 f.b.b.b.v.b.v.b.v.b.v.v.b.v.b.v.b.v.v.p.p.i.3.b i i s p i n.n.n.n.n.n.",
|
||||
"i i i i s p.y.y.v.v.v.b.b.v.v.v.v.b.v.v.v.Y X b.b.%. s.v.v.v.v.v.v.b.v.v.v.v.v.b.v.v.v.b.v.v.p.p.y.e.n i i i i i n.n.n.n.n.",
|
||||
"i i i y s y.i.y.c.v.v.v.v.v.v.v.v.v.v.v.v.Y X v.v.#. s.v.v.v.b.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.p.p.y.y.J i i i i i p n.n.n.",
|
||||
"i y i s a y.y.y.v.v.v.v.v.v.v.v.v.v.v.v.v.Y X v.v.%. a.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.l.y.p.y.[ y i i u i y n.n.",
|
||||
"y i y y a y.y.y.c.v.v.v.v.v.v.v.v.v.v.v.v.U X v.v.#. a.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.c.v.v.v.v.v.c.y.y.y.+.s y i u y i n.",
|
||||
"y y y y y p.y.y.c.v.v.v.v.v.v.v.v.v.v.v.v.U X v.v.#. a.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.x.p.y.y.;.x i u i u y ",
|
||||
"y y y y y y.y.y.c.v.v.c.v.c.v.v.v.v.v.v.v.P X v.v.#. a.v.v.v.v.v.v.v.v.v.v.v.v.c.v.c.v.v.v.c.v.c.v.c.v.v.i.y.y.9.k y y y y ",
|
||||
"y y y y a y.y.y.c.v.v.v.v.v.v.c.c.v.v.c.v.Y X #.#.Y a.v.c.v.c.c.v.v.c.v.c.v.v.v.v.c.v.v.v.v.v.v.v.v.v.v.c.y.y.y.v y t y t ",
|
||||
"t y t y k 8.y.8.c.c.c.v.v.c.v.c.c.v.c.v.v.Y a.v.v.v.v.c.v.c.v.v.c.v.c.c.v.v.v.v.c.v.c.c.v.v.c.v.c.8.y.y.v y t t y ",
|
||||
"t t t t t y.8.y.c.v.v.c.v.c.v.v.v.v.c.v.c.Y a.c.c.c.v.v.c.v.v.c.v.v.c.v.v.v.c.c.v.c.v.v.v.c.v.v.c.y.8.8.v t t t t ",
|
||||
"t t t t t 8.8.y.c.v.c.v.c.v.v.c.c.c.c.v.c.g.a.4. Y 0.4.x.c.v.c.v.v.c.c.c.v.$.L L L L L L L L L A L L O.c.v.v.y.8.8.v t t t t ",
|
||||
"t t r t a 8.8.y.l.c.c.v.c.c.c.v.c.v.v.c.v.c.c.c. X.v.v.c.v.c.v.c.c.c.c.v.v.U . . . R c.c.8.y.8.v t t t r ",
|
||||
", r t t r y.8.8.c.c.c.c.v.c.v.c.c.c.c.c.c.v.c.v. X.c.c.c.v.c.c.c.c.v.v.c.c.U . . . . . . . L c.8.8.8.c r t r t ",
|
||||
"t r r r r 8.8.8.l.v.v.c.c.c.c.c.c.v.c.v.c.c.c.c. < 4 4 4 4 4 4 4 4 4 3 4 4 5 . s.k.k.c.c.c.c.c.c.%.X . . 0 8.8.8.j r r r r ",
|
||||
"r r r r r 8.8.8.l.c.c.c.c.c.c.c.c.c.c.v.c.c.c.c. . . 2 i.c.c.c.c.c.c.c.c.z.4 X ( 7.8.c = r r r ",
|
||||
"r r , r r 8.8.7.l.c.c.c.c.c.c.c.c.c.h.$.<.k.c.c. 2 7 7 7 7 7 7 7 7 7 7 7 7 7 5 8 0 0 0 0 0 0 0 2 O <.7.8.6.c r r r r ",
|
||||
", r , r , 8.8.8.l.c.c.c.c.c.c.c.c.c.@. $.c.z. I c.l.c.c.c.c.c.c.c.l.x.c.U 2 u.l.8.7.8.c r r = r ",
|
||||
"r , , , g 6.6.8.l.c.c.c.l.c.l.c.c.x.#. $.h.8 S l.c.c.c.c.c.x.l.c.c.c.c.T o o o o o o o o o 7 j.x.c.7.7.6.c = r = r ",
|
||||
", , , , > 7.7.8.l.c.l.c.l.c.c.c.c.l.#. o.3 3 h.x.c.c.l.c.c.c.l.c.c.c.l.c.l.c.c.c.l.c.c.c.x.c.c.c.l.c.c.l.6.6.8.h r = r , ",
|
||||
", , , , , 6.6.6.l.c.c.l.c.x.l.c.l.c.+. < 8 j.c.x.l.c.c.l.l.l.c.c.l.c.c.l.c.c.l.c.c.c.l.x.c.l.l.c.c.l.c.c.8.8.6.h = r r = ",
|
||||
", , = , , 8.8.6.h.q.0.0.a.0.0.0.0.0.' w l.l.l.l.l.c.c.l.c.l.c.l.c.l.l.c.c.l.l.c.l.c.c.l.c.c.c.c.c.c.c.l.6.6.6.h = , = = ",
|
||||
"= = , = = 6.6.6.$. U l.c.c.l.c.l.c.l.c.c.l.l.c.l.l.c.l.l.c.l.l.c.l.x.l.l.l.l.l.l.l.l.l.7.6.6.g , , = , ",
|
||||
"= = , = , 6.6.6.$. + l.x.c.l.c.c.l.c.c.l. .' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ! 6.6.g = = = , ",
|
||||
"= = = = = 6.6.6.y...+.o.........o.o.P w l.l.l.l.l.l.l.l.l.< . . 1 6.6.g = = = = ",
|
||||
"= = = = = 6.` 6.l.l.l.c.l.c.l.c.l.x.+. 6 h.l.l.x.x.c.l.c.< < 1 2 2 1 1 2 2 1 1 2 1 1 2 1 1 1 1 1 1 1 1 6 6.` e * = = = ",
|
||||
"* = * * = 6.` 6.l.l.l.l.l.l.l.l.l.l.+. 2 3 d.l.l.l.l.l.l.+ e.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.x.l.l.l.l.6.6.6.e * = * = ",
|
||||
"* * * * - 6.` 6.p.l.l.l.c.l.l.l.l.l.o. +.8 < e.l.x.l.l.l.< q.l.o.R R R R R ,.l.l.l.1.@.O.O.O.+.O.O.O.O.` ` 6.e * * * * ",
|
||||
"* * * * = ` ` ` l.l.c.l.l.l.l.c.x.l... #.l.A L l.l.l.l.l.< r.z.5 U l.l.c.w . . . . . ( 6.` e * * * * ",
|
||||
"* & * * = 6.6.` p.l.l.l.l.l.l.l.l.l.0.P P 0.l.l.< S l.l.l.l.l.+ 0.l.5 U l.l.l.w . ( ` ` e * * * * ",
|
||||
"& * * * & ` ` ` l.l.l.l.l.l.l.l.l.l.l.z.l.l.l.l.2 U l.l.l.l.l.< 0.l.O.' ' ' ' ' ,.l.l.l.] w q q q q q q q A ) ` ` e & & * & ",
|
||||
"& & & * * 6.` ` p.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.2 . I l.l.l.l.l.+ 0.l.l.l.l.l.l.l.l.p.l.p.l.l.l.l.j.l.l.p.l.l.` ` ` > & * & & ",
|
||||
"* & & & & ` ` ` p.l.p.l.l.l.l.l.l.l.l.p.l.l.p.l.2 . I l.l.l.l.l.+ 0.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.` ` ` > & & & & ",
|
||||
"& & & & % ` ` ` p.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.2 F z.l.l.l.l.+ q.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.p.l.l.l.l.l._ ` ` > & & & & ",
|
||||
"$ & & # & _ ` _ p.l.l.l.l.l.l.p.l.l.p.l.l.q. . .+ 8 X. .e.l.l.< 0.u.u.u.u.y.u.i.i.l.l.l.l.l.l.p.+.+.+.+.+.+./ ` _ : $ % & & ",
|
||||
"& $ $ & & _ ` ` p.l.l.l.p.p.l.l.l.l.l.l.p. . .l.p.+ 0.w 3 l.l.p.l.l.l.1. F ` ` > & & # & ",
|
||||
"& # & $ % ` _ ` p.l.p.l.l.l.p.l.p.l.p.l.l. . .l.l.+ 0.w 4 p.l.l.l.p.p.1. F _ _ : # & # & ",
|
||||
"$ & # & % ` _ _ y.l.l.p.l.p.l.l.p.l.l.p.p.p.0.0.1.0.1.0.0.i.p.p.< 0.w 3 l.l.p.l.l.l.1. D _ _ > # & & # ",
|
||||
"# $ $ # % _ _ _ y.l.l.p.l.l.l.p.l.l.p.j.l.l.l.l.l.j.p.l.p.l.l.l.< 8.$.........+.} $.l.l.p.l.p.l.w.7 7 8 7 7 7 ~ _ _ : $ # $ $ ",
|
||||
"# % % # % _ _ _ p.p.p.l.l.p.l.p.p.p.l.l.p.l.p.p.l.p.l.p.l.p.l.p.r.q.p.p.l.l.p.l.p.l.p.l.p.l.p.l.p.l.p.l.p.l.l.p._ _ _ : # $ # $ ",
|
||||
"% # # % % _ _ _ ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` _ _ _ ; # # # # ",
|
||||
"# # # # % _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ; # # # # ",
|
||||
"# # # @ @ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ; # # # # ",
|
||||
"# # @ # % @ @ @ @ @ @ @ @ @ @ @ @ # @ # @ # @ # @ @ @ @ # @ @ # @ @ @ @ @ @ @ @ @ # @ # # @ @ # # # @ @ # @ @ # @ @ # @ # # @ # ",
|
||||
"n.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # @ @ n.",
|
||||
"n.n.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # n.",
|
||||
"n.n.n.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # n.n.n."
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 95 KiB |
@@ -1,15 +1,20 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<radialGradient id="a" gradientUnits="userSpaceOnUse" cy="25.129" cx="10.328" gradientTransform="matrix(.97815 .0053484 -.0046022 .84169 .97435 -1.027)" r="27.987">
|
||||
<linearGradient id="b">
|
||||
<stop stop-color="#89d5f8" offset="0"/>
|
||||
<stop stop-color="#00899e" offset="1"/>
|
||||
</radialGradient>
|
||||
</linearGradient>
|
||||
<radialGradient id="a" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17.014" cx="18.418" gradientTransform="matrix(.97244 -.10566 .050523 .465 -.35195 9.5854)" r="27.987"/>
|
||||
<radialGradient id="c" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="3.3918" cx="29.041" gradientTransform="matrix(.95171 -.22592 .15618 .65794 -.1085 12.423)" r="27.987"/>
|
||||
</defs>
|
||||
<g stroke-linejoin="bevel" stroke="#004c5b">
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.184 2.532 31.106 4.7272-17.549 18.997-36.353-7.117 22.796-16.607z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.058-18.119-0.963 31.586-15.549 22.977-0.546-36.444z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
|
||||
<path style="color:#000000" d="m27.439 2.865 0.561 30.953 28.853 5.765" stroke-dashoffset="2.5932" stroke-dasharray="4.32200003, 2.16100001" stroke-width="2.161" fill="none"/>
|
||||
<path style="color:#000000" d="m27.718 33.796-21.264 17.204" stroke-dashoffset="1.513" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.186-19.341-1.091 32.808-15.549 22.977-0.546-36.444z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.056 2.2749 30.976 4.47-17.291 19.511-36.482-7.374 22.797-16.607z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#c)" d="m58.007 6.7472-0.894 32.409-28.839-6.289-0.882-30.391 30.615 4.2718z"/>
|
||||
<path style="color:#000000" d="m28.195 32.896-21.559 18.377" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
|
||||
<path style="color:#000000" stroke-width="2.161" fill="url(#a)" d="m40.455 26.182-13.091-2.546"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m57.636 7.1818-16.909 18.909"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m41 36.455-0.182-10.182"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -1,20 +1,15 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1">
|
||||
<defs>
|
||||
<linearGradient id="b">
|
||||
<radialGradient id="a" gradientUnits="userSpaceOnUse" cy="25.129" cx="10.328" gradientTransform="matrix(.97815 .0053484 -.0046022 .84169 .97435 -1.027)" r="27.987">
|
||||
<stop stop-color="#89d5f8" offset="0"/>
|
||||
<stop stop-color="#00899e" offset="1"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="a" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17.014" cx="18.418" gradientTransform="matrix(.97244 -.10566 .050523 .465 -.35195 9.5854)" r="27.987"/>
|
||||
<radialGradient id="c" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="3.3918" cx="29.041" gradientTransform="matrix(.95171 -.22592 .15618 .65794 -.1085 12.423)" r="27.987"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<g stroke-linejoin="bevel" stroke="#004c5b">
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.186-19.341-1.091 32.808-15.549 22.977-0.546-36.444z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.056 2.2749 30.976 4.47-17.291 19.511-36.482-7.374 22.797-16.607z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#c)" d="m58.007 6.7472-0.894 32.409-28.839-6.289-0.882-30.391 30.615 4.2718z"/>
|
||||
<path style="color:#000000" d="m28.195 32.896-21.559 18.377" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
|
||||
<path style="color:#000000" stroke-width="2.161" fill="url(#a)" d="m40.455 26.182-13.091-2.546"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m57.636 7.1818-16.909 18.909"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m41 36.455-0.182-10.182"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.184 2.532 31.106 4.7272-17.549 18.997-36.353-7.117 22.796-16.607z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.058-18.119-0.963 31.586-15.549 22.977-0.546-36.444z"/>
|
||||
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
|
||||
<path style="color:#000000" d="m27.439 2.865 0.561 30.953 28.853 5.765" stroke-dashoffset="2.5932" stroke-dasharray="4.32200003, 2.16100001" stroke-width="2.161" fill="none"/>
|
||||
<path style="color:#000000" d="m27.718 33.796-21.264 17.204" stroke-dashoffset="1.513" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -13,7 +13,7 @@
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="lang_chinese.svg">
|
||||
sodipodi:docname="lang_zh.svg">
|
||||
<metadata
|
||||
id="metadata21">
|
||||
<rdf:RDF>
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,455 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="26"
|
||||
width="26"
|
||||
version="1.0"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.0 r15299"
|
||||
sodipodi:docname="lock_unlock.svg">
|
||||
<metadata
|
||||
id="metadata188">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1033"
|
||||
id="namedview186"
|
||||
showgrid="true"
|
||||
inkscape:zoom="15.365974"
|
||||
inkscape:cx="4.5385449"
|
||||
inkscape:cy="11.395488"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3167"
|
||||
empspacing="2"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="an"
|
||||
y2="13.849"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="28.979"
|
||||
gradientTransform="translate(-116.91,-44.22)"
|
||||
y1="28.622"
|
||||
x1="16.226">
|
||||
<stop
|
||||
stop-color="#8b8b8b"
|
||||
offset="0"
|
||||
id="stop7" />
|
||||
<stop
|
||||
stop-color="#8b8b8b"
|
||||
stop-opacity="0"
|
||||
offset="1"
|
||||
id="stop9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="ao"
|
||||
y2="11.708"
|
||||
xlink:href="#aa"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="129.27"
|
||||
gradientTransform="matrix(0.52628,0,0,0.78596,-155.15,-37.182)"
|
||||
y1="22.589001"
|
||||
x1="153.36" />
|
||||
<linearGradient
|
||||
id="aa">
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="0"
|
||||
id="stop13" />
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
stop-opacity="0"
|
||||
offset="1"
|
||||
id="stop15" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="ap"
|
||||
y2="33.214001"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="135.71001"
|
||||
gradientTransform="matrix(0.76019,0,0,0.76019,-191.41,-37.143)"
|
||||
y1="110"
|
||||
x1="203.57001">
|
||||
<stop
|
||||
stop-color="#4f3a1e"
|
||||
offset="0"
|
||||
id="stop18" />
|
||||
<stop
|
||||
stop-color="#4f3a1e"
|
||||
stop-opacity="0"
|
||||
offset="1"
|
||||
id="stop20" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="aq"
|
||||
y2="41.539001"
|
||||
xlink:href="#aa"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="127.36"
|
||||
gradientTransform="matrix(0.69024,0,0,0.6591,-179.72,-32.689)"
|
||||
y1="13.741"
|
||||
x1="115.62" />
|
||||
<linearGradient
|
||||
id="at"
|
||||
y2="62.02"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="-28.537001"
|
||||
gradientTransform="translate(-116.91,-44.22)"
|
||||
y1="24.645"
|
||||
x1="54.296001">
|
||||
<stop
|
||||
stop-color="#965d01"
|
||||
stop-opacity="0"
|
||||
offset="0"
|
||||
id="stop24" />
|
||||
<stop
|
||||
stop-color="#ab6200"
|
||||
offset="1"
|
||||
id="stop26" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="ar"
|
||||
y2="11.685"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="98.292"
|
||||
gradientTransform="matrix(0.76019,0,0,0.76019,-189.24,-36.6)"
|
||||
y1="70.179001"
|
||||
x1="156.78999">
|
||||
<stop
|
||||
stop-color="#fb9c02"
|
||||
offset="0"
|
||||
id="stop29" />
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="1"
|
||||
id="stop31" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="as"
|
||||
y2="18.836"
|
||||
xlink:href="#aa"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="142.17999"
|
||||
gradientTransform="matrix(0.76019,0,0,0.76019,-191.41,-37.143)"
|
||||
y1="16.563"
|
||||
x1="116.42" />
|
||||
<radialGradient
|
||||
id="ay"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="4.2800999"
|
||||
cx="123.57"
|
||||
gradientTransform="matrix(1.2373,1.1904,-0.87346,0.90788,-246.63,-189.76)"
|
||||
r="18.304001">
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="0"
|
||||
id="stop35" />
|
||||
<stop
|
||||
stop-color="#b3b0a7"
|
||||
offset="1"
|
||||
id="stop37" />
|
||||
</radialGradient>
|
||||
<filter
|
||||
id="ag"
|
||||
height="1.9436001"
|
||||
width="1.15"
|
||||
color-interpolation-filters="sRGB"
|
||||
y="-0.47181001"
|
||||
x="-0.074989997">
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.4154412"
|
||||
id="feGaussianBlur40" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="av"
|
||||
y2="32.161999"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="40.938"
|
||||
gradientTransform="matrix(0.63853,0,0,0.69647,-37.821,-3.0264)"
|
||||
y1="32.161999"
|
||||
x1="6.7268">
|
||||
<stop
|
||||
stop-color="#ead200"
|
||||
offset="0"
|
||||
id="stop43" />
|
||||
<stop
|
||||
stop-color="#fff16a"
|
||||
offset="0.21"
|
||||
id="stop45" />
|
||||
<stop
|
||||
stop-color="#b5a300"
|
||||
offset="0.84"
|
||||
id="stop47" />
|
||||
<stop
|
||||
stop-color="#e8d000"
|
||||
offset="1"
|
||||
id="stop49" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="al"
|
||||
y2="36.126999"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="30.875"
|
||||
gradientTransform="matrix(0.63683,0,0,0.68893,-37.771,-1.8896)"
|
||||
y1="25.002001"
|
||||
x1="10.907">
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="0"
|
||||
id="stop52" />
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
stop-opacity=".49485"
|
||||
offset="1"
|
||||
id="stop54" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="am"
|
||||
y2="17"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="24.75"
|
||||
gradientTransform="matrix(0.63798,0,0,0.92464,-37.808,-3.9886)"
|
||||
y1="21"
|
||||
x1="24.875">
|
||||
<stop
|
||||
stop-color="#fffac7"
|
||||
offset="0"
|
||||
id="stop57" />
|
||||
<stop
|
||||
stop-color="#fff8b2"
|
||||
offset="1"
|
||||
id="stop59" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
id="ad"
|
||||
xlink:href="#ab"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="20.312"
|
||||
cx="15.938"
|
||||
gradientTransform="matrix(1,0,0,0.58491,0,8.4316)"
|
||||
r="3.3125" />
|
||||
<linearGradient
|
||||
id="ab">
|
||||
<stop
|
||||
offset="0"
|
||||
id="stop63" />
|
||||
<stop
|
||||
stop-opacity="0"
|
||||
offset="1"
|
||||
id="stop65" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="au"
|
||||
y2="20.094"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="34"
|
||||
gradientTransform="translate(-38.777,11.701)"
|
||||
y1="20.094"
|
||||
x1="17.188">
|
||||
<stop
|
||||
offset="0"
|
||||
id="stop68" />
|
||||
<stop
|
||||
stop-opacity=".17172"
|
||||
offset=".5"
|
||||
id="stop70" />
|
||||
<stop
|
||||
offset="1"
|
||||
id="stop72" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
id="ah"
|
||||
height="4.0437999"
|
||||
width="1.2829"
|
||||
color-interpolation-filters="sRGB"
|
||||
y="-1.5219001"
|
||||
x="-0.14144">
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.1889706"
|
||||
id="feGaussianBlur75" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="ak"
|
||||
y2="17.469999"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="27.191999"
|
||||
gradientTransform="translate(0,-1.9263)"
|
||||
y1="2.9137001"
|
||||
x1="10.651">
|
||||
<stop
|
||||
stop-color="#cad0c6"
|
||||
offset="0"
|
||||
id="stop78" />
|
||||
<stop
|
||||
stop-color="#eaece9"
|
||||
offset=".5"
|
||||
id="stop80" />
|
||||
<stop
|
||||
stop-color="#c5cbc0"
|
||||
offset="1"
|
||||
id="stop82" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="aw"
|
||||
y2="14.85"
|
||||
xlink:href="#ab"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="33.004002"
|
||||
gradientTransform="translate(1.6824,1.125)"
|
||||
y1="14.85"
|
||||
x1="35.005001" />
|
||||
<filter
|
||||
id="ac"
|
||||
height="1.0951999"
|
||||
width="1.4849"
|
||||
color-interpolation-filters="sRGB"
|
||||
y="-0.047579002"
|
||||
x="-0.24243">
|
||||
<feGaussianBlur
|
||||
stdDeviation="0.24444548"
|
||||
id="feGaussianBlur86" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="ax"
|
||||
y2="13.789"
|
||||
xlink:href="#ab"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="35.021"
|
||||
gradientTransform="translate(-19.533,1.7437)"
|
||||
y1="13.789"
|
||||
x1="32.127998" />
|
||||
<filter
|
||||
id="ae"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur
|
||||
stdDeviation="0.8362597"
|
||||
id="feGaussianBlur90" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="aj"
|
||||
y2="18.038"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="21.941999"
|
||||
gradientTransform="matrix(0.6374,0,0,0.58679,-37.794,3.1212)"
|
||||
y1="21.551001"
|
||||
x1="21.941999">
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="0"
|
||||
id="stop93" />
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
stop-opacity="0"
|
||||
offset="1"
|
||||
id="stop95" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
id="af"
|
||||
height="1.1647"
|
||||
width="1.9881999"
|
||||
color-interpolation-filters="sRGB"
|
||||
y="-0.082353003"
|
||||
x="-0.49412">
|
||||
<feGaussianBlur
|
||||
stdDeviation="0.69878785"
|
||||
id="feGaussianBlur98" />
|
||||
</filter>
|
||||
<radialGradient
|
||||
id="az"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="6.2807002"
|
||||
cx="18.031"
|
||||
r="3.1819999">
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="0"
|
||||
id="stop101" />
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
stop-opacity="0"
|
||||
offset="1"
|
||||
id="stop103" />
|
||||
</radialGradient>
|
||||
<filter
|
||||
id="ai"
|
||||
height="1.8271"
|
||||
width="1.1702"
|
||||
color-interpolation-filters="sRGB"
|
||||
y="-0.41356999"
|
||||
x="-0.085115999">
|
||||
<feGaussianBlur
|
||||
stdDeviation="0.42546784"
|
||||
id="feGaussianBlur106" />
|
||||
</filter>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:none;stroke:#6e8c6e;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 25,12 0,-4 c 0,0 0.5,-5 -5,-5 -5.5,0 -5,5 -5,5 l 0,4"
|
||||
id="path3944"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cczcc" />
|
||||
<path
|
||||
style="fill:none;stroke:#906e6e;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 15,12 V 8 C 15,8 15.5,3 10,3 4.5,3 5,8 5,8 v 4"
|
||||
id="path3944-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cczcc" />
|
||||
<rect
|
||||
style="fill:#292b2b;fill-opacity:1;stroke:none"
|
||||
id="rect3169"
|
||||
width="17.999996"
|
||||
height="13"
|
||||
x="1"
|
||||
y="12"
|
||||
rx="1.5"
|
||||
ry="1.5" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ececec;fill-opacity:1;stroke:none"
|
||||
id="path3971"
|
||||
sodipodi:cx="13"
|
||||
sodipodi:cy="16"
|
||||
sodipodi:rx="2"
|
||||
sodipodi:ry="2"
|
||||
d="m 15,16 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z"
|
||||
transform="translate(-3,1)" />
|
||||
<path
|
||||
style="fill:none;stroke:#ececec;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 10,17 0,4"
|
||||
id="path3973"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -12,7 +12,7 @@
|
||||
width="26"
|
||||
version="1.0"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
inkscape:version="0.92.0 r15299"
|
||||
sodipodi:docname="locked.svg">
|
||||
<metadata
|
||||
id="metadata188">
|
||||
@@ -34,15 +34,15 @@
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="744"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1033"
|
||||
id="namedview186"
|
||||
showgrid="true"
|
||||
inkscape:zoom="30.731949"
|
||||
inkscape:cx="11.296694"
|
||||
inkscape:cx="5.4721366"
|
||||
inkscape:cy="9.6647768"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2">
|
||||
<inkscape:grid
|
||||
@@ -454,7 +454,7 @@
|
||||
rx="1.5"
|
||||
ry="1.5" />
|
||||
<path
|
||||
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
style="fill:none;stroke:#826465;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 18,12 18,8 C 18,8 18.5,3 13,3 7.5,3 8,8 8,8 l 0,4"
|
||||
id="path3944"
|
||||
inkscape:connector-curvature="0"
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,102 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="26"
|
||||
width="26"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.0 r15299"
|
||||
sodipodi:docname="options_generic.svg">
|
||||
<metadata
|
||||
id="metadata223">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1033"
|
||||
id="namedview221"
|
||||
showgrid="true"
|
||||
inkscape:zoom="21.730769"
|
||||
inkscape:cx="4.6477875"
|
||||
inkscape:cy="8.352213"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3013"
|
||||
empspacing="2"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="0.5"
|
||||
spacingy="0.5"
|
||||
originx="0"
|
||||
originy="0" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient3846">
|
||||
<stop
|
||||
style="stop-color:#d2d2d2;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3848" />
|
||||
<stop
|
||||
id="stop3793"
|
||||
offset="0.61904764"
|
||||
style="stop-color:#c3c3c3;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#d2d2d2;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3850" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3846"
|
||||
id="radialGradient4223"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.875,0,0,0.875,12.585545,1097.5149)"
|
||||
cx="13"
|
||||
cy="13"
|
||||
fx="13"
|
||||
fy="13"
|
||||
r="12" />
|
||||
</defs>
|
||||
<g
|
||||
id="g4219"
|
||||
transform="translate(-10.960545,-1095.8894)"
|
||||
style="stroke:#000000">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#radialGradient4223);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 23.960545,1097.3899 c -0.313616,0 -0.630223,0.038 -0.9375,0.062 l -0.75,3.5937 c -0.95747,0.2036 -1.827822,0.6124 -2.625,1.125 l -3.125,-2.0312 c -0.471052,0.401 -0.911514,0.8414 -1.3125,1.3125 l 2.03125,3.125 c -0.512591,0.7972 -0.921386,1.6675 -1.125,2.625 l -3.59375,0.75 c -0.02463,0.3073 -0.0625,0.6239 -0.0625,0.9375 0,0.3136 0.03787,0.6302 0.0625,0.9375 l 3.59375,0.75 c 0.203614,0.9574 0.612409,1.8278 1.125,2.625 l -2.03125,3.125 c 0.400986,0.471 0.841448,0.9115 1.3125,1.3125 l 3.125,-2.0313 c 0.797178,0.5126 1.66753,0.9214 2.625,1.125 l 0.75,3.5938 c 0.307277,0.025 0.623884,0.062 0.9375,0.062 0.313616,0 0.630223,-0.038 0.9375,-0.062 l 0.75,-3.5938 c 0.95747,-0.2036 1.827822,-0.6124 2.625,-1.125 l 3.125,2.0313 c 0.471052,-0.401 0.911514,-0.8415 1.3125,-1.3125 l -2.03125,-3.125 c 0.51259,-0.7972 0.921386,-1.6676 1.125,-2.625 l 3.59375,-0.75 c 0.02463,-0.3073 0.0625,-0.6239 0.0625,-0.9375 0,-0.3136 -0.03787,-0.6302 -0.0625,-0.9375 l -3.59375,-0.75 c -0.203614,-0.9575 -0.61241,-1.8278 -1.125,-2.625 l 2.03125,-3.125 c -0.400986,-0.4711 -0.841448,-0.9115 -1.3125,-1.3125 l -3.125,2.0312 c -0.797178,-0.5126 -1.66753,-0.9214 -2.625,-1.125 l -0.75,-3.5937 c -0.307277,-0.025 -0.623884,-0.062 -0.9375,-0.062 z m 0,8 c 1.932997,0 3.5,1.567 3.5,3.5 0,1.933 -1.567003,3.5 -3.5,3.5 -1.932997,0 -3.5,-1.567 -3.5,-3.5 0,-1.933 1.567003,-3.5 3.5,-3.5 z"
|
||||
id="path4215" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
@@ -11,8 +11,11 @@
|
||||
width="26"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="polar_coord.svg">
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="polar_coord.svg"
|
||||
inkscape:export-filename="/Users/jeff/kicad_dev/kicad/bitmaps_png/png_26/polar_coord.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<metadata
|
||||
id="metadata39">
|
||||
<rdf:RDF>
|
||||
@@ -21,7 +24,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@@ -34,15 +37,15 @@
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="849"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="800"
|
||||
id="namedview37"
|
||||
showgrid="true"
|
||||
inkscape:zoom="26.666667"
|
||||
inkscape:cx="11.220709"
|
||||
inkscape:cy="12.00265"
|
||||
showgrid="false"
|
||||
inkscape:zoom="23.434245"
|
||||
inkscape:cx="13.246822"
|
||||
inkscape:cy="12.489107"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="29"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:snap-grids="false"
|
||||
@@ -191,11 +194,11 @@
|
||||
id="path19"
|
||||
d="M 3.4889441,22.442933 21.656486,4.1948239" />
|
||||
<g
|
||||
transform="matrix(1.0578651,0,0,0.94530011,-1.65,-0.3)"
|
||||
style="font-size:10.34677601px;font-weight:bold;line-height:125%;fill:#493d3d;fill-opacity:1;font-family:Century Schoolbook"
|
||||
transform="matrix(1.0578651,0,0,0.94530011,-1.8206903,0.63879705)"
|
||||
style="font-weight:bold;font-size:10.34677601px;line-height:125%;font-family:'Century Schoolbook';fill:#493d3d;fill-opacity:1"
|
||||
id="text21">
|
||||
<path
|
||||
d="M 14.42271,4.703743 C 14.22468,4.611056 14.026656,4.5436439 13.828638,4.5015058 13.634822,4.4551648 13.438905,4.4319918 13.240887,4.4319868 12.65945,4.4319922 12.210737,4.6194827 11.894746,4.9944589 11.58296,5.3652315 11.08788,5.9380908 11.072584,6.6330662 l -0.0709,3.2214041 -1.8371429,0 0,-7.0783001 1.9434889,-0.03967 0,1.1628636 c 0.290712,-0.4634538 0.9426,-0.7608454 1.317585,-0.9715158 0.37919,-0.2148699 0.832116,-0.3223082 1.358781,-0.3223155 0.07583,7.3e-6 0.157992,0.00422 0.246476,0.01264 0.08847,0.00422 0.216978,0.01686 0.385515,0.037919 l 0.0063,2.0476511"
|
||||
d="M 14.42271,4.703743 C 14.22468,4.611056 14.026656,4.5436439 13.828638,4.5015058 13.634822,4.4551648 13.438905,4.4319918 13.240887,4.4319868 12.65945,4.4319922 12.210737,4.6194827 11.894746,4.9944589 11.58296,5.3652315 11.08788,5.9380908 11.072584,6.6330662 l -0.0709,3.2214041 H 9.1645411 V 2.7761702 l 1.9434889,-0.03967 v 1.1628636 c 0.290712,-0.4634538 0.9426,-0.7608454 1.317585,-0.9715158 0.37919,-0.2148699 0.832116,-0.3223082 1.358781,-0.3223155 0.07583,7.3e-6 0.157992,0.00422 0.246476,0.01264 0.08847,0.00422 0.216978,0.01686 0.385515,0.037919 l 0.0063,2.0476511"
|
||||
style="font-size:12.94317722px;fill:#493d3d"
|
||||
id="path4866"
|
||||
inkscape:connector-curvature="0"
|
||||
@@ -210,12 +213,51 @@
|
||||
transform="scale(1.320342,0.75737952)"
|
||||
style="font-size:8.10237503px;line-height:125%;fill:#493d3d;fill-opacity:1;font-family:Bitstream Vera Sans"
|
||||
id="text29">
|
||||
<path
|
||||
d="m 17.091728,15.617771 c -0.249954,7e-6 -0.374928,0.327796 -0.374924,0.983369 l 0,4.652352 c 0.365305,10e-7 0.730614,-0.235103 1.095929,-0.705313 0.32685,-0.420472 0.490278,-1.134827 0.490284,-2.143066 -6e-6,-0.940412 -0.165356,-1.66381 -0.496052,-2.170193 -0.269181,-0.411426 -0.507593,-0.617142 -0.715237,-0.617149 m 0,-1.064751 c 0.538345,8e-6 1.0517,0.298409 1.540068,0.895205 0.526807,0.637501 1.045831,1.623128 1.045838,2.956888 -7e-6,1.225257 -0.519031,2.201844 -1.045838,2.929761 -0.496058,0.687227 -1.134388,1.030842 -1.914992,1.030842 l 0,2.726306 -1.055552,0 0,-2.719524 c -0.76523,0 -1.405482,-0.345875 -1.920758,-1.037624 -0.522971,-0.705311 -0.898062,-1.679637 -0.898061,-2.922978 -10e-7,-1.29307 0.37509,-2.269656 0.898061,-2.929762 0.392225,-0.492808 0.907503,-0.802512 1.545835,-0.929114 l 0,1.105442 c -0.253796,0.10399 -0.492208,0.332317 -0.715237,0.684968 -0.330703,0.519948 -0.524455,1.258949 -0.524454,2.117979 -10e-7,0.913291 0.193751,1.580394 0.524454,2.100334 0.296091,0.465688 0.659476,0.698531 1.09016,0.69853 l 0,-4.659133 c -3e-6,-1.365407 0.476821,-2.048112 1.430476,-2.04812"
|
||||
style="font-size:11.60540199px;fill:#493d3d"
|
||||
id="path4869"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccccccccsccccsccsc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="30.1875"
|
||||
y="12.575"
|
||||
id="text38"
|
||||
transform="scale(0.75737953,1.320342)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan36"
|
||||
x="30.1875"
|
||||
y="47.965626" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="29.700125"
|
||||
y="10.680539"
|
||||
id="text42"
|
||||
transform="scale(0.75737953,1.320342)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan40"
|
||||
x="29.700125"
|
||||
y="46.071163" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:37.62418747px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#493d3d;fill-opacity:1;stroke:#493d3d;stroke-width:0.47030237;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="17.408667"
|
||||
y="18.426802"
|
||||
id="text46"
|
||||
transform="scale(0.75047264,1.3324936)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan44"
|
||||
x="17.408667"
|
||||
y="18.426802"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:11.28719997px;font-family:Palatino;-inkscape-font-specification:'Palatino, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#493d3d;fill-opacity:1;stroke:#493d3d;stroke-width:0.47030237;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">θ</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="30.872232"
|
||||
y="16.521296"
|
||||
id="text50"
|
||||
transform="scale(0.75737953,1.320342)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan48"
|
||||
x="30.872232"
|
||||
y="51.911919" /></text>
|
||||
</g>
|
||||
<path
|
||||
style="fill:#ff0000;stroke:#ff0000;stroke-width:0.10395694"
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |