Compare commits
373 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54b7884fa3 | ||
|
|
e5bc7c7564 | ||
|
|
cf49591d4f | ||
|
|
71f94f3f79 | ||
|
|
db6be82ce2 | ||
|
|
ba65786b5a | ||
|
|
036d63c9dd | ||
|
|
07e86d24f6 | ||
|
|
2cbd92a01b | ||
|
|
ba0e737c7b | ||
|
|
45b59eb6df | ||
|
|
a7d50fa8fa | ||
|
|
2f27803fc5 | ||
|
|
71a4ba1c19 | ||
|
|
271cab1212 | ||
|
|
1051aacc7c | ||
|
|
fb8e6dab20 | ||
|
|
4e37ae26c9 | ||
|
|
905f27b2c2 | ||
|
|
9d6935cf48 | ||
|
|
6b0e521c75 | ||
|
|
c906c468f8 | ||
|
|
f7272dcdcd | ||
|
|
14283ff5cc | ||
|
|
e4608b17c3 | ||
|
|
d81c32b97c | ||
|
|
e69c5724bf | ||
|
|
da0a5673d2 | ||
|
|
4cdd2a2bfb | ||
|
|
80afa86ae4 | ||
|
|
311cc19134 | ||
|
|
9809398517 | ||
|
|
7498d58878 | ||
|
|
73e17ef4a1 | ||
|
|
bda48858ba | ||
|
|
4d35b72b25 | ||
|
|
8faa374303 | ||
|
|
573ec687ac | ||
|
|
4b685819d1 | ||
|
|
889ce83bdf | ||
|
|
30304a8ddc | ||
|
|
4b12e28f3c | ||
|
|
f92fc4b405 | ||
|
|
b5076c9cd2 | ||
|
|
5eda5b78a6 | ||
|
|
207993a6e2 | ||
|
|
4162d9b488 | ||
|
|
8bfca4917a | ||
|
|
2aedfaba34 | ||
|
|
4811abb3d3 | ||
|
|
f6e51898b7 | ||
|
|
12070cee74 | ||
|
|
6af46cf8cc | ||
|
|
5b58e5282b | ||
|
|
0e54dc715c | ||
|
|
627a316e4d | ||
|
|
2efa8808c0 | ||
|
|
b9c7d4cbb1 | ||
|
|
f348296a8c | ||
|
|
7cfbe1c115 | ||
|
|
31077cb637 | ||
|
|
8e685b7ebb | ||
|
|
ca3871eb61 | ||
|
|
ebe4095438 | ||
|
|
ec50f11e3e | ||
|
|
446d0133cf | ||
|
|
b4a98ef1a9 | ||
|
|
ba123910a4 | ||
|
|
23d65486e6 | ||
|
|
c0c8abe3a7 | ||
|
|
f599a14506 | ||
|
|
46349724a8 | ||
|
|
915cdae09c | ||
|
|
bac510370a | ||
|
|
45cf4057d1 | ||
|
|
f6f00c2521 | ||
|
|
f6af3d7410 | ||
|
|
7c2976819f | ||
|
|
eb3efa7a69 | ||
|
|
16132f7ae3 | ||
|
|
c06b2712a0 | ||
|
|
28b16a3232 | ||
|
|
0a8e56ea05 | ||
|
|
1f0b5509ed | ||
|
|
777d33a4de | ||
|
|
5887d5c6a2 | ||
|
|
a443e732f5 | ||
|
|
fc452a76e7 | ||
|
|
48a5c36c31 | ||
|
|
bab34aab2b | ||
|
|
98ab1f7100 | ||
|
|
1734f3f87a | ||
|
|
3a8e50d703 | ||
|
|
235decb041 | ||
|
|
6bbedd0f2b | ||
|
|
ce87e89b4f | ||
|
|
1af38a7306 | ||
|
|
d219632825 | ||
|
|
84d6b311ea | ||
|
|
c32652c066 | ||
|
|
11a5d841f9 | ||
|
|
25c75a009d | ||
|
|
b611b979e4 | ||
|
|
540d6c23f9 | ||
|
|
5eb27b7553 | ||
|
|
ef87bae51f | ||
|
|
8c2f788069 | ||
|
|
cae68ffec9 | ||
|
|
929d1fc78b | ||
|
|
608edc2d46 | ||
|
|
a0c7a70e00 | ||
|
|
a3cdace8d2 | ||
|
|
de2fe89ecd | ||
|
|
73b530a807 | ||
|
|
4b418b9bb9 | ||
|
|
e514e29010 | ||
|
|
8d34090eb8 | ||
|
|
93d6c1bf14 | ||
|
|
a1c45d1dc3 | ||
|
|
69421c0381 | ||
|
|
1efed2bef8 | ||
|
|
98474b187d | ||
|
|
abd08ab884 | ||
|
|
e18f3577f0 | ||
|
|
8ac26e9567 | ||
|
|
c984eae2d5 | ||
|
|
d806d6bcca | ||
|
|
a62d77583b | ||
|
|
6f4ab468a7 | ||
|
|
20352f2053 | ||
|
|
357ec99b44 | ||
|
|
0271e9df23 | ||
|
|
04a18f82e1 | ||
|
|
576d5f741d | ||
|
|
01958b7d34 | ||
|
|
41d5d21bc6 | ||
|
|
b0f155a377 | ||
|
|
a517b76e9e | ||
|
|
70dd6554c3 | ||
|
|
62132937da | ||
|
|
2784d78737 | ||
|
|
b5036f4cfd | ||
|
|
2388c352d5 | ||
|
|
09a6cf2497 | ||
|
|
e20b941eb9 | ||
|
|
1dba14ec9a | ||
|
|
e773d868f1 | ||
|
|
07afebba4e | ||
|
|
7146875c05 | ||
|
|
42627d5881 | ||
|
|
bb87c8a51b | ||
|
|
b69570aa68 | ||
|
|
699e9e37f3 | ||
|
|
63b62e3c82 | ||
|
|
6a2b2afdba | ||
|
|
292c092be3 | ||
|
|
85c604c1ee | ||
|
|
a530070ecf | ||
|
|
f853e54d77 | ||
|
|
928ece7853 | ||
|
|
9524c9d74d | ||
|
|
61318bff8a | ||
|
|
7c2d2d3759 | ||
|
|
34f4432818 | ||
|
|
596679d1f9 | ||
|
|
14c6b6fe8f | ||
|
|
e6006a0228 | ||
|
|
f44f083378 | ||
|
|
f258bae8fd | ||
|
|
47f9251c87 | ||
|
|
650a82a681 | ||
|
|
219b943d59 | ||
|
|
98717e7b46 | ||
|
|
bb924181b4 | ||
|
|
7c92d1045a | ||
|
|
e0f6afaf43 | ||
|
|
d36320967c | ||
|
|
33528a3e61 | ||
|
|
131e1a183c | ||
|
|
6fa1c5aa94 | ||
|
|
62055a1aa1 | ||
|
|
da09a62605 | ||
|
|
7a7ceb6d60 | ||
|
|
3bba870c90 | ||
|
|
272ce1d9b6 | ||
|
|
de259c27d7 | ||
|
|
74a7150cff | ||
|
|
3beb830baf | ||
|
|
a9b7e310be | ||
|
|
d04e2a06fb | ||
|
|
f3f629779f | ||
|
|
278ef523b8 | ||
|
|
b98e20273c | ||
|
|
2a0ec3d82e | ||
|
|
334a5e3fdb | ||
|
|
12b56905f6 | ||
|
|
63cd462109 | ||
|
|
f07de4c910 | ||
|
|
66c5e2b773 | ||
|
|
02b42539f3 | ||
|
|
5605fff111 | ||
|
|
052e3970e5 | ||
|
|
0bb0312913 | ||
|
|
ed735aea64 | ||
|
|
c9e266408e | ||
|
|
dc262dbd1d | ||
|
|
9a6ea88c23 | ||
|
|
d58d79facf | ||
|
|
bbd27f1332 | ||
|
|
37b80e904d | ||
|
|
f2bf6cd6ee | ||
|
|
40f2910991 | ||
|
|
a74e7f04e2 | ||
|
|
cfb12dd3f1 | ||
|
|
df67f81156 | ||
|
|
bb69e6acbd | ||
|
|
9ac533846d | ||
|
|
a7147d1c6e | ||
|
|
a1c5f4aa5a | ||
|
|
981af11011 | ||
|
|
c0efc78d37 | ||
|
|
857b2318f9 | ||
|
|
9e52e9e848 | ||
|
|
c8068d5835 | ||
|
|
2752878e9e | ||
|
|
2e9b6bf42c | ||
|
|
4ebca73023 | ||
|
|
e6a90a8da5 | ||
|
|
0fefd20cc6 | ||
|
|
94a2461741 | ||
|
|
4d7de87e7d | ||
|
|
f9193eaa3f | ||
|
|
0f5af24361 | ||
|
|
befa40e094 | ||
|
|
92937667d8 | ||
|
|
12cb34146c | ||
|
|
34023cdc95 | ||
|
|
c79dbb26ea | ||
|
|
77ea71c519 | ||
|
|
472a34c280 | ||
|
|
7a9fc99079 | ||
|
|
b4c8305f0d | ||
|
|
5d1da5fecd | ||
|
|
6dad9af7da | ||
|
|
7ca09f3acb | ||
|
|
b9f989a454 | ||
|
|
516b18bdef | ||
|
|
3a67bbce84 | ||
|
|
77cfad50e0 | ||
|
|
ccfbb359a4 | ||
|
|
b240be8ba7 | ||
|
|
241281c5e7 | ||
|
|
a92b3a18c1 | ||
|
|
625f11cc55 | ||
|
|
4e368e77dc | ||
|
|
d8163b9f12 | ||
|
|
cb36cfc983 | ||
|
|
512383892c | ||
|
|
11de89536d | ||
|
|
d1f9a4e8f6 | ||
|
|
7aac624ec7 | ||
|
|
d7aad27ed8 | ||
|
|
d036bb0bac | ||
|
|
12e04ca7ef | ||
|
|
e204056972 | ||
|
|
0604d579de | ||
|
|
57d56fbedf | ||
|
|
cdd07c0da3 | ||
|
|
c7eaaa9100 | ||
|
|
345b57c57a | ||
|
|
27a3c5a926 | ||
|
|
c3b62fbdf5 | ||
|
|
846074ddc1 | ||
|
|
0137d9ff1f | ||
|
|
fed0996f6f | ||
|
|
dcad929316 | ||
|
|
69ed1fe034 | ||
|
|
6fef1854c8 | ||
|
|
6af2d305b3 | ||
|
|
da628f99d6 | ||
|
|
5f57f97844 | ||
|
|
88d94ede01 | ||
|
|
27bf0316de | ||
|
|
77d0c36539 | ||
|
|
cd77b8fcd4 | ||
|
|
28e938b536 | ||
|
|
e85e056a0c | ||
|
|
e108e6e3d7 | ||
|
|
884f524fb1 | ||
|
|
f1570a9531 | ||
|
|
7e0d4f64dd | ||
|
|
ba18ccf967 | ||
|
|
956feec116 | ||
|
|
f3bc792ebe | ||
|
|
2bacad9bb5 | ||
|
|
3a81957f9a | ||
|
|
7d6d41b3c1 | ||
|
|
bbc6e2cc65 | ||
|
|
5b15eb9d7c | ||
|
|
4e263fb95b | ||
|
|
a5c6bc027f | ||
|
|
67dde0af7d | ||
|
|
bd9e7d7456 | ||
|
|
71a82d087b | ||
|
|
3ed6c43161 | ||
|
|
0e855cb47f | ||
|
|
5aba3ac373 | ||
|
|
03eb28f09e | ||
|
|
241f112b58 | ||
|
|
3a59a31ab3 | ||
|
|
25aa1329fc | ||
|
|
d76ac00403 | ||
|
|
beed7335fc | ||
|
|
f7f1940054 | ||
|
|
c46548d15e | ||
|
|
1be12b2700 | ||
|
|
20bdf84d91 | ||
|
|
e304c04f1c | ||
|
|
ea21d64822 | ||
|
|
3905ddb5e4 | ||
|
|
57ce026efd | ||
|
|
1ba83801e9 | ||
|
|
c93bb64a8a | ||
|
|
05d0b2b116 | ||
|
|
33241250ff | ||
|
|
dcd2ebad29 | ||
|
|
49476e17bb | ||
|
|
4d7078e861 | ||
|
|
08c20daef2 | ||
|
|
fd647f7458 | ||
|
|
5ff9abca1a | ||
|
|
a1cfd80853 | ||
|
|
45cb01c59d | ||
|
|
f98fe65827 | ||
|
|
131f36dbd4 | ||
|
|
8e35a178d2 | ||
|
|
aa623f81db | ||
|
|
43c9c4c8bd | ||
|
|
e36d5b53ea | ||
|
|
23f48082a1 | ||
|
|
b42973662e | ||
|
|
431790a638 | ||
|
|
aa5a1436ca | ||
|
|
f5386f3503 | ||
|
|
92d218572f | ||
|
|
067f08834d | ||
|
|
af98b0668a | ||
|
|
ab7164499d | ||
|
|
be483fff89 | ||
|
|
25627462c4 | ||
|
|
758f62a589 | ||
|
|
84c734accd | ||
|
|
d049d378dd | ||
|
|
5093f292ba | ||
|
|
80634a4adf | ||
|
|
969c44717a | ||
|
|
51d4521e6a | ||
|
|
3a596aaf1a | ||
|
|
699d63db10 | ||
|
|
ca9786dca3 | ||
|
|
85342ddd84 | ||
|
|
e16d7d2059 | ||
|
|
75fc29e9d5 | ||
|
|
0be2560594 | ||
|
|
fef055777a | ||
|
|
edfbae323f | ||
|
|
6c92f9db33 | ||
|
|
ec3e8ba5c9 | ||
|
|
54de362e44 | ||
|
|
1e0fd54ee1 | ||
|
|
5fc42268a4 | ||
|
|
1d8cdd7feb | ||
|
|
baa924c697 |
34
.travis.yml
@@ -1,32 +1,32 @@
|
|||||||
sudo: false
|
sudo: false
|
||||||
language: android
|
language: android
|
||||||
jdk:
|
jdk:
|
||||||
- oraclejdk8
|
- openjdk8
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- ANDROID=27
|
- ANDROID=28
|
||||||
- ANDROID_BUILD_TOOLS=27.0.3
|
- ANDROID_BUILD_TOOLS=28.0.3
|
||||||
- GRADLE_OPTS="-Xmx2048m"
|
- GRADLE_OPTS="-Xmx2048m"
|
||||||
- secure: sW674wuFZOuoX7jHQHDbX3j8NxL8JxR07cyq+CrrqJ537dU9lxWQmMBRUpOb+p/q7sQ74PUtiKJkmFgKCSJSAKY+nr6GJ8P/q6u5TUKbmUWODSn8znehX2zualfvFwpF4PILok/wUzXBQE62jn4lUua7cMdsHRMNHbLmKqBoVL0meObDDjsaJ/RCbOPuruy3FmgvXPp0+Y4zl1GsklDSyjFzg4LBzjAk9Ryvh1O4zvJBkkyfCgurLKCnOKIPy3v5fPMS9oDfO1aarAVGoZZe416pvTW4hb8cdB6kn9XWYDob4NDFX/sP5k7XIhd/NAIn9LrKFg0sLtATaKLX+BcasF1CgDR/u6+SEeQd5QaRF7Go2Nq5Ltuu4OIFONI2qhEeVDDK6Otf2WSWj9KPno2GHuumBfbg4ypWoJgmZrMXk8JeVV/OP/0jIQz3p/7yfF21X1XBEqYaVHPAMKdEYYkCSa46KfACyOt6LfnkuCHtoTOpFo7sq0omIA2HOtpIx1u3vMBUyAbQqT6cokkKB1b6gNTFwhHc+8ybfLFPljJB8cWshI+V/b06S6fekRmvTNxvDykWNsdlkENBYqc9hMfjcT4hO4K+76SWN62mimQYODvFyfTVMC7WkQ3k/XEnmqUPV5XkbaILbS1d/tA57N148FiJ5/QXtI6Y94imubYyVqU=
|
- secure: sW674wuFZOuoX7jHQHDbX3j8NxL8JxR07cyq+CrrqJ537dU9lxWQmMBRUpOb+p/q7sQ74PUtiKJkmFgKCSJSAKY+nr6GJ8P/q6u5TUKbmUWODSn8znehX2zualfvFwpF4PILok/wUzXBQE62jn4lUua7cMdsHRMNHbLmKqBoVL0meObDDjsaJ/RCbOPuruy3FmgvXPp0+Y4zl1GsklDSyjFzg4LBzjAk9Ryvh1O4zvJBkkyfCgurLKCnOKIPy3v5fPMS9oDfO1aarAVGoZZe416pvTW4hb8cdB6kn9XWYDob4NDFX/sP5k7XIhd/NAIn9LrKFg0sLtATaKLX+BcasF1CgDR/u6+SEeQd5QaRF7Go2Nq5Ltuu4OIFONI2qhEeVDDK6Otf2WSWj9KPno2GHuumBfbg4ypWoJgmZrMXk8JeVV/OP/0jIQz3p/7yfF21X1XBEqYaVHPAMKdEYYkCSa46KfACyOt6LfnkuCHtoTOpFo7sq0omIA2HOtpIx1u3vMBUyAbQqT6cokkKB1b6gNTFwhHc+8ybfLFPljJB8cWshI+V/b06S6fekRmvTNxvDykWNsdlkENBYqc9hMfjcT4hO4K+76SWN62mimQYODvFyfTVMC7WkQ3k/XEnmqUPV5XkbaILbS1d/tA57N148FiJ5/QXtI6Y94imubYyVqU=
|
||||||
- secure: AdKSZKA4gMuKXI4X4dQNJqcMv5OmPIHdN8fpy55Y9yoOQPQHZE3Zwc4QDWBh20q298jyEC854tVTPTysdZ7h+2s2FhsprYv1Bt/QNzKIrLpeIMj2quuVGMbdPuk08y55gost94KwVLJv0sIDpRlB/PEQkA7Mg/UDsT9zR8E1Ms5x+ul2C8e1ag0zzNl1wVnT5jY8WCp74uA/XXCcJl/80qT1stUERazCKwbKNo007hi7rdm4HA7YGevORq8e2r67je+WIBZUAwrHT0Zjuo4ibwUii4LdwvjuN3w0Z6e9Wf4x5bBqGgnih0T31uom2yPjNx+U/c2AWI+Nxfy/SEF2U+9bjBEZ3ZhI7F1B9ofXo2mhvvsVDiUrymMBbG2V64C9kAzeUh7xIBTqIrbdtpAEBV9FlLAtF2swVTwtCgZgcVTOt3RKXCi3X3nk3cuH7PAorFa/QGfT4xxVu2011FVAt2Rm7SD0ZWztZTSTz/4Nt/egtGBOJfrCc7oLEygLzDmLqsqCwCROITVQjWLjrtqDyLteaNiSXeNIQMKun3izApbXnHmXB+FV3R3EZocboqk3v5bmPTahnG6Ghc2zknWyyxSx+O9qIfOpHUL8JMJiT82lUQUeibtCn7DCE8wVQ/gYC5i+a+KO/d3NemSzIFlZ8aoUiEPYq18dYlsDXeLXwF0=
|
- secure: AdKSZKA4gMuKXI4X4dQNJqcMv5OmPIHdN8fpy55Y9yoOQPQHZE3Zwc4QDWBh20q298jyEC854tVTPTysdZ7h+2s2FhsprYv1Bt/QNzKIrLpeIMj2quuVGMbdPuk08y55gost94KwVLJv0sIDpRlB/PEQkA7Mg/UDsT9zR8E1Ms5x+ul2C8e1ag0zzNl1wVnT5jY8WCp74uA/XXCcJl/80qT1stUERazCKwbKNo007hi7rdm4HA7YGevORq8e2r67je+WIBZUAwrHT0Zjuo4ibwUii4LdwvjuN3w0Z6e9Wf4x5bBqGgnih0T31uom2yPjNx+U/c2AWI+Nxfy/SEF2U+9bjBEZ3ZhI7F1B9ofXo2mhvvsVDiUrymMBbG2V64C9kAzeUh7xIBTqIrbdtpAEBV9FlLAtF2swVTwtCgZgcVTOt3RKXCi3X3nk3cuH7PAorFa/QGfT4xxVu2011FVAt2Rm7SD0ZWztZTSTz/4Nt/egtGBOJfrCc7oLEygLzDmLqsqCwCROITVQjWLjrtqDyLteaNiSXeNIQMKun3izApbXnHmXB+FV3R3EZocboqk3v5bmPTahnG6Ghc2zknWyyxSx+O9qIfOpHUL8JMJiT82lUQUeibtCn7DCE8wVQ/gYC5i+a+KO/d3NemSzIFlZ8aoUiEPYq18dYlsDXeLXwF0=
|
||||||
android:
|
android:
|
||||||
components:
|
components:
|
||||||
- tools
|
- tools
|
||||||
- platform-tools
|
- platform-tools
|
||||||
- tools
|
- tools
|
||||||
- build-tools-$ANDROID_BUILD_TOOLS
|
- build-tools-$ANDROID_BUILD_TOOLS
|
||||||
- android-$ANDROID
|
- android-$ANDROID
|
||||||
before_install:
|
before_install:
|
||||||
- yes | sdkmanager "platforms;android-$ANDROID"
|
- yes | sdkmanager "platforms;android-$ANDROID"
|
||||||
script:
|
script:
|
||||||
- ./gradlew clean build
|
- ./gradlew clean build
|
||||||
after_success:
|
after_success:
|
||||||
- if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
- if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||||
./gradlew uploadArchives -PSONATYPE_USERNAME="${SONATYPE_USERNAME}" -PSONATYPE_PASSWORD="${SONATYPE_PASSWORD}";
|
./gradlew uploadArchives -PSONATYPE_USERNAME="${SONATYPE_USERNAME}" -PSONATYPE_PASSWORD="${SONATYPE_PASSWORD}";
|
||||||
fi
|
fi
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
recipients:
|
recipients:
|
||||||
- secure: fOInp4SGBqiIMgnsGceQTa0SuFLaAoxAF15W0crhuljGlqSgnbnBjh0xFEF4P5+q3VT3DgDZs53GVVo6S9gEl8AWJy84KGuUX1M/CQKUQC4bwNXJdHfY3MIy6D50da6UfwWeNS4ienKh2Rj6w2TapN9M8C9nJJZk9aJFc9NWZmWTVboHZd4oUDeeRBJ6KSk1Ay7L/mmxv4cMCXaW7pPJixvUFESKNYgK4KAN3zYpym2UijrQ8zf7OVcYnTorcAuXUZDk8EvwdHl3rIAdlbVqvyZ8rmoQ2Da/Q2VlWUL/HrHUVJtCPZ+T+dNUag4a8joIDqWKwcyk76PElmgft3azb7GERb+bkZz1ToQc2IvuOeUk2SsuXWZugoEQImKWl/yWeirWBLrwzieaVh4j04dMSn/Npc1yL5kjX9EuiM6MFHdYPianMpvhFiaYKihjzW0GPV6sfuY7xS8cA9L9DjAsXoHIXIxc/+hRA+bpPUl+qMaQdGjJmNJJ2VPFnOY0XCsDDQDIVa3nZOA6aXMUG2c4H26RJZPe7uvfRiuL86n3KAmkoXSwne9t8WYMgl89LMsU5XxjBvwz2Qa1HqG09tVs6nhB23easrhEYEf/ZsGg0DIIL1FImUHj+wUUfZXeyFmbiE6lD/i2+3a5DqzZGHbXUDCoUIagObMf8fe2z5+0K/Q=
|
- secure: fOInp4SGBqiIMgnsGceQTa0SuFLaAoxAF15W0crhuljGlqSgnbnBjh0xFEF4P5+q3VT3DgDZs53GVVo6S9gEl8AWJy84KGuUX1M/CQKUQC4bwNXJdHfY3MIy6D50da6UfwWeNS4ienKh2Rj6w2TapN9M8C9nJJZk9aJFc9NWZmWTVboHZd4oUDeeRBJ6KSk1Ay7L/mmxv4cMCXaW7pPJixvUFESKNYgK4KAN3zYpym2UijrQ8zf7OVcYnTorcAuXUZDk8EvwdHl3rIAdlbVqvyZ8rmoQ2Da/Q2VlWUL/HrHUVJtCPZ+T+dNUag4a8joIDqWKwcyk76PElmgft3azb7GERb+bkZz1ToQc2IvuOeUk2SsuXWZugoEQImKWl/yWeirWBLrwzieaVh4j04dMSn/Npc1yL5kjX9EuiM6MFHdYPianMpvhFiaYKihjzW0GPV6sfuY7xS8cA9L9DjAsXoHIXIxc/+hRA+bpPUl+qMaQdGjJmNJJ2VPFnOY0XCsDDQDIVa3nZOA6aXMUG2c4H26RJZPe7uvfRiuL86n3KAmkoXSwne9t8WYMgl89LMsU5XxjBvwz2Qa1HqG09tVs6nhB23easrhEYEf/ZsGg0DIIL1FImUHj+wUUfZXeyFmbiE6lD/i2+3a5DqzZGHbXUDCoUIagObMf8fe2z5+0K/Q=
|
||||||
on_success: always
|
on_success: always
|
||||||
on_failure: always
|
on_failure: always
|
||||||
|
|||||||
52
README.md
@@ -1,32 +1,34 @@
|
|||||||
[](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22)
|
[](https://search.maven.org/search?q=g:org.mapsforge)
|
||||||
[](https://travis-ci.org/mapsforge/vtm)
|
[](https://travis-ci.org/mapsforge/vtm)
|
||||||
[](http://www.gnu.org/licenses/lgpl-3.0)
|
[](http://www.gnu.org/licenses/lgpl-3.0)
|
||||||
|
|
||||||
# V™
|
# V™
|
||||||
|
|
||||||
VTM was developed within the [OpenScienceMap](https://github.com/opensciencemap) project.
|
<img src="docs/logo/VTM.svg" style="bottom:0;" width="200" align="right">
|
||||||
|
|
||||||
**This fork continues VTM development. And provides compatibility with latest [Mapsforge](https://github.com/mapsforge/mapsforge).**
|
VTM (Vector Tile Map) was developed within the [OpenScienceMap](https://github.com/opensciencemap) project.
|
||||||
|
|
||||||
See the **[integration guide](docs/Integration.md)** and [changelog](docs/Changelog.md). And read through [how to contribute](.github/CONTRIBUTING.md) guidelines.
|
**This fork continues VTM development and provides compatibility with latest [Mapsforge](https://github.com/mapsforge/mapsforge).**
|
||||||
|
|
||||||
If you have any questions or problems, don't hesitate to ask our public [mailing list](https://groups.google.com/group/mapsforge-dev) for help.
|
See the **[integration guide](docs/Integration.md)** and [changelog](docs/Changelog.md). And read through [how to contribute](docs/CONTRIBUTING.md) guidelines.
|
||||||
|
|
||||||
|
If you have any questions or problems, don't hesitate to ask our public [forum](https://groups.google.com/group/mapsforge-dev) for help.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Java map library
|
- Java map library
|
||||||
- OpenGL vector-tile rendering
|
- OpenGL vector-tile rendering
|
||||||
- Themeable vector layers
|
- Themeable vector layers ([render themes](docs/Rendertheme.md))
|
||||||
- Support for multiple tile sources:
|
- Support for multiple tile sources:
|
||||||
- OpenScienceMap vector tiles
|
- OpenScienceMap vector tiles
|
||||||
- Mapsforge vector maps
|
- Mapsforge vector maps
|
||||||
- Mapbox vector tiles
|
- Mapbox vector tiles (e.g. Mapilion, Mapzen, Nextzen, OpenMapTiles)
|
||||||
- GeoJSON vector tiles
|
- GeoJSON vector tiles (e.g. Mapzen, Nextzen)
|
||||||
- Raster tiles: any quadtree-scheme tiles as texture
|
- Raster tiles: any quadtree-scheme tiles as texture
|
||||||
- Backends:
|
- Backends:
|
||||||
- Android
|
- Android ([example](vtm-android-example/src/org/oscim/android/test/GettingStarted.java))
|
||||||
- iOS (using libGDX/RoboVM, [instructions](docs/ios.md))
|
- iOS (libGDX/RoboVM, [instructions](docs/ios.md))
|
||||||
- Desktop (using libGDX/LWJGL)
|
- Desktop (libGDX/LWJGL, [instructions](docs/desktop.md))
|
||||||
- HTML5/WebGL (using libGDX/GWT, [instructions](docs/web.md))
|
- HTML5/WebGL (libGDX/GWT, [instructions](docs/web.md))
|
||||||
|
|
||||||
### Projects
|
### Projects
|
||||||
- **vtm** core library
|
- **vtm** core library
|
||||||
@@ -59,16 +61,24 @@ This library contains code from several projects:
|
|||||||
- **osmdroid** (Apache 2.0): some overlay classes (https://github.com/osmdroid/osmdroid)
|
- **osmdroid** (Apache 2.0): some overlay classes (https://github.com/osmdroid/osmdroid)
|
||||||
- **tessellate** (SGI Free Software License B 2.0): (https://github.com/cscheid/tessellate)
|
- **tessellate** (SGI Free Software License B 2.0): (https://github.com/cscheid/tessellate)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
VTM library is under [LGPL v3 license](http://www.gnu.org/licenses/lgpl-3.0), with an important simplification: the constraints mentioned in sections LGPL v3 §4(d) and §4(e) are waived.
|
||||||
|
|
||||||
|
This means that you are allowed to convey a Combined Work without providing the user any way to recombine or relink the application and without providing any shared library mechanism.
|
||||||
|
|
||||||
|
In other words, you are allowed to include VTM library in your Android application, without making your application open source.
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||
### Android
|
| Android | iOS |
|
||||||

|
| ------------- | ------------- |
|
||||||
|
|<img src="docs/images/android.png" width="1000">|<img src="docs/images/ios.png" width="1000">|
|
||||||
|
|
||||||
### iOS
|
| Desktop |
|
||||||

|
| ------------- |
|
||||||
|
||
|
||||||
|
|
||||||
### Desktop
|
| Browser |
|
||||||

|
| ------------- |
|
||||||
|
||
|
||||||
### Browser
|
|
||||||

|
|
||||||
|
|||||||
18
build.gradle
@@ -4,8 +4,8 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.0.1'
|
classpath 'com.android.tools.build:gradle:3.3.2'
|
||||||
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
|
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -14,8 +14,8 @@ allprojects {
|
|||||||
version = 'master-SNAPSHOT'
|
version = 'master-SNAPSHOT'
|
||||||
ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
|
ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
|
||||||
|
|
||||||
ext.androidBuildVersionTools = "27.0.3"
|
ext.androidBuildVersionTools = "28.0.3"
|
||||||
ext.gdxVersion = "1.9.8"
|
ext.gdxVersion = "1.9.9"
|
||||||
ext.gwtVersion = "2.8.0"
|
ext.gwtVersion = "2.8.0"
|
||||||
ext.slf4jVersion = "1.7.25"
|
ext.slf4jVersion = "1.7.25"
|
||||||
|
|
||||||
@@ -28,10 +28,10 @@ allprojects {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static def androidCompileSdk() { return 27 }
|
static def androidCompileSdk() { return 28 }
|
||||||
|
|
||||||
// Minimum API Level by Support Library
|
// 14 for Support Library, 16 for sqlite-android
|
||||||
static def androidMinSdk() { return 14 }
|
static def androidMinSdk() { return 16 }
|
||||||
|
|
||||||
static def androidTargetSdk() { return 22 }
|
static def androidTargetSdk() { return 22 }
|
||||||
|
|
||||||
@@ -42,8 +42,10 @@ def versionName() { return version }
|
|||||||
subprojects {
|
subprojects {
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
maven { url 'https://repo.boundlessgeo.com/main' }
|
maven { url 'https://repo.boundlessgeo.com/main/' }
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||||
|
maven { url 'https://jitpack.io' }
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
|
|||||||
@@ -2,17 +2,21 @@
|
|||||||
|
|
||||||
|**Name**|**Type**|**License/Cost**|**Platforms**|**Sources**|
|
|**Name**|**Type**|**License/Cost**|**Platforms**|**Sources**|
|
||||||
|--------|--------|----------------|-------------|-----------|
|
|--------|--------|----------------|-------------|-----------|
|
||||||
|
| [AdvRider WD](https://play.google.com/store/apps/details?id=com.abware.watchdog_client) | Tool-set for the adventure rider | Proprietary/Free | Android | Closed |
|
||||||
| [Cachebox 3.0](https://github.com/Longri/cachebox3.0) | Geocaching application | Apache 2.0/Free | Android, Desktop, iOS | Open |
|
| [Cachebox 3.0](https://github.com/Longri/cachebox3.0) | Geocaching application | Apache 2.0/Free | Android, Desktop, iOS | Open |
|
||||||
| [Cruiser](http://wiki.openstreetmap.org/wiki/Cruiser) | Map and navigation application | Proprietary/Free | Android, Desktop | Closed |
|
| [Cruiser](http://wiki.openstreetmap.org/wiki/Cruiser) | Map and navigation application | Proprietary/Free | Android, Desktop | Closed |
|
||||||
| [GCDroid](https://play.google.com/store/apps/details?id=com.gcdroid) | Geocaching App | Proprietary/Free and Commercial | Android | Closed |
|
| [GCDroid](https://play.google.com/store/apps/details?id=com.gcdroid) | Geocaching App | Proprietary/Free and Commercial | Android | Closed |
|
||||||
| [Hunt Cyprus](https://play.google.com/store/apps/developer?id=Talent+S.A.) | Map and navigation application for hunters | Proprietary/Free and Commercial | Android | Closed |
|
| [Hunt Cyprus](https://play.google.com/store/apps/developer?id=Talent+S.A.) | Map and navigation application for hunters | Proprietary/Free and Commercial | Android | Closed |
|
||||||
| [Kurviger](https://kurviger.de/en) | Route planner specialized on motorcyclists | Proprietary/Free and Commercial | Android | Closed |
|
| [Kurviger](https://kurviger.de/en) | Route planner specialized on motorcyclists | Proprietary/Free and Commercial | Android | Closed |
|
||||||
| [MapTrek](http://maptrek.mobi) | Application for outdoor activities | GPL3/Free and Commercial | Android | Open |
|
| [MapTrek](http://maptrek.mobi) | Application for outdoor activities | GPL3/Free and Commercial | Android | Open |
|
||||||
|
| [MyRunningApp](https://play.google.com/store/apps/details?id=it.nimarsolutions.rungpstracker) | Fitness app | Proprietary/Free | Android | Closed |
|
||||||
| [MyTourbook](http://mytourbook.sourceforge.net/mytourbook/) | Visualize and analyze tours | GPL2/Free | Desktop | Open |
|
| [MyTourbook](http://mytourbook.sourceforge.net/mytourbook/) | Visualize and analyze tours | GPL2/Free | Desktop | Open |
|
||||||
| [Navi Cyprus](https://play.google.com/store/apps/developer?id=Talent+S.A.) | Map and navigation application | Proprietary/Free and Commercial | Android | Closed |
|
| [Navi Cyprus](https://play.google.com/store/apps/developer?id=Talent+S.A.) | Map and navigation application | Proprietary/Free and Commercial | Android | Closed |
|
||||||
|
| [Pocket Maps](https://github.com/junjunguo/PocketMaps) | Offline maps, routing & tracking functions | MIT/Free | Android | Open |
|
||||||
| Tokyo Ogiqvo | Visualize App | Commercial | [Android](https://play.google.com/store/apps/details?id=com.ogiqvo.view.tokyo&hl=ja), [iOS](https://itunes.apple.com/us/app/tokyo-ogiqvo/id1097100677?mt=8) | Closed |
|
| Tokyo Ogiqvo | Visualize App | Commercial | [Android](https://play.google.com/store/apps/details?id=com.ogiqvo.view.tokyo&hl=ja), [iOS](https://itunes.apple.com/us/app/tokyo-ogiqvo/id1097100677?mt=8) | Closed |
|
||||||
| [topoGuide](http://www.topoguide.gr/index-en.php) | Digital guides for the outdoor | Proprietary/Free and Commercial | Android | Closed |
|
| [topoGuide](http://www.topoguide.gr/index-en.php) | Digital guides for the outdoor | Proprietary/Free and Commercial | Android | Closed |
|
||||||
| [Ubitrek](https://play.google.com/store/apps/details?id=ubicarta.ubitrek) | Hiking with IGN maps | Proprietary/Free | Android | Closed |
|
| [Ubitrek](https://play.google.com/store/apps/details?id=ubicarta.ubitrek) | Hiking with IGN maps | Proprietary/Free | Android | Closed |
|
||||||
| [VTM with Eclipse RCP](https://github.com/wolfgang-ch/vtm-with-rcp) | VTM with an Eclipse RCP application | GPL3/Free | Desktop | Open |
|
| [VTM with Eclipse RCP](https://github.com/wolfgang-ch/vtm-with-rcp) | VTM with an Eclipse RCP application | GPL3/Free | Desktop | Open |
|
||||||
|
| [XCTrack](http://xctrack.org/) | Flight computer for paraglider pilots | Proprietary/Free | Android | Closed |
|
||||||
|
|
||||||
You know an application that is missing here? Please inform us by sending a message via our public [mailing list](https://groups.google.com/group/mapsforge-dev).
|
You know an application that is missing here? Please inform us by sending a message via our public [forum](https://groups.google.com/group/mapsforge-dev).
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
As an open source project, we welcome new contributors and appreciate your help.
|
As an open source project, we welcome new contributors and appreciate your help.
|
||||||
|
|
||||||
Before you start working on an unresolved issue or try to implement a new feature, please contact us via our public [mailing list](https://groups.google.com/group/mapsforge-dev).
|
Before you start working on an unresolved issue or try to implement a new feature, please contact us via our public [forum](https://groups.google.com/group/mapsforge-dev).
|
||||||
|
|
||||||
You may also create a new issue on [Github](https://github.com/mapsforge/vtm/issues) or comment on an existing one to describe your ideas. We will then discuss the best way to realize your proposal and figure out how we can help you to get started quickly.
|
You may also create a new issue on [Github](https://github.com/mapsforge/vtm/issues) or comment on an existing one to describe your ideas. We will then discuss the best way to realize your proposal and figure out how we can help you to get started quickly.
|
||||||
|
|
||||||
@@ -10,6 +10,6 @@ If you are only requesting a small change in the code, you may attach a patch fi
|
|||||||
|
|
||||||
Also please keep the pull request commits squashed, in order to avoid the clutter in repository and have only the finally changed files together. One way is described [here](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html).
|
Also please keep the pull request commits squashed, in order to avoid the clutter in repository and have only the finally changed files together. One way is described [here](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html).
|
||||||
|
|
||||||
Regarding syntax make sure your IDE uses for indentation 4 spaces (no tabs) and follow the conventions you already see in the code.
|
Regarding code make sure your IDE uses UTF-8 encoding, for indentation 4 spaces (no tabs) and follow the conventions you already see in the code.
|
||||||
|
|
||||||
Please note that the VTM project is licenced under the [GNU LGPL3 licence](http://www.gnu.org/licenses/lgpl.html). Thus, all your contributions are going to be published under this license.
|
Please note that the VTM project is licenced under the [GNU LGPL3 licence](http://www.gnu.org/licenses/lgpl.html). Thus, all your contributions are going to be published under this license.
|
||||||
@@ -1,5 +1,74 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## Version 0.11.1 (2019-04-12)
|
||||||
|
|
||||||
|
- MBTiles raster tile source (Android) [#708](https://github.com/mapsforge/vtm/pull/708)
|
||||||
|
- Fix Android 4.2 crash [#713](https://github.com/mapsforge/vtm/issues/713)
|
||||||
|
- Many other minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.11.1)
|
||||||
|
|
||||||
|
## Version 0.11.0 (2019-03-25)
|
||||||
|
|
||||||
|
- Render themes: tag transform [#420](https://github.com/mapsforge/vtm/issues/420)
|
||||||
|
- Render themes: PNG scaling [#595](https://github.com/mapsforge/vtm/issues/595)
|
||||||
|
- Building shadows [#575](https://github.com/mapsforge/vtm/issues/575)
|
||||||
|
- Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401)
|
||||||
|
- PathLayer(s) scaled width [#594](https://github.com/mapsforge/vtm/issues/594)
|
||||||
|
- Mapilion MVT vector tiles & Hillshading [#614](https://github.com/mapsforge/vtm/issues/614)
|
||||||
|
- Overpass tile source [#663](https://github.com/mapsforge/vtm/issues/663)
|
||||||
|
- vtm-gdx-poi3d module [#600](https://github.com/mapsforge/vtm/pull/600)
|
||||||
|
- vtm-models module [#580](https://github.com/mapsforge/vtm/issues/580)
|
||||||
|
- `ViewController` refactor [#625](https://github.com/mapsforge/vtm/pull/625)
|
||||||
|
- `getMapViewCenter`, `setMapViewCenter` with pivotX, pivotY
|
||||||
|
- `ThemeCallback.getColor` refactor [#274](https://github.com/mapsforge/vtm/issues/274)
|
||||||
|
- Enable physical fling and fling on rotation / scale
|
||||||
|
- `Parameters.ANIMATOR2`
|
||||||
|
- Enable optimal placement of labels or symbols on polygons
|
||||||
|
- `Parameters.POLY_LABEL`
|
||||||
|
- Enable placement of symbols on polygons
|
||||||
|
- `Parameters.POLY_SYMBOL`
|
||||||
|
- OpenGL ES 3.0 support [#646](https://github.com/mapsforge/vtm/issues/646)
|
||||||
|
- OpenGL ES 2.0 complete [#642](https://github.com/mapsforge/vtm/pull/642)
|
||||||
|
- libGDX 1.9.9 [#635](https://github.com/mapsforge/vtm/issues/635)
|
||||||
|
- Many other minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.11.0)
|
||||||
|
|
||||||
|
## Version 0.10.0 (2018-08-28)
|
||||||
|
|
||||||
|
- Map overzoom [#393](https://github.com/mapsforge/vtm/issues/393)
|
||||||
|
- Buildings overzoom [#503](https://github.com/mapsforge/vtm/issues/503)
|
||||||
|
- Labels / symbols overzoom [#544](https://github.com/mapsforge/vtm/pull/544)
|
||||||
|
- S3DB layer [#475](https://github.com/mapsforge/vtm/pull/475)
|
||||||
|
- vtm-mvt module with MVT tile decoder [#481](https://github.com/mapsforge/vtm/pull/481)
|
||||||
|
- Nextzen MVT / GeoJSON vector tiles [#498](https://github.com/mapsforge/vtm/issues/498)
|
||||||
|
- OpenMapTiles MVT vector tiles [#482](https://github.com/mapsforge/vtm/issues/482)
|
||||||
|
- Location texture renderer [#547](https://github.com/mapsforge/vtm/issues/547)
|
||||||
|
- Render themes: symbols on lines [#495](https://github.com/mapsforge/vtm/issues/495)
|
||||||
|
- Render themes: styles improvements [#479](https://github.com/mapsforge/vtm/pull/479)
|
||||||
|
- Internal render themes improvements [#488](https://github.com/mapsforge/vtm/pull/488)
|
||||||
|
- Map view roll [#474](https://github.com/mapsforge/vtm/pull/474)
|
||||||
|
- Physical fling and fling on rotation / scale [#497](https://github.com/mapsforge/vtm/pull/497) [#499](https://github.com/mapsforge/vtm/pull/499)
|
||||||
|
- `Parameters.ANIMATOR2`
|
||||||
|
- Scale factor for short vertices calculation [#537](https://github.com/mapsforge/vtm/issues/537)
|
||||||
|
- `Parameters.CUSTOM_COORD_SCALE`
|
||||||
|
- Polygon symbols default disabled [#405](https://github.com/mapsforge/vtm/issues/405)
|
||||||
|
- `Parameters.POLY_SYMBOL`
|
||||||
|
- Map fractional zoom [#487](https://github.com/mapsforge/vtm/issues/487)
|
||||||
|
- Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477)
|
||||||
|
- Fix layers synchronization [#507](https://github.com/mapsforge/vtm/issues/507)
|
||||||
|
- Fix Mapsforge clipping on small zooms [#264](https://github.com/mapsforge/vtm/issues/264)
|
||||||
|
- Fix PathLayer (vtm) reverse segments [#220](https://github.com/mapsforge/vtm/issues/220)
|
||||||
|
- Fix FadeStep alpha interpolation [#486](https://github.com/mapsforge/vtm/issues/486)
|
||||||
|
- Fix libGDX flickering [#148](https://github.com/mapsforge/vtm/issues/148) [#149](https://github.com/mapsforge/vtm/issues/149)
|
||||||
|
- ViewController refactor [#523](https://github.com/mapsforge/vtm/pull/523)
|
||||||
|
- `ViewController.setScreenSize` renamed to `setViewSize`
|
||||||
|
- `ViewController.setMapScreenCenter` renamed to `setMapViewCenter`
|
||||||
|
- Android 9 compatibility [#550](https://github.com/mapsforge/vtm/issues/550)
|
||||||
|
- JTS (LocationTech) [#484](https://github.com/mapsforge/vtm/issues/484)
|
||||||
|
- SVG Salamander (JitPack) [#560](https://github.com/mapsforge/vtm/issues/560)
|
||||||
|
- Many other minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.10.0)
|
||||||
|
|
||||||
## Version 0.9.2 (2018-01-04)
|
## Version 0.9.2 (2018-01-04)
|
||||||
|
|
||||||
- Gradle fix transitive dependencies [#433](https://github.com/mapsforge/vtm/issues/433)
|
- Gradle fix transitive dependencies [#433](https://github.com/mapsforge/vtm/issues/433)
|
||||||
@@ -15,7 +84,7 @@
|
|||||||
|
|
||||||
## Version 0.9.0 (2017-12-03)
|
## Version 0.9.0 (2017-12-03)
|
||||||
|
|
||||||
- Mapsforge maps **v5 beta** support [#429](https://github.com/mapsforge/vtm/issues/429)
|
- Mapsforge maps **v5** support [#429](https://github.com/mapsforge/vtm/issues/429)
|
||||||
- Mapsforge themes compatibility [#100](https://github.com/mapsforge/vtm/issues/100)
|
- Mapsforge themes compatibility [#100](https://github.com/mapsforge/vtm/issues/100)
|
||||||
- Render themes: line symbol [#124](https://github.com/mapsforge/vtm/issues/124)
|
- Render themes: line symbol [#124](https://github.com/mapsforge/vtm/issues/124)
|
||||||
- Render themes: stroke dash array [#131](https://github.com/mapsforge/vtm/issues/131)
|
- Render themes: stroke dash array [#131](https://github.com/mapsforge/vtm/issues/131)
|
||||||
@@ -25,13 +94,14 @@
|
|||||||
- POI Search example [#394](https://github.com/mapsforge/vtm/issues/394)
|
- POI Search example [#394](https://github.com/mapsforge/vtm/issues/394)
|
||||||
- Mapsforge Reverse Geocoding [#383](https://github.com/mapsforge/vtm/issues/383)
|
- Mapsforge Reverse Geocoding [#383](https://github.com/mapsforge/vtm/issues/383)
|
||||||
- Core utilities [#396](https://github.com/mapsforge/vtm/issues/396)
|
- Core utilities [#396](https://github.com/mapsforge/vtm/issues/396)
|
||||||
- MercatorProjection.groundResolution renamed to groundResolutionWithScale
|
- `MercatorProjection.groundResolution` renamed to `groundResolutionWithScale`
|
||||||
- Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401)
|
- Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401)
|
||||||
- Mapsforge fix artifacts zoom >17 [#231](https://github.com/mapsforge/vtm/issues/231)
|
- Mapsforge fix artifacts zoom >17 [#231](https://github.com/mapsforge/vtm/issues/231)
|
||||||
- Mapzen building extrusions [#419](https://github.com/mapsforge/vtm/issues/419)
|
- Mapzen building extrusions [#419](https://github.com/mapsforge/vtm/issues/419)
|
||||||
- BuildingLayer expects height tags in meters
|
- BuildingLayer expects height tags in meters
|
||||||
- Polygon symbol positioning [#405](https://github.com/mapsforge/vtm/issues/405)
|
- Polygon symbol positioning [#405](https://github.com/mapsforge/vtm/issues/405)
|
||||||
- PolyLabel default disabled [#402](https://github.com/mapsforge/vtm/issues/402)
|
- PolyLabel default disabled [#402](https://github.com/mapsforge/vtm/issues/402)
|
||||||
|
- `Parameters.POLY_LABEL`
|
||||||
- vtm-theme-comparator module [#387](https://github.com/mapsforge/vtm/issues/387)
|
- vtm-theme-comparator module [#387](https://github.com/mapsforge/vtm/issues/387)
|
||||||
- Feature parameters [#403](https://github.com/mapsforge/vtm/issues/403)
|
- Feature parameters [#403](https://github.com/mapsforge/vtm/issues/403)
|
||||||
- vtm-android-gdx module enhancements [#435](https://github.com/mapsforge/vtm/issues/435)
|
- vtm-android-gdx module enhancements [#435](https://github.com/mapsforge/vtm/issues/435)
|
||||||
@@ -44,11 +114,13 @@
|
|||||||
## Version 0.8.0 (2017-07-19)
|
## Version 0.8.0 (2017-07-19)
|
||||||
|
|
||||||
- Real time (SVG) texture atlas [#63](https://github.com/mapsforge/vtm/issues/63)
|
- Real time (SVG) texture atlas [#63](https://github.com/mapsforge/vtm/issues/63)
|
||||||
|
- `Parameters.TEXTURE_ATLAS`
|
||||||
- Marker clustering [#312](https://github.com/mapsforge/vtm/issues/312)
|
- Marker clustering [#312](https://github.com/mapsforge/vtm/issues/312)
|
||||||
- Osmagray theme [#300](https://github.com/mapsforge/vtm/issues/300)
|
- Osmagray theme [#300](https://github.com/mapsforge/vtm/issues/300)
|
||||||
- Symbol rotation [#294](https://github.com/mapsforge/vtm/issues/294)
|
- Symbol rotation [#294](https://github.com/mapsforge/vtm/issues/294)
|
||||||
- Location renderer improvements [#317](https://github.com/mapsforge/vtm/issues/317)
|
- Location renderer improvements [#317](https://github.com/mapsforge/vtm/issues/317)
|
||||||
- POT textures [#334](https://github.com/mapsforge/vtm/issues/334)
|
- POT textures [#334](https://github.com/mapsforge/vtm/issues/334)
|
||||||
|
- `Parameters.POT_TEXTURES`
|
||||||
- OkHttp external cache [#135](https://github.com/mapsforge/vtm/issues/135)
|
- OkHttp external cache [#135](https://github.com/mapsforge/vtm/issues/135)
|
||||||
- Texture atlas improvements [#301](https://github.com/mapsforge/vtm/pull/301) [#304](https://github.com/mapsforge/vtm/pull/304)
|
- Texture atlas improvements [#301](https://github.com/mapsforge/vtm/pull/301) [#304](https://github.com/mapsforge/vtm/pull/304)
|
||||||
- vtm-json module [#367](https://github.com/mapsforge/vtm/issues/367)
|
- vtm-json module [#367](https://github.com/mapsforge/vtm/issues/367)
|
||||||
@@ -68,7 +140,8 @@
|
|||||||
## Version 0.7.0 (2017-02-26)
|
## Version 0.7.0 (2017-02-26)
|
||||||
|
|
||||||
- Mapsforge multiple map files [#208](https://github.com/mapsforge/vtm/issues/208)
|
- Mapsforge multiple map files [#208](https://github.com/mapsforge/vtm/issues/208)
|
||||||
- Improved gestures implementation [#253](https://github.com/mapsforge/vtm/issues/253)
|
- New gestures implementation [#253](https://github.com/mapsforge/vtm/issues/253)
|
||||||
|
- `Parameters.MAP_EVENT_LAYER2`
|
||||||
- Polygon label position enhancements [#80](https://github.com/mapsforge/vtm/issues/80)
|
- Polygon label position enhancements [#80](https://github.com/mapsforge/vtm/issues/80)
|
||||||
- vtm-web modules update [#51](https://github.com/mapsforge/vtm/issues/51)
|
- vtm-web modules update [#51](https://github.com/mapsforge/vtm/issues/51)
|
||||||
- Mapzen MVT vector tiles [#57](https://github.com/mapsforge/vtm/issues/57)
|
- Mapzen MVT vector tiles [#57](https://github.com/mapsforge/vtm/issues/57)
|
||||||
@@ -104,14 +177,16 @@
|
|||||||
- Location renderer and layer [#171](https://github.com/mapsforge/vtm/issues/171)
|
- Location renderer and layer [#171](https://github.com/mapsforge/vtm/issues/171)
|
||||||
- Map scale bar [#84](https://github.com/mapsforge/vtm/issues/84)
|
- Map scale bar [#84](https://github.com/mapsforge/vtm/issues/84)
|
||||||
- Tile size based on scale factor [#183](https://github.com/mapsforge/vtm/issues/183)
|
- Tile size based on scale factor [#183](https://github.com/mapsforge/vtm/issues/183)
|
||||||
|
- `Parameters.CUSTOM_TILE_SIZE`
|
||||||
- libGDX layer gestures [#151](https://github.com/mapsforge/vtm/issues/151)
|
- libGDX layer gestures [#151](https://github.com/mapsforge/vtm/issues/151)
|
||||||
- Render theme area tessellation option [#37](https://github.com/mapsforge/vtm/issues/37)
|
- Render theme area tessellation option [#37](https://github.com/mapsforge/vtm/issues/37)
|
||||||
|
- Render theme resources optional location prefixes [#66](https://github.com/mapsforge/vtm/issues/66)
|
||||||
- Graphics API platform enhancements [#92](https://github.com/mapsforge/vtm/issues/92)
|
- Graphics API platform enhancements [#92](https://github.com/mapsforge/vtm/issues/92)
|
||||||
- GeoPoint & BoundingBox improvements [#201](https://github.com/mapsforge/vtm/issues/201) [#200](https://github.com/mapsforge/vtm/issues/200)
|
- GeoPoint & BoundingBox improvements [#201](https://github.com/mapsforge/vtm/issues/201) [#200](https://github.com/mapsforge/vtm/issues/200)
|
||||||
- vtm-jts module [#53](https://github.com/mapsforge/vtm/issues/53)
|
- vtm-jts module [#53](https://github.com/mapsforge/vtm/issues/53)
|
||||||
- vtm-http module [#140](https://github.com/mapsforge/vtm/issues/140)
|
- vtm-http module [#140](https://github.com/mapsforge/vtm/issues/140)
|
||||||
- LWJGL desktop libGDX backend [#129](https://github.com/mapsforge/vtm/issues/129)
|
- LWJGL desktop libGDX backend [#129](https://github.com/mapsforge/vtm/issues/129)
|
||||||
- Available on [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22)
|
- Available on [Maven Central](https://search.maven.org/search?q=g:org.mapsforge)
|
||||||
- SNAPSHOT builds publish to Sonatype OSSRH [#165](https://github.com/mapsforge/vtm/issues/165)
|
- SNAPSHOT builds publish to Sonatype OSSRH [#165](https://github.com/mapsforge/vtm/issues/165)
|
||||||
- libGDX 1.9.4 [#164](https://github.com/mapsforge/vtm/issues/164)
|
- libGDX 1.9.4 [#164](https://github.com/mapsforge/vtm/issues/164)
|
||||||
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||||
|
|||||||
5
docs/ISSUE_TEMPLATE.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
For questions or discussion please always use our Forum first and make sure you read our Contributing Guide.
|
||||||
|
|
||||||
|
- Forum: https://groups.google.com/group/mapsforge-dev
|
||||||
|
|
||||||
|
- Contributing Guide: https://github.com/mapsforge/vtm/blob/master/docs/CONTRIBUTING.md
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
This article describes how to integrate the library in your project, with Gradle / Maven / Jars or SNAPSHOT builds.
|
This article describes how to integrate the library in your project, with Gradle / Maven / Jars or SNAPSHOT builds.
|
||||||
|
|
||||||
Current version is [](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22)
|
Current version is [](https://search.maven.org/search?q=g:org.mapsforge)
|
||||||
|
|
||||||
## Gradle
|
## Gradle
|
||||||
|
|
||||||
@@ -16,34 +16,29 @@ implementation 'org.slf4j:slf4j-api:1.7.25'
|
|||||||
### Android
|
### Android
|
||||||
```groovy
|
```groovy
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi'
|
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-mips'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-mips64'
|
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
||||||
implementation 'com.caverock:androidsvg:1.2.2-beta-1'
|
implementation 'com.caverock:androidsvg:1.3'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Android (with libGDX)
|
### Android (libGDX)
|
||||||
```groovy
|
```groovy
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi'
|
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||||
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
||||||
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
||||||
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
||||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]'
|
||||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-arm64-v8a'
|
|
||||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi'
|
|
||||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi-v7a'
|
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||||
|
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86'
|
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86'
|
||||||
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86_64'
|
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86_64'
|
||||||
implementation 'com.badlogicgames.gdx:gdx:1.9.8'
|
implementation 'com.badlogicgames.gdx:gdx:1.9.9'
|
||||||
implementation 'com.badlogicgames.gdx:gdx-backend-android:1.9.8'
|
implementation 'com.badlogicgames.gdx:gdx-backend-android:1.9.9'
|
||||||
implementation 'com.caverock:androidsvg:1.2.2-beta-1'
|
implementation 'com.caverock:androidsvg:1.3'
|
||||||
```
|
```
|
||||||
|
|
||||||
### iOS
|
### iOS
|
||||||
@@ -52,31 +47,33 @@ Detailed iOS instructions can be found [here](ios.md).
|
|||||||
|
|
||||||
### Desktop
|
### Desktop
|
||||||
```groovy
|
```groovy
|
||||||
|
repositories {
|
||||||
|
maven { url 'https://jitpack.io' }
|
||||||
|
}
|
||||||
|
|
||||||
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
||||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]'
|
||||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-linux'
|
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-linux'
|
||||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-osx'
|
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-osx'
|
||||||
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-windows'
|
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-windows'
|
||||||
implementation 'com.badlogicgames.gdx:gdx:1.9.8'
|
implementation 'com.badlogicgames.gdx:gdx:1.9.9'
|
||||||
implementation 'com.badlogicgames.gdx:gdx-platform:1.9.8:natives-desktop'
|
implementation 'com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop'
|
||||||
implementation 'com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.8'
|
implementation 'com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.9'
|
||||||
implementation 'org.lwjgl.lwjgl:lwjgl:2.9.3'
|
implementation 'org.lwjgl.lwjgl:lwjgl:2.9.3'
|
||||||
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-linux'
|
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-linux'
|
||||||
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx'
|
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx'
|
||||||
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows'
|
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows'
|
||||||
implementation 'com.metsci.ext.com.kitfox.svg:svg-salamander:0.1.19'
|
implementation 'com.github.blackears:svgSalamander:v1.1.1'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Optional
|
### JTS geometries
|
||||||
|
|
||||||
- JTS geometries
|
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
implementation 'org.mapsforge:vtm-jts:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-jts:[CURRENT-VERSION]'
|
||||||
implementation 'com.vividsolutions:jts:1.13'
|
implementation 'org.locationtech.jts:jts-core:1.15.0'
|
||||||
```
|
```
|
||||||
|
|
||||||
- Online tiles
|
### Online tiles
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
implementation 'org.mapsforge:vtm-http:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-http:[CURRENT-VERSION]'
|
||||||
@@ -84,7 +81,16 @@ implementation 'com.squareup.okhttp3:okhttp:3.8.0'
|
|||||||
implementation 'com.squareup.okio:okio:1.13.0'
|
implementation 'com.squareup.okio:okio:1.13.0'
|
||||||
```
|
```
|
||||||
|
|
||||||
- GeoJSON tiles
|
### Mapbox vector tiles
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-mvt:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.google.protobuf:protobuf-java:3.5.1'
|
||||||
|
implementation 'com.wdtinc:mapbox-vector-tile:3.0.0'
|
||||||
|
implementation 'org.locationtech.jts:jts-core:1.15.0'
|
||||||
|
```
|
||||||
|
|
||||||
|
### GeoJSON vector tiles
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
implementation 'org.mapsforge:vtm-json:[CURRENT-VERSION]'
|
implementation 'org.mapsforge:vtm-json:[CURRENT-VERSION]'
|
||||||
@@ -93,6 +99,33 @@ implementation 'com.fasterxml.jackson.core:jackson-core:2.8.4'
|
|||||||
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.4'
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.4'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### jeo (indoor maps)
|
||||||
|
|
||||||
|
Add _first_ the Boundless repository:
|
||||||
|
```groovy
|
||||||
|
repositories {
|
||||||
|
maven { url 'https://repo.boundlessgeo.com/main/' }
|
||||||
|
jcenter()
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-jeo:[CURRENT-VERSION]'
|
||||||
|
implementation('org.jeo:jeo:0-SNAPSHOT') {
|
||||||
|
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
|
||||||
|
}
|
||||||
|
implementation('org.jeo:jeo-carto:0-SNAPSHOT') {
|
||||||
|
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
|
||||||
|
}
|
||||||
|
implementation('org.jeo:jeo-render:0-SNAPSHOT') {
|
||||||
|
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
|
||||||
|
}
|
||||||
|
implementation 'org.osgeo:proj4j:0.1.0:jeo'
|
||||||
|
implementation 'com.metaweb:lessen:1.0'
|
||||||
|
implementation 'com.vividsolutions:jts:1.13'
|
||||||
|
```
|
||||||
|
|
||||||
## Snapshots
|
## Snapshots
|
||||||
|
|
||||||
We publish SNAPSHOT builds to Sonatype OSS Repository Hosting.
|
We publish SNAPSHOT builds to Sonatype OSS Repository Hosting.
|
||||||
@@ -131,6 +164,6 @@ The dependencies for Maven are declared in a similar way. For example:
|
|||||||
|
|
||||||
## Jars
|
## Jars
|
||||||
|
|
||||||
You can find release and snapshot jars (regular and with dependencies) in [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.mapsforge%22) and [Sonatype OSS Repository Hosting](https://oss.sonatype.org/content/repositories/snapshots/org/mapsforge/).
|
You can find release and snapshot jars (regular and with dependencies) in [Maven Central](https://search.maven.org/search?q=g:org.mapsforge) and [Sonatype OSS Repository Hosting](https://oss.sonatype.org/content/repositories/snapshots/org/mapsforge/).
|
||||||
|
|
||||||
Third party jars can be found at their respective sites or in Maven Central repository.
|
Third party jars can be found at their respective sites or in Maven Central repository.
|
||||||
|
|||||||
@@ -8,4 +8,4 @@
|
|||||||
- [OpenAndroMaps](http://www.openandromaps.org/en/)
|
- [OpenAndroMaps](http://www.openandromaps.org/en/)
|
||||||
- [OpenMaps](http://openmaps.eu/)
|
- [OpenMaps](http://openmaps.eu/)
|
||||||
|
|
||||||
You know a Mapsforge map provider that is missing here? Please inform us by sending a message via our public [mailing list](https://groups.google.com/group/mapsforge-dev).
|
You know a Mapsforge map provider that is missing here? Please inform us by sending a message via our public [forum](https://groups.google.com/group/mapsforge-dev).
|
||||||
|
|||||||
279
docs/Rendertheme.md
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
# RenderTheme
|
||||||
|
|
||||||
|
**This article describes how to use XML-based render-themes to style maps.**
|
||||||
|
|
||||||
|
If you have any questions or problems, don't hesitate to ask our public [forum](https://groups.google.com/group/mapsforge-dev) for help. You can also report bugs and improvement requests via our [issue tracker](https://github.com/mapsforge/vtm/issues).
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
A render-theme is an XML file which contains rules and rendering instructions. Such files can be used to customize the visual style of the rendered map. The vtm map library comes with built-in render-themes similar to the [Osmarender](http://wiki.openstreetmap.org/wiki/Osmarender) style. External render-theme files are also supported and can be activated via the `map.setTheme(ThemeLoader.load(File))` method at runtime.
|
||||||
|
|
||||||
|
Syntax and semantics of render-theme files are similar but not identical to [Osmarender rules](http://wiki.openstreetmap.org/wiki/Osmarender/Rules). A formal render-theme description exists as an *XML schema document*, it can be found in the [repository](https://github.com/mapsforge/vtm/blob/master/resources/rendertheme.xsd).
|
||||||
|
|
||||||
|
It is always recommended to study the [default](https://github.com/mapsforge/vtm/blob/master/vtm-themes/resources/assets/vtm/default.xml) built-in render theme.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
A rule element `<m/>` (_match_) has several attributes to specify which map elements the rule matches. Non of them is required.
|
||||||
|
|
||||||
|
|**Attribute**|**Valid values**|**Description**|**Default**|
|
||||||
|
|-------------|----------------|---------------|------------|
|
||||||
|
|e|<ul><li>node</li><li>way</li><li>any</li></ul>|Defines which map element type will be matched.|*any*|
|
||||||
|
|k|[string](http://www.w3.org/TR/xmlschema-2/#string)|The key of the tile source tag. <ul><li>A vertical bar "`\|`" can be used to specify multiple keys.</li>|any key|
|
||||||
|
|v|[string](http://www.w3.org/TR/xmlschema-2/#string)|The value of the tile source tag. <ul><li>A vertical bar "`\|`" can be used to specify multiple values.</li><li>A minus sign "`-`" excludes the other values after "`\|`". It never works alone.</li><li>A tilde "`~`" matches if the map element does not have a tag with the specified key.</li>|any value|
|
||||||
|
|closed|<ul><li>yes</li><li>no</li><li>any</li></ul>|Defines which ways will be matched. A way is considered as closed if its first node and its last node are equal.|*any*|
|
||||||
|
|select|<ul><li>first</li><li>when-matched</li><li>any</li></ul>|<ul><li>Only add the first matching sub-rule in this rule section (the others are ignored)</li><li>Select all matches of the enclosing rule section</li><li>Select all (whether it was matched or not)</li></ul>|*any*|
|
||||||
|
|zoom-min|[unsigned byte](http://www.w3.org/TR/xmlschema-2/#unsignedByte)|The minimum zoom level on which the rule will be matched.|*0*|
|
||||||
|
|zoom-max|[unsigned byte](http://www.w3.org/TR/xmlschema-2/#unsignedByte)|The maximum zoom level on which the rule will be matched.|*127*|
|
||||||
|
|
||||||
|
Rules can be nested to any level of depth. This can be used to define rendering instructions which depend on multiple rules. It may also be used to structure complex declarations and to avoid redundancy:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<m e="way" closed="no">
|
||||||
|
<m k="highway" v="motorway">
|
||||||
|
<m k="tunnel" v="true|yes">
|
||||||
|
…
|
||||||
|
</m>
|
||||||
|
<m k="tunnel" v="~|no|false">
|
||||||
|
…
|
||||||
|
</m>
|
||||||
|
</m>
|
||||||
|
</m>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Here is an example how to use the `select` attribute. The symbol is shown. The **bold** caption isn't visible cause only the first matched sub-rule is considered. The _italic_ caption is displayed as it was selected by the first sub-rule.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<m k="railway" v="halt|tram_stop" zoom-min="15" select="first">
|
||||||
|
<m v="tram_stop">
|
||||||
|
<symbol src="assets:symbols/transport/tram_stop.svg" />
|
||||||
|
</m>
|
||||||
|
<m v="tram_stop">
|
||||||
|
<caption style="bold" dy="20" fill="#af3a3a" k="name" size="12"/>
|
||||||
|
</m>
|
||||||
|
<m select="when-matched">
|
||||||
|
<caption style="italic" dy="-20" fill="#222222" k="name" size="12"/>
|
||||||
|
</m>
|
||||||
|
</m>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Rendering Instructions
|
||||||
|
|
||||||
|
A rendering instruction specifies how a map element is drawn. Each rule element might include any number of rendering instructions. Except for labels and symbols, all rendering instructions are drawn on the map in the order of their definition.
|
||||||
|
|
||||||
|
At the moment, the following rendering instructions are available:
|
||||||
|
|
||||||
|
- `area`
|
||||||
|
- `caption`
|
||||||
|
- `circle`
|
||||||
|
- `line`
|
||||||
|
- `outline`
|
||||||
|
- `lineSymbol`
|
||||||
|
- `text`
|
||||||
|
- `extrusion`
|
||||||
|
- `symbol`
|
||||||
|
|
||||||
|
## Header Elements
|
||||||
|
|
||||||
|
The following header elements can be used:
|
||||||
|
- `map-background`: a color value to set the color of a blank tile. This should not be used to set the color of the sea or land. Default is `#FFFFFF`.
|
||||||
|
- `base-stroke-width`: set the basic width of strokes. Default is `1`.
|
||||||
|
- `base-text-scale`: set the overall text scale. Default is `1`.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rendertheme xmlns="http://opensciencemap.org/rendertheme" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://opensciencemap.org/rendertheme https://raw.githubusercontent.com/mapsforge/vtm/master/resources/rendertheme.xsd" version="1" map-background="#FFFCFA">
|
||||||
|
…
|
||||||
|
</rendertheme>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Texts and Captions
|
||||||
|
|
||||||
|
The most common attributes for textual styling:
|
||||||
|
|
||||||
|
|**Attribute**|**Valid values**|**Description**|**Default**|
|
||||||
|
|-------------|----------------|---------------|-----------|
|
||||||
|
|font-family|*default*, *default_bold*, *monospace*, *sans_serif*, *serif*, *thin*, *light*, *medium*, *black*, *condensed*|Set font family|*default*|
|
||||||
|
|style|*bold*, *bold_italic*, *italic*, *normal*|Set font style|*normal*|
|
||||||
|
|size|non negative [float](https://www.w3.org/TR/xmlschema-2/#float)|Set font size|*0*|
|
||||||
|
|fill|[color](https://www.w3.org/TR/css-color-4)|Set fill color|*#000000*|
|
||||||
|
|stroke|[color](https://www.w3.org/TR/css-color-4)|Set stroke color|*#000000*|
|
||||||
|
|stroke-width|non negative [float](https://www.w3.org/TR/xmlschema-2/#float)|Set stroke width|*0*|
|
||||||
|
|dy|[float](https://www.w3.org/TR/xmlschema-2/#float)|Offset in vertical direction|*0*|
|
||||||
|
|
||||||
|
## Styles
|
||||||
|
|
||||||
|
There are different possibilities to simplify and accelerate map styling or changing styles.
|
||||||
|
|
||||||
|
### Style patterns
|
||||||
|
|
||||||
|
If you want to use a specific style multiple times you not have to rewrite it for each text, area, or line rule.
|
||||||
|
If you define a style set an `id` and use it with `use` in your rendering instructions:
|
||||||
|
- `style-text`
|
||||||
|
- `style-line`
|
||||||
|
- `style-area`
|
||||||
|
|
||||||
|
This example styles all areas with the_residential_ style, which haven't the `highway` or `building` key.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<style-area fade="11" fill="#e8e7e3" id="residential" />
|
||||||
|
|
||||||
|
<m closed="yes" e="way" k="highway|building" v="~">
|
||||||
|
<m v="residential|commercial|retail|farmyard">
|
||||||
|
<area use="residential" />
|
||||||
|
</m>
|
||||||
|
</m>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Stylemenus
|
||||||
|
|
||||||
|
The **stylemenu** allows you to selectively turn rules on and off, in effect defining multiple layers in a map that can be controlled individually.
|
||||||
|
|
||||||
|
To make use of style menus, you will first need to group the elements of your map into categories by attaching a **cat** element to them.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<m cat="areas" e="way" k="landuse" v="landfill|quarry" zoom-min="14">
|
||||||
|
```
|
||||||
|
|
||||||
|
The same cat tag can be given to as many elements as you like, but each element can only have one cat tag.
|
||||||
|
However, this does not limit your ability to group elements, as in the style definitions, multiple categories can be combined into one layer.
|
||||||
|
|
||||||
|
You can think about the cat tag as a switch that switches all elements in the rendertheme below it either on or off. If a category is turned off, all elements below it become invisible. If a category is turned on, all elements below become visible (unless they are themselves controlled via a category which is turned off).
|
||||||
|
|
||||||
|
Layers are combinations of categories that can be toggled on and off together and other layers (via **overlay**) that can be toggled on and off individually. In general, categories are not visible to a map user, but layers are. To make layers more user friendly, they can be named with the name tag in various languages.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<layer id="public_transport" visible="true">
|
||||||
|
<name lang="de" value="Öffentlicher Verkehr"/>
|
||||||
|
<name lang="en" value="Public Transport"/>
|
||||||
|
<name lang="es" value="Transporte público"/>
|
||||||
|
<name lang="fr" value="Transport public"/>
|
||||||
|
<cat id="public_transport"/>
|
||||||
|
<cat id="rail"/>
|
||||||
|
</layer>
|
||||||
|
```
|
||||||
|
|
||||||
|
A set of layer definitions makes up a style:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<stylemenu id="r4menu" defaultvalue="terrain" defaultlang="en">
|
||||||
|
<layer id="shopping" visible="true">
|
||||||
|
<name lang="de" value="Shopping"/>
|
||||||
|
<name lang="en" value="Shopping"/>
|
||||||
|
<name lang="es" value="Tiendas"/>
|
||||||
|
<name lang="fr" value="Shopping"/>
|
||||||
|
<cat id="shopping"/>
|
||||||
|
</layer>
|
||||||
|
|
||||||
|
<layer id="terrain" visible="true">
|
||||||
|
<name lang="de" value="Topographischer Hintergrund"/>
|
||||||
|
<name lang="en" value="Topographic Colours"/>
|
||||||
|
<name lang="es" value="Colores topográficos"/>
|
||||||
|
<name lang="fr" value="Couleurs topographiques"/>
|
||||||
|
<cat id="topo"/>
|
||||||
|
</layer>
|
||||||
|
</stylemenu>
|
||||||
|
```
|
||||||
|
|
||||||
|
The **visible** attribute is meant to indicate which of the layers are visible in the user interface. Layers where visible is set to false should not be seen by a user, and are thus useful to build base-layers of common categories from which then user-visible layers can be inherited, like this:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<layer id="base">
|
||||||
|
<cat id="roads"/>
|
||||||
|
<cat id="waterbodies"/>
|
||||||
|
<cat id="landuse"/>
|
||||||
|
<cat id="places"/>
|
||||||
|
<overlay id="emergency"/>
|
||||||
|
<overlay id="food"/>
|
||||||
|
</layer>
|
||||||
|
|
||||||
|
<layer id="simple" parent="base" visible="true">
|
||||||
|
<name lang="de" value="Auto"/>
|
||||||
|
<name lang="en" value="Driving"/>
|
||||||
|
<name lang="es" value="Conducción"/>
|
||||||
|
<name lang="fr" value="Conduite"/>
|
||||||
|
<cat id="transport"/>
|
||||||
|
<cat id="barrier"/>
|
||||||
|
<cat id="driving"/>
|
||||||
|
<overlay id="parking"/>
|
||||||
|
<overlay id="shopping"/>
|
||||||
|
</layer>
|
||||||
|
|
||||||
|
<layer id="standard" parent="base" visible="true">
|
||||||
|
<name lang="de" value="Stadt"/>
|
||||||
|
<name lang="en" value="City"/>
|
||||||
|
<name lang="es" value="City"/>
|
||||||
|
<name lang="fr" value="Ville"/>
|
||||||
|
<cat id="areas"/>
|
||||||
|
<overlay id="tourism"/>
|
||||||
|
<overlay id="sports"/>
|
||||||
|
<overlay id="amenities"/>
|
||||||
|
<overlay id="buildings"/>
|
||||||
|
<overlay id="public_transport"/>
|
||||||
|
<overlay id="accommodation"/>
|
||||||
|
<overlay id="shopping"/>
|
||||||
|
</layer>
|
||||||
|
```
|
||||||
|
|
||||||
|
To turn layers on by default, add the **enabled=true** attribute. In this case, buildings should be by default visible, while parking related elements not:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<layer id="parking">
|
||||||
|
<name lang="de" value="Parkplätze"/>
|
||||||
|
<name lang="en" value="Parking"/>
|
||||||
|
<name lang="es" value="Aparcamiento"/>
|
||||||
|
<name lang="fr" value="Parking"/>
|
||||||
|
<cat id="parking"/>
|
||||||
|
</layer>
|
||||||
|
|
||||||
|
<layer enabled="true" id="buildings">
|
||||||
|
<name lang="de" value="Gebäude"/>
|
||||||
|
<name lang="en" value="Buildings"/>
|
||||||
|
<name lang="es" value="Edificios"/>
|
||||||
|
<name lang="fr" value="Bâtiments"/>
|
||||||
|
<cat id="buildings"/>
|
||||||
|
</layer>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Map Integration
|
||||||
|
|
||||||
|
The [Playground](https://github.com/mapsforge/vtm/blob/master/vtm-playground/src/org/oscim/test/MapsforgeStyleTest.java) and [Android](https://github.com/mapsforge/vtm/blob/master/vtm-android-example/src/org/oscim/android/test/MapsforgeStyleActivity.java) Samples app have a completely worked style menu.
|
||||||
|
When a rendertheme is parsed, the style menu definitons are parsed and a callback is made into the application giving it access to the stylemenu definitions.
|
||||||
|
|
||||||
|
On Android, the stylemenus can thus be converted into standard Android settings, providing a seamless integration of the rendertheme definitions that do not require changes every time the rendertheme changes. There is an example on how to do this in the Samples app of Mapsforge, see the [Settings.java](https://github.com/mapsforge/mapsforge/blob/master/mapsforge-samples-android/src/main/java/org/mapsforge/samples/android/Settings.java) file in Mapsforge repository.
|
||||||
|
|
||||||
|
## Priorities
|
||||||
|
|
||||||
|
Labels and icons are drawn in order of priority. The default (and highest) priority is 0, so anything with a priority higher than 0 will only be drawn if the space is not yet taken up or has a lower priority value than its colliding elements.
|
||||||
|
|
||||||
|
_VTM priorities have the opposite meaning to the Mapsforge render-theme priorities._
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<m e="node" k="place" v="town" zoom-min="8">
|
||||||
|
<caption priority="2" k="name" style="bold" size="14" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
|
||||||
|
</m>
|
||||||
|
<m e="node" k="place" v="city" zoom-min="6" zoom-max="6">
|
||||||
|
<caption priority="0" k="name" style="bold" size="11" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
|
||||||
|
</m>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Symbols
|
||||||
|
|
||||||
|
Symbols can be either defined in the raster PNG format or as vector graphics in SVG format. VTM uses libraries for [Android](https://github.com/BigBadaboom/androidsvg) and [Java](https://github.com/blackears/svgSalamander) that support a large subset of the [Tiny SVG](http://www.w3.org/TR/SVGTiny12/index.html) specification.
|
||||||
|
|
||||||
|
### SVG Scaling
|
||||||
|
|
||||||
|
SVG resources can be automatically scaled to accommodate different device resolutions.
|
||||||
|
|
||||||
|
The options available are:
|
||||||
|
|
||||||
|
- If no size is given, a svg is rendered to a 20x20px multiplied by the device scale factor and any user adjustments.
|
||||||
|
- symbol-percent: the svg is rendered as a percentage size of its default size. This is the best way to make certain svg smaller or bigger than others.
|
||||||
|
- symbol-width and/or symbol-height: additional parameters give the absolute pixel size for the symbol, again adjusted by the scale factors. If only one dimension is set, the other is calculated from aspect ratio.
|
||||||
|
|
||||||
|
### SVG Icon Design
|
||||||
|
|
||||||
|
If you want to know how to design your own icons, you can have a look at Google's [Material Design](https://material.io/design/iconography/system-icons.html) conventions.
|
||||||
|
To keep SVG sizes down, it is advisable to make use of the reuse facilities within SVG files and to remove any unneccessary comments and metadata.
|
||||||
17
docs/desktop.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
### Desktop
|
||||||
|
|
||||||
|
To run the desktop samples can use the Gradle `run` task.
|
||||||
|
|
||||||
|
e.g. for `vtm-playground` can change the [mainClassName](../vtm-playground/build.gradle) to run each sample and pass args:
|
||||||
|
```groovy
|
||||||
|
./gradlew :vtm-playground:run -Pargs=/path/to/map
|
||||||
|
```
|
||||||
|
|
||||||
|
To create a standalone executable jar, adapt the main class in [build gradle](../vtm-playground/build.gradle), then run:
|
||||||
|
```groovy
|
||||||
|
./gradlew :vtm-playground:fatJar
|
||||||
|
```
|
||||||
|
The jar file can be found in `build/libs` folder. Depending on the main class, pass args on execution via command line:
|
||||||
|
```
|
||||||
|
java -jar vtm-playground-master-SNAPSHOT-jar-with-dependencies.jar /path/to/map
|
||||||
|
```
|
||||||
|
Before Width: | Height: | Size: 717 KiB After Width: | Height: | Size: 2.5 MiB |
|
Before Width: | Height: | Size: 791 KiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 580 KiB After Width: | Height: | Size: 1.6 MiB |
35
docs/logo/OSciMap.svg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --><!DOCTYPE svg PUBLIC
|
||||||
|
"-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="800px"
|
||||||
|
height="800px" viewBox="0 0 800 800" enable-background="new 0 0 800 800" xml:space="preserve">
|
||||||
|
<g id="Ebene_4">
|
||||||
|
<rect opacity="0.85" width="800" height="800"/>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_5">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M340.333,239.725
|
||||||
|
c24.1-18.739,49.74-35.585,76.703-50.308c-3.103-4.982-5.507-10.438-7.083-16.234c-28.377,15.341-55.359,32.98-80.819,52.813
|
||||||
|
C333.395,230.096,337.16,234.703,340.333,239.725z"/>
|
||||||
|
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M124.824,616.625
|
||||||
|
c3.986-31.477,10.562-62.157,19.499-91.824c-5.839-1.242-11.376-3.311-16.475-6.089c-9.576,31.622-16.422,63.948-20.489,96.824
|
||||||
|
c1.405-0.081,2.817-0.134,4.242-0.134C116.118,615.402,120.532,615.836,124.824,616.625z"/>
|
||||||
|
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M225.997,329.133
|
||||||
|
c-18.96,24.339-35.909,50.074-50.768,77.084c5.718,1.771,11.077,4.362,15.948,7.629c14.3-25.795,30.55-50.366,48.548-73.514
|
||||||
|
C234.703,337.16,230.096,333.395,225.997,329.133z"/>
|
||||||
|
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M616.625,124.824
|
||||||
|
c-0.789-4.292-1.223-8.707-1.223-13.223c0-1.425,0.053-2.837,0.134-4.242c-31.602,3.909-62.698,10.376-93.146,19.377
|
||||||
|
c2.895,5.059,5.088,10.563,6.452,16.388C557.252,134.797,586.575,128.629,616.625,124.824z"/>
|
||||||
|
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M429.969,417.653l-94.016-94.016
|
||||||
|
c-3.604,4.578-7.738,8.712-12.316,12.316l94.627,94.627C421.537,425.734,425.484,421.383,429.969,417.653z"/>
|
||||||
|
<path fill="#FFFFFF" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" d="M643.346,631.029l-127.051-127.05
|
||||||
|
c-3.729,4.483-8.082,8.431-12.928,11.703l127.662,127.663C634.633,638.767,638.767,634.633,643.346,631.029z"/>
|
||||||
|
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="278.583" cy="278.583" r="59.934"/>
|
||||||
|
<circle fill="#2FAADD" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="157.1" cy="464.815" r="48.272"/>
|
||||||
|
<circle fill="#2FAADD" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="469.132" cy="464.815" r="48.272"/>
|
||||||
|
<circle fill="#2FAADD" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="469.132" cy="157.1" r="48.272"/>
|
||||||
|
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="111.601" cy="688.399" r="59.934"/>
|
||||||
|
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="688.398" cy="111.601" r="59.934"/>
|
||||||
|
<circle fill="#FCEA21" stroke="#706F6F" stroke-width="0.25" stroke-miterlimit="10" cx="688.398" cy="688.399" r="59.934"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.0 KiB |
477
docs/logo/VTM.svg
Normal file
@@ -0,0 +1,477 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --><!DOCTYPE svg PUBLIC
|
||||||
|
"-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="515.667px" height="515.668px" viewBox="0 0 515.667 515.668" enable-background="new 0 0 515.667 515.668"
|
||||||
|
xml:space="preserve">
|
||||||
|
<g id="Ebene_9">
|
||||||
|
<g>
|
||||||
|
<path fill="#33B6EA" d="M211.969,454.364c-0.39,1.071-0.487,1.268-1.852,1.268h-7.989c-1.364,0-1.461-0.195-1.851-1.268
|
||||||
|
l-15.491-44.914c-0.097-0.195-0.39-0.975-0.487-1.656c0-0.778,0.682-0.877,2.143-1.07l8.086-0.877
|
||||||
|
c0.292,0,1.364-0.099,1.559-0.099c0.779,0,1.072,0.976,1.364,1.948l5.943,21.921c1.072,3.897,2.533,10.522,3.118,14.127h0.195
|
||||||
|
c0.584-3.507,2.144-10.326,3.313-14.127l6.625-21.921c0.292-1.071,0.584-1.948,1.364-1.948c0.195,0,1.267,0.099,1.559,0.099
|
||||||
|
l6.625,0.877c1.461,0.193,2.144,0.292,2.144,1.07c-0.098,0.683-0.39,1.461-0.487,1.656L211.969,454.364z"/>
|
||||||
|
<path fill="#33B6EA" d="M264.58,451.929c0.098,0.486,0.194,0.486,0.194,0.778c0,1.852-7.112,3.702-13.737,3.702
|
||||||
|
c-12.568,0-12.568-9.84-12.568-18.804v-21.921h-6.917c-1.169,0-1.364-0.292-1.364-1.364v-6.333c0-1.071,0.195-1.363,1.364-1.363
|
||||||
|
h6.917v-12.275c0-1.268,0.195-1.56,1.559-1.753l8.573-1.171c0.292,0,0.682-0.097,1.267-0.097c0.877,0,0.975,0.486,0.975,1.656
|
||||||
|
v13.64h11.107c0.877,0,1.655,0,1.655,1.071c0,0.195,0,0.39-0.099,0.779l-1.266,5.749c-0.293,1.362-0.586,1.461-1.754,1.461h-9.646
|
||||||
|
v23.577c0,3.118,0,5.942,3.313,5.942c3.897,0,6.333-1.852,7.697-1.852c0.39,0,0.683,0.195,0.778,0.585L264.58,451.929z"/>
|
||||||
|
<path fill="#33B6EA" d="M334.433,453.39c0,1.072-0.193,1.364-1.361,1.364h-9.646c-1.17,0-1.365-0.292-1.365-1.364v-30.008
|
||||||
|
c0-3.702-0.389-8.185-4.092-8.185c-4.092,0-7.307,2.825-8.574,3.995v34.196c0,1.072-0.193,1.364-1.361,1.364h-9.646
|
||||||
|
c-1.17,0-1.364-0.292-1.364-1.364v-30.008c0-3.702-0.39-8.185-4.093-8.185c-4.092,0-7.307,2.825-8.572,3.995v34.196
|
||||||
|
c0,1.072-0.193,1.364-1.363,1.364h-9.646c-1.171,0-1.365-0.292-1.365-1.364v-29.423c0-13.737-1.851-12.959-1.851-15.198
|
||||||
|
c0-0.487,0.39-0.877,1.07-1.072l7.404-2.436c0.586-0.194,1.072-0.292,1.462-0.292c1.267,0,2.046,2.144,3.118,6.723
|
||||||
|
c2.922-2.533,7.209-6.723,14.906-6.723c4.189,0,8.768,2.63,9.938,6.723c2.924-2.533,7.111-6.723,15.102-6.723
|
||||||
|
c9.158,0,11.301,6.917,11.301,15.394V453.39L334.433,453.39z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_10">
|
||||||
|
<g>
|
||||||
|
<path fill="#707072" d="M121.25,51.267c0,0,5.583,58,4.625,85.229c-0.397,11.281-4.188,42.375-21.813,42.375
|
||||||
|
c-18.979,0-21.146-22.813-44.438-22.813c-13.875,0-37.625,9.042-37.625,48.75c0,30.375,19.25,45.375,34.625,45.375
|
||||||
|
c22.875,0,19.625-18,43.875-18c23.917,0,24.875,22.375,24.875,34.75s-3.042,47-8.875,82c4.417,0.667,11.51,1.468,23.25,5.125
|
||||||
|
c15.917,4.959,28.125,8.875,53.625,8.875S233,353.309,233,342.309c0-17.041-15.625-14.25-15.625-34.75s20.625-30,41.25-30
|
||||||
|
c20.625,0,41.459,9.959,41.459,34.875c0,22.5-13.084,17.125-13.084,35.75s22.375,18.125,28,18.125s61.5-1.832,87-7.041
|
||||||
|
c-1-13.25-4.582-66.542-4.582-82.917c0-21.667,10.082-23.792,15.457-23.792c16.125,0,16.875,12.292,39.625,12.292
|
||||||
|
c20.584,0,40.625-19.75,40.625-49.792c0-27.125-19-38.75-34.625-38.75s-20.875,13.5-47.75,13.5
|
||||||
|
c-9.498,0-15.832-3.792-15.832-22.292c0-37.275,4.166-74.417,4.332-109.583c-18.666-2.75-66.625-10-93.125-10
|
||||||
|
c-24.207,0-25.957,10.125-25.957,16.75c0,17.083,23.5,22.167,23.5,38.5c0,29.917-23.793,37.75-43.293,37.75
|
||||||
|
c-17.042,0-42.458-15.583-42.458-40.083c0-12.042,3.374-15.688,6.844-19.159c5.189-5.189,11.177-8.299,11.177-16.508
|
||||||
|
c0-14.25-14.396-16.667-31.271-16.667S121.25,51.267,121.25,51.267z"/>
|
||||||
|
<g opacity="0.2">
|
||||||
|
<path fill="#FFFFFF" d="M306.125,47.934c26.5,0,74.459,7.25,93.125,10c-0.166,35.167-4.332,72.309-4.332,109.583
|
||||||
|
c0,18.5,6.334,22.292,15.832,22.292c26.875,0,32.125-13.5,47.75-13.5s34.625,11.625,34.625,38.75
|
||||||
|
c0,30.042-20.041,49.792-40.625,49.792c-22.75,0-23.5-12.292-39.625-12.292c-5.375,0-15.457,2.125-15.457,23.792
|
||||||
|
c0,16.375,3.582,69.667,4.582,82.917c-25.5,5.209-81.375,7.041-87,7.041c-0.287,0-0.615,0.001-0.984,0.001
|
||||||
|
c-6.861,0-27.016-0.45-27.016-18.126c0-18.625,13.084-13.25,13.084-35.75c0-24.916-20.834-34.875-41.459-34.875
|
||||||
|
c-20.625,0-41.25,9.5-41.25,30S233,325.268,233,342.309c0,11-14.125,20.625-39.625,20.625s-37.708-3.916-53.625-8.875
|
||||||
|
c-11.74-3.657-18.833-4.458-23.25-5.125c5.833-35,8.875-69.625,8.875-82s-0.958-34.75-24.875-34.75c-24.25,0-21,18-43.875,18
|
||||||
|
c-15.375,0-34.625-15-34.625-45.375c0-39.708,23.75-48.75,37.625-48.75c23.292,0,25.458,22.813,44.438,22.813
|
||||||
|
c17.625,0,21.416-31.094,21.813-42.375c0.958-27.229-4.625-85.229-4.625-85.229s66.542-2.75,83.417-2.75
|
||||||
|
s31.271,2.417,31.271,16.667c0,8.208-5.988,11.318-11.177,16.508c-3.47,3.47-6.844,7.117-6.844,19.159
|
||||||
|
c0,24.5,25.417,40.083,42.458,40.083c19.5,0,43.291-7.833,43.291-37.75c0-16.333-23.5-21.417-23.5-38.5
|
||||||
|
C280.167,58.059,281.917,47.934,306.125,47.934 M306.125,47.434c-23.451,0-26.457,9.219-26.457,17.25
|
||||||
|
c0,8.855,6.154,14.563,12.106,20.082c5.858,5.431,11.394,10.562,11.394,18.418c0,33.62-29.926,37.25-42.793,37.25
|
||||||
|
c-8.763,0-19.225-4.116-27.303-10.741c-9.451-7.751-14.655-17.994-14.655-28.843c0-12.108,3.405-15.514,6.697-18.806
|
||||||
|
c1.085-1.085,2.216-2.088,3.309-3.057c4.122-3.654,8.014-7.105,8.014-13.805c0-15.127-16.06-17.167-31.771-17.167
|
||||||
|
c-16.692,0-82.772,2.723-83.438,2.75l-0.528,0.021l0.051,0.525c0.056,0.58,5.569,58.278,4.623,85.164
|
||||||
|
c-0.548,15.56-5.653,41.893-21.313,41.893c-8.799,0-13.929-5.046-19.36-10.388c-6.209-6.108-12.631-12.424-25.077-12.424
|
||||||
|
c-4.252,0-15.137,0.938-24.358,9.621c-9.135,8.602-13.767,21.935-13.767,39.629c0,17.628,6.348,28.442,11.674,34.411
|
||||||
|
c6.406,7.178,15.172,11.464,23.451,11.464c11.46,0,16.58-4.539,21.531-8.93c5.03-4.46,10.231-9.07,22.344-9.07
|
||||||
|
c24.375,0,24.375,24.001,24.375,34.25c0,11.578-2.818,45.62-8.868,81.918l-0.083,0.501l0.502,0.075
|
||||||
|
c0.462,0.069,0.953,0.141,1.475,0.217c4.47,0.647,11.224,1.628,21.701,4.892l0.657,0.205c15.583,4.856,27.893,8.692,53.116,8.692
|
||||||
|
c12.11,0,22.353-2.162,29.62-6.252c6.774-3.813,10.505-9.096,10.505-14.873c0-8.332-3.602-11.997-7.415-15.877
|
||||||
|
c-4.036-4.107-8.21-8.354-8.21-18.873c0-20.378,20.467-29.5,40.75-29.5c18.895,0,40.959,9.003,40.959,34.375
|
||||||
|
c0,11.595-3.5,15.632-6.883,19.536c-3.189,3.679-6.201,7.153-6.201,16.214c0,7.779,3.785,13.217,11.25,16.155
|
||||||
|
c5.621,2.215,11.975,2.471,16.264,2.471h0.557l0.43-0.001c4.451,0,60.859-1.69,87.1-7.052l0.434-0.089l-0.033-0.438
|
||||||
|
c-0.932-12.355-4.582-66.493-4.582-82.879c0-15.455,5.033-23.292,14.959-23.292c7.229,0,11.383,2.564,15.781,5.281
|
||||||
|
c5.32,3.285,11.35,7.011,23.844,7.011c10.402,0,20.756-5.03,28.408-13.803c8.199-9.399,12.717-22.358,12.717-36.489
|
||||||
|
c0-12.434-4.016-22.776-11.611-29.911c-6.316-5.936-14.889-9.339-23.514-9.339c-6.883,0-11.699,2.525-17.277,5.451
|
||||||
|
c-7.193,3.771-15.348,8.049-30.473,8.049c-9.203,0-15.334-3.706-15.334-21.792c0-19.29,1.127-38.726,2.219-57.521
|
||||||
|
c1.047-18.047,2.035-35.093,2.115-52.061l0.002-0.435l-0.43-0.063L396.9,57.08C377.355,54.194,331.582,47.434,306.125,47.434
|
||||||
|
L306.125,47.434z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_5">
|
||||||
|
<g>
|
||||||
|
<path fill="#33B6EA" d="M395.246,253.01c0.27-2.734-1.365-4.583-2.832-6.502c-0.643-0.837-0.605-1.451,0.162-2.072
|
||||||
|
c0.881-0.711,0.844-1.509,0.482-2.506c-0.715-1.979-2.061-3.534-3.193-5.245c-1.344-2.021-4.088-3.735-1.973-6.808
|
||||||
|
c0.355-0.521-0.047-1.574,0.896-1.65c0.904-0.076,1.119,0.885,1.506,1.48c0.822,1.282,1.775,2.069,3.412,1.449
|
||||||
|
c0.447-0.17,0.986-0.104,1.486-0.123c2.223-0.085,3.834-1.387,4.582-3.714c0.779-2.433,0.242-4.502-1.639-5.825
|
||||||
|
c-0.83-0.585-1.578-1.233-2.207-2.006c-0.525-0.649-0.568-1.421,0.027-2.053c0.764-0.81,1.572-1.801,2.77-1.667
|
||||||
|
c1.068,0.119,0.598,1.197,0.633,1.873c0.053,0.985,0.102,2.088,1.326,2.066c1.078-0.018,1.178-1.114,1.26-1.996
|
||||||
|
c0.064-0.667-0.189-1.583,0.592-1.832c1.602-0.506,3.016-1.451,4.721-1.727c3.568-0.578,6.23-2.42,7.514-5.924
|
||||||
|
c0.514-1.4,0.971-2.759,2-3.952c0.898-1.036,1.096-2.398,0.619-3.877c-0.684-2.116-1.891-3.933-2.977-5.818
|
||||||
|
c-0.672-1.167-0.41-1.793,0.699-2.395c0.891-0.484,2.154-0.442,2.563-1.674c0.035-0.189,0.072-0.378,0.111-0.566l-0.072-0.469
|
||||||
|
c-2.152,0.212-4.465,0.33-6.965,0.33c-9.498,0-15.832-3.792-15.832-22.292c0-30.716,2.824-61.339,3.912-90.844
|
||||||
|
c-0.459,0.064-0.873,0.121-0.963,0.129c-0.471-0.294-0.939-0.589-1.41-0.885c0,0,0-0.001,0-0.002
|
||||||
|
c0.057-0.488-0.029-1.056,0.193-1.453c0.945-1.694,1.037-3.354,0.055-5.048c-2.23-0.616-3.424,0.834-4.689,2.271
|
||||||
|
c-1.482,1.685-2.777,3.506-3.936,5.409c-1.496,2.457-3.807,2.362-6.137,2.094c-1.678-0.194-3.182-0.269-4.436,1.181
|
||||||
|
c-0.457,0.527-1.168,0.904-1.932,1.087c-1.789,0.426-2.865,1.688-3.596,3.281c-1.695,3.702-4.016,6.812-7.916,8.439
|
||||||
|
c-1.141,0.476-1.566,1.31-1.479,2.522c0.07,0.935,0.018,1.876,0.014,2.813c-0.004,0.704-0.375,1.202-0.982,1.469
|
||||||
|
c-0.639,0.277-1.092-0.16-1.443-0.598c-0.818-1.015-1.543-2.104-2.393-3.088c-0.947-1.094-2.078-1.406-3.236-0.29
|
||||||
|
c-0.609,0.587-1.176,0.62-2.014,0.495c-1.469-0.221-2.986-0.133-4.484-0.139c-0.971-0.003-1.369,0.729-1.764,1.465
|
||||||
|
c-1.084,2.025-1.889,4.181-3.273,6.076c-0.813,1.118-0.225,2.679-0.279,4.038c-0.086,1.994-0.342,2.18-2.229,1.416
|
||||||
|
c-0.346-0.141-0.713-0.234-1.057-0.376c-0.875-0.363-1.67-0.719-0.756-1.875c0.438-0.555,0.275-1.274-0.313-1.663
|
||||||
|
c-2.787-1.85-1.818-4.563-1.438-6.96c0.432-2.694,1.951-4.966,3.893-6.912c0.307-0.309,0.625-0.617,0.885-0.966
|
||||||
|
c0.674-0.903,0.771-1.873,0.014-2.751c-0.783-0.909-1.727-0.555-2.543-0.042c-3.301,2.081-5.449,5.021-6.605,8.762
|
||||||
|
c-0.904,2.933-0.754,5.919-0.738,8.908c0.006,1.373,1.094,1.848,2.088,2.383c0.857,0.463,1.998,0.708,1.982,1.975
|
||||||
|
c-0.016,1.253-1.145,1.502-2.002,1.971c-0.383,0.208-0.814,0.384-1.111,0.683c-1.578,1.589-3.273,1.396-4.912,0.242
|
||||||
|
c-1.076-0.755-1.879-0.753-2.766,0.224c-0.363,0.402-0.887,0.697-1.387,0.932c-1.932,0.896-3.805,1.858-5.131,3.61
|
||||||
|
c-0.184,0.243-0.398,0.577-0.748,0.408c-0.455-0.22-0.234-0.611-0.135-0.966c0.719-2.45-1.293-4.758-3.861-4.45
|
||||||
|
c-1.271,0.153-2.115,1.469-1.836,2.972c0.229,1.22,0.498,2.437,0.826,3.631c0.189,0.681,0.266,1.296-0.508,1.546
|
||||||
|
c-0.791,0.256-1.139-0.371-1.34-0.979c-0.227-0.706-0.332-1.449-0.531-2.166c-0.166-0.594-6.02-5.959-6.646-6.133
|
||||||
|
c-0.061-0.017-0.123-0.011-0.188-0.016c-0.025,0.076-0.271,0.04-0.627-0.057c-2.24,13.228-10.033,20.992-19.579,25.231
|
||||||
|
c-0.134,0.21-0.271,0.386-0.425,0.473c-0.58,1.232-0.373,2.271,0.765,3.075c0.604,0.428,1.185,0.897,1.824,1.266
|
||||||
|
c0.628,0.362,0.971,0.853,0.712,1.52c-0.448,1.147-0.262,2.321-0.283,3.488c-0.018,1.127-0.122,2.087-1.679,1.481
|
||||||
|
c-0.624-0.242-1.073,0.063-1.354,0.64c-0.479,0.395-0.691,0.924-0.764,1.522c-0.404,0.276-0.357,0.698-0.354,1.105
|
||||||
|
c-0.293,1.102-0.545,2.227-1.521,2.979c-0.63,0.21-1.316,0.288-1.833,0.767c-0.633,0.016-1.267,0.028-1.899,0.043
|
||||||
|
c-0.752,0.048-1.561-0.289-2.229,0.33c-0.258,0.018-0.518,0.034-0.773,0.053c-1.367-0.092-2.762,0.105-4.096-0.376
|
||||||
|
c-0.374-0.265-0.75-0.529-1.124-0.793c0.005-1.051,0.047-2.102,0.007-3.148c-0.033-0.879,0.342-1.905-0.738-2.483l-0.008-0.012
|
||||||
|
c-0.523-0.892-1.047-0.833-1.568,0c-0.125,0.125-0.248,0.249-0.369,0.373c-0.547,0.857-2.334,1.323-1.568,2.526
|
||||||
|
c1.357,2.128,1.68,3.915-0.344,5.709c-0.738,0.05-1.475,0.101-2.209,0.149c-0.102,0.088-0.204,0.177-0.305,0.264
|
||||||
|
c-1.127,0.703-1.631,1.874-2.06,3.021c-0.329,0.881-0.942,1.505-1.604,1.995c-0.582,0.433-1.634,0.576-1.54-0.658
|
||||||
|
c0.218-2.815-1.361-4.965-2.783-7.007c-1.056-1.521-1.577-3.261-2.023-4.825c-0.465-1.629-1.241-3.077-1.824-4.611
|
||||||
|
c-0.494-1.306-2.2-1.399-2.564-0.149c-0.563,1.94-2.404,3.871-0.557,6.078c0.326,0.388,0.471,0.952,0.118,1.393
|
||||||
|
c-0.373,0.464-0.901,0.259-1.384,0.104c-1.403-0.449-2.569-0.059-3.553,1.001c-0.644,0.694-1.375,1.243-2.32,1.503
|
||||||
|
c-0.761,0.21-1.121,0.898-0.533,1.396c1.293,1.096,1.226,2.466,1.235,3.912c0.007,1.374,0.875,1.867,2.136,1.65
|
||||||
|
c1.186-0.204,2.209-0.808,3.191-1.489c0.438-0.304,0.883-0.917,1.469-0.501c0.593,0.422,0.376,1.156,0.228,1.733
|
||||||
|
c-0.119,0.466-0.396,0.926-0.71,1.297c-0.512,0.601-1.05,1.214-0.458,1.967c0.551,0.703,1.344,0.427,2.074,0.21
|
||||||
|
c1.668-0.497,3.267-1.223,5.022-1.431c0.464-0.054,0.917-0.174,1.112,0.337c0.25,0.645-0.291,0.917-0.747,1.073
|
||||||
|
c-1.177,0.402-2.385,0.704-3.56,1.104c-0.834,0.283-1.658,0.655-1.857,1.657c-0.22,1.114,0.495,1.762,1.295,2.279
|
||||||
|
c1.159,0.75,2.042,1.64,2.085,3.114c0.1,0.625,0.201,1.251,0.303,1.876c0.085,0.671-0.076,1.23-0.715,1.571
|
||||||
|
c-1.698,0.635-3.419,0.42-5.122,0.081c-3.549-0.709-5.808,1.404-4.804,4.8c0.252,0.851,0.453,1.883,0.045,2.57
|
||||||
|
c-1.296,2.195-0.223,3.93,0.754,5.763c0.588,1.104,1.37,1.447,2.611,1.203c1.58-0.311,3.191-0.524,4.799-0.613
|
||||||
|
c1.791-0.1,3.387-0.699,3.786-2.469c0.897-3.999,5-5.124,6.939-8.146c0.125-0.193,0.572-0.28,0.855-0.258
|
||||||
|
c1.416,0.117,2.717-0.173,3.941-0.9c0.344-0.204,1.15-0.364,1,0.173c-0.396,1.402,1.271,3.163-0.742,4.266
|
||||||
|
c-0.226,0.123-0.328,0.525-0.422,0.819c-0.227,0.69-0.197,1.344,0.355,1.908c0.617,0.629,1.387,0.586,2.102,0.378
|
||||||
|
c0.699-0.207,1.073-0.779,1.114-1.563c0.047-0.905-0.095-1.739-0.661-2.471c-0.273-0.352-0.58-0.718-0.156-1.143
|
||||||
|
c0.453-0.456,1.103-0.598,1.523-0.173c1.755,1.765,4.297,2.563,5.719,4.718c0.127,1.577-0.937,1.574-2.033,1.545
|
||||||
|
c-0.586-0.016-1.111,0.119-1.267,0.782c-0.128,0.543-0.007,0.973,0.646,1.054c0.375,0.375,0.748,0.748,1.123,1.123
|
||||||
|
c0.268,1.004,0.767,0.64,1.367,0.29c1.479-0.863,2.327-2.339,3.498-3.499c0.93-0.92,1.822-1.354,2.399,0.368
|
||||||
|
c0.153,0.449,0.376,0.943,1.004,0.943c0.011,0.337,0.104,0.618,0.459,0.743c0.122,1.08,0.772,1.651,1.789,1.877
|
||||||
|
c0.542,0.061,1.112,0.235,1.485-0.372c0.865-0.124,1.379-0.587,1.435-1.494c0.05-0.108,0.075-0.225,0.081-0.345
|
||||||
|
c1.124-0.259,0.543-1.227,0.775-1.854c0.233-0.621,0.332-1.552,1.211-1.403c0.826,0.138,0.467,0.92,0.479,1.541
|
||||||
|
c0.065,3.409,3.003,6.105,5.423,5.701c0.493,0,0.984-0.001,1.479-0.001c1.183,0.033,2.365,0.071,3.547,0.097
|
||||||
|
c0.941,0.021,1.547,0.471,1.73,1.39c0.365,1.865-2.271,5.095-4.19,5.051c-2.802-0.063-5.673,1.639-8.41-0.336
|
||||||
|
c-0.206-0.15-0.612-0.05-0.922-0.026c-1.289,0.093-2.509-0.204-3.581-0.871c-1.732-1.077-2.953-0.226-4.08,0.969
|
||||||
|
c-0.418,0.445-0.684,1.037-1.018,1.562c-0.693,1.086-1.428,1.224-2.409,0.268c-0.741-0.723-1.271-1.732-2.404-1.996
|
||||||
|
c0.031-0.577-0.5-0.748-0.79-1.094c-0.059-0.487-0.17-0.865-0.712-0.342c-0.25-0.015-0.5-0.029-0.751-0.044
|
||||||
|
c-0.068-0.443-0.252-0.738-0.773-0.586c-0.375-0.052-0.748-0.104-1.125-0.156c-0.068-0.709-0.58-0.744-1.121-0.735
|
||||||
|
c-0.166-0.254-0.336-0.508-0.504-0.763c0.125-0.897,0.084-1.806,0.379-2.697c0.176-0.526,0.311-1.27-0.639-1.39
|
||||||
|
c-0.211-0.562-0.595-0.945-1.154-1.153c-0.08-0.842-0.752-0.816-1.265-0.708c-2.718,0.573-5.501,0.056-8.189,0.479
|
||||||
|
c-1.339,0.21-3.078-0.258-4.02,1.329c-0.479,0.125-1.028,0.142-1.43,0.394c-2.17,1.363-4.457,1.729-6.95,1.11
|
||||||
|
c-0.734-0.183-1.686-0.05-1.97,0.729c-0.892,2.455-3.495,3.992-3.62,6.854c-0.012,0.304-0.388,0.63-0.654,0.881
|
||||||
|
c-1.637,1.539-3.124,3.223-4.88,4.653c-1.271,1.033-2.804,2.057-2.89,3.958c-0.044,0.98-0.428,1.692-1.157,2.229
|
||||||
|
c-1.583,1.164-1.662,2.628-1.401,4.471c0.224,1.584,1.093,3.239,0.144,4.899c-1.486,2.598-1.531,4.197,0.425,6.269
|
||||||
|
c3.04,3.221,5.598,6.84,8.698,10.016c1.951,1.999,3.984,2.362,6.437,1.544c1.589-0.529,3.325-0.772,4.784-0.202
|
||||||
|
c1.522,0.592,2.596,0.267,3.839-0.416c1.879-1.035,3.739-1.329,5.552,0.243c1.037,0.897,2.364,1.055,3.688,1.119
|
||||||
|
c0.681,0.032,1.356,0.002,2.034,0.222c1.316,0.428,1.846,0.965,0.748,2.238c-1.275,1.479-1.736,3.221-0.834,5.042
|
||||||
|
c1.07,2.166,2.283,4.256,3.438,6.381c-0.146,1.139,0.406,1.99,1.02,2.895c1.348,1.982,2.084,3.986,0.695,6.42
|
||||||
|
c-2.216,3.873-2.867,7.908-0.422,12.027c0.396,0.666,0.609,1.508,0.518,2.35c0.062,0.102,0.094,0.516,0.127,0.91
|
||||||
|
c9.334,1.685,17.914,5.714,23.633,12.592c1.953-2.099,4.527-4.729,5.152-7.411c0.078-0.334,0.328-0.769,0.615-0.896
|
||||||
|
c2.014-0.887,2.01-2.559,1.955-4.396c-0.043-1.336-0.602-2.931,0.416-3.988c1.57-1.639,2.863-3.666,5.221-4.43
|
||||||
|
c0.906-0.293,1.441-1.136,1.438-2.033c-0.002-2.723,0.029-5.447-1.076-8.06c-0.736-1.741-1.891-3.473-1.33-5.512
|
||||||
|
c1.012-3.684,3.529-6.376,6.348-8.699c4.24-3.491,7.348-7.759,9.535-12.733c0.469-1.064,1.016-2.424,0.094-3.361
|
||||||
|
c-0.881-0.892-2.229-0.408-3.389-0.198c-2.078,0.375-4.074,1.239-6.256,0.964c-0.619-0.078-1.297,0.008-1.547-0.758
|
||||||
|
c-0.16-0.488,0.15-0.833,0.475-1.14c0.521-0.5,1.115-0.563,1.703-0.15c1.256,0.883,2.455,0.532,3.703-0.043
|
||||||
|
c2.689-1.234,4.832-3.479,7.512-4.545c3.006-1.195,5.582-2.71,7.717-5.119c0.824-0.927,1.818-1.698,2.48-2.783
|
||||||
|
c0.576-0.942,0.51-1.767-0.324-2.507c-0.861-0.765-1.91-1.566-2.998-1.291c-2.359,0.597-4.564,0.394-6.77-0.495
|
||||||
|
c-1.23-0.753-1.777-2.006-2.4-3.221c-0.799-1.56-1.645-3.083-3.705-3.276c-0.535-0.052-1.127-0.374-1.004-1.108
|
||||||
|
c0.113-0.667,0.701-0.815,1.256-0.922c1.754-0.34,2.951,0.58,4.035,1.787c1.752,1.952,3.695,3.527,6.574,3.107
|
||||||
|
c1.387,1.82,3.553,2.434,5.41,3.527c0.934,0.549,1.758,0.518,2.59-0.14c1.455-1.15,2.979-1.109,4.545-0.249
|
||||||
|
c1.094,0.6,2.168,1.239,3.279,1.803c0.834,0.424,1.234,0.898,0.9,1.922c-0.42,1.295,0.414,2.246,1.512,2.317
|
||||||
|
c2.311,0.153,2.66,1.596,2.826,3.405c0.439,4.79,2.623,8.884,5.258,12.771c0.959,1.414,2.221,1.563,3.504,0.451
|
||||||
|
c2.076-1.797,3.029-4.201,2.697-6.848c-0.184-1.468,0.279-2.161,1.299-2.949c2.512-1.947,5.348-3.653,7.109-6.302
|
||||||
|
c1.5-2.249,3.686-2.021,5.715-2.513c0.514-0.122,1.061,0.34,1.373,0.847c1.201,1.942,2.754,3.684,2.801,6.206
|
||||||
|
c0.025,1.369,0.83,2.336,2.449,2.183c2.279-0.218,3.467,0.926,2.928,3.167c-1.109,4.619-0.865,8.794,3.088,12.077
|
||||||
|
c0.141,0.112,0.225,0.302,0.303,0.47c0.219,0.459,1.143,0.813,0.574,1.355c-0.646,0.621-1.242-0.067-1.73-0.548
|
||||||
|
c-0.844-0.833-1.637-1.722-2.521-2.513c-0.768-0.688-1.775-0.898-2.551-0.19c-0.74,0.676,0.066,1.423,0.428,1.98
|
||||||
|
c0.777,1.194,1.855,2.162,2.623,3.394c1.781,2.854,3.686,5.636,5.514,8.46c0.285,0.439,0.637,0.742,1.084,0.994
|
||||||
|
c3.023,1.701,5.59,4.386,9.428,4.33c0.154-0.003,0.787,0.146,1.271,0.271c0.904-1.166,1.887-2.069,2.9-2.763
|
||||||
|
c-2.412-0.8-5.723-0.824-8.076-0.843C396.181,253.939,395.132,254.152,395.246,253.01z M248.805,156.258
|
||||||
|
c-0.096,0.881-0.293,1.807-1.396,1.905c-0.906,0.083-1.133-0.578-1.123-1.282c-0.016-1.051,0.322-1.826,1.385-1.939
|
||||||
|
C248.563,154.847,248.89,155.466,248.805,156.258z M278.5,183.979c-1.053-1.027-2.092-2.066-3.129-3.11
|
||||||
|
c-0.483-0.488-0.974-0.948-1.74-0.85c-0.246-0.25-0.494-0.501-0.742-0.753c0.351-0.585-1.271-1.963,0.752-1.878
|
||||||
|
c0.746,0.499,1.49,0.997,2.234,1.497c0.055,0.468,0.283,0.733,0.789,0.681c0.894,0.896,1.787,1.79,2.682,2.686
|
||||||
|
c-0.055,0.5,0.205,0.727,0.677,0.766c-0.011,0.125,0.013,0.247,0.067,0.359C279.978,184.677,279.443,184.899,278.5,183.979z
|
||||||
|
M306.382,124.542c0.771,0.064,0.986,0.608,0.967,1.295c-0.012,0.606-0.189,1.177-0.889,1.13c-0.756-0.049-1.197-0.584-1.227-1.35
|
||||||
|
C305.205,124.858,305.642,124.48,306.382,124.542z M298.623,181.036c-1.105,0.415-2.201,0.91-3.347,1.158
|
||||||
|
c-1.928,0.416-3.073-0.921-2.329-2.758c0.518-1.279,1.016-2.484,1.021-3.918c0.006-1.313,1.186-1.392,2.207-1.52
|
||||||
|
c1.656,0.315,3.527,0.159,4.189,2.368c0.242,0.808,1.113,1.118,1.908,1.371c1.758,0.561,3.273,1.5,4.473,2.926
|
||||||
|
c0.311,0.373,0.803,0.709,0.496,1.279c-0.254,0.475-0.814,0.404-1.18,0.28c-1.432-0.484-3.057-0.002-4.398-1.194
|
||||||
|
C300.896,180.35,299.654,180.648,298.623,181.036z M308.689,226.039c-0.217-1.417-1.541-2.061-2.229-3.166
|
||||||
|
c-1.67-2.678-2.623-5.649-3.766-8.534c-0.762-1.919-1.615-3.775-2.51-5.629c-0.268-0.559-1.051-1.239-0.217-1.79
|
||||||
|
c0.787-0.521,1.162,0.446,1.633,0.858c1.146,1.004,1.914,2.285,2.576,3.639c2.1,4.293,4.193,8.584,6.291,12.877
|
||||||
|
C310.398,225.41,310.818,227.026,308.689,226.039z M320.189,187.722c-0.127-0.856-0.043-1.741-0.074-2.613
|
||||||
|
c-0.02-0.535,0.141-1.179-0.662-1.329c-0.021-0.642-0.041-1.284-0.063-1.925c0.646-0.578,0.004-1.032-0.219-1.432
|
||||||
|
c-0.922-1.646-1.42-3.379-1.35-5.269c0.35-0.48,0.572-1.084,1.24-1.248c1.357-0.21,2.656-1.011,4.094-0.4
|
||||||
|
c0.17,0.173,0.34,0.346,0.51,0.519c-0.184,0.862-0.98,0.86-1.588,1.082c-0.998,0.366-2.098,0.635-2.213,1.938
|
||||||
|
c-0.117,1.331,0.059,2.596,1.393,3.35c0.057,0.972,0.977,1.448,1.299,2.267c0.107,0.08,0.27,0.164,0.385,0.247
|
||||||
|
c-0.115-0.083-0.279-0.167-0.387-0.248c-0.029,0.987-0.213,2-0.057,2.958c0.227,1.399,0.197,2.991,1.74,3.818
|
||||||
|
c0.004,0.226,0.008,0.454,0.01,0.681C321.88,190.938,320.552,190.18,320.189,187.722z M352.781,101.823
|
||||||
|
c-0.613,0.174-0.676-0.389-0.668-0.843c0.014-0.862,0.467-1.413,1.299-1.583c0.498-0.102,0.85,0.131,0.855,0.836
|
||||||
|
C354.134,100.99,353.593,101.591,352.781,101.823z M360.394,121.037c-0.836-0.154-1.857-0.271-1.896-1.619
|
||||||
|
c-0.02-0.702,0.248-1.289,1.025-1.225c1.094,0.091,2.082,0.504,2.215,1.779C361.82,120.747,361.263,121.034,360.394,121.037z"/>
|
||||||
|
<path fill="#33B6EA" d="M93.814,179.34c-1.706,2.358-1.584,4.791-0.422,7.328c0.216,0.473,0.128,1.096,0.14,1.648
|
||||||
|
c0.012,0.53,0.087,0.992,0.696,1.146c0.023,0.224,0.048,0.447,0.073,0.67c-0.035,0.501,0.233,0.733,0.7,0.789
|
||||||
|
c-0.002,0.117,0.018,0.229,0.06,0.34c-0.044,0.5,0.223,0.73,0.686,0.794c-0.004,0.115,0.017,0.228,0.064,0.333
|
||||||
|
c-0.04,0.495,0.225,0.727,0.685,0.79c0.569,2.029,1.965,3.702,3.591,4.625c2.341,1.327,3.17,3.387,4.038,5.569
|
||||||
|
c1.73,4.353,4.99,7.727,7.404,11.641c0.451,0.729,1.259,0.854,2,0.49c0.891-0.437,0.428-1.17,0.221-1.796
|
||||||
|
c-0.615-1.875-1.808-3.398-2.975-4.945c-0.789-1.042-1.545-2.111-2.262-3.205c-0.258-0.392-0.66-1.015-0.107-1.325
|
||||||
|
c0.593-0.332,0.803,0.369,1.015,0.795c0.272,0.549,0.338,1.176,0.827,1.648c1.913,1.852,3.758,3.763,5.54,5.753
|
||||||
|
c1.688,1.886,2.903,3.788,3.343,6.305c0.237,1.353,0.563,3.116,2.124,3.514c3.487,0.885,6.537,3.077,10.114,3.488
|
||||||
|
c2.978,0.343,5.79,0.759,7.92,3.106c0-0.002,0.119,0.026,0.119,0.026l0.124-0.005c0.434,0.831,1.238,0.878,2.029,0.952
|
||||||
|
c1.653,0.549,2.838,1.668,3.763,3.104c0,1.154,0.038,2.284,1.476,2.626c0.127,0.295,0.373,0.398,0.672,0.418
|
||||||
|
c0.92,1.306,2.401,1.334,3.756,1.597c1.092,0.211,2.289,0.851,3.188-0.445c0.333-0.055,0.662-0.109,0.994-0.163
|
||||||
|
c0.863,0.201,1.09,0.786,1.195,1.62c0.182,1.473-0.4,2.768-0.726,4.125c-0.034,0.227-0.071,0.454-0.106,0.681
|
||||||
|
c-1.02,0.439-1.209,1.381-1.407,2.319c-0.445,1.549-1.806,2.344-2.823,3.421c-1.604,1.693-1.741,5.729-0.293,7.542
|
||||||
|
c1.949,2.449,3.878,4.975,4.717,8.018c1.028,3.724,2.847,6.558,6.74,7.699c0.459,0.136,0.854,0.515,1.254,0.81
|
||||||
|
c1.115,0.836,1.771,1.881,1.688,3.352c-0.066,1.185,0.026,2.375-0.001,3.563c-0.102,4.77,0.383,9.612-1.738,14.137
|
||||||
|
c-0.151,0.324-0.15,0.731-0.174,1.104c-0.282,4.343-0.523,8.687-2.435,12.726c-0.496,1.051-0.275,2.07,0.717,2.842
|
||||||
|
c0.463,0.359,0.862,0.861,0.45,1.445c-0.869,1.229-0.656,2.893-1.749,4.055c-0.528,0.562-0.446,1.365-0.066,2.113
|
||||||
|
c1.585,3.117,1.051,6.018-0.965,8.746c-0.563,0.758-1.133,1.563-1.134,2.521c-0.001,2.562-0.542,5.078-0.454,7.652
|
||||||
|
c0.146,4.271,1.943,6.373,6.126,6.85c1.311,0.148,1.753,0.951,1.127,2.051c-1.432,2.515-0.319,4.349,2.641,4.353
|
||||||
|
c1.625,0.006,3.253,0.063,4.874-0.021c0.921-0.049,2.165,0.552,2.67-0.694c0.541-1.332-0.38-2.242-1.318-3.023
|
||||||
|
c-0.427-0.354-0.907-0.66-1.399-0.92c-4.346-2.287-5.139-7.1-1.722-10.518c0.221-0.224,0.442-0.443,0.662-0.664
|
||||||
|
c2.563-2.588,2.61-3.379,0.144-5.979c-0.701-0.735-0.833-1.258-0.063-2.02c1.855-1.828,2.749-4.287,4.099-6.451
|
||||||
|
c0.457-0.732,0.617-1.471-0.071-2.226c-0.997-1.094-0.375-1.522,0.767-1.616c1.008-0.078,1.805-0.648,1.868-1.541
|
||||||
|
c0.142-2.052,1.452-2.138,2.995-2.222c3.324-0.176,5.661-3.231,4.886-6.424c-0.296-1.219,0.276-1.526,1.219-1.477
|
||||||
|
c1.463,0.084,2.464-0.604,3.424-1.592c1.101-1.138,2.03-2.373,2.694-3.802c1.525-3.276,2.92-6.629,4.58-9.838
|
||||||
|
c1.802-3.485,4.638-5.836,8.373-7.248c2.516-0.951,4.089-3.074,5.102-5.561c1.271-0.906,1.198-2.379,1.39-3.652
|
||||||
|
c0.419-2.809,0.519-5.668,2.485-7.994c0.746-0.883,1.661-1.703,1.73-2.989c0.002,0.002,0.004,0.018,0.004,0.018
|
||||||
|
c3.726-2.994,3.392-7.268-0.728-9.383c-0.555-0.285-1.118-0.572-1.609-0.947c-1.106-0.842-2.373-1.109-3.681-1.51
|
||||||
|
c-2.895-0.89-5.997-1.268-8.524-3.365c-1.421-1.179-3.381-1.958-5.383-0.799c-0.28,0.163-0.592,0.3-0.868,0.082
|
||||||
|
c-0.367-0.29-0.272-0.689-0.045-1.004c0.651-0.902,0.796-1.831,0.168-2.78c-1.784-2.698-4.088-4.774-7.349-5.379
|
||||||
|
c-1.571-0.292-2.796-0.957-3.861-2.076c-1.94-2.04-4.012-3.892-6.441-5.387c-1.589-0.977-3.023-1.066-4.557-0.236
|
||||||
|
c-1.591,0.86-2.893,0.529-4.002-0.777c-1.394-1.641-3.036-2.747-5.231-1.918c-1.903,0.722-4.381,1.258-5.368,2.713
|
||||||
|
c-1.152,1.698-2.973,2.544-4.003,4.263c-0.972,1.624-2.731,1.363-4.224,0.847c-1.457-0.503-2.283-1.657-2.287-3.31
|
||||||
|
c-0.003-1.256,0.165-2.481,0.328-3.72c0.251-1.925-0.579-2.966-2.484-2.829c-3.292,0.234-3.28-1.115-3.009-3.83
|
||||||
|
c0.056-0.551,0.246-1.096,0.414-1.63c0.246-0.783,0.586-1.604-0.186-2.25c-0.771-0.646-1.723-0.758-2.662-0.456
|
||||||
|
c-1.287,0.406-2.381,1.17-3.1,2.311c-1.215,1.929-3.086,1.316-4.753,1.252c-1.539-0.062-2.118-1.258-2.529-2.613
|
||||||
|
c-0.681-2.243-0.843-4.521-0.796-6.842c0.065-3.192,2.056-5.158,5.304-5.163c1.924-0.003,3.772,0.02,5.656-0.858
|
||||||
|
c1.979-0.922,4.207-0.07,6.221,0.388c1.286,0.292,1.138,2.078,1.626,3.195c0.645,1.479,1.116,3.007,2.659,3.944
|
||||||
|
c1.359,0.824,2.084,0.355,2.665-0.856c0.432-0.904,0.417-1.831-0.082-2.697c-0.588-1.024-1.249-2.012-1.865-3.021
|
||||||
|
c-1.183-1.939-1.023-3.307,0.598-4.986c0.3-0.312,0.687-0.535,1.015-0.82c1.845-1.596,3.589-3.285,5.042-5.262
|
||||||
|
c0.319-0.435,0.599-0.91,0.35-1.373c-0.656-1.223,0.164-1.848,0.898-2.531c1.067-0.994,2.344-2.125,2.094-3.585
|
||||||
|
c-0.365-2.126,0.964-1.979,2.192-2.172c0.675-0.104,1.39-0.043,2.03-0.243c0.982-0.304,1.593-0.898,0.652-1.901
|
||||||
|
c-1.267-1.35-0.342-1.936,0.814-2.461c1.816-1.931,2.465-1.966,5.748-0.321c1.133-0.012,2.329,0.277,3.267-0.68
|
||||||
|
c0.802-1.007,1.305-2.014,0.12-3.111c-0.639-0.594-1.261-1.214-1.854-1.858c-0.715-0.777-1.047-1.675-0.728-2.753
|
||||||
|
c0.723-2.417,0.104-3.102-2.417-2.744c-0.654,0.095-1.353,0.735-2.053-0.054c0.759-0.761,1.408-1.534,2.515-1.591
|
||||||
|
c2.115,0.008,4.232,0.017,6.348,0.027c0.262-0.002,0.523,0,0.784,0c0.621,0.068,1.305,0.286,1.514-0.634
|
||||||
|
c1.638-1.122,2.602-3.08,4.743-3.623c0.841-0.214,0.969-1.193,0.906-2.045c0.345-0.271,0.334-0.517-0.053-0.734
|
||||||
|
c-0.628-2.905-2.213-4.493-4.511-4.517c-0.851-0.798-1.064-2.121-2.203-2.683c-0.022-0.235-0.047-0.47-0.071-0.704
|
||||||
|
c-0.782-3.359-2.929-6.136-4.01-9.376c-0.262-0.783-1.085-1.031-1.827-0.301c-0.713,0.699-1.398,1.427-2.123,2.116
|
||||||
|
c-0.575,0.548-1.166,1.346-2.051,0.955c-0.88-0.39-1.432-1.243-1.533-2.224c-0.102-0.989-0.058-1.996-0.057-2.995
|
||||||
|
c0.001-0.706-0.055-1.423-0.609-1.902c-2.555-2.202-5.307-3.844-8.903-3.568c-2.9,0.222-4.174,2.229-2.822,4.72
|
||||||
|
c0.417,0.771,0.913,1.515,0.312,2.43c-1.784,2.716-1.021,5.326,0.358,7.903c0.022,0.251,0.047,0.501,0.07,0.751
|
||||||
|
c-0.005,1.195,0.003,2.36-1.133,3.19c-2.563,1.871-2.831,4.269-1.689,7.097c0.701,1.733,0.167,2.368-1.699,2.465
|
||||||
|
c-0.172-0.995-0.931-1.583-1.563-2.261c0.005-0.063,0.017-0.124,0.013-0.188c-0.327-5.265-0.947-7.05-6.288-6.572
|
||||||
|
c-1.982,0.178-3.609-1.082-4.253-2.993c-0.946-2.8-3.123-4.482-5.381-6.083c-1.199-0.852-1.708-1.763-0.859-3.146
|
||||||
|
c0.682-1.11,1.093-2.472,1.989-3.351c1.843-1.808,3.003-4.54,6.124-4.785c0.762-0.059,1.512-0.781,1.463-1.514
|
||||||
|
c-0.154-2.252,0.83-4.151,1.396-6.21c0.481-1.749,1.281-2.369,2.799-2.667c0.608-0.12,1.217-0.296,1.787-0.538
|
||||||
|
c2.755-1.163,3.647-3.313,2.573-6.21c-0.227-0.616-0.43-1.346-0.125-1.818c1.141-1.772-0.008-2.925-0.978-4.118
|
||||||
|
c-0.372-0.458-0.743-1.183-1.444-1.036c-0.811,0.17-1.112,0.969-1.326,1.688c-0.336,1.133-0.543,2.307-0.9,3.432
|
||||||
|
c-0.221,0.699-0.503,1.539-1.481,1.407c-1.048-0.141-0.637-1.048-0.693-1.661c-0.076-0.833,0.005-1.694-1.268-1.575
|
||||||
|
c-2.749,0.261-4.019-0.885-3.993-3.64c0.017-1.795-0.311-3.505-1.309-4.991c-1.952-2.909-2.811-2.883-4.622,0.027
|
||||||
|
c-0.294,0.473-0.591,0.962-0.782,1.482c-0.506,1.382-0.848,2.877,0.085,4.134c0.978,1.313,1.589,2.828,2.558,4.127
|
||||||
|
c0.648,0.87,1.173,1.776,0.014,2.563c-0.993,0.674-1.935,0.442-2.872-0.373c-1.309-1.138-1.373-2.563-1.319-4.099
|
||||||
|
c0.035-1.013,0.007-2.184-1.106-2.549c-0.996-0.326-1.688,0.589-2.352,1.243c-0.222,0.218-0.455,0.447-0.595,0.718
|
||||||
|
c-0.531,1.019-0.939,1.937,0.7,2.451c1.341,0.422,1.329,1.385,0.646,2.516c-0.387,0.64-2.091,1.16-3.653,1.585
|
||||||
|
c0.201,6.693,0.251,12.89,0.072,18.001c-0.397,11.281-4.188,42.375-21.813,42.375c-4.042,0-7.318-1.041-10.201-2.669
|
||||||
|
c-0.001,1.048-0.005,1.793-0.013,1.929C94.132,178.542,94.079,178.972,93.814,179.34z M156.285,178.357
|
||||||
|
c0.168-1.072,0.971-1.334,1.93-1.298c0.81-0.002,1.401,0.328,1.253,1.202c-0.209,1.245-1.278,0.906-2.095,0.957
|
||||||
|
C156.781,179.251,156.159,179.164,156.285,178.357z M146.371,177.911c-0.633,0.987-0.721,2.082-0.744,3.211
|
||||||
|
c-0.016,0.749-0.465,1.16-1.214,1.071c-0.791-0.092-0.966-0.668-0.848-1.363c0.199-1.28,0.354-2.567,0.61-3.835
|
||||||
|
c0.204-1.016,1.047-1.594,1.92-1.267C147.172,176.131,146.886,177.11,146.371,177.911z M155.749,180.521
|
||||||
|
c-0.25,1.05-1.095,1.639-2.121,1.965c-0.645,0.204-1.166-0.188-1.137-0.84c0.058-1.225,0.855-1.853,2.027-1.972
|
||||||
|
C155.061,179.619,155.684,179.582,155.749,180.521z M142.313,170.602c0.336-0.354,0.638-0.583,0.929-0.688
|
||||||
|
C142.951,170.019,142.649,170.248,142.313,170.602c0.861,0.001,1.722,0.003,2.583,0.004c1.124,0.073,1.833,0.911,2.241,1.711
|
||||||
|
c0.922,1.804,2.427,2.109,4.169,2.105c0.161,0.288,0.421,0.34,0.718,0.3c0.799,0.305,2.016,0.674,1.75,1.545
|
||||||
|
c-0.41,1.333-1.806,1.987-3.063,2.577c-0.152,0.071-0.365,0.012-0.55,0.013c-0.235-0.236-0.468-0.476-0.702-0.713
|
||||||
|
c-0.409-2.105-3.118-4.506-5.168-4.529c-1.297-0.015-2.596,0.051-3.894,0.08c-0.017,0.188-0.042,0.396-0.188,0.478
|
||||||
|
c0.146-0.081,0.172-0.29,0.188-0.479c-0.235-0.019-0.472-0.036-0.708-0.054l-0.032-0.032c-0.013-0.36-0.026-0.721-0.039-1.081
|
||||||
|
C140.217,171.465,141.12,170.831,142.313,170.602z"/>
|
||||||
|
<path fill="#33B6EA" d="M261.123,144.733c0.373,1.167,1.229,2.144,2.688,2.289c1.512,0.152,2.291-0.697,2.886-1.896
|
||||||
|
c0.278-0.557,0.534-1.142,0.909-1.626c0.363-0.467,0.764-1.146,1.492-0.882c0.693,0.25,0.421,0.968,0.4,1.488
|
||||||
|
c-0.09,2.453,0.017,4.823,1.479,6.976c1.228,1.811,2.933,2.129,4.505,0.592c1.049-1.024,1.564-2.347,1.936-3.764
|
||||||
|
c0.381-1.474,0.457-3.054,1.633-4.271c1.972-2.035,1.617-3.884-0.616-5.247c-5.669,1.75-11.687,2.479-17.375,2.532
|
||||||
|
C260.507,141.762,260.603,143.113,261.123,144.733z"/>
|
||||||
|
<path fill="#33B6EA" d="M288.996,78.165c1.332-0.097,2.771,1.13,3.922,0.059c1.434-1.339,2.813-2.797,3.685-4.624
|
||||||
|
c0.63-1.326,0.272-2.284-1.062-2.873c-2.209-0.976-4.162-2.148-6.929-2.062c-2.282,0.071-3.606,0.396-4.562,2.35
|
||||||
|
c-0.131,0.27-1.159,1.218-1.854,1.882c0.958,1.86,2.197,3.577,3.603,5.202C287.152,78.135,288.642,78.19,288.996,78.165z"/>
|
||||||
|
<path fill="#33B6EA" d="M226.581,124.819c-0.941-0.525-2.057-0.161-3.043-0.691c-1.795-0.962-2.925-0.21-2.789,1.82
|
||||||
|
c0.186,2.794,0.175,5.723,3.674,6.771c0.792,0.236,1.234,1.312,2.26,1.1c1.938-0.399,3.894-0.721,5.758-1.435
|
||||||
|
c0.208-0.08,0.818-0.639,1.528-1.352c-2.45-1.883-4.744-4.013-6.791-6.373C226.892,124.826,226.671,124.906,226.581,124.819z"/>
|
||||||
|
<path fill="#33B6EA" d="M131.975,94.741c0.444-0.877,1.002-2.652-0.867-3.268c-0.695-0.229-1.457-0.282-2.194-0.357
|
||||||
|
c-1.839-0.187-2.837,0.975-2.519,2.802c0.162,0.938,0.574,2.051-0.906,2.403c0.016,0.523,0.032,1.046,0.046,1.567
|
||||||
|
c0.604,0.093,0.618,0.566,0.568,0.996c-0.188,1.614,0.621,2.901,1.407,4.156c1.179,1.878,3.376,2.004,4.869,0.364
|
||||||
|
c1.631-1.793,1.691-3.727,0.192-5.732C131.921,96.802,131.278,96.12,131.975,94.741z"/>
|
||||||
|
<path fill="#33B6EA" d="M418.878,250.344c-0.58-0.945-1.154-1.913-1.172-3.109c-0.01-0.604-0.496-1.006-1.076-1.159
|
||||||
|
c-0.678-0.181-1.225-0.494-1.055-1.269c0.186-0.843,0.965-0.967,1.643-0.892c1.045,0.115,2.066,0.415,3.105,0.594
|
||||||
|
c0.652,0.112,1.104-0.193,1.203-0.863c0.105-0.725-0.307-0.997-0.98-1.04c-1.48-0.092-3.066-0.065-4.389,0.274
|
||||||
|
c-1.26,0.325-2.68,1.541-2.898,3.136c-0.324,2.396,0.959,4.755,2.652,5.401c0.432,0.166,0.83,0.826,1.006,1.429
|
||||||
|
c0.711,0.104,1.385,0.242,2.035,0.399C419.162,252.391,419.357,251.125,418.878,250.344z"/>
|
||||||
|
<path fill="#33B6EA" d="M424.419,194.958c1.324,0.021,2.738-1.396,3.01-2.866c0.201-1.085-0.424-2.828-0.986-4.153
|
||||||
|
c-1.719,0.448-3.561,0.833-5.545,1.136c0.57,0.979,1.146,2.499,1.326,3.357C422.486,193.688,422.794,194.931,424.419,194.958z"/>
|
||||||
|
<path fill="#33B6EA" d="M443.439,181.242c2.627,1.035,5.447-0.266,6.488-2.99c-0.137,0.012-0.25-0.129-0.359-0.345
|
||||||
|
c-2.119,0.762-4.143,1.739-6.213,2.807C443.509,180.945,443.576,181.138,443.439,181.242z"/>
|
||||||
|
<path fill="#33B6EA" d="M470.48,257.766c0.164-0.756,0.027-1.41-0.898-1.478c-0.906-0.063-1.16,0.547-1.145,1.326
|
||||||
|
c0.01,0.633,0.078,2.023,0.129,3.143c0.615-0.322,1.227-0.664,1.83-1.023C470.38,258.961,470.416,258.062,470.48,257.766z"/>
|
||||||
|
<path fill="#33B6EA" d="M124.979,66.436c-0.258-1.046-0.754-1.981-2.065-2.01c-0.169,0.05-0.329,0.107-0.479,0.172
|
||||||
|
c0.095,1.128,0.193,2.309,0.294,3.542c0.091,0.01,0.176,0.023,0.273,0.028C124.496,68.493,125.318,67.813,124.979,66.436z"/>
|
||||||
|
<path fill="#33B6EA" d="M168.799,219.878c-0.905-0.421-1.85-0.767-2.714-1.256c-1.137-0.646-2.152-1.509-3.52-0.372
|
||||||
|
c-0.437,0.361-1.041-0.047-1.516-0.416c-2.75-2.133-6.473-1.997-9.315-3.948c-0.254-0.176-0.732-0.025-1.107-0.025
|
||||||
|
c0-0.012,0-0.023,0-0.037c-0.25,0-0.5-0.012-0.75,0.002c-1.147,0.068-3.129,1.632-2.944,2.438
|
||||||
|
c0.352,1.528,1.672,1.132,2.752,1.247c1.194,0.13,2.501-0.478,3.569,0.566c2.037,1.991,4.587,2.827,7.341,3.133
|
||||||
|
c0.62,0.07,1.018,0.385,1.438,0.77c2.632,2.403,4.277,2.487,7.04,0.39C170.322,221.422,170.227,220.545,168.799,219.878z"/>
|
||||||
|
<path fill="#33B6EA" d="M172.526,221.396c-0.69,0.008-1.145,0.479-1.202,1.146c-0.062,0.699,0.445,0.953,1.072,0.923
|
||||||
|
c0.664-0.03,0.961-0.442,0.981-1.046C173.353,221.827,173.105,221.386,172.526,221.396z"/>
|
||||||
|
<path fill="#33B6EA" d="M319.966,261.688c-0.795-0.379-1.451,0.174-1.988,0.688c-1.174,1.125-2.113,2.623-3.479,3.39
|
||||||
|
c-4.676,2.625-2.58,7.69-4.314,11.346c-0.16,0.332,0.188,0.967,0.406,1.408c0.779,1.561,1.836,3.01,3.695,3.076
|
||||||
|
c1.83,0.069,2.473-1.632,2.879-3c0.99-3.316,1.771-6.697,2.547-10.068c0.375-1.635,0.551-3.314,0.791-4.824
|
||||||
|
C320.425,262.889,320.748,262.057,319.966,261.688z"/>
|
||||||
|
<path fill="#33B6EA" d="M217.104,83.273c0.8-1.035,1.484-2.144,1.934-3.391c0.387-1.07,0.337-2.037-0.775-2.559
|
||||||
|
c-1.148-0.539-1.893,0.062-2.341,1.141c-0.142,0.347-0.292,0.701-0.51,1c-0.545,0.742-1.211,1.933-2.149,1.274
|
||||||
|
c-0.96-0.673,0.181-1.482,0.629-2.149c0.947-1.413,0.593-2.33-1.092-2.522c-0.876-0.101-1.518-0.354-1.42-1.318
|
||||||
|
c0.186-1.802-0.82-2.578-2.342-3.081c-0.637-0.209-1.347-0.532-1.755-1.026c-1.315-1.586-2.982-1.936-4.862-1.659
|
||||||
|
c-2.325-0.292-4.409,0.191-5.995,1.964c-2.832,3.163-6.6,4.367-10.573,5.123c-2.216,0.422-3.315,1.563-3.448,3.885
|
||||||
|
c-0.037,0.646-0.472,1.021-0.913,1.348c-0.599,0.442-1.239,0.848-1.909,1.172c-2.484,1.207-2.587,1.982-0.995,4.132
|
||||||
|
c0.771,1.042,0.616,1.911-0.267,2.816c-1.222,1.26-2.806,1.81-4.368,2.427c-1.457,0.574-1.53,1.694-1.024,2.915
|
||||||
|
c0.234,0.566,0.849,0.874,1.372,1.233c1.417,0.975,1.37,1.426-0.127,2.276c-0.752,0.427-1.403,0.894-0.775,1.909
|
||||||
|
c1.297,2.095,3.563,3.065,6.045,2.575c0.854-0.167,1.714-0.297,2.572-0.449c1.823-0.325,3.028,0.374,3.574,2.156
|
||||||
|
c0.873,2.861,1.535,5.741,1.095,8.775c-0.191,1.32-0.365,2.7,1.569,2.991c0.705,0.105,0.71,0.679,0.337,1.133
|
||||||
|
c-0.939,1.145-0.242,1.661,0.737,2.089c1.018,0.445,1.09,0.944,0.354,1.827c-1.15,1.374-1.618,2.985-1.634,4.842
|
||||||
|
c-0.036,3.965,1.706,7.363,3.151,10.864c0.233,0.569,0.728,1.032,1.324,1.275c4.189,1.711,4.195,1.707,5.881-2.587
|
||||||
|
c0.206-0.521,0.481-1.063,0.494-1.603c0.063-2.558,1.508-4.042,3.553-5.366c3.229-2.089,5.229-5.659,9.298-6.935
|
||||||
|
c2.404-0.753,2.173-1.906-0.042-3.576c-0.387-0.292-0.897-0.662-0.427-1.215c0.488-0.573,0.889-0.104,1.231,0.262
|
||||||
|
c0.362,0.385,0.553,1.093,1.297,0.728c0.771-0.377,0.973-1.058,0.945-1.88c-0.023-0.726-0.334-1.334-0.674-1.924
|
||||||
|
c-0.749-1.298-0.615-2.494,0.31-3.637c0.51-0.629,1.036-1.246,1.515-1.896c1.802-2.438,1.575-4.376-0.714-6.415
|
||||||
|
c-0.363-0.324-0.86-0.627-0.772-1.204c0.109-0.717,0.742-0.551,1.203-0.559c0.875-0.014,1.007-0.551,0.996-1.249
|
||||||
|
c-0.012-0.626,0.019-1.251-0.001-1.876c-0.02-0.536,0.141-1.198-0.651-1.347c-0.667-0.124-1.049,0.263-1.305,0.824
|
||||||
|
c-0.302,0.667-0.707,1.32-1.541,0.893c-0.934-0.479-0.716-1.352-0.429-2.14c0.335-0.919,1.127-1.483,1.78-2.146
|
||||||
|
c0.702-0.71,0.813-1.273-0.297-1.613c-0.647-0.198-1.094-0.581-1.276-1.241c-0.321-1.173,0.466-2.55,1.663-2.71
|
||||||
|
c1.413-0.189,1.623,0.789,1.649,1.898c0.009,0.4-0.185,0.936,0.375,1.119c0.154,0.05,0.581-0.191,0.579-0.298
|
||||||
|
c-0.01-1.228,1.162-2.52-0.058-3.674C215.78,85.646,216.16,84.495,217.104,83.273z"/>
|
||||||
|
<path fill="#33B6EA" d="M179.837,120.635c-2.297-1.378-5.719-2.322-4.344-5.646c0.507-2.175-0.573-3.014-1.521-3.574
|
||||||
|
c-1.982-1.172-3.397-2.92-5.096-4.375c-1.2-1.027-2.345-2.187-4.217-2.121c-2.664,0.094-2.813-0.167-3.258-2.88
|
||||||
|
c-0.208-1.269-0.78-2.033-2.157-1.095c-0.455,0.309-0.956,0.383-1.411,0.096c-1.38-0.866-2.649-0.941-3.866,0.313
|
||||||
|
c-1.501,1.548-2.821,3.436-2.096,5.489c0.81,2.292,2.023,4.604,4.287,5.984c1.049,0.639,1.688,1.441,1.522,2.744
|
||||||
|
c-0.171,1.348,0.573,2.011,1.813,2.083c1.171,0.068,1.609-0.607,1.616-1.772c0.009-1.158,0.795-1.595,1.901-1.561
|
||||||
|
c2.297,0.069,4.733,2.068,5.121,4.221c0.504,2.79-0.979,6.598-2.988,7.338c-0.823,0.303-1.671,0.416-1.388,1.528
|
||||||
|
c0.256,1.017,1.101,1.327,2.054,1.202c1.602-0.209,2.759,0.558,3.799,1.61c0.922,0.933,1.743,1.98,2.748,2.811
|
||||||
|
c1.001,0.825,2.11,2.061,3.449,0.348c0.128-0.165,0.433-0.266,0.658-0.27c0.875-0.018,1.813,0.129,2.124-1.023
|
||||||
|
c0.345-1.268-0.021-2.328-0.951-3.232c-0.898-0.872-1.782-1.758-2.646-2.66c-0.415-0.436-0.698-1.063-0.194-1.493
|
||||||
|
c0.614-0.525,0.964,0.109,1.29,0.576c0.463,0.666,0.901,1.386,1.844,1.423c1.105,0.045,3.584-1.531,3.744-2.433
|
||||||
|
C181.963,122.616,181.403,121.571,179.837,120.635z"/>
|
||||||
|
<path fill="#33B6EA" d="M157.557,86.107c-0.893,1.163-0.663,1.946,0.333,2.676c1.527,1.117,3.277,1.849,5.104,2.232
|
||||||
|
c1.326,0.277,2.81-0.292,2.812-1.736c0.003-1.724,0.936-2.612,1.962-3.602c1.189-1.15,2.051-2.518,2.602-4.063
|
||||||
|
c0.25-0.703,0.601-1.231,1.331-1.431c1.511-0.41,2.599-1.409,3.672-2.484c1.137-1.14,2.104-2.49,3.663-3.158
|
||||||
|
c0.614-0.263,0.876-0.697,0.373-1.32c-0.413-0.511-0.495-1.358,0.099-1.407c2.866-0.23,2.185-1.752,1.429-3.417
|
||||||
|
c-0.118-0.26-0.042-0.619-0.018-0.931c0.091-1.14-0.464-1.965-1.11-2.866c-1.891-2.635-4.783-1.923-7.165-2.443
|
||||||
|
c-0.961,0.141-1.869-0.222-2.556,0.265c-2.417,1.705-5.235,2.623-7.774,4.073c-0.632,0.361-1.286,0.88-1.2,1.766
|
||||||
|
c0.088,0.909,0.738,1.436,1.515,1.737c1.547,0.6,3.055,1.415,4.836,0.847c0.535-0.171,1.145-0.012,1.385,0.648
|
||||||
|
c0.119,0.328,0.017,0.645-0.301,0.796c-1.338,0.643-2.648,1.646-4.045,1.792c-1.783,0.189-2.062,0.982-1.942,2.425
|
||||||
|
c0.05,0.62-0.044,1.255,0.019,1.873c0.153,1.534-0.129,2.725-1.923,3.044c-0.495,0.09-0.951,0.523-0.999,1.027
|
||||||
|
C159.513,84.003,158.398,85.012,157.557,86.107z"/>
|
||||||
|
<path fill="#33B6EA" d="M152.884,77.528c-0.429,1.846,1.912,3.921,3.456,3.26c1.558-0.667,3.551-3.911,3.501-5.78
|
||||||
|
c-0.104-0.343-0.147-0.813-0.369-1.168c-0.75-1.197-0.961-2.493-1.141-3.88c-0.238-1.819-1.496-3.13-3.053-4.043
|
||||||
|
c-1.273-0.748-2.296-0.46-2.746,1.055c-0.708,2.383-0.803,4.812-0.008,7.166C152.91,75.282,153.177,76.269,152.884,77.528z"/>
|
||||||
|
<path fill="#33B6EA" d="M154.511,87.379c-0.448-0.894-4.153-2.092-4.979-1.511c-1.591,1.12-2.899,0.739-4.143-0.542
|
||||||
|
c-0.869-0.894-1.742-1.784-2.648-2.639c-0.882-0.833-1.917-1.371-3.568-1.415c-0.545-0.048-1.463,0.136-1.679,1.163
|
||||||
|
c-0.231,1.102,0.811,1.245,1.542,1.503c1.932,0.68,3.007,1.995,2.839,4.063c-0.128,1.554,0.396,2.189,1.969,1.993
|
||||||
|
c0.858-0.108,1.543,0.375,2.201,0.872c0.796,0.597,1.755,0.897,2.642,0.507c1.182-0.523,2.365-0.643,3.621-0.693
|
||||||
|
C153.635,90.624,155.032,88.417,154.511,87.379z"/>
|
||||||
|
<path fill="#33B6EA" d="M135.405,62.536c-0.487-0.039-0.896-0.254-1.072-0.639c-0.813-1.791-2.86-1.762-4.157-2.856
|
||||||
|
c-0.55-0.463-1.419-0.317-2.049,0.291c-0.659,0.641-0.264,1.234,0.002,1.867c0.529,1.257,1.607,2.044,2.522,2.96
|
||||||
|
c0.712,0.71,1.04,1.299,0.219,2.204c-0.656,0.721,0.689,3.457,1.694,3.608c0.516,0.077,0.921-0.179,0.989-0.642
|
||||||
|
c0.251-1.678,0.935-1.223,1.814-0.463c0.778,0.675,1.502,0.46,1.58-0.553c0.09-1.178,0.623-2.294,0.438-3.375
|
||||||
|
C137.395,62.709,137.396,62.697,135.405,62.536z"/>
|
||||||
|
<path fill="#33B6EA" d="M145.415,93.232c-0.57-0.247-1.138-0.504-1.727-0.699c-2.589-0.854-4.123,0.147-4.369,2.852
|
||||||
|
c-0.039,0.433-0.005,0.871-0.005,1.219c-0.163,2.235,0.82,4.215,0.924,6.333c0.027,0.562,0.41,1.271,1.211,1.177
|
||||||
|
c0.692-0.082,1.225-0.628,1.133-1.274c-0.245-1.704,0.827-2.629,1.86-3.635c0.857-0.832,1.458-1.852,1.982-2.919
|
||||||
|
C147.088,94.934,146.887,93.87,145.415,93.232z"/>
|
||||||
|
<path fill="#33B6EA" d="M135.176,83.364c-1.252-1.275-1.979,0.143-2.852,0.625c-0.475,0.263-0.822,0.848-1.461,0.532
|
||||||
|
c-0.613-0.305-0.459-0.938-0.557-1.481c-0.291-1.616,0.609-3.013,0.789-4.536c0.045-0.864-0.208-1.648-0.796-2.237
|
||||||
|
c-0.736-0.735-1.932-1.169-2.682-0.755c-0.937,0.52,0.273,1.219,0.485,1.85c0.246,0.734,0.572,1.503-0.053,2.094
|
||||||
|
c-0.812,0.767-1.315-0.101-1.855-0.562c-0.378-0.323-0.761-0.793-1.288-0.429c-0.47,0.324-0.335,0.927-0.254,1.394
|
||||||
|
c0.222,1.281,1.568,1.737,2.137,2.736c1.48,2.606,3.672,3.894,6.633,4.132c1.091,0.086,2.387,0.797,3.052-0.371
|
||||||
|
C137.194,85.094,135.996,84.2,135.176,83.364z"/>
|
||||||
|
<path fill="#33B6EA" d="M149.353,126.215c-1.273-0.751-1.826,0.549-2.627,1.147c-1.37,1.023-1.145,2.256-0.409,3.445
|
||||||
|
c0.687,1.111,1.582,1.833,3.092,1.142c0.937-0.427,2.023-0.547,3.052-0.749c0.637-0.125,1.021-0.411,1.059-1.093
|
||||||
|
C153.079,127.81,151.014,127.196,149.353,126.215z"/>
|
||||||
|
<path fill="#33B6EA" d="M153.201,94.265c-0.024,1.688,1.389,2.757,3.699,2.796c2.291,0.039,3.372-0.68,3.388-2.247
|
||||||
|
c0.022-2.104-1.114-3.339-3.086-3.358C155.042,91.435,153.223,92.712,153.201,94.265z"/>
|
||||||
|
<path fill="#33B6EA" d="M141.812,71.47c1.313,0.771,2.33,0.174,2.345-1.456c-0.008-0.115,0.025-0.32-0.042-0.485
|
||||||
|
c-0.52-1.267-1.048-2.53-1.599-3.784c-0.355-0.808-0.735-1.72-1.813-1.609c-1.206,0.121-1.566,1.138-1.743,2.146
|
||||||
|
C138.607,68.295,139.699,70.228,141.812,71.47z"/>
|
||||||
|
<path fill="#33B6EA" d="M130.177,74.204c0.368,0.293,0.66,0.837,1.25,0.428c0.428-0.296,0.702-0.699,0.633-1.591
|
||||||
|
c-0.327-0.875-0.917-1.95-1.903-2.751c-0.355-0.287-0.823-0.265-1.229-0.017c-0.428,0.261-0.518,0.686-0.44,1.138
|
||||||
|
C128.682,72.56,129.272,73.479,130.177,74.204z"/>
|
||||||
|
<path fill="#33B6EA" d="M158.885,130.881c-0.849,0.049-1.496,0.471-1.478,1.352c0.017,0.819,0.745,0.871,1.399,0.866
|
||||||
|
c0.753-0.001,1.409-0.175,1.436-1.086C160.27,131.102,159.672,130.837,158.885,130.881z"/>
|
||||||
|
<path fill="#33B6EA" d="M460.431,248.217c-0.59-0.375-1.238-0.112-1.533,0.28c-1.113,1.483-2.855,2.118-4.186,3.284
|
||||||
|
c-1.611,1.414-2.814,1.516-4.387,0.047c-1.566-1.461-3.104-2.824-5.443-2.912c-0.816-0.028-1.643-0.567-2.404-0.98
|
||||||
|
c-2.719-1.469-3.031-1.512-5.166,0.646c-1.092,1.106-1.838,0.827-2.502-0.267c-0.498-0.814-1.115-1.494-1.793-2.144
|
||||||
|
c-0.561-0.539-1.23-0.627-1.902-0.332c-0.783,0.346-1.156,1.08-0.928,1.853c0.479,1.614,1.094,3.316,2.881,3.841
|
||||||
|
c3.412,1.005,6.57,2.078,8.695,5.386c1.307,2.029,2.697,1.953,4.662,0.604c1.531-1.049,2.828-0.75,4.041,0.395
|
||||||
|
c0.961,0.908,2.025,1.652,3.127,2.359c1.16,0.744,2.07,0.17,2.789-0.66c0.799-0.922-0.143-1.457-0.686-1.992
|
||||||
|
c-0.486-0.475-1.072-0.848-1.598-1.289c-0.328-0.276-0.727-0.576-0.582-1.08c0.143-0.487,0.59-0.582,1.047-0.631
|
||||||
|
c1.453-0.158,2.77-0.758,3.994-1.487c1.316-0.783,2.361-1.859,2.34-3.573C460.886,249.06,460.929,248.535,460.431,248.217z"/>
|
||||||
|
<path fill="#33B6EA" d="M412.113,236.797c-1.705-1.199-2.561-1.15-3.811,0.388c-0.393,0.479-0.668,1.053-1.057,1.536
|
||||||
|
c-1.645,2.027-3.311,4.085-5.605,5.364c-1.135,0.636-1.842,1.204-1.602,2.467c-0.063,0.972-0.084,1.903,0.832,2.388
|
||||||
|
c1.373,0.728,2.742,1.556,4.215,1.968c1.029,0.289,2.441,0.711,3.252-0.565c1.064-1.678,1.961-3.462,3.223-5.016
|
||||||
|
c0.301-0.366,0.355-0.84,0.18-1.243c-0.676-1.523-0.146-2.856,0.746-4.013C413.492,238.77,413.503,237.775,412.113,236.797z"/>
|
||||||
|
<path fill="#33B6EA" d="M431.595,198.366c0.166-1.884,2.295-3.179,3.91-2.288c0.969,0.533,1.623,0.4,2.303-0.343
|
||||||
|
c0.338-0.372,0.748-0.621,1.232-0.805c3.996-1.514,5.275-4.807,5.678-8.823c-0.063-0.361-0.125-0.855-0.238-1.336
|
||||||
|
c-0.168-0.695-0.09-1.668-1.143-1.645c-0.922,0.021-1.92,0.183-2.354,1.198c-0.289,0.682-0.475,1.414-0.666,2.134
|
||||||
|
c-0.93,3.454-3.432,5.878-6.875,5.855c-2.393-0.018-3.676,1.22-4.924,2.781c-1.426,1.778-1.188,3.73,0.459,5.318
|
||||||
|
c0.789,0.762,1.385,0.578,2.051-0.135C431.554,199.716,431.533,199.054,431.595,198.366z"/>
|
||||||
|
<path fill="#33B6EA" d="M422.068,232.705c-2.004,0.14-2.932-0.748-3.451-2.467c-0.088-0.287-0.32-0.532-0.504-0.782
|
||||||
|
c-0.998-1.354-0.848-1.776,0.867-2.164c0.566-0.126,1.182-0.146,1.24-0.871c0.063-0.73-0.541-0.885-1.096-1.044
|
||||||
|
c-1.396-0.398-1.754-1.257-1.143-2.565c0.184-0.393,0.314-0.816,0.42-1.238c0.291-1.192-0.15-2.116-1.199-2.671
|
||||||
|
c-1.002-0.533-1.762-0.007-2.455,0.738c-2.283,2.454-1.92,7.347,0.803,9.614c0.611,0.51,0.73,0.986,0.936,1.743
|
||||||
|
c0.412,1.534,1.66,2.858,0.662,4.604c-0.041,0.077,0.152,0.333,0.285,0.457c0.975,0.922,2.119,1.508,3.332,1.716
|
||||||
|
c1.359,0.026,3.596-1.841,3.557-3.008C424.279,233.394,423.115,232.635,422.068,232.705z"/>
|
||||||
|
<path fill="#33B6EA" d="M412.986,230.351c-0.922,0.021-2.322,1.49-2.246,2.375c0.063,0.72,0.57,0.872,1.391,0.877
|
||||||
|
c1.004-0.194,1.836-0.9,2.094-2.061C414.412,230.702,413.8,230.334,412.986,230.351z"/>
|
||||||
|
<path fill="#33B6EA" d="M425.611,245.563c1.049-0.026,1.586-0.787,1.842-1.833c-0.225-0.822-0.672-1.415-1.645-1.368
|
||||||
|
c-1.01,0.049-1.604,0.609-1.625,1.632C424.164,244.933,424.671,245.587,425.611,245.563z"/>
|
||||||
|
<path fill="#33B6EA" d="M462.447,256.295c-1.039-0.045-1.156,0.711-1.137,1.502c0.021,0.724-0.078,1.658,1.014,1.572
|
||||||
|
c0.859-0.063,1.15-0.801,1.137-1.619C463.466,257.023,463.353,256.334,462.447,256.295z"/>
|
||||||
|
<path fill="#33B6EA" d="M462.496,252.148c-0.873-0.088-1.395,0.477-1.479,1.309c-0.092,0.877,0.502,1.166,1.465,1.193
|
||||||
|
c0.531,0,1.242-0.068,1.295-0.988C463.826,252.803,463.326,252.229,462.496,252.148z"/>
|
||||||
|
<path fill="#33B6EA" d="M444.171,233.102c0.029,0.882,0.676,1.254,1.414,1.277c0.832-0.024,1.33-0.312,1.309-1.103
|
||||||
|
c-0.025-0.961-0.773-1.254-1.521-1.317C444.675,231.901,444.152,232.416,444.171,233.102z"/>
|
||||||
|
<path fill="#33B6EA" d="M427.648,249.127c-1.051-0.313-1.939,0.034-2.707,0.75c-0.318,0.298-0.65,0.677-0.391,1.125
|
||||||
|
c0.375,0.642,0.975,0.372,1.475,0.175c0.799-0.313,1.918-0.069,2.268-1.163C428.248,249.538,428.027,249.242,427.648,249.127z"/>
|
||||||
|
<path fill="#33B6EA" d="M421.107,230.936c0.881-0.002,1.307-0.541,1.424-1.314c-0.045-0.834-0.502-1.12-1.221-1.12
|
||||||
|
c-0.822-0.003-1.26,0.387-1.262,1.222C420.044,230.434,420.333,230.938,421.107,230.936z"/>
|
||||||
|
<path fill="#33B6EA" d="M422.009,247.63c-0.934,0.01-1.383,0.615-1.387,1.408c-0.006,0.754,0.711,0.696,1.266,0.724
|
||||||
|
c0.75-0.02,1.385-0.207,1.375-1.121C423.257,247.83,422.71,247.622,422.009,247.63z"/>
|
||||||
|
<path fill="#33B6EA" d="M469.253,252.525c-0.646,0.027-1.086,0.299-1.098,1c-0.018,0.799,0.477,1.088,1.203,1.094
|
||||||
|
c0.738,0.004,1.184-0.317,1.199-1.09C470.49,252.701,469.96,252.498,469.253,252.525z"/>
|
||||||
|
<path fill="#33B6EA" d="M315.509,76.046c0.484,0.088,0.998,0.071,1.494,0.041c0.822-0.05,1.402,0.261,1.916,0.916
|
||||||
|
c1.646,2.095,3.092,1.881,4.469-0.422c0.668-1.117,1.658-2.063,3.182-1.97c0.58,0.036,0.764,0.437,0.686,0.906
|
||||||
|
c-0.232,1.435-1.215,2.387-2.498,2.692c-1.053,0.251-1.49,0.629-1.158,1.594c0.322,0.933,1.145,1.559,2.051,0.995
|
||||||
|
c1.959-1.215,4.146-1.18,6.217-1.688c2.654-0.653,6.43-0.664,7.465-4.601c0.264-0.996,2.168-1.847,1.109-2.928
|
||||||
|
c-1.311-1.332-2.064,0.56-2.971,1.229c-0.463,0.341-0.871,0.809-1.467,0.361c-0.539-0.402-0.475-0.979-0.246-1.529
|
||||||
|
c0.262-0.63,0.672-1.211,0.58-1.929c0.076-1.14-0.5-1.81-1.559-1.506c-1.854,0.531-3.922,0.556-5.281,2.372
|
||||||
|
c-1.121,1.493-2.615,1.831-4.248,0.59c-1.076-0.82-2.02-1.247-2.664,0.582c-0.311,0.878-1.365,1.517-1.893,0.203
|
||||||
|
c-0.525-1.316-1.412-1.169-2.4-1.18c-1.613-0.015-2.535,1.23-3.674,2.045c-0.5,0.356-1.371,0.796-1.025,1.586
|
||||||
|
C313.933,75.183,314.574,75.875,315.509,76.046z"/>
|
||||||
|
<path fill="#33B6EA" d="M341.888,70.054c1.117-0.098,1.77-0.781,1.938-1.866c0.092-0.576-0.004-1.212-0.801-1.123
|
||||||
|
c-1.17,0.129-1.658,1.104-2.23,1.888C340.89,69.702,341.236,70.11,341.888,70.054z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_6">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<defs>
|
||||||
|
<path id="SVGID_1_" d="M121.25,51.267c0,0,5.583,58,4.625,85.229c-0.397,11.281-4.188,42.375-21.813,42.375
|
||||||
|
c-18.979,0-21.146-22.813-44.438-22.813c-13.875,0-37.625,9.042-37.625,48.75c0,30.375,19.25,45.375,34.625,45.375
|
||||||
|
c22.875,0,19.625-18,43.875-18c23.917,0,24.875,22.375,24.875,34.75s-3.042,47-8.875,82c4.417,0.667,11.51,1.468,23.25,5.125
|
||||||
|
c15.917,4.959,28.125,8.875,53.625,8.875S233,353.309,233,342.309c0-17.041-15.625-14.25-15.625-34.75s20.625-30,41.25-30
|
||||||
|
c20.625,0,41.459,9.959,41.459,34.875c0,22.5-13.084,17.125-13.084,35.75s22.375,18.125,28,18.125s61.5-1.832,87-7.041
|
||||||
|
c-1-13.25-4.582-66.542-4.582-82.917c0-21.667,10.082-23.792,15.457-23.792c16.125,0,16.875,12.292,39.625,12.292
|
||||||
|
c20.584,0,40.625-19.75,40.625-49.792c0-27.125-19-38.75-34.625-38.75s-20.875,13.5-47.75,13.5
|
||||||
|
c-9.498,0-15.832-3.792-15.832-22.292c0-37.275,4.166-74.417,4.332-109.583c-18.666-2.75-66.625-10-93.125-10
|
||||||
|
c-24.207,0-25.957,10.125-25.957,16.75c0,17.083,23.5,22.167,23.5,38.5c0,29.917-23.793,37.75-43.293,37.75
|
||||||
|
c-17.042,0-42.458-15.583-42.458-40.083c0-12.042,3.374-15.688,6.844-19.159c5.189-5.189,11.177-8.299,11.177-16.508
|
||||||
|
c0-14.25-14.396-16.667-31.271-16.667S121.25,51.267,121.25,51.267z"/>
|
||||||
|
</defs>
|
||||||
|
<clipPath id="SVGID_2_">
|
||||||
|
<use xlink:href="#SVGID_1_" overflow="visible"/>
|
||||||
|
</clipPath>
|
||||||
|
<g clip-path="url(#SVGID_2_)">
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="149.084" y1="733.7126" x2="149.084" y2="231.4646" gradientTransform="matrix(1 0 0 -1 0.04 514.7319)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.9"/>
|
||||||
|
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.05"/>
|
||||||
|
</linearGradient>
|
||||||
|
<circle fill="url(#SVGID_3_)" cx="149.124" cy="32.143" r="251.124"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 48 KiB |
460
docs/logo/puzzle.svg
Normal file
@@ -0,0 +1,460 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --><!DOCTYPE svg PUBLIC
|
||||||
|
"-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="515.667px" height="515.668px" viewBox="0 0 515.667 515.668" enable-background="new 0 0 515.667 515.668"
|
||||||
|
xml:space="preserve">
|
||||||
|
<g id="Ebene_10">
|
||||||
|
<g>
|
||||||
|
<path fill="#707072" d="M108.925,89.292c0,0,6.092,63.286,5.047,92.998c-0.434,12.308-4.57,46.237-23.802,46.237
|
||||||
|
c-20.709,0-23.073-24.892-48.489-24.892c-15.139,0-41.055,9.865-41.055,53.192c0,33.143,21.005,49.511,37.781,49.511
|
||||||
|
c24.96,0,21.414-19.64,47.875-19.64c26.097,0,27.142,24.412,27.142,37.917c0,13.504-3.319,51.283-9.684,89.475
|
||||||
|
c4.819,0.727,12.558,1.601,25.368,5.593c17.369,5.409,30.689,9.682,58.513,9.682s43.238-10.5,43.238-22.503
|
||||||
|
c0-18.594-17.049-15.549-17.049-37.918s22.505-32.735,45.009-32.735c22.506,0,45.238,10.866,45.238,38.056
|
||||||
|
c0,24.55-14.277,18.685-14.277,39.008c0,20.322,24.413,19.777,30.552,19.777c6.138,0,67.106-1.999,94.93-7.683
|
||||||
|
c-1.09-14.458-4.998-72.608-4.998-90.475c0-23.643,11.001-25.961,16.865-25.961c17.595,0,18.414,13.413,43.237,13.413
|
||||||
|
c22.46,0,44.325-21.551,44.325-54.33c0-29.599-20.73-42.283-37.779-42.283s-22.776,14.73-52.103,14.73
|
||||||
|
c-10.363,0-17.275-4.137-17.275-24.324c0-40.672,4.546-81.199,4.727-119.571c-20.365-3.001-72.697-10.913-101.611-10.913
|
||||||
|
c-26.414,0-28.323,11.049-28.323,18.278c0,18.64,25.643,24.187,25.643,42.009c0,32.644-25.962,41.191-47.239,41.191
|
||||||
|
c-18.596,0-46.328-17.004-46.328-43.737c0-13.139,3.681-17.117,7.467-20.905c5.662-5.663,12.196-9.056,12.196-18.013
|
||||||
|
c0-15.549-15.709-18.187-34.122-18.187S108.925,89.292,108.925,89.292z"/>
|
||||||
|
<g opacity="0.2">
|
||||||
|
<path fill="#FFFFFF" d="M310.651,85.654c28.914,0,81.246,7.911,101.611,10.913c-0.181,38.373-4.727,78.9-4.727,119.571
|
||||||
|
c0,20.187,6.912,24.324,17.275,24.324c29.326,0,35.054-14.73,52.103-14.73s37.779,12.684,37.779,42.283
|
||||||
|
c0,32.779-21.865,54.33-44.325,54.33c-24.823,0-25.643-13.413-43.237-13.413c-5.864,0-16.865,2.318-16.865,25.961
|
||||||
|
c0,17.866,3.908,76.017,4.998,90.475c-27.823,5.684-88.792,7.683-94.93,7.683c-0.312,0-0.67,0-1.073,0
|
||||||
|
c-7.485,0-29.479-0.49-29.479-19.777c0-20.323,14.277-14.458,14.277-39.008c0-27.189-22.732-38.056-45.238-38.056
|
||||||
|
c-22.504,0-45.009,10.366-45.009,32.735s17.049,19.324,17.049,37.918c0,12.003-15.413,22.505-43.237,22.505
|
||||||
|
c-27.824,0-41.145-4.272-58.513-9.684c-12.811-3.99-20.549-4.864-25.369-5.593c6.365-38.189,9.684-75.971,9.684-89.473
|
||||||
|
c0-13.505-1.045-37.919-27.142-37.919c-26.461,0-22.915,19.642-47.875,19.642c-16.776,0-37.781-16.368-37.781-49.512
|
||||||
|
c0-43.327,25.916-53.192,41.054-53.192c25.416,0,27.779,24.892,48.489,24.892c19.231,0,23.368-33.929,23.802-46.237
|
||||||
|
c1.044-29.712-5.047-92.998-5.047-92.998s72.607-3.001,91.021-3.001s34.122,2.638,34.122,18.187
|
||||||
|
c0,8.956-6.534,12.349-12.196,18.013c-3.787,3.787-7.468,7.766-7.468,20.905c0,26.733,27.733,43.737,46.329,43.737
|
||||||
|
c21.277,0,47.237-8.547,47.237-41.191c0-17.822-25.643-23.369-25.643-42.009C282.328,96.702,284.237,85.654,310.651,85.654
|
||||||
|
M310.651,85.109c-25.589,0-28.87,10.059-28.87,18.823c0,9.662,6.717,15.89,13.21,21.913
|
||||||
|
c6.394,5.925,12.433,11.524,12.433,20.096c0,36.685-32.652,40.646-46.692,40.646c-9.562,0-20.978-4.493-29.792-11.722
|
||||||
|
c-10.312-8.457-15.991-19.633-15.991-31.471c0-13.211,3.715-16.928,7.307-20.521c1.183-1.184,2.419-2.277,3.611-3.335
|
||||||
|
c4.498-3.987,8.745-7.752,8.745-15.063c0-16.506-17.524-18.732-34.667-18.732c-18.213,0-90.316,2.971-91.043,3.001l-0.576,0.023
|
||||||
|
l0.056,0.572c0.06,0.632,6.076,63.589,5.044,92.926c-0.598,16.979-6.169,45.712-23.256,45.712
|
||||||
|
c-9.601,0-15.199-5.507-21.125-11.336c-6.774-6.663-13.783-13.555-27.363-13.555c-4.639,0-16.517,1.023-26.578,10.498
|
||||||
|
c-9.967,9.385-15.021,23.934-15.021,43.241c0,19.236,6.926,31.037,12.738,37.549c6.99,7.83,16.556,12.506,25.588,12.506
|
||||||
|
c12.505,0,18.092-4.951,23.494-9.741c5.488-4.869,11.163-9.897,24.381-9.897c26.597,0,26.597,26.188,26.597,37.372
|
||||||
|
c0,12.634-3.075,49.777-9.676,89.385l-0.091,0.546l0.547,0.082c0.505,0.075,1.041,0.154,1.61,0.236
|
||||||
|
c4.878,0.707,12.248,1.776,23.68,5.34l0.716,0.222c17.003,5.299,30.436,9.486,57.958,9.486c13.214,0,24.391-2.361,32.32-6.824
|
||||||
|
c7.392-4.159,11.462-9.925,11.462-16.229c0-9.092-3.93-13.09-8.091-17.323c-4.404-4.48-8.958-9.118-8.958-20.593
|
||||||
|
c0-22.236,22.333-32.189,44.465-32.189c20.616,0,44.692,9.822,44.692,37.508c0,12.65-3.82,17.057-7.511,21.316
|
||||||
|
c-3.479,4.016-6.766,7.807-6.766,17.691c0,8.489,4.131,14.422,12.275,17.629c6.134,2.417,13.065,2.695,17.746,2.695h0.608
|
||||||
|
l0.467-0.002c4.858,0,66.407-1.844,95.039-7.694l0.476-0.095l-0.036-0.481c-1.018-13.479-5.001-72.552-5.001-90.432
|
||||||
|
c0-16.863,5.493-25.415,16.323-25.415c7.888,0,12.421,2.798,17.221,5.764c5.805,3.582,12.383,7.649,26.017,7.649
|
||||||
|
c11.35,0,22.647-5.488,30.997-15.061c8.946-10.256,13.876-24.397,13.876-39.816c0-13.566-4.38-24.852-12.671-32.638
|
||||||
|
c-6.891-6.476-16.243-10.189-25.655-10.189c-7.512,0-12.767,2.755-18.853,5.948c-7.85,4.114-16.745,8.783-33.25,8.783
|
||||||
|
c-10.042,0-16.731-4.043-16.731-23.778c0-21.048,1.23-42.255,2.421-62.763c1.143-19.693,2.22-38.293,2.309-56.807l0.002-0.475
|
||||||
|
l-0.47-0.069l-2.648-0.386C388.373,92.485,338.428,85.109,310.651,85.109L310.651,85.109z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_5">
|
||||||
|
<g>
|
||||||
|
<path fill="#33B6EA" d="M407.896,309.423c0.292-2.983-1.491-5.002-3.092-7.095c-0.7-0.912-0.66-1.583,0.177-2.261
|
||||||
|
c0.961-0.774,0.921-1.646,0.526-2.733c-0.78-2.159-2.248-3.857-3.484-5.725c-1.466-2.203-4.461-4.076-2.152-7.429
|
||||||
|
c0.388-0.568-0.051-1.715,0.979-1.8c0.986-0.082,1.221,0.965,1.643,1.614c0.897,1.399,1.938,2.258,3.723,1.58
|
||||||
|
c0.49-0.183,1.077-0.112,1.624-0.132c2.425-0.094,4.182-1.515,4.998-4.054c0.849-2.653,0.264-4.913-1.79-6.354
|
||||||
|
c-0.905-0.639-1.721-1.346-2.408-2.191c-0.569-0.707-0.616-1.549,0.03-2.238c0.832-0.884,1.717-1.967,3.022-1.818
|
||||||
|
c1.164,0.13,0.653,1.306,0.691,2.042c0.058,1.075,0.11,2.279,1.445,2.256c1.176-0.021,1.287-1.218,1.376-2.18
|
||||||
|
c0.068-0.726-0.206-1.726,0.646-1.996c1.747-0.555,3.291-1.586,5.151-1.888c3.894-0.63,6.798-2.64,8.199-6.463
|
||||||
|
c0.56-1.528,1.059-3.01,2.181-4.312c0.981-1.131,1.195-2.616,0.676-4.23c-0.746-2.309-2.063-4.291-3.246-6.348
|
||||||
|
c-0.734-1.273-0.449-1.956,0.761-2.614c0.973-0.526,2.35-0.481,2.798-1.826c0.038-0.207,0.079-0.412,0.12-0.619l-0.078-0.511
|
||||||
|
c-2.35,0.232-4.872,0.36-7.601,0.36c-10.363,0-17.275-4.137-17.275-24.324c0-33.515,3.084-66.929,4.271-99.125
|
||||||
|
c-0.501,0.07-0.954,0.132-1.053,0.141c-0.515-0.32-1.025-0.642-1.538-0.965c0,0,0-0.001,0-0.002
|
||||||
|
c0.063-0.533-0.031-1.153,0.212-1.585c1.029-1.849,1.129-3.661,0.058-5.508c-2.433-0.673-3.734,0.91-5.115,2.477
|
||||||
|
c-1.617,1.839-3.029,3.825-4.294,5.902c-1.633,2.681-4.156,2.578-6.695,2.285c-1.834-0.21-3.474-0.293-4.844,1.29
|
||||||
|
c-0.498,0.574-1.275,0.986-2.105,1.187c-1.955,0.464-3.128,1.841-3.925,3.579c-1.851,4.039-4.382,7.434-8.638,9.208
|
||||||
|
c-1.244,0.519-1.709,1.429-1.613,2.752c0.076,1.02,0.019,2.046,0.015,3.069c-0.004,0.768-0.408,1.311-1.072,1.602
|
||||||
|
c-0.695,0.303-1.191-0.175-1.574-0.652c-0.895-1.108-1.683-2.295-2.611-3.369c-1.032-1.195-2.267-1.536-3.53-0.317
|
||||||
|
c-0.666,0.64-1.283,0.676-2.197,0.54c-1.603-0.242-3.259-0.146-4.895-0.152c-1.06-0.003-1.494,0.796-1.923,1.598
|
||||||
|
c-1.182,2.21-2.061,4.563-3.571,6.63c-0.888,1.22-0.246,2.924-0.307,4.406c-0.092,2.175-0.371,2.38-2.431,1.545
|
||||||
|
c-0.377-0.153-0.778-0.254-1.154-0.411c-0.954-0.396-1.82-0.784-0.823-2.046c0.478-0.604,0.3-1.389-0.343-1.814
|
||||||
|
c-3.039-2.018-1.981-4.979-1.569-7.594c0.474-2.938,2.129-5.418,4.249-7.542c0.335-0.337,0.684-0.673,0.966-1.055
|
||||||
|
c0.736-0.985,0.844-2.044,0.015-3.001c-0.854-0.992-1.883-0.604-2.774-0.045c-3.603,2.27-5.945,5.479-7.208,9.56
|
||||||
|
c-0.986,3.201-0.821,6.458-0.805,9.72c0.006,1.499,1.193,2.018,2.279,2.6c0.934,0.505,2.179,0.772,2.161,2.155
|
||||||
|
c-0.018,1.367-1.249,1.639-2.184,2.15c-0.417,0.227-0.889,0.419-1.213,0.745c-1.721,1.735-3.57,1.524-5.358,0.264
|
||||||
|
c-1.174-0.823-2.053-0.821-3.019,0.246c-0.397,0.438-0.969,0.76-1.514,1.016c-2.108,0.979-4.151,2.029-5.599,3.939
|
||||||
|
c-0.2,0.266-0.435,0.629-0.816,0.445c-0.497-0.24-0.256-0.667-0.146-1.055c0.783-2.672-1.411-5.19-4.214-4.855
|
||||||
|
c-1.387,0.167-2.309,1.604-2.002,3.244c0.249,1.33,0.542,2.659,0.899,3.962c0.208,0.742,0.29,1.414-0.553,1.687
|
||||||
|
c-0.863,0.279-1.241-0.405-1.461-1.068c-0.248-0.77-0.364-1.581-0.582-2.363c-0.18-0.649-6.567-6.502-7.252-6.693
|
||||||
|
c-0.065-0.018-0.132-0.012-0.204-0.017c-0.027,0.083-0.296,0.043-0.685-0.061c-2.444,14.433-10.949,22.904-21.363,27.53
|
||||||
|
c-0.147,0.229-0.294,0.421-0.463,0.517c-0.633,1.343-0.407,2.478,0.835,3.354c0.658,0.468,1.292,0.979,1.989,1.382
|
||||||
|
c0.685,0.395,1.06,0.93,0.776,1.658c-0.489,1.252-0.285,2.533-0.309,3.806c-0.019,1.23-0.133,2.277-1.83,1.615
|
||||||
|
c-0.682-0.262-1.173,0.07-1.479,0.699c-0.521,0.431-0.755,1.008-0.833,1.66c-0.441,0.301-0.391,0.762-0.387,1.206
|
||||||
|
c-0.317,1.203-0.594,2.43-1.658,3.25c-0.688,0.229-1.437,0.315-2.003,0.837c-0.689,0.018-1.381,0.031-2.07,0.047
|
||||||
|
c-0.82,0.052-1.704-0.316-2.433,0.359c-0.281,0.02-0.564,0.038-0.843,0.058c-1.492-0.1-3.014,0.116-4.47-0.41
|
||||||
|
c-0.407-0.29-0.818-0.577-1.227-0.866c0.006-1.147,0.051-2.293,0.008-3.435c-0.036-0.959,0.373-2.078-0.807-2.709l-0.008-0.013
|
||||||
|
c-0.57-0.973-1.142-0.909-1.711,0c-0.135,0.136-0.27,0.271-0.401,0.406c-0.599,0.936-2.547,1.445-1.712,2.757
|
||||||
|
c1.48,2.322,1.834,4.272-0.375,6.229c-0.807,0.054-1.61,0.111-2.41,0.162c-0.112,0.096-0.224,0.193-0.334,0.289
|
||||||
|
c-1.23,0.766-1.778,2.045-2.246,3.297c-0.36,0.96-1.028,1.641-1.751,2.175c-0.635,0.472-1.782,0.628-1.681-0.718
|
||||||
|
c0.239-3.071-1.484-5.418-3.036-7.646c-1.152-1.659-1.721-3.558-2.208-5.264c-0.508-1.777-1.355-3.357-1.99-5.031
|
||||||
|
c-0.54-1.425-2.4-1.527-2.797-0.163c-0.615,2.117-2.624,4.223-0.609,6.632c0.356,0.424,0.515,1.039,0.128,1.521
|
||||||
|
c-0.406,0.506-0.982,0.282-1.509,0.113c-1.531-0.491-2.803-0.064-3.877,1.093c-0.703,0.757-1.5,1.356-2.531,1.639
|
||||||
|
c-0.831,0.229-1.223,0.98-0.582,1.523c1.411,1.197,1.338,2.691,1.347,4.269c0.008,1.5,0.956,2.038,2.331,1.8
|
||||||
|
c1.294-0.223,2.411-0.882,3.482-1.624c0.479-0.332,0.964-1.001,1.604-0.547c0.646,0.46,0.409,1.26,0.248,1.89
|
||||||
|
c-0.129,0.508-0.433,1.01-0.775,1.416c-0.558,0.656-1.146,1.323-0.5,2.146c0.602,0.767,1.467,0.466,2.263,0.229
|
||||||
|
c1.82-0.542,3.566-1.334,5.48-1.561c0.506-0.059,1-0.189,1.214,0.367c0.272,0.705-0.319,1.001-0.815,1.171
|
||||||
|
c-1.285,0.439-2.603,0.767-3.884,1.204c-0.91,0.309-1.809,0.716-2.026,1.809c-0.241,1.215,0.54,1.923,1.413,2.487
|
||||||
|
c1.265,0.818,2.229,1.79,2.275,3.398c0.109,0.682,0.219,1.365,0.33,2.047c0.093,0.731-0.082,1.341-0.78,1.712
|
||||||
|
c-1.853,0.694-3.73,0.459-5.588,0.088c-3.874-0.773-6.338,1.533-5.242,5.239c0.275,0.927,0.494,2.054,0.049,2.803
|
||||||
|
c-1.415,2.396-0.244,4.29,0.822,6.289c0.642,1.204,1.496,1.578,2.849,1.312c1.725-0.339,3.482-0.571,5.237-0.668
|
||||||
|
c1.955-0.11,3.695-0.763,4.131-2.696c0.978-4.362,5.456-5.59,7.571-8.888c0.137-0.21,0.623-0.306,0.934-0.281
|
||||||
|
c1.546,0.127,2.965-0.188,4.301-0.982c0.376-0.224,1.254-0.398,1.091,0.189c-0.432,1.53,1.386,3.451-0.809,4.656
|
||||||
|
c-0.248,0.134-0.359,0.571-0.461,0.892c-0.25,0.753-0.216,1.467,0.388,2.082c0.672,0.686,1.511,0.639,2.292,0.413
|
||||||
|
c0.763-0.226,1.172-0.85,1.216-1.705c0.051-0.989-0.104-1.898-0.723-2.697c-0.297-0.384-0.632-0.784-0.168-1.247
|
||||||
|
c0.493-0.498,1.203-0.652,1.66-0.189c1.915,1.926,4.688,2.796,6.242,5.148c0.138,1.721-1.023,1.717-2.22,1.686
|
||||||
|
c-0.639-0.018-1.213,0.13-1.383,0.854c-0.14,0.592-0.007,1.061,0.705,1.149c0.41,0.41,0.817,0.816,1.225,1.226
|
||||||
|
c0.293,1.096,0.838,0.699,1.493,0.316c1.613-0.942,2.538-2.551,3.816-3.817c1.014-1.003,1.986-1.477,2.618,0.402
|
||||||
|
c0.166,0.489,0.408,1.029,1.094,1.029c0.012,0.368,0.113,0.675,0.502,0.81c0.133,1.179,0.842,1.803,1.952,2.049
|
||||||
|
c0.591,0.066,1.212,0.256,1.62-0.406c0.943-0.135,1.503-0.642,1.566-1.63c0.054-0.118,0.081-0.246,0.088-0.377
|
||||||
|
c1.227-0.282,0.592-1.338,0.844-2.022c0.254-0.678,0.363-1.694,1.321-1.531c0.903,0.151,0.512,1.003,0.524,1.681
|
||||||
|
c0.071,3.721,3.276,6.662,5.917,6.221c0.538,0,1.074-0.001,1.613-0.001c1.292,0.036,2.581,0.078,3.87,0.106
|
||||||
|
c1.026,0.023,1.688,0.515,1.889,1.517c0.398,2.036-2.479,5.559-4.571,5.512c-3.058-0.07-6.191,1.788-9.177-0.367
|
||||||
|
c-0.225-0.165-0.667-0.055-1.006-0.029c-1.408,0.103-2.738-0.223-3.908-0.951c-1.889-1.174-3.222-0.246-4.452,1.059
|
||||||
|
c-0.455,0.485-0.745,1.132-1.111,1.704c-0.755,1.185-1.559,1.336-2.628,0.293c-0.808-0.79-1.388-1.891-2.623-2.178
|
||||||
|
c0.034-0.63-0.545-0.816-0.861-1.194c-0.065-0.531-0.186-0.943-0.777-0.373c-0.273-0.017-0.546-0.032-0.82-0.048
|
||||||
|
c-0.072-0.484-0.273-0.806-0.843-0.639c-0.408-0.057-0.815-0.113-1.228-0.171c-0.075-0.774-0.632-0.812-1.223-0.802
|
||||||
|
c-0.182-0.277-0.366-0.555-0.549-0.833c0.136-0.979,0.092-1.97,0.412-2.942c0.191-0.575,0.34-1.386-0.697-1.517
|
||||||
|
c-0.23-0.613-0.649-1.031-1.259-1.258c-0.088-0.92-0.82-0.89-1.38-0.772c-2.967,0.625-6.003,0.06-8.936,0.522
|
||||||
|
c-1.461,0.229-3.359-0.281-4.387,1.45c-0.522,0.136-1.121,0.154-1.56,0.429c-2.368,1.488-4.863,1.888-7.584,1.212
|
||||||
|
c-0.8-0.2-1.84-0.054-2.149,0.796c-0.974,2.679-3.813,4.354-3.95,7.478c-0.014,0.331-0.424,0.687-0.714,0.961
|
||||||
|
c-1.786,1.68-3.409,3.518-5.324,5.078c-1.387,1.126-3.06,2.243-3.153,4.318c-0.048,1.069-0.468,1.847-1.263,2.432
|
||||||
|
c-1.728,1.271-1.813,2.868-1.529,4.88c0.244,1.729,1.193,3.532,0.157,5.343c-1.621,2.835-1.67,4.582,0.464,6.843
|
||||||
|
c3.317,3.515,6.108,7.464,9.49,10.928c2.129,2.182,4.348,2.58,7.024,1.688c1.734-0.58,3.628-0.845,5.22-0.221
|
||||||
|
c1.661,0.646,2.832,0.292,4.189-0.458c2.05-1.127,4.08-1.447,6.059,0.269c1.13,0.978,2.578,1.149,4.023,1.22
|
||||||
|
c0.742,0.036,1.479,0.002,2.218,0.242c1.437,0.468,2.016,1.054,0.817,2.443c-1.391,1.612-1.895,3.514-0.912,5.5
|
||||||
|
c1.17,2.364,2.492,4.646,3.752,6.964c-0.158,1.241,0.445,2.172,1.115,3.16c1.471,2.161,2.274,4.347,0.758,7.005
|
||||||
|
c-2.419,4.226-3.129,8.629-0.462,13.121c0.432,0.729,0.664,1.647,0.567,2.564c0.066,0.113,0.101,0.564,0.139,0.994
|
||||||
|
c10.184,1.838,19.545,6.234,25.784,13.74c2.132-2.29,4.942-5.162,5.623-8.088c0.087-0.363,0.358-0.84,0.672-0.978
|
||||||
|
c2.197-0.968,2.192-2.791,2.133-4.797c-0.047-1.456-0.658-3.198,0.454-4.353c1.713-1.788,3.122-3.999,5.697-4.833
|
||||||
|
c0.987-0.319,1.569-1.237,1.567-2.218c-0.002-2.97,0.033-5.94-1.174-8.793c-0.802-1.901-2.063-3.791-1.451-6.017
|
||||||
|
c1.104-4.02,3.852-6.955,6.926-9.491c4.628-3.81,8.019-8.466,10.404-13.896c0.512-1.159,1.11-2.644,0.104-3.667
|
||||||
|
c-0.962-0.974-2.432-0.444-3.697-0.214c-2.269,0.409-4.447,1.353-6.827,1.051c-0.674-0.084-1.415,0.01-1.688-0.827
|
||||||
|
c-0.176-0.531,0.165-0.909,0.518-1.243c0.57-0.547,1.217-0.615,1.859-0.163c1.37,0.962,2.679,0.58,4.039-0.047
|
||||||
|
c2.935-1.348,5.273-3.797,8.197-4.959c3.28-1.305,6.091-2.958,8.421-5.588c0.898-1.01,1.983-1.851,2.705-3.035
|
||||||
|
c0.63-1.027,0.558-1.929-0.353-2.735c-0.939-0.835-2.086-1.709-3.271-1.41c-2.573,0.653-4.979,0.43-7.387-0.538
|
||||||
|
c-1.343-0.823-1.94-2.19-2.62-3.516c-0.871-1.704-1.793-3.364-4.042-3.575c-0.583-0.056-1.23-0.408-1.095-1.209
|
||||||
|
c0.124-0.729,0.765-0.889,1.37-1.006c1.914-0.371,3.22,0.633,4.402,1.95c1.912,2.129,4.033,3.849,7.174,3.392
|
||||||
|
c1.513,1.982,3.877,2.654,5.904,3.847c1.018,0.599,1.918,0.565,2.824-0.152c1.589-1.255,3.249-1.21,4.96-0.271
|
||||||
|
c1.192,0.654,2.365,1.351,3.577,1.966c0.91,0.464,1.348,0.982,0.982,2.099c-0.458,1.413,0.452,2.45,1.651,2.529
|
||||||
|
c2.521,0.166,2.9,1.74,3.082,3.714c0.48,5.227,2.862,9.695,5.739,13.937c1.045,1.542,2.422,1.703,3.821,0.491
|
||||||
|
c2.266-1.962,3.307-4.584,2.944-7.472c-0.201-1.602,0.305-2.357,1.417-3.219c2.739-2.124,5.835-3.985,7.758-6.877
|
||||||
|
c1.635-2.454,4.021-2.204,6.234-2.74c0.562-0.135,1.157,0.369,1.498,0.924c1.313,2.117,3.005,4.019,3.057,6.772
|
||||||
|
c0.027,1.493,0.906,2.549,2.672,2.379c2.488-0.236,3.783,1.01,3.194,3.457c-1.211,5.04-0.943,9.595,3.37,13.178
|
||||||
|
c0.153,0.122,0.247,0.328,0.33,0.513c0.237,0.502,1.247,0.887,0.627,1.479c-0.704,0.678-1.355-0.075-1.89-0.599
|
||||||
|
c-0.919-0.908-1.784-1.878-2.75-2.741c-0.838-0.753-1.936-0.981-2.783-0.207c-0.808,0.736,0.073,1.551,0.469,2.16
|
||||||
|
c0.848,1.302,2.022,2.358,2.859,3.702c1.945,3.114,4.025,6.15,6.02,9.231c0.309,0.48,0.693,0.811,1.182,1.085
|
||||||
|
c3.299,1.855,6.101,4.785,10.288,4.725c0.169-0.004,0.857,0.158,1.387,0.295c0.984-1.271,2.059-2.257,3.162-3.014
|
||||||
|
c-2.632-0.873-6.244-0.9-8.813-0.922C408.916,310.436,407.771,310.668,407.896,309.423z M248.106,203.852
|
||||||
|
c-0.105,0.961-0.319,1.971-1.522,2.079c-0.99,0.09-1.237-0.631-1.227-1.399c-0.018-1.147,0.351-1.993,1.511-2.116
|
||||||
|
C247.843,202.313,248.199,202.988,248.106,203.852z M280.506,234.099c-1.147-1.119-2.281-2.253-3.413-3.392
|
||||||
|
c-0.526-0.533-1.063-1.035-1.898-0.929c-0.269-0.272-0.539-0.546-0.81-0.82c0.384-0.639-1.387-2.143,0.821-2.05
|
||||||
|
c0.813,0.545,1.624,1.088,2.437,1.634c0.06,0.511,0.309,0.799,0.862,0.742c0.974,0.979,1.948,1.953,2.927,2.932
|
||||||
|
c-0.061,0.545,0.222,0.792,0.737,0.836c-0.011,0.136,0.016,0.269,0.073,0.391C282.121,234.861,281.538,235.104,280.506,234.099z
|
||||||
|
M310.93,169.246c0.843,0.068,1.077,0.663,1.056,1.413c-0.012,0.66-0.207,1.284-0.969,1.232c-0.824-0.053-1.307-0.637-1.338-1.472
|
||||||
|
C309.646,169.59,310.124,169.178,310.93,169.246z M302.464,230.89c-1.204,0.452-2.401,0.991-3.651,1.262
|
||||||
|
c-2.104,0.454-3.354-1.005-2.543-3.01c0.567-1.396,1.108-2.709,1.117-4.274c0.006-1.433,1.293-1.519,2.406-1.659
|
||||||
|
c1.809,0.343,3.851,0.172,4.572,2.583c0.264,0.882,1.213,1.22,2.083,1.496c1.915,0.612,3.569,1.636,4.879,3.194
|
||||||
|
c0.34,0.408,0.876,0.773,0.541,1.395c-0.276,0.519-0.889,0.441-1.288,0.306c-1.563-0.529-3.336-0.002-4.8-1.303
|
||||||
|
C304.946,230.14,303.59,230.466,302.464,230.89z M313.45,279.994c-0.237-1.545-1.684-2.25-2.433-3.455
|
||||||
|
c-1.822-2.924-2.863-6.164-4.108-9.313c-0.834-2.094-1.764-4.119-2.74-6.142c-0.292-0.61-1.148-1.352-0.236-1.954
|
||||||
|
c0.857-0.568,1.267,0.488,1.779,0.938c1.252,1.094,2.091,2.492,2.812,3.972c2.295,4.684,4.576,9.365,6.864,14.049
|
||||||
|
C315.312,279.308,315.772,281.071,313.45,279.994z M325.997,238.184c-0.138-0.935-0.046-1.899-0.08-2.851
|
||||||
|
c-0.021-0.585,0.153-1.287-0.723-1.45c-0.023-0.7-0.046-1.4-0.068-2.101c0.704-0.631,0.004-1.127-0.238-1.563
|
||||||
|
c-1.007-1.795-1.55-3.687-1.474-5.75c0.382-0.524,0.622-1.183,1.351-1.362c1.481-0.229,2.898-1.103,4.47-0.436
|
||||||
|
c0.187,0.188,0.371,0.378,0.557,0.566c-0.2,0.94-1.07,0.938-1.732,1.181c-1.089,0.399-2.29,0.693-2.415,2.115
|
||||||
|
c-0.127,1.453,0.064,2.832,1.519,3.655c0.063,1.062,1.066,1.581,1.418,2.474c0.118,0.087,0.294,0.18,0.42,0.27
|
||||||
|
c-0.126-0.09-0.304-0.183-0.422-0.271c-0.031,1.077-0.232,2.182-0.062,3.228c0.247,1.526,0.215,3.263,1.897,4.166
|
||||||
|
c0.007,0.247,0.011,0.495,0.013,0.744C327.842,241.693,326.393,240.866,325.997,238.184z M361.558,144.455
|
||||||
|
c-0.667,0.19-0.735-0.424-0.727-0.92c0.015-0.938,0.508-1.541,1.416-1.727c0.545-0.111,0.928,0.144,0.935,0.912
|
||||||
|
C363.037,143.546,362.444,144.202,361.558,144.455z M369.867,165.421c-0.914-0.167-2.027-0.295-2.07-1.766
|
||||||
|
c-0.021-0.766,0.271-1.407,1.119-1.338c1.194,0.101,2.272,0.55,2.415,1.942C371.422,165.105,370.814,165.417,369.867,165.421z"/>
|
||||||
|
<path fill="#33B6EA" d="M78.988,229.038c-1.861,2.572-1.729,5.228-0.459,7.997c0.235,0.515,0.139,1.195,0.152,1.797
|
||||||
|
c0.013,0.579,0.095,1.083,0.759,1.251c0.025,0.244,0.053,0.487,0.08,0.731c-0.038,0.546,0.254,0.799,0.764,0.862
|
||||||
|
c-0.002,0.127,0.019,0.249,0.066,0.37c-0.049,0.545,0.244,0.795,0.749,0.867c-0.004,0.125,0.018,0.248,0.069,0.363
|
||||||
|
c-0.043,0.541,0.246,0.793,0.747,0.863c0.621,2.214,2.144,4.039,3.919,5.046c2.554,1.448,3.458,3.696,4.406,6.077
|
||||||
|
c1.888,4.75,5.445,8.431,8.078,12.703c0.493,0.794,1.374,0.933,2.183,0.534c0.973-0.476,0.467-1.276,0.241-1.958
|
||||||
|
c-0.671-2.048-1.972-3.71-3.246-5.397c-0.861-1.137-1.687-2.305-2.468-3.497c-0.283-0.427-0.721-1.108-0.117-1.447
|
||||||
|
c0.647-0.362,0.875,0.403,1.107,0.868c0.297,0.6,0.369,1.285,0.903,1.797c2.086,2.021,4.099,4.107,6.045,6.278
|
||||||
|
c1.842,2.057,3.167,4.134,3.647,6.88c0.259,1.476,0.614,3.399,2.317,3.834c3.805,0.966,7.133,3.355,11.036,3.806
|
||||||
|
c3.25,0.375,6.318,0.828,8.643,3.39c0-0.002,0.13,0.028,0.13,0.028l0.135-0.007c0.473,0.907,1.35,0.959,2.213,1.038
|
||||||
|
c1.804,0.601,3.096,1.823,4.106,3.389c0,1.259,0.042,2.493,1.611,2.866c0.138,0.321,0.406,0.434,0.732,0.455
|
||||||
|
c1.005,1.424,2.621,1.456,4.099,1.742c1.191,0.231,2.498,0.93,3.479-0.485c0.363-0.059,0.722-0.118,1.084-0.177
|
||||||
|
c0.941,0.218,1.189,0.857,1.305,1.767c0.198,1.607-0.437,3.021-0.793,4.501c-0.037,0.249-0.077,0.495-0.116,0.743
|
||||||
|
c-1.112,0.479-1.318,1.508-1.535,2.532c-0.485,1.688-1.971,2.557-3.081,3.732c-1.751,1.847-1.899,6.25-0.32,8.229
|
||||||
|
c2.128,2.673,4.232,5.427,5.147,8.75c1.123,4.061,3.106,7.155,7.354,8.399c0.501,0.147,0.932,0.562,1.368,0.883
|
||||||
|
c1.217,0.911,1.933,2.051,1.842,3.659c-0.071,1.292,0.028,2.59-0.001,3.888c-0.111,5.203,0.418,10.486-1.895,15.424
|
||||||
|
c-0.166,0.354-0.165,0.798-0.191,1.205c-0.308,4.739-0.57,9.479-2.658,13.885c-0.541,1.149-0.3,2.261,0.783,3.103
|
||||||
|
c0.505,0.394,0.939,0.938,0.49,1.576c-0.948,1.341-0.715,3.158-1.908,4.425c-0.576,0.613-0.486,1.488-0.071,2.307
|
||||||
|
c1.729,3.398,1.146,6.566-1.054,9.542c-0.614,0.827-1.236,1.705-1.237,2.752c-0.001,2.795-0.592,5.539-0.496,8.349
|
||||||
|
c0.159,4.661,2.12,6.953,6.685,7.476c1.43,0.159,1.913,1.038,1.229,2.237c-1.562,2.744-0.347,4.744,2.882,4.748
|
||||||
|
c1.773,0.006,3.549,0.068,5.318-0.022c1.005-0.054,2.363,0.604,2.914-0.755c0.59-1.455-0.415-2.448-1.438-3.3
|
||||||
|
c-0.465-0.386-0.989-0.721-1.526-1.003c-4.742-2.498-5.607-7.749-1.879-11.479c0.241-0.244,0.482-0.483,0.722-0.727
|
||||||
|
c2.797-2.821,2.848-3.684,0.158-6.521c-0.766-0.803-0.909-1.374-0.069-2.205c2.024-1.996,2.999-4.679,4.472-7.04
|
||||||
|
c0.499-0.797,0.674-1.604-0.077-2.428c-1.087-1.194-0.409-1.661,0.837-1.764c1.1-0.087,1.969-0.708,2.037-1.681
|
||||||
|
c0.155-2.241,1.584-2.333,3.269-2.425c3.627-0.192,6.176-3.527,5.331-7.009c-0.323-1.33,0.301-1.667,1.33-1.614
|
||||||
|
c1.596,0.093,2.688-0.657,3.736-1.734c1.202-1.243,2.216-2.592,2.94-4.151c1.664-3.575,3.186-7.231,4.997-10.734
|
||||||
|
c1.966-3.803,5.061-6.368,9.135-7.905c2.746-1.039,4.463-3.355,5.567-6.07c1.387-0.987,1.308-2.595,1.518-3.984
|
||||||
|
c0.457-3.065,0.566-6.185,2.711-8.722c0.813-0.965,1.812-1.859,1.887-3.262c0.002,0.002,0.005,0.02,0.005,0.02
|
||||||
|
c4.065-3.266,3.701-7.931-0.794-10.24c-0.606-0.311-1.221-0.623-1.756-1.033c-1.207-0.918-2.588-1.209-4.016-1.646
|
||||||
|
c-3.159-0.972-6.544-1.384-9.301-3.673c-1.551-1.286-3.69-2.136-5.874-0.871c-0.306,0.179-0.646,0.328-0.947,0.088
|
||||||
|
c-0.401-0.315-0.297-0.748-0.05-1.093c0.711-0.984,0.869-1.999,0.184-3.034c-1.946-2.944-4.461-5.209-8.019-5.87
|
||||||
|
c-1.715-0.317-3.051-1.043-4.214-2.265c-2.116-2.226-4.377-4.247-7.028-5.878c-1.734-1.066-3.299-1.163-4.973-0.257
|
||||||
|
c-1.735,0.938-3.155,0.576-4.366-0.849c-1.521-1.79-3.313-2.996-5.708-2.094c-2.076,0.788-4.78,1.374-5.857,2.961
|
||||||
|
c-1.257,1.854-3.244,2.776-4.368,4.653c-1.061,1.77-2.98,1.484-4.608,0.923c-1.591-0.55-2.492-1.809-2.496-3.612
|
||||||
|
c-0.003-1.37,0.18-2.706,0.358-4.059c0.274-2.101-0.632-3.235-2.71-3.087c-3.593,0.256-3.579-1.217-3.284-4.179
|
||||||
|
c0.062-0.602,0.269-1.195,0.453-1.779c0.268-0.854,0.638-1.75-0.204-2.455c-0.841-0.702-1.88-0.827-2.904-0.497
|
||||||
|
c-1.405,0.443-2.598,1.276-3.384,2.521c-1.325,2.106-3.367,1.438-5.186,1.367c-1.679-0.067-2.311-1.373-2.759-2.852
|
||||||
|
c-0.743-2.447-0.92-4.932-0.868-7.465c0.07-3.483,2.242-5.628,5.786-5.634c2.101-0.003,4.116,0.022,6.172-0.936
|
||||||
|
c2.16-1.006,4.59-0.076,6.789,0.425c1.403,0.318,1.241,2.266,1.773,3.484c0.704,1.613,1.218,3.281,2.902,4.304
|
||||||
|
c1.483,0.899,2.274,0.388,2.908-0.934c0.471-0.987,0.454-1.999-0.089-2.943c-0.642-1.117-1.363-2.195-2.036-3.296
|
||||||
|
c-1.291-2.115-1.116-3.608,0.653-5.44c0.327-0.341,0.749-0.584,1.107-0.895c2.013-1.742,3.916-3.585,5.502-5.742
|
||||||
|
c0.347-0.475,0.654-0.993,0.381-1.499c-0.715-1.335,0.18-2.016,0.98-2.761c1.164-1.084,2.557-2.319,2.285-3.912
|
||||||
|
c-0.398-2.319,1.052-2.16,2.393-2.37c0.735-0.115,1.516-0.047,2.213-0.266c1.072-0.331,1.738-0.979,0.712-2.074
|
||||||
|
c-1.383-1.473-0.374-2.112,0.887-2.685c1.981-2.108,2.691-2.145,6.272-0.35c1.237-0.014,2.542,0.301,3.564-0.742
|
||||||
|
c0.876-1.099,1.425-2.199,0.132-3.396c-0.698-0.647-1.376-1.323-2.023-2.026c-0.781-0.848-1.144-1.828-0.795-3.004
|
||||||
|
c0.789-2.637,0.113-3.385-2.637-2.994c-0.714,0.104-1.477,0.802-2.24-0.059c0.828-0.832,1.536-1.673,2.744-1.736
|
||||||
|
c2.308,0.009,4.618,0.019,6.927,0.03c0.285-0.002,0.57,0,0.854,0c0.678,0.075,1.424,0.312,1.651-0.691
|
||||||
|
c1.789-1.224,2.84-3.361,5.177-3.954c0.916-0.233,1.056-1.303,0.987-2.23c0.377-0.297,0.366-0.566-0.057-0.803
|
||||||
|
c-0.686-3.168-2.416-4.902-4.922-4.928c-0.928-0.87-1.162-2.314-2.404-2.928c-0.024-0.255-0.051-0.512-0.077-0.767
|
||||||
|
c-0.854-3.666-3.196-6.696-4.376-10.231c-0.286-0.854-1.184-1.125-1.993-0.329c-0.778,0.763-1.525,1.559-2.317,2.31
|
||||||
|
c-0.627,0.598-1.272,1.468-2.237,1.042c-0.961-0.426-1.563-1.356-1.673-2.425c-0.112-1.081-0.063-2.179-0.062-3.269
|
||||||
|
c0.001-0.771-0.061-1.553-0.665-2.076c-2.789-2.402-5.791-4.194-9.714-3.892c-3.164,0.241-4.555,2.432-3.079,5.15
|
||||||
|
c0.454,0.841,0.996,1.652,0.34,2.651c-1.947,2.964-1.114,5.811,0.39,8.624c0.024,0.273,0.051,0.547,0.076,0.819
|
||||||
|
c-0.005,1.304,0.004,2.575-1.235,3.48c-2.797,2.041-3.089,4.659-1.843,7.745c0.765,1.891,0.182,2.583-1.854,2.689
|
||||||
|
c-0.188-1.086-1.016-1.728-1.705-2.467c0.004-0.068,0.018-0.134,0.013-0.205c-0.355-5.745-1.033-7.693-6.86-7.171
|
||||||
|
c-2.163,0.195-3.938-1.181-4.641-3.266c-1.033-3.056-3.408-4.891-5.872-6.637c-1.309-0.931-1.864-1.924-0.937-3.433
|
||||||
|
c0.744-1.212,1.192-2.698,2.169-3.656c2.011-1.974,3.277-4.955,6.682-5.222c0.833-0.065,1.65-0.852,1.597-1.653
|
||||||
|
c-0.168-2.456,0.906-4.528,1.523-6.775c0.525-1.909,1.398-2.585,3.054-2.911c0.664-0.131,1.328-0.322,1.949-0.586
|
||||||
|
c3.007-1.269,3.98-3.615,2.808-6.777c-0.249-0.671-0.469-1.467-0.137-1.982c1.246-1.934-0.008-3.192-1.067-4.494
|
||||||
|
c-0.405-0.5-0.81-1.291-1.574-1.13c-0.885,0.186-1.214,1.057-1.448,1.843c-0.366,1.235-0.592,2.516-0.981,3.744
|
||||||
|
c-0.242,0.763-0.549,1.68-1.617,1.536c-1.144-0.155-0.695-1.144-0.756-1.813c-0.083-0.91,0.005-1.849-1.384-1.719
|
||||||
|
c-2.999,0.285-4.384-0.965-4.356-3.972c0.018-1.958-0.339-3.823-1.429-5.445c-2.13-3.174-3.067-3.146-5.043,0.03
|
||||||
|
c-0.322,0.515-0.645,1.049-0.854,1.616c-0.551,1.507-0.926,3.14,0.093,4.511c1.067,1.433,1.733,3.085,2.792,4.503
|
||||||
|
c0.706,0.949,1.279,1.938,0.014,2.796c-1.083,0.736-2.111,0.483-3.133-0.406c-1.429-1.243-1.499-2.797-1.44-4.474
|
||||||
|
c0.039-1.105,0.008-2.383-1.208-2.782c-1.087-0.354-1.842,0.644-2.566,1.356c-0.242,0.238-0.496,0.488-0.649,0.783
|
||||||
|
c-0.579,1.112-1.024,2.115,0.765,2.675c1.463,0.459,1.451,1.513,0.705,2.745c-0.422,0.699-2.281,1.267-3.987,1.73
|
||||||
|
c0.221,7.302,0.275,14.064,0.08,19.642c-0.433,12.308-4.57,46.237-23.802,46.237c-4.41,0-7.984-1.136-11.13-2.912
|
||||||
|
c-0.001,1.142-0.006,1.956-0.015,2.104C79.335,228.167,79.277,228.636,78.988,229.038z M147.153,227.965
|
||||||
|
c0.184-1.168,1.059-1.455,2.105-1.416c0.884-0.002,1.529,0.358,1.368,1.312c-0.229,1.358-1.395,0.989-2.286,1.044
|
||||||
|
C147.695,228.942,147.016,228.847,147.153,227.965z M136.335,227.479c-0.691,1.075-0.787,2.271-0.812,3.503
|
||||||
|
c-0.018,0.817-0.507,1.265-1.325,1.168c-0.863-0.101-1.053-0.729-0.925-1.486c0.218-1.397,0.386-2.801,0.665-4.185
|
||||||
|
c0.223-1.11,1.143-1.74,2.096-1.384C137.209,225.536,136.897,226.604,136.335,227.479z M146.568,230.325
|
||||||
|
c-0.272,1.146-1.194,1.791-2.314,2.145c-0.704,0.223-1.271-0.205-1.24-0.917c0.063-1.336,0.934-2.021,2.212-2.151
|
||||||
|
C145.818,229.342,146.498,229.302,146.568,230.325z M131.908,219.503c0.366-0.386,0.696-0.636,1.014-0.75
|
||||||
|
C132.604,218.867,132.274,219.117,131.908,219.503c0.939,0.001,1.879,0.003,2.818,0.004c1.227,0.081,2.001,0.995,2.446,1.867
|
||||||
|
c1.006,1.97,2.648,2.302,4.548,2.298c0.176,0.314,0.459,0.37,0.784,0.327c0.873,0.333,2.2,0.735,1.909,1.686
|
||||||
|
c-0.447,1.455-1.971,2.169-3.342,2.812c-0.166,0.078-0.398,0.014-0.6,0.015c-0.256-0.258-0.51-0.52-0.765-0.778
|
||||||
|
c-0.446-2.296-3.403-4.916-5.64-4.942c-1.415-0.016-2.832,0.057-4.248,0.087c-0.02,0.206-0.047,0.433-0.206,0.522
|
||||||
|
c0.159-0.088,0.188-0.316,0.206-0.523c-0.257-0.02-0.516-0.039-0.773-0.058l-0.035-0.036c-0.014-0.392-0.028-0.787-0.042-1.179
|
||||||
|
C129.621,220.446,130.606,219.754,131.908,219.503z"/>
|
||||||
|
<path fill="#33B6EA" d="M261.546,191.276c0.407,1.273,1.343,2.34,2.935,2.498c1.648,0.167,2.499-0.76,3.146-2.068
|
||||||
|
c0.306-0.608,0.585-1.246,0.993-1.774c0.396-0.51,0.835-1.251,1.629-0.962c0.755,0.273,0.459,1.055,0.435,1.623
|
||||||
|
c-0.097,2.678,0.021,5.264,1.615,7.612c1.339,1.976,3.2,2.324,4.916,0.646c1.144-1.118,1.708-2.56,2.111-4.107
|
||||||
|
c0.416-1.608,0.499-3.333,1.782-4.66c2.151-2.221,1.764-4.237-0.673-5.725c-6.185,1.909-12.752,2.706-18.957,2.763
|
||||||
|
C260.875,188.034,260.979,189.509,261.546,191.276z"/>
|
||||||
|
<path fill="#33B6EA" d="M291.96,118.641c1.454-0.106,3.023,1.233,4.278,0.063c1.565-1.46,3.069-3.052,4.022-5.045
|
||||||
|
c0.687-1.446,0.296-2.492-1.161-3.134c-2.41-1.065-4.54-2.344-7.56-2.25c-2.488,0.077-3.934,0.432-4.978,2.563
|
||||||
|
c-0.143,0.296-1.265,1.329-2.021,2.054c1.045,2.03,2.396,3.902,3.93,5.676C289.949,118.609,291.575,118.668,291.96,118.641z"/>
|
||||||
|
<path fill="#33B6EA" d="M223.856,169.547c-1.026-0.573-2.245-0.175-3.32-0.754c-1.958-1.048-3.192-0.229-3.043,1.986
|
||||||
|
c0.203,3.049,0.191,6.246,4.008,7.388c0.865,0.258,1.348,1.432,2.467,1.2c2.115-0.434,4.249-0.787,6.283-1.566
|
||||||
|
c0.227-0.087,0.892-0.696,1.667-1.476c-2.673-2.055-5.176-4.378-7.41-6.953C224.196,169.555,223.955,169.641,223.856,169.547z"/>
|
||||||
|
<path fill="#33B6EA" d="M120.627,136.728c0.484-0.958,1.093-2.894-0.946-3.566c-0.758-0.249-1.59-0.308-2.395-0.391
|
||||||
|
c-2.006-0.203-3.094,1.065-2.748,3.06c0.177,1.022,0.626,2.238-0.989,2.621c0.018,0.571,0.035,1.143,0.05,1.71
|
||||||
|
c0.659,0.101,0.674,0.618,0.62,1.087c-0.206,1.76,0.677,3.165,1.535,4.535c1.286,2.048,3.684,2.186,5.313,0.396
|
||||||
|
c1.779-1.957,1.845-4.067,0.209-6.254C120.569,138.977,119.867,138.233,120.627,136.728z"/>
|
||||||
|
<path fill="#33B6EA" d="M433.681,306.516c-0.632-1.034-1.259-2.091-1.277-3.396c-0.011-0.658-0.542-1.098-1.176-1.263
|
||||||
|
c-0.738-0.198-1.336-0.539-1.151-1.384c0.203-0.922,1.054-1.057,1.793-0.976c1.141,0.124,2.256,0.453,3.389,0.649
|
||||||
|
c0.711,0.123,1.204-0.212,1.313-0.943c0.112-0.789-0.338-1.087-1.07-1.134c-1.615-0.101-3.346-0.07-4.789,0.3
|
||||||
|
c-1.374,0.354-2.927,1.682-3.162,3.421c-0.353,2.614,1.047,5.188,2.895,5.895c0.47,0.182,0.904,0.9,1.098,1.558
|
||||||
|
c0.774,0.114,1.512,0.263,2.219,0.437C433.99,308.746,434.203,307.366,433.681,306.516z"/>
|
||||||
|
<path fill="#33B6EA" d="M439.728,246.08c1.443,0.022,2.988-1.524,3.284-3.127c0.22-1.184-0.463-3.086-1.076-4.532
|
||||||
|
c-1.877,0.488-3.885,0.908-6.05,1.24c0.621,1.067,1.251,2.725,1.446,3.662C437.617,244.694,437.954,246.049,439.728,246.08z"/>
|
||||||
|
<path fill="#33B6EA" d="M460.48,231.114c2.867,1.128,5.945-0.291,7.081-3.263c-0.149,0.013-0.273-0.141-0.393-0.377
|
||||||
|
c-2.313,0.833-4.521,1.898-6.779,3.063C460.557,230.789,460.63,231,460.48,231.114z"/>
|
||||||
|
<path fill="#33B6EA" d="M489.987,314.613c0.179-0.824,0.03-1.537-0.98-1.611c-0.989-0.07-1.267,0.596-1.25,1.444
|
||||||
|
c0.013,0.693,0.087,2.208,0.142,3.43c0.671-0.35,1.338-0.723,1.995-1.115C489.876,315.917,489.917,314.936,489.987,314.613z"/>
|
||||||
|
<path fill="#33B6EA" d="M112.994,105.843c-0.281-1.141-0.823-2.162-2.253-2.193c-0.185,0.054-0.36,0.117-0.522,0.188
|
||||||
|
c0.103,1.23,0.209,2.519,0.32,3.865c0.1,0.011,0.193,0.025,0.299,0.03C112.467,108.088,113.363,107.344,112.994,105.843z"/>
|
||||||
|
<path fill="#33B6EA" d="M160.808,273.271c-0.988-0.458-2.019-0.838-2.961-1.37c-1.241-0.706-2.348-1.647-3.842-0.405
|
||||||
|
c-0.476,0.393-1.136-0.053-1.654-0.455c-3-2.326-7.063-2.178-10.164-4.307c-0.278-0.191-0.799-0.028-1.208-0.028
|
||||||
|
c0-0.013,0-0.024,0-0.039c-0.272,0-0.545-0.013-0.818,0.003c-1.252,0.073-3.414,1.778-3.213,2.658
|
||||||
|
c0.385,1.666,1.825,1.234,3.003,1.36c1.303,0.142,2.729-0.52,3.895,0.619c2.222,2.171,5.004,3.084,8.01,3.419
|
||||||
|
c0.676,0.073,1.11,0.42,1.569,0.84c2.871,2.62,4.667,2.714,7.681,0.426C162.469,274.955,162.366,273.998,160.808,273.271z"/>
|
||||||
|
<path fill="#33B6EA" d="M164.875,274.928c-0.753,0.008-1.25,0.523-1.312,1.25c-0.068,0.762,0.485,1.041,1.17,1.007
|
||||||
|
c0.724-0.033,1.049-0.484,1.07-1.14C165.777,275.399,165.506,274.915,164.875,274.928z"/>
|
||||||
|
<path fill="#33B6EA" d="M325.753,318.891c-0.866-0.411-1.582,0.191-2.169,0.753c-1.28,1.229-2.307,2.861-3.796,3.699
|
||||||
|
c-5.102,2.862-2.815,8.391-4.708,12.38c-0.173,0.361,0.204,1.056,0.442,1.536c0.852,1.703,2.006,3.284,4.033,3.355
|
||||||
|
c1.997,0.074,2.7-1.78,3.142-3.273c1.081-3.62,1.931-7.309,2.78-10.984c0.407-1.786,0.601-3.617,0.862-5.264
|
||||||
|
C326.253,320.202,326.606,319.294,325.753,318.891z"/>
|
||||||
|
<path fill="#33B6EA" d="M213.516,124.214c0.873-1.129,1.619-2.339,2.111-3.699c0.422-1.168,0.367-2.224-0.846-2.793
|
||||||
|
c-1.253-0.588-2.065,0.067-2.555,1.245c-0.154,0.379-0.318,0.766-0.556,1.092c-0.595,0.81-1.321,2.109-2.346,1.389
|
||||||
|
c-1.047-0.733,0.197-1.616,0.688-2.343c1.032-1.542,0.646-2.543-1.193-2.752c-0.955-0.11-1.656-0.385-1.549-1.438
|
||||||
|
c0.203-1.966-0.895-2.813-2.555-3.362c-0.695-0.228-1.47-0.581-1.915-1.12c-1.435-1.731-3.254-2.112-5.306-1.811
|
||||||
|
c-2.537-0.319-4.81,0.208-6.541,2.142c-3.09,3.452-7.202,4.766-11.537,5.591c-2.417,0.461-3.617,1.706-3.762,4.241
|
||||||
|
c-0.041,0.704-0.515,1.112-0.996,1.469c-0.654,0.483-1.353,0.925-2.084,1.279c-2.71,1.316-2.823,2.163-1.086,4.508
|
||||||
|
c0.842,1.137,0.673,2.085-0.291,3.073c-1.333,1.375-3.062,1.975-4.767,2.649c-1.589,0.625-1.669,1.848-1.117,3.18
|
||||||
|
c0.255,0.618,0.926,0.954,1.498,1.346c1.545,1.063,1.494,1.556-0.14,2.483c-0.82,0.466-1.53,0.976-0.845,2.083
|
||||||
|
c1.415,2.285,3.887,3.345,6.596,2.81c0.932-0.183,1.87-0.324,2.807-0.49c1.989-0.355,3.304,0.407,3.898,2.353
|
||||||
|
c0.953,3.123,1.676,6.264,1.195,9.574c-0.208,1.442-0.397,2.947,1.712,3.265c0.769,0.114,0.774,0.74,0.367,1.236
|
||||||
|
c-1.024,1.25-0.263,1.813,0.805,2.28c1.11,0.484,1.189,1.029,0.386,1.993c-1.254,1.499-1.765,3.257-1.783,5.285
|
||||||
|
c-0.039,4.326,1.861,8.033,3.438,11.853c0.253,0.621,0.794,1.126,1.445,1.392c4.57,1.867,4.578,1.862,6.417-2.824
|
||||||
|
c0.225-0.568,0.525-1.159,0.539-1.749c0.068-2.791,1.646-4.41,3.877-5.853c3.523-2.28,5.706-6.175,10.145-7.568
|
||||||
|
c2.624-0.822,2.372-2.082-0.045-3.903c-0.421-0.318-0.978-0.722-0.466-1.325c0.532-0.625,0.97-0.113,1.344,0.288
|
||||||
|
c0.394,0.419,0.603,1.192,1.416,0.792c0.84-0.411,1.062-1.154,1.03-2.05c-0.025-0.793-0.365-1.456-0.736-2.1
|
||||||
|
c-0.817-1.416-0.671-2.721,0.339-3.969c0.556-0.688,1.13-1.36,1.653-2.069c1.965-2.66,1.718-4.775-0.779-7
|
||||||
|
c-0.396-0.354-0.938-0.684-0.843-1.314c0.119-0.782,0.811-0.601,1.313-0.609c0.955-0.016,1.099-0.603,1.086-1.363
|
||||||
|
c-0.013-0.683,0.021-1.364-0.001-2.047c-0.021-0.584,0.155-1.307-0.71-1.47c-0.728-0.135-1.145,0.288-1.424,0.899
|
||||||
|
c-0.329,0.729-0.771,1.44-1.681,0.974c-1.02-0.522-0.782-1.475-0.468-2.335c0.365-1.002,1.229-1.617,1.942-2.34
|
||||||
|
c0.765-0.775,0.887-1.39-0.325-1.761c-0.706-0.216-1.193-0.634-1.393-1.354c-0.349-1.279,0.508-2.781,1.815-2.957
|
||||||
|
c1.542-0.207,1.771,0.861,1.799,2.072c0.011,0.436-0.202,1.021,0.41,1.222c0.168,0.053,0.634-0.21,0.632-0.327
|
||||||
|
c-0.012-1.34,1.268-2.75-0.064-4.009C212.071,126.803,212.486,125.548,213.516,124.214z"/>
|
||||||
|
<path fill="#33B6EA" d="M172.852,164.982c-2.506-1.504-6.24-2.534-4.739-6.161c0.553-2.373-0.626-3.289-1.66-3.899
|
||||||
|
c-2.163-1.278-3.706-3.186-5.561-4.774c-1.309-1.121-2.559-2.386-4.602-2.314c-2.907,0.103-3.069-0.182-3.555-3.142
|
||||||
|
c-0.227-1.385-0.851-2.219-2.353-1.196c-0.497,0.338-1.043,0.419-1.54,0.105c-1.505-0.945-2.891-1.027-4.218,0.341
|
||||||
|
c-1.639,1.689-3.079,3.75-2.287,5.989c0.883,2.502,2.207,5.023,4.678,6.53c1.145,0.697,1.841,1.571,1.661,2.993
|
||||||
|
c-0.187,1.472,0.625,2.195,1.978,2.273c1.278,0.075,1.755-0.662,1.762-1.933c0.011-1.264,0.868-1.74,2.075-1.704
|
||||||
|
c2.506,0.075,5.165,2.257,5.588,4.606c0.549,3.044-1.069,7.2-3.261,8.006c-0.898,0.331-1.823,0.455-1.515,1.667
|
||||||
|
c0.28,1.11,1.202,1.448,2.241,1.312c1.748-0.228,3.011,0.61,4.145,1.757c1.008,1.019,1.902,2.16,2.999,3.068
|
||||||
|
c1.093,0.9,2.302,2.249,3.763,0.38c0.14-0.18,0.473-0.291,0.719-0.295c0.954-0.019,1.978,0.141,2.316-1.116
|
||||||
|
c0.377-1.385-0.022-2.541-1.036-3.527c-0.98-0.952-1.945-1.918-2.888-2.902c-0.453-0.476-0.761-1.16-0.211-1.63
|
||||||
|
c0.67-0.573,1.052,0.118,1.407,0.628c0.505,0.728,0.982,1.514,2.013,1.554c1.206,0.049,3.91-1.67,4.084-2.656
|
||||||
|
C175.172,167.143,174.561,166.002,172.852,164.982z"/>
|
||||||
|
<path fill="#33B6EA" d="M148.542,127.307c-0.975,1.268-0.724,2.123,0.363,2.92c1.666,1.218,3.576,2.017,5.569,2.434
|
||||||
|
c1.447,0.304,3.066-0.317,3.068-1.894c0.003-1.881,1.021-2.85,2.142-3.93c1.297-1.255,2.237-2.748,2.839-4.434
|
||||||
|
c0.274-0.766,0.655-1.342,1.452-1.561c1.648-0.448,2.835-1.538,4.007-2.711c1.24-1.243,2.295-2.716,3.997-3.444
|
||||||
|
c0.669-0.288,0.956-0.761,0.407-1.441c-0.451-0.557-0.541-1.482,0.107-1.535c3.128-0.251,2.385-1.912,1.56-3.729
|
||||||
|
c-0.128-0.283-0.045-0.676-0.019-1.016c0.099-1.244-0.506-2.145-1.211-3.127c-2.063-2.875-5.219-2.098-7.818-2.667
|
||||||
|
c-1.048,0.155-2.04-0.242-2.79,0.29c-2.636,1.861-5.711,2.861-8.481,4.444c-0.689,0.394-1.404,0.96-1.309,1.927
|
||||||
|
c0.096,0.991,0.805,1.566,1.653,1.896c1.687,0.654,3.333,1.544,5.276,0.924c0.584-0.187,1.249-0.013,1.512,0.708
|
||||||
|
c0.13,0.357,0.019,0.702-0.329,0.868c-1.46,0.701-2.89,1.795-4.413,1.956c-1.946,0.207-2.251,1.071-2.12,2.646
|
||||||
|
c0.055,0.677-0.048,1.369,0.021,2.043c0.167,1.674-0.141,2.973-2.098,3.322c-0.541,0.097-1.038,0.569-1.09,1.121
|
||||||
|
C150.676,125.011,149.459,126.112,148.542,127.307z"/>
|
||||||
|
<path fill="#33B6EA" d="M143.442,117.947c-0.468,2.014,2.086,4.277,3.771,3.557c1.701-0.728,3.875-4.268,3.82-6.308
|
||||||
|
c-0.114-0.374-0.161-0.887-0.402-1.274c-0.819-1.307-1.049-2.721-1.245-4.234c-0.26-1.985-1.633-3.415-3.332-4.412
|
||||||
|
c-1.389-0.816-2.506-0.502-2.996,1.152c-0.773,2.599-0.877,5.25-0.009,7.818C143.47,115.494,143.762,116.573,143.442,117.947z"/>
|
||||||
|
<path fill="#33B6EA" d="M145.218,128.696c-0.489-0.977-4.531-2.283-5.433-1.649c-1.736,1.222-3.163,0.806-4.521-0.591
|
||||||
|
c-0.948-0.976-1.9-1.946-2.89-2.88c-0.962-0.908-2.092-1.496-3.894-1.544c-0.594-0.052-1.596,0.149-1.832,1.269
|
||||||
|
c-0.252,1.204,0.885,1.359,1.684,1.641c2.107,0.743,3.28,2.177,3.097,4.434c-0.14,1.695,0.433,2.388,2.148,2.174
|
||||||
|
c0.937-0.119,1.684,0.41,2.402,0.953c0.867,0.65,1.915,0.977,2.882,0.552c1.291-0.571,2.582-0.702,3.952-0.756
|
||||||
|
C144.262,132.236,145.787,129.828,145.218,128.696z"/>
|
||||||
|
<path fill="#33B6EA" d="M124.37,101.588c-0.531-0.042-0.977-0.277-1.169-0.698c-0.887-1.955-3.121-1.922-4.535-3.115
|
||||||
|
c-0.6-0.505-1.549-0.346-2.236,0.316c-0.719,0.699-0.288,1.346,0.002,2.038c0.578,1.371,1.754,2.23,2.752,3.231
|
||||||
|
c0.776,0.773,1.135,1.416,0.239,2.404c-0.715,0.788,0.752,3.772,1.848,3.937c0.564,0.084,1.006-0.195,1.08-0.7
|
||||||
|
c0.274-1.832,1.021-1.335,1.979-0.506c0.85,0.737,1.64,0.502,1.724-0.604c0.099-1.285,0.68-2.503,0.478-3.684
|
||||||
|
C126.542,101.777,126.543,101.763,124.37,101.588z"/>
|
||||||
|
<path fill="#33B6EA" d="M135.293,135.081c-0.622-0.27-1.242-0.55-1.885-0.763c-2.825-0.932-4.5,0.16-4.767,3.112
|
||||||
|
c-0.043,0.473-0.005,0.95-0.005,1.329c-0.179,2.44,0.894,4.6,1.008,6.911c0.03,0.614,0.448,1.387,1.321,1.283
|
||||||
|
c0.755-0.089,1.337-0.685,1.236-1.389c-0.267-1.86,0.903-2.869,2.03-3.967c0.935-0.908,1.59-2.021,2.163-3.184
|
||||||
|
C137.117,136.938,136.898,135.778,135.293,135.081z"/>
|
||||||
|
<path fill="#33B6EA" d="M124.121,124.314c-1.367-1.391-2.159,0.156-3.112,0.681c-0.519,0.289-0.897,0.927-1.595,0.582
|
||||||
|
c-0.668-0.332-0.501-1.023-0.607-1.615c-0.318-1.764,0.665-3.289,0.86-4.949c0.049-0.944-0.227-1.8-0.868-2.441
|
||||||
|
c-0.803-0.803-2.108-1.276-2.927-0.825c-1.022,0.567,0.298,1.331,0.529,2.019c0.269,0.801,0.624,1.64-0.058,2.285
|
||||||
|
c-0.886,0.837-1.436-0.111-2.024-0.613c-0.412-0.353-0.83-0.866-1.405-0.468c-0.512,0.354-0.365,1.012-0.277,1.521
|
||||||
|
c0.243,1.398,1.711,1.896,2.332,2.985c1.614,2.844,4.006,4.249,7.237,4.509c1.191,0.094,2.604,0.869,3.33-0.406
|
||||||
|
C126.322,126.201,125.015,125.226,124.121,124.314z"/>
|
||||||
|
<path fill="#33B6EA" d="M139.589,171.072c-1.388-0.821-1.992,0.598-2.865,1.25c-1.496,1.117-1.25,2.461-0.447,3.759
|
||||||
|
c0.75,1.212,1.728,2,3.375,1.246c1.022-0.466,2.207-0.598,3.33-0.816c0.695-0.136,1.114-0.449,1.155-1.194
|
||||||
|
C143.655,172.811,141.402,172.14,139.589,171.072z"/>
|
||||||
|
<path fill="#33B6EA" d="M143.789,136.208c-0.026,1.843,1.515,3.008,4.036,3.052c2.5,0.042,3.68-0.742,3.696-2.453
|
||||||
|
c0.024-2.295-1.215-3.643-3.366-3.663C145.797,133.121,143.813,134.515,143.789,136.208z"/>
|
||||||
|
<path fill="#33B6EA" d="M131.362,111.335c1.432,0.842,2.542,0.19,2.559-1.588c-0.009-0.126,0.027-0.35-0.046-0.53
|
||||||
|
c-0.567-1.382-1.144-2.759-1.745-4.128c-0.387-0.883-0.801-1.877-1.977-1.756c-1.316,0.132-1.709,1.241-1.903,2.341
|
||||||
|
C127.864,107.871,129.056,109.981,131.362,111.335z"/>
|
||||||
|
<path fill="#33B6EA" d="M118.666,114.32c0.401,0.319,0.72,0.914,1.363,0.467c0.467-0.323,0.767-0.764,0.691-1.735
|
||||||
|
c-0.357-0.956-1.001-2.129-2.076-3.002c-0.389-0.313-0.898-0.29-1.341-0.019c-0.468,0.285-0.566,0.748-0.481,1.243
|
||||||
|
C117.034,112.526,117.678,113.528,118.666,114.32z"/>
|
||||||
|
<path fill="#33B6EA" d="M149.991,176.162c-0.928,0.053-1.633,0.513-1.614,1.475c0.018,0.893,0.813,0.95,1.526,0.944
|
||||||
|
c0.822-0.001,1.537-0.191,1.567-1.185C151.502,176.403,150.849,176.114,149.991,176.162z"/>
|
||||||
|
<path fill="#33B6EA" d="M479.022,304.194c-0.644-0.41-1.352-0.121-1.674,0.305c-1.215,1.619-3.115,2.311-4.566,3.583
|
||||||
|
c-1.758,1.542-3.07,1.655-4.787,0.052c-1.708-1.592-3.389-3.081-5.94-3.178c-0.889-0.03-1.791-0.62-2.622-1.067
|
||||||
|
c-2.968-1.604-3.308-1.652-5.636,0.704c-1.193,1.206-2.006,0.902-2.731-0.293c-0.543-0.887-1.217-1.63-1.956-2.339
|
||||||
|
c-0.612-0.587-1.342-0.684-2.076-0.361c-0.854,0.377-1.262,1.178-1.012,2.022c0.521,1.762,1.191,3.617,3.145,4.19
|
||||||
|
c3.723,1.098,7.168,2.269,9.486,5.876c1.426,2.216,2.942,2.132,5.089,0.659c1.668-1.144,3.084-0.817,4.407,0.431
|
||||||
|
c1.048,0.989,2.211,1.804,3.412,2.576c1.267,0.811,2.26,0.184,3.045-0.723c0.87-1.006-0.156-1.589-0.749-2.172
|
||||||
|
c-0.529-0.518-1.169-0.926-1.746-1.406c-0.355-0.303-0.793-0.63-0.635-1.179c0.158-0.532,0.646-0.635,1.144-0.689
|
||||||
|
c1.586-0.173,3.023-0.827,4.357-1.623c1.436-0.854,2.578-2.027,2.555-3.897C479.519,305.115,479.566,304.539,479.022,304.194z"/>
|
||||||
|
<path fill="#33B6EA" d="M426.299,291.733c-1.86-1.309-2.794-1.255-4.159,0.423c-0.428,0.521-0.727,1.147-1.151,1.676
|
||||||
|
c-1.796,2.213-3.614,4.458-6.118,5.854c-1.236,0.694-2.009,1.313-1.746,2.691c-0.069,1.061-0.091,2.076,0.908,2.604
|
||||||
|
c1.498,0.796,2.991,1.701,4.6,2.148c1.123,0.314,2.663,0.777,3.546-0.615c1.164-1.831,2.14-3.778,3.519-5.474
|
||||||
|
c0.328-0.398,0.387-0.918,0.196-1.357c-0.738-1.66-0.16-3.116,0.813-4.378C427.803,293.884,427.816,292.798,426.299,291.733z"/>
|
||||||
|
<path fill="#33B6EA" d="M447.558,249.798c0.181-2.055,2.504-3.468,4.266-2.496c1.058,0.581,1.771,0.437,2.513-0.375
|
||||||
|
c0.368-0.405,0.816-0.677,1.345-0.878c4.359-1.651,5.755-5.244,6.195-9.626c-0.068-0.394-0.137-0.933-0.261-1.458
|
||||||
|
c-0.184-0.758-0.098-1.82-1.246-1.794c-1.006,0.022-2.094,0.198-2.567,1.306c-0.315,0.745-0.52,1.542-0.728,2.329
|
||||||
|
c-1.018,3.769-3.746,6.414-7.503,6.389c-2.613-0.019-4.011,1.332-5.374,3.035c-1.555,1.94-1.296,4.069,0.502,5.803
|
||||||
|
c0.861,0.831,1.514,0.63,2.239-0.149C447.513,251.271,447.49,250.548,447.558,249.798z"/>
|
||||||
|
<path fill="#33B6EA" d="M437.163,287.267c-2.188,0.152-3.2-0.814-3.767-2.692c-0.095-0.313-0.349-0.579-0.55-0.852
|
||||||
|
c-1.088-1.478-0.925-1.938,0.945-2.363c0.619-0.136,1.29-0.157,1.354-0.949c0.068-0.798-0.591-0.965-1.196-1.139
|
||||||
|
c-1.523-0.434-1.914-1.373-1.247-2.799c0.201-0.428,0.342-0.89,0.459-1.352c0.317-1.3-0.164-2.307-1.309-2.915
|
||||||
|
c-1.094-0.58-1.922-0.008-2.679,0.806c-2.491,2.678-2.095,8.016,0.876,10.49c0.666,0.557,0.796,1.076,1.021,1.902
|
||||||
|
c0.449,1.672,1.813,3.118,0.723,5.023c-0.045,0.083,0.168,0.365,0.311,0.499c1.064,1.007,2.313,1.644,3.637,1.871
|
||||||
|
c1.482,0.03,3.923-2.007,3.88-3.28C439.575,288.02,438.305,287.192,437.163,287.267z"/>
|
||||||
|
<path fill="#33B6EA" d="M427.252,284.699c-1.006,0.024-2.534,1.624-2.451,2.59c0.068,0.787,0.62,0.952,1.518,0.958
|
||||||
|
c1.095-0.212,2.003-0.982,2.284-2.248C428.809,285.081,428.14,284.681,427.252,284.699z"/>
|
||||||
|
<path fill="#33B6EA" d="M441.027,301.296c1.146-0.027,1.731-0.857,2.01-1.999c-0.244-0.896-0.732-1.543-1.793-1.493
|
||||||
|
c-1.104,0.054-1.749,0.665-1.774,1.78C439.448,300.61,440.002,301.325,441.027,301.296z"/>
|
||||||
|
<path fill="#33B6EA" d="M481.22,313.009c-1.133-0.051-1.261,0.775-1.241,1.637c0.024,0.789-0.083,1.81,1.108,1.718
|
||||||
|
c0.938-0.069,1.254-0.877,1.239-1.768C482.333,313.802,482.21,313.051,481.22,313.009z"/>
|
||||||
|
<path fill="#33B6EA" d="M481.273,308.482c-0.951-0.097-1.521,0.521-1.612,1.43c-0.099,0.957,0.547,1.271,1.598,1.3
|
||||||
|
c0.58,0,1.357-0.072,1.414-1.075C482.725,309.198,482.18,308.571,481.273,308.482z"/>
|
||||||
|
<path fill="#33B6EA" d="M461.282,287.7c0.031,0.961,0.735,1.369,1.54,1.393c0.909-0.025,1.453-0.341,1.428-1.201
|
||||||
|
c-0.028-1.052-0.841-1.37-1.658-1.438C461.829,286.39,461.26,286.952,461.282,287.7z"/>
|
||||||
|
<path fill="#33B6EA" d="M443.25,305.186c-1.146-0.341-2.116,0.039-2.955,0.819c-0.346,0.324-0.709,0.737-0.426,1.227
|
||||||
|
c0.409,0.702,1.063,0.407,1.609,0.19c0.872-0.341,2.093-0.074,2.475-1.27C443.905,305.634,443.664,305.313,443.25,305.186z"/>
|
||||||
|
<path fill="#33B6EA" d="M436.112,285.336c0.963-0.002,1.426-0.589,1.554-1.434c-0.049-0.91-0.546-1.222-1.332-1.222
|
||||||
|
c-0.896-0.002-1.373,0.423-1.375,1.334C434.954,284.789,435.269,285.34,436.112,285.336z"/>
|
||||||
|
<path fill="#33B6EA" d="M437.098,303.553c-1.019,0.01-1.509,0.672-1.513,1.537c-0.008,0.82,0.774,0.756,1.381,0.788
|
||||||
|
c0.817-0.021,1.512-0.227,1.501-1.224C438.46,303.772,437.863,303.545,437.098,303.553z"/>
|
||||||
|
<path fill="#33B6EA" d="M488.649,308.893c-0.706,0.03-1.187,0.326-1.198,1.093c-0.022,0.87,0.519,1.186,1.313,1.193
|
||||||
|
c0.804,0.004,1.291-0.347,1.307-1.189C489.997,309.087,489.418,308.865,488.649,308.893z"/>
|
||||||
|
<path fill="#33B6EA" d="M320.89,116.329c0.529,0.096,1.09,0.078,1.632,0.044c0.896-0.054,1.529,0.286,2.09,1
|
||||||
|
c1.796,2.286,3.372,2.052,4.876-0.461c0.729-1.219,1.81-2.251,3.472-2.149c0.631,0.039,0.832,0.477,0.747,0.989
|
||||||
|
c-0.25,1.567-1.324,2.604-2.726,2.938c-1.148,0.274-1.624,0.686-1.263,1.74c0.351,1.017,1.249,1.7,2.24,1.085
|
||||||
|
c2.137-1.326,4.521-1.287,6.782-1.842c2.897-0.712,7.016-0.725,8.144-5.02c0.289-1.087,2.367-2.016,1.214-3.195
|
||||||
|
c-1.434-1.454-2.255,0.61-3.245,1.34c-0.506,0.373-0.949,0.883-1.602,0.395c-0.586-0.439-0.516-1.07-0.268-1.669
|
||||||
|
c0.284-0.688,0.732-1.321,0.634-2.104c0.082-1.246-0.548-1.977-1.702-1.644c-2.021,0.579-4.278,0.606-5.763,2.588
|
||||||
|
c-1.223,1.629-2.853,1.999-4.634,0.643c-1.176-0.894-2.203-1.359-2.908,0.636c-0.337,0.958-1.489,1.655-2.063,0.222
|
||||||
|
c-0.574-1.437-1.542-1.275-2.621-1.288c-1.76-0.016-2.765,1.343-4.007,2.231c-0.547,0.389-1.497,0.868-1.117,1.73
|
||||||
|
C319.17,115.386,319.871,116.143,320.89,116.329z"/>
|
||||||
|
<path fill="#33B6EA" d="M349.673,109.791c1.219-0.107,1.932-0.853,2.115-2.037c0.1-0.628-0.004-1.322-0.874-1.225
|
||||||
|
c-1.277,0.14-1.81,1.204-2.434,2.061C348.585,109.407,348.962,109.852,349.673,109.791z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_6">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<defs>
|
||||||
|
<path id="SVGID_1_" d="M108.925,89.292c0,0,6.092,63.286,5.047,92.998c-0.434,12.308-4.57,46.237-23.802,46.237
|
||||||
|
c-20.709,0-23.073-24.892-48.489-24.892c-15.139,0-41.055,9.865-41.055,53.192c0,33.143,21.005,49.511,37.781,49.511
|
||||||
|
c24.96,0,21.414-19.64,47.875-19.64c26.097,0,27.142,24.412,27.142,37.917c0,13.504-3.319,51.283-9.684,89.475
|
||||||
|
c4.819,0.727,12.558,1.601,25.368,5.593c17.369,5.409,30.689,9.682,58.513,9.682s43.238-10.5,43.238-22.503
|
||||||
|
c0-18.594-17.049-15.549-17.049-37.918s22.505-32.735,45.009-32.735c22.506,0,45.238,10.866,45.238,38.056
|
||||||
|
c0,24.55-14.277,18.685-14.277,39.008c0,20.322,24.413,19.777,30.552,19.777c6.138,0,67.106-1.999,94.93-7.683
|
||||||
|
c-1.09-14.458-4.998-72.608-4.998-90.475c0-23.643,11.001-25.961,16.865-25.961c17.595,0,18.414,13.413,43.237,13.413
|
||||||
|
c22.46,0,44.325-21.551,44.325-54.33c0-29.599-20.73-42.283-37.779-42.283s-22.776,14.73-52.103,14.73
|
||||||
|
c-10.363,0-17.275-4.137-17.275-24.324c0-40.672,4.546-81.199,4.727-119.571c-20.365-3.001-72.697-10.913-101.611-10.913
|
||||||
|
c-26.414,0-28.323,11.049-28.323,18.278c0,18.64,25.643,24.187,25.643,42.009c0,32.644-25.962,41.191-47.239,41.191
|
||||||
|
c-18.596,0-46.328-17.004-46.328-43.737c0-13.139,3.681-17.117,7.467-20.905c5.662-5.663,12.196-9.056,12.196-18.013
|
||||||
|
c0-15.549-15.709-18.187-34.122-18.187S108.925,89.292,108.925,89.292z"/>
|
||||||
|
</defs>
|
||||||
|
<clipPath id="SVGID_2_">
|
||||||
|
<use xlink:href="#SVGID_1_" overflow="visible"/>
|
||||||
|
</clipPath>
|
||||||
|
<g clip-path="url(#SVGID_2_)">
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="139.2588" y1="121.6145" x2="139.2588" y2="669.6423" gradientTransform="matrix(1 0 0 1 0.0801 -327.2031)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.9"/>
|
||||||
|
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.05"/>
|
||||||
|
</linearGradient>
|
||||||
|
<circle fill="url(#SVGID_3_)" cx="139.339" cy="68.425" r="274.014"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 46 KiB |
22
docs/web.md
@@ -5,3 +5,25 @@
|
|||||||
Then go to [http://localhost:8080/vtm-web-app](http://localhost:8080/vtm-web-app) in the web browser to see the map.
|
Then go to [http://localhost:8080/vtm-web-app](http://localhost:8080/vtm-web-app) in the web browser to see the map.
|
||||||
|
|
||||||
Hold right mouse button to change view direction.
|
Hold right mouse button to change view direction.
|
||||||
|
|
||||||
|
#### Debugging GWT app
|
||||||
|
|
||||||
|
Using GWT SuperDevMode is the recommended way for development. Debugging in IDE is often not possible.
|
||||||
|
|
||||||
|
For an introduction see [GWT](http://www.gwtproject.org/articles/superdevmode.html) and [libGDX](http://www.badlogicgames.com/wordpress/?p=3073) documentations.
|
||||||
|
|
||||||
|
- Serve the website as usual with `./gradlew :vtm-web-app:farmRun` command.
|
||||||
|
|
||||||
|
- The codeserver must be executed on another shell.
|
||||||
|
```bash
|
||||||
|
export _JAVA_OPTIONS="-Xmx1024m"
|
||||||
|
./gradlew :vtm-web-app:gwtSuperDev
|
||||||
|
```
|
||||||
|
|
||||||
|
- Open the link of codeserver: `The code server is ready at http://127.0.0.1:xxxx/`
|
||||||
|
|
||||||
|
- Drag the two bookmarklets to your browser's bookmark bar.
|
||||||
|
|
||||||
|
- Visit your [web page](http://localhost:8080/vtm-web-app) and click **Dev Mode On** to start development mode.
|
||||||
|
|
||||||
|
- Press **F12** to open the developer tools of your browser. Now you can debug your code under **Sources**.
|
||||||
@@ -1,16 +1,12 @@
|
|||||||
# Project-wide Gradle settings.
|
# Project-wide Gradle settings.
|
||||||
|
|
||||||
# IDE (e.g. Android Studio) users:
|
# IDE (e.g. Android Studio) users:
|
||||||
# Gradle settings configured through the IDE *will override*
|
# Gradle settings configured through the IDE *will override*
|
||||||
# any settings specified in this file.
|
# any settings specified in this file.
|
||||||
|
|
||||||
# For more details on how to configure your build environment visit
|
# For more details on how to configure your build environment visit
|
||||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||||
|
|
||||||
# Specifies the JVM arguments used for the daemon process.
|
# Specifies the JVM arguments used for the daemon process.
|
||||||
# The setting is particularly useful for tweaking memory settings.
|
# The setting is particularly useful for tweaking memory settings.
|
||||||
org.gradle.jvmargs=-Xmx1536m
|
org.gradle.jvmargs=-Xmx1536m
|
||||||
|
|
||||||
# When configured, Gradle will run in incubating parallel mode.
|
# When configured, Gradle will run in incubating parallel mode.
|
||||||
# This option should only be used with decoupled projects. More details, visit
|
# This option should only be used with decoupled projects. More details, visit
|
||||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
|
|||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,5 @@
|
|||||||
#Thu Oct 26 11:57:58 EEST 2017
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
|
|
||||||
|
|||||||
100
gradlew
vendored
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
##
|
||||||
@@ -6,42 +6,6 @@
|
|||||||
##
|
##
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS=""
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=`basename "$0"`
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
||||||
MAX_FD="maximum"
|
|
||||||
|
|
||||||
warn ( ) {
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
die ( ) {
|
|
||||||
echo
|
|
||||||
echo "$*"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
|
||||||
cygwin=false
|
|
||||||
msys=false
|
|
||||||
darwin=false
|
|
||||||
case "`uname`" in
|
|
||||||
CYGWIN* )
|
|
||||||
cygwin=true
|
|
||||||
;;
|
|
||||||
Darwin* )
|
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
# Attempt to set APP_HOME
|
||||||
# Resolve links: $0 may be a link
|
# Resolve links: $0 may be a link
|
||||||
PRG="$0"
|
PRG="$0"
|
||||||
@@ -60,6 +24,46 @@ cd "`dirname \"$PRG\"`/" >/dev/null
|
|||||||
APP_HOME="`pwd -P`"
|
APP_HOME="`pwd -P`"
|
||||||
cd "$SAVED" >/dev/null
|
cd "$SAVED" >/dev/null
|
||||||
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
|
APP_BASE_NAME=`basename "$0"`
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS=""
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD="maximum"
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN* )
|
||||||
|
cygwin=true
|
||||||
|
;;
|
||||||
|
Darwin* )
|
||||||
|
darwin=true
|
||||||
|
;;
|
||||||
|
MINGW* )
|
||||||
|
msys=true
|
||||||
|
;;
|
||||||
|
NONSTOP* )
|
||||||
|
nonstop=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
@@ -85,7 +89,7 @@ location of your Java installation."
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
MAX_FD_LIMIT=`ulimit -H -n`
|
||||||
if [ $? -eq 0 ] ; then
|
if [ $? -eq 0 ] ; then
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||||
@@ -150,11 +154,19 @@ if $cygwin ; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
# Escape application args
|
||||||
function splitJvmOpts() {
|
save () {
|
||||||
JVM_OPTS=("$@")
|
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||||
|
echo " "
|
||||||
}
|
}
|
||||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
APP_ARGS=$(save "$@")
|
||||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
|
||||||
|
|
||||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||||
|
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||||
|
|
||||||
|
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||||
|
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
|
|||||||
14
gradlew.bat
vendored
@@ -8,14 +8,14 @@
|
|||||||
@rem Set local scope for the variables with windows NT shell
|
@rem Set local scope for the variables with windows NT shell
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS=
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS=
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
@@ -46,10 +46,9 @@ echo location of your Java installation.
|
|||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
:init
|
||||||
@rem Get command-line arguments, handling Windowz variants
|
@rem Get command-line arguments, handling Windows variants
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
|
||||||
|
|
||||||
:win9xME_args
|
:win9xME_args
|
||||||
@rem Slurp the command line arguments.
|
@rem Slurp the command line arguments.
|
||||||
@@ -60,11 +59,6 @@ set _SKIP=2
|
|||||||
if "x%~1" == "x" goto execute
|
if "x%~1" == "x" goto execute
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
set CMD_LINE_ARGS=%*
|
||||||
goto execute
|
|
||||||
|
|
||||||
:4NT_args
|
|
||||||
@rem Get arguments from the 4NT Shell from JP Software
|
|
||||||
set CMD_LINE_ARGS=%$
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|||||||
@@ -6,5 +6,4 @@ dependencies {
|
|||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main.java.srcDirs = ['src']
|
main.java.srcDirs = ['src']
|
||||||
main.resources.srcDirs = ['src']
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,11 @@
|
|||||||
<xs:enumeration value="monospace" />
|
<xs:enumeration value="monospace" />
|
||||||
<xs:enumeration value="sans_serif" />
|
<xs:enumeration value="sans_serif" />
|
||||||
<xs:enumeration value="serif" />
|
<xs:enumeration value="serif" />
|
||||||
|
<xs:enumeration value="thin" />
|
||||||
|
<xs:enumeration value="light" />
|
||||||
|
<xs:enumeration value="medium" />
|
||||||
|
<xs:enumeration value="black" />
|
||||||
|
<xs:enumeration value="condensed" />
|
||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
|
|
||||||
@@ -85,6 +90,7 @@
|
|||||||
<xs:enumeration value="ele" />
|
<xs:enumeration value="ele" />
|
||||||
<xs:enumeration value="addr:housenumber" />
|
<xs:enumeration value="addr:housenumber" />
|
||||||
<xs:enumeration value="addr_housenumber" /> <!-- Mapzen -->
|
<xs:enumeration value="addr_housenumber" /> <!-- Mapzen -->
|
||||||
|
<xs:enumeration value="housenumber" /> <!-- OpenMapTiles -->
|
||||||
<xs:enumeration value="name" />
|
<xs:enumeration value="name" />
|
||||||
<xs:enumeration value="ref" />
|
<xs:enumeration value="ref" />
|
||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
@@ -229,6 +235,9 @@
|
|||||||
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional" />
|
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional" />
|
||||||
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional" />
|
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional" />
|
||||||
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional" />
|
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional" />
|
||||||
|
<xs:attribute name="repeat" default="false" type="xs:boolean" use="optional" />
|
||||||
|
<xs:attribute name="repeat-gap" default="200" type="xs:float" use="optional" />
|
||||||
|
<xs:attribute name="repeat-start" default="30" type="xs:float" use="optional" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:complexType name="extrusion">
|
<xs:complexType name="extrusion">
|
||||||
@@ -236,6 +245,9 @@
|
|||||||
<xs:attribute name="line-color" type="tns:color" use="optional" />
|
<xs:attribute name="line-color" type="tns:color" use="optional" />
|
||||||
<xs:attribute name="side-color" type="tns:color" use="required" />
|
<xs:attribute name="side-color" type="tns:color" use="required" />
|
||||||
<xs:attribute name="top-color" type="tns:color" use="required" />
|
<xs:attribute name="top-color" type="tns:color" use="required" />
|
||||||
|
<xs:attribute name="hsv-h" default="0" type="xs:double" use="optional" />
|
||||||
|
<xs:attribute name="hsv-s" default="1" type="xs:double" use="optional" />
|
||||||
|
<xs:attribute name="hsv-v" default="1" type="xs:double" use="optional" />
|
||||||
<!-- 12m default -->
|
<!-- 12m default -->
|
||||||
<xs:attribute name="default-height" default="12" type="xs:positiveInteger" use="optional" />
|
<xs:attribute name="default-height" default="12" type="xs:positiveInteger" use="optional" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
@@ -292,11 +304,24 @@
|
|||||||
<xs:attribute name="id" type="xs:string" use="required" />
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- tag-transform element -->
|
||||||
|
<xs:complexType name="tag-transform">
|
||||||
|
<xs:attribute name="k" type="xs:string" use="required" />
|
||||||
|
<xs:attribute name="v" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="k-lib" type="xs:string" use="required" />
|
||||||
|
<xs:attribute name="v-lib" type="xs:string" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
<!-- rendertheme element -->
|
<!-- rendertheme element -->
|
||||||
<xs:complexType name="rendertheme">
|
<xs:complexType name="rendertheme">
|
||||||
<xs:sequence maxOccurs="1" minOccurs="0">
|
<xs:sequence maxOccurs="1" minOccurs="0">
|
||||||
<xs:element name="stylemenu" maxOccurs="1" minOccurs="0" type="tns:stylemenu" />
|
<xs:element name="stylemenu" maxOccurs="1" minOccurs="0" type="tns:stylemenu" />
|
||||||
|
|
||||||
|
<!-- tag definitions -->
|
||||||
|
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||||
|
<xs:element name="tag-transform" type="tns:tag-transform" />
|
||||||
|
</xs:choice>
|
||||||
|
|
||||||
<!-- style definitions -->
|
<!-- style definitions -->
|
||||||
<xs:sequence maxOccurs="256" minOccurs="0">
|
<xs:sequence maxOccurs="256" minOccurs="0">
|
||||||
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||||
|
|||||||
@@ -7,12 +7,15 @@ include ':vtm-app'
|
|||||||
include ':vtm-desktop'
|
include ':vtm-desktop'
|
||||||
include ':vtm-extras'
|
include ':vtm-extras'
|
||||||
include ':vtm-gdx'
|
include ':vtm-gdx'
|
||||||
|
include ':vtm-gdx-poi3d'
|
||||||
include ':vtm-http'
|
include ':vtm-http'
|
||||||
include ':vtm-ios'
|
include ':vtm-ios'
|
||||||
include ':vtm-ios-example'
|
include ':vtm-ios-example'
|
||||||
include ':vtm-jeo'
|
include ':vtm-jeo'
|
||||||
include ':vtm-json'
|
include ':vtm-json'
|
||||||
include ':vtm-jts'
|
include ':vtm-jts'
|
||||||
|
include ':vtm-models'
|
||||||
|
include ':vtm-mvt'
|
||||||
include ':vtm-playground'
|
include ':vtm-playground'
|
||||||
include ':vtm-tests'
|
include ':vtm-tests'
|
||||||
include ':vtm-theme-comparator'
|
include ':vtm-theme-comparator'
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@drawable/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name">
|
android:label="@string/app_name"
|
||||||
|
android:usesCleartextTraffic="true">
|
||||||
<activity
|
<activity
|
||||||
android:name=".Samples"
|
android:name=".Samples"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize">
|
android:configChanges="keyboardHidden|orientation|screenSize">
|
||||||
@@ -32,16 +32,22 @@
|
|||||||
android:name=".AtlasThemeActivity"
|
android:name=".AtlasThemeActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".BitmapTileMapActivity"
|
android:name=".BitmapTileActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ClusterMarkerOverlayActivity"
|
android:name=".ClusterMarkerOverlayActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".GdxMapActivity"
|
android:name=".GettingStarted"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".JeoIndoorMapActivity"
|
android:name=".GdxActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".GdxPoi3DActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".JeoIndoorActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".LayerGroupActivity"
|
android:name=".LayerGroupActivity"
|
||||||
@@ -53,40 +59,58 @@
|
|||||||
android:name=".LocationActivity"
|
android:name=".LocationActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MapsforgeMapActivity"
|
android:name=".LocationTextureActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MapsforgeMapActivity$MapFilePicker"
|
android:name=".MapEventLayer2Activity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MapsforgeMapActivity$ThemeFilePicker"
|
android:name=".MapilionMvtActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MapsforgePolyLabelActivity"
|
android:name=".MapsforgeActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".MapsforgeActivity$MapFilePicker"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".MapsforgeActivity$ThemeFilePicker"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".MapsforgeS3DBActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MapsforgeStyleActivity"
|
android:name=".MapsforgeStyleActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MapzenGeojsonMapActivity"
|
android:name=".MapzenGeojsonActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MapzenMvtMapActivity"
|
android:name=".MapzenMvtActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MarkerOverlayActivity"
|
android:name=".MarkerOverlayActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MultiMapActivity"
|
android:name=".MBTilesBitmapTileActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".NewGesturesActivity"
|
android:name=".MultiMapViewActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".OpenMapTilesGeojsonMapActivity"
|
android:name=".NextzenGeojsonActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".OSciMapS3DBMapActivity"
|
android:name=".NextzenMvtActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".OpenMapTilesMvtActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".OSciMapS3DBActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".OverpassActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".PathOverlayActivity"
|
android:name=".PathOverlayActivity"
|
||||||
@@ -106,6 +130,9 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".RotateMarkerOverlayActivity"
|
android:name=".RotateMarkerOverlayActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
|
<activity
|
||||||
|
android:name=".ShadowActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".SimpleMapActivity"
|
android:name=".SimpleMapActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
@@ -113,7 +140,7 @@
|
|||||||
android:name=".ThemeStylerActivity"
|
android:name=".ThemeStylerActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".VectorLayerMapActivity"
|
android:name=".VectorLayerActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize" />
|
android:configChanges="keyboardHidden|orientation|screenSize" />
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
|||||||
@@ -1,26 +1,32 @@
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
repositories {
|
/*
|
||||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
configurations.all {
|
||||||
|
// Check latest snapshot on every build
|
||||||
|
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':vtm-android')
|
implementation project(':vtm-android')
|
||||||
|
implementation project(':vtm-extras')
|
||||||
implementation project(':vtm-http')
|
implementation project(':vtm-http')
|
||||||
implementation project(':vtm-jeo')
|
implementation project(':vtm-jeo')
|
||||||
implementation project(':vtm-json')
|
implementation project(':vtm-json')
|
||||||
implementation project(':vtm-jts')
|
implementation project(':vtm-jts')
|
||||||
|
implementation project(':vtm-mvt')
|
||||||
implementation project(':vtm-themes')
|
implementation project(':vtm-themes')
|
||||||
implementation "org.slf4j:slf4j-android:$slf4jVersion"
|
implementation "org.slf4j:slf4j-android:$slf4jVersion"
|
||||||
|
|
||||||
implementation project(':vtm-android-gdx')
|
implementation project(':vtm-android-gdx')
|
||||||
implementation project(':vtm-gdx')
|
implementation project(':vtm-gdx')
|
||||||
implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
|
implementation project(':vtm-gdx-poi3d')
|
||||||
|
|
||||||
implementation 'org.mapsforge:mapsforge-poi-android:master-SNAPSHOT'
|
implementation 'org.mapsforge:mapsforge-poi-android:master-SNAPSHOT'
|
||||||
implementation 'org.mapsforge:spatialite-android:master-SNAPSHOT:natives-armeabi'
|
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-armeabi-v7a'
|
||||||
implementation 'org.mapsforge:spatialite-android:master-SNAPSHOT:natives-armeabi-v7a'
|
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-arm64-v8a'
|
||||||
implementation 'org.mapsforge:spatialite-android:master-SNAPSHOT:natives-x86'
|
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-x86'
|
||||||
|
implementation 'org.mapsforge:sqlite-android:master-SNAPSHOT:natives-x86_64'
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@@ -43,7 +49,6 @@ android {
|
|||||||
main {
|
main {
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
java.srcDirs = ['src']
|
java.srcDirs = ['src']
|
||||||
resources.srcDirs = ['src']
|
|
||||||
res.srcDirs = ['res']
|
res.srcDirs = ['res']
|
||||||
assets.srcDirs = ['assets']
|
assets.srcDirs = ['assets']
|
||||||
file("${rootDir}/vtm-android/natives").eachDir() { dir ->
|
file("${rootDir}/vtm-android/natives").eachDir() { dir ->
|
||||||
@@ -64,6 +69,14 @@ android {
|
|||||||
exclude 'META-INF/LICENSE'
|
exclude 'META-INF/LICENSE'
|
||||||
exclude 'META-INF/NOTICE'
|
exclude 'META-INF/NOTICE'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*buildTypes {
|
||||||
|
all {
|
||||||
|
minifyEnabled true
|
||||||
|
useProguard false
|
||||||
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
|
}
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
task run(dependsOn: 'installDebug') {
|
task run(dependsOn: 'installDebug') {
|
||||||
|
|||||||
10
vtm-android-example/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
-keep class com.** { *; }
|
||||||
|
-dontwarn com.**
|
||||||
|
-keep class jsqlite.** { *; }
|
||||||
|
-dontwarn jsqlite.**
|
||||||
|
-keep class okhttp3.** { *; }
|
||||||
|
-dontwarn okhttp3.**
|
||||||
|
-keep class okio.** { *; }
|
||||||
|
-dontwarn okio.**
|
||||||
|
-keep class org.** { *; }
|
||||||
|
-dontwarn org.**
|
||||||
|
Before Width: | Height: | Size: 41 KiB |
58
vtm-android-example/res/layout/activity_map_poi.xml
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<org.oscim.android.MapView
|
||||||
|
android:id="@+id/mapView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ToggleButton
|
||||||
|
android:id="@+id/toggleControls"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="top|start"
|
||||||
|
android:onClick="onToggleControls" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/controls"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="#bb000000"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<ListView
|
||||||
|
android:id="@+id/search_list"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/add_item"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/add" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/start_search"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/search" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
36
vtm-android-example/res/layout/activity_shadow.xml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<org.oscim.android.MapView
|
||||||
|
android:id="@+id/mapView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="#cc000000"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<SeekBar
|
||||||
|
android:id="@+id/seekBarShadow"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:max="2000"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:progress="400" />
|
||||||
|
|
||||||
|
<ToggleButton
|
||||||
|
android:id="@+id/toggleCurrentSun"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_vertical|center_horizontal"
|
||||||
|
android:onClick="onToggleCurrentSun"
|
||||||
|
android:textOn="@string/now" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
33
vtm-android-example/res/layout/item_poi_search.xml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/key"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:hint="@string/search_key"
|
||||||
|
android:inputType="text"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/value"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:hint="@string/search_value"
|
||||||
|
android:inputType="text"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/remove"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/remove" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
BIN
vtm-android-example/res/mipmap-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
vtm-android-example/res/mipmap-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
vtm-android-example/res/mipmap-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
vtm-android-example/res/mipmap-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
vtm-android-example/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
19
vtm-android-example/res/raw/arrow.svg
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="249.667" height="254.667" viewBox="0 0 249.67 254.67" enable-background="new 0 0 249.67 254.67" xml:space="preserve">
|
||||||
|
<linearGradient id="SVGID_Fill1_" gradientUnits="objectBoundingBox" x1="-0.0161654" y1="0.500001" x2="1.01616" y2="0.500001">
|
||||||
|
<stop offset="0.0344828" stop-color="#FF0000" stop-opacity="1"/>
|
||||||
|
<stop offset="0.5" stop-color="#FF0000" stop-opacity="1"/>
|
||||||
|
<stop offset="1" stop-color="#F8E6E6" stop-opacity="1"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_Fill1_)" stroke-width="5" stroke-linejoin="round" stroke="#000000" stroke-opacity="1" d="M 47.5002,250.834L 124.833,2.50006L 202.167,252.167L 124.167,199.167L 47.5002,250.834 Z "/>
|
||||||
|
<linearGradient id="SVGID_Fill2_" gradientUnits="objectBoundingBox" x1="0.0255055" y1="0.518124" x2="0.986547" y2="0.518124" gradientTransform="rotate(42.130627 0.025506 0.518124)">
|
||||||
|
<stop offset="0.301724" stop-color="#ECECEC" stop-opacity="0.345098"/>
|
||||||
|
<stop offset="0.62931" stop-color="#1C1C1C" stop-opacity="0.776471"/>
|
||||||
|
<stop offset="0.689655" stop-color="#000000" stop-opacity="0.423529"/>
|
||||||
|
<stop offset="1" stop-color="#000000" stop-opacity="0.286275"/>
|
||||||
|
</linearGradient>
|
||||||
|
<filter id="Filter_GaussianBlur1_" filterUnits="userSpaceOnUse">
|
||||||
|
<feGaussianBlur stdDeviation="1.88976"/>
|
||||||
|
</filter>
|
||||||
|
<path fill="url(#SVGID_Fill2_)" stroke-width="0.2" stroke-linejoin="round" filter="url(#Filter_GaussianBlur1_)" d="M 56.8333,241.5L 124.833,31.0001L 123.5,195.167L 56.8333,241.5 Z "/>
|
||||||
|
</svg>
|
||||||
@@ -7,10 +7,6 @@
|
|||||||
<string name="theme_tubes">Tubes</string>
|
<string name="theme_tubes">Tubes</string>
|
||||||
<string name="theme_newtron">NewTron</string>
|
<string name="theme_newtron">NewTron</string>
|
||||||
<string name="theme_external">External theme</string>
|
<string name="theme_external">External theme</string>
|
||||||
<string name="ok">OK</string>
|
|
||||||
<string name="cancel">Cancel</string>
|
|
||||||
<string name="error">Error</string>
|
|
||||||
<string name="file_invalid">The selected file is invalid.</string>
|
|
||||||
<string name="styler_mode_line">Line</string>
|
<string name="styler_mode_line">Line</string>
|
||||||
<string name="styler_mode_area">Area</string>
|
<string name="styler_mode_area">Area</string>
|
||||||
<string name="styler_mode_outline">Outline</string>
|
<string name="styler_mode_outline">Outline</string>
|
||||||
@@ -19,5 +15,18 @@
|
|||||||
<string name="style_2">Hide nature</string>
|
<string name="style_2">Hide nature</string>
|
||||||
<string name="menu_gridlayer">Grid</string>
|
<string name="menu_gridlayer">Grid</string>
|
||||||
<string name="dialog_reverse_geocoding_title">Reverse Geocoding</string>
|
<string name="dialog_reverse_geocoding_title">Reverse Geocoding</string>
|
||||||
|
<string name="add">Add</string>
|
||||||
|
<string name="cancel">Cancel</string>
|
||||||
|
<string name="error">Error</string>
|
||||||
|
<string name="file_invalid">The selected file is invalid.</string>
|
||||||
|
<string name="ok">OK</string>
|
||||||
|
<string name="remove">Remove</string>
|
||||||
|
<string name="search">Search</string>
|
||||||
|
<string name="search_key">\'*\' or OSM key</string>
|
||||||
|
<string name="search_value">void or value</string>
|
||||||
|
<string name="now">Now</string>
|
||||||
|
<string name="warning">Warning</string>
|
||||||
|
<string name="startup_message_mbtiles">To run this sample activity, you need any MBTiles with filename test.mbtiles installed on storage.\n\nadb push file.mbtiles /sdcard/test.mbtiles</string>
|
||||||
|
<string name="exit">Exit</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
@@ -18,8 +18,6 @@ package org.oscim.android.filepicker;
|
|||||||
|
|
||||||
import org.oscim.theme.ExternalRenderTheme;
|
import org.oscim.theme.ExternalRenderTheme;
|
||||||
import org.oscim.theme.ThemeFile;
|
import org.oscim.theme.ThemeFile;
|
||||||
import org.oscim.theme.ThemeUtils;
|
|
||||||
import org.oscim.theme.XmlMapsforgeThemeBuilder;
|
|
||||||
import org.oscim.theme.XmlThemeBuilder;
|
import org.oscim.theme.XmlThemeBuilder;
|
||||||
import org.oscim.tiling.TileSource.OpenResult;
|
import org.oscim.tiling.TileSource.OpenResult;
|
||||||
import org.xml.sax.InputSource;
|
import org.xml.sax.InputSource;
|
||||||
@@ -41,11 +39,7 @@ public final class ValidRenderTheme implements ValidFileFilter {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
ThemeFile theme = new ExternalRenderTheme(file.getAbsolutePath());
|
ThemeFile theme = new ExternalRenderTheme(file.getAbsolutePath());
|
||||||
DefaultHandler renderThemeHandler;
|
DefaultHandler renderThemeHandler = new XmlThemeBuilder(theme);
|
||||||
if (ThemeUtils.isMapsforgeTheme(theme))
|
|
||||||
renderThemeHandler = new XmlMapsforgeThemeBuilder(theme);
|
|
||||||
else
|
|
||||||
renderThemeHandler = new XmlThemeBuilder(theme);
|
|
||||||
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
|
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
|
||||||
xmlReader.setContentHandler(renderThemeHandler);
|
xmlReader.setContentHandler(renderThemeHandler);
|
||||||
xmlReader.parse(new InputSource(theme.getRenderThemeAsStream()));
|
xmlReader.parse(new InputSource(theme.getRenderThemeAsStream()));
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
@@ -24,15 +24,12 @@ import org.oscim.layers.marker.ItemizedLayer;
|
|||||||
import org.oscim.layers.marker.MarkerItem;
|
import org.oscim.layers.marker.MarkerItem;
|
||||||
import org.oscim.layers.marker.MarkerSymbol;
|
import org.oscim.layers.marker.MarkerSymbol;
|
||||||
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
|
||||||
import org.oscim.renderer.atlas.TextureAtlas;
|
import org.oscim.renderer.atlas.TextureAtlas;
|
||||||
import org.oscim.renderer.atlas.TextureRegion;
|
import org.oscim.renderer.atlas.TextureRegion;
|
||||||
import org.oscim.theme.VtmThemes;
|
|
||||||
import org.oscim.tiling.TileSource;
|
import org.oscim.tiling.TileSource;
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||||
import org.oscim.utils.TextureAtlasUtils;
|
import org.oscim.utils.TextureAtlasUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -48,13 +45,10 @@ public class AtlasMarkerOverlayActivity extends MarkerOverlayActivity {
|
|||||||
// Map events receiver
|
// Map events receiver
|
||||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||||
|
|
||||||
TileSource tileSource = OSciMap4TileSource.builder()
|
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
.build();
|
.build();
|
||||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
|
||||||
mMap.setTheme(VtmThemes.DEFAULT);
|
|
||||||
|
|
||||||
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
||||||
Bitmap bitmapFocus = drawableToBitmap(getResources().getDrawable(R.drawable.marker_focus));
|
Bitmap bitmapFocus = drawableToBitmap(getResources().getDrawable(R.drawable.marker_focus));
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
@@ -30,15 +30,12 @@ import org.oscim.layers.marker.ItemizedLayer;
|
|||||||
import org.oscim.layers.marker.MarkerItem;
|
import org.oscim.layers.marker.MarkerItem;
|
||||||
import org.oscim.layers.marker.MarkerSymbol;
|
import org.oscim.layers.marker.MarkerSymbol;
|
||||||
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
|
||||||
import org.oscim.renderer.atlas.TextureAtlas;
|
import org.oscim.renderer.atlas.TextureAtlas;
|
||||||
import org.oscim.renderer.atlas.TextureRegion;
|
import org.oscim.renderer.atlas.TextureRegion;
|
||||||
import org.oscim.theme.VtmThemes;
|
|
||||||
import org.oscim.tiling.TileSource;
|
import org.oscim.tiling.TileSource;
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||||
import org.oscim.utils.TextureAtlasUtils;
|
import org.oscim.utils.TextureAtlasUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -52,25 +49,21 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
|||||||
// Map events receiver
|
// Map events receiver
|
||||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||||
|
|
||||||
TileSource tileSource = OSciMap4TileSource.builder()
|
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
.build();
|
.build();
|
||||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
|
||||||
mMap.setTheme(VtmThemes.DEFAULT);
|
|
||||||
|
|
||||||
// Create Atlas from Bitmaps
|
// Create Atlas from Bitmaps
|
||||||
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
java.util.Map<Object, Bitmap> inputMap = new LinkedHashMap<>();
|
||||||
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
|
java.util.Map<Object, TextureRegion> regionsMap = new LinkedHashMap<>();
|
||||||
List<TextureAtlas> atlasList = new ArrayList<>();
|
List<TextureAtlas> atlasList = new ArrayList<>();
|
||||||
|
|
||||||
float scale = getResources().getDisplayMetrics().density;
|
|
||||||
Canvas canvas = CanvasAdapter.newCanvas();
|
Canvas canvas = CanvasAdapter.newCanvas();
|
||||||
Paint paint = CanvasAdapter.newPaint();
|
Paint paint = CanvasAdapter.newPaint();
|
||||||
paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL);
|
paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL);
|
||||||
paint.setTextSize(12 * scale);
|
paint.setTextSize(12 * CanvasAdapter.getScale());
|
||||||
paint.setStrokeWidth(2 * scale);
|
paint.setStrokeWidth(2 * CanvasAdapter.getScale());
|
||||||
paint.setColor(Color.BLACK);
|
paint.setColor(Color.BLACK);
|
||||||
List<MarkerItem> pts = new ArrayList<>();
|
List<MarkerItem> pts = new ArrayList<>();
|
||||||
for (double lat = -90; lat <= 90; lat += 10) {
|
for (double lat = -90; lat <= 90; lat += 10) {
|
||||||
@@ -78,12 +71,12 @@ public class AtlasMultiTextureActivity extends MarkerOverlayActivity {
|
|||||||
String title = lat + "/" + lon;
|
String title = lat + "/" + lon;
|
||||||
pts.add(new MarkerItem(title, "", new GeoPoint(lat, lon)));
|
pts.add(new MarkerItem(title, "", new GeoPoint(lat, lon)));
|
||||||
|
|
||||||
Bitmap bmp = CanvasAdapter.newBitmap((int) (40 * scale), (int) (40 * scale), 0);
|
Bitmap bmp = CanvasAdapter.newBitmap((int) (40 * CanvasAdapter.getScale()), (int) (40 * CanvasAdapter.getScale()), 0);
|
||||||
canvas.setBitmap(bmp);
|
canvas.setBitmap(bmp);
|
||||||
canvas.fillColor(Color.GREEN);
|
canvas.fillColor(Color.GREEN);
|
||||||
|
|
||||||
canvas.drawText(Double.toString(lat), 3 * scale, 17 * scale, paint);
|
canvas.drawText(Double.toString(lat), 3 * CanvasAdapter.getScale(), 17 * CanvasAdapter.getScale(), paint);
|
||||||
canvas.drawText(Double.toString(lon), 3 * scale, 35 * scale, paint);
|
canvas.drawText(Double.toString(lon), 3 * CanvasAdapter.getScale(), 35 * CanvasAdapter.getScale(), paint);
|
||||||
inputMap.put(title, bmp);
|
inputMap.put(title, bmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2017-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -27,4 +27,11 @@ public class AtlasThemeActivity extends SimpleMapActivity {
|
|||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
|
||||||
|
Parameters.TEXTURE_ATLAS = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
public class BaseMapActivity extends MapActivity {
|
public class BaseMapActivity extends MapActivity {
|
||||||
static final Logger log = LoggerFactory.getLogger(BaseMapActivity.class);
|
static final Logger log = LoggerFactory.getLogger(BaseMapActivity.class);
|
||||||
|
|
||||||
final static boolean USE_CACHE = true;
|
static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
VectorTileLayer mBaseLayer;
|
VectorTileLayer mBaseLayer;
|
||||||
TileSource mTileSource;
|
TileSource mTileSource;
|
||||||
@@ -116,7 +116,7 @@ public class BaseMapActivity extends MapActivity {
|
|||||||
} else {
|
} else {
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
if (mGridLayer == null)
|
if (mGridLayer == null)
|
||||||
mGridLayer = new TileGridLayer(mMap, getResources().getDisplayMetrics().density);
|
mGridLayer = new TileGridLayer(mMap);
|
||||||
|
|
||||||
mMap.layers().add(mGridLayer);
|
mMap.layers().add(mGridLayer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2017-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -27,20 +27,20 @@ import org.oscim.tiling.source.bitmap.DefaultSources;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class BitmapTileMapActivity extends MapActivity {
|
public class BitmapTileActivity extends MapActivity {
|
||||||
|
|
||||||
static final Logger log = LoggerFactory.getLogger(BitmapTileMapActivity.class);
|
static final Logger log = LoggerFactory.getLogger(BitmapTileActivity.class);
|
||||||
|
|
||||||
private final static boolean USE_CACHE = true;
|
private static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
private final BitmapTileSource mTileSource;
|
private final BitmapTileSource mTileSource;
|
||||||
protected BitmapTileLayer mBitmapLayer;
|
protected BitmapTileLayer mBitmapLayer;
|
||||||
|
|
||||||
public BitmapTileMapActivity() {
|
public BitmapTileActivity() {
|
||||||
this(DefaultSources.OPENSTREETMAP.build());
|
this(DefaultSources.OPENSTREETMAP.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public BitmapTileMapActivity(BitmapTileSource tileSource) {
|
public BitmapTileActivity(BitmapTileSource tileSource) {
|
||||||
super(R.layout.activity_map);
|
super(R.layout.activity_map);
|
||||||
mTileSource = tileSource;
|
mTileSource = tileSource;
|
||||||
}
|
}
|
||||||
@@ -103,6 +103,7 @@ public class BitmapTileMapActivity extends MapActivity {
|
|||||||
|
|
||||||
p.setTilt((float) (Math.random() * 60));
|
p.setTilt((float) (Math.random() * 60));
|
||||||
p.setBearing((float) (Math.random() * 360));
|
p.setBearing((float) (Math.random() * 360));
|
||||||
|
p.setRoll((float) (Math.random() * 360));
|
||||||
//mMapView.map().setMapPosition(p);
|
//mMapView.map().setMapPosition(p);
|
||||||
|
|
||||||
mMapView.map().animator().animateTo(time, p);
|
mMapView.map().animator().animateTo(time, p);
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2017 nebular
|
* Copyright 2017 nebular
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
@@ -25,13 +25,10 @@ import org.oscim.layers.marker.MarkerLayer;
|
|||||||
import org.oscim.layers.marker.MarkerRenderer;
|
import org.oscim.layers.marker.MarkerRenderer;
|
||||||
import org.oscim.layers.marker.MarkerRendererFactory;
|
import org.oscim.layers.marker.MarkerRendererFactory;
|
||||||
import org.oscim.layers.marker.MarkerSymbol;
|
import org.oscim.layers.marker.MarkerSymbol;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
|
||||||
import org.oscim.theme.VtmThemes;
|
|
||||||
import org.oscim.tiling.TileSource;
|
import org.oscim.tiling.TileSource;
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -48,13 +45,10 @@ public class ClusterMarkerOverlayActivity extends MarkerOverlayActivity {
|
|||||||
// Map events receiver
|
// Map events receiver
|
||||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||||
|
|
||||||
TileSource tileSource = OSciMap4TileSource.builder()
|
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
.build();
|
.build();
|
||||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
|
||||||
mMap.setTheme(VtmThemes.DEFAULT);
|
|
||||||
|
|
||||||
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
||||||
final MarkerSymbol symbol;
|
final MarkerSymbol symbol;
|
||||||
@@ -84,6 +78,7 @@ public class ClusterMarkerOverlayActivity extends MarkerOverlayActivity {
|
|||||||
|
|
||||||
// Create some markers spaced STEP degrees
|
// Create some markers spaced STEP degrees
|
||||||
List<MarkerItem> pts = new ArrayList<>();
|
List<MarkerItem> pts = new ArrayList<>();
|
||||||
|
mMap.setMapPosition(53.08, 8.83, 1 << 15);
|
||||||
GeoPoint center = mMap.getMapPosition().getGeoPoint();
|
GeoPoint center = mMap.getMapPosition().getGeoPoint();
|
||||||
for (int x = -COUNT; x < COUNT; x++) {
|
for (int x = -COUNT; x < COUNT; x++) {
|
||||||
for (int y = -COUNT; y < COUNT; y++) {
|
for (int y = -COUNT; y < COUNT; y++) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
|
* Copyright 2018-2019 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -22,20 +23,44 @@ import android.util.DisplayMetrics;
|
|||||||
|
|
||||||
import com.badlogic.gdx.backends.android.AndroidApplication;
|
import com.badlogic.gdx.backends.android.AndroidApplication;
|
||||||
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
|
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
|
||||||
|
import com.badlogic.gdx.graphics.glutils.GLVersion;
|
||||||
import com.badlogic.gdx.utils.SharedLibraryLoader;
|
import com.badlogic.gdx.utils.SharedLibraryLoader;
|
||||||
|
|
||||||
|
import org.oscim.android.MapPreferences;
|
||||||
import org.oscim.android.canvas.AndroidGraphics;
|
import org.oscim.android.canvas.AndroidGraphics;
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
import org.oscim.backend.DateTime;
|
||||||
|
import org.oscim.backend.DateTimeAdapter;
|
||||||
import org.oscim.backend.GLAdapter;
|
import org.oscim.backend.GLAdapter;
|
||||||
import org.oscim.core.Tile;
|
import org.oscim.core.Tile;
|
||||||
import org.oscim.gdx.AndroidGL;
|
import org.oscim.gdx.AndroidGL;
|
||||||
|
import org.oscim.gdx.AndroidGL30;
|
||||||
import org.oscim.gdx.GdxAssets;
|
import org.oscim.gdx.GdxAssets;
|
||||||
import org.oscim.gdx.GdxMap;
|
import org.oscim.gdx.GdxMap;
|
||||||
|
import org.oscim.gdx.poi3d.Poi3DLayer;
|
||||||
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
|
import org.oscim.layers.tile.buildings.S3DBLayer;
|
||||||
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
|
import org.oscim.theme.VtmThemes;
|
||||||
import org.oscim.tiling.TileSource;
|
import org.oscim.tiling.TileSource;
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
||||||
|
|
||||||
public class GdxMapActivity extends AndroidApplication {
|
public class GdxActivity extends AndroidApplication {
|
||||||
|
MapPreferences mPrefs;
|
||||||
|
|
||||||
|
private boolean mPoi3d;
|
||||||
|
private boolean mS3db;
|
||||||
|
|
||||||
|
public GdxActivity() {
|
||||||
|
this(false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GdxActivity(boolean s3db, boolean poi3d) {
|
||||||
|
mS3db = s3db;
|
||||||
|
mPoi3d = poi3d;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -43,7 +68,7 @@ public class GdxMapActivity extends AndroidApplication {
|
|||||||
|
|
||||||
AndroidGraphics.init();
|
AndroidGraphics.init();
|
||||||
GdxAssets.init("");
|
GdxAssets.init("");
|
||||||
GLAdapter.init(new AndroidGL());
|
DateTimeAdapter.init(new DateTime());
|
||||||
|
|
||||||
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
||||||
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
||||||
@@ -51,20 +76,48 @@ public class GdxMapActivity extends AndroidApplication {
|
|||||||
|
|
||||||
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
|
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
|
||||||
cfg.stencil = 8;
|
cfg.stencil = 8;
|
||||||
cfg.numSamples = 2;
|
//cfg.numSamples = 2;
|
||||||
|
|
||||||
new SharedLibraryLoader().load("vtm-jni");
|
new SharedLibraryLoader().load("vtm-jni");
|
||||||
|
|
||||||
initialize(new GdxMapAndroid(), cfg);
|
initialize(new GdxMapAndroid(), cfg);
|
||||||
|
mPrefs = new MapPreferences(GdxActivity.class.getName(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
class GdxMapAndroid extends GdxMap {
|
class GdxMapAndroid extends GdxMap {
|
||||||
|
@Override
|
||||||
|
protected void initGLAdapter(GLVersion version) {
|
||||||
|
if (version.getMajorVersion() >= 3)
|
||||||
|
GLAdapter.init(new AndroidGL30());
|
||||||
|
else
|
||||||
|
GLAdapter.init(new AndroidGL());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createLayers() {
|
public void createLayers() {
|
||||||
TileSource ts = OSciMap4TileSource.builder()
|
TileSource tileSource = OSciMap4TileSource.builder()
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
.build();
|
.build();
|
||||||
initDefaultLayers(ts, true, true, true, getResources().getDisplayMetrics().density);
|
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||||
|
mMap.setTheme(VtmThemes.DEFAULT);
|
||||||
|
|
||||||
|
if (mS3db)
|
||||||
|
mMap.layers().add(new S3DBLayer(mMap, l));
|
||||||
|
else
|
||||||
|
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||||
|
|
||||||
|
if (mPoi3d)
|
||||||
|
mMap.layers().add(new Poi3DLayer(mMap, l));
|
||||||
|
|
||||||
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
mPrefs.load(getMap());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pause() {
|
||||||
|
mPrefs.save(getMap());
|
||||||
|
|
||||||
|
super.pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2018 Gustl22
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -12,11 +12,11 @@
|
|||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package org.oscim.gdx;
|
package org.oscim.android.test;
|
||||||
|
|
||||||
public class GdxMapImpl extends GdxMap {
|
public class GdxPoi3DActivity extends GdxActivity {
|
||||||
@Override
|
|
||||||
public void dispose() {
|
public GdxPoi3DActivity() {
|
||||||
System.exit(0);
|
super(false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018-2019 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Environment;
|
||||||
|
|
||||||
|
import org.oscim.android.MapView;
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
|
import org.oscim.renderer.GLViewport;
|
||||||
|
import org.oscim.scalebar.DefaultMapScaleBar;
|
||||||
|
import org.oscim.scalebar.MapScaleBar;
|
||||||
|
import org.oscim.scalebar.MapScaleBarLayer;
|
||||||
|
import org.oscim.theme.VtmThemes;
|
||||||
|
import org.oscim.tiling.source.mapfile.MapFileTileSource;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A very basic Android app example.
|
||||||
|
* <p>
|
||||||
|
* You'll need a map with filename berlin.map from download.mapsforge.org in device storage.
|
||||||
|
*/
|
||||||
|
public class GettingStarted extends Activity {
|
||||||
|
|
||||||
|
// Name of the map file in device storage
|
||||||
|
private static final String MAP_FILE = "berlin.map";
|
||||||
|
|
||||||
|
private MapView mapView;
|
||||||
|
private MapScaleBar mapScaleBar;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
// Map view
|
||||||
|
mapView = new MapView(this);
|
||||||
|
setContentView(mapView);
|
||||||
|
|
||||||
|
// Tile source
|
||||||
|
MapFileTileSource tileSource = new MapFileTileSource();
|
||||||
|
String mapPath = new File(Environment.getExternalStorageDirectory(), MAP_FILE).getAbsolutePath();
|
||||||
|
if (tileSource.setMapFile(mapPath)) {
|
||||||
|
// Vector layer
|
||||||
|
VectorTileLayer tileLayer = mapView.map().setBaseMap(tileSource);
|
||||||
|
|
||||||
|
// Building layer
|
||||||
|
mapView.map().layers().add(new BuildingLayer(mapView.map(), tileLayer));
|
||||||
|
|
||||||
|
// Label layer
|
||||||
|
mapView.map().layers().add(new LabelLayer(mapView.map(), tileLayer));
|
||||||
|
|
||||||
|
// Render theme
|
||||||
|
mapView.map().setTheme(VtmThemes.DEFAULT);
|
||||||
|
|
||||||
|
// Scale bar
|
||||||
|
mapScaleBar = new DefaultMapScaleBar(mapView.map());
|
||||||
|
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mapView.map(), mapScaleBar);
|
||||||
|
mapScaleBarLayer.getRenderer().setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||||
|
mapScaleBarLayer.getRenderer().setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||||
|
mapView.map().layers().add(mapScaleBarLayer);
|
||||||
|
|
||||||
|
// Note: this map position is specific to Berlin area
|
||||||
|
mapView.map().setMapPosition(52.517037, 13.38886, 1 << 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
mapView.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
mapView.onPause();
|
||||||
|
super.onPause();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
if (mapScaleBar != null)
|
||||||
|
mapScaleBar.destroy();
|
||||||
|
mapView.onDestroy();
|
||||||
|
super.onDestroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -25,6 +25,7 @@ import android.widget.ToggleButton;
|
|||||||
|
|
||||||
import org.jeo.map.Style;
|
import org.jeo.map.Style;
|
||||||
import org.jeo.vector.VectorDataset;
|
import org.jeo.vector.VectorDataset;
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.backend.canvas.Color;
|
import org.oscim.backend.canvas.Color;
|
||||||
import org.oscim.layers.OSMIndoorLayer;
|
import org.oscim.layers.OSMIndoorLayer;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
@@ -42,15 +43,15 @@ import java.net.URL;
|
|||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class JeoIndoorMapActivity extends BaseMapActivity {
|
public class JeoIndoorActivity extends BaseMapActivity {
|
||||||
public static final Logger log = LoggerFactory.getLogger(JeoIndoorMapActivity.class);
|
public static final Logger log = LoggerFactory.getLogger(JeoIndoorActivity.class);
|
||||||
|
|
||||||
// from http://overpass-turbo.eu/s/2vp
|
// from http://overpass-turbo.eu/s/2vp
|
||||||
String PATH = "https://gist.githubusercontent.com/anonymous/09062103a66844a96048f25626078c8d/raw/1d3af6a5a55e9ea4adc9551fa633a051a44a5a9c/overpass.geojson";
|
String PATH = "https://gist.githubusercontent.com/anonymous/09062103a66844a96048f25626078c8d/raw/1d3af6a5a55e9ea4adc9551fa633a051a44a5a9c/overpass.geojson";
|
||||||
|
|
||||||
private OSMIndoorLayer mIndoorLayer;
|
private OSMIndoorLayer mIndoorLayer;
|
||||||
|
|
||||||
public JeoIndoorMapActivity() {
|
public JeoIndoorActivity() {
|
||||||
super(R.layout.jeo_indoor_map);
|
super(R.layout.jeo_indoor_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,11 +97,10 @@ public class JeoIndoorMapActivity extends BaseMapActivity {
|
|||||||
|
|
||||||
VectorDataset data = JeoTest.readGeoJson(is);
|
VectorDataset data = JeoTest.readGeoJson(is);
|
||||||
Style style = JeoTest.getStyle();
|
Style style = JeoTest.getStyle();
|
||||||
float scale = getResources().getDisplayMetrics().density;
|
|
||||||
TextStyle textStyle = TextStyle.builder()
|
TextStyle textStyle = TextStyle.builder()
|
||||||
.isCaption(true)
|
.isCaption(true)
|
||||||
.fontSize(16 * scale).color(Color.BLACK)
|
.fontSize(16 * CanvasAdapter.getScale()).color(Color.BLACK)
|
||||||
.strokeWidth(2.2f * scale).strokeColor(Color.WHITE)
|
.strokeWidth(2.2f * CanvasAdapter.getScale()).strokeColor(Color.WHITE)
|
||||||
.build();
|
.build();
|
||||||
mIndoorLayer = new OSMIndoorLayer(mMap, data, style, textStyle);
|
mIndoorLayer = new OSMIndoorLayer(mMap, data, style, textStyle);
|
||||||
mMap.layers().add(mIndoorLayer);
|
mMap.layers().add(mIndoorLayer);
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2016 Andrey Novikov
|
* Copyright 2016 Andrey Novikov
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
@@ -20,6 +20,7 @@ package org.oscim.android.test;
|
|||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
import org.oscim.map.Layers;
|
import org.oscim.map.Layers;
|
||||||
@@ -61,7 +62,7 @@ public class LayerGroupActivity extends BaseMapActivity {
|
|||||||
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
|
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
|
||||||
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
||||||
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||||
renderer.setOffset(5 * getResources().getDisplayMetrics().density, 0);
|
renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||||
|
|
||||||
layers.addGroup(GROUP_OVERLAYS);
|
layers.addGroup(GROUP_OVERLAYS);
|
||||||
layers.add(mapScaleBarLayer, GROUP_OVERLAYS);
|
layers.add(mapScaleBarLayer, GROUP_OVERLAYS);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@ import java.util.List;
|
|||||||
* This is a very INEFFICIENT and somewhat less useful example for how to use
|
* This is a very INEFFICIENT and somewhat less useful example for how to use
|
||||||
* PathLayers!
|
* PathLayers!
|
||||||
*/
|
*/
|
||||||
public class LineTexActivity extends SimpleMapActivity {
|
public class LineTexActivity extends BitmapTileActivity {
|
||||||
|
|
||||||
private static final boolean ANIMATION = false;
|
private static final boolean ANIMATION = false;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -22,9 +22,8 @@ import android.os.Bundle;
|
|||||||
|
|
||||||
import org.oscim.core.MapPosition;
|
import org.oscim.core.MapPosition;
|
||||||
import org.oscim.layers.LocationLayer;
|
import org.oscim.layers.LocationLayer;
|
||||||
import org.oscim.renderer.LocationRenderer;
|
|
||||||
|
|
||||||
public class LocationActivity extends SimpleMapActivity implements LocationListener {
|
public class LocationActivity extends BitmapTileActivity implements LocationListener {
|
||||||
private LocationLayer locationLayer;
|
private LocationLayer locationLayer;
|
||||||
private LocationManager locationManager;
|
private LocationManager locationManager;
|
||||||
private final MapPosition mapPosition = new MapPosition();
|
private final MapPosition mapPosition = new MapPosition();
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016-2018 devemux86
|
||||||
|
* Copyright 2018 Longri
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.location.Location;
|
||||||
|
import android.location.LocationListener;
|
||||||
|
import android.location.LocationManager;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
|
import org.oscim.backend.canvas.Color;
|
||||||
|
import org.oscim.core.MapPosition;
|
||||||
|
import org.oscim.layers.LocationTextureLayer;
|
||||||
|
import org.oscim.renderer.atlas.TextureAtlas;
|
||||||
|
import org.oscim.renderer.atlas.TextureRegion;
|
||||||
|
import org.oscim.renderer.bucket.TextureItem;
|
||||||
|
import org.oscim.utils.IOUtils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
public class LocationTextureActivity extends BitmapTileActivity implements LocationListener {
|
||||||
|
private LocationTextureLayer locationLayer;
|
||||||
|
private LocationManager locationManager;
|
||||||
|
private final MapPosition mapPosition = new MapPosition();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
||||||
|
|
||||||
|
// load a Bitmap/SVG from resources
|
||||||
|
InputStream is = null;
|
||||||
|
Bitmap bmp = null;
|
||||||
|
try {
|
||||||
|
is = getResources().openRawResource(R.raw.arrow);
|
||||||
|
float scale = CanvasAdapter.getScale();
|
||||||
|
bmp = CanvasAdapter.decodeSvgBitmap(is, (int) (60 * scale), (int) (60 * scale), 100);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
IOUtils.closeQuietly(is);
|
||||||
|
}
|
||||||
|
|
||||||
|
// create TextureRegion from Bitmap
|
||||||
|
TextureRegion textureRegion = new TextureRegion(new TextureItem(bmp), new TextureAtlas.Rect(0, 0, bmp.getWidth(), bmp.getHeight()));
|
||||||
|
|
||||||
|
// create LocationTextureLayer with created/loaded TextureRegion
|
||||||
|
locationLayer = new LocationTextureLayer(mMap, textureRegion);
|
||||||
|
|
||||||
|
// set color of accuracy circle (Color.BLUE is default)
|
||||||
|
locationLayer.locationRenderer.setAccuracyColor(Color.get(50, 50, 255));
|
||||||
|
|
||||||
|
// set color of indicator circle (Color.RED is default)
|
||||||
|
locationLayer.locationRenderer.setIndicatorColor(Color.MAGENTA);
|
||||||
|
|
||||||
|
// set billboard rendering for TextureRegion (false is default)
|
||||||
|
locationLayer.locationRenderer.setBillboard(false);
|
||||||
|
|
||||||
|
locationLayer.setEnabled(false);
|
||||||
|
mMap.layers().add(locationLayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
|
||||||
|
enableAvailableProviders();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
|
||||||
|
locationManager.removeUpdates(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLocationChanged(Location location) {
|
||||||
|
locationLayer.setEnabled(true);
|
||||||
|
locationLayer.setPosition(location.getLatitude(), location.getLongitude(), location.getBearing(), location.getAccuracy());
|
||||||
|
|
||||||
|
// Follow location
|
||||||
|
mMap.getMapPosition(mapPosition);
|
||||||
|
mapPosition.setPosition(location.getLatitude(), location.getLongitude());
|
||||||
|
mMap.setMapPosition(mapPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProviderDisabled(String provider) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProviderEnabled(String provider) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void enableAvailableProviders() {
|
||||||
|
locationManager.removeUpdates(this);
|
||||||
|
|
||||||
|
for (String provider : locationManager.getProviders(true)) {
|
||||||
|
if (LocationManager.GPS_PROVIDER.equals(provider)
|
||||||
|
|| LocationManager.NETWORK_PROVIDER.equals(provider)) {
|
||||||
|
locationManager.requestLocationUpdates(provider, 0, 0, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Andrea Antonello
|
||||||
|
* Copyright 2019 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Environment;
|
||||||
|
import org.oscim.android.tiling.source.mbtiles.MBTilesBitmapTileSource;
|
||||||
|
import org.oscim.core.BoundingBox;
|
||||||
|
import org.oscim.core.MapPosition;
|
||||||
|
import org.oscim.core.Tile;
|
||||||
|
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An example activity making use of MBTiles.
|
||||||
|
*/
|
||||||
|
public class MBTilesBitmapTileActivity extends BitmapTileActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
File file = new File(Environment.getExternalStorageDirectory(), "test.mbtiles");
|
||||||
|
if (!file.exists()) {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this)
|
||||||
|
.setTitle(R.string.warning)
|
||||||
|
.setMessage(R.string.startup_message_mbtiles)
|
||||||
|
.setPositiveButton(R.string.exit, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MBTilesBitmapTileSource tileSource = new MBTilesBitmapTileSource(file.getAbsolutePath(), 128, null);
|
||||||
|
BitmapTileLayer bitmapLayer = new BitmapTileLayer(mMap, tileSource);
|
||||||
|
mMap.layers().add(bitmapLayer);
|
||||||
|
|
||||||
|
/* set initial position on first run */
|
||||||
|
MapPosition pos = new MapPosition();
|
||||||
|
mMap.getMapPosition(pos);
|
||||||
|
if (pos.x == 0.5 && pos.y == 0.5) {
|
||||||
|
BoundingBox bbox = tileSource.getBounds();
|
||||||
|
if (bbox != null) {
|
||||||
|
pos.setByBoundingBox(bbox, Tile.SIZE * 4, Tile.SIZE * 4);
|
||||||
|
mMap.setMapPosition(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,6 +38,7 @@ public class MapActivity extends Activity {
|
|||||||
this(R.layout.activity_map);
|
this(R.layout.activity_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(mContentView);
|
setContentView(mContentView);
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ package org.oscim.android.test;
|
|||||||
|
|
||||||
import org.oscim.utils.Parameters;
|
import org.oscim.utils.Parameters;
|
||||||
|
|
||||||
public class NewGesturesActivity extends MarkerOverlayActivity {
|
public class MapEventLayer2Activity extends MarkerOverlayActivity {
|
||||||
|
|
||||||
public NewGesturesActivity() {
|
public MapEventLayer2Activity() {
|
||||||
super();
|
super();
|
||||||
Parameters.MAP_EVENT_LAYER2 = true;
|
Parameters.MAP_EVENT_LAYER2 = true;
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,6 @@ public class NewGesturesActivity extends MarkerOverlayActivity {
|
|||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
|
||||||
// Revert gestures for other activities
|
|
||||||
Parameters.MAP_EVENT_LAYER2 = false;
|
Parameters.MAP_EVENT_LAYER2 = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018-2019 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.oscim.android.cache.TileCache;
|
||||||
|
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||||
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
|
import org.oscim.theme.VtmThemes;
|
||||||
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
|
import org.oscim.tiling.source.UrlTileSource;
|
||||||
|
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||||
|
import org.oscim.tiling.source.mvt.MapilionMvtTileSource;
|
||||||
|
|
||||||
|
public class MapilionMvtActivity extends MapActivity {
|
||||||
|
|
||||||
|
// Metered API key for demonstration purposes
|
||||||
|
private static final String API_KEY = "3b3d8353-0fb8-4513-bfe0-d620b2d77c45";
|
||||||
|
|
||||||
|
private static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
|
private TileCache mCache;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
OkHttpEngine.OkHttpFactory factory = new OkHttpEngine.OkHttpFactory();
|
||||||
|
|
||||||
|
UrlTileSource tileSource = MapilionMvtTileSource.builder()
|
||||||
|
.apiKey(API_KEY)
|
||||||
|
.httpFactory(factory)
|
||||||
|
//.locale("en")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
if (USE_CACHE) {
|
||||||
|
// Cache the tiles into a local SQLite database
|
||||||
|
mCache = new TileCache(this, null, "tile.db");
|
||||||
|
mCache.setCacheSize(512 * (1 << 10));
|
||||||
|
tileSource.setCache(mCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||||
|
mMap.setTheme(VtmThemes.OPENMAPTILES);
|
||||||
|
|
||||||
|
// Hillshading
|
||||||
|
UrlTileSource shadedTileSource = DefaultSources.MAPILION_HILLSHADE_2
|
||||||
|
.apiKey(API_KEY)
|
||||||
|
.httpFactory(factory)
|
||||||
|
.build();
|
||||||
|
mMap.layers().add(new BitmapTileLayer(mMap, shadedTileSource));
|
||||||
|
|
||||||
|
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||||
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
|
||||||
|
if (mCache != null)
|
||||||
|
mCache.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
|
* Copyright 2018 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -27,6 +28,7 @@ import org.oscim.android.filepicker.FilePicker;
|
|||||||
import org.oscim.android.filepicker.FilterByFileExtension;
|
import org.oscim.android.filepicker.FilterByFileExtension;
|
||||||
import org.oscim.android.filepicker.ValidMapFile;
|
import org.oscim.android.filepicker.ValidMapFile;
|
||||||
import org.oscim.android.filepicker.ValidRenderTheme;
|
import org.oscim.android.filepicker.ValidRenderTheme;
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.core.MapElement;
|
import org.oscim.core.MapElement;
|
||||||
import org.oscim.core.MapPosition;
|
import org.oscim.core.MapPosition;
|
||||||
import org.oscim.core.Tag;
|
import org.oscim.core.Tag;
|
||||||
@@ -34,6 +36,7 @@ import org.oscim.core.Tile;
|
|||||||
import org.oscim.layers.TileGridLayer;
|
import org.oscim.layers.TileGridLayer;
|
||||||
import org.oscim.layers.tile.MapTile;
|
import org.oscim.layers.tile.MapTile;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
|
import org.oscim.layers.tile.buildings.S3DBLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
import org.oscim.renderer.BitmapRenderer;
|
import org.oscim.renderer.BitmapRenderer;
|
||||||
@@ -52,7 +55,7 @@ import org.oscim.theme.styles.RenderStyle;
|
|||||||
import org.oscim.tiling.source.mapfile.MapFileTileSource;
|
import org.oscim.tiling.source.mapfile.MapFileTileSource;
|
||||||
import org.oscim.tiling.source.mapfile.MapInfo;
|
import org.oscim.tiling.source.mapfile.MapInfo;
|
||||||
|
|
||||||
public class MapsforgeMapActivity extends MapActivity {
|
public class MapsforgeActivity extends MapActivity {
|
||||||
|
|
||||||
static final int SELECT_MAP_FILE = 0;
|
static final int SELECT_MAP_FILE = 0;
|
||||||
static final int SELECT_THEME_FILE = SELECT_MAP_FILE + 1;
|
static final int SELECT_THEME_FILE = SELECT_MAP_FILE + 1;
|
||||||
@@ -64,9 +67,24 @@ public class MapsforgeMapActivity extends MapActivity {
|
|||||||
private TileGridLayer mGridLayer;
|
private TileGridLayer mGridLayer;
|
||||||
private DefaultMapScaleBar mMapScaleBar;
|
private DefaultMapScaleBar mMapScaleBar;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
|
private boolean mS3db;
|
||||||
private VectorTileLayer mTileLayer;
|
private VectorTileLayer mTileLayer;
|
||||||
MapFileTileSource mTileSource;
|
MapFileTileSource mTileSource;
|
||||||
|
|
||||||
|
public MapsforgeActivity() {
|
||||||
|
this(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapsforgeActivity(boolean s3db) {
|
||||||
|
super();
|
||||||
|
mS3db = s3db;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapsforgeActivity(boolean s3db, int contentView) {
|
||||||
|
super(contentView);
|
||||||
|
mS3db = s3db;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -145,7 +163,7 @@ public class MapsforgeMapActivity extends MapActivity {
|
|||||||
} else {
|
} else {
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
if (mGridLayer == null)
|
if (mGridLayer == null)
|
||||||
mGridLayer = new TileGridLayer(mMap, getResources().getDisplayMetrics().density);
|
mGridLayer = new TileGridLayer(mMap);
|
||||||
|
|
||||||
mMap.layers().add(mGridLayer);
|
mMap.layers().add(mGridLayer);
|
||||||
}
|
}
|
||||||
@@ -173,7 +191,10 @@ public class MapsforgeMapActivity extends MapActivity {
|
|||||||
mTileLayer = mMap.setBaseMap(mTileSource);
|
mTileLayer = mMap.setBaseMap(mTileSource);
|
||||||
loadTheme(null);
|
loadTheme(null);
|
||||||
|
|
||||||
mMap.layers().add(new BuildingLayer(mMap, mTileLayer));
|
if (mS3db)
|
||||||
|
mMap.layers().add(new S3DBLayer(mMap, mTileLayer));
|
||||||
|
else
|
||||||
|
mMap.layers().add(new BuildingLayer(mMap, mTileLayer));
|
||||||
mMap.layers().add(new LabelLayer(mMap, mTileLayer));
|
mMap.layers().add(new LabelLayer(mMap, mTileLayer));
|
||||||
|
|
||||||
mMapScaleBar = new DefaultMapScaleBar(mMap);
|
mMapScaleBar = new DefaultMapScaleBar(mMap);
|
||||||
@@ -185,15 +206,16 @@ public class MapsforgeMapActivity extends MapActivity {
|
|||||||
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mMapScaleBar);
|
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mMapScaleBar);
|
||||||
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
||||||
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||||
renderer.setOffset(5 * getResources().getDisplayMetrics().density, 0);
|
renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||||
mMap.layers().add(mapScaleBarLayer);
|
mMap.layers().add(mapScaleBarLayer);
|
||||||
|
|
||||||
MapInfo info = mTileSource.getMapInfo();
|
MapInfo info = mTileSource.getMapInfo();
|
||||||
MapPosition pos = new MapPosition();
|
if (!info.boundingBox.contains(mMap.getMapPosition().getGeoPoint())) {
|
||||||
pos.setByBoundingBox(info.boundingBox, Tile.SIZE * 4, Tile.SIZE * 4);
|
MapPosition pos = new MapPosition();
|
||||||
mMap.setMapPosition(pos);
|
pos.setByBoundingBox(info.boundingBox, Tile.SIZE * 4, Tile.SIZE * 4);
|
||||||
|
mMap.setMapPosition(pos);
|
||||||
mPrefs.clear();
|
mPrefs.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (requestCode == SELECT_THEME_FILE) {
|
} else if (requestCode == SELECT_THEME_FILE) {
|
||||||
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
|
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -14,16 +14,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.android.test;
|
package org.oscim.android.test;
|
||||||
|
|
||||||
import android.os.Bundle;
|
public class MapsforgeS3DBActivity extends MapsforgeActivity {
|
||||||
|
|
||||||
import org.oscim.utils.Parameters;
|
public MapsforgeS3DBActivity() {
|
||||||
|
super(true);
|
||||||
public class MapsforgePolyLabelActivity extends MapsforgeMapActivity {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
Parameters.POLY_LABEL = true;
|
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ import java.util.Set;
|
|||||||
/**
|
/**
|
||||||
* Load render theme from Android assets folder and show a configuration menu based on stylemenu.
|
* Load render theme from Android assets folder and show a configuration menu based on stylemenu.
|
||||||
*/
|
*/
|
||||||
public class MapsforgeStyleActivity extends MapsforgeMapActivity {
|
public class MapsforgeStyleActivity extends MapsforgeActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2017-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -17,7 +17,6 @@ package org.oscim.android.test;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import org.oscim.android.cache.TileCache;
|
import org.oscim.android.cache.TileCache;
|
||||||
import org.oscim.layers.TileGridLayer;
|
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
@@ -26,7 +25,7 @@ import org.oscim.tiling.source.OkHttpEngine;
|
|||||||
import org.oscim.tiling.source.UrlTileSource;
|
import org.oscim.tiling.source.UrlTileSource;
|
||||||
import org.oscim.tiling.source.geojson.MapzenGeojsonTileSource;
|
import org.oscim.tiling.source.geojson.MapzenGeojsonTileSource;
|
||||||
|
|
||||||
public class MapzenGeojsonMapActivity extends MapActivity {
|
public class MapzenGeojsonActivity extends MapActivity {
|
||||||
|
|
||||||
private static final boolean USE_CACHE = false;
|
private static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
@@ -37,7 +36,7 @@ public class MapzenGeojsonMapActivity extends MapActivity {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
UrlTileSource tileSource = MapzenGeojsonTileSource.builder()
|
UrlTileSource tileSource = MapzenGeojsonTileSource.builder()
|
||||||
.apiKey("mapzen-xxxxxxx") // Put a proper API key
|
.apiKey("xxxxxxx") // Put a proper API key
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
//.locale("en")
|
//.locale("en")
|
||||||
.build();
|
.build();
|
||||||
@@ -54,8 +53,6 @@ public class MapzenGeojsonMapActivity extends MapActivity {
|
|||||||
|
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
|
||||||
mMap.layers().add(new TileGridLayer(mMap, getResources().getDisplayMetrics().density));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2017 Mathieu De Brito
|
* Copyright 2017 Mathieu De Brito
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
@@ -18,7 +18,6 @@ package org.oscim.android.test;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import org.oscim.android.cache.TileCache;
|
import org.oscim.android.cache.TileCache;
|
||||||
import org.oscim.layers.TileGridLayer;
|
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
@@ -27,7 +26,7 @@ import org.oscim.tiling.source.OkHttpEngine;
|
|||||||
import org.oscim.tiling.source.UrlTileSource;
|
import org.oscim.tiling.source.UrlTileSource;
|
||||||
import org.oscim.tiling.source.mvt.MapzenMvtTileSource;
|
import org.oscim.tiling.source.mvt.MapzenMvtTileSource;
|
||||||
|
|
||||||
public class MapzenMvtMapActivity extends MapActivity {
|
public class MapzenMvtActivity extends MapActivity {
|
||||||
|
|
||||||
private static final boolean USE_CACHE = false;
|
private static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
@@ -38,7 +37,7 @@ public class MapzenMvtMapActivity extends MapActivity {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
UrlTileSource tileSource = MapzenMvtTileSource.builder()
|
UrlTileSource tileSource = MapzenMvtTileSource.builder()
|
||||||
.apiKey("mapzen-xxxxxxx") // Put a proper API key
|
.apiKey("xxxxxxx") // Put a proper API key
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
//.locale("en")
|
//.locale("en")
|
||||||
.build();
|
.build();
|
||||||
@@ -55,8 +54,6 @@ public class MapzenMvtMapActivity extends MapActivity {
|
|||||||
|
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
|
||||||
mMap.layers().add(new TileGridLayer(mMap, getResources().getDisplayMetrics().density));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.android.test;
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.oscim.backend.canvas.Bitmap;
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
@@ -29,21 +30,18 @@ import org.oscim.layers.marker.ItemizedLayer;
|
|||||||
import org.oscim.layers.marker.MarkerItem;
|
import org.oscim.layers.marker.MarkerItem;
|
||||||
import org.oscim.layers.marker.MarkerSymbol;
|
import org.oscim.layers.marker.MarkerSymbol;
|
||||||
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
|
||||||
import org.oscim.map.Map;
|
import org.oscim.map.Map;
|
||||||
import org.oscim.theme.VtmThemes;
|
|
||||||
import org.oscim.tiling.TileSource;
|
import org.oscim.tiling.TileSource;
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
||||||
|
|
||||||
public class MarkerOverlayActivity extends SimpleMapActivity
|
public class MarkerOverlayActivity extends MapActivity
|
||||||
implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
|
implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
|
||||||
|
|
||||||
static final boolean BILLBOARDS = true;
|
static final boolean BILLBOARDS = true;
|
||||||
@@ -51,17 +49,20 @@ public class MarkerOverlayActivity extends SimpleMapActivity
|
|||||||
ItemizedLayer<MarkerItem> mMarkerLayer;
|
ItemizedLayer<MarkerItem> mMarkerLayer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
createLayers();
|
||||||
|
}
|
||||||
|
|
||||||
void createLayers() {
|
void createLayers() {
|
||||||
// Map events receiver
|
// Map events receiver
|
||||||
mMap.layers().add(new MapEventsReceiver(mMap));
|
mMap.layers().add(new MapEventsReceiver(mMap));
|
||||||
|
|
||||||
TileSource tileSource = OSciMap4TileSource.builder()
|
TileSource tileSource = DefaultSources.OPENSTREETMAP
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
.build();
|
.build();
|
||||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
mMap.layers().add(new BitmapTileLayer(mMap, tileSource));
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
|
||||||
mMap.setTheme(VtmThemes.DEFAULT);
|
|
||||||
|
|
||||||
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
Bitmap bitmapPoi = drawableToBitmap(getResources().getDrawable(R.drawable.marker_poi));
|
||||||
MarkerSymbol symbol;
|
MarkerSymbol symbol;
|
||||||
@@ -137,6 +138,11 @@ public class MarkerOverlayActivity extends SimpleMapActivity
|
|||||||
Toast.makeText(MarkerOverlayActivity.this, "Map long press\n" + p, Toast.LENGTH_SHORT).show();
|
Toast.makeText(MarkerOverlayActivity.this, "Map long press\n" + p, Toast.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (g instanceof Gesture.TripleTap) {
|
||||||
|
GeoPoint p = mMap.viewport().fromScreenPoint(e.getX(), e.getY());
|
||||||
|
Toast.makeText(MarkerOverlayActivity.this, "Map triple tap\n" + p, Toast.LENGTH_SHORT).show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,10 +31,11 @@ import org.oscim.tiling.TileSource;
|
|||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
||||||
|
|
||||||
public class MultiMapActivity extends Activity {
|
public class MultiMapViewActivity extends Activity {
|
||||||
private MapView mMapView1, mMapView2;
|
private MapView mMapView1, mMapView2;
|
||||||
private MapPreferences mPrefs1, mPrefs2;
|
private MapPreferences mPrefs1, mPrefs2;
|
||||||
|
|
||||||
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_map_multi);
|
setContentView(R.layout.activity_map_multi);
|
||||||
@@ -44,7 +45,7 @@ public class MultiMapActivity extends Activity {
|
|||||||
// 1st map view
|
// 1st map view
|
||||||
mMapView1 = (MapView) findViewById(R.id.mapView1);
|
mMapView1 = (MapView) findViewById(R.id.mapView1);
|
||||||
Map map1 = mMapView1.map();
|
Map map1 = mMapView1.map();
|
||||||
mPrefs1 = new MapPreferences(MultiMapActivity.class.getName() + "1", this);
|
mPrefs1 = new MapPreferences(MultiMapViewActivity.class.getName() + "1", this);
|
||||||
TileSource tileSource1 = OSciMap4TileSource.builder()
|
TileSource tileSource1 = OSciMap4TileSource.builder()
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
.build();
|
.build();
|
||||||
@@ -56,7 +57,7 @@ public class MultiMapActivity extends Activity {
|
|||||||
// 2nd map view
|
// 2nd map view
|
||||||
mMapView2 = (MapView) findViewById(R.id.mapView2);
|
mMapView2 = (MapView) findViewById(R.id.mapView2);
|
||||||
Map map2 = mMapView2.map();
|
Map map2 = mMapView2.map();
|
||||||
mPrefs2 = new MapPreferences(MultiMapActivity.class.getName() + "2", this);
|
mPrefs2 = new MapPreferences(MultiMapViewActivity.class.getName() + "2", this);
|
||||||
TileSource tileSource2 = OSciMap4TileSource.builder()
|
TileSource tileSource2 = OSciMap4TileSource.builder()
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
.build();
|
.build();
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.oscim.android.cache.TileCache;
|
||||||
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
|
import org.oscim.theme.VtmThemes;
|
||||||
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
|
import org.oscim.tiling.source.UrlTileSource;
|
||||||
|
import org.oscim.tiling.source.geojson.NextzenGeojsonTileSource;
|
||||||
|
|
||||||
|
public class NextzenGeojsonActivity extends MapActivity {
|
||||||
|
|
||||||
|
private static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
|
private TileCache mCache;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
UrlTileSource tileSource = NextzenGeojsonTileSource.builder()
|
||||||
|
.apiKey("xxxxxxx") // Put a proper API key
|
||||||
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
|
//.locale("en")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
if (USE_CACHE) {
|
||||||
|
// Cache the tiles into a local SQLite database
|
||||||
|
mCache = new TileCache(this, null, "tile.db");
|
||||||
|
mCache.setCacheSize(512 * (1 << 10));
|
||||||
|
tileSource.setCache(mCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||||
|
mMap.setTheme(VtmThemes.MAPZEN);
|
||||||
|
|
||||||
|
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||||
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
|
||||||
|
if (mCache != null)
|
||||||
|
mCache.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.oscim.android.cache.TileCache;
|
||||||
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
|
import org.oscim.theme.VtmThemes;
|
||||||
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
|
import org.oscim.tiling.source.UrlTileSource;
|
||||||
|
import org.oscim.tiling.source.mvt.NextzenMvtTileSource;
|
||||||
|
|
||||||
|
public class NextzenMvtActivity extends MapActivity {
|
||||||
|
|
||||||
|
private static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
|
private TileCache mCache;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
UrlTileSource tileSource = NextzenMvtTileSource.builder()
|
||||||
|
.apiKey("xxxxxxx") // Put a proper API key
|
||||||
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
|
//.locale("en")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
if (USE_CACHE) {
|
||||||
|
// Cache the tiles into a local SQLite database
|
||||||
|
mCache = new TileCache(this, null, "tile.db");
|
||||||
|
mCache.setCacheSize(512 * (1 << 10));
|
||||||
|
tileSource.setCache(mCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||||
|
mMap.setTheme(VtmThemes.MAPZEN);
|
||||||
|
|
||||||
|
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||||
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
|
||||||
|
if (mCache != null)
|
||||||
|
mCache.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -27,7 +27,7 @@ import org.oscim.tiling.TileSource;
|
|||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
|
||||||
|
|
||||||
public class OSciMapS3DBMapActivity extends BaseMapActivity {
|
public class OSciMapS3DBActivity extends BaseMapActivity {
|
||||||
|
|
||||||
TileCache mS3dbCache;
|
TileCache mS3dbCache;
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -17,16 +17,15 @@ package org.oscim.android.test;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import org.oscim.android.cache.TileCache;
|
import org.oscim.android.cache.TileCache;
|
||||||
import org.oscim.layers.TileGridLayer;
|
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
import org.oscim.theme.VtmThemes;
|
import org.oscim.theme.VtmThemes;
|
||||||
import org.oscim.tiling.source.OkHttpEngine;
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
import org.oscim.tiling.source.UrlTileSource;
|
import org.oscim.tiling.source.UrlTileSource;
|
||||||
import org.oscim.tiling.source.geojson.OpenMapTilesGeojsonTileSource;
|
import org.oscim.tiling.source.mvt.OpenMapTilesMvtTileSource;
|
||||||
|
|
||||||
public class OpenMapTilesGeojsonMapActivity extends MapActivity {
|
public class OpenMapTilesMvtActivity extends MapActivity {
|
||||||
|
|
||||||
private static final boolean USE_CACHE = false;
|
private static final boolean USE_CACHE = false;
|
||||||
|
|
||||||
@@ -36,7 +35,7 @@ public class OpenMapTilesGeojsonMapActivity extends MapActivity {
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
UrlTileSource tileSource = OpenMapTilesGeojsonTileSource.builder()
|
UrlTileSource tileSource = OpenMapTilesMvtTileSource.builder()
|
||||||
.apiKey("xxxxxxx") // Put a proper API key
|
.apiKey("xxxxxxx") // Put a proper API key
|
||||||
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
//.locale("en")
|
//.locale("en")
|
||||||
@@ -54,8 +53,6 @@ public class OpenMapTilesGeojsonMapActivity extends MapActivity {
|
|||||||
|
|
||||||
mMap.layers().add(new BuildingLayer(mMap, l));
|
mMap.layers().add(new BuildingLayer(mMap, l));
|
||||||
mMap.layers().add(new LabelLayer(mMap, l));
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
|
||||||
mMap.layers().add(new TileGridLayer(mMap, getResources().getDisplayMetrics().density));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
|
||||||
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
|
import org.oscim.layers.tile.buildings.S3DBLayer;
|
||||||
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
|
import org.oscim.map.Viewport;
|
||||||
|
import org.oscim.theme.VtmThemes;
|
||||||
|
import org.oscim.tiling.TileSource;
|
||||||
|
import org.oscim.tiling.source.OkHttpEngine;
|
||||||
|
import org.oscim.tiling.source.bitmap.DefaultSources;
|
||||||
|
import org.oscim.tiling.source.overpass.OverpassTileSource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use Overpass API data for vector layer.
|
||||||
|
* Only for developing as can be error-prone.
|
||||||
|
* Take care of overpass provider licenses.
|
||||||
|
*/
|
||||||
|
public class OverpassActivity extends MapActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
TileSource tileSource = OverpassTileSource.builder()
|
||||||
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
|
.zoomMin(15)
|
||||||
|
.zoomMax(17)
|
||||||
|
.build();
|
||||||
|
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||||
|
|
||||||
|
TileSource bitmapTileSource = DefaultSources.OPENSTREETMAP
|
||||||
|
.httpFactory(new OkHttpEngine.OkHttpFactory())
|
||||||
|
.zoomMax(15)
|
||||||
|
.fadeSteps(new BitmapTileLayer.FadeStep[]{
|
||||||
|
new BitmapTileLayer.FadeStep(15, 16, 1f, 0f),
|
||||||
|
new BitmapTileLayer.FadeStep(16, Viewport.MAX_ZOOM_LEVEL, 0f, 0f)
|
||||||
|
})
|
||||||
|
.build();
|
||||||
|
mMap.layers().add(new BitmapTileLayer(mMap, bitmapTileSource));
|
||||||
|
|
||||||
|
BuildingLayer.RAW_DATA = true;
|
||||||
|
mMap.layers().add(new S3DBLayer(mMap, l));
|
||||||
|
mMap.layers().add(new LabelLayer(mMap, l));
|
||||||
|
|
||||||
|
mMap.setTheme(VtmThemes.DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
|
||||||
|
BuildingLayer.RAW_DATA = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2017-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -26,4 +26,11 @@ public class POTTextureActivity extends SimpleMapActivity {
|
|||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
|
||||||
|
Parameters.POT_TEXTURES = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -36,7 +36,7 @@ import java.util.List;
|
|||||||
* This is a very INEFFICIENT and somewhat less useful example for how to use
|
* This is a very INEFFICIENT and somewhat less useful example for how to use
|
||||||
* PathLayers!
|
* PathLayers!
|
||||||
*/
|
*/
|
||||||
public class PathOverlayActivity extends SimpleMapActivity {
|
public class PathOverlayActivity extends BitmapTileActivity {
|
||||||
|
|
||||||
private static final boolean ANIMATION = true;
|
private static final boolean ANIMATION = true;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2017-2018 devemux86
|
||||||
|
* Copyright 2018 Gustl22
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -14,12 +15,24 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.android.test;
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.ListView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
import android.widget.ToggleButton;
|
||||||
|
|
||||||
|
import org.mapsforge.core.model.Tag;
|
||||||
import org.mapsforge.poi.android.storage.AndroidPoiPersistenceManagerFactory;
|
import org.mapsforge.poi.android.storage.AndroidPoiPersistenceManagerFactory;
|
||||||
import org.mapsforge.poi.storage.ExactMatchPoiCategoryFilter;
|
import org.mapsforge.poi.storage.ExactMatchPoiCategoryFilter;
|
||||||
import org.mapsforge.poi.storage.PoiCategoryFilter;
|
import org.mapsforge.poi.storage.PoiCategoryFilter;
|
||||||
@@ -54,15 +67,15 @@ import static org.oscim.android.canvas.AndroidGraphics.drawableToBitmap;
|
|||||||
* Long press on map to search inside visible bounding box.<br/>
|
* Long press on map to search inside visible bounding box.<br/>
|
||||||
* Tap on POIs to show their name (in default locale).
|
* Tap on POIs to show their name (in default locale).
|
||||||
*/
|
*/
|
||||||
public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
|
public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(PoiSearchActivity.class);
|
private static final Logger log = LoggerFactory.getLogger(PoiSearchActivity.class);
|
||||||
|
|
||||||
private static String POI_FILE;
|
|
||||||
private static final String POI_CATEGORY = "Restaurants";
|
private static final String POI_CATEGORY = "Restaurants";
|
||||||
private static final int SELECT_POI_FILE = MapsforgeMapActivity.SELECT_THEME_FILE + 1;
|
private static final int SELECT_POI_FILE = MapsforgeActivity.SELECT_THEME_FILE + 1;
|
||||||
|
|
||||||
private ItemizedLayer<MarkerItem> mMarkerLayer;
|
private ItemizedLayer<MarkerItem> mMarkerLayer;
|
||||||
|
private PoiPersistenceManager mPersistenceManager;
|
||||||
|
|
||||||
public static class PoiFilePicker extends FilePicker {
|
public static class PoiFilePicker extends FilePicker {
|
||||||
public PoiFilePicker() {
|
public PoiFilePicker() {
|
||||||
@@ -70,14 +83,61 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PoiSearchActivity() {
|
||||||
|
super(false, R.layout.activity_map_poi);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initSearch() {
|
||||||
|
final List<Pattern> searchPatterns = new ArrayList<>();
|
||||||
|
|
||||||
|
final PatternAdapter adapter = new PatternAdapter(this, searchPatterns);
|
||||||
|
ListView searchList = (ListView) findViewById(R.id.search_list);
|
||||||
|
searchList.setAdapter(adapter);
|
||||||
|
|
||||||
|
Button addItem = (Button) findViewById(R.id.add_item);
|
||||||
|
addItem.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
searchPatterns.add(new Pattern("", ""));
|
||||||
|
adapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Button startSearch = (Button) findViewById(R.id.start_search);
|
||||||
|
startSearch.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// Clear overlays
|
||||||
|
mMarkerLayer.removeAllItems();
|
||||||
|
mMap.render();
|
||||||
|
|
||||||
|
// POI search
|
||||||
|
List<Tag> tags = new ArrayList<>();
|
||||||
|
for (Pattern pattern : searchPatterns)
|
||||||
|
tags.add(new Tag(pattern.key, pattern.val));
|
||||||
|
new PoiSearchTask(PoiSearchActivity.this, null, tags).execute(mMap.getBoundingBox(0));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
initSearch();
|
||||||
|
|
||||||
// Map events receiver
|
// Map events receiver
|
||||||
mMap.layers().add(new PoiSearchActivity.MapEventsReceiver(mMap));
|
mMap.layers().add(new PoiSearchActivity.MapEventsReceiver(mMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
if (mPersistenceManager != null)
|
||||||
|
mPersistenceManager.close();
|
||||||
|
|
||||||
|
super.onDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
return false;
|
return false;
|
||||||
@@ -99,7 +159,8 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
POI_FILE = intent.getStringExtra(FilePicker.SELECTED_FILE);
|
String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
|
||||||
|
mPersistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(file);
|
||||||
|
|
||||||
Bitmap bitmap = drawableToBitmap(getResources().getDrawable(R.drawable.marker_green));
|
Bitmap bitmap = drawableToBitmap(getResources().getDrawable(R.drawable.marker_green));
|
||||||
MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.BOTTOM_CENTER);
|
MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.BOTTOM_CENTER);
|
||||||
@@ -119,6 +180,11 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onToggleControls(View view) {
|
||||||
|
findViewById(R.id.controls).setVisibility(((ToggleButton) view).isChecked() ?
|
||||||
|
View.VISIBLE : View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
private class MapEventsReceiver extends Layer implements GestureListener {
|
private class MapEventsReceiver extends Layer implements GestureListener {
|
||||||
|
|
||||||
MapEventsReceiver(Map map) {
|
MapEventsReceiver(Map map) {
|
||||||
@@ -132,41 +198,116 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
|
|||||||
mMarkerLayer.removeAllItems();
|
mMarkerLayer.removeAllItems();
|
||||||
mMap.render();
|
mMap.render();
|
||||||
// POI search
|
// POI search
|
||||||
new PoiSearchTask(PoiSearchActivity.this, POI_CATEGORY).execute(mMap.getBoundingBox(0));
|
new PoiSearchTask(PoiSearchActivity.this, POI_CATEGORY, null).execute(mMap.getBoundingBox(0));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class Pattern {
|
||||||
|
String key;
|
||||||
|
String val;
|
||||||
|
|
||||||
|
Pattern(String key, String val) {
|
||||||
|
this.key = key;
|
||||||
|
this.val = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PatternAdapter extends ArrayAdapter<Pattern> {
|
||||||
|
PatternAdapter(Context context, List<Pattern> patterns) {
|
||||||
|
super(context, 0, patterns);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getView(int position, View convertView, ViewGroup parent) {
|
||||||
|
Pattern pattern = getItem(position);
|
||||||
|
assert pattern != null;
|
||||||
|
// Check if an existing view is being reused, otherwise inflate the view
|
||||||
|
if (convertView == null)
|
||||||
|
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_poi_search, parent, false);
|
||||||
|
|
||||||
|
// Populate the data
|
||||||
|
EditText etKey = (EditText) convertView.findViewById(R.id.key);
|
||||||
|
etKey.removeTextChangedListener((PatternTextWatcher) etKey.getTag()); // remove previous listeners
|
||||||
|
etKey.setText(pattern.key); // set text when no listener is attached
|
||||||
|
PatternTextWatcher ptwKey = new PatternTextWatcher(pattern, true);
|
||||||
|
etKey.setTag(ptwKey);
|
||||||
|
etKey.addTextChangedListener(ptwKey);
|
||||||
|
|
||||||
|
EditText etValue = (EditText) convertView.findViewById(R.id.value);
|
||||||
|
etValue.removeTextChangedListener((PatternTextWatcher) etValue.getTag());
|
||||||
|
etValue.setText(pattern.val);
|
||||||
|
PatternTextWatcher ptwVal = new PatternTextWatcher(pattern, false);
|
||||||
|
etValue.setTag(ptwVal);
|
||||||
|
etValue.addTextChangedListener(ptwVal);
|
||||||
|
|
||||||
|
Button remove = (Button) convertView.findViewById(R.id.remove);
|
||||||
|
remove.setTag(pattern);
|
||||||
|
remove.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Pattern pat = (Pattern) v.getTag();
|
||||||
|
remove(pat);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return convertView;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PatternTextWatcher implements TextWatcher {
|
||||||
|
private Pattern pattern;
|
||||||
|
private boolean isKey;
|
||||||
|
|
||||||
|
PatternTextWatcher(Pattern pattern, boolean isKey) {
|
||||||
|
this.pattern = pattern;
|
||||||
|
this.isKey = isKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
if (isKey)
|
||||||
|
pattern.key = s.toString();
|
||||||
|
else
|
||||||
|
pattern.val = s.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class PoiSearchTask extends AsyncTask<BoundingBox, Void, Collection<PointOfInterest>> {
|
private class PoiSearchTask extends AsyncTask<BoundingBox, Void, Collection<PointOfInterest>> {
|
||||||
private final WeakReference<PoiSearchActivity> weakActivity;
|
private final WeakReference<PoiSearchActivity> weakActivity;
|
||||||
private final String category;
|
private final String category;
|
||||||
|
private final List<Tag> patterns;
|
||||||
|
|
||||||
private PoiSearchTask(PoiSearchActivity activity, String category) {
|
private PoiSearchTask(PoiSearchActivity activity, String category, List<Tag> patterns) {
|
||||||
this.weakActivity = new WeakReference<>(activity);
|
this.weakActivity = new WeakReference<>(activity);
|
||||||
this.category = category;
|
this.category = category;
|
||||||
|
this.patterns = patterns;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Collection<PointOfInterest> doInBackground(BoundingBox... params) {
|
protected Collection<PointOfInterest> doInBackground(BoundingBox... params) {
|
||||||
// Search POI
|
// Search POI
|
||||||
PoiPersistenceManager persistenceManager = null;
|
|
||||||
try {
|
try {
|
||||||
persistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(POI_FILE);
|
PoiCategoryManager categoryManager = mPersistenceManager.getCategoryManager();
|
||||||
PoiCategoryManager categoryManager = persistenceManager.getCategoryManager();
|
|
||||||
PoiCategoryFilter categoryFilter = new ExactMatchPoiCategoryFilter();
|
PoiCategoryFilter categoryFilter = new ExactMatchPoiCategoryFilter();
|
||||||
categoryFilter.addCategory(categoryManager.getPoiCategoryByTitle(category));
|
if (category != null)
|
||||||
|
categoryFilter.addCategory(categoryManager.getPoiCategoryByTitle(category));
|
||||||
org.mapsforge.core.model.BoundingBox bb = new org.mapsforge.core.model.BoundingBox(
|
org.mapsforge.core.model.BoundingBox bb = new org.mapsforge.core.model.BoundingBox(
|
||||||
params[0].getMinLatitude(), params[0].getMinLongitude(),
|
params[0].getMinLatitude(), params[0].getMinLongitude(),
|
||||||
params[0].getMaxLatitude(), params[0].getMaxLongitude());
|
params[0].getMaxLatitude(), params[0].getMaxLongitude());
|
||||||
return persistenceManager.findInRect(bb, categoryFilter, null, Integer.MAX_VALUE);
|
return mPersistenceManager.findInRect(bb, categoryFilter, patterns, Integer.MAX_VALUE);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
log.error(t.getMessage(), t);
|
log.error(t.getMessage(), t);
|
||||||
} finally {
|
|
||||||
if (persistenceManager != null) {
|
|
||||||
persistenceManager.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -177,7 +318,8 @@ public class PoiSearchActivity extends MapsforgeMapActivity implements ItemizedL
|
|||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Toast.makeText(activity, category + ": " + (pointOfInterests != null ? pointOfInterests.size() : 0), Toast.LENGTH_SHORT).show();
|
Toast.makeText(activity, (category != null ? category : "Results") + ": "
|
||||||
|
+ (pointOfInterests != null ? pointOfInterests.size() : 0), Toast.LENGTH_SHORT).show();
|
||||||
if (pointOfInterests == null) {
|
if (pointOfInterests == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 devemux86
|
* Copyright 2017-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -32,6 +32,7 @@ import org.oscim.event.MotionEvent;
|
|||||||
import org.oscim.layers.Layer;
|
import org.oscim.layers.Layer;
|
||||||
import org.oscim.layers.TileGridLayer;
|
import org.oscim.layers.TileGridLayer;
|
||||||
import org.oscim.map.Map;
|
import org.oscim.map.Map;
|
||||||
|
import org.oscim.tiling.OverzoomTileDataSource;
|
||||||
import org.oscim.tiling.source.mapfile.MapDatabase;
|
import org.oscim.tiling.source.mapfile.MapDatabase;
|
||||||
import org.oscim.tiling.source.mapfile.MapReadResult;
|
import org.oscim.tiling.source.mapfile.MapReadResult;
|
||||||
import org.oscim.tiling.source.mapfile.PointOfInterest;
|
import org.oscim.tiling.source.mapfile.PointOfInterest;
|
||||||
@@ -46,7 +47,7 @@ import java.util.List;
|
|||||||
* - POI in specified radius.<br/>
|
* - POI in specified radius.<br/>
|
||||||
* - Ways containing touch point.
|
* - Ways containing touch point.
|
||||||
*/
|
*/
|
||||||
public class ReverseGeocodeActivity extends MapsforgeMapActivity {
|
public class ReverseGeocodeActivity extends MapsforgeActivity {
|
||||||
|
|
||||||
private static final int TOUCH_RADIUS = 32 / 2;
|
private static final int TOUCH_RADIUS = 32 / 2;
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@ public class ReverseGeocodeActivity extends MapsforgeMapActivity {
|
|||||||
|
|
||||||
if (requestCode == SELECT_MAP_FILE) {
|
if (requestCode == SELECT_MAP_FILE) {
|
||||||
// For debug
|
// For debug
|
||||||
TileGridLayer gridLayer = new TileGridLayer(mMap, getResources().getDisplayMetrics().density);
|
TileGridLayer gridLayer = new TileGridLayer(mMap);
|
||||||
mMap.layers().add(gridLayer);
|
mMap.layers().add(gridLayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,7 +97,7 @@ public class ReverseGeocodeActivity extends MapsforgeMapActivity {
|
|||||||
int tileYMax = MercatorProjection.pixelYToTileY(pixelY + touchRadius, (byte) mMap.getMapPosition().getZoomLevel());
|
int tileYMax = MercatorProjection.pixelYToTileY(pixelY + touchRadius, (byte) mMap.getMapPosition().getZoomLevel());
|
||||||
Tile upperLeft = new Tile(tileXMin, tileYMin, (byte) mMap.getMapPosition().getZoomLevel());
|
Tile upperLeft = new Tile(tileXMin, tileYMin, (byte) mMap.getMapPosition().getZoomLevel());
|
||||||
Tile lowerRight = new Tile(tileXMax, tileYMax, (byte) mMap.getMapPosition().getZoomLevel());
|
Tile lowerRight = new Tile(tileXMax, tileYMax, (byte) mMap.getMapPosition().getZoomLevel());
|
||||||
MapReadResult mapReadResult = ((MapDatabase) mTileSource.getDataSource()).readLabels(upperLeft, lowerRight);
|
MapReadResult mapReadResult = ((MapDatabase) ((OverzoomTileDataSource) mTileSource.getDataSource()).getDataSource()).readLabels(upperLeft, lowerRight);
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, 2011, 2012, 2013 mapsforge.org
|
* Copyright 2010, 2011, 2012, 2013 mapsforge.org
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2019 devemux86
|
||||||
* Copyright 2017 Longri
|
* Copyright 2016 mar-v-in
|
||||||
|
* Copyright 2016 Mathieu de Brito
|
||||||
|
* Copyright 2017-2018 Longri
|
||||||
* Copyright 2017 nebular
|
* Copyright 2017 nebular
|
||||||
|
* Copyright 2018 boldtrn
|
||||||
|
* Copyright 2018-2019 Gustl22
|
||||||
|
* Copyright 2019 Andrea Antonello
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -79,12 +84,17 @@ public class Samples extends Activity {
|
|||||||
|
|
||||||
setContentView(R.layout.activity_samples);
|
setContentView(R.layout.activity_samples);
|
||||||
LinearLayout linearLayout = findViewById(R.id.samples);
|
LinearLayout linearLayout = findViewById(R.id.samples);
|
||||||
|
linearLayout.addView(createButton(GettingStarted.class));
|
||||||
|
linearLayout.addView(createLabel(null));
|
||||||
linearLayout.addView(createButton(SimpleMapActivity.class));
|
linearLayout.addView(createButton(SimpleMapActivity.class));
|
||||||
linearLayout.addView(createButton(MapsforgeMapActivity.class));
|
linearLayout.addView(createButton(MapsforgeActivity.class));
|
||||||
linearLayout.addView(createButton(MapzenMvtMapActivity.class));
|
linearLayout.addView(createButton(MapilionMvtActivity.class));
|
||||||
linearLayout.addView(createButton(MapzenGeojsonMapActivity.class));
|
/*linearLayout.addView(createButton(MapzenMvtActivity.class));
|
||||||
linearLayout.addView(createButton(OpenMapTilesGeojsonMapActivity.class));
|
linearLayout.addView(createButton(MapzenGeojsonActivity.class));*/
|
||||||
linearLayout.addView(createButton(GdxMapActivity.class));
|
linearLayout.addView(createButton(NextzenMvtActivity.class));
|
||||||
|
linearLayout.addView(createButton(NextzenGeojsonActivity.class));
|
||||||
|
linearLayout.addView(createButton(OpenMapTilesMvtActivity.class));
|
||||||
|
linearLayout.addView(createButton(GdxActivity.class));
|
||||||
|
|
||||||
linearLayout.addView(createLabel("Features"));
|
linearLayout.addView(createLabel("Features"));
|
||||||
linearLayout.addView(createButton(null, "GraphHopper Routing", new View.OnClickListener() {
|
linearLayout.addView(createButton(null, "GraphHopper Routing", new View.OnClickListener() {
|
||||||
@@ -93,16 +103,20 @@ public class Samples extends Activity {
|
|||||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/graphhopper/graphhopper/tree/master/android")));
|
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/graphhopper/graphhopper/tree/master/android")));
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
linearLayout.addView(createButton(LocationActivity.class));
|
||||||
|
linearLayout.addView(createButton(LocationTextureActivity.class));
|
||||||
linearLayout.addView(createButton(PoiSearchActivity.class));
|
linearLayout.addView(createButton(PoiSearchActivity.class));
|
||||||
|
|
||||||
linearLayout.addView(createLabel("Vector Features"));
|
linearLayout.addView(createLabel("Vector Features"));
|
||||||
linearLayout.addView(createButton(MapsforgeStyleActivity.class));
|
linearLayout.addView(createButton(MapsforgeStyleActivity.class));
|
||||||
linearLayout.addView(createButton(MapsforgePolyLabelActivity.class));
|
linearLayout.addView(createButton(MapsforgeS3DBActivity.class));
|
||||||
linearLayout.addView(createButton(AtlasThemeActivity.class));
|
linearLayout.addView(createButton(AtlasThemeActivity.class));
|
||||||
linearLayout.addView(createButton(POTTextureActivity.class));
|
linearLayout.addView(createButton(POTTextureActivity.class));
|
||||||
|
linearLayout.addView(createButton(ShadowActivity.class));
|
||||||
|
|
||||||
linearLayout.addView(createLabel("Raster Maps"));
|
linearLayout.addView(createLabel("Raster Maps"));
|
||||||
linearLayout.addView(createButton(BitmapTileMapActivity.class));
|
linearLayout.addView(createButton(BitmapTileActivity.class));
|
||||||
|
linearLayout.addView(createButton(MBTilesBitmapTileActivity.class));
|
||||||
|
|
||||||
linearLayout.addView(createLabel("Overlays"));
|
linearLayout.addView(createLabel("Overlays"));
|
||||||
linearLayout.addView(createButton(MarkerOverlayActivity.class));
|
linearLayout.addView(createButton(MarkerOverlayActivity.class));
|
||||||
@@ -112,20 +126,21 @@ public class Samples extends Activity {
|
|||||||
linearLayout.addView(createButton(ClusterMarkerOverlayActivity.class));
|
linearLayout.addView(createButton(ClusterMarkerOverlayActivity.class));
|
||||||
linearLayout.addView(createButton(PathOverlayActivity.class));
|
linearLayout.addView(createButton(PathOverlayActivity.class));
|
||||||
linearLayout.addView(createButton(LineTexActivity.class));
|
linearLayout.addView(createButton(LineTexActivity.class));
|
||||||
linearLayout.addView(createButton(VectorLayerMapActivity.class));
|
linearLayout.addView(createButton(VectorLayerActivity.class));
|
||||||
linearLayout.addView(createButton(LocationActivity.class));
|
|
||||||
|
|
||||||
linearLayout.addView(createLabel("User Interaction"));
|
linearLayout.addView(createLabel("User Interaction"));
|
||||||
linearLayout.addView(createButton(NewGesturesActivity.class));
|
linearLayout.addView(createButton(MapEventLayer2Activity.class));
|
||||||
linearLayout.addView(createButton(LayerGroupActivity.class));
|
linearLayout.addView(createButton(LayerGroupActivity.class));
|
||||||
|
|
||||||
linearLayout.addView(createLabel("Dual Map Views"));
|
linearLayout.addView(createLabel("Dual Map Views"));
|
||||||
linearLayout.addView(createButton(MultiMapActivity.class));
|
linearLayout.addView(createButton(MultiMapViewActivity.class));
|
||||||
|
|
||||||
linearLayout.addView(createLabel("Experiments"));
|
linearLayout.addView(createLabel("Experiments"));
|
||||||
linearLayout.addView(createButton(ReverseGeocodeActivity.class));
|
linearLayout.addView(createButton(ReverseGeocodeActivity.class));
|
||||||
linearLayout.addView(createButton(OSciMapS3DBMapActivity.class));
|
linearLayout.addView(createButton(OSciMapS3DBActivity.class));
|
||||||
linearLayout.addView(createButton(ThemeStylerActivity.class));
|
linearLayout.addView(createButton(ThemeStylerActivity.class));
|
||||||
linearLayout.addView(createButton(JeoIndoorMapActivity.class));
|
linearLayout.addView(createButton(JeoIndoorActivity.class));
|
||||||
|
linearLayout.addView(createButton(GdxPoi3DActivity.class));
|
||||||
|
linearLayout.addView(createButton(OverpassActivity.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
|
* Copyright 2019 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.SeekBar;
|
||||||
|
import android.widget.ToggleButton;
|
||||||
|
|
||||||
|
import org.oscim.renderer.ExtrusionRenderer;
|
||||||
|
import org.oscim.renderer.light.Sun;
|
||||||
|
|
||||||
|
public class ShadowActivity extends SimpleMapActivity implements SeekBar.OnSeekBarChangeListener {
|
||||||
|
|
||||||
|
private SeekBar mSeekBar;
|
||||||
|
|
||||||
|
public ShadowActivity() {
|
||||||
|
super(true, R.layout.activity_shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
mSeekBar = findViewById(R.id.seekBarShadow);
|
||||||
|
mSeekBar.setOnSeekBarChangeListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||||
|
int id = seekBar.getId();
|
||||||
|
if (id == R.id.seekBarShadow) {
|
||||||
|
Sun sun = mBuildingLayer.getExtrusionRenderer().getSun();
|
||||||
|
sun.setProgress(progress / 1000f);
|
||||||
|
sun.updatePosition();
|
||||||
|
sun.updateColor();
|
||||||
|
|
||||||
|
mMap.updateMap(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onToggleCurrentSun(View view) {
|
||||||
|
boolean isCurrentSun = ((ToggleButton) view).isChecked();
|
||||||
|
mSeekBar.setEnabled(!isCurrentSun);
|
||||||
|
ExtrusionRenderer extrusionRenderer = mBuildingLayer.getExtrusionRenderer();
|
||||||
|
extrusionRenderer.enableCurrentSunPos(isCurrentSun);
|
||||||
|
extrusionRenderer.getSun().update();
|
||||||
|
mSeekBar.setProgress((int) (extrusionRenderer.getSun().getProgress() * 1000));
|
||||||
|
mMap.updateMap(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2019 devemux86
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -19,6 +20,7 @@ package org.oscim.android.test;
|
|||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.core.MapPosition;
|
import org.oscim.core.MapPosition;
|
||||||
import org.oscim.core.MercatorProjection;
|
import org.oscim.core.MercatorProjection;
|
||||||
import org.oscim.layers.GroupLayer;
|
import org.oscim.layers.GroupLayer;
|
||||||
@@ -38,6 +40,23 @@ import org.oscim.theme.VtmThemes;
|
|||||||
public class SimpleMapActivity extends BaseMapActivity {
|
public class SimpleMapActivity extends BaseMapActivity {
|
||||||
private DefaultMapScaleBar mapScaleBar;
|
private DefaultMapScaleBar mapScaleBar;
|
||||||
|
|
||||||
|
BuildingLayer mBuildingLayer;
|
||||||
|
private boolean mShadow;
|
||||||
|
|
||||||
|
public SimpleMapActivity() {
|
||||||
|
this(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SimpleMapActivity(boolean shadow) {
|
||||||
|
super();
|
||||||
|
mShadow = shadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SimpleMapActivity(boolean shadow, int contentView) {
|
||||||
|
super(contentView);
|
||||||
|
mShadow = shadow;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -47,7 +66,8 @@ public class SimpleMapActivity extends BaseMapActivity {
|
|||||||
|
|
||||||
void createLayers() {
|
void createLayers() {
|
||||||
GroupLayer groupLayer = new GroupLayer(mMap);
|
GroupLayer groupLayer = new GroupLayer(mMap);
|
||||||
groupLayer.layers.add(new BuildingLayer(mMap, mBaseLayer));
|
mBuildingLayer = new BuildingLayer(mMap, mBaseLayer, false, mShadow);
|
||||||
|
groupLayer.layers.add(mBuildingLayer);
|
||||||
groupLayer.layers.add(new LabelLayer(mMap, mBaseLayer));
|
groupLayer.layers.add(new LabelLayer(mMap, mBaseLayer));
|
||||||
mMap.layers().add(groupLayer);
|
mMap.layers().add(groupLayer);
|
||||||
|
|
||||||
@@ -60,7 +80,7 @@ public class SimpleMapActivity extends BaseMapActivity {
|
|||||||
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
|
MapScaleBarLayer mapScaleBarLayer = new MapScaleBarLayer(mMap, mapScaleBar);
|
||||||
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
BitmapRenderer renderer = mapScaleBarLayer.getRenderer();
|
||||||
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
renderer.setPosition(GLViewport.Position.BOTTOM_LEFT);
|
||||||
renderer.setOffset(5 * getResources().getDisplayMetrics().density, 0);
|
renderer.setOffset(5 * CanvasAdapter.getScale(), 0);
|
||||||
mMap.layers().add(mapScaleBarLayer);
|
mMap.layers().add(mapScaleBarLayer);
|
||||||
|
|
||||||
mMap.setTheme(VtmThemes.DEFAULT);
|
mMap.setTheme(VtmThemes.DEFAULT);
|
||||||
@@ -108,6 +128,7 @@ public class SimpleMapActivity extends BaseMapActivity {
|
|||||||
|
|
||||||
p.setTilt((float) (Math.random() * 60));
|
p.setTilt((float) (Math.random() * 60));
|
||||||
p.setBearing((float) (Math.random() * 360));
|
p.setBearing((float) (Math.random() * 360));
|
||||||
|
p.setRoll((float) (Math.random() * 360));
|
||||||
//mMapView.map().setMapPosition(p);
|
//mMapView.map().setMapPosition(p);
|
||||||
|
|
||||||
mMapView.map().animator().animateTo(time, p);
|
mMapView.map().animator().animateTo(time, p);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import android.widget.SeekBar;
|
|||||||
import android.widget.SeekBar.OnSeekBarChangeListener;
|
import android.widget.SeekBar.OnSeekBarChangeListener;
|
||||||
import android.widget.ToggleButton;
|
import android.widget.ToggleButton;
|
||||||
|
|
||||||
|
import org.oscim.backend.canvas.Color;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
@@ -24,9 +25,6 @@ import org.oscim.theme.styles.RenderStyle;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import static org.oscim.utils.ColorUtil.modHsv;
|
|
||||||
import static org.oscim.utils.ColorUtil.shiftHue;
|
|
||||||
|
|
||||||
public class ThemeStylerActivity extends BaseMapActivity implements OnSeekBarChangeListener {
|
public class ThemeStylerActivity extends BaseMapActivity implements OnSeekBarChangeListener {
|
||||||
final Logger log = LoggerFactory.getLogger(ThemeStylerActivity.class);
|
final Logger log = LoggerFactory.getLogger(ThemeStylerActivity.class);
|
||||||
|
|
||||||
@@ -90,13 +88,10 @@ public class ThemeStylerActivity extends BaseMapActivity implements OnSeekBarCha
|
|||||||
}
|
}
|
||||||
|
|
||||||
int modColor(int color, HSV hsv) {
|
int modColor(int color, HSV hsv) {
|
||||||
return modHsv(shiftHue(color, hsv.hue), 1, hsv.sat, hsv.val, true);
|
return hsv.mod(color, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class HSV {
|
public static class HSV extends Color.HSV {
|
||||||
public double hue = 0;
|
|
||||||
public double sat = 1;
|
|
||||||
public double val = 1;
|
|
||||||
public boolean changed;
|
public boolean changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,16 +119,16 @@ public class ThemeStylerActivity extends BaseMapActivity implements OnSeekBarCha
|
|||||||
c = outlineColor;
|
c = outlineColor;
|
||||||
|
|
||||||
if (id == R.id.seekBarS)
|
if (id == R.id.seekBarS)
|
||||||
c.sat = progress / 50f;
|
c.saturation = progress / 50f;
|
||||||
else if (id == R.id.seekBarV)
|
else if (id == R.id.seekBarV)
|
||||||
c.val = progress / 50f;
|
c.value = progress / 50f;
|
||||||
else if (id == R.id.seekBarH)
|
else if (id == R.id.seekBarH)
|
||||||
c.hue = progress / 100f;
|
c.hue = progress / 100f;
|
||||||
|
|
||||||
log.debug((modArea ? "area" : "line")
|
log.debug((modArea ? "area" : "line")
|
||||||
+ " h:" + c.hue
|
+ " h:" + c.hue
|
||||||
+ " s:" + c.sat
|
+ " s:" + c.saturation
|
||||||
+ " v:" + c.val);
|
+ " v:" + c.value);
|
||||||
|
|
||||||
VectorTileLayer l = (VectorTileLayer) mMap.layers().get(1);
|
VectorTileLayer l = (VectorTileLayer) mMap.layers().get(1);
|
||||||
RenderTheme t = (RenderTheme) l.getTheme();
|
RenderTheme t = (RenderTheme) l.getTheme();
|
||||||
@@ -181,8 +176,8 @@ public class ThemeStylerActivity extends BaseMapActivity implements OnSeekBarCha
|
|||||||
}
|
}
|
||||||
if (c == null)
|
if (c == null)
|
||||||
return;
|
return;
|
||||||
((SeekBar) findViewById(R.id.seekBarS)).setProgress((int) (c.sat * 50));
|
((SeekBar) findViewById(R.id.seekBarS)).setProgress((int) (c.saturation * 50));
|
||||||
((SeekBar) findViewById(R.id.seekBarV)).setProgress((int) (c.val * 50));
|
((SeekBar) findViewById(R.id.seekBarV)).setProgress((int) (c.value * 50));
|
||||||
((SeekBar) findViewById(R.id.seekBarH)).setProgress((int) (c.hue * 100));
|
((SeekBar) findViewById(R.id.seekBarH)).setProgress((int) (c.hue * 100));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -25,7 +25,7 @@ import org.oscim.layers.vector.geometries.PointDrawable;
|
|||||||
import org.oscim.layers.vector.geometries.Style;
|
import org.oscim.layers.vector.geometries.Style;
|
||||||
import org.oscim.utils.ColorUtil;
|
import org.oscim.utils.ColorUtil;
|
||||||
|
|
||||||
public class VectorLayerMapActivity extends SimpleMapActivity {
|
public class VectorLayerActivity extends BitmapTileActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -3,6 +3,7 @@ apply plugin: 'com.github.dcendents.android-maven'
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api project(':vtm')
|
api project(':vtm')
|
||||||
|
api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@@ -25,7 +26,6 @@ android {
|
|||||||
main {
|
main {
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
java.srcDirs = ['src']
|
java.srcDirs = ['src']
|
||||||
resources.srcDirs = ['src']
|
|
||||||
}
|
}
|
||||||
debug.setRoot('build-types/debug')
|
debug.setRoot('build-types/debug')
|
||||||
release.setRoot('build-types/release')
|
release.setRoot('build-types/release')
|
||||||
@@ -40,8 +40,11 @@ android.libraryVariants.all { variant ->
|
|||||||
return
|
return
|
||||||
|
|
||||||
def jar = project.tasks.create "jar${name.capitalize()}", Jar
|
def jar = project.tasks.create "jar${name.capitalize()}", Jar
|
||||||
jar.dependsOn variant.javaCompiler
|
jar.dependsOn variant.javaCompileProvider
|
||||||
jar.from variant.javaCompiler.destinationDir
|
jar.exclude '**/BuildConfig.class'
|
||||||
|
jar.exclude '**/R.class'
|
||||||
|
jar.exclude '**/R$*.class'
|
||||||
|
jar.from variant.javaCompileProvider.get().destinationDir
|
||||||
artifacts.add('archives', jar)
|
artifacts.add('archives', jar)
|
||||||
|
|
||||||
file('natives').eachDir() { dir ->
|
file('natives').eachDir() { dir ->
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -19,6 +20,8 @@ package org.oscim.gdx;
|
|||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.opengl.GLES20;
|
import android.opengl.GLES20;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.backends.android.AndroidGL20;
|
||||||
|
|
||||||
import org.oscim.backend.GL;
|
import org.oscim.backend.GL;
|
||||||
|
|
||||||
import java.nio.Buffer;
|
import java.nio.Buffer;
|
||||||
@@ -28,6 +31,8 @@ import java.nio.IntBuffer;
|
|||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
public class AndroidGL implements GL {
|
public class AndroidGL implements GL {
|
||||||
|
|
||||||
|
private static final AndroidGL20 androidGL = new AndroidGL20();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void attachShader(int program, int shader) {
|
public void attachShader(int program, int shader) {
|
||||||
GLES20.glAttachShader(program, shader);
|
GLES20.glAttachShader(program, shader);
|
||||||
@@ -103,11 +108,21 @@ public class AndroidGL implements GL {
|
|||||||
return GLES20.glCreateShader(type);
|
return GLES20.glCreateShader(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteBuffer(int buffer) {
|
||||||
|
androidGL.glDeleteBuffer(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteBuffers(int n, IntBuffer buffers) {
|
public void deleteBuffers(int n, IntBuffer buffers) {
|
||||||
GLES20.glDeleteBuffers(n, buffers);
|
GLES20.glDeleteBuffers(n, buffers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteFramebuffer(int framebuffer) {
|
||||||
|
androidGL.glDeleteFramebuffer(framebuffer);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteFramebuffers(int n, IntBuffer framebuffers) {
|
public void deleteFramebuffers(int n, IntBuffer framebuffers) {
|
||||||
GLES20.glDeleteFramebuffers(n, framebuffers);
|
GLES20.glDeleteFramebuffers(n, framebuffers);
|
||||||
@@ -118,6 +133,11 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glDeleteProgram(program);
|
GLES20.glDeleteProgram(program);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteRenderbuffer(int renderbuffer) {
|
||||||
|
androidGL.glDeleteRenderbuffer(renderbuffer);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteRenderbuffers(int n, IntBuffer renderbuffers) {
|
public void deleteRenderbuffers(int n, IntBuffer renderbuffers) {
|
||||||
GLES20.glDeleteRenderbuffers(n, renderbuffers);
|
GLES20.glDeleteRenderbuffers(n, renderbuffers);
|
||||||
@@ -160,6 +180,11 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glFramebufferTexture2D(target, attachment, textarget, texture, level);
|
GLES20.glFramebufferTexture2D(target, attachment, textarget, texture, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genBuffer() {
|
||||||
|
return androidGL.glGenBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void genBuffers(int n, IntBuffer buffers) {
|
public void genBuffers(int n, IntBuffer buffers) {
|
||||||
GLES20.glGenBuffers(n, buffers);
|
GLES20.glGenBuffers(n, buffers);
|
||||||
@@ -170,11 +195,21 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glGenerateMipmap(target);
|
GLES20.glGenerateMipmap(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genFramebuffer() {
|
||||||
|
return androidGL.glGenFramebuffer();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void genFramebuffers(int n, IntBuffer framebuffers) {
|
public void genFramebuffers(int n, IntBuffer framebuffers) {
|
||||||
GLES20.glGenFramebuffers(n, framebuffers);
|
GLES20.glGenFramebuffers(n, framebuffers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genRenderbuffer() {
|
||||||
|
return androidGL.glGenRenderbuffer();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void genRenderbuffers(int n, IntBuffer renderbuffers) {
|
public void genRenderbuffers(int n, IntBuffer renderbuffers) {
|
||||||
GLES20.glGenRenderbuffers(n, renderbuffers);
|
GLES20.glGenRenderbuffers(n, renderbuffers);
|
||||||
@@ -187,14 +222,12 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getActiveUniform(int program, int index, IntBuffer size, Buffer type) {
|
public String getActiveUniform(int program, int index, IntBuffer size, Buffer type) {
|
||||||
//return GLES20.glGetActiveUniform(program, index, bufsize, length, size, type, name);
|
return androidGL.glGetActiveUniform(program, index, size, type);
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getAttachedShaders(int program, int maxcount, Buffer count, IntBuffer shaders) {
|
public void getAttachedShaders(int program, int maxcount, Buffer count, IntBuffer shaders) {
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
androidGL.glGetAttachedShaders(program, maxcount, count, shaders);
|
||||||
//GLES20.glGetAttachedShaders(program, maxcount, count, shaders);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -204,8 +237,7 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getBooleanv(int pname, Buffer params) {
|
public void getBooleanv(int pname, Buffer params) {
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
androidGL.glGetBooleanv(pname, params);
|
||||||
//GLES20.glGetBooleanv(pname, params);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -260,11 +292,6 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
|
GLES20.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getShaderSource(int shader, int bufsize, Buffer length, String source) {
|
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getTexParameterfv(int target, int pname, FloatBuffer params) {
|
public void getTexParameterfv(int target, int pname, FloatBuffer params) {
|
||||||
GLES20.glGetTexParameterfv(target, pname, params);
|
GLES20.glGetTexParameterfv(target, pname, params);
|
||||||
@@ -308,8 +335,7 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getVertexAttribPointerv(int index, int pname, Buffer pointer) {
|
public void getVertexAttribPointerv(int index, int pname, Buffer pointer) {
|
||||||
//GLES20.glGetVertexAttribPointerv(index, pname, pointer);
|
androidGL.glGetVertexAttribPointerv(index, pname, pointer);
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -431,6 +457,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform1fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform1fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform1i(int location, int x) {
|
public void uniform1i(int location, int x) {
|
||||||
GLES20.glUniform1i(location, x);
|
GLES20.glUniform1i(location, x);
|
||||||
@@ -443,6 +474,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform1iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform1iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform2f(int location, float x, float y) {
|
public void uniform2f(int location, float x, float y) {
|
||||||
GLES20.glUniform2f(location, x, y);
|
GLES20.glUniform2f(location, x, y);
|
||||||
@@ -455,6 +491,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform2fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform2fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform2i(int location, int x, int y) {
|
public void uniform2i(int location, int x, int y) {
|
||||||
GLES20.glUniform2i(location, x, y);
|
GLES20.glUniform2i(location, x, y);
|
||||||
@@ -467,6 +508,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform2iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform2iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform3f(int location, float x, float y, float z) {
|
public void uniform3f(int location, float x, float y, float z) {
|
||||||
GLES20.glUniform3f(location, x, y, z);
|
GLES20.glUniform3f(location, x, y, z);
|
||||||
@@ -479,6 +525,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform3fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform3fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform3i(int location, int x, int y, int z) {
|
public void uniform3i(int location, int x, int y, int z) {
|
||||||
GLES20.glUniform3i(location, x, y, z);
|
GLES20.glUniform3i(location, x, y, z);
|
||||||
@@ -491,6 +542,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform3iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform3iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform4f(int location, float x, float y, float z, float w) {
|
public void uniform4f(int location, float x, float y, float z, float w) {
|
||||||
GLES20.glUniform4f(location, x, y, z, w);
|
GLES20.glUniform4f(location, x, y, z, w);
|
||||||
@@ -501,6 +557,11 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glUniform4fv(location, count, v);
|
GLES20.glUniform4fv(location, count, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform4fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform4fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform4i(int location, int x, int y, int z, int w) {
|
public void uniform4i(int location, int x, int y, int z, int w) {
|
||||||
GLES20.glUniform4i(location, x, y, z, w);
|
GLES20.glUniform4i(location, x, y, z, w);
|
||||||
@@ -513,24 +574,44 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform4iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform4iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer value) {
|
public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer value) {
|
||||||
GLES20.glUniformMatrix2fv(location, count, transpose, value);
|
GLES20.glUniformMatrix2fv(location, count, transpose, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix2fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
GLES20.glUniformMatrix2fv(location, count, transpose, value, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value) {
|
public void uniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value) {
|
||||||
GLES20.glUniformMatrix3fv(location, count, transpose, value);
|
GLES20.glUniformMatrix3fv(location, count, transpose, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix3fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
GLES20.glUniformMatrix3fv(location, count, transpose, value, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value) {
|
public void uniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value) {
|
||||||
GLES20.glUniformMatrix4fv(location, count, transpose, value);
|
GLES20.glUniformMatrix4fv(location, count, transpose, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix4fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
GLES20.glUniformMatrix4fv(location, count, transpose, value, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void useProgram(int program) {
|
public void useProgram(int program) {
|
||||||
GLES20.glUseProgram(program);
|
GLES20.glUseProgram(program);
|
||||||
@@ -656,15 +737,13 @@ public class AndroidGL implements GL {
|
|||||||
@Override
|
@Override
|
||||||
public void compressedTexImage2D(int target, int level, int internalformat, int width,
|
public void compressedTexImage2D(int target, int level, int internalformat, int width,
|
||||||
int height, int border, int imageSize, Buffer data) {
|
int height, int border, int imageSize, Buffer data) {
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
androidGL.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset,
|
public void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset,
|
||||||
int width, int height, int format, int imageSize, Buffer data) {
|
int width, int height, int format, int imageSize, Buffer data) {
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
androidGL.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -691,6 +770,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTexture(int texture) {
|
||||||
|
androidGL.glDeleteTexture(texture);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void depthFunc(int func) {
|
public void depthFunc(int func) {
|
||||||
GLES20.glDepthFunc(func);
|
GLES20.glDepthFunc(func);
|
||||||
@@ -757,6 +841,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genTexture() {
|
||||||
|
return androidGL.glGenTexture();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getError() {
|
public int getError() {
|
||||||
return GLES20.glGetError();
|
return GLES20.glGetError();
|
||||||
@@ -837,8 +926,7 @@ public class AndroidGL implements GL {
|
|||||||
@Override
|
@Override
|
||||||
public void texSubImage2D(int target, int level, int xoffset, int yoffset, int width,
|
public void texSubImage2D(int target, int level, int xoffset, int yoffset, int width,
|
||||||
int height, int format, int type, Buffer pixels) {
|
int height, int format, int type, Buffer pixels) {
|
||||||
GLES20
|
GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
|
||||||
.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
878
vtm-android-gdx/src/org/oscim/gdx/AndroidGL30.java
Normal file
@@ -0,0 +1,878 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
|
*
|
||||||
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2014 See AUTHORS file.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
package org.oscim.gdx;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.opengl.GLES30;
|
||||||
|
|
||||||
|
import org.oscim.backend.GL30;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGL30.java
|
||||||
|
*/
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
public class AndroidGL30 extends AndroidGL implements GL30 {
|
||||||
|
@Override
|
||||||
|
public void readBuffer(int mode) {
|
||||||
|
GLES30.glReadBuffer(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawRangeElements(int mode, int start, int end, int count, int type, java.nio.Buffer indices) {
|
||||||
|
GLES30.glDrawRangeElements(mode, start, end, count, type, indices);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawRangeElements(int mode, int start, int end, int count, int type, int offset) {
|
||||||
|
GLES30.glDrawRangeElements(mode, start, end, count, type, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format,
|
||||||
|
int type, java.nio.Buffer pixels) {
|
||||||
|
if (pixels == null)
|
||||||
|
GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, 0);
|
||||||
|
else
|
||||||
|
GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format,
|
||||||
|
int type, int offset) {
|
||||||
|
GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth,
|
||||||
|
int format, int type, java.nio.Buffer pixels) {
|
||||||
|
GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth,
|
||||||
|
int format, int type, int offset) {
|
||||||
|
GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width,
|
||||||
|
int height) {
|
||||||
|
GLES30.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int
|
||||||
|
// imageSize, java.nio.Buffer data) {
|
||||||
|
// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int
|
||||||
|
// imageSize, int offset) {
|
||||||
|
// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int
|
||||||
|
// depth, int format, int imageSize, java.nio.Buffer data) {
|
||||||
|
// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int
|
||||||
|
// depth, int format, int imageSize, int offset) {
|
||||||
|
// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genQueries(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glGenQueries(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genQueries(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glGenQueries(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteQueries(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glDeleteQueries(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteQueries(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glDeleteQueries(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isQuery(int id) {
|
||||||
|
return GLES30.glIsQuery(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beginQuery(int target, int id) {
|
||||||
|
GLES30.glBeginQuery(target, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endQuery(int target) {
|
||||||
|
GLES30.glEndQuery(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getQueryiv(int target, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetQueryiv(target, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getQueryiv(int target, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetQueryiv(target, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getQueryObjectuiv(int id, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetQueryObjectuiv(id, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getQueryObjectuiv(int id, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetQueryObjectuiv(id, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean unmapBuffer(int target) {
|
||||||
|
return GLES30.glUnmapBuffer(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public java.nio.Buffer getBufferPointerv(int target, int pname) {
|
||||||
|
return GLES30.glGetBufferPointerv(target, pname);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void drawBuffers(int n, int[] bufs, int offset) {
|
||||||
|
// GLES30.glDrawBuffers(n, bufs, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawBuffers(int n, java.nio.IntBuffer bufs) {
|
||||||
|
GLES30.glDrawBuffers(n, bufs);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix2x3fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix2x3fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix2x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix2x3fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix3x2fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix3x2fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix3x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix3x2fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix2x4fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix2x4fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix2x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix2x4fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix4x2fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix4x2fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix4x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix4x2fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix3x4fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix3x4fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix3x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix3x4fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix4x3fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix4x3fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix4x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix4x3fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1,
|
||||||
|
int mask, int filter) {
|
||||||
|
GLES30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) {
|
||||||
|
GLES30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void framebufferTextureLayer(int target, int attachment, int texture, int level, int layer) {
|
||||||
|
GLES30.glFramebufferTextureLayer(target, attachment, texture, level, layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public java.nio.Buffer mapBufferRange(int target, int offset, int length, int access) {
|
||||||
|
// return GLES30.glMapBufferRange(target, offset, length, access);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void flushMappedBufferRange(int target, int offset, int length) {
|
||||||
|
GLES30.glFlushMappedBufferRange(target, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindVertexArray(int array) {
|
||||||
|
GLES30.glBindVertexArray(array);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteVertexArrays(int n, int[] arrays, int offset) {
|
||||||
|
GLES30.glDeleteVertexArrays(n, arrays, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteVertexArrays(int n, java.nio.IntBuffer arrays) {
|
||||||
|
GLES30.glDeleteVertexArrays(n, arrays);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genVertexArrays(int n, int[] arrays, int offset) {
|
||||||
|
GLES30.glGenVertexArrays(n, arrays, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genVertexArrays(int n, java.nio.IntBuffer arrays) {
|
||||||
|
GLES30.glGenVertexArrays(n, arrays);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVertexArray(int array) {
|
||||||
|
return GLES30.glIsVertexArray(array);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getIntegeri_v(int target, int index, int[] data, int offset) {
|
||||||
|
// GLES30.glGetIntegeri_v(target, index, data, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getIntegeri_v(int target, int index, java.nio.IntBuffer data) {
|
||||||
|
// GLES30.glGetIntegeri_v(target, index, data);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beginTransformFeedback(int primitiveMode) {
|
||||||
|
GLES30.glBeginTransformFeedback(primitiveMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endTransformFeedback() {
|
||||||
|
GLES30.glEndTransformFeedback();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindBufferRange(int target, int index, int buffer, int offset, int size) {
|
||||||
|
GLES30.glBindBufferRange(target, index, buffer, offset, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindBufferBase(int target, int index, int buffer) {
|
||||||
|
GLES30.glBindBufferBase(target, index, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transformFeedbackVaryings(int program, String[] varyings, int bufferMode) {
|
||||||
|
GLES30.glTransformFeedbackVaryings(program, varyings, bufferMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getTransformFeedbackVarying(int program, int index, int bufsize, int[] length, int lengthOffset, int[] size, int
|
||||||
|
// sizeOffset, int[] type, int typeOffset, byte[] name, int nameOffset) {
|
||||||
|
// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, lengthOffset, size, sizeOffset, type, typeOffset, name,
|
||||||
|
// nameOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getTransformFeedbackVarying(int program, int index, int bufsize, java.nio.IntBuffer length, java.nio.IntBuffer
|
||||||
|
// size, java.nio.IntBuffer type, byte name) {
|
||||||
|
// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, size, type, name);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public String getTransformFeedbackVarying(int program, int index, int[] size, int sizeOffset, int[] type, int typeOffset) {
|
||||||
|
// return GLES30.glGetTransformFeedbackVarying(program, index, size, sizeOffset, type, typeOffset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public String getTransformFeedbackVarying(int program, int index, java.nio.IntBuffer size, java.nio.IntBuffer type) {
|
||||||
|
// return GLES30.glGetTransformFeedbackVarying(program, index, size, type);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribIPointer(int index, int size, int type, int stride, int offset) {
|
||||||
|
GLES30.glVertexAttribIPointer(index, size, type, stride, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getVertexAttribIiv(int index, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetVertexAttribIiv(index, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getVertexAttribIiv(int index, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetVertexAttribIiv(index, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getVertexAttribIuiv(int index, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetVertexAttribIuiv(index, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getVertexAttribIuiv(int index, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetVertexAttribIuiv(index, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribI4i(int index, int x, int y, int z, int w) {
|
||||||
|
GLES30.glVertexAttribI4i(index, x, y, z, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribI4ui(int index, int x, int y, int z, int w) {
|
||||||
|
GLES30.glVertexAttribI4ui(index, x, y, z, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4iv(int index, int[] v, int offset) {
|
||||||
|
// GLES30.glVertexAttribI4iv(index, v, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4iv(int index, java.nio.IntBuffer v) {
|
||||||
|
// GLES30.glVertexAttribI4iv(index, v);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4uiv(int index, int[] v, int offset) {
|
||||||
|
// GLES30.glVertexAttribI4uiv(index, v, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4uiv(int index, java.nio.IntBuffer v) {
|
||||||
|
// GLES30.glVertexAttribI4uiv(index, v);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getUniformuiv(int program, int location, int[] params, int offset) {
|
||||||
|
// GLES30.glGetUniformuiv(program, location, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getUniformuiv(int program, int location, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetUniformuiv(program, location, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFragDataLocation(int program, String name) {
|
||||||
|
return GLES30.glGetFragDataLocation(program, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform1ui(int location, int v0) {
|
||||||
|
// GLES30.glUniform1ui(location, v0);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform2ui(int location, int v0, int v1) {
|
||||||
|
// GLES30.glUniform2ui(location, v0, v1);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform3ui(int location, int v0, int v1, int v2) {
|
||||||
|
// GLES30.glUniform3ui(location, v0, v1, v2);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform4ui(int location, int v0, int v1, int v2, int v3) {
|
||||||
|
// GLES30.glUniform4ui(location, v0, v1, v2, v3);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform1uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform1uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform1uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glUniform1uiv(location, count, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform2uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform2uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform2uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
// GLES30.glUniform2uiv(location, count, value);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform3uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform3uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform3uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glUniform3uiv(location, count, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform4uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform4uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform4uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glUniform4uiv(location, count, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void clearBufferiv(int buffer, int drawbuffer, int[] value, int offset) {
|
||||||
|
// GLES30.glClearBufferiv(buffer, drawbuffer, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferiv(int buffer, int drawbuffer, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glClearBufferiv(buffer, drawbuffer, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void clearBufferuiv(int buffer, int drawbuffer, int[] value, int offset) {
|
||||||
|
// GLES30.glClearBufferuiv(buffer, drawbuffer, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferuiv(int buffer, int drawbuffer, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glClearBufferuiv(buffer, drawbuffer, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void clearBufferfv(int buffer, int drawbuffer, float[] value, int offset) {
|
||||||
|
// GLES30.glClearBufferfv(buffer, drawbuffer, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferfv(int buffer, int drawbuffer, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glClearBufferfv(buffer, drawbuffer, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferfi(int buffer, int drawbuffer, float depth, int stencil) {
|
||||||
|
GLES30.glClearBufferfi(buffer, drawbuffer, depth, stencil);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getStringi(int name, int index) {
|
||||||
|
return GLES30.glGetStringi(name, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) {
|
||||||
|
GLES30.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getUniformIndices(int program, String[] uniformNames, int[] uniformIndices, int uniformIndicesOffset) {
|
||||||
|
// GLES30.glGetUniformIndices(program, uniformNames, uniformIndices, uniformIndicesOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getUniformIndices(int program, String[] uniformNames, java.nio.IntBuffer uniformIndices) {
|
||||||
|
GLES30.glGetUniformIndices(program, uniformNames, uniformIndices);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getActiveUniformsiv(int program, int uniformCount, int[] uniformIndices, int uniformIndicesOffset, int pname,
|
||||||
|
// int[] params, int paramsOffset) {
|
||||||
|
// GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, uniformIndicesOffset, pname, params, paramsOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getActiveUniformsiv(int program, int uniformCount, java.nio.IntBuffer uniformIndices, int pname,
|
||||||
|
java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getUniformBlockIndex(int program, String uniformBlockName) {
|
||||||
|
return GLES30.glGetUniformBlockIndex(program, uniformBlockName);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getActiveUniformBlockName(int program, int uniformBlockIndex, int bufSize, int[] length, int lengthOffset, byte[]
|
||||||
|
// uniformBlockName, int uniformBlockNameOffset) {
|
||||||
|
// GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, lengthOffset, uniformBlockName,
|
||||||
|
// uniformBlockNameOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getActiveUniformBlockName(int program, int uniformBlockIndex, java.nio.Buffer length,
|
||||||
|
java.nio.Buffer uniformBlockName) {
|
||||||
|
GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, length, uniformBlockName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getActiveUniformBlockName(int program, int uniformBlockIndex) {
|
||||||
|
return GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding) {
|
||||||
|
GLES30.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawArraysInstanced(int mode, int first, int count, int instanceCount) {
|
||||||
|
GLES30.glDrawArraysInstanced(mode, first, count, instanceCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void drawElementsInstanced(int mode, int count, int type, java.nio.Buffer indices, int instanceCount) {
|
||||||
|
// GLES30.glDrawElementsInstanced(mode, count, type, indices, instanceCount);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount) {
|
||||||
|
GLES30.glDrawElementsInstanced(mode, count, type, indicesOffset, instanceCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public long fenceSync(int condition, int flags) {
|
||||||
|
// return GLES30.glFenceSync(condition, flags);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public boolean isSync(long sync) {
|
||||||
|
// return GLES30.glIsSync(sync);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void deleteSync(long sync) {
|
||||||
|
// GLES30.glDeleteSync(sync);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public int clientWaitSync(long sync, int flags, long timeout) {
|
||||||
|
// return GLES30.glClientWaitSync(sync, flags, timeout);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void waitSync(long sync, int flags, long timeout) {
|
||||||
|
// GLES30.glWaitSync(sync, flags, timeout);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInteger64v(int pname, long[] params, int offset) {
|
||||||
|
// GLES30.glGetInteger64v(pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getInteger64v(int pname, java.nio.LongBuffer params) {
|
||||||
|
GLES30.glGetInteger64v(pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getSynciv(long sync, int pname, int bufSize, int[] length, int lengthOffset, int[] values, int valuesOffset) {
|
||||||
|
// GLES30.glGetSynciv(sync, pname, bufSize, length, lengthOffset, values, valuesOffset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getSynciv(long sync, int pname, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer values) {
|
||||||
|
// GLES30.glGetSynciv(sync, pname, bufSize, length, values);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInteger64i_v(int target, int index, long[] data, int offset) {
|
||||||
|
// GLES30.glGetInteger64i_v(target, index, data, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInteger64i_v(int target, int index, java.nio.LongBuffer data) {
|
||||||
|
// GLES30.glGetInteger64i_v(target, index, data);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getBufferParameteri64v(int target, int pname, long[] params, int offset) {
|
||||||
|
// GLES30.glGetBufferParameteri64v(target, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getBufferParameteri64v(int target, int pname, java.nio.LongBuffer params) {
|
||||||
|
GLES30.glGetBufferParameteri64v(target, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genSamplers(int count, int[] samplers, int offset) {
|
||||||
|
GLES30.glGenSamplers(count, samplers, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genSamplers(int count, java.nio.IntBuffer samplers) {
|
||||||
|
GLES30.glGenSamplers(count, samplers);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteSamplers(int count, int[] samplers, int offset) {
|
||||||
|
GLES30.glDeleteSamplers(count, samplers, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteSamplers(int count, java.nio.IntBuffer samplers) {
|
||||||
|
GLES30.glDeleteSamplers(count, samplers);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSampler(int sampler) {
|
||||||
|
return GLES30.glIsSampler(sampler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindSampler(int unit, int sampler) {
|
||||||
|
GLES30.glBindSampler(unit, sampler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameteri(int sampler, int pname, int param) {
|
||||||
|
GLES30.glSamplerParameteri(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void samplerParameteriv(int sampler, int pname, int[] param, int offset) {
|
||||||
|
// GLES30.glSamplerParameteriv(sampler, pname, param, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameteriv(int sampler, int pname, java.nio.IntBuffer param) {
|
||||||
|
GLES30.glSamplerParameteriv(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameterf(int sampler, int pname, float param) {
|
||||||
|
GLES30.glSamplerParameterf(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void samplerParameterfv(int sampler, int pname, float[] param, int offset) {
|
||||||
|
// GLES30.glSamplerParameterfv(sampler, pname, param, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameterfv(int sampler, int pname, java.nio.FloatBuffer param) {
|
||||||
|
GLES30.glSamplerParameterfv(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getSamplerParameteriv(int sampler, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetSamplerParameteriv(sampler, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getSamplerParameteriv(int sampler, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetSamplerParameteriv(sampler, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getSamplerParameterfv(int sampler, int pname, float[] params, int offset) {
|
||||||
|
// GLES30.glGetSamplerParameterfv(sampler, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getSamplerParameterfv(int sampler, int pname, java.nio.FloatBuffer params) {
|
||||||
|
GLES30.glGetSamplerParameterfv(sampler, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribDivisor(int index, int divisor) {
|
||||||
|
GLES30.glVertexAttribDivisor(index, divisor);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindTransformFeedback(int target, int id) {
|
||||||
|
GLES30.glBindTransformFeedback(target, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTransformFeedbacks(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glDeleteTransformFeedbacks(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTransformFeedbacks(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glDeleteTransformFeedbacks(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genTransformFeedbacks(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glGenTransformFeedbacks(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genTransformFeedbacks(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glGenTransformFeedbacks(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTransformFeedback(int id) {
|
||||||
|
return GLES30.glIsTransformFeedback(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pauseTransformFeedback() {
|
||||||
|
GLES30.glPauseTransformFeedback();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void resumeTransformFeedback() {
|
||||||
|
GLES30.glResumeTransformFeedback();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getProgramBinary(int program, int bufSize, int[] length, int lengthOffset, int[] binaryFormat, int
|
||||||
|
// binaryFormatOffset, java.nio.Buffer binary) {
|
||||||
|
// GLES30.glGetProgramBinary(program, bufSize, length, lengthOffset, binaryFormat, binaryFormatOffset, binary);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getProgramBinary(int program, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer binaryFormat,
|
||||||
|
// java.nio.Buffer binary) {
|
||||||
|
// GLES30.glGetProgramBinary(program, bufSize, length, binaryFormat, binary);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void programBinary(int program, int binaryFormat, java.nio.Buffer binary, int length) {
|
||||||
|
// GLES30.glProgramBinary(program, binaryFormat, binary, length);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void programParameteri(int program, int pname, int value) {
|
||||||
|
GLES30.glProgramParameteri(program, pname, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void invalidateFramebuffer(int target, int numAttachments, int[] attachments, int offset) {
|
||||||
|
// GLES30.glInvalidateFramebuffer(target, numAttachments, attachments, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidateFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments) {
|
||||||
|
GLES30.glInvalidateFramebuffer(target, numAttachments, attachments);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void invalidateSubFramebuffer(int target, int numAttachments, int[] attachments, int offset, int x, int y, int width,
|
||||||
|
// int height) {
|
||||||
|
// GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, offset, x, y, width, height);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidateSubFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments, int x, int y,
|
||||||
|
int width, int height) {
|
||||||
|
GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void texStorage2D(int target, int levels, int internalformat, int width, int height) {
|
||||||
|
// GLES30.glTexStorage2D(target, levels, internalformat, width, height);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void texStorage3D(int target, int levels, int internalformat, int width, int height, int depth) {
|
||||||
|
// GLES30.glTexStorage3D(target, levels, internalformat, width, height, depth);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, int[] params, int offset) {
|
||||||
|
// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, java.nio.IntBuffer params) {
|
||||||
|
// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params);
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ apply plugin: 'com.github.dcendents.android-maven'
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api project(':vtm')
|
api project(':vtm')
|
||||||
api 'com.caverock:androidsvg:1.2.2-beta-1'
|
api 'com.caverock:androidsvg:1.3'
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@@ -26,7 +26,6 @@ android {
|
|||||||
main {
|
main {
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
java.srcDirs = ['src']
|
java.srcDirs = ['src']
|
||||||
resources.srcDirs = ['src']
|
|
||||||
}
|
}
|
||||||
debug.setRoot('build-types/debug')
|
debug.setRoot('build-types/debug')
|
||||||
release.setRoot('build-types/release')
|
release.setRoot('build-types/release')
|
||||||
@@ -41,8 +40,11 @@ android.libraryVariants.all { variant ->
|
|||||||
return
|
return
|
||||||
|
|
||||||
def jar = project.tasks.create "jar${name.capitalize()}", Jar
|
def jar = project.tasks.create "jar${name.capitalize()}", Jar
|
||||||
jar.dependsOn variant.javaCompiler
|
jar.dependsOn variant.javaCompileProvider
|
||||||
jar.from variant.javaCompiler.destinationDir
|
jar.exclude '**/BuildConfig.class'
|
||||||
|
jar.exclude '**/R.class'
|
||||||
|
jar.exclude '**/R$*.class'
|
||||||
|
jar.from variant.javaCompileProvider.get().destinationDir
|
||||||
artifacts.add('archives', jar)
|
artifacts.add('archives', jar)
|
||||||
|
|
||||||
file('natives').eachDir() { dir ->
|
file('natives').eachDir() { dir ->
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012 Hannes Janetzek
|
* Copyright 2012 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2019 devemux86
|
||||||
|
* Copyright 2018-2019 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -19,38 +20,55 @@ package org.oscim.android;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.graphics.Point;
|
||||||
import android.opengl.GLSurfaceView;
|
import android.opengl.GLSurfaceView;
|
||||||
|
import android.os.Build;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
|
import android.view.Display;
|
||||||
import android.view.GestureDetector;
|
import android.view.GestureDetector;
|
||||||
|
import android.view.WindowManager;
|
||||||
import org.oscim.android.canvas.AndroidGraphics;
|
import org.oscim.android.canvas.AndroidGraphics;
|
||||||
import org.oscim.android.gl.AndroidGL;
|
import org.oscim.android.gl.AndroidGL;
|
||||||
|
import org.oscim.android.gl.AndroidGL30;
|
||||||
import org.oscim.android.gl.GlConfigChooser;
|
import org.oscim.android.gl.GlConfigChooser;
|
||||||
|
import org.oscim.android.gl.GlContextFactory;
|
||||||
import org.oscim.android.input.AndroidMotionEvent;
|
import org.oscim.android.input.AndroidMotionEvent;
|
||||||
import org.oscim.android.input.GestureHandler;
|
import org.oscim.android.input.GestureHandler;
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
import org.oscim.backend.DateTime;
|
||||||
|
import org.oscim.backend.DateTimeAdapter;
|
||||||
import org.oscim.backend.GLAdapter;
|
import org.oscim.backend.GLAdapter;
|
||||||
import org.oscim.core.Tile;
|
import org.oscim.core.Tile;
|
||||||
import org.oscim.map.Map;
|
import org.oscim.map.Map;
|
||||||
|
import org.oscim.renderer.MapRenderer;
|
||||||
import org.oscim.utils.Parameters;
|
import org.oscim.utils.Parameters;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.microedition.khronos.egl.EGLConfig;
|
import javax.microedition.khronos.egl.EGLConfig;
|
||||||
import javax.microedition.khronos.opengles.GL10;
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The MapView,
|
* The MapView,
|
||||||
* <p/>
|
* <p/>
|
||||||
* add it your App, have a map!
|
* add it your App, have a map!
|
||||||
* <p/>
|
* <p/>
|
||||||
* Dont forget to call onPause / onResume!
|
* Don't forget to call onPause / onResume!
|
||||||
*/
|
*/
|
||||||
public class MapView extends GLSurfaceView {
|
public class MapView extends GLSurfaceView {
|
||||||
|
|
||||||
static final Logger log = LoggerFactory.getLogger(MapView.class);
|
static final Logger log = LoggerFactory.getLogger(MapView.class);
|
||||||
|
|
||||||
|
private static final Pattern GL_PATTERN = Pattern.compile("OpenGL ES (\\d(\\.\\d){0,2})");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Target OpenGL ES version, if not available fall back to OpenGL ES 2.0
|
||||||
|
*/
|
||||||
|
public static double targetGLESVersion = 3.0;
|
||||||
|
|
||||||
private static void init() {
|
private static void init() {
|
||||||
System.loadLibrary("vtm-jni");
|
System.loadLibrary("vtm-jni");
|
||||||
}
|
}
|
||||||
@@ -59,6 +77,8 @@ public class MapView extends GLSurfaceView {
|
|||||||
protected GestureDetector mGestureDetector;
|
protected GestureDetector mGestureDetector;
|
||||||
protected AndroidMotionEvent mMotionEvent;
|
protected AndroidMotionEvent mMotionEvent;
|
||||||
|
|
||||||
|
private final Point mScreenSize = new Point();
|
||||||
|
|
||||||
public MapView(Context context) {
|
public MapView(Context context) {
|
||||||
this(context, null);
|
this(context, null);
|
||||||
}
|
}
|
||||||
@@ -80,19 +100,42 @@ public class MapView extends GLSurfaceView {
|
|||||||
/* Setup android backend */
|
/* Setup android backend */
|
||||||
AndroidGraphics.init();
|
AndroidGraphics.init();
|
||||||
AndroidAssets.init(context);
|
AndroidAssets.init(context);
|
||||||
GLAdapter.init(new AndroidGL());
|
DateTimeAdapter.init(new DateTime());
|
||||||
|
|
||||||
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
||||||
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
||||||
if (!Parameters.CUSTOM_TILE_SIZE)
|
if (!Parameters.CUSTOM_TILE_SIZE)
|
||||||
Tile.SIZE = Tile.calculateTileSize();
|
Tile.SIZE = Tile.calculateTileSize();
|
||||||
|
|
||||||
|
WindowManager windowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||||
|
Display display = windowManager.getDefaultDisplay();
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
|
||||||
|
display.getSize(mScreenSize);
|
||||||
|
else {
|
||||||
|
mScreenSize.x = display.getWidth();
|
||||||
|
mScreenSize.y = display.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Parameters.CUSTOM_COORD_SCALE) {
|
||||||
|
if (Math.min(mScreenSize.x, mScreenSize.y) > 1080)
|
||||||
|
MapRenderer.COORD_SCALE = 4.0f;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the Map */
|
/* Initialize the Map */
|
||||||
mMap = new AndroidMap(this);
|
mMap = new AndroidMap(this);
|
||||||
|
|
||||||
/* Initialize Renderer */
|
/* Initialize Renderer */
|
||||||
|
// OpenGL ES 3.0 is supported with Android 4.3 (API level 18) and higher
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
||||||
|
try {
|
||||||
|
setEGLContextFactory(new GlContextFactory());
|
||||||
|
} catch (Throwable t) {
|
||||||
|
log.error("Falling back to GLES 2", t);
|
||||||
|
setEGLContextClientVersion(2);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
setEGLContextClientVersion(2);
|
||||||
setEGLConfigChooser(new GlConfigChooser());
|
setEGLConfigChooser(new GlConfigChooser());
|
||||||
setEGLContextClientVersion(2);
|
|
||||||
|
|
||||||
if (GLAdapter.debug)
|
if (GLAdapter.debug)
|
||||||
setDebugFlags(GLSurfaceView.DEBUG_CHECK_GL_ERROR
|
setDebugFlags(GLSurfaceView.DEBUG_CHECK_GL_ERROR
|
||||||
@@ -117,10 +160,12 @@ public class MapView extends GLSurfaceView {
|
|||||||
mMap.destroy();
|
mMap.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
mMap.pause(true);
|
mMap.pause(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
mMap.pause(false);
|
mMap.pause(false);
|
||||||
}
|
}
|
||||||
@@ -149,7 +194,7 @@ public class MapView extends GLSurfaceView {
|
|||||||
|
|
||||||
if (!isInEditMode()) {
|
if (!isInEditMode()) {
|
||||||
if (width > 0 && height > 0)
|
if (width > 0 && height > 0)
|
||||||
mMap.viewport().setScreenSize(width, height);
|
mMap.viewport().setViewSize(width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,6 +205,7 @@ public class MapView extends GLSurfaceView {
|
|||||||
static class AndroidMap extends Map {
|
static class AndroidMap extends Map {
|
||||||
|
|
||||||
private final MapView mMapView;
|
private final MapView mMapView;
|
||||||
|
private final WindowManager mWindowManager;
|
||||||
|
|
||||||
private boolean mRenderRequest;
|
private boolean mRenderRequest;
|
||||||
private boolean mRenderWait;
|
private boolean mRenderWait;
|
||||||
@@ -168,6 +214,7 @@ public class MapView extends GLSurfaceView {
|
|||||||
public AndroidMap(MapView mapView) {
|
public AndroidMap(MapView mapView) {
|
||||||
super();
|
super();
|
||||||
mMapView = mapView;
|
mMapView = mapView;
|
||||||
|
mWindowManager = (WindowManager) mMapView.getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -180,6 +227,16 @@ public class MapView extends GLSurfaceView {
|
|||||||
return mMapView.getHeight();
|
return mMapView.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getScreenWidth() {
|
||||||
|
return mMapView.mScreenSize.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getScreenHeight() {
|
||||||
|
return mMapView.mScreenSize.y;
|
||||||
|
}
|
||||||
|
|
||||||
private final Runnable mRedrawCb = new Runnable() {
|
private final Runnable mRedrawCb = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -188,6 +245,11 @@ public class MapView extends GLSurfaceView {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateMap() {
|
||||||
|
updateMap(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateMap(boolean redraw) {
|
public void updateMap(boolean redraw) {
|
||||||
synchronized (mRedrawCb) {
|
synchronized (mRedrawCb) {
|
||||||
@@ -208,7 +270,7 @@ public class MapView extends GLSurfaceView {
|
|||||||
if (mPausing)
|
if (mPausing)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/** TODO should not need to call prepareFrame in mRedrawCb */
|
/* TODO should not need to call prepareFrame in mRedrawCb */
|
||||||
updateMap(false);
|
updateMap(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,8 +312,59 @@ public class MapView extends GLSurfaceView {
|
|||||||
super(map);
|
super(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return GL version as [major, minor, release]
|
||||||
|
*/
|
||||||
|
private int[] extractVersion(String versionString) {
|
||||||
|
int[] version = new int[3];
|
||||||
|
Matcher matcher = GL_PATTERN.matcher(versionString);
|
||||||
|
if (matcher.find()) {
|
||||||
|
String[] split = matcher.group(1).split("\\.");
|
||||||
|
version[0] = parseInt(split[0], 2);
|
||||||
|
version[1] = split.length < 2 ? 0 : parseInt(split[1], 0);
|
||||||
|
version[2] = split.length < 3 ? 0 : parseInt(split[2], 0);
|
||||||
|
} else {
|
||||||
|
log.error("Invalid version string: " + versionString);
|
||||||
|
version[0] = 2;
|
||||||
|
version[1] = 0;
|
||||||
|
version[2] = 0;
|
||||||
|
}
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forgiving parsing of GL major, minor and release versions as some manufacturers don't adhere to spec.
|
||||||
|
**/
|
||||||
|
private int parseInt(String value, int defaultValue) {
|
||||||
|
try {
|
||||||
|
return Integer.parseInt(value);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
log.error("Error parsing number: " + value + ", assuming: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
||||||
|
try {
|
||||||
|
// Create a minimum supported OpenGL ES context, then check:
|
||||||
|
String versionString = gl.glGetString(GL10.GL_VERSION);
|
||||||
|
log.info("Version: " + versionString);
|
||||||
|
// The version format is displayed as: "OpenGL ES <major>.<minor>"
|
||||||
|
// followed by optional content provided by the implementation.
|
||||||
|
|
||||||
|
// OpenGL<space>ES<space><version number><space><vendor-specific information>.
|
||||||
|
int[] version = extractVersion(versionString);
|
||||||
|
int majorVersion = version[0];
|
||||||
|
if (majorVersion >= 3)
|
||||||
|
GLAdapter.init(new AndroidGL30());
|
||||||
|
else
|
||||||
|
GLAdapter.init(new AndroidGL());
|
||||||
|
} catch (Throwable t) {
|
||||||
|
log.error("Falling back to GLES 2", t);
|
||||||
|
GLAdapter.init(new AndroidGL());
|
||||||
|
}
|
||||||
|
|
||||||
super.onSurfaceCreated();
|
super.onSurfaceCreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class TileCache implements ITileCache {
|
public class TileCache implements ITileCache {
|
||||||
|
|
||||||
final static org.slf4j.Logger log = LoggerFactory.getLogger(TileCache.class);
|
static final org.slf4j.Logger log = LoggerFactory.getLogger(TileCache.class);
|
||||||
final static boolean dbg = false;
|
static final boolean dbg = false;
|
||||||
|
|
||||||
class CacheTileReader implements TileReader {
|
class CacheTileReader implements TileReader {
|
||||||
final InputStream mInputStream;
|
final InputStream mInputStream;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016 Longri
|
* Copyright 2016 Longri
|
||||||
* Copyright 2016 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -23,6 +23,8 @@ import android.graphics.BitmapFactory;
|
|||||||
import android.opengl.GLES20;
|
import android.opengl.GLES20;
|
||||||
import android.opengl.GLUtils;
|
import android.opengl.GLUtils;
|
||||||
|
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
import org.oscim.utils.GraphicUtils;
|
||||||
import org.oscim.utils.IOUtils;
|
import org.oscim.utils.IOUtils;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@@ -31,7 +33,7 @@ import java.io.InputStream;
|
|||||||
import static android.graphics.Bitmap.Config.ARGB_8888;
|
import static android.graphics.Bitmap.Config.ARGB_8888;
|
||||||
|
|
||||||
public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap {
|
public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap {
|
||||||
final Bitmap mBitmap;
|
Bitmap mBitmap;
|
||||||
|
|
||||||
public AndroidBitmap(InputStream inputStream) {
|
public AndroidBitmap(InputStream inputStream) {
|
||||||
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
|
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
|
||||||
@@ -43,6 +45,12 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap {
|
|||||||
mBitmap = bitmap;
|
mBitmap = bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AndroidBitmap(InputStream inputStream, int width, int height, int percent) {
|
||||||
|
this(inputStream);
|
||||||
|
float[] newSize = GraphicUtils.imageSize(getWidth(), getHeight(), CanvasAdapter.getScale(), width, height, percent);
|
||||||
|
scaleTo((int) newSize[0], (int) newSize[1]);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValid() {
|
public boolean isValid() {
|
||||||
return mBitmap != null;
|
return mBitmap != null;
|
||||||
@@ -117,4 +125,17 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap {
|
|||||||
IOUtils.closeQuietly(outputStream);
|
IOUtils.closeQuietly(outputStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void scaleTo(int width, int height) {
|
||||||
|
if (getWidth() != width || getHeight() != height) {
|
||||||
|
// The effect of the filter argument to createScaledBitmap is not well documented in the
|
||||||
|
// official android docs, but according to
|
||||||
|
// http://stackoverflow.com/questions/2895065/what-does-the-filter-parameter-to-createscaledbitmap-do
|
||||||
|
// passing true results in smoother edges, less pixelation.
|
||||||
|
// If smoother corners improve the readability of map labels is perhaps debatable.
|
||||||
|
android.graphics.Bitmap scaledBitmap = android.graphics.Bitmap.createScaledBitmap(mBitmap, width, height, true);
|
||||||
|
mBitmap = scaledBitmap;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2018 devemux86
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
@@ -58,6 +58,11 @@ public final class AndroidGraphics extends CanvasAdapter {
|
|||||||
return new AndroidBitmap(inputStream);
|
return new AndroidBitmap(inputStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Bitmap decodeBitmapImpl(InputStream inputStream, int width, int height, int percent) {
|
||||||
|
return new AndroidBitmap(inputStream, width, height, percent);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Bitmap decodeSvgBitmapImpl(InputStream inputStream, int width, int height, int percent) throws IOException {
|
public Bitmap decodeSvgBitmapImpl(InputStream inputStream, int width, int height, int percent) throws IOException {
|
||||||
return new AndroidSvgBitmap(inputStream, width, height, percent);
|
return new AndroidSvgBitmap(inputStream, width, height, percent);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2017 devemux86
|
||||||
* Copyright 2017 nebular
|
* Copyright 2017 nebular
|
||||||
|
* Copyright 2018 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -26,33 +27,45 @@ import org.oscim.backend.canvas.Paint;
|
|||||||
|
|
||||||
class AndroidPaint implements Paint {
|
class AndroidPaint implements Paint {
|
||||||
|
|
||||||
private static int getStyle(org.oscim.backend.canvas.Paint.FontStyle fontStyle) {
|
private static Typeface getTypeface(org.oscim.backend.canvas.Paint.FontFamily fontFamily,
|
||||||
|
org.oscim.backend.canvas.Paint.FontStyle fontStyle) {
|
||||||
|
final int style;
|
||||||
switch (fontStyle) {
|
switch (fontStyle) {
|
||||||
case BOLD:
|
case BOLD:
|
||||||
return Typeface.BOLD;
|
style = Typeface.BOLD;
|
||||||
|
break;
|
||||||
case BOLD_ITALIC:
|
case BOLD_ITALIC:
|
||||||
return Typeface.BOLD_ITALIC;
|
style = Typeface.BOLD_ITALIC;
|
||||||
|
break;
|
||||||
case ITALIC:
|
case ITALIC:
|
||||||
return Typeface.ITALIC;
|
style = Typeface.ITALIC;
|
||||||
case NORMAL:
|
break;
|
||||||
return Typeface.NORMAL;
|
default:
|
||||||
|
style = Typeface.NORMAL;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new IllegalArgumentException("unknown font style: " + fontStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Typeface getTypeface(org.oscim.backend.canvas.Paint.FontFamily fontFamily) {
|
|
||||||
switch (fontFamily) {
|
switch (fontFamily) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
return Typeface.DEFAULT;
|
return Typeface.create(Typeface.DEFAULT, style);
|
||||||
case DEFAULT_BOLD:
|
case DEFAULT_BOLD:
|
||||||
return Typeface.DEFAULT_BOLD;
|
return Typeface.create(Typeface.DEFAULT_BOLD, style);
|
||||||
case MONOSPACE:
|
case MONOSPACE:
|
||||||
return Typeface.MONOSPACE;
|
return Typeface.create(Typeface.MONOSPACE, style);
|
||||||
case SANS_SERIF:
|
case SANS_SERIF:
|
||||||
return Typeface.SANS_SERIF;
|
return Typeface.create(Typeface.SANS_SERIF, style);
|
||||||
case SERIF:
|
case SERIF:
|
||||||
return Typeface.SERIF;
|
return Typeface.create(Typeface.SERIF, style);
|
||||||
|
case THIN:
|
||||||
|
return Typeface.create("sans-serif-thin", style);
|
||||||
|
case LIGHT:
|
||||||
|
return Typeface.create("sans-serif-light", style);
|
||||||
|
case MEDIUM:
|
||||||
|
return Typeface.create("sans-serif-medium", style);
|
||||||
|
case BLACK:
|
||||||
|
return Typeface.create("sans-serif-black", style);
|
||||||
|
case CONDENSED:
|
||||||
|
return Typeface.create("sans-serif-condensed", style);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new IllegalArgumentException("unknown font family: " + fontFamily);
|
throw new IllegalArgumentException("unknown font family: " + fontFamily);
|
||||||
@@ -111,9 +124,7 @@ class AndroidPaint implements Paint {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) {
|
public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) {
|
||||||
Typeface typeface = Typeface.create(getTypeface(fontFamily),
|
mPaint.setTypeface(getTypeface(fontFamily, fontStyle));
|
||||||
getStyle(fontStyle));
|
|
||||||
mPaint.setTypeface(typeface);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2013-2014 Ludwig M Brinckmann
|
* Copyright 2013-2014 Ludwig M Brinckmann
|
||||||
* Copyright 2014-2017 devemux86
|
* Copyright 2014-2018 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program 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
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@@ -24,6 +24,7 @@ import android.graphics.RectF;
|
|||||||
import com.caverock.androidsvg.SVG;
|
import com.caverock.androidsvg.SVG;
|
||||||
|
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
import org.oscim.utils.GraphicUtils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@@ -41,34 +42,12 @@ public class AndroidSvgBitmap extends AndroidBitmap {
|
|||||||
|
|
||||||
double scale = scaleFactor / Math.sqrt((picture.getHeight() * picture.getWidth()) / defaultSize);
|
double scale = scaleFactor / Math.sqrt((picture.getHeight() * picture.getWidth()) / defaultSize);
|
||||||
|
|
||||||
float bitmapWidth = (float) (picture.getWidth() * scale);
|
float[] bmpSize = GraphicUtils.imageSize(picture.getWidth(), picture.getHeight(), (float) scale, width, height, percent);
|
||||||
float bitmapHeight = (float) (picture.getHeight() * scale);
|
|
||||||
|
|
||||||
float aspectRatio = (1f * picture.getWidth()) / picture.getHeight();
|
android.graphics.Bitmap bitmap = android.graphics.Bitmap.createBitmap((int) Math.ceil(bmpSize[0]),
|
||||||
|
(int) Math.ceil(bmpSize[1]), Bitmap.Config.ARGB_8888);
|
||||||
if (width != 0 && height != 0) {
|
|
||||||
// both width and height set, override any other setting
|
|
||||||
bitmapWidth = width;
|
|
||||||
bitmapHeight = height;
|
|
||||||
} else if (width == 0 && height != 0) {
|
|
||||||
// only width set, calculate from aspect ratio
|
|
||||||
bitmapWidth = height * aspectRatio;
|
|
||||||
bitmapHeight = height;
|
|
||||||
} else if (width != 0 && height == 0) {
|
|
||||||
// only height set, calculate from aspect ratio
|
|
||||||
bitmapHeight = width / aspectRatio;
|
|
||||||
bitmapWidth = width;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (percent != 100) {
|
|
||||||
bitmapWidth *= percent / 100f;
|
|
||||||
bitmapHeight *= percent / 100f;
|
|
||||||
}
|
|
||||||
|
|
||||||
android.graphics.Bitmap bitmap = android.graphics.Bitmap.createBitmap((int) Math.ceil(bitmapWidth),
|
|
||||||
(int) Math.ceil(bitmapHeight), Bitmap.Config.ARGB_8888);
|
|
||||||
Canvas canvas = new Canvas(bitmap);
|
Canvas canvas = new Canvas(bitmap);
|
||||||
canvas.drawPicture(picture, new RectF(0, 0, bitmapWidth, bitmapHeight));
|
canvas.drawPicture(picture, new RectF(0, 0, bmpSize[0], bmpSize[1]));
|
||||||
|
|
||||||
return bitmap;
|
return bitmap;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@@ -25,6 +26,9 @@ import java.nio.Buffer;
|
|||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
import java.nio.IntBuffer;
|
import java.nio.IntBuffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Unimplemented methods: https://github.com/libgdx/libgdx/blob/master/gdx/jni/android/AndroidGL20.cpp
|
||||||
|
*/
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
public class AndroidGL implements GL {
|
public class AndroidGL implements GL {
|
||||||
|
|
||||||
@@ -103,11 +107,21 @@ public class AndroidGL implements GL {
|
|||||||
return GLES20.glCreateShader(type);
|
return GLES20.glCreateShader(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteBuffer(int buffer) {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteBuffers(int n, IntBuffer buffers) {
|
public void deleteBuffers(int n, IntBuffer buffers) {
|
||||||
GLES20.glDeleteBuffers(n, buffers);
|
GLES20.glDeleteBuffers(n, buffers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteFramebuffer(int framebuffer) {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteFramebuffers(int n, IntBuffer framebuffers) {
|
public void deleteFramebuffers(int n, IntBuffer framebuffers) {
|
||||||
GLES20.glDeleteFramebuffers(n, framebuffers);
|
GLES20.glDeleteFramebuffers(n, framebuffers);
|
||||||
@@ -118,6 +132,11 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glDeleteProgram(program);
|
GLES20.glDeleteProgram(program);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteRenderbuffer(int renderbuffer) {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteRenderbuffers(int n, IntBuffer renderbuffers) {
|
public void deleteRenderbuffers(int n, IntBuffer renderbuffers) {
|
||||||
GLES20.glDeleteRenderbuffers(n, renderbuffers);
|
GLES20.glDeleteRenderbuffers(n, renderbuffers);
|
||||||
@@ -160,6 +179,11 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glFramebufferTexture2D(target, attachment, textarget, texture, level);
|
GLES20.glFramebufferTexture2D(target, attachment, textarget, texture, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genBuffer() {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void genBuffers(int n, IntBuffer buffers) {
|
public void genBuffers(int n, IntBuffer buffers) {
|
||||||
GLES20.glGenBuffers(n, buffers);
|
GLES20.glGenBuffers(n, buffers);
|
||||||
@@ -170,11 +194,21 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glGenerateMipmap(target);
|
GLES20.glGenerateMipmap(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genFramebuffer() {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void genFramebuffers(int n, IntBuffer framebuffers) {
|
public void genFramebuffers(int n, IntBuffer framebuffers) {
|
||||||
GLES20.glGenFramebuffers(n, framebuffers);
|
GLES20.glGenFramebuffers(n, framebuffers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genRenderbuffer() {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void genRenderbuffers(int n, IntBuffer renderbuffers) {
|
public void genRenderbuffers(int n, IntBuffer renderbuffers) {
|
||||||
GLES20.glGenRenderbuffers(n, renderbuffers);
|
GLES20.glGenRenderbuffers(n, renderbuffers);
|
||||||
@@ -260,11 +294,6 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
|
GLES20.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getShaderSource(int shader, int bufsize, Buffer length, String source) {
|
|
||||||
throw new UnsupportedOperationException("missing implementation");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getTexParameterfv(int target, int pname, FloatBuffer params) {
|
public void getTexParameterfv(int target, int pname, FloatBuffer params) {
|
||||||
GLES20.glGetTexParameterfv(target, pname, params);
|
GLES20.glGetTexParameterfv(target, pname, params);
|
||||||
@@ -431,6 +460,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform1fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform1fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform1i(int location, int x) {
|
public void uniform1i(int location, int x) {
|
||||||
GLES20.glUniform1i(location, x);
|
GLES20.glUniform1i(location, x);
|
||||||
@@ -443,6 +477,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform1iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform1iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform2f(int location, float x, float y) {
|
public void uniform2f(int location, float x, float y) {
|
||||||
GLES20.glUniform2f(location, x, y);
|
GLES20.glUniform2f(location, x, y);
|
||||||
@@ -455,6 +494,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform2fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform2fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform2i(int location, int x, int y) {
|
public void uniform2i(int location, int x, int y) {
|
||||||
GLES20.glUniform2i(location, x, y);
|
GLES20.glUniform2i(location, x, y);
|
||||||
@@ -467,6 +511,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform2iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform2iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform3f(int location, float x, float y, float z) {
|
public void uniform3f(int location, float x, float y, float z) {
|
||||||
GLES20.glUniform3f(location, x, y, z);
|
GLES20.glUniform3f(location, x, y, z);
|
||||||
@@ -479,6 +528,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform3fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform3fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform3i(int location, int x, int y, int z) {
|
public void uniform3i(int location, int x, int y, int z) {
|
||||||
GLES20.glUniform3i(location, x, y, z);
|
GLES20.glUniform3i(location, x, y, z);
|
||||||
@@ -491,6 +545,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform3iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform3iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform4f(int location, float x, float y, float z, float w) {
|
public void uniform4f(int location, float x, float y, float z, float w) {
|
||||||
GLES20.glUniform4f(location, x, y, z, w);
|
GLES20.glUniform4f(location, x, y, z, w);
|
||||||
@@ -501,6 +560,11 @@ public class AndroidGL implements GL {
|
|||||||
GLES20.glUniform4fv(location, count, v);
|
GLES20.glUniform4fv(location, count, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform4fv(int location, int count, float[] v, int offset) {
|
||||||
|
GLES20.glUniform4fv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniform4i(int location, int x, int y, int z, int w) {
|
public void uniform4i(int location, int x, int y, int z, int w) {
|
||||||
GLES20.glUniform4i(location, x, y, z, w);
|
GLES20.glUniform4i(location, x, y, z, w);
|
||||||
@@ -513,24 +577,44 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform4iv(int location, int count, int[] v, int offset) {
|
||||||
|
GLES20.glUniform4iv(location, count, v, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer value) {
|
public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer value) {
|
||||||
GLES20.glUniformMatrix2fv(location, count, transpose, value);
|
GLES20.glUniformMatrix2fv(location, count, transpose, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix2fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
GLES20.glUniformMatrix2fv(location, count, transpose, value, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value) {
|
public void uniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value) {
|
||||||
GLES20.glUniformMatrix3fv(location, count, transpose, value);
|
GLES20.glUniformMatrix3fv(location, count, transpose, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix3fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
GLES20.glUniformMatrix3fv(location, count, transpose, value, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value) {
|
public void uniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value) {
|
||||||
GLES20.glUniformMatrix4fv(location, count, transpose, value);
|
GLES20.glUniformMatrix4fv(location, count, transpose, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix4fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
GLES20.glUniformMatrix4fv(location, count, transpose, value, offset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void useProgram(int program) {
|
public void useProgram(int program) {
|
||||||
GLES20.glUseProgram(program);
|
GLES20.glUseProgram(program);
|
||||||
@@ -691,6 +775,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTexture(int texture) {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void depthFunc(int func) {
|
public void depthFunc(int func) {
|
||||||
GLES20.glDepthFunc(func);
|
GLES20.glDepthFunc(func);
|
||||||
@@ -757,6 +846,11 @@ public class AndroidGL implements GL {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int genTexture() {
|
||||||
|
throw new UnsupportedOperationException("missing implementation");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getError() {
|
public int getError() {
|
||||||
return GLES20.glGetError();
|
return GLES20.glGetError();
|
||||||
@@ -837,8 +931,7 @@ public class AndroidGL implements GL {
|
|||||||
@Override
|
@Override
|
||||||
public void texSubImage2D(int target, int level, int xoffset, int yoffset, int width,
|
public void texSubImage2D(int target, int level, int xoffset, int yoffset, int width,
|
||||||
int height, int format, int type, Buffer pixels) {
|
int height, int format, int type, Buffer pixels) {
|
||||||
GLES20
|
GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
|
||||||
.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
878
vtm-android/src/org/oscim/android/gl/AndroidGL30.java
Normal file
@@ -0,0 +1,878 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
|
*
|
||||||
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2014 See AUTHORS file.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
package org.oscim.android.gl;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.opengl.GLES30;
|
||||||
|
|
||||||
|
import org.oscim.backend.GL30;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGL30.java
|
||||||
|
*/
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
public class AndroidGL30 extends AndroidGL implements GL30 {
|
||||||
|
@Override
|
||||||
|
public void readBuffer(int mode) {
|
||||||
|
GLES30.glReadBuffer(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawRangeElements(int mode, int start, int end, int count, int type, java.nio.Buffer indices) {
|
||||||
|
GLES30.glDrawRangeElements(mode, start, end, count, type, indices);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawRangeElements(int mode, int start, int end, int count, int type, int offset) {
|
||||||
|
GLES30.glDrawRangeElements(mode, start, end, count, type, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format,
|
||||||
|
int type, java.nio.Buffer pixels) {
|
||||||
|
if (pixels == null)
|
||||||
|
GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, 0);
|
||||||
|
else
|
||||||
|
GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format,
|
||||||
|
int type, int offset) {
|
||||||
|
GLES30.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth,
|
||||||
|
int format, int type, java.nio.Buffer pixels) {
|
||||||
|
GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth,
|
||||||
|
int format, int type, int offset) {
|
||||||
|
GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width,
|
||||||
|
int height) {
|
||||||
|
GLES30.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int
|
||||||
|
// imageSize, java.nio.Buffer data) {
|
||||||
|
// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int
|
||||||
|
// imageSize, int offset) {
|
||||||
|
// GLES30.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int
|
||||||
|
// depth, int format, int imageSize, java.nio.Buffer data) {
|
||||||
|
// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int
|
||||||
|
// depth, int format, int imageSize, int offset) {
|
||||||
|
// GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genQueries(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glGenQueries(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genQueries(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glGenQueries(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteQueries(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glDeleteQueries(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteQueries(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glDeleteQueries(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isQuery(int id) {
|
||||||
|
return GLES30.glIsQuery(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beginQuery(int target, int id) {
|
||||||
|
GLES30.glBeginQuery(target, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endQuery(int target) {
|
||||||
|
GLES30.glEndQuery(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getQueryiv(int target, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetQueryiv(target, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getQueryiv(int target, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetQueryiv(target, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getQueryObjectuiv(int id, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetQueryObjectuiv(id, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getQueryObjectuiv(int id, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetQueryObjectuiv(id, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean unmapBuffer(int target) {
|
||||||
|
return GLES30.glUnmapBuffer(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public java.nio.Buffer getBufferPointerv(int target, int pname) {
|
||||||
|
return GLES30.glGetBufferPointerv(target, pname);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void drawBuffers(int n, int[] bufs, int offset) {
|
||||||
|
// GLES30.glDrawBuffers(n, bufs, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawBuffers(int n, java.nio.IntBuffer bufs) {
|
||||||
|
GLES30.glDrawBuffers(n, bufs);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix2x3fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix2x3fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix2x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix2x3fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix3x2fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix3x2fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix3x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix3x2fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix2x4fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix2x4fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix2x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix2x4fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix4x2fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix4x2fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix4x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix4x2fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix3x4fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix3x4fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix3x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix3x4fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniformMatrix4x3fv(int location, int count, boolean transpose, float[] value, int offset) {
|
||||||
|
// GLES30.glUniformMatrix4x3fv(location, count, transpose, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformMatrix4x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glUniformMatrix4x3fv(location, count, transpose, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1,
|
||||||
|
int mask, int filter) {
|
||||||
|
GLES30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) {
|
||||||
|
GLES30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void framebufferTextureLayer(int target, int attachment, int texture, int level, int layer) {
|
||||||
|
GLES30.glFramebufferTextureLayer(target, attachment, texture, level, layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public java.nio.Buffer mapBufferRange(int target, int offset, int length, int access) {
|
||||||
|
// return GLES30.glMapBufferRange(target, offset, length, access);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void flushMappedBufferRange(int target, int offset, int length) {
|
||||||
|
GLES30.glFlushMappedBufferRange(target, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindVertexArray(int array) {
|
||||||
|
GLES30.glBindVertexArray(array);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteVertexArrays(int n, int[] arrays, int offset) {
|
||||||
|
GLES30.glDeleteVertexArrays(n, arrays, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteVertexArrays(int n, java.nio.IntBuffer arrays) {
|
||||||
|
GLES30.glDeleteVertexArrays(n, arrays);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genVertexArrays(int n, int[] arrays, int offset) {
|
||||||
|
GLES30.glGenVertexArrays(n, arrays, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genVertexArrays(int n, java.nio.IntBuffer arrays) {
|
||||||
|
GLES30.glGenVertexArrays(n, arrays);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVertexArray(int array) {
|
||||||
|
return GLES30.glIsVertexArray(array);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getIntegeri_v(int target, int index, int[] data, int offset) {
|
||||||
|
// GLES30.glGetIntegeri_v(target, index, data, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getIntegeri_v(int target, int index, java.nio.IntBuffer data) {
|
||||||
|
// GLES30.glGetIntegeri_v(target, index, data);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beginTransformFeedback(int primitiveMode) {
|
||||||
|
GLES30.glBeginTransformFeedback(primitiveMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endTransformFeedback() {
|
||||||
|
GLES30.glEndTransformFeedback();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindBufferRange(int target, int index, int buffer, int offset, int size) {
|
||||||
|
GLES30.glBindBufferRange(target, index, buffer, offset, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindBufferBase(int target, int index, int buffer) {
|
||||||
|
GLES30.glBindBufferBase(target, index, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transformFeedbackVaryings(int program, String[] varyings, int bufferMode) {
|
||||||
|
GLES30.glTransformFeedbackVaryings(program, varyings, bufferMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getTransformFeedbackVarying(int program, int index, int bufsize, int[] length, int lengthOffset, int[] size, int
|
||||||
|
// sizeOffset, int[] type, int typeOffset, byte[] name, int nameOffset) {
|
||||||
|
// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, lengthOffset, size, sizeOffset, type, typeOffset, name,
|
||||||
|
// nameOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getTransformFeedbackVarying(int program, int index, int bufsize, java.nio.IntBuffer length, java.nio.IntBuffer
|
||||||
|
// size, java.nio.IntBuffer type, byte name) {
|
||||||
|
// GLES30.glGetTransformFeedbackVarying(program, index, bufsize, length, size, type, name);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public String getTransformFeedbackVarying(int program, int index, int[] size, int sizeOffset, int[] type, int typeOffset) {
|
||||||
|
// return GLES30.glGetTransformFeedbackVarying(program, index, size, sizeOffset, type, typeOffset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public String getTransformFeedbackVarying(int program, int index, java.nio.IntBuffer size, java.nio.IntBuffer type) {
|
||||||
|
// return GLES30.glGetTransformFeedbackVarying(program, index, size, type);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribIPointer(int index, int size, int type, int stride, int offset) {
|
||||||
|
GLES30.glVertexAttribIPointer(index, size, type, stride, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getVertexAttribIiv(int index, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetVertexAttribIiv(index, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getVertexAttribIiv(int index, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetVertexAttribIiv(index, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getVertexAttribIuiv(int index, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetVertexAttribIuiv(index, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getVertexAttribIuiv(int index, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetVertexAttribIuiv(index, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribI4i(int index, int x, int y, int z, int w) {
|
||||||
|
GLES30.glVertexAttribI4i(index, x, y, z, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribI4ui(int index, int x, int y, int z, int w) {
|
||||||
|
GLES30.glVertexAttribI4ui(index, x, y, z, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4iv(int index, int[] v, int offset) {
|
||||||
|
// GLES30.glVertexAttribI4iv(index, v, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4iv(int index, java.nio.IntBuffer v) {
|
||||||
|
// GLES30.glVertexAttribI4iv(index, v);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4uiv(int index, int[] v, int offset) {
|
||||||
|
// GLES30.glVertexAttribI4uiv(index, v, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void vertexAttribI4uiv(int index, java.nio.IntBuffer v) {
|
||||||
|
// GLES30.glVertexAttribI4uiv(index, v);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getUniformuiv(int program, int location, int[] params, int offset) {
|
||||||
|
// GLES30.glGetUniformuiv(program, location, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getUniformuiv(int program, int location, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetUniformuiv(program, location, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFragDataLocation(int program, String name) {
|
||||||
|
return GLES30.glGetFragDataLocation(program, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform1ui(int location, int v0) {
|
||||||
|
// GLES30.glUniform1ui(location, v0);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform2ui(int location, int v0, int v1) {
|
||||||
|
// GLES30.glUniform2ui(location, v0, v1);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform3ui(int location, int v0, int v1, int v2) {
|
||||||
|
// GLES30.glUniform3ui(location, v0, v1, v2);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform4ui(int location, int v0, int v1, int v2, int v3) {
|
||||||
|
// GLES30.glUniform4ui(location, v0, v1, v2, v3);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform1uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform1uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform1uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glUniform1uiv(location, count, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform2uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform2uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform2uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
// GLES30.glUniform2uiv(location, count, value);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void uniform3uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform3uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform3uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glUniform3uiv(location, count, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void uniform4uiv(int location, int count, int[] value, int offset) {
|
||||||
|
// GLES30.glUniform4uiv(location, count, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniform4uiv(int location, int count, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glUniform4uiv(location, count, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void clearBufferiv(int buffer, int drawbuffer, int[] value, int offset) {
|
||||||
|
// GLES30.glClearBufferiv(buffer, drawbuffer, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferiv(int buffer, int drawbuffer, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glClearBufferiv(buffer, drawbuffer, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void clearBufferuiv(int buffer, int drawbuffer, int[] value, int offset) {
|
||||||
|
// GLES30.glClearBufferuiv(buffer, drawbuffer, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferuiv(int buffer, int drawbuffer, java.nio.IntBuffer value) {
|
||||||
|
GLES30.glClearBufferuiv(buffer, drawbuffer, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void clearBufferfv(int buffer, int drawbuffer, float[] value, int offset) {
|
||||||
|
// GLES30.glClearBufferfv(buffer, drawbuffer, value, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferfv(int buffer, int drawbuffer, java.nio.FloatBuffer value) {
|
||||||
|
GLES30.glClearBufferfv(buffer, drawbuffer, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearBufferfi(int buffer, int drawbuffer, float depth, int stencil) {
|
||||||
|
GLES30.glClearBufferfi(buffer, drawbuffer, depth, stencil);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getStringi(int name, int index) {
|
||||||
|
return GLES30.glGetStringi(name, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) {
|
||||||
|
GLES30.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getUniformIndices(int program, String[] uniformNames, int[] uniformIndices, int uniformIndicesOffset) {
|
||||||
|
// GLES30.glGetUniformIndices(program, uniformNames, uniformIndices, uniformIndicesOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getUniformIndices(int program, String[] uniformNames, java.nio.IntBuffer uniformIndices) {
|
||||||
|
GLES30.glGetUniformIndices(program, uniformNames, uniformIndices);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getActiveUniformsiv(int program, int uniformCount, int[] uniformIndices, int uniformIndicesOffset, int pname,
|
||||||
|
// int[] params, int paramsOffset) {
|
||||||
|
// GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, uniformIndicesOffset, pname, params, paramsOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getActiveUniformsiv(int program, int uniformCount, java.nio.IntBuffer uniformIndices, int pname,
|
||||||
|
java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getUniformBlockIndex(int program, String uniformBlockName) {
|
||||||
|
return GLES30.glGetUniformBlockIndex(program, uniformBlockName);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getActiveUniformBlockName(int program, int uniformBlockIndex, int bufSize, int[] length, int lengthOffset, byte[]
|
||||||
|
// uniformBlockName, int uniformBlockNameOffset) {
|
||||||
|
// GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, lengthOffset, uniformBlockName,
|
||||||
|
// uniformBlockNameOffset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getActiveUniformBlockName(int program, int uniformBlockIndex, java.nio.Buffer length,
|
||||||
|
java.nio.Buffer uniformBlockName) {
|
||||||
|
GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex, length, uniformBlockName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getActiveUniformBlockName(int program, int uniformBlockIndex) {
|
||||||
|
return GLES30.glGetActiveUniformBlockName(program, uniformBlockIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding) {
|
||||||
|
GLES30.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawArraysInstanced(int mode, int first, int count, int instanceCount) {
|
||||||
|
GLES30.glDrawArraysInstanced(mode, first, count, instanceCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void drawElementsInstanced(int mode, int count, int type, java.nio.Buffer indices, int instanceCount) {
|
||||||
|
// GLES30.glDrawElementsInstanced(mode, count, type, indices, instanceCount);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount) {
|
||||||
|
GLES30.glDrawElementsInstanced(mode, count, type, indicesOffset, instanceCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public long fenceSync(int condition, int flags) {
|
||||||
|
// return GLES30.glFenceSync(condition, flags);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public boolean isSync(long sync) {
|
||||||
|
// return GLES30.glIsSync(sync);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void deleteSync(long sync) {
|
||||||
|
// GLES30.glDeleteSync(sync);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public int clientWaitSync(long sync, int flags, long timeout) {
|
||||||
|
// return GLES30.glClientWaitSync(sync, flags, timeout);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void waitSync(long sync, int flags, long timeout) {
|
||||||
|
// GLES30.glWaitSync(sync, flags, timeout);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInteger64v(int pname, long[] params, int offset) {
|
||||||
|
// GLES30.glGetInteger64v(pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getInteger64v(int pname, java.nio.LongBuffer params) {
|
||||||
|
GLES30.glGetInteger64v(pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getSynciv(long sync, int pname, int bufSize, int[] length, int lengthOffset, int[] values, int valuesOffset) {
|
||||||
|
// GLES30.glGetSynciv(sync, pname, bufSize, length, lengthOffset, values, valuesOffset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getSynciv(long sync, int pname, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer values) {
|
||||||
|
// GLES30.glGetSynciv(sync, pname, bufSize, length, values);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInteger64i_v(int target, int index, long[] data, int offset) {
|
||||||
|
// GLES30.glGetInteger64i_v(target, index, data, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInteger64i_v(int target, int index, java.nio.LongBuffer data) {
|
||||||
|
// GLES30.glGetInteger64i_v(target, index, data);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getBufferParameteri64v(int target, int pname, long[] params, int offset) {
|
||||||
|
// GLES30.glGetBufferParameteri64v(target, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getBufferParameteri64v(int target, int pname, java.nio.LongBuffer params) {
|
||||||
|
GLES30.glGetBufferParameteri64v(target, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genSamplers(int count, int[] samplers, int offset) {
|
||||||
|
GLES30.glGenSamplers(count, samplers, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genSamplers(int count, java.nio.IntBuffer samplers) {
|
||||||
|
GLES30.glGenSamplers(count, samplers);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteSamplers(int count, int[] samplers, int offset) {
|
||||||
|
GLES30.glDeleteSamplers(count, samplers, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteSamplers(int count, java.nio.IntBuffer samplers) {
|
||||||
|
GLES30.glDeleteSamplers(count, samplers);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSampler(int sampler) {
|
||||||
|
return GLES30.glIsSampler(sampler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindSampler(int unit, int sampler) {
|
||||||
|
GLES30.glBindSampler(unit, sampler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameteri(int sampler, int pname, int param) {
|
||||||
|
GLES30.glSamplerParameteri(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void samplerParameteriv(int sampler, int pname, int[] param, int offset) {
|
||||||
|
// GLES30.glSamplerParameteriv(sampler, pname, param, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameteriv(int sampler, int pname, java.nio.IntBuffer param) {
|
||||||
|
GLES30.glSamplerParameteriv(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameterf(int sampler, int pname, float param) {
|
||||||
|
GLES30.glSamplerParameterf(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void samplerParameterfv(int sampler, int pname, float[] param, int offset) {
|
||||||
|
// GLES30.glSamplerParameterfv(sampler, pname, param, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void samplerParameterfv(int sampler, int pname, java.nio.FloatBuffer param) {
|
||||||
|
GLES30.glSamplerParameterfv(sampler, pname, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getSamplerParameteriv(int sampler, int pname, int[] params, int offset) {
|
||||||
|
// GLES30.glGetSamplerParameteriv(sampler, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getSamplerParameteriv(int sampler, int pname, java.nio.IntBuffer params) {
|
||||||
|
GLES30.glGetSamplerParameteriv(sampler, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getSamplerParameterfv(int sampler, int pname, float[] params, int offset) {
|
||||||
|
// GLES30.glGetSamplerParameterfv(sampler, pname, params, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getSamplerParameterfv(int sampler, int pname, java.nio.FloatBuffer params) {
|
||||||
|
GLES30.glGetSamplerParameterfv(sampler, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void vertexAttribDivisor(int index, int divisor) {
|
||||||
|
GLES30.glVertexAttribDivisor(index, divisor);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindTransformFeedback(int target, int id) {
|
||||||
|
GLES30.glBindTransformFeedback(target, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTransformFeedbacks(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glDeleteTransformFeedbacks(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTransformFeedbacks(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glDeleteTransformFeedbacks(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genTransformFeedbacks(int n, int[] ids, int offset) {
|
||||||
|
GLES30.glGenTransformFeedbacks(n, ids, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void genTransformFeedbacks(int n, java.nio.IntBuffer ids) {
|
||||||
|
GLES30.glGenTransformFeedbacks(n, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTransformFeedback(int id) {
|
||||||
|
return GLES30.glIsTransformFeedback(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pauseTransformFeedback() {
|
||||||
|
GLES30.glPauseTransformFeedback();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void resumeTransformFeedback() {
|
||||||
|
GLES30.glResumeTransformFeedback();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void getProgramBinary(int program, int bufSize, int[] length, int lengthOffset, int[] binaryFormat, int
|
||||||
|
// binaryFormatOffset, java.nio.Buffer binary) {
|
||||||
|
// GLES30.glGetProgramBinary(program, bufSize, length, lengthOffset, binaryFormat, binaryFormatOffset, binary);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getProgramBinary(int program, int bufSize, java.nio.IntBuffer length, java.nio.IntBuffer binaryFormat,
|
||||||
|
// java.nio.Buffer binary) {
|
||||||
|
// GLES30.glGetProgramBinary(program, bufSize, length, binaryFormat, binary);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void programBinary(int program, int binaryFormat, java.nio.Buffer binary, int length) {
|
||||||
|
// GLES30.glProgramBinary(program, binaryFormat, binary, length);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void programParameteri(int program, int pname, int value) {
|
||||||
|
GLES30.glProgramParameteri(program, pname, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void invalidateFramebuffer(int target, int numAttachments, int[] attachments, int offset) {
|
||||||
|
// GLES30.glInvalidateFramebuffer(target, numAttachments, attachments, offset);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidateFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments) {
|
||||||
|
GLES30.glInvalidateFramebuffer(target, numAttachments, attachments);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void invalidateSubFramebuffer(int target, int numAttachments, int[] attachments, int offset, int x, int y, int width,
|
||||||
|
// int height) {
|
||||||
|
// GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, offset, x, y, width, height);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidateSubFramebuffer(int target, int numAttachments, java.nio.IntBuffer attachments, int x, int y,
|
||||||
|
int width, int height) {
|
||||||
|
GLES30.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void texStorage2D(int target, int levels, int internalformat, int width, int height) {
|
||||||
|
// GLES30.glTexStorage2D(target, levels, internalformat, width, height);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void texStorage3D(int target, int levels, int internalformat, int width, int height, int depth) {
|
||||||
|
// GLES30.glTexStorage3D(target, levels, internalformat, width, height, depth);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, int[] params, int offset) {
|
||||||
|
// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params, offset);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void getInternalformativ(int target, int internalformat, int pname, int bufSize, java.nio.IntBuffer params) {
|
||||||
|
// GLES30.glGetInternalformativ(target, internalformat, pname, bufSize, params);
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@ public class GlConfigChooser implements GLSurfaceView.EGLConfigChooser {
|
|||||||
EGL10.EGL_ALPHA_SIZE, 8,
|
EGL10.EGL_ALPHA_SIZE, 8,
|
||||||
EGL10.EGL_DEPTH_SIZE, 16,
|
EGL10.EGL_DEPTH_SIZE, 16,
|
||||||
// Requires that setEGLContextClientVersion(2) is called on the view.
|
// Requires that setEGLContextClientVersion(2) is called on the view.
|
||||||
EGL10.EGL_RENDERABLE_TYPE, 4 /* EGL_OPENGL_ES2_BIT */,
|
EGL10.EGL_RENDERABLE_TYPE, 4 /*EGL14.EGL_OPENGL_ES2_BIT*/ /*0x40 /*EGLExt.EGL_OPENGL_ES3_BIT_KHR*/,
|
||||||
EGL10.EGL_STENCIL_SIZE, 8,
|
EGL10.EGL_STENCIL_SIZE, 8,
|
||||||
EGL10.EGL_NONE};
|
EGL10.EGL_NONE};
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ public class GlConfigChooser implements GLSurfaceView.EGLConfigChooser {
|
|||||||
EGL10.EGL_BLUE_SIZE, 8,
|
EGL10.EGL_BLUE_SIZE, 8,
|
||||||
EGL10.EGL_ALPHA_SIZE, 8,
|
EGL10.EGL_ALPHA_SIZE, 8,
|
||||||
EGL10.EGL_DEPTH_SIZE, 16,
|
EGL10.EGL_DEPTH_SIZE, 16,
|
||||||
EGL10.EGL_RENDERABLE_TYPE, 4 /* EGL_OPENGL_ES2_BIT */,
|
EGL10.EGL_RENDERABLE_TYPE, 4 /*EGL14.EGL_OPENGL_ES2_BIT*/ /*0x40 /*EGLExt.EGL_OPENGL_ES3_BIT_KHR*/,
|
||||||
EGL10.EGL_STENCIL_SIZE, 8,
|
EGL10.EGL_STENCIL_SIZE, 8,
|
||||||
EGL10.EGL_NONE};
|
EGL10.EGL_NONE};
|
||||||
|
|
||||||
|
|||||||
83
vtm-android/src/org/oscim/android/gl/GlContextFactory.java
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Gustl22
|
||||||
|
* Copyright 2019 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2009 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
|
||||||
|
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
|
||||||
|
* governing permissions and limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.gl;
|
||||||
|
|
||||||
|
import android.opengl.GLSurfaceView;
|
||||||
|
|
||||||
|
import org.oscim.android.MapView;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import javax.microedition.khronos.egl.EGL10;
|
||||||
|
import javax.microedition.khronos.egl.EGLConfig;
|
||||||
|
import javax.microedition.khronos.egl.EGLContext;
|
||||||
|
import javax.microedition.khronos.egl.EGLDisplay;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://developer.android.com/guide/topics/graphics/opengl.html#version-check
|
||||||
|
* <p>
|
||||||
|
* https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/surfaceview/GLSurfaceView20.java
|
||||||
|
*/
|
||||||
|
public class GlContextFactory implements GLSurfaceView.EGLContextFactory {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(GlContextFactory.class);
|
||||||
|
|
||||||
|
private static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
|
||||||
|
log.info("creating OpenGL ES " + MapView.targetGLESVersion + " context");
|
||||||
|
checkEglError("Before eglCreateContext " + MapView.targetGLESVersion, egl);
|
||||||
|
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, (int) MapView.targetGLESVersion, EGL10.EGL_NONE};
|
||||||
|
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
|
||||||
|
boolean success = checkEglError("After eglCreateContext " + MapView.targetGLESVersion, egl);
|
||||||
|
|
||||||
|
if ((!success || context == null) && MapView.targetGLESVersion > 2) {
|
||||||
|
log.warn("Falling back to GLES 2");
|
||||||
|
MapView.targetGLESVersion = 2.0;
|
||||||
|
return createContext(egl, display, eglConfig);
|
||||||
|
}
|
||||||
|
log.info("Returning a GLES " + MapView.targetGLESVersion + " context");
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
|
||||||
|
egl.eglDestroyContext(display, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean checkEglError(String prompt, EGL10 egl) {
|
||||||
|
int error;
|
||||||
|
boolean result = true;
|
||||||
|
while ((error = egl.eglGetError()) != EGL10.EGL_SUCCESS) {
|
||||||
|
result = false;
|
||||||
|
log.error(String.format("%s: EGL error: 0x%x", prompt, error));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,228 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Andrea Antonello
|
||||||
|
* Copyright 2019 devemux86
|
||||||
|
*
|
||||||
|
* This program 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 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.oscim.android.tiling.source.mbtiles;
|
||||||
|
|
||||||
|
import android.database.Cursor;
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
|
import org.oscim.core.BoundingBox;
|
||||||
|
import org.oscim.core.MercatorProjection;
|
||||||
|
import org.oscim.layers.tile.MapTile;
|
||||||
|
import org.oscim.map.Viewport;
|
||||||
|
import org.oscim.tiling.ITileDataSink;
|
||||||
|
import org.oscim.tiling.ITileDataSource;
|
||||||
|
import org.oscim.tiling.QueryResult;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A tile data source for MBTiles raster databases.
|
||||||
|
*/
|
||||||
|
public class MBTilesBitmapTileDataSource implements ITileDataSource {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(MBTilesBitmapTileDataSource.class);
|
||||||
|
|
||||||
|
private static final String TABLE_TILES = "tiles";
|
||||||
|
private static final String COL_TILES_ZOOM_LEVEL = "zoom_level";
|
||||||
|
private static final String COL_TILES_TILE_COLUMN = "tile_column";
|
||||||
|
private static final String COL_TILES_TILE_ROW = "tile_row";
|
||||||
|
private static final String COL_TILES_TILE_DATA = "tile_data";
|
||||||
|
private static final String SELECT_TILES = "SELECT " + COL_TILES_TILE_DATA + " from " + TABLE_TILES + " where "
|
||||||
|
+ COL_TILES_ZOOM_LEVEL + "=? AND " + COL_TILES_TILE_COLUMN + "=? AND " + COL_TILES_TILE_ROW + "=?";
|
||||||
|
|
||||||
|
private static final String TABLE_METADATA = "metadata";
|
||||||
|
private static final String COL_METADATA_NAME = "name";
|
||||||
|
private static final String COL_METADATA_VALUE = "value";
|
||||||
|
private static final String SELECT_METADATA = "select " + COL_METADATA_NAME + "," + COL_METADATA_VALUE + " from "
|
||||||
|
+ TABLE_METADATA;
|
||||||
|
|
||||||
|
private final Integer mAlpha;
|
||||||
|
private final SQLiteDatabase mDatabase;
|
||||||
|
private Map<String, String> mMetadata;
|
||||||
|
private final Integer mTransparentColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a MBTiles tile data source.
|
||||||
|
*
|
||||||
|
* @param path the path to the MBTiles database.
|
||||||
|
* @param alpha an optional alpha value [0-255] to make the tiles transparent.
|
||||||
|
* @param transparentColor an optional color that will be made transparent in the bitmap.
|
||||||
|
*/
|
||||||
|
MBTilesBitmapTileDataSource(String path, Integer alpha, Integer transparentColor) {
|
||||||
|
mDatabase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
|
||||||
|
mAlpha = alpha;
|
||||||
|
mTransparentColor = transparentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cancel() {
|
||||||
|
mDatabase.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispose() {
|
||||||
|
mDatabase.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
String getAttribution() {
|
||||||
|
return getMetadata().get("attribution");
|
||||||
|
}
|
||||||
|
|
||||||
|
BoundingBox getBounds() {
|
||||||
|
String bounds = getMetadata().get("bounds");
|
||||||
|
if (bounds != null) {
|
||||||
|
String[] split = bounds.split(",");
|
||||||
|
double w = Double.parseDouble(split[0]);
|
||||||
|
double s = Double.parseDouble(split[1]);
|
||||||
|
double e = Double.parseDouble(split[2]);
|
||||||
|
double n = Double.parseDouble(split[3]);
|
||||||
|
return new BoundingBox(s, w, n, e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return getMetadata().get("description");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the image format (jpg, png)
|
||||||
|
*/
|
||||||
|
public String getFormat() {
|
||||||
|
return getMetadata().get("format");
|
||||||
|
}
|
||||||
|
|
||||||
|
int getMaxZoom() {
|
||||||
|
String maxZoom = getMetadata().get("maxzoom");
|
||||||
|
if (maxZoom != null)
|
||||||
|
return Integer.parseInt(maxZoom);
|
||||||
|
return Viewport.MAX_ZOOM_LEVEL;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, String> getMetadata() {
|
||||||
|
if (mMetadata == null) {
|
||||||
|
mMetadata = new HashMap<>();
|
||||||
|
Cursor cursor = null;
|
||||||
|
try {
|
||||||
|
cursor = mDatabase.rawQuery(SELECT_METADATA, null);
|
||||||
|
while (cursor.moveToNext()) {
|
||||||
|
String key = cursor.getString(0);
|
||||||
|
String value = cursor.getString(1);
|
||||||
|
mMetadata.put(key, value);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (cursor != null)
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getMinZoom() {
|
||||||
|
String minZoom = getMetadata().get("minzoom");
|
||||||
|
if (minZoom != null)
|
||||||
|
return Integer.parseInt(minZoom);
|
||||||
|
return Viewport.MIN_ZOOM_LEVEL;
|
||||||
|
}
|
||||||
|
|
||||||
|
String getName() {
|
||||||
|
return getMetadata().get("name");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersion() {
|
||||||
|
return getMetadata().get("version");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static android.graphics.Bitmap processAlpha(android.graphics.Bitmap bitmap, int alpha) {
|
||||||
|
android.graphics.Bitmap newBitmap = android.graphics.Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), android.graphics.Bitmap.Config.ARGB_8888);
|
||||||
|
Canvas canvas = new Canvas(newBitmap);
|
||||||
|
Paint paint = new Paint();
|
||||||
|
paint.setAlpha(alpha);
|
||||||
|
canvas.drawBitmap(bitmap, 0, 0, paint);
|
||||||
|
return newBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static android.graphics.Bitmap processTransparentColor(android.graphics.Bitmap bitmap, int colorToRemove) {
|
||||||
|
int[] pixels = new int[bitmap.getWidth() * bitmap.getHeight()];
|
||||||
|
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
|
||||||
|
for (int i = 0; i < pixels.length; i++) {
|
||||||
|
if (pixels[i] == colorToRemove)
|
||||||
|
pixels[i] = Color.alpha(Color.TRANSPARENT);
|
||||||
|
}
|
||||||
|
android.graphics.Bitmap newBitmap = android.graphics.Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), android.graphics.Bitmap.Config.ARGB_8888);
|
||||||
|
newBitmap.setPixels(pixels, 0, newBitmap.getWidth(), 0, 0, newBitmap.getWidth(), newBitmap.getHeight());
|
||||||
|
return newBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void query(MapTile tile, ITileDataSink sink) {
|
||||||
|
QueryResult res = QueryResult.FAILED;
|
||||||
|
try {
|
||||||
|
byte[] bytes = readTile(tile.tileX, tile.tileY, tile.zoomLevel);
|
||||||
|
|
||||||
|
if (mTransparentColor != null || mAlpha != null) {
|
||||||
|
android.graphics.Bitmap androidBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
|
||||||
|
if (mTransparentColor != null)
|
||||||
|
androidBitmap = processTransparentColor(androidBitmap, mTransparentColor);
|
||||||
|
if (mAlpha != null)
|
||||||
|
androidBitmap = processAlpha(androidBitmap, mAlpha);
|
||||||
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
androidBitmap.compress(android.graphics.Bitmap.CompressFormat.PNG, 100, bos);
|
||||||
|
bytes = bos.toByteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
Bitmap bitmap = CanvasAdapter.decodeBitmap(new ByteArrayInputStream(bytes));
|
||||||
|
sink.setTileImage(bitmap);
|
||||||
|
res = QueryResult.SUCCESS;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.debug("{} invalid bitmap", tile);
|
||||||
|
} finally {
|
||||||
|
sink.completed(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a Tile's image bytes from the MBTiles database.
|
||||||
|
*
|
||||||
|
* @param tileX the x tile index.
|
||||||
|
* @param tileY the y tile index (OSM notation).
|
||||||
|
* @param zoomLevel the zoom level.
|
||||||
|
* @return the tile image bytes.
|
||||||
|
*/
|
||||||
|
private byte[] readTile(int tileX, int tileY, byte zoomLevel) {
|
||||||
|
Cursor cursor = null;
|
||||||
|
try {
|
||||||
|
long tmsTileY = MercatorProjection.tileYToTMS(tileY, zoomLevel);
|
||||||
|
cursor = mDatabase.rawQuery(SELECT_TILES, new String[]{String.valueOf(zoomLevel), String.valueOf(tileX), String.valueOf(tmsTileY)});
|
||||||
|
if (cursor.moveToFirst())
|
||||||
|
return cursor.getBlob(0);
|
||||||
|
} finally {
|
||||||
|
if (cursor != null)
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||