Compare commits
2406 Commits
jars_remov
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d96dfb7f1 | ||
| fb0b88e916 | |||
|
|
1ee201a41f | ||
|
|
72a93a0cc0 | ||
|
|
290b8ec1dd | ||
|
|
ff9246168b | ||
|
|
eef8ee3934 | ||
|
|
6342756105 | ||
|
|
25d28ad9e2 | ||
|
|
5613a96cc2 | ||
|
|
42d251e8cb | ||
|
|
151bed799f | ||
|
|
3436302abf | ||
|
|
b0baf72462 | ||
|
|
79916df991 | ||
|
|
015d173d9b | ||
|
|
5d37b53c02 | ||
|
|
fd092aa4dd | ||
|
|
c36d62e0d1 | ||
|
|
88d8a7ed8a | ||
|
|
6b98cb7d89 | ||
|
|
eef08827e5 | ||
|
|
1207262c72 | ||
|
|
5c5c08f5c4 | ||
|
|
c24a9c1631 | ||
|
|
4c2be99dc9 | ||
|
|
b2efa815f6 | ||
|
|
92727cc75d | ||
|
|
707e1c4069 | ||
|
|
b4520369be | ||
|
|
6bd2239e95 | ||
|
|
b4014eec64 | ||
|
|
3b01288c46 | ||
|
|
7032428f09 | ||
|
|
c7219da70e | ||
|
|
69ad616a5f | ||
|
|
b18f42a5a8 | ||
|
|
272ead2518 | ||
|
|
f7bdc420bf | ||
|
|
43b52de5d8 | ||
|
|
14d67da9fa | ||
|
|
a20fc2ef11 | ||
|
|
d29fd500e5 | ||
|
|
e1191f68ae | ||
|
|
36e4116d39 | ||
|
|
43cfcd4a81 | ||
|
|
332a694d65 | ||
|
|
76fa6bdfc6 | ||
|
|
efd85ea3d9 | ||
|
|
e09af9502a | ||
|
|
fce9791cd6 | ||
|
|
575c2c2b34 | ||
|
|
7b0a5249b7 | ||
|
|
002877ff5f | ||
|
|
4f69560cf3 | ||
|
|
e86bf54d8a | ||
|
|
d89a402375 | ||
|
|
f570105920 | ||
|
|
3011e6acda | ||
|
|
59e8dea217 | ||
|
|
ae7c7b1910 | ||
|
|
cf234cd7ca | ||
|
|
4fb99aaf28 | ||
|
|
7e09e4f2e8 | ||
|
|
d428b689ba | ||
|
|
3c0ca26b67 | ||
|
|
84ccf9d1bc | ||
|
|
5442e67518 | ||
|
|
6fb02ec055 | ||
|
|
825cd05150 | ||
|
|
9357cf380b | ||
|
|
670883701d | ||
|
|
86794c8838 | ||
|
|
c4003bab33 | ||
|
|
f5f77157c9 | ||
|
|
8e0d467ceb | ||
|
|
044c8ce74f | ||
|
|
87dc04251d | ||
|
|
0a2f47ee57 | ||
|
|
172664c55b | ||
|
|
cd90e95a4a | ||
|
|
b3f18a92d2 | ||
|
|
774ceced8b | ||
|
|
2ea8e006a3 | ||
|
|
f04b8d36f8 | ||
|
|
37363b31da | ||
|
|
44a1756229 | ||
|
|
a184e25348 | ||
|
|
6f64e97faf | ||
|
|
30ad6f1cef | ||
|
|
bd965750a9 | ||
|
|
f076544993 | ||
|
|
bb03b40075 | ||
|
|
634a2e5c0d | ||
|
|
c3203b3cb4 | ||
|
|
a82275315c | ||
|
|
12a58e5827 | ||
|
|
9895921a5c | ||
|
|
ba8b800ee0 | ||
|
|
8be9211ed6 | ||
|
|
b8983007d2 | ||
|
|
bd24ba12d5 | ||
|
|
5de7070f15 | ||
|
|
e2c901d1e5 | ||
|
|
156fda15cd | ||
|
|
425e5dac61 | ||
|
|
8f15859f9b | ||
|
|
6d29d11499 | ||
|
|
6da37d481d | ||
|
|
62015eee0b | ||
|
|
e62e27cf22 | ||
|
|
76bf76a090 | ||
|
|
e906305910 | ||
|
|
08b94a0c42 | ||
|
|
c508bde844 | ||
|
|
d4b7e34d17 | ||
|
|
d5543bd7ef | ||
|
|
354bc16ead | ||
|
|
8889235690 | ||
|
|
9b43d7f498 | ||
|
|
ef2d2dd197 | ||
|
|
1245158ba3 | ||
|
|
ef5f7acbdf | ||
|
|
e1c24ee8cf | ||
|
|
9f5ddd2381 | ||
|
|
1fbc501bef | ||
|
|
d7c69e12d6 | ||
|
|
1fa86b5e07 | ||
|
|
efed81bdeb | ||
|
|
a308eb48ac | ||
|
|
5926dd3e65 | ||
|
|
a11e620792 | ||
|
|
6850eff26c | ||
|
|
ddf94ae2ca | ||
|
|
22ed9653ec | ||
|
|
3bb8ce00c5 | ||
|
|
b9cbd97c40 | ||
|
|
6801b895e4 | ||
|
|
c0d5f4a0ca | ||
|
|
2859a18d72 | ||
|
|
869446ad13 | ||
|
|
b2fd22885e | ||
|
|
7d6c623a80 | ||
|
|
6bea801bf6 | ||
|
|
d446a3448b | ||
|
|
d006ba5361 | ||
|
|
0eb4f3752f | ||
|
|
789c280fc2 | ||
|
|
a881eec9b1 | ||
|
|
1bc1d88464 | ||
|
|
1c18221f05 | ||
|
|
f4162acf04 | ||
|
|
1138978c22 | ||
|
|
bd43baba20 | ||
|
|
2e6da74af8 | ||
|
|
f6561d2a2e | ||
|
|
45a42bb242 | ||
|
|
3043173814 | ||
|
|
cde5d898c7 | ||
|
|
58f6215c0f | ||
|
|
d7d6fa57ac | ||
|
|
57bf615ab7 | ||
|
|
9bf3161010 | ||
|
|
98a977ea72 | ||
|
|
661bc08bbf | ||
|
|
804c8c4603 | ||
|
|
e103c38e3e | ||
|
|
e3b4ff502e | ||
|
|
6116ebb348 | ||
|
|
5c3a728d05 | ||
|
|
2070145880 | ||
|
|
e9a670f274 | ||
|
|
e5c87ba06e | ||
|
|
fa992b93f5 | ||
|
|
bf67074cf3 | ||
|
|
074320d6d2 | ||
|
|
6616c22a32 | ||
|
|
1ddba0fe8f | ||
|
|
0a374bc635 | ||
|
|
8602b5780a | ||
|
|
ab32f25a7c | ||
|
|
ebfb7bd85d | ||
|
|
ed739c59f5 | ||
|
|
238a5f8f14 | ||
|
|
126c47dfd7 | ||
|
|
e8389e6887 | ||
|
|
81f526dc56 | ||
|
|
23ae072ed6 | ||
|
|
20f4fad7f3 | ||
|
|
1805e86173 | ||
|
|
8acda4fbf5 | ||
|
|
65d8bd9675 | ||
|
|
34ea0af92d | ||
|
|
2d64186a1a | ||
|
|
4604f07042 | ||
|
|
52f47bd797 | ||
|
|
50f885b5f8 | ||
|
|
742405a193 | ||
|
|
18ee0a393f | ||
|
|
29634d29b5 | ||
|
|
635d5bacdd | ||
|
|
1156976ea5 | ||
|
|
964736d60f | ||
|
|
2de19ef080 | ||
|
|
0faf3eca66 | ||
|
|
c239d8c1b7 | ||
|
|
c28aec5f59 | ||
|
|
e0efff50a8 | ||
|
|
8364ff83d1 | ||
|
|
5d7a4e0954 | ||
|
|
2785d22a3a | ||
|
|
2768f84a5f | ||
|
|
1ede5c5456 | ||
|
|
5778d0e74a | ||
|
|
6672c57f05 | ||
|
|
c1fbdb42be | ||
|
|
841b3af042 | ||
|
|
bdd08e3486 | ||
|
|
68679c6dc0 | ||
|
|
9f280a41c0 | ||
|
|
65c8d5199f | ||
|
|
2b8326f465 | ||
|
|
488b350671 | ||
|
|
5285b0c272 | ||
|
|
ebe98c8990 | ||
|
|
c30095c59d | ||
|
|
f449a0a6fb | ||
|
|
74dfa07c81 | ||
|
|
bf6b325ce8 | ||
|
|
b43dfc53e4 | ||
|
|
883ed23272 | ||
|
|
0a0c2b3ce0 | ||
|
|
c783255b97 | ||
|
|
c689ad9e67 | ||
|
|
0fabe4c738 | ||
|
|
d4a95dad19 | ||
|
|
4405b6235a | ||
|
|
766b0d9914 | ||
|
|
412cacd1c2 | ||
|
|
299592d352 | ||
|
|
d512731d06 | ||
|
|
b2a8d3040a | ||
|
|
892ea92580 | ||
|
|
f7acfd9017 | ||
|
|
701ac43746 | ||
|
|
b926310296 | ||
|
|
49d1e7bafc | ||
|
|
6f697ed6f8 | ||
|
|
cdcae29ae1 | ||
|
|
a13c4a3793 | ||
|
|
031a3bfa00 | ||
|
|
7122e1fbc5 | ||
|
|
6ed00d9a94 | ||
|
|
327d6f1466 | ||
|
|
17a135813b | ||
|
|
0dd82cb68f | ||
|
|
ae04fa83f6 | ||
|
|
4bfcdadb76 | ||
|
|
fa5a72f20d | ||
|
|
d81eb3d706 | ||
|
|
97332e3e73 | ||
|
|
e4a4857eb8 | ||
|
|
80018de754 | ||
|
|
01bb7ca074 | ||
|
|
a8f5eee505 | ||
|
|
644cf9dcb6 | ||
|
|
cb0109ba42 | ||
|
|
2fa5afec11 | ||
|
|
69ea1e414a | ||
|
|
4866abe38e | ||
|
|
4c10d5848b | ||
|
|
faed3d05a5 | ||
|
|
88a9a9ee7f | ||
|
|
3915e3343d | ||
|
|
b22c023f1a | ||
|
|
5de7c9ec38 | ||
|
|
14c485914c | ||
|
|
c20922b5f5 | ||
|
|
1294ff9fea | ||
|
|
992d9c8e66 | ||
|
|
948449b3ec | ||
|
|
0c1c06c1bb | ||
|
|
7ad3f4a0b1 | ||
|
|
c5836adc17 | ||
|
|
107a429517 | ||
|
|
2cb0a80c47 | ||
|
|
db9f83120a | ||
|
|
5facdb9888 | ||
|
|
3f3caa1912 | ||
|
|
03b9f224b2 | ||
|
|
c013465d49 | ||
|
|
c91833519e | ||
|
|
055cd54beb | ||
|
|
3eaad42903 | ||
|
|
6ab98419df | ||
|
|
a9e18a2add | ||
|
|
83aed13683 | ||
|
|
5779d10632 | ||
|
|
85e818d788 | ||
|
|
cc1d4cf6d9 | ||
|
|
0404effca3 | ||
|
|
eef1a8c779 | ||
|
|
527fc3d42d | ||
|
|
53b262f190 | ||
|
|
dcb7b0d10c | ||
|
|
e6137163b9 | ||
|
|
2cf9a4a472 | ||
|
|
55d8797f37 | ||
|
|
653c6489b9 | ||
|
|
c19e06b718 | ||
|
|
5de4c6b7ab | ||
|
|
900448f8d3 | ||
|
|
4be42dbc0f | ||
|
|
72ba3d6429 | ||
|
|
f5815203c4 | ||
|
|
0c050c7405 | ||
|
|
71bf1390f6 | ||
|
|
368cf1ff4a | ||
|
|
c526599e20 | ||
|
|
fcf7272f2e | ||
|
|
cf2bdb251b | ||
|
|
551c0231a0 | ||
|
|
70741d8f5b | ||
|
|
9209afba01 | ||
|
|
9e81473d36 | ||
|
|
ffeaf1b81c | ||
|
|
efab21f4f2 | ||
|
|
a6ce05034a | ||
|
|
634d67a206 | ||
|
|
30ae0fb48f | ||
|
|
5740290a9b | ||
|
|
149d5d9057 | ||
|
|
fe2d806d73 | ||
|
|
63ccf0dcfa | ||
|
|
5f1c3c3186 | ||
|
|
b98505c815 | ||
|
|
5979161611 | ||
|
|
d6e55edd8e | ||
|
|
431eadaa87 | ||
|
|
df82ebfaa6 | ||
|
|
b5ee7c1b46 | ||
|
|
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 | ||
|
|
9de76897bc | ||
|
|
a67b2f2c91 | ||
|
|
791f054f70 | ||
|
|
7e13586463 | ||
|
|
c3639dcb24 | ||
|
|
49ded685b4 | ||
|
|
9b14865bf3 | ||
|
|
abac84e82a | ||
|
|
0367507dae | ||
|
|
9977061680 | ||
|
|
3cae38040c | ||
|
|
97cdfa119d | ||
|
|
641db3ade0 | ||
|
|
bddf2443b6 | ||
|
|
1404d21838 | ||
|
|
95bbc5ea3e | ||
|
|
f8776ffe5f | ||
|
|
bc1dee49a4 | ||
|
|
d81a6309bf | ||
|
|
9a6da018a9 | ||
|
|
8d639499ba | ||
|
|
a5d7a8f6b0 | ||
|
|
577f1520d2 | ||
|
|
c938533943 | ||
|
|
e3b137e3c4 | ||
|
|
72b72b8029 | ||
|
|
ba68b79e86 | ||
|
|
49ef4c8e1b | ||
|
|
535482025e | ||
|
|
e73ac4acfc | ||
|
|
bc20664bc5 | ||
|
|
06936fc4ee | ||
|
|
0829098ebb | ||
|
|
8ad2036ec1 | ||
|
|
4f7675d2a8 | ||
|
|
8f4e9967f0 | ||
|
|
f884c17195 | ||
|
|
490b932eab | ||
|
|
149353119b | ||
|
|
9c3f3b8a4c | ||
|
|
f9e06c80ad | ||
|
|
fe2c067272 | ||
|
|
9c3488e107 | ||
|
|
df784f6f68 | ||
|
|
a178357ca8 | ||
|
|
6627eab8e2 | ||
|
|
0a7638e10d | ||
|
|
f94c665b27 | ||
|
|
d23bca9c7f | ||
|
|
53dbb737fb | ||
|
|
1aa5f24e11 | ||
|
|
1d44057198 | ||
|
|
bcf4cff42b | ||
|
|
cbdeb58c2f | ||
|
|
df5bcd583f | ||
|
|
e2a4ad8a97 | ||
|
|
795359fb44 | ||
|
|
a9a042ea41 | ||
|
|
cd5a62a2ff | ||
|
|
dfd3a7dcf6 | ||
|
|
5615604170 | ||
|
|
b3f6899b1f | ||
|
|
e3f2f19119 | ||
|
|
126b98ae8c | ||
|
|
9104b746ac | ||
|
|
fc6bce20bb | ||
|
|
76582da497 | ||
|
|
a06ea5492e | ||
|
|
1d7ece5a65 | ||
|
|
67b911a7df | ||
|
|
7947e5c027 | ||
|
|
69f7ed7ae0 | ||
|
|
fa658bd1f0 | ||
|
|
233f0c4f7e | ||
|
|
02b29c7584 | ||
|
|
cedf3edc61 | ||
|
|
60aa9600d8 | ||
|
|
3d92807d26 | ||
|
|
67195bbc0c | ||
|
|
7ba5984e5f | ||
|
|
27aee33cb9 | ||
|
|
4a848cc08c | ||
|
|
75c2841a13 | ||
|
|
ed8f03122b | ||
|
|
d80e4fdabc | ||
|
|
c8817f80c8 | ||
|
|
3ee1034f1a | ||
|
|
3b224d21fc | ||
|
|
0d7d75ccb5 | ||
|
|
324a1c309c | ||
|
|
0046f5c159 | ||
|
|
7865867973 | ||
|
|
7c12c2ae9b | ||
|
|
564435a22a | ||
|
|
607cdeb5db | ||
|
|
4903a4b5f4 | ||
|
|
e5043447e3 | ||
|
|
4f78fed094 | ||
|
|
0fbce21140 | ||
|
|
3a19c2f2f5 | ||
|
|
c694fbc63b | ||
|
|
c4b6d019ff | ||
|
|
3603dfef03 | ||
|
|
35f1e7092c | ||
|
|
9283b80594 | ||
|
|
f81dff2365 | ||
|
|
5c2b404b3f | ||
|
|
095ed65eb3 | ||
|
|
3d7a09c457 | ||
|
|
abc1867d7c | ||
|
|
3449bd86e8 | ||
|
|
1861ca4a1b | ||
|
|
a77d89b8b3 | ||
|
|
f63c303293 | ||
|
|
f1634e4976 | ||
|
|
b59f20ef49 | ||
|
|
07138f3240 | ||
|
|
eddfa5a896 | ||
|
|
4532e397c0 | ||
|
|
81a270428c | ||
|
|
76e73368ab | ||
|
|
f4f8eb8d1c | ||
|
|
b695d43fee | ||
|
|
f6d2db4c6f | ||
|
|
e1db67f099 | ||
|
|
7142f3410d | ||
|
|
b110314077 | ||
|
|
1cf4d3a60b | ||
|
|
9c5fd29ff1 | ||
|
|
27a39fbfd7 | ||
|
|
d3aa2af73b | ||
|
|
2555fea5da | ||
|
|
8bb63c875f | ||
|
|
76dcc8b909 | ||
|
|
c38975fcba | ||
|
|
b90d99f82b | ||
|
|
76d55bb1a0 | ||
|
|
d9f7638a25 | ||
|
|
e7a391e640 | ||
|
|
12fe08884e | ||
|
|
4d9ad3e942 | ||
|
|
ae6ce553b9 | ||
|
|
13c42d509c | ||
|
|
a6aa2b2388 | ||
|
|
9f7fe2577b | ||
|
|
ad2348631a | ||
|
|
2dbad2b16a | ||
|
|
8db30d8537 | ||
|
|
25f0310334 | ||
|
|
3041ab5515 | ||
|
|
27e2c5dde5 | ||
|
|
a386cfea4f | ||
|
|
fe104300ba | ||
|
|
f1ae5c3d68 | ||
|
|
767019ee06 | ||
|
|
3a3a58d273 | ||
|
|
0eb53403d1 | ||
|
|
4938852b40 | ||
|
|
0d14473132 | ||
|
|
34ddf3a005 | ||
|
|
9ca4785701 | ||
|
|
8d2aba9c65 | ||
|
|
2872ce94a3 | ||
|
|
d5ebf43e3d | ||
|
|
223eb120fa | ||
|
|
b94d943247 | ||
|
|
d409aa5b96 | ||
|
|
644c83ed69 | ||
|
|
db871d4a22 | ||
|
|
3f959a3b46 | ||
|
|
903dbad9c6 | ||
|
|
3afca64080 | ||
|
|
16f0d524c5 | ||
|
|
f669022ca3 | ||
|
|
dce7886447 | ||
|
|
f77c46f56d | ||
|
|
45383397bc | ||
|
|
c14e93e25d | ||
|
|
7b7b5a923a | ||
|
|
6b4bb7d8bf | ||
|
|
5d4d630ce0 | ||
|
|
8d121c0798 | ||
|
|
6b362e5125 | ||
|
|
c2eb679adf | ||
|
|
183cb8aafd | ||
|
|
4bf27bc910 | ||
|
|
f0639972b4 | ||
|
|
e1d17321c6 | ||
|
|
b75ac0d647 | ||
|
|
7f81ddf47f | ||
|
|
c580e1d7a5 | ||
|
|
7a28788972 | ||
|
|
36e547d828 | ||
|
|
bd762dae9e | ||
|
|
347c1d31bb | ||
|
|
c6be08a903 | ||
|
|
8ab2195500 | ||
|
|
9fff945978 | ||
|
|
18d8e18bdf | ||
|
|
b32692942f | ||
|
|
9c58d8219c | ||
|
|
32c57a42a4 | ||
|
|
6c004b8be7 | ||
|
|
9a31cc07b5 | ||
|
|
0de27b7354 | ||
|
|
dc340a382e | ||
|
|
4c9354c326 | ||
|
|
d1fdca170e | ||
|
|
d614809df0 | ||
|
|
0c3acfd69c | ||
|
|
da95660c73 | ||
|
|
c8396062ae | ||
|
|
579f49bfd6 | ||
|
|
20f1121d3a | ||
|
|
26253a6104 | ||
|
|
b190211e5a | ||
|
|
edf29d2b0e | ||
|
|
a001f4615c | ||
|
|
5818edc228 | ||
|
|
e562ebdff6 | ||
|
|
d08ef59278 | ||
|
|
bb1d602267 | ||
|
|
c1eca04ab1 | ||
|
|
f6c28dc158 | ||
|
|
b760eadd4d | ||
|
|
7500ca1711 | ||
|
|
808671c1fb | ||
|
|
2d3ab0b6fd | ||
|
|
6461d39357 | ||
|
|
e0c02a83d0 | ||
|
|
ca56e0fe33 | ||
|
|
320ce5b44d | ||
|
|
f061e06d94 | ||
|
|
d1ce52ef52 | ||
|
|
28961caa79 | ||
|
|
4b30ca3242 | ||
|
|
84c45e153a | ||
|
|
d8001e23f6 | ||
|
|
559f4899dd | ||
|
|
04f02d9ae5 | ||
|
|
acb7727234 | ||
|
|
ac0455b1b4 | ||
|
|
5480cd6df8 | ||
|
|
325f848969 | ||
|
|
ea402f77f1 | ||
|
|
759915861e | ||
|
|
bc46217449 | ||
|
|
d8030c1364 | ||
|
|
23d34fa00a | ||
|
|
29322acf87 | ||
|
|
5dcffcc537 | ||
|
|
67afa0b7ab | ||
|
|
a6ecab334c | ||
|
|
edf89ce36b | ||
|
|
4f687e6fec | ||
|
|
cfc036c7ec | ||
|
|
3dbc44e9c2 | ||
|
|
c9e1c81cca | ||
|
|
f7e5544238 | ||
|
|
981536595f | ||
|
|
5aaa2ca96b | ||
|
|
b7a3844aac | ||
|
|
b3e2385ba5 | ||
|
|
03821e1f51 | ||
|
|
77dc06d650 | ||
|
|
0cd6c48b16 | ||
|
|
8a595fd37f | ||
|
|
967875d6b8 | ||
|
|
d60e2ef575 | ||
|
|
58ecf60d9d | ||
|
|
17356e5a2b | ||
|
|
296fdd3c13 | ||
|
|
735acc520a | ||
|
|
ac115b1f0f | ||
|
|
d2ba6647ea | ||
|
|
0180c40855 | ||
|
|
817bd13d7b | ||
|
|
d22dc79655 | ||
|
|
fc9ef062c0 | ||
|
|
f2dda7c8eb | ||
|
|
fdc793d9ec | ||
|
|
3d24aade21 | ||
|
|
6d93aaf57f | ||
|
|
8fc354c96a | ||
|
|
e30f3f7cc3 | ||
|
|
aff2c77267 | ||
|
|
33365b3f7d | ||
|
|
33fdc938fa | ||
|
|
8397d5a3be | ||
|
|
980e9d5e54 | ||
|
|
bc7c55b1f8 | ||
|
|
120182ec15 | ||
|
|
945b84f04f | ||
|
|
f67c457006 | ||
|
|
a2852b0761 | ||
|
|
ebf5d408bc | ||
|
|
75719eae29 | ||
|
|
5c825ea9eb | ||
|
|
15bc23cadf | ||
|
|
88f3283878 | ||
|
|
80848f9d2d | ||
|
|
f1f5726457 | ||
|
|
2ccf3e4c64 | ||
|
|
c8cbf8e0ce | ||
|
|
6544cc1081 | ||
|
|
4c72831336 | ||
|
|
06ac5142f7 | ||
|
|
feae45f78b | ||
|
|
61b8233b97 | ||
|
|
7acbea88cc | ||
|
|
19109516ae | ||
|
|
c1a5ad7e74 | ||
|
|
1a93e4ae13 | ||
|
|
1de6ca8fb7 | ||
|
|
02db7ca08d | ||
|
|
e9bb7aaae4 | ||
|
|
989e9c2ae8 | ||
|
|
e8f41cd339 | ||
|
|
eabd90d14c | ||
|
|
3e4aad4d51 | ||
|
|
b6dc72bbb6 | ||
|
|
4cd11462da | ||
|
|
6344542b10 | ||
|
|
e0031ae8aa | ||
|
|
229ea0b350 | ||
|
|
0a5d08a908 | ||
|
|
aed54c9a49 | ||
|
|
1a3bf4e4fe | ||
|
|
591ae03667 | ||
|
|
3a191fb513 | ||
|
|
2821d8ddb8 | ||
|
|
71d7b71035 | ||
|
|
85858911fa | ||
|
|
0a92c84668 | ||
|
|
c21d7b4390 | ||
|
|
38a9c71bc2 | ||
|
|
2573e458d5 | ||
|
|
25a9891133 | ||
|
|
8ee4e5fb8c | ||
|
|
a38b054228 | ||
|
|
d9bf94da99 | ||
|
|
77653096f9 | ||
|
|
5f534656ea | ||
|
|
ba93445259 | ||
|
|
71f7c45b21 | ||
|
|
ca5e34e1fb | ||
|
|
d937f3516c | ||
|
|
a8909fca08 | ||
|
|
b39feae045 | ||
|
|
9f4ef47b95 | ||
|
|
25e79bac55 | ||
|
|
311f4c7929 | ||
|
|
557e1858a7 | ||
|
|
16fa42d462 | ||
|
|
1133edb83d | ||
|
|
f6dbeba3d8 | ||
|
|
bf8f0745a6 | ||
|
|
829e45224f | ||
|
|
acde5d565d | ||
|
|
f0a652faf3 | ||
|
|
41867344e2 | ||
|
|
0c39ff8be0 | ||
|
|
6f78f08a04 | ||
|
|
3388e1401f | ||
|
|
308497ffa6 | ||
|
|
bfa5a095f0 | ||
|
|
96be36edb8 | ||
|
|
7c9c3732fb | ||
|
|
add62c9fe8 | ||
|
|
4aaa1ce620 | ||
|
|
aa63b49e5a | ||
|
|
1f1d91202c | ||
|
|
51eae28926 | ||
|
|
58b5f2741b | ||
|
|
d82faad435 | ||
|
|
fc8223bfc8 | ||
|
|
3584c4be1e | ||
|
|
001dbe8447 | ||
|
|
54feb7a25e | ||
|
|
ea2a94f76b | ||
|
|
b6bfbc612a | ||
|
|
1d545fd804 | ||
|
|
3acf77c102 | ||
|
|
6dfe2df2fb | ||
|
|
6cb40e1c15 | ||
|
|
afd03809e8 | ||
|
|
efa3cb0231 | ||
|
|
a709bd2623 | ||
|
|
439f2b20ff | ||
|
|
877d217f31 | ||
|
|
885264ad8c | ||
|
|
e224a7cf5b | ||
|
|
e10a223ea6 | ||
|
|
f85453e60c | ||
|
|
a6b3d7b0c2 | ||
|
|
dc15ba5f34 | ||
|
|
1d7afaf8de | ||
|
|
422d81d665 | ||
|
|
4b55043dcc | ||
|
|
7885529fff | ||
|
|
2c610f5e0b | ||
|
|
64a586dde8 | ||
|
|
c1f65144df | ||
|
|
ad2ee3f40e | ||
|
|
01365686fa | ||
|
|
dece13ddc9 | ||
|
|
05e9e0cdc8 | ||
|
|
a9283dd408 | ||
|
|
53ca77d18a | ||
|
|
97654f0670 | ||
|
|
cbd0ac01df | ||
|
|
ca841f5181 | ||
|
|
a322768f8a | ||
|
|
fc7bb2df9b | ||
|
|
062bb8d573 | ||
|
|
ccdea3b663 | ||
|
|
985bbc3f36 | ||
|
|
aa5fc79681 | ||
|
|
58095f31a4 | ||
|
|
e53523b82a | ||
|
|
e5c62c9bc4 | ||
|
|
3c1091d8e0 | ||
|
|
d4f3c32358 | ||
|
|
75b22fee2d | ||
|
|
8a27d14f9a | ||
|
|
ac7706eb7a | ||
|
|
4994d611fe | ||
|
|
1ac57cb719 | ||
|
|
bed6f8f0f2 | ||
|
|
e8a105d892 | ||
|
|
e57bacb957 | ||
|
|
311886e23b | ||
|
|
1e745a6e9b | ||
|
|
41c35ea114 | ||
|
|
2b24bf82f9 | ||
|
|
929beb87fc | ||
|
|
1a1d94e755 | ||
|
|
52bb54c006 | ||
|
|
96f0a60b44 | ||
|
|
98924b83af | ||
|
|
050114eff3 | ||
|
|
ea884f56b1 | ||
|
|
cb732c6823 | ||
|
|
bf420db0f9 | ||
|
|
2a2b30f9fc | ||
|
|
c991666d97 | ||
|
|
aa3aec0218 | ||
|
|
ec4f12b576 | ||
|
|
1b9e9206cb | ||
|
|
f9aa723e53 | ||
|
|
e20196a46a | ||
|
|
f944dab28f | ||
|
|
f19ab87abe | ||
|
|
d937a4d6bb | ||
|
|
5c370cf3ab | ||
|
|
9b460b0f3b | ||
|
|
bc0bbcb4b5 | ||
|
|
0c898bf682 | ||
|
|
50ccecc259 | ||
|
|
769dd696e3 | ||
|
|
7cdeacd1c2 | ||
|
|
3703cf7e00 | ||
|
|
2bded1e05f | ||
|
|
ac6877fcfc | ||
|
|
319a1b6663 | ||
|
|
7427624275 | ||
|
|
8f58966e9e | ||
|
|
10060e4001 | ||
|
|
bd8cdd5d6c | ||
|
|
50d37971b2 | ||
|
|
7d56260c12 | ||
|
|
801eda470d | ||
|
|
1328d050e0 | ||
|
|
a7356e5723 | ||
|
|
41921aa98d | ||
|
|
7c97ac5101 | ||
|
|
290aee9a8b | ||
|
|
12869c6718 | ||
|
|
ab98b676fc | ||
|
|
9c1574eb41 | ||
|
|
3d83c188e0 | ||
|
|
164950e399 | ||
|
|
3a8db9cc7c | ||
|
|
b03fe48760 | ||
|
|
33b68fd0d6 | ||
|
|
b18dae5bef | ||
|
|
083fe22f08 | ||
|
|
ebd07950a4 | ||
|
|
46f4d592d3 | ||
|
|
dd2f240792 | ||
|
|
79d209a225 | ||
|
|
55544b97d9 | ||
|
|
81f105e2db | ||
|
|
19338fab3a | ||
|
|
c4d7b30f0d | ||
|
|
4fb8234e2d | ||
|
|
99f45bfa22 | ||
|
|
c77e131721 | ||
|
|
7355463090 | ||
|
|
3a1ee523bc | ||
|
|
52b362be8b | ||
|
|
1101e894cd | ||
|
|
6e6984f4ed | ||
|
|
8ce3e2e488 | ||
|
|
ba913eb484 | ||
|
|
0d64dfedd4 | ||
|
|
1fa9f133bd | ||
|
|
67357fe2f0 | ||
|
|
136c323a75 | ||
|
|
1db23decca | ||
|
|
85adc04a05 | ||
|
|
b434b38872 | ||
|
|
a922ae7e78 | ||
|
|
435cc602a7 | ||
|
|
dd7d37c745 | ||
|
|
f55fb501a0 | ||
|
|
b58dbc6a16 | ||
|
|
14108fcfe7 | ||
|
|
b32b5ceb0b | ||
|
|
de74719672 | ||
|
|
a4934a50cd | ||
|
|
c926a714db | ||
|
|
88611257f1 | ||
|
|
4a663f949e | ||
|
|
5eae87e892 | ||
|
|
a9bb6e3788 | ||
|
|
f736530049 | ||
|
|
cfa9326e2b | ||
|
|
8eff27c303 | ||
|
|
0f06f854c7 | ||
|
|
89198c1a30 | ||
|
|
8dce91b035 | ||
|
|
49a81cbe04 | ||
|
|
462be14edb | ||
|
|
94c30c1e10 | ||
|
|
fa637cd202 | ||
|
|
42fd941d64 | ||
|
|
6801102631 | ||
|
|
77cf4e7b8f | ||
|
|
6f0a008ffd | ||
|
|
70c5812b09 | ||
|
|
e39c099bdc | ||
|
|
f0a849f4c7 | ||
|
|
0f276c52f3 | ||
|
|
ea36c8c69f | ||
|
|
b96890b24b | ||
|
|
1700936872 | ||
|
|
4904eaf2d3 | ||
|
|
c88b2799b1 | ||
|
|
436b66be82 | ||
|
|
c67b35a277 | ||
|
|
4eebbcea2d | ||
|
|
faada6625f | ||
|
|
52da03ce59 | ||
|
|
ecb76f9af7 | ||
|
|
f1cc7c98b0 | ||
|
|
dde1025e73 | ||
|
|
8a2afd7b40 | ||
|
|
243aca9ae9 | ||
|
|
d01c3eecf3 | ||
|
|
942ed10344 | ||
|
|
938e8167dc | ||
|
|
8b599dbf53 | ||
|
|
11f02128e6 | ||
|
|
440ae04a7e | ||
|
|
3d6cad1a0c | ||
|
|
21ea5a7842 | ||
|
|
4c5de7453d | ||
|
|
418329441f | ||
|
|
166b0ab772 | ||
|
|
5fb07499a7 | ||
|
|
c8ff7a9e07 | ||
|
|
a8b341763e | ||
|
|
bb95008197 | ||
|
|
e08966c418 | ||
|
|
7347844c48 | ||
|
|
d9c65a92ba | ||
|
|
05184e7f5f | ||
|
|
68c72437b4 | ||
|
|
561ec4be85 | ||
|
|
a5679ce214 | ||
|
|
44b40608f6 | ||
|
|
fab7020d3d | ||
|
|
7f42be2d67 | ||
|
|
3fc1583649 | ||
|
|
726d825e07 | ||
|
|
1d46b2f63a | ||
|
|
1cfae3a47f | ||
|
|
fed2cd05e4 | ||
|
|
9b4cf470f9 | ||
|
|
73bc26dd2d | ||
|
|
57a152d0aa | ||
|
|
081e6b8f2b | ||
|
|
ba00a5384d | ||
|
|
43ca550832 | ||
|
|
e793e8851b | ||
|
|
7919d0ab9c | ||
|
|
915046fb9a | ||
|
|
37ace257cf | ||
|
|
e74052c164 | ||
|
|
c02cf5792f | ||
|
|
51f3e2368b | ||
|
|
7a88524343 | ||
|
|
dfe4a10bf0 | ||
|
|
1882806b05 | ||
|
|
5d56d81d83 | ||
|
|
0061b3ae7e | ||
|
|
11caa2a2d3 | ||
|
|
48d6b3e5ba | ||
|
|
178c88c20c | ||
|
|
d6a65ff731 | ||
|
|
53cafa2f3b | ||
|
|
122618c00a | ||
|
|
c389abc7a2 | ||
|
|
b3217ae2c0 | ||
|
|
234bd625e9 | ||
|
|
2a50f89b90 | ||
|
|
bb7aa34905 | ||
|
|
59f74664a2 | ||
|
|
7a1d56d888 | ||
|
|
6b69c9cf94 | ||
|
|
9dfb2678c4 | ||
|
|
7e24b9cf4a | ||
|
|
507f9eca1e | ||
|
|
eca77a0afc | ||
|
|
11d7002841 | ||
|
|
2b171739aa | ||
|
|
0953862f72 | ||
|
|
d719542018 | ||
|
|
d4c6a0730d | ||
|
|
314c2df66b | ||
|
|
9cc2aad1ec | ||
|
|
d7ec1e0ac3 | ||
|
|
af9481d084 | ||
|
|
9b7d893fd5 | ||
|
|
d97511e1e1 | ||
|
|
9bd1cd1159 | ||
|
|
d5954d350f | ||
|
|
bbdc431b9a | ||
|
|
7b00161184 | ||
|
|
bb8dd4db7c | ||
|
|
1bfd76c3da | ||
|
|
d2f61f9bfa | ||
|
|
dc46238af6 | ||
|
|
adb217734f | ||
|
|
e403c45fa3 | ||
|
|
4383726e55 | ||
|
|
6e6e423c74 | ||
|
|
29dfb241fb | ||
|
|
ae1d4fd5d9 | ||
|
|
726f91556c | ||
|
|
278661e569 | ||
|
|
fc4c9cf9bf | ||
|
|
958dfb8166 | ||
|
|
f3d4a8ef7d | ||
|
|
b726f5b6a8 | ||
|
|
8f8d0534b2 | ||
|
|
58354155f6 | ||
|
|
891efed6e6 | ||
|
|
34c0cee0ca | ||
|
|
7e891c452a | ||
|
|
16ae323731 | ||
|
|
eb58dc9e67 | ||
|
|
bf370bceb7 | ||
|
|
d1fd03a52f | ||
|
|
f7f20f486e | ||
|
|
8a34908f36 | ||
|
|
cf4ff8046d | ||
|
|
3ea5af2477 | ||
|
|
e85ec48468 | ||
|
|
7a952cdaf9 | ||
|
|
c8f74e649e | ||
|
|
c238916d89 | ||
|
|
a06973241c | ||
|
|
b8d382a9f3 | ||
|
|
35d8d2d57e | ||
|
|
92c10edb11 | ||
|
|
ec4fa0ed5f | ||
|
|
7af0be9af7 | ||
|
|
0a465abbfe | ||
|
|
e0f02323bb | ||
|
|
9022ec14ec | ||
|
|
adc04ace7f | ||
|
|
e3fdaff470 | ||
|
|
7f5577ff24 | ||
|
|
b174f65122 | ||
|
|
3402308ced | ||
|
|
1ea26e576e | ||
|
|
231d596b69 | ||
|
|
c0ece9dd7d | ||
|
|
c29c85db41 | ||
|
|
0814a06d42 | ||
|
|
9642c8c5aa | ||
|
|
ff630fdcfa | ||
|
|
d492358a94 | ||
|
|
6f85e24ed9 | ||
|
|
da93f0ab72 | ||
|
|
b1cfdfd454 | ||
|
|
0c5a7e7aa6 | ||
|
|
e1c1a20074 | ||
|
|
dfc1aeb98f | ||
|
|
8626aa2f53 | ||
|
|
381907526e | ||
|
|
d8fb724d61 | ||
|
|
de7c203926 | ||
|
|
c3cf288548 | ||
|
|
1bb112e685 | ||
|
|
00ceb9f359 | ||
|
|
35c22e68dc | ||
|
|
ecc26caec0 | ||
|
|
d32b13fed4 | ||
|
|
711ca7f6d9 | ||
|
|
aaec15a66a | ||
|
|
77f383913d | ||
|
|
e6d42a5a61 | ||
|
|
ef391a3994 | ||
|
|
6c98e600bc | ||
|
|
1d5fa4b9db | ||
|
|
a492aaa733 | ||
|
|
424126216c | ||
|
|
c3ac8a412c | ||
|
|
3178787954 | ||
|
|
4fdae2a94c | ||
|
|
68fe1f8b8a | ||
|
|
ef34ba9766 | ||
|
|
bf2909585b | ||
|
|
a85b435fb6 | ||
|
|
4c78f8652b | ||
|
|
f4ffac44d2 | ||
|
|
0bc45dfd74 | ||
|
|
df909daccb | ||
|
|
fa62602826 | ||
|
|
a8641ce535 | ||
|
|
bbe6067569 | ||
|
|
f7b539f5c7 | ||
|
|
78d438dfe6 | ||
|
|
a098e669c3 | ||
|
|
3f3dca30d7 | ||
|
|
7b9301d479 | ||
|
|
01a41d5f87 | ||
|
|
0b1fba58bb | ||
|
|
29f19b36ce | ||
|
|
1ded32d303 | ||
|
|
ffe14e11d5 | ||
|
|
846d90f9fe | ||
|
|
b2008aa086 | ||
|
|
b0ee833301 | ||
|
|
9d86c6306d | ||
|
|
03f6f96988 | ||
|
|
113ea64297 | ||
|
|
7f2f798a94 | ||
|
|
de04030257 | ||
|
|
7053cf8405 | ||
|
|
ded178be6c | ||
|
|
d1daa92126 | ||
|
|
5a4e422740 | ||
|
|
9b5d31bcf3 | ||
|
|
de24860ad4 | ||
|
|
1a4ec3f7ad | ||
|
|
8f6f1bf238 | ||
|
|
82525ec769 | ||
|
|
26cb2e6603 | ||
|
|
33c645e888 | ||
|
|
71715dccd9 | ||
|
|
5f9a9cc909 | ||
|
|
41085f915e | ||
|
|
5109eda6da | ||
|
|
e20a342f81 | ||
|
|
85377b42c4 | ||
|
|
cb3296ebdd | ||
|
|
a8400dd48a | ||
|
|
3fa121d31a | ||
|
|
8303a611ea | ||
|
|
2aa75ddbf5 | ||
|
|
b5214ef35a | ||
|
|
e32f45b585 | ||
|
|
84c094000b | ||
|
|
3577e648d1 | ||
|
|
c632b865b0 | ||
|
|
33c48b3d53 | ||
|
|
2317975c63 | ||
|
|
b031f98fff | ||
|
|
b057c56466 | ||
|
|
a60f326e16 | ||
|
|
66653df3dc | ||
|
|
3a30476f7e | ||
|
|
3f8b028d60 | ||
|
|
f6d85ce8bd | ||
|
|
b4a567884f | ||
|
|
8741357c9a | ||
|
|
20afbfe230 | ||
|
|
7db70f239f | ||
|
|
59ab24da90 | ||
|
|
c34bc3306c | ||
|
|
31a45b0468 | ||
|
|
990e04477c | ||
|
|
7be8155939 | ||
|
|
d6cf845fef | ||
|
|
01830707dc | ||
|
|
a835d44187 | ||
|
|
123b0aa098 | ||
|
|
e645696adb | ||
|
|
e830252c85 | ||
|
|
7bf2544a83 | ||
|
|
b69923e05d | ||
|
|
3cd2f9ea47 | ||
|
|
f390a903dc | ||
|
|
033a0d9c9d | ||
|
|
8c13a82df7 | ||
|
|
59dd9425c8 | ||
|
|
9f8a383ce6 | ||
|
|
530e2b7cb4 | ||
|
|
c311004bd8 | ||
|
|
0c245f4f6d | ||
|
|
7779e30635 | ||
|
|
707769f124 | ||
|
|
5a0f10559d | ||
|
|
af3ee3a742 | ||
|
|
52813ea29f | ||
|
|
c48c620963 | ||
|
|
64068730db | ||
|
|
95c9f47e63 | ||
|
|
84968d201d | ||
|
|
6d690ff5af | ||
|
|
a97b3283a0 | ||
|
|
67336e0c93 | ||
|
|
691a18873d | ||
|
|
47b2a55b11 | ||
|
|
243af371be | ||
|
|
3c281e8824 | ||
|
|
a849b30efe | ||
|
|
d42302a150 | ||
|
|
3aac9272ee | ||
|
|
a8ed9b80ef | ||
|
|
2e5ff2e4a4 | ||
|
|
f7a98017b1 | ||
|
|
bb5cf608a6 | ||
|
|
c2a5ad4104 | ||
|
|
2a6f6c28a0 | ||
|
|
4f5125cf22 | ||
|
|
a81e3adae1 | ||
|
|
490f0c35b1 | ||
|
|
3d1cc6fe36 | ||
|
|
51b2773ef2 | ||
|
|
2995de938e | ||
|
|
978b5ead44 | ||
|
|
6c830575c9 | ||
|
|
27b9294a36 | ||
|
|
a2abbe5197 | ||
|
|
3f49361e4a | ||
|
|
ad0eff3fac | ||
|
|
7c995534eb | ||
|
|
2c6a85ee6d | ||
|
|
9b719d857e | ||
|
|
e961eba9c0 | ||
|
|
b460b4ebaf | ||
|
|
4e94a8f269 | ||
|
|
6eeb21623b | ||
|
|
225613ec28 | ||
|
|
7cd5084777 | ||
|
|
5e1705e621 | ||
|
|
ee5e6b511e | ||
|
|
480d639def | ||
|
|
9d078142aa | ||
|
|
bf8cc329cf | ||
|
|
dc0529c59e | ||
|
|
a65b35f8de | ||
|
|
97857cf4e4 | ||
|
|
dc0089dc07 | ||
|
|
9c393d25dc | ||
|
|
7667b08b50 | ||
|
|
fb628f4e25 | ||
|
|
a9d3b0a302 | ||
|
|
5d939cdbfd | ||
|
|
b593179376 | ||
|
|
19701b7563 | ||
|
|
a26aa9de15 | ||
|
|
037c25153b | ||
|
|
b9ebf1e57b | ||
|
|
5af831abb5 | ||
|
|
6bc3818318 | ||
|
|
c0369236d2 | ||
|
|
4ddf9dcf39 | ||
|
|
7466b6206f | ||
|
|
774dd43a18 | ||
|
|
1a22a39991 | ||
|
|
5c388e7fcb | ||
|
|
d96e9c4070 | ||
|
|
10e186780c | ||
|
|
6d9b62af72 | ||
|
|
dfe6ca99ce | ||
|
|
f62ea65f25 | ||
|
|
89edbf90f2 | ||
|
|
9c1ae887ea | ||
|
|
607b6d6266 | ||
|
|
ee3ffa8cec | ||
|
|
f207a6eb4a | ||
|
|
1ca175c598 | ||
|
|
fbfe17743e | ||
|
|
62255e7583 | ||
|
|
35cda5c7d1 | ||
|
|
0d8454a079 | ||
|
|
4e454ef84c | ||
|
|
a8662d4dce | ||
|
|
e7a015a1d7 | ||
|
|
b75a3712d5 | ||
|
|
b509e3c8d1 | ||
|
|
37ffdadf1a | ||
|
|
9bd327cbe6 | ||
|
|
c9bd08dcdf | ||
|
|
64383a8406 | ||
|
|
c161ea9cca | ||
|
|
fcc29eaa41 | ||
|
|
b0f0455ccf | ||
|
|
24c8b4c16f | ||
|
|
5cac7894c3 | ||
|
|
f304462a7c | ||
|
|
4ab053df3b | ||
|
|
803fbcac47 | ||
|
|
0139452787 | ||
|
|
d6b95c936a | ||
|
|
d263089c06 | ||
|
|
04ea503184 | ||
|
|
db37897740 | ||
|
|
24f699993b | ||
|
|
d5827de12e | ||
|
|
469ca9093f | ||
|
|
804c91c701 | ||
|
|
559a5d0508 | ||
|
|
c00000edc8 | ||
|
|
f132edf459 | ||
|
|
15023432cc | ||
|
|
2833d0f5c2 | ||
|
|
d26bd52689 | ||
|
|
d42b8d6af2 | ||
|
|
ca69f329cc | ||
|
|
e84afa32f7 | ||
|
|
cb5de5135f | ||
|
|
0b82df4c21 | ||
|
|
85a4bbe125 | ||
|
|
6b7ccd68c9 | ||
|
|
15cf4810cf | ||
|
|
98e30a468f | ||
|
|
5ad68ff2c7 | ||
|
|
5c277f4d54 | ||
|
|
3f9847f617 | ||
|
|
9c4e04c4d6 | ||
|
|
d709d7f39a | ||
|
|
2bf5313c2b | ||
|
|
9bca50dfed | ||
|
|
f75702a575 | ||
|
|
f3035d827b | ||
|
|
af7d70cfd8 | ||
|
|
e13bc7822f | ||
|
|
e1feb4e5b7 | ||
|
|
3297998a42 | ||
|
|
6a71e53f93 | ||
|
|
2a2ff723ee | ||
|
|
f614244043 | ||
|
|
bf7db38ef8 | ||
|
|
05910f23fb | ||
|
|
267108d20b | ||
|
|
ef36c8a3d8 | ||
|
|
82f2070e99 | ||
|
|
a37b503628 | ||
|
|
55714ae01e | ||
|
|
b45e38ef4d | ||
|
|
e80981e0c5 | ||
|
|
01f248632f | ||
|
|
5131d2efd7 | ||
|
|
4eedb7ff30 | ||
|
|
1f1675f188 | ||
|
|
dc70104676 | ||
|
|
120797fe96 | ||
|
|
4f254bde75 | ||
|
|
f5645cf292 | ||
|
|
191e94c670 | ||
|
|
211ba90108 | ||
|
|
a3251a4aa6 | ||
|
|
9f8bc93d91 | ||
|
|
f5752b048e | ||
|
|
92d9bba0e1 | ||
|
|
e8aa7d55bd | ||
|
|
de27227ed7 | ||
|
|
5fd05d5d01 | ||
|
|
fb46f73eb0 | ||
|
|
b39f9ca003 | ||
|
|
aee1b22c89 | ||
|
|
2f5a71df6b | ||
|
|
f18642eff9 | ||
|
|
fe728318b1 | ||
|
|
21d32bacb7 | ||
|
|
44974d90a7 | ||
|
|
b286e8f6eb | ||
|
|
aac57ee0d5 | ||
|
|
6f7ce36ec4 | ||
|
|
04391815e4 | ||
|
|
5f14a87abd | ||
|
|
43a62e90bb | ||
|
|
60cad376e0 | ||
|
|
a6df240b8b | ||
|
|
a7897427a3 | ||
|
|
d90a0e9475 | ||
|
|
cc95c485ce | ||
|
|
3071cdd0ac | ||
|
|
acdfefa55f | ||
|
|
41c92f0a38 | ||
|
|
ce38b484f6 | ||
|
|
c57b388472 | ||
|
|
647a8fc2a3 | ||
|
|
e7aeb92b12 | ||
|
|
d6ec9a1c6d | ||
|
|
aa4a1de6f7 | ||
|
|
fd941858dd | ||
|
|
72b2349e11 | ||
|
|
150c7d911c | ||
|
|
a98bcdd999 | ||
|
|
b85713b437 | ||
|
|
78f3d82d2f | ||
|
|
e1943e2808 | ||
|
|
c11a0d698b | ||
|
|
af823f74c7 | ||
|
|
fed257a1f7 | ||
|
|
26704d3ce5 | ||
|
|
45db59650a | ||
|
|
4f77643321 | ||
|
|
c7508d330d | ||
|
|
e6eab7f773 | ||
|
|
4115bdf4c0 | ||
|
|
334943c094 | ||
|
|
c2b17899a2 | ||
|
|
966009e18e | ||
|
|
19b040c7e6 | ||
|
|
4fb3d13404 | ||
|
|
4e4d4270db | ||
|
|
1bbf77df0c | ||
|
|
07b2d57b52 | ||
|
|
f224486e70 | ||
|
|
211efc4d5a | ||
|
|
53a705ead5 | ||
|
|
7673ab16e5 | ||
|
|
37639f965c | ||
|
|
2a58f43256 | ||
|
|
a377e96128 | ||
|
|
e900b4243d | ||
|
|
3b65983706 | ||
|
|
3b212214ab | ||
|
|
d434c11e78 | ||
|
|
bda73374ca | ||
|
|
0a76dafd9c | ||
|
|
37ab92534a | ||
|
|
6b388c12d1 | ||
|
|
bcaaa0637a | ||
|
|
581cddaa0e | ||
|
|
967ad4cba4 | ||
|
|
e52bed199a | ||
|
|
feeebae5fb | ||
|
|
f51fb210b8 | ||
|
|
aeff737250 | ||
|
|
8064dda6ac | ||
|
|
eb41496c5a | ||
|
|
c2112d68aa | ||
|
|
e67f4e8c62 | ||
|
|
c02287fc9b | ||
|
|
a548e6c34b | ||
|
|
a18d20a916 | ||
|
|
f929c15e2d | ||
|
|
5ad631f1ea | ||
|
|
cb2aee6d60 | ||
|
|
fb3e50cc88 | ||
|
|
27750ac11e | ||
|
|
ea711aea77 | ||
|
|
ff56d5c67a | ||
|
|
afea93be73 | ||
|
|
c6f44e7bbf | ||
|
|
1b211df73e | ||
|
|
bed1edbc82 | ||
|
|
1a9d3ca4fc | ||
|
|
c107e197f5 | ||
|
|
0fb0aa59c2 | ||
|
|
357713b3a2 | ||
|
|
b44ef4144b | ||
|
|
eccbf58c80 | ||
|
|
18f6784e81 | ||
|
|
4205d42e7f | ||
|
|
83dbce18fe | ||
|
|
5b58898975 | ||
|
|
19bd1dab9f | ||
|
|
5f18415bf9 | ||
|
|
9a16899824 | ||
|
|
d50a67527e | ||
|
|
d507022c4a | ||
|
|
56a223e6c6 | ||
|
|
6113d284d8 | ||
|
|
913afab264 | ||
|
|
7587c1a041 | ||
|
|
537b53d877 | ||
|
|
1a521d2ad4 | ||
|
|
818ea0b0c7 | ||
|
|
a46940a6b1 | ||
|
|
b0217767b8 | ||
|
|
1b09774413 | ||
|
|
8f0c51675d | ||
|
|
2e56e3facc | ||
|
|
879e0ccb81 | ||
|
|
4688943290 | ||
|
|
641977b5ca | ||
|
|
1127660f2d | ||
|
|
61e2be18ab | ||
|
|
77d33bb02c | ||
|
|
bd96c018f7 | ||
|
|
31e1b0ec99 | ||
|
|
8f94fa7ac5 | ||
|
|
402e4c3cd6 | ||
|
|
c234507edb | ||
|
|
20d5c20e72 | ||
|
|
2d15324ead | ||
|
|
bb2a86b5ac | ||
|
|
56c4323959 | ||
|
|
a475aa6c22 | ||
|
|
7b9f2ac6bd | ||
|
|
1f5efb9a33 | ||
|
|
8926c84ca9 | ||
|
|
3eba47b0bb | ||
|
|
ff01b3f80d | ||
|
|
d00e9771e0 | ||
|
|
5ebc5b6244 | ||
|
|
e7ad7110c8 | ||
|
|
192bd9c96c | ||
|
|
6188baa4db | ||
|
|
968d97f440 | ||
|
|
2fd9addc59 | ||
|
|
6f9d2dafb6 | ||
|
|
0b68a9cf58 | ||
|
|
d502ab2561 | ||
|
|
fc9901e493 | ||
|
|
604c1449e4 | ||
|
|
0a23dc2c27 | ||
|
|
c7805c82c6 | ||
|
|
46b2eb2a3e | ||
|
|
4e473bf242 | ||
|
|
f80b4ee2b1 | ||
|
|
ff7c74bc70 | ||
|
|
14e5e28998 | ||
|
|
b879830045 | ||
|
|
494e553ac0 | ||
|
|
a4555631b1 | ||
|
|
a4cd4ad767 | ||
|
|
abade416df | ||
|
|
4e3fc1643d | ||
|
|
61ca022d5b | ||
|
|
ca1a7b90d7 | ||
|
|
5a55e33f76 | ||
|
|
c24b4addfa | ||
|
|
a8f46fdd8d | ||
|
|
6d3bc0caea | ||
|
|
26846d752f | ||
|
|
c17eb32a8b | ||
|
|
f313bb30f7 | ||
|
|
12ad13c0af | ||
|
|
e3234ecf8d | ||
|
|
397dd27649 | ||
|
|
5aefd7f5cb | ||
|
|
11870a500b | ||
|
|
2c133a87cb | ||
|
|
bb439236d6 | ||
|
|
a480ef4b8b | ||
|
|
3fd92982c4 | ||
|
|
9109da9784 | ||
|
|
05b977be70 | ||
|
|
b04b5f235c | ||
|
|
10a00753e7 | ||
|
|
906ad1be15 | ||
|
|
7605e55ac7 | ||
|
|
4eeaf59075 | ||
|
|
9a473e84dc | ||
|
|
1c4979bdaa | ||
|
|
3cda9684cb | ||
|
|
1cec1bb0dc | ||
|
|
5bb865a561 | ||
|
|
45dba44432 | ||
|
|
3118086ff3 | ||
|
|
cee96c9ed0 | ||
|
|
1f1cd2ef57 | ||
|
|
ae808dce2e | ||
|
|
ec7f75cf67 | ||
|
|
50e3794cb9 | ||
|
|
9fe4be522a | ||
|
|
7e2cd4459c | ||
|
|
d7914f4807 | ||
|
|
8068d6c25a | ||
|
|
5134b522ae | ||
|
|
fdda6988ba | ||
|
|
0ef16b6c5b | ||
|
|
60438b2925 | ||
|
|
9c138beb5d | ||
|
|
5c05b81dfa | ||
|
|
a98ddca171 | ||
|
|
96b512c831 | ||
|
|
d8e23fbafe | ||
|
|
2583ad2ce6 | ||
|
|
5449d1cdd5 | ||
|
|
6d332f6ba9 | ||
|
|
759e7b97b8 | ||
|
|
da6c0608a2 | ||
|
|
dac9b8adad | ||
|
|
c5479c18f6 | ||
|
|
60f9ccc9f6 | ||
|
|
df7fa68787 | ||
|
|
f193921432 | ||
|
|
ff83629054 | ||
|
|
ad62e26b59 | ||
|
|
3b232b403e | ||
|
|
6e422ade94 | ||
|
|
6d4f344326 | ||
|
|
2241f3f27f | ||
|
|
e3b279ed6d | ||
|
|
1653e54541 | ||
|
|
e947248ea4 | ||
|
|
8428f438db | ||
|
|
6a40c3c375 | ||
|
|
1b232cca84 | ||
|
|
99cfdd6e14 | ||
|
|
5c2eaf961f | ||
|
|
48fa5d5434 | ||
|
|
6507b1369a | ||
|
|
e15163bb08 | ||
|
|
940a753b41 | ||
|
|
733d9dac96 | ||
|
|
3896358ba8 | ||
|
|
deff7d2a86 | ||
|
|
b006cacc89 | ||
|
|
2fc078e80d | ||
|
|
848449e32a | ||
|
|
adb56c7613 | ||
|
|
5cffe3a3b3 | ||
|
|
46ad2be83b | ||
|
|
904360ff69 | ||
|
|
79b5a09ac8 | ||
|
|
91d1e7b1a6 | ||
|
|
46878c81b7 | ||
|
|
5d07d45f86 | ||
|
|
38c27c051d | ||
|
|
dc0d161c14 | ||
|
|
9285ae8536 | ||
|
|
0aaca44795 | ||
|
|
106b45f0c4 | ||
|
|
c6b27aadf0 | ||
|
|
c299529ccb | ||
|
|
77fa5b1fd0 | ||
|
|
478078dc23 | ||
|
|
eacc9a2d30 | ||
|
|
d3b25cd3d5 | ||
|
|
7468d0beeb | ||
|
|
ea49b47afd | ||
|
|
ef395ddb39 | ||
|
|
00ff342e86 | ||
|
|
eab9d26594 | ||
|
|
d56eb31aef | ||
|
|
ab0cadf81f | ||
|
|
e9d8cdd329 | ||
|
|
424f44ba12 | ||
|
|
8d350238cf | ||
|
|
27153c8093 | ||
|
|
3409f5ff3c | ||
|
|
67e168bf92 | ||
|
|
78d125a0f6 | ||
|
|
320295bfba | ||
|
|
2df9e8fccc | ||
|
|
025c482725 | ||
|
|
d3c03fb564 | ||
|
|
4dfbf1f088 | ||
|
|
3ef832efb8 | ||
|
|
83b914d1b2 | ||
|
|
87f4277b8b | ||
|
|
438c8d15e1 | ||
|
|
fd87d1480d | ||
|
|
99b7a5eb74 | ||
|
|
eb9194fe73 | ||
|
|
fccf3212e6 | ||
|
|
f49c9e2b3a | ||
|
|
14bc0aea74 | ||
|
|
35566a2334 | ||
|
|
c64eb9aa88 | ||
|
|
5ef8026ac4 | ||
|
|
7f64fff46d | ||
|
|
1d0fcedeb0 | ||
|
|
46f8f7d22a | ||
|
|
1bda4d29e1 | ||
|
|
316f4b7461 | ||
|
|
ed179e6207 | ||
|
|
b0ebe7e0cf | ||
|
|
a26dea0065 | ||
|
|
7e4f314646 | ||
|
|
d836ffaad1 | ||
|
|
7bbb74b985 | ||
|
|
cb82d4cc45 | ||
|
|
5b09735249 | ||
|
|
d1dbce8682 | ||
|
|
ccb00b17a5 | ||
|
|
5443cf5417 | ||
|
|
a53568f100 | ||
|
|
77c933b7d8 | ||
|
|
ae24860d1e | ||
|
|
e71f866b14 | ||
|
|
ebaffdb123 | ||
|
|
dd954e3416 | ||
|
|
db780d9939 | ||
|
|
655136f52d | ||
|
|
bdc18c9eb6 | ||
|
|
bf2e0e44a8 | ||
|
|
6dddf614dd | ||
|
|
8aa9cafa5e | ||
|
|
3ea697763f | ||
|
|
59e6240766 | ||
|
|
600bf2c105 | ||
|
|
bb4bee7623 | ||
|
|
7ade143297 | ||
|
|
cabd470709 | ||
|
|
cefb9f367f | ||
|
|
aa1b2f32b1 | ||
|
|
625c0ecc1c | ||
|
|
76c7a49648 | ||
|
|
8685b3331b | ||
|
|
8157af9fb0 | ||
|
|
9f7e8dbad7 | ||
|
|
842d20cf7b | ||
|
|
bbaa19ef7b | ||
|
|
83d36fe04b | ||
|
|
91d99c0efb | ||
|
|
e80eae230c | ||
|
|
bfadf66053 | ||
|
|
f95f31f5f3 | ||
|
|
ccebf49e46 | ||
|
|
ebc8cbcaf0 | ||
|
|
9b1eb04a51 | ||
|
|
3c46fb15cf | ||
|
|
f48144791b | ||
|
|
a5c9b9edac | ||
|
|
5e722c091f | ||
|
|
b3125c607e | ||
|
|
f6f64deffb | ||
|
|
a828007c89 | ||
|
|
50d9481d73 | ||
|
|
e99200cd61 | ||
|
|
f631e6736f | ||
|
|
8b645a0e8f | ||
|
|
ce69dde08a | ||
|
|
c5de7d6051 | ||
|
|
67d1813665 | ||
|
|
e0e94f7286 | ||
|
|
20ddff3d26 | ||
|
|
5235e8483b | ||
|
|
e38c9a11ff | ||
|
|
e6c9bd09f1 | ||
|
|
3ad98603a4 | ||
|
|
f5c162330a | ||
|
|
a0111e09b7 | ||
|
|
bc28e0ed11 | ||
|
|
be03c58402 | ||
|
|
246d692dd7 | ||
|
|
aaf250dca4 | ||
|
|
5ca313a9b2 | ||
|
|
2ac7cfc7b9 | ||
|
|
d52d761a5c | ||
|
|
a7519724f8 | ||
|
|
9b771595f8 | ||
|
|
beef0bfae9 | ||
|
|
a19a82cf6e | ||
|
|
e300664a28 | ||
|
|
2525b60f86 | ||
|
|
0198f3d6af | ||
|
|
0bc0d59446 | ||
|
|
bda080f34f | ||
|
|
2c0eb751a7 | ||
|
|
d70a6c5997 | ||
|
|
b6d9ed254e | ||
|
|
e620d15964 | ||
|
|
cad5c1ed7b | ||
|
|
3543b71671 | ||
|
|
9351380645 | ||
|
|
666803250c | ||
|
|
c49618a653 | ||
|
|
ffce767615 | ||
|
|
9ec72aabe3 | ||
|
|
8eb6377a69 | ||
|
|
67edb98d12 | ||
|
|
d85782b055 | ||
|
|
e0df6ce58a | ||
|
|
27dc7f1f2d | ||
|
|
a42bd9684f | ||
|
|
457e3006a6 | ||
|
|
4351ff82fc | ||
|
|
7ae8ee4405 | ||
|
|
44fc754b6f | ||
|
|
77e2a6607c | ||
|
|
818e9ecbb8 | ||
|
|
f8603dafe1 | ||
|
|
45b851c55c | ||
|
|
0f02215e63 | ||
|
|
eff5935068 | ||
|
|
fa2d3dd7a4 | ||
|
|
f2a140e414 | ||
|
|
dc37296750 | ||
|
|
36d540da18 | ||
|
|
a0586a1897 | ||
|
|
401b0bf2dc | ||
|
|
c8d79ee6fc | ||
|
|
683e0733a5 | ||
|
|
baceacccd5 | ||
|
|
ec1954a83a | ||
|
|
9f626e3716 | ||
|
|
cb629744ec | ||
|
|
64c4c3b93c | ||
|
|
a82da20981 | ||
|
|
1bda9aff3f | ||
|
|
305032707b | ||
|
|
7f41a591c8 | ||
|
|
ddb410fea0 | ||
|
|
984a17ef35 | ||
|
|
3c133af4df | ||
|
|
833f49eb35 | ||
|
|
1e2837c33f | ||
|
|
3e2a9a5187 | ||
|
|
142b2e143d | ||
|
|
5364651a94 | ||
|
|
1170e4a91a | ||
|
|
a739c92f4a | ||
|
|
93af135d6d | ||
|
|
b2f0bd0e3d | ||
|
|
154da99d40 | ||
|
|
dc74949736 | ||
|
|
404df03f25 | ||
|
|
b6cbc960f3 | ||
|
|
29189c77ff | ||
|
|
8890875a7f | ||
|
|
d2381e06fb | ||
|
|
1e34a823b3 | ||
|
|
f2e1b33db5 | ||
|
|
ec69fc7a68 | ||
|
|
c027ebdbb4 | ||
|
|
c8949194cc | ||
|
|
77088b84ad | ||
|
|
9baf5b2b6e | ||
|
|
f9d262d6a7 | ||
|
|
6e543303c6 | ||
|
|
94011804be | ||
|
|
652024c5dc | ||
|
|
c88d5707ad | ||
|
|
b70090ea3a | ||
|
|
402cbe7e57 | ||
|
|
9ed4bb6ec5 | ||
|
|
764a62986e | ||
|
|
ab2e82a456 | ||
|
|
5b3c2ed1a8 | ||
|
|
2fa0a53fdd | ||
|
|
0b9e81a6c0 | ||
|
|
350f6394fd | ||
|
|
35d7d2c0b5 | ||
|
|
e4eeae2821 | ||
|
|
b587990602 | ||
|
|
aba6cc5778 | ||
|
|
90b005a2fd | ||
|
|
2c7cd1c880 | ||
|
|
25c95da80c | ||
|
|
e76b0a3740 | ||
|
|
ec8821e557 | ||
|
|
c2eac63ce6 | ||
|
|
0710e5776e | ||
|
|
42a6887ae2 | ||
|
|
348e63b4fb | ||
|
|
ab56e9c212 | ||
|
|
2de6576765 | ||
|
|
7d57b8e9ec | ||
|
|
58e48088f9 | ||
|
|
8a8cf64873 | ||
|
|
d76d5ca754 | ||
|
|
dd681e390d | ||
|
|
143e981ad1 | ||
|
|
ec7b7276c5 | ||
|
|
8ea6fef1ca | ||
|
|
5e27740761 | ||
|
|
f385725311 | ||
|
|
bfb86e0a57 | ||
|
|
828c6d9212 | ||
|
|
6f14569da4 | ||
|
|
1f3124ac6e | ||
|
|
a9db7989c3 | ||
|
|
4789ecb8d7 | ||
|
|
cf9bbec9a5 | ||
|
|
4a5cfa5d5a | ||
|
|
96b5b09501 | ||
|
|
d021ac4a6f | ||
|
|
b48f3fb1a2 | ||
|
|
b28ef3d877 | ||
|
|
bb90488018 | ||
|
|
1c7473e534 | ||
|
|
aa5f11e754 | ||
|
|
73e46e7a6f | ||
|
|
9ff8e149ef | ||
|
|
98ea108b22 | ||
|
|
30714a3ba6 | ||
|
|
05b0902754 | ||
|
|
ba52bfddbe | ||
|
|
68bfa27a99 | ||
|
|
50fb6c1531 | ||
|
|
3630155ad0 | ||
|
|
c16ffef0bd | ||
|
|
16f4d85086 | ||
|
|
467fbb386e | ||
|
|
e6eecebf4e | ||
|
|
0a474bd3d9 | ||
|
|
940a32668e | ||
|
|
50ec62264e | ||
|
|
02706d40ef | ||
|
|
294d50c50c | ||
|
|
4eae1575a3 | ||
|
|
ae414292c1 | ||
|
|
bda65d6ad3 | ||
|
|
9314e2bc0f | ||
|
|
f7308f748c | ||
|
|
6c66b2d6eb | ||
|
|
c40fc7faa3 | ||
|
|
104a9c689f | ||
|
|
215d1261ca | ||
|
|
7533b98780 | ||
|
|
153c9b3ec5 | ||
|
|
e33a863d3b | ||
|
|
bb02b5d461 | ||
|
|
b9b1830451 | ||
|
|
1d6bdcb0f2 | ||
|
|
0b880e0f0c | ||
|
|
5cb3eb9dd1 | ||
|
|
2d18e7d25f | ||
|
|
1cf2ea60a7 | ||
|
|
33d5e39869 | ||
|
|
7f4825afa5 | ||
|
|
46b641c6cc | ||
|
|
afeaf60c3f | ||
|
|
a5c3f92826 | ||
|
|
d0dd09a5a4 | ||
|
|
bd0b45d0b4 | ||
|
|
75206211f8 | ||
|
|
0d62cc5279 | ||
|
|
eb8fd81aef | ||
|
|
d44489819a | ||
|
|
6a28480510 | ||
|
|
3b92134b2a | ||
|
|
af4df27d42 | ||
|
|
19ee048582 | ||
|
|
6bc24595da | ||
|
|
03908dc437 | ||
|
|
82061f1410 | ||
|
|
0ae1f99269 | ||
|
|
0762e13c0f | ||
|
|
fc1a907af0 | ||
|
|
9189cbd51c | ||
|
|
18d0bfc3c5 | ||
|
|
e35f39c9f4 | ||
|
|
af37be4502 | ||
|
|
c07709803c | ||
|
|
8ab84c4e85 | ||
|
|
5367fe4537 | ||
|
|
03f5c7fc39 | ||
|
|
82f169f2d5 | ||
|
|
a6c2ac1d41 | ||
|
|
d1fa4d426f | ||
|
|
53572671de | ||
|
|
b5ec02e2a0 | ||
|
|
f236fa33de | ||
|
|
206003e1ec | ||
|
|
7c090e921a | ||
|
|
5775c8cbf3 | ||
|
|
d771d70c3a | ||
|
|
47e6602f9b | ||
|
|
f4224eb4d1 | ||
|
|
3c3d68d073 | ||
|
|
7ef611945d | ||
|
|
f807e003fd | ||
|
|
9107beff7e | ||
|
|
d7b3ef43d6 | ||
|
|
538998cb83 | ||
|
|
3e4aa25446 | ||
|
|
f34d23ca18 | ||
|
|
0cf7364c78 | ||
|
|
620ce368b5 | ||
|
|
5b2cd72940 | ||
|
|
92abdbb328 | ||
|
|
c1bb637fbf | ||
|
|
9653c02b46 | ||
|
|
1226e6c292 | ||
|
|
170e8287ab | ||
|
|
01d98cbcb7 | ||
|
|
32d17cca18 | ||
|
|
113f8180cc | ||
|
|
4ccc8ed147 | ||
|
|
68cd2f345a | ||
|
|
ed7ff6e7a1 | ||
|
|
c05710fcdb | ||
|
|
2db1cf8b6c | ||
|
|
a9d9c97bff | ||
|
|
c519a4f34b | ||
|
|
836f6a60e0 | ||
|
|
768df7f6d6 | ||
|
|
3161013481 | ||
|
|
39c0fcafea | ||
|
|
47b8a379a4 | ||
|
|
beba45fcdf | ||
|
|
4c77ae6c4b | ||
|
|
178f096b60 | ||
|
|
3782ab8f57 | ||
|
|
86a77a77d6 | ||
|
|
0c175119b9 | ||
|
|
1fd50d1faa | ||
|
|
c720cf22aa | ||
|
|
57dfd91378 | ||
|
|
ab53fecce5 | ||
|
|
5a602786f3 | ||
|
|
31e1fce550 | ||
|
|
b7b15e120a | ||
|
|
973949180f | ||
|
|
425c12593b | ||
|
|
fa28799a5b | ||
|
|
5c011a2402 | ||
|
|
8a2060ca6e | ||
|
|
e40d7136f1 | ||
|
|
7e6833d5fd | ||
|
|
21020abcbd | ||
|
|
da4d1c1ee7 | ||
|
|
bc3885cd54 | ||
|
|
8cc115a108 | ||
|
|
4aae6c0a09 | ||
|
|
3608e49885 | ||
|
|
df9d94ac51 | ||
|
|
19b32adc34 | ||
|
|
5ce9024eae | ||
|
|
c093fe3b0c | ||
|
|
ba9300da91 | ||
|
|
510c201e17 | ||
|
|
7dde869f4a | ||
|
|
83a276becf | ||
|
|
4fadd929ee | ||
|
|
f049673412 | ||
|
|
43de62f4bc | ||
|
|
eab0f5e87a | ||
|
|
57b94e1d5d | ||
|
|
0dc0ec9394 | ||
|
|
eada09d060 | ||
|
|
61e9deb101 | ||
|
|
949ebb5d8e | ||
|
|
1a4e3b4c7c | ||
|
|
d91402da3c | ||
|
|
0107ade039 | ||
|
|
f6bb944907 | ||
|
|
e5761ef601 | ||
|
|
1421a1f6b6 | ||
|
|
1738bfd0bc | ||
|
|
4f1b3f262b | ||
|
|
9a82c24a89 | ||
|
|
3b5539da22 | ||
|
|
b71ef1667c | ||
|
|
96b582b58d | ||
|
|
7a35bb48b1 | ||
|
|
15aa35e56f | ||
|
|
7f4cdc86bc | ||
|
|
131876463a | ||
|
|
36a721a8e1 | ||
|
|
a660048bcb | ||
|
|
1498325ecd | ||
|
|
1c0315cd54 | ||
|
|
d50a6fa203 | ||
|
|
876b8b6d37 | ||
|
|
1137f48882 | ||
|
|
2f9e303889 | ||
|
|
027c2e7618 | ||
|
|
8fe8c3a1f2 | ||
|
|
0f52eff9c9 | ||
|
|
4e01de31f7 | ||
|
|
5389f59df0 | ||
|
|
67a3cbadf7 | ||
|
|
c6eedc4df7 | ||
|
|
7c0e1540cb | ||
|
|
d05c4ad0d1 | ||
|
|
6f2f74089b | ||
|
|
e43545eec9 | ||
|
|
3eca8ee8b4 | ||
|
|
0aa7818731 | ||
|
|
eb1e8b63c5 | ||
|
|
51c2c5d62a | ||
|
|
2474fe621b | ||
|
|
6fbfeb2848 | ||
|
|
d397624fdc |
11
.gitattributes
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Set default behaviour, in case users don't have core.autocrlf set.
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# Explicitly declare text files we want to always be normalized and converted
|
||||||
|
# to native line endings on checkout.
|
||||||
|
*.sh text
|
||||||
|
*.java text
|
||||||
|
*.xml text
|
||||||
|
*.js text
|
||||||
|
*.css text
|
||||||
|
*.svg text
|
||||||
32
.github/workflows/android.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: Android CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "master" ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: set up JDK 11
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'temurin'
|
||||||
|
cache: gradle
|
||||||
|
|
||||||
|
- name: Grant execute permission for gradlew
|
||||||
|
run: chmod +x gradlew
|
||||||
|
- name: Build with Gradle
|
||||||
|
run: ./gradlew build
|
||||||
|
- name: Publish
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
env:
|
||||||
|
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
|
||||||
|
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
|
||||||
|
run: ./gradlew -PSONATYPE_USERNAME="$SONATYPE_USERNAME" -PSONATYPE_PASSWORD="$SONATYPE_PASSWORD" publish
|
||||||
50
.gitignore
vendored
@@ -1,24 +1,36 @@
|
|||||||
*/bin/*
|
*/bin/*
|
||||||
*/gen/*
|
*/gen/*
|
||||||
*/obj/*
|
*/obj/*
|
||||||
|
target/
|
||||||
|
build/
|
||||||
|
robovm-build
|
||||||
*.o
|
*.o
|
||||||
*.jar
|
*.so
|
||||||
*.class
|
*.class
|
||||||
vtm/jni/jni-headers/
|
/vtm-tests/tmp/
|
||||||
vtm/jni/build*
|
/vtm-web/war/
|
||||||
vtm/jni/*.mk
|
/vtm-web/assets/
|
||||||
vtm/jni/memcpy_wrap.c
|
/vtm-web/gwt-unitCache
|
||||||
vtm/jni/poly2tri/
|
/vtm-web-app/war/WEB-INF/
|
||||||
vtm/libs/
|
/vtm-web-app/assets/
|
||||||
vtm-gdx-html/war/assets/
|
/vtm-web-app/src/main/webapp/
|
||||||
vtm-gdx-html/war/WEB_INF/
|
/vtm-web-js/war/WEB-INF/
|
||||||
vtm-gdx-html/war/org.oscim.gdx.GwtDefinition/
|
/vtm-web-js/assets/
|
||||||
vtm-gdx-html/gwt-unitCache
|
/vtm-web-js/src/main/webapp/
|
||||||
vtm-gdx-ios/
|
/vtm-spatialite/
|
||||||
vtm-spatialite/
|
/vtm-spatialite-android/
|
||||||
vtm-spatialite-android/
|
/vtm-examples/
|
||||||
vtm-ext-libs/
|
/vtm-osmscout/
|
||||||
tmp/
|
|
||||||
themes/
|
.gradle
|
||||||
vtm/assets/freizeitkarte/
|
.idea
|
||||||
vtm/jni/target/
|
*.iml
|
||||||
|
|
||||||
|
.settings
|
||||||
|
.classpath
|
||||||
|
.project
|
||||||
|
project.properties
|
||||||
|
|
||||||
|
local.properties
|
||||||
|
|
||||||
|
/ma*/
|
||||||
|
|||||||
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "libtess2"]
|
||||||
|
path = jni/jni/libtess2
|
||||||
|
url = https://github.com/memononen/libtess2.git
|
||||||
104
README.md
@@ -1,38 +1,86 @@
|
|||||||
## VTM - Very experimental Tile Map library
|
[](https://search.maven.org/search?q=g:org.mapsforge)
|
||||||
|
[](http://www.gnu.org/licenses/lgpl-3.0)
|
||||||
|
|
||||||
Future development branch based on https://github.com/opensciencemap/vtm-android
|
# V™
|
||||||
|
|
||||||
VectorTileMap is part of the OpenScienceMap project, developed at University of Bremen.
|
<img src="docs/logo/VTM.svg" style="bottom:0;" width="200" align="right">
|
||||||
http://www.opensciencemap.org
|
|
||||||
|
|
||||||
### Features
|
VTM (Vector Tile Map) was developed within the [OpenScienceMap](https://github.com/opensciencemap) project.
|
||||||
|
|
||||||
|
**This fork continues VTM development and provides compatibility with [Mapsforge](https://github.com/mapsforge/mapsforge).**
|
||||||
|
|
||||||
|
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 the Discussions for help.
|
||||||
|
|
||||||
|
## 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: primary opensciencemap (.vtm)
|
- Support for multiple tile sources:
|
||||||
- vector: partially mapbox vector-tile and mapsforge files
|
- OpenScienceMap vector tiles
|
||||||
- bitmap: any quadtree-scheme tiles as texture
|
- Mapsforge vector maps
|
||||||
- Backends for Android, Desktop and HTML5/WebGL (through libgdx and GWT)
|
- MBTiles vector & raster maps
|
||||||
|
- Mapbox vector tiles (e.g. Mapilion, Mapzen, Nextzen, OpenMapTiles)
|
||||||
|
- GeoJSON vector tiles (e.g. Mapzen, Nextzen)
|
||||||
|
- Raster tiles: any quadtree-scheme tiles as texture
|
||||||
|
- Backends:
|
||||||
|
- Android ([example](vtm-android-example/src/org/oscim/android/test/GettingStarted.java))
|
||||||
|
- iOS (libGDX/RoboVM, [instructions](docs/ios.md))
|
||||||
|
- Desktop (libGDX/LWJGL, [instructions](docs/desktop.md))
|
||||||
|
- HTML5/WebGL (libGDX/GWT, [instructions](docs/web.md))
|
||||||
|
- Building VTM: set `ANDROID_HOME` environment variable with the Android SDK installation directory
|
||||||
|
|
||||||
### Notes
|
### Projects
|
||||||
- To set up your own tile server for .vtm tiles see https://github.com/opensciencemap/TileStache/tree/master/TileStache/OSciMap4
|
- **vtm** core library
|
||||||
- Almost everything is still in early/experimental stage and subject for being rewritten
|
- **vtm-android** Android backend
|
||||||
- pull requests welcome :)
|
- **vtm-android-example** Android examples
|
||||||
|
- **vtm-gdx** common libGDX backend
|
||||||
|
- **vtm-android-gdx** Android libGDX backend
|
||||||
|
- **vtm-desktop** Desktop libGDX backend
|
||||||
|
- **vtm-desktop-lwjgl** Desktop LWJGL backend
|
||||||
|
- **vtm-desktop-lwjgl3** Desktop LWJGL 3 backend
|
||||||
|
- **vtm-playground** Desktop examples
|
||||||
|
- **vtm-ios** iOS libGDX backend
|
||||||
|
- **vtm-ios-example** iOS examples
|
||||||
|
- **vtm-web** HTML5/GWT libGDX backend
|
||||||
|
- **vtm-web-app** HTML5/GWT application
|
||||||
|
|
||||||
### Demo
|
## WebGL Demo
|
||||||
work in progress..
|
[OpenScienceMap](https://oscim.ogiqvo.com/vtm/#scale=17,rot=61,tilt=51,lat=53.075,lon=8.807) view of Bremen. Running [nextzen2oscimv4](https://github.com/schedul-xor/nextzen2oscimv4) server which contains OSM data in Germany. Notice: nextzen2oscimv4 server is still unstable.
|
||||||
http://city.informatik.uni-bremen.de/~jeff/map/#scale=17,rot=61,tilt=51,lat=53.075,lon=8.807
|
|
||||||
- hold middle mouse button to change view direction
|
|
||||||
- Keys
|
|
||||||
- g - toggle tile-grid layer
|
|
||||||
- d - default theme
|
|
||||||
- t - tubes theme
|
|
||||||
|
|
||||||
|
## Applications
|
||||||
|
- VTM is used by many [applications](docs/Applications.md).
|
||||||
|
|
||||||
### Credits
|
## Maps
|
||||||
|
- Mapsforge [map providers](docs/Mapsforge-Maps.md).
|
||||||
|
|
||||||
|
## Credits
|
||||||
This library contains code from several projects:
|
This library contains code from several projects:
|
||||||
- mapsforge: based on 0.2.4
|
- **Android** (Apache 2.0): some Matrix code, TimSort (http://source.android.com)
|
||||||
- osmdroid: some overlay code
|
- **libGDX** (Apache 2.0): AsyncTask, MathUtils, Interpolation, PixmapPacker (https://github.com/libgdx)
|
||||||
- libgdx: AsyncTask, some modfied classes
|
- **mapsforge** (LGPL3): based on 0.2.4 (https://github.com/mapsforge/mapsforge)
|
||||||
- android: some Matrix code
|
- **osmdroid** (Apache 2.0): some overlay classes (https://github.com/osmdroid/osmdroid)
|
||||||
- Triangle: stripped down for simple triangulation (through jni)
|
- **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
|
||||||
|
|
||||||
|
| Android | iOS |
|
||||||
|
| ------------- | ------------- |
|
||||||
|
|<img src="docs/images/android.png" width="1000">|<img src="docs/images/ios.png" width="1000">|
|
||||||
|
|
||||||
|
| Desktop |
|
||||||
|
| ------------- |
|
||||||
|
||
|
||||||
|
|
||||||
|
| Browser |
|
||||||
|
| ------------- |
|
||||||
|
||
|
||||||
|
|||||||
47
build.gradle
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
plugins {
|
||||||
|
id 'com.android.application' version '7.4.2' apply false
|
||||||
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
group = 'org.mapsforge'
|
||||||
|
version = 'master-SNAPSHOT'
|
||||||
|
|
||||||
|
ext.gdxVersion = "1.11.0"
|
||||||
|
ext.gwtVersion = "2.8.2"
|
||||||
|
ext.slf4jVersion = "1.7.28"
|
||||||
|
|
||||||
|
if (JavaVersion.current().isJava8Compatible()) {
|
||||||
|
tasks.withType(Javadoc) {
|
||||||
|
options.addStringOption('Xdoclint:none', '-quiet')
|
||||||
|
logging.captureStandardError LogLevel.INFO
|
||||||
|
logging.captureStandardOutput LogLevel.INFO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static def androidCompileSdk() { return 33 }
|
||||||
|
|
||||||
|
// 14 for Support Library
|
||||||
|
static def androidMinSdk() { return 21 }
|
||||||
|
|
||||||
|
static def androidTargetSdk() { return 33 }
|
||||||
|
|
||||||
|
static def versionCode() { return 1 }
|
||||||
|
|
||||||
|
def versionName() { return version }
|
||||||
|
|
||||||
|
subprojects {
|
||||||
|
tasks.withType(JavaCompile) {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_7
|
||||||
|
targetCompatibility = JavaVersion.VERSION_1_7
|
||||||
|
options.encoding = 'UTF-8'
|
||||||
|
if (JavaVersion.current().isJava9Compatible()) {
|
||||||
|
if (!project.properties.containsKey('android')) {
|
||||||
|
if (project.name == 'vtm-desktop-lwjgl3' || project.name == 'vtm-playground' || project.name == 'vtm-theme-comparator')
|
||||||
|
options.compilerArgs.addAll(['--release', '8'])
|
||||||
|
else
|
||||||
|
options.compilerArgs.addAll(['--release', '7'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
49
config/vtm-pmd.xml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<ruleset name="vtm ruleset"
|
||||||
|
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd"
|
||||||
|
xsi:noNamespaceSchemaLocation="http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
|
||||||
|
|
||||||
|
<description>
|
||||||
|
This ruleset checks my code for bad stuff
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<!-- We'll use the entire 'strings' ruleset -->
|
||||||
|
<rule ref="rulesets/java/strings.xml"/>
|
||||||
|
|
||||||
|
<!-- Here's some rules we'll specify one at a time -->
|
||||||
|
<rule ref="rulesets/java/unusedcode.xml/UnusedLocalVariable"/>
|
||||||
|
<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateField"/>
|
||||||
|
<rule ref="rulesets/java/imports.xml/DuplicateImports"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/UnnecessaryConversionTemporary"/>
|
||||||
|
|
||||||
|
<!-- We want to customize this rule a bit, change the message and raise the priority -->
|
||||||
|
<rule
|
||||||
|
ref="rulesets/java/basic.xml/EmptyCatchBlock"
|
||||||
|
message="Must handle exceptions">
|
||||||
|
<priority>2</priority>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Now we'll customize a rule's property value -->
|
||||||
|
<rule ref="rulesets/java/codesize.xml/CyclomaticComplexity">
|
||||||
|
<properties>
|
||||||
|
<property name="reportLevel" value="30"/>
|
||||||
|
</properties>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- We want everything from braces.xml except WhileLoopsMustUseBraces -->
|
||||||
|
<!-- ><rule ref="rulesets/java/braces.xml">
|
||||||
|
<exclude name="WhileLoopsMustUseBraces"/>
|
||||||
|
<exclude name="IfElseStmtsMustUseBraces"/>
|
||||||
|
</rule>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<rule ref="rulesets/java/design.xml">
|
||||||
|
<exclude name="AvoidSynchronizedAtMethodLevel" />
|
||||||
|
<exclude name="AvoidReassigningParameters" />
|
||||||
|
<exclude name="CompareObjectsWithEquals" />
|
||||||
|
<exclude name="FieldDeclarationsShouldBeAtStartOfClass" />
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
</ruleset>
|
||||||
63
deploy.gradle
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apply plugin: 'signing'
|
||||||
|
|
||||||
|
java {
|
||||||
|
withJavadocJar()
|
||||||
|
withSourcesJar()
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
maven(MavenPublication) {
|
||||||
|
pom {
|
||||||
|
name = 'VTM'
|
||||||
|
description = 'OpenGL vector map library - running on Android, iOS, Desktop and browser.'
|
||||||
|
url = 'https://github.com/mapsforge/vtm'
|
||||||
|
licenses {
|
||||||
|
license {
|
||||||
|
name = 'GNU Lesser GPL'
|
||||||
|
url = 'https://www.gnu.org/licenses/lgpl.html'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
developers {
|
||||||
|
developer {
|
||||||
|
id = 'hannes.janetzek'
|
||||||
|
name = 'Hannes Janetzek'
|
||||||
|
email = 'hannes.janetzek@gmail.com'
|
||||||
|
}
|
||||||
|
developer {
|
||||||
|
id = 'devemux86'
|
||||||
|
name = 'Emux'
|
||||||
|
email = 'devemux86@gmail.com'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
scm {
|
||||||
|
connection = 'scm:git:https://github.com/mapsforge/vtm'
|
||||||
|
developerConnection = 'scm:git:https://github.com/mapsforge/vtm'
|
||||||
|
url = 'https://github.com/mapsforge/vtm'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
def releasesRepoUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
|
||||||
|
def snapshotsRepoUrl = 'https://oss.sonatype.org/content/repositories/snapshots/'
|
||||||
|
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
|
||||||
|
credentials {
|
||||||
|
username = SONATYPE_USERNAME
|
||||||
|
password = SONATYPE_PASSWORD
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
signing {
|
||||||
|
required { !version.endsWith('SNAPSHOT') }
|
||||||
|
sign publishing.publications.maven
|
||||||
|
}
|
||||||
|
|
||||||
|
javadoc {
|
||||||
|
if (JavaVersion.current().isJava9Compatible()) {
|
||||||
|
options.addBooleanOption('html5', true)
|
||||||
|
}
|
||||||
|
}
|
||||||
24
docs/Applications.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Applications using VTM software (in lexical order)
|
||||||
|
|
||||||
|
|**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, iOS, Desktop | Open |
|
||||||
|
| [Cartograph Maps 3](https://www.cartograph.eu) | Map viewing and track recording | Proprietary/Free (in-app purchases) | Android, iOS, Desktop | Closed |
|
||||||
|
| [Cruiser](https://wiki.openstreetmap.org/wiki/Cruiser) | Map and navigation platform | Proprietary/Free | Android, Desktop | Closed |
|
||||||
|
| [GCDroid](https://play.google.com/store/apps/details?id=com.gcdroid) | Geocaching App | Proprietary/Free and Commercial | Android | Closed |
|
||||||
|
| [GPSLogger II](https://play.google.com/store/apps/details?id=com.emacberry.gpslogger) | Map and navigation, Fitness & Cycling application | Proprietary/Free | Android | Closed |
|
||||||
|
| [HabanaTrans](https://play.google.com/store/apps/details?id=cu.pabloapk.habanatrans&hl=es_419) | Public transport, map offline, gps, routing | Proprietary/Free | 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://play.google.com/store/apps/details?id=gr.talent.kurviger) | Route planner specialized on motorcyclists | Proprietary/Free (in-app purchases) | Android | Closed |
|
||||||
|
| [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 |
|
||||||
|
| [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 |
|
||||||
|
| [topoGuide](http://www.topoguide.gr/index-en.php) | Digital guides for the outdoor | Proprietary/Free and Commercial | Android | Closed |
|
||||||
|
| [Trekarta](https://github.com/andreynovikov/trekarta) | Application for outdoor activities | GPL3/Free and Commercial | Android | Open |
|
||||||
|
| [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 |
|
||||||
|
| [Walkaholic](https://play.google.com/store/apps/details?id=com.walkaholic.hikeapp) | Hiking app with official routes and online/offline maps | Proprietary/Free (in-app purchases) | Android | Closed |
|
||||||
|
| [XCTrack](http://xctrack.org/) | Flight computer for paraglider pilots | Proprietary/Free | Android | Closed |
|
||||||
13
docs/CONTRIBUTING.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
## How to contribute
|
||||||
|
|
||||||
|
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 the Discussions. We will then discuss the best way to realize your proposal and figure out how we can help you to get started quickly.
|
||||||
|
|
||||||
|
If you are only requesting a small change in the code, you may attach a patch file to the corresponding issue, but it is best to create a pull request on Github. Make sure that your patch is derived from the latest version in our **master** repository, otherwise we might be unable to apply it. Important is to keep pull requests simple with one feature in each. Please follow our code and style conventions.
|
||||||
|
|
||||||
|
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 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.
|
||||||
297
docs/Changelog.md
Normal file
@@ -0,0 +1,297 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## New since 0.19.0
|
||||||
|
|
||||||
|
- Motorider map theme [#1045](https://github.com/mapsforge/vtm/pull/1045)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.20.0)
|
||||||
|
|
||||||
|
## Version 0.19.0 (2023-04-26)
|
||||||
|
|
||||||
|
- Render themes: line texture improvements [#1008](https://github.com/mapsforge/vtm/pull/1008)
|
||||||
|
- Biker map theme [#995](https://github.com/mapsforge/vtm/pull/995)
|
||||||
|
- MVT simplification [#956](https://github.com/mapsforge/vtm/pull/956)
|
||||||
|
- `Parameters.SIMPLIFICATION_TOLERANCE`, `Parameters.SIMPLIFICATION_EXCEPTIONS`
|
||||||
|
- libGDX 1.11.0 [#972](https://github.com/mapsforge/vtm/pull/972) [#977](https://github.com/mapsforge/vtm/pull/977)
|
||||||
|
- Disable `vtm-jeo` [#997](https://github.com/mapsforge/vtm/pull/997)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.19.0)
|
||||||
|
|
||||||
|
## Version 0.18.0 (2022-06-18)
|
||||||
|
|
||||||
|
- Mapsforge: deduplicate maps [#903](https://github.com/mapsforge/vtm/pull/903)
|
||||||
|
- Fix overlapping map regions [#903](https://github.com/mapsforge/vtm/pull/903) [#905](https://github.com/mapsforge/vtm/pull/905)
|
||||||
|
- Fix `vtm-jni64.dll` [#911](https://github.com/mapsforge/vtm/pull/911)
|
||||||
|
- Mapsforge: simplification exceptions [#906](https://github.com/mapsforge/vtm/pull/906)
|
||||||
|
- `Parameters.SIMPLIFICATION_EXCEPTIONS`
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.18.0)
|
||||||
|
|
||||||
|
## Version 0.17.0 (2022-01-03)
|
||||||
|
|
||||||
|
- Drawable style point reduction option [#862](https://github.com/mapsforge/vtm/pull/862)
|
||||||
|
- Drawable style texture repeat option [#862](https://github.com/mapsforge/vtm/pull/862)
|
||||||
|
- Draggable marker Android sample [#869](https://github.com/mapsforge/vtm/pull/869)
|
||||||
|
- Move cluster experiment in samples [#858](https://github.com/mapsforge/vtm/pull/858)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.17.0)
|
||||||
|
|
||||||
|
## Version 0.16.0 (2021-05-27)
|
||||||
|
|
||||||
|
- Android: scoped storage map / theme example [#804](https://github.com/mapsforge/vtm/pull/804)
|
||||||
|
- Render theme from zip archive [#804](https://github.com/mapsforge/vtm/pull/804)
|
||||||
|
- Render themes: custom resource providers [#804](https://github.com/mapsforge/vtm/pull/804)
|
||||||
|
- Nautical unit adapter with feet [#803](https://github.com/mapsforge/vtm/pull/803)
|
||||||
|
- Distant labels rendering option [#844](https://github.com/mapsforge/vtm/pull/844)
|
||||||
|
- `Parameters.DISTANT_LABELS`
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.16.0)
|
||||||
|
|
||||||
|
## Version 0.15.0 (2021-01-01)
|
||||||
|
|
||||||
|
- Android: scoped storage map example [#785](https://github.com/mapsforge/vtm/pull/785)
|
||||||
|
- Mapsforge: map stream support [#784](https://github.com/mapsforge/vtm/pull/784)
|
||||||
|
- Render theme from Android content providers [#783](https://github.com/mapsforge/vtm/pull/783)
|
||||||
|
- Render theme xml pull parser [#786](https://github.com/mapsforge/vtm/pull/786)
|
||||||
|
- Symbol scale option [#790](https://github.com/mapsforge/vtm/pull/790)
|
||||||
|
- `Parameters.SYMBOL_SCALING`
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.15.0)
|
||||||
|
|
||||||
|
## Version 0.14.0 (2020-08-25)
|
||||||
|
|
||||||
|
- Render themes: symbol styles [#769](https://github.com/mapsforge/vtm/pull/769)
|
||||||
|
- More mutable itemized layer [#771](https://github.com/mapsforge/vtm/pull/771)
|
||||||
|
- Marker renderer sort option
|
||||||
|
- `Parameters.MARKER_SORT`
|
||||||
|
- Update vtm-jeo module [#770](https://github.com/mapsforge/vtm/pull/770)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.14.0)
|
||||||
|
|
||||||
|
## Version 0.13.0 (2020-01-12)
|
||||||
|
|
||||||
|
- Render themes: symbols on lines with billboard / rotation [#743](https://github.com/mapsforge/vtm/pull/743)
|
||||||
|
- Location texture renderer: rewrite and optimize [#750](https://github.com/mapsforge/vtm/pull/750)
|
||||||
|
- Fix stroke cap line ending [#758](https://github.com/mapsforge/vtm/pull/758)
|
||||||
|
- Mapsforge: fix ways precision loss [#752](https://github.com/mapsforge/vtm/pull/752)
|
||||||
|
- Mapsforge: additional simplification [#757](https://github.com/mapsforge/vtm/pull/757)
|
||||||
|
- `Parameters.SIMPLIFICATION_TOLERANCE`
|
||||||
|
- Android: OpenGL ES 2.0 default for performance / stability [#749](https://github.com/mapsforge/vtm/pull/749)
|
||||||
|
- `MapView.OPENGL_VERSION`
|
||||||
|
- Android: threaded system initialization
|
||||||
|
- `Parameters.THREADED_INIT`
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.13.0)
|
||||||
|
|
||||||
|
## Version 0.12.0 (2019-09-17)
|
||||||
|
|
||||||
|
- MBTiles vector tile source (Android) [#740](https://github.com/mapsforge/vtm/pull/740)
|
||||||
|
- vtm-android-mvt module
|
||||||
|
- Render themes: text background color [#737](https://github.com/mapsforge/vtm/pull/737)
|
||||||
|
- vtm-desktop-lwjgl module [#714](https://github.com/mapsforge/vtm/pull/714)
|
||||||
|
- vtm-desktop-lwjgl3 module [#717](https://github.com/mapsforge/vtm/pull/717)
|
||||||
|
- Fix marker touch events [#723](https://github.com/mapsforge/vtm/issues/723)
|
||||||
|
- Calculation of centroids for all polygons [#734](https://github.com/mapsforge/vtm/pull/734)
|
||||||
|
- `Parameters.POLY_CENTROID`
|
||||||
|
- Disable optimal placement of labels or symbols on polygons
|
||||||
|
- `Parameters.POLY_LABEL`
|
||||||
|
- Android 10 compatibility [#728](https://github.com/mapsforge/vtm/issues/728)
|
||||||
|
- libGDX 1.9.10 [#731](https://github.com/mapsforge/vtm/issues/731)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.12.0)
|
||||||
|
|
||||||
|
## 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)
|
||||||
|
- 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)
|
||||||
|
- 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)
|
||||||
|
- 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)
|
||||||
|
|
||||||
|
- Gradle fix transitive dependencies [#433](https://github.com/mapsforge/vtm/issues/433)
|
||||||
|
- libGDX 1.9.8 [#464](https://github.com/mapsforge/vtm/issues/464)
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.9.2)
|
||||||
|
|
||||||
|
## Version 0.9.1 (2017-12-29)
|
||||||
|
|
||||||
|
- LwHttp engine fix http headers [#460](https://github.com/mapsforge/vtm/issues/460)
|
||||||
|
- S3DBLayer renamed to S3DBTileLayer [#452](https://github.com/mapsforge/vtm/issues/452)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.9.1)
|
||||||
|
|
||||||
|
## Version 0.9.0 (2017-12-03)
|
||||||
|
|
||||||
|
- Mapsforge maps **v5** support [#429](https://github.com/mapsforge/vtm/issues/429)
|
||||||
|
- 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: stroke dash array [#131](https://github.com/mapsforge/vtm/issues/131)
|
||||||
|
- PathLayer overlay touch events [#316](https://github.com/mapsforge/vtm/issues/316)
|
||||||
|
- VectorLayer (polygon) overlay touch events [#424](https://github.com/mapsforge/vtm/issues/424)
|
||||||
|
- Two finger tap zoom out gesture [#423](https://github.com/mapsforge/vtm/issues/423)
|
||||||
|
- POI Search example [#394](https://github.com/mapsforge/vtm/issues/394)
|
||||||
|
- Mapsforge Reverse Geocoding [#383](https://github.com/mapsforge/vtm/issues/383)
|
||||||
|
- Core utilities [#396](https://github.com/mapsforge/vtm/issues/396)
|
||||||
|
- `MercatorProjection.groundResolution` renamed to `groundResolutionWithScale`
|
||||||
|
- Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401)
|
||||||
|
- Mapsforge fix artifacts zoom >17 [#231](https://github.com/mapsforge/vtm/issues/231)
|
||||||
|
- Mapzen building extrusions [#419](https://github.com/mapsforge/vtm/issues/419)
|
||||||
|
- BuildingLayer expects height tags in meters
|
||||||
|
- Polygon symbol positioning [#405](https://github.com/mapsforge/vtm/issues/405)
|
||||||
|
- 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)
|
||||||
|
- Feature parameters [#403](https://github.com/mapsforge/vtm/issues/403)
|
||||||
|
- vtm-android-gdx module enhancements [#435](https://github.com/mapsforge/vtm/issues/435)
|
||||||
|
- Gradle 4 / Android plugin 3 support [#433](https://github.com/mapsforge/vtm/issues/433)
|
||||||
|
- libGDX 1.9.7 [#434](https://github.com/mapsforge/vtm/issues/434)
|
||||||
|
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.9.0)
|
||||||
|
|
||||||
|
## Version 0.8.0 (2017-07-19)
|
||||||
|
|
||||||
|
- 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)
|
||||||
|
- Osmagray theme [#300](https://github.com/mapsforge/vtm/issues/300)
|
||||||
|
- Symbol rotation [#294](https://github.com/mapsforge/vtm/issues/294)
|
||||||
|
- Location renderer improvements [#317](https://github.com/mapsforge/vtm/issues/317)
|
||||||
|
- POT textures [#334](https://github.com/mapsforge/vtm/issues/334)
|
||||||
|
- `Parameters.POT_TEXTURES`
|
||||||
|
- 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)
|
||||||
|
- vtm-json module [#367](https://github.com/mapsforge/vtm/issues/367)
|
||||||
|
- Mapzen GeoJSON vector tiles [#55](https://github.com/mapsforge/vtm/issues/55)
|
||||||
|
- vtm-ios-example module [#326](https://github.com/mapsforge/vtm/issues/326)
|
||||||
|
- Handle layers enabled state [#342](https://github.com/mapsforge/vtm/issues/342)
|
||||||
|
- Fix coord scale short overflow [#343](https://github.com/mapsforge/vtm/issues/343)
|
||||||
|
- Mapsforge map read improvements [#357](https://github.com/mapsforge/vtm/issues/357) [#370](https://github.com/mapsforge/vtm/issues/370)
|
||||||
|
- Improve canvas DPI setting [#349](https://github.com/mapsforge/vtm/issues/349)
|
||||||
|
- OSM indoor layer enhancements [#366](https://github.com/mapsforge/vtm/issues/366)
|
||||||
|
- Gretty plugin at web modules [#338](https://github.com/mapsforge/vtm/issues/338)
|
||||||
|
- libGDX 1.9.6 [#333](https://github.com/mapsforge/vtm/issues/333)
|
||||||
|
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.8.0)
|
||||||
|
|
||||||
|
## Version 0.7.0 (2017-02-26)
|
||||||
|
|
||||||
|
- Mapsforge multiple map files [#208](https://github.com/mapsforge/vtm/issues/208)
|
||||||
|
- 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)
|
||||||
|
- vtm-web modules update [#51](https://github.com/mapsforge/vtm/issues/51)
|
||||||
|
- Mapzen MVT vector tiles [#57](https://github.com/mapsforge/vtm/issues/57)
|
||||||
|
- SVG resources scaling in themes [#214](https://github.com/mapsforge/vtm/issues/214)
|
||||||
|
- Circle map style [#122](https://github.com/mapsforge/vtm/issues/122)
|
||||||
|
- Oneway arrows in themes [#275](https://github.com/mapsforge/vtm/issues/275)
|
||||||
|
- Texture atlas from bitmaps [#283](https://github.com/mapsforge/vtm/pull/283)
|
||||||
|
- PathLayer (vtm) fix disappearing segments [#108](https://github.com/mapsforge/vtm/issues/108)
|
||||||
|
- House numbers (nodes) fix visibility [#168](https://github.com/mapsforge/vtm/issues/168)
|
||||||
|
- Android fix quick scale vs long press [#250](https://github.com/mapsforge/vtm/issues/250)
|
||||||
|
- Use baseline 160dpi in scaling [#236](https://github.com/mapsforge/vtm/issues/236)
|
||||||
|
- OkHttp3 update [#138](https://github.com/mapsforge/vtm/issues/138)
|
||||||
|
- libGDX double tap zoom [#263](https://github.com/mapsforge/vtm/issues/263)
|
||||||
|
- MapFileTileSource zoom level API enhancements [#219](https://github.com/mapsforge/vtm/issues/219)
|
||||||
|
- Animator enhancements with easing functions [#246](https://github.com/mapsforge/vtm/issues/246)
|
||||||
|
- Tile grid layer scaling [#238](https://github.com/mapsforge/vtm/issues/238)
|
||||||
|
- Internal render themes new SVG resources [#251](https://github.com/mapsforge/vtm/issues/251)
|
||||||
|
- Fix theme parsing in non-Latin locales [#297](https://github.com/mapsforge/vtm/issues/297)
|
||||||
|
- libGDX 1.9.5 [#270](https://github.com/mapsforge/vtm/issues/270)
|
||||||
|
- Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.7.0)
|
||||||
|
|
||||||
|
## Version 0.6.0 (2016-10-28) - VTM revival
|
||||||
|
|
||||||
|
- Mapsforge maps **v4** support [#34](https://github.com/mapsforge/vtm/issues/34)
|
||||||
|
- Render theme SVG resources [#60](https://github.com/mapsforge/vtm/issues/60)
|
||||||
|
- Render theme styles [#93](https://github.com/mapsforge/vtm/issues/93)
|
||||||
|
- vtm-ios module update [#29](https://github.com/mapsforge/vtm/issues/29)
|
||||||
|
- Native libraries for all platforms [#14](https://github.com/mapsforge/vtm/issues/14)
|
||||||
|
- Line stipple and texture rendering [#105](https://github.com/mapsforge/vtm/issues/105)
|
||||||
|
- Group layer implementation [#99](https://github.com/mapsforge/vtm/issues/99)
|
||||||
|
- Layer groups implementation [#103](https://github.com/mapsforge/vtm/issues/103)
|
||||||
|
- Location renderer and layer [#171](https://github.com/mapsforge/vtm/issues/171)
|
||||||
|
- 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)
|
||||||
|
- `Parameters.CUSTOM_TILE_SIZE`
|
||||||
|
- 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 resources optional location prefixes [#66](https://github.com/mapsforge/vtm/issues/66)
|
||||||
|
- Render theme from input stream [#161](https://github.com/mapsforge/vtm/issues/161)
|
||||||
|
- Render theme from Android assets [#162](https://github.com/mapsforge/vtm/issues/162)
|
||||||
|
- 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)
|
||||||
|
- vtm-jts module [#53](https://github.com/mapsforge/vtm/issues/53)
|
||||||
|
- vtm-http module [#140](https://github.com/mapsforge/vtm/issues/140)
|
||||||
|
- LWJGL desktop libGDX backend [#129](https://github.com/mapsforge/vtm/issues/129)
|
||||||
|
- 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)
|
||||||
|
- 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)
|
||||||
|
- Minor improvements and bug fixes
|
||||||
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.6.0)
|
||||||
1
docs/ISSUE_TEMPLATE.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
For questions, reports and feature requests please use the Discussions.
|
||||||
181
docs/Integration.md
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
# Integration guide
|
||||||
|
|
||||||
|
This article describes how to integrate the library in your project, with Gradle / Maven / Jars or SNAPSHOT builds.
|
||||||
|
|
||||||
|
Current version is [](https://search.maven.org/search?q=g:org.mapsforge)
|
||||||
|
|
||||||
|
## Gradle
|
||||||
|
|
||||||
|
### Core
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm:[CURRENT-VERSION]'
|
||||||
|
implementation 'org.mapsforge:vtm-themes:[CURRENT-VERSION]'
|
||||||
|
implementation 'org.slf4j:slf4j-api:1.7.28'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Android
|
||||||
|
```groovy
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
||||||
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.caverock:androidsvg:1.4'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Android (libGDX)
|
||||||
|
```groovy
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
|
||||||
|
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
|
||||||
|
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi-v7a'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-arm64-v8a'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86_64'
|
||||||
|
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.badlogicgames.gdx:gdx:1.11.0'
|
||||||
|
implementation 'com.badlogicgames.gdx:gdx-backend-android:1.11.0'
|
||||||
|
implementation 'com.caverock:androidsvg:1.4'
|
||||||
|
```
|
||||||
|
|
||||||
|
### iOS
|
||||||
|
|
||||||
|
Detailed iOS instructions can be found [here](ios.md).
|
||||||
|
|
||||||
|
### Desktop
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
|
||||||
|
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-linux'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-osx'
|
||||||
|
runtimeOnly 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-windows'
|
||||||
|
implementation 'com.badlogicgames.gdx:gdx:1.11.0'
|
||||||
|
runtimeOnly 'com.badlogicgames.gdx:gdx-platform:1.11.0:natives-desktop'
|
||||||
|
implementation 'guru.nidi.com.kitfox:svgSalamander:1.1.3'
|
||||||
|
implementation 'net.sf.kxml:kxml2:2.3.0'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Desktop (LWJGL)
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-desktop-lwjgl:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.badlogicgames.gdx:gdx-backend-lwjgl:1.11.0'
|
||||||
|
implementation 'org.lwjgl.lwjgl:lwjgl:2.9.3'
|
||||||
|
runtimeOnly 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-linux'
|
||||||
|
runtimeOnly 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx'
|
||||||
|
runtimeOnly 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Desktop (LWJGL 3)
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-desktop-lwjgl3:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.badlogicgames.gdx:gdx-backend-lwjgl3:1.11.0'
|
||||||
|
implementation 'org.lwjgl:lwjgl:3.3.1'
|
||||||
|
runtimeOnly 'org.lwjgl:lwjgl:3.3.1:natives-linux'
|
||||||
|
runtimeOnly 'org.lwjgl:lwjgl:3.3.1:natives-macos'
|
||||||
|
runtimeOnly 'org.lwjgl:lwjgl:3.3.1:natives-windows'
|
||||||
|
```
|
||||||
|
|
||||||
|
### JTS geometries
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-jts:[CURRENT-VERSION]'
|
||||||
|
// https://github.com/locationtech/jts/issues/145
|
||||||
|
implementation 'org.locationtech.jts:jts-core:1.15.1'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Online tiles
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-http:[CURRENT-VERSION]'
|
||||||
|
// https://github.com/square/okhttp/issues/4481
|
||||||
|
implementation 'com.squareup.okhttp3:okhttp:3.12.13'
|
||||||
|
implementation 'com.squareup.okio:okio:1.15.0'
|
||||||
|
```
|
||||||
|
|
||||||
|
### MBTiles (Android)
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-android-mvt:[CURRENT-VERSION]'
|
||||||
|
implementation 'org.mapsforge:vtm-mvt:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.google.protobuf:protobuf-java:3.6.1'
|
||||||
|
implementation 'com.wdtinc:mapbox-vector-tile:3.1.0'
|
||||||
|
// https://github.com/locationtech/jts/issues/145
|
||||||
|
implementation 'org.locationtech.jts:jts-core:1.15.1'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mapbox vector tiles
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-mvt:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.google.protobuf:protobuf-java:3.6.1'
|
||||||
|
implementation 'com.wdtinc:mapbox-vector-tile:3.1.0'
|
||||||
|
// https://github.com/locationtech/jts/issues/145
|
||||||
|
implementation 'org.locationtech.jts:jts-core:1.15.1'
|
||||||
|
```
|
||||||
|
|
||||||
|
### GeoJSON vector tiles
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm-json:[CURRENT-VERSION]'
|
||||||
|
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.9.9'
|
||||||
|
implementation 'com.fasterxml.jackson.core:jackson-core:2.9.9'
|
||||||
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.9'
|
||||||
|
```
|
||||||
|
|
||||||
|
### jeo (indoor maps)
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
repositories {
|
||||||
|
maven { url 'https://jitpack.io' }
|
||||||
|
}
|
||||||
|
|
||||||
|
implementation 'org.mapsforge:vtm-jeo:[CURRENT-VERSION]'
|
||||||
|
implementation('com.github.jeo.jeo:jeo-carto:master-SNAPSHOT') {
|
||||||
|
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Snapshots
|
||||||
|
|
||||||
|
We publish SNAPSHOT builds to Sonatype OSS Repository Hosting.
|
||||||
|
|
||||||
|
You need to add the repository:
|
||||||
|
```groovy
|
||||||
|
repositories {
|
||||||
|
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
And declare the dependencies like:
|
||||||
|
```groovy
|
||||||
|
implementation 'org.mapsforge:vtm:master-SNAPSHOT'
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
For checking latest snapshot on every build:
|
||||||
|
```groovy
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Maven
|
||||||
|
|
||||||
|
The dependencies for Maven are declared in a similar way. For example:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mapsforge</groupId>
|
||||||
|
<artifactId>vtm</artifactId>
|
||||||
|
<version>[CURRENT-VERSION]</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Jars
|
||||||
|
|
||||||
|
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.
|
||||||
11
docs/Mapsforge-Maps.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Mapsforge map providers (in lexical order)
|
||||||
|
|
||||||
|
- [AndroidMaps](https://www.androidmaps.co.uk/)
|
||||||
|
- [BBBike](https://extract.bbbike.org/?format=mapsforge-osm.zip)
|
||||||
|
- [Freizeitkarte](https://www.freizeitkarte-osm.de/android/en/index.html)
|
||||||
|
- [Kurviger](https://download.kurviger.de/)
|
||||||
|
- [Mapsforge](https://download.mapsforge.org/) | [Mirror (fast)](http://ftp-stud.hs-esslingen.de/pub/Mirrors/download.mapsforge.org/)
|
||||||
|
- [OpenAndroMaps](https://www.openandromaps.org/en/)
|
||||||
|
- [OpenMaps](https://openmaps.eu/)
|
||||||
|
- [paws.cz](https://osm.paws.cz/)
|
||||||
|
- [vector.city](https://vector.city/)
|
||||||
278
docs/Rendertheme.md
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
# RenderTheme
|
||||||
|
|
||||||
|
This article describes how to use XML-based render-themes to style maps.
|
||||||
|
|
||||||
|
## 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, line, area or symbol rule.
|
||||||
|
If you define a style set an `id` and use it with `use` in your rendering instructions:
|
||||||
|
- `style-text`
|
||||||
|
- `style-line`
|
||||||
|
- `style-area`
|
||||||
|
- `style-symbol`
|
||||||
|
|
||||||
|
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.
|
||||||
19
docs/desktop.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
### 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
|
||||||
|
```
|
||||||
|
|
||||||
|
To change the libGDX backend can replace the dependency: `vtm-desktop-lwjgl` or `vtm-desktop-lwjgl3`.
|
||||||
BIN
docs/images/android.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
docs/images/browser.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
docs/images/desktop.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
docs/images/ios.png
Normal file
|
After Width: | Height: | Size: 450 KiB |
64
docs/ios.md
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
### iOS implementation
|
||||||
|
|
||||||
|
RoboVm needs the native libs / frameworks to create a build.
|
||||||
|
|
||||||
|
Create a copy task into your iOS **build.gradle** and add the dependencies.
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
configurations { natives }
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile "org.mapsforge:vtm-ios:[CURRENT-VERSION]"
|
||||||
|
natives "org.mapsforge:vtm-ios:[CURRENT-VERSION]:natives"
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called every time Gradle gets executed. Takes the native dependencies of
|
||||||
|
// the 'natives' configuration and extracts them to the proper build folders
|
||||||
|
// so they get packed with the IPA.
|
||||||
|
task copyNatives() {
|
||||||
|
file("build/native/").mkdirs();
|
||||||
|
configurations.natives.files.each { jar ->
|
||||||
|
def outputDir = null
|
||||||
|
if (jar.name.endsWith("natives.jar")) outputDir = file("build/native/")
|
||||||
|
if (outputDir != null) {
|
||||||
|
copy {
|
||||||
|
from zipTree(jar)
|
||||||
|
into outputDir
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you can configure your `robovm.xml` to implement the vtm-natives and the SVG-Framework.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<libs>
|
||||||
|
<lib>z</lib>
|
||||||
|
<lib>build/native/libvtm-jni.a</lib> <!--vtm native -->
|
||||||
|
</libs>
|
||||||
|
<frameworkPaths>
|
||||||
|
<path>build/native</path> <!--SVGgh framework path -->
|
||||||
|
</frameworkPaths>
|
||||||
|
<frameworks>
|
||||||
|
<framework>SVGgh</framework> <!--SVGgh framework name -->
|
||||||
|
<framework>UIKit</framework>
|
||||||
|
<framework>OpenGLES</framework>
|
||||||
|
<framework>QuartzCore</framework>
|
||||||
|
<framework>CoreGraphics</framework>
|
||||||
|
<framework>OpenAL</framework>
|
||||||
|
<framework>AudioToolbox</framework>
|
||||||
|
<framework>AVFoundation</framework>
|
||||||
|
</frameworks>
|
||||||
|
```
|
||||||
|
|
||||||
|
Remember the implementation of a iOS framework is possible since iOS 8.
|
||||||
|
So we must set the min iOS-Version at `Info.plist.xml`.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dict>
|
||||||
|
<key>MinimumOSVersion</key>
|
||||||
|
<string>8.0</string>
|
||||||
|
...
|
||||||
|
```
|
||||||
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 |
29
docs/web.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
### Web implementation
|
||||||
|
|
||||||
|
`./gradlew :vtm-web-app:farmRun` will run standalone web server at port 8080.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
#### 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**.
|
||||||
@@ -2,18 +2,18 @@
|
|||||||
<profiles version="12">
|
<profiles version="12">
|
||||||
<profile kind="CodeFormatterProfile" name="eclipse-vtm" version="12">
|
<profile kind="CodeFormatterProfile" name="eclipse-vtm" version="12">
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
|
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
|
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
|
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
|
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
|
||||||
@@ -33,37 +33,37 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
|
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
|
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="82"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
|
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
|
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
|
||||||
<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
|
<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="82"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
|
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="84"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
|
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="100"/>
|
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="100"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
|
||||||
@@ -87,9 +87,9 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
|
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="80"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
|
<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
|
||||||
@@ -104,8 +104,8 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
|
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
|
||||||
@@ -116,17 +116,17 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="true"/>
|
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="true"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
|
<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
|
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
|
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
|
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
|
||||||
@@ -141,24 +141,24 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
|
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
|
||||||
@@ -170,35 +170,35 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="82"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
|
<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
|
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="82"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
|
<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
|
||||||
@@ -248,9 +248,9 @@
|
|||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
|
|
||||||
<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
|
<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
|
||||||
|
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="true"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
|
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
|
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
|
||||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
|
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.source=1.6
|
org.eclipse.jdt.core.compiler.source=1.7
|
||||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=82
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=82
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=82
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=82
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
|
org.eclipse.jdt.core.formatter.alignment_for_assignment=80
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
|
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
|
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
|
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
|
||||||
@@ -27,7 +27,7 @@ org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
|
|||||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
|
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
|
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
|
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=84
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
|
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
|
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
|
||||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
|
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
|
||||||
@@ -56,8 +56,8 @@ org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
|
|||||||
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||||
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
|
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
|
||||||
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
|
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
|
||||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
|
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
|
||||||
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
|
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
|
||||||
org.eclipse.jdt.core.formatter.comment.format_header=false
|
org.eclipse.jdt.core.formatter.comment.format_header=false
|
||||||
org.eclipse.jdt.core.formatter.comment.format_html=true
|
org.eclipse.jdt.core.formatter.comment.format_html=true
|
||||||
@@ -69,7 +69,7 @@ org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
|
|||||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
||||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
|
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
|
||||||
org.eclipse.jdt.core.formatter.comment.line_length=80
|
org.eclipse.jdt.core.formatter.comment.line_length=80
|
||||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
|
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=false
|
||||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
|
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
|
||||||
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
|
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
|
||||||
org.eclipse.jdt.core.formatter.compact_else_if=true
|
org.eclipse.jdt.core.formatter.compact_else_if=true
|
||||||
@@ -282,10 +282,10 @@ org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
|
|||||||
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
||||||
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
|
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||||
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
|
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
|
||||||
org.eclipse.jdt.core.formatter.tabulation.char=tab
|
org.eclipse.jdt.core.formatter.tabulation.char=space
|
||||||
org.eclipse.jdt.core.formatter.tabulation.size=4
|
org.eclipse.jdt.core.formatter.tabulation.size=4
|
||||||
org.eclipse.jdt.core.formatter.use_on_off_tags=false
|
org.eclipse.jdt.core.formatter.use_on_off_tags=false
|
||||||
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
|
||||||
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
|
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
|
||||||
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
|
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
|
||||||
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
|
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
|
||||||
21
gradle.properties
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Project-wide Gradle settings.
|
||||||
|
# IDE (e.g. Android Studio) users:
|
||||||
|
# Gradle settings configured through the IDE *will override*
|
||||||
|
# any settings specified in this file.
|
||||||
|
# For more details on how to configure your build environment visit
|
||||||
|
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||||
|
# Specifies the JVM arguments used for the daemon process.
|
||||||
|
# The setting is particularly useful for tweaking memory settings.
|
||||||
|
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
|
||||||
|
# When configured, Gradle will run in incubating parallel mode.
|
||||||
|
# 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
|
||||||
|
# org.gradle.parallel=true
|
||||||
|
# AndroidX package structure to make it clearer which packages are bundled with the
|
||||||
|
# Android operating system, and which are packaged with your app's APK
|
||||||
|
# https://developer.android.com/topic/libraries/support-library/androidx-rn
|
||||||
|
android.useAndroidX=true
|
||||||
|
# Enables namespacing of each library's R class so that its R class includes only the
|
||||||
|
# resources declared in the library itself and none from the library's dependencies,
|
||||||
|
# thereby reducing the size of the R class for that library
|
||||||
|
android.nonTransitiveRClass=true
|
||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
5
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
||||||
185
gradlew
vendored
Executable file
@@ -0,0 +1,185 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright 2015 the original author or authors.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
#
|
||||||
|
# https://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.
|
||||||
|
#
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
##
|
||||||
|
## Gradle start up script for UN*X
|
||||||
|
##
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
PRG="$0"
|
||||||
|
# Need this for relative symlinks.
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`"/$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
SAVED="`pwd`"
|
||||||
|
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||||
|
APP_HOME="`pwd -P`"
|
||||||
|
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='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||||
|
else
|
||||||
|
JAVACMD="$JAVA_HOME/bin/java"
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD="java"
|
||||||
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||||
|
MAX_FD_LIMIT=`ulimit -H -n`
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||||
|
MAX_FD="$MAX_FD_LIMIT"
|
||||||
|
fi
|
||||||
|
ulimit -n $MAX_FD
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Darwin, add options to specify how the application appears in the dock
|
||||||
|
if $darwin; then
|
||||||
|
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||||
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||||
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||||
|
|
||||||
|
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||||
|
|
||||||
|
# We build the pattern for arguments to be converted via cygpath
|
||||||
|
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||||
|
SEP=""
|
||||||
|
for dir in $ROOTDIRSRAW ; do
|
||||||
|
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||||
|
SEP="|"
|
||||||
|
done
|
||||||
|
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||||
|
# Add a user-defined pattern to the cygpath arguments
|
||||||
|
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||||
|
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||||
|
fi
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
i=0
|
||||||
|
for arg in "$@" ; do
|
||||||
|
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||||
|
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||||
|
|
||||||
|
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||||
|
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||||
|
else
|
||||||
|
eval `echo args$i`="\"$arg\""
|
||||||
|
fi
|
||||||
|
i=`expr $i + 1`
|
||||||
|
done
|
||||||
|
case $i in
|
||||||
|
0) set -- ;;
|
||||||
|
1) set -- "$args0" ;;
|
||||||
|
2) set -- "$args0" "$args1" ;;
|
||||||
|
3) set -- "$args0" "$args1" "$args2" ;;
|
||||||
|
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||||
|
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||||
|
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||||
|
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||||
|
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||||
|
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Escape application args
|
||||||
|
save () {
|
||||||
|
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||||
|
echo " "
|
||||||
|
}
|
||||||
|
APP_ARGS=`save "$@"`
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
89
gradlew.bat
vendored
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
|
@if "%DEBUG%" == "" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@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="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
||||||
75
jni/.cproject
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1587393048">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1587393048" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1587393048" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1587393048.116574534" name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.base.223412825" name="cdt.managedbuild.toolchain.gnu.base" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.385578518" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||||
|
<builder command="make" enableCleanBuild="false" enabledIncrementalBuild="false" id="cdt.managedbuild.target.gnu.builder.base.156937647" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1823835369" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.360207042" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||||
|
<option id="gnu.cpp.compiler.option.preprocessor.def.145805607" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="CORE_EXPORT"/>
|
||||||
|
</option>
|
||||||
|
<option id="gnu.cpp.compiler.option.include.paths.1744312971" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/vtm-jni}""/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.111801070" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1095290162" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||||
|
<option id="gnu.c.compiler.option.include.paths.542022155" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value="/usr/lib/jvm/java-7-openjdk-amd64/include"/>
|
||||||
|
<listOptionValue builtIn="false" value="/usr/lib/jvm/java-7-openjdk-amd64/include/linux"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.506992692" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.335083411" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1727739418" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1457207088" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.assembler.base.2019534622" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
|
||||||
|
<option id="gnu.both.asm.option.include.paths.66240236" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.622641223" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="vtm-jni.null.1777174385" name="vtm-jni"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1587393048;cdt.managedbuild.toolchain.gnu.base.1587393048.116574534;cdt.managedbuild.tool.gnu.c.compiler.base.1095290162;cdt.managedbuild.tool.gnu.c.compiler.input.506992692">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1587393048;cdt.managedbuild.toolchain.gnu.base.1587393048.116574534;cdt.managedbuild.tool.gnu.cpp.compiler.base.360207042;cdt.managedbuild.tool.gnu.cpp.compiler.input.111801070">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
|
<configuration configurationName="Default">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/vtm-jni"/>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
||||||
14
jni/BUILD_JNI.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Build native libraries:
|
||||||
|
- modify src/JniBuilder.java for your platform.
|
||||||
|
|
||||||
|
## to build android:
|
||||||
|
export NDK_HOME=/path_to_android_sdk
|
||||||
|
|
||||||
|
## compile
|
||||||
|
ant -v
|
||||||
|
|
||||||
|
## copy vtm/libs/armeabi* to vtm-android/libs
|
||||||
|
rm -rf ../../vtm-ext-libs/vtm-android/libs/*
|
||||||
|
cp -r ../libs/armeabi* ../../vtm-ext-libs/vtm-android/libs/
|
||||||
|
|
||||||
|
|
||||||
9
jni/build.gradle
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation "com.badlogicgames.gdx:gdx-jnigen:$gdxVersion"
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main.java.srcDirs = ['src']
|
||||||
|
}
|
||||||
3
jni/cp.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
cp libs/armeabi/libvtm-jni.so ../vtm-ext-libs/vtm-android/armeabi
|
||||||
|
cp libs/armeabi-v7a/libvtm-jni.so ../vtm-ext-libs/vtm-android/armeabi-v7a
|
||||||
|
cp libs/vtm-jni-natives.jar ../vtm-ext-libs/gdx/
|
||||||
22
jni/jni/Android.mk
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
LOCAL_PATH:= $(call my-dir)
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := vtm-jni
|
||||||
|
LOCAL_C_INCLUDES := . libtess2/Include
|
||||||
|
|
||||||
|
LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -Wall -std=c99 -O2 -ffast-math -DNDEBUG
|
||||||
|
LOCAL_CPPFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -Wall -std=c99 -O2 -ffast-math -DNDEBUG
|
||||||
|
LOCAL_LDLIBS := -lm -llog
|
||||||
|
LOCAL_ARM_MODE := arm
|
||||||
|
|
||||||
|
LOCAL_SRC_FILES := org.oscim.utils.TessJNI.cpp\
|
||||||
|
libtess2/Source/sweep.c\
|
||||||
|
libtess2/Source/priorityq.c\
|
||||||
|
libtess2/Source/bucketalloc.c\
|
||||||
|
libtess2/Source/geom.c\
|
||||||
|
libtess2/Source/tess.c\
|
||||||
|
libtess2/Source/dict.c\
|
||||||
|
libtess2/Source/mesh.c\
|
||||||
|
gl/utils.c
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
2
jni/jni/Application.mk
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
APP_ABI := armeabi armeabi-v7a x86
|
||||||
|
APP_PLATFORM := android-8
|
||||||
@@ -16,21 +16,25 @@
|
|||||||
|
|
||||||
<!-- define gcc compiler, options and files to compile -->
|
<!-- define gcc compiler, options and files to compile -->
|
||||||
<property name="gcc" value="${compilerPrefix}gcc${compilerSuffix}"/>
|
<property name="gcc" value="${compilerPrefix}gcc${compilerSuffix}"/>
|
||||||
<property name="gcc-opts" value="-c -Wall -O2 -mfpmath=sse -msse -fmessage-length=0 -m64 -fPIC -Wall -std=c99 -O2 -DTRILIBRARY -DREDUCED -DCDT_ONLY -DNO_TIMER"/>
|
<property name="gcc-opts" value="-c -Wall -O2 -mfpmath=sse -msse -fmessage-length=0 -m64 -fPIC -Wall -std=c99 -O2 -ffast-math -DNDEBUG"/>
|
||||||
<fileset id="gcc-files" dir="./">
|
<fileset id="gcc-files" dir="./">
|
||||||
<exclude name="target/"/>
|
<exclude name="target/"/>
|
||||||
<include name="memcpy_wrap.c"/>
|
<include name="memcpy_wrap.c"/>
|
||||||
<include name="gl/utils.c"/>
|
<include name="gl/utils.c"/>
|
||||||
<include name="triangle/TriangleJni.c"/>
|
<include name="libtess2/Source/bucketalloc.c"/>
|
||||||
<include name="triangle/triangle.c"/>
|
<include name="libtess2/Source/dict.c"/>
|
||||||
<include name="triangle/triangle_dbg.c"/>
|
<include name="libtess2/Source/geom.c"/>
|
||||||
|
<include name="libtess2/Source/mesh.c"/>
|
||||||
|
<include name="libtess2/Source/priorityq.c"/>
|
||||||
|
<include name="libtess2/Source/sweep.c"/>
|
||||||
|
<include name="libtess2/Source/tess.c"/>
|
||||||
|
|
||||||
|
|
||||||
</fileset>
|
</fileset>
|
||||||
|
|
||||||
<!-- define g++ compiler, options and files to compile -->
|
<!-- define g++ compiler, options and files to compile -->
|
||||||
<property name="g++" value="${compilerPrefix}g++${compilerSuffix}"/>
|
<property name="g++" value="${compilerPrefix}g++${compilerSuffix}"/>
|
||||||
<property name="g++-opts" value="-c -Wall -O2 -mfpmath=sse -msse -fmessage-length=0 -m64 -fPIC -Wall -std=c99 -O2 -DTRILIBRARY -DREDUCED -DCDT_ONLY -DNO_TIMER"/>
|
<property name="g++-opts" value="-c -Wall -O2 -mfpmath=sse -msse -fmessage-length=0 -m64 -fPIC -Wall -std=c99 -O2 -ffast-math -DNDEBUG"/>
|
||||||
<fileset id="g++-files" dir="./">
|
<fileset id="g++-files" dir="./">
|
||||||
<exclude name="target/"/>
|
<exclude name="target/"/>
|
||||||
<include name="**/*.cpp"/>
|
<include name="**/*.cpp"/>
|
||||||
@@ -95,6 +99,7 @@
|
|||||||
<arg value="-Ijni-headers/${jniPlatform}"/>
|
<arg value="-Ijni-headers/${jniPlatform}"/>
|
||||||
<arg value="-I."/>
|
<arg value="-I."/>
|
||||||
<arg value="-I."/>
|
<arg value="-I."/>
|
||||||
|
<arg value="-Ilibtess2/Include"/>
|
||||||
|
|
||||||
<srcfile/>
|
<srcfile/>
|
||||||
<arg value="-o"/>
|
<arg value="-o"/>
|
||||||
@@ -111,6 +116,7 @@
|
|||||||
<arg value="-Ijni-headers/${jniPlatform}"/>
|
<arg value="-Ijni-headers/${jniPlatform}"/>
|
||||||
<arg value="-I."/>
|
<arg value="-I."/>
|
||||||
<arg value="-I."/>
|
<arg value="-I."/>
|
||||||
|
<arg value="-Ilibtess2/Include"/>
|
||||||
|
|
||||||
<srcfile/>
|
<srcfile/>
|
||||||
<arg value="-o"/>
|
<arg value="-o"/>
|
||||||
203
jni/jni/build-windows64.xml
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
<project name="vtm-jni-Windows-64" basedir="." default="postcompile">
|
||||||
|
|
||||||
|
<!-- include the environment -->
|
||||||
|
<property environment="env"/>
|
||||||
|
|
||||||
|
<!-- output directory for temporary object files -->
|
||||||
|
<property name="buildDir" value="target/windows64" />
|
||||||
|
|
||||||
|
<!-- output directory for the shared library -->
|
||||||
|
<property name="libsDir" value="../libs/windows64" />
|
||||||
|
|
||||||
|
<!-- the name of the shared library -->
|
||||||
|
<property name="libName" value="vtm-jni64.dll"/>
|
||||||
|
|
||||||
|
<!-- the jni header jniPlatform to use -->
|
||||||
|
<property name="jniPlatform" value="win32"/>
|
||||||
|
|
||||||
|
<!-- the compiler to use when compiling c files -->
|
||||||
|
<property name="cCompiler" value="gcc"/>
|
||||||
|
|
||||||
|
<!-- the compiler to use when compiling c++ files -->
|
||||||
|
<property name="cppCompiler" value="g++"/>
|
||||||
|
|
||||||
|
<!-- the command to use when archiving files -->
|
||||||
|
<property name="archiver" value="ar"/>
|
||||||
|
|
||||||
|
<!-- the compilerPrefix for the C & C++ compilers -->
|
||||||
|
<property name="compilerPrefix" value="x86_64-w64-mingw32-"/>
|
||||||
|
|
||||||
|
<!-- the compilerSuffix for the C & C++ compilers -->
|
||||||
|
<property name="compilerSuffix" value=".exe" />
|
||||||
|
|
||||||
|
<!-- define gcc compiler, options and files to compile -->
|
||||||
|
<property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
|
||||||
|
<property name="gcc-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m64 -Wall -std=c99 -O2 -ffast-math -DNDEBUG"/>
|
||||||
|
<fileset id="gcc-files" dir="./">
|
||||||
|
<exclude name="target/"/>
|
||||||
|
<include name="memcpy_wrap.c"/>
|
||||||
|
<include name="gl/utils.c"/>
|
||||||
|
<include name="libtess2/Source/bucketalloc.c"/>
|
||||||
|
<include name="libtess2/Source/dict.c"/>
|
||||||
|
<include name="libtess2/Source/geom.c"/>
|
||||||
|
<include name="libtess2/Source/mesh.c"/>
|
||||||
|
<include name="libtess2/Source/priorityq.c"/>
|
||||||
|
<include name="libtess2/Source/sweep.c"/>
|
||||||
|
<include name="libtess2/Source/tess.c"/>
|
||||||
|
</fileset>
|
||||||
|
|
||||||
|
<!-- define g++ compiler, options and files to compile -->
|
||||||
|
<property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
|
||||||
|
<property name="g++-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m64 -Wall -std=c99 -O2 -ffast-math -DNDEBUG -fpermissive"/>
|
||||||
|
<fileset id="g++-files" dir="./">
|
||||||
|
<exclude name="target/"/>
|
||||||
|
<include name="**/*.cpp"/>
|
||||||
|
</fileset>
|
||||||
|
|
||||||
|
<!-- define linker and options -->
|
||||||
|
<property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
|
||||||
|
<property name="linker-opts" value="-Wl,--kill-at -shared -static -static-libgcc -static-libstdc++ -m64"/>
|
||||||
|
<property name="libraries" value=""/>
|
||||||
|
|
||||||
|
<!-- define stripper -->
|
||||||
|
<property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
|
||||||
|
|
||||||
|
<!-- cleans the build directory, removes all object files and shared libs -->
|
||||||
|
<target name="clean">
|
||||||
|
<delete includeemptydirs="true" quiet="true">
|
||||||
|
<fileset dir="${buildDir}"/>
|
||||||
|
<fileset dir="${libsDir}" includes="**/*"/>
|
||||||
|
</delete>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="precompile" depends="clean">
|
||||||
|
<condition property="compiler-found">
|
||||||
|
<and>
|
||||||
|
<or>
|
||||||
|
<!-- Include both b/c Windows might be either -->
|
||||||
|
<available file="${g++}" filepath="${env.PATH}"/>
|
||||||
|
<available file="${g++}" filepath="${env.Path}"/>
|
||||||
|
</or>
|
||||||
|
<or>
|
||||||
|
<!-- Include both b/c Windows might be either -->
|
||||||
|
<available file="${gcc}" filepath="${env.PATH}"/>
|
||||||
|
<available file="${gcc}" filepath="${env.Path}"/>
|
||||||
|
</or>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="has-compiler">
|
||||||
|
<equals arg1="${compiler-found}" arg2="true"/>
|
||||||
|
</condition>
|
||||||
|
<condition property="stripper-found">
|
||||||
|
<or>
|
||||||
|
<!-- Include both b/c Windows might be either -->
|
||||||
|
<available file="${stripper}" filepath="${env.PATH}"/>
|
||||||
|
<available file="${stripper}" filepath="${env.Path}"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="should-strip">
|
||||||
|
<and>
|
||||||
|
<equals arg1="${stripper-found}" arg2="true"/>
|
||||||
|
<equals arg1="${release}" arg2="true"/>
|
||||||
|
<!-- Don't strip mac osx libs -->
|
||||||
|
<not>
|
||||||
|
<contains string="${libName}" substring="dylib"/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="create-build-dir" depends="precompile" if="has-compiler">
|
||||||
|
<!-- FIXME this is pretty nasty :/ -->
|
||||||
|
<copy todir="${buildDir}">
|
||||||
|
<fileset refid="g++-files"/>
|
||||||
|
<fileset refid="gcc-files"/>
|
||||||
|
</copy>
|
||||||
|
<delete>
|
||||||
|
<fileset dir="${buildDir}">
|
||||||
|
<include name="*"/>
|
||||||
|
<exclude name="*.o"/>
|
||||||
|
</fileset>
|
||||||
|
</delete>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- compiles all C and C++ files to object files in the build directory -->
|
||||||
|
<target name="compile" depends="create-build-dir" if="has-compiler">
|
||||||
|
<mkdir dir="${buildDir}"/>
|
||||||
|
<apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
|
||||||
|
<arg line="${g++-opts}"/>
|
||||||
|
<arg value="-Ijni-headers"/>
|
||||||
|
<arg value="-Ijni-headers/${jniPlatform}"/>
|
||||||
|
<arg value="-I."/>
|
||||||
|
<arg value="-I."/>
|
||||||
|
<arg value="-Ilibtess2/Include"/>
|
||||||
|
|
||||||
|
<srcfile/>
|
||||||
|
<arg value="-o"/>
|
||||||
|
<targetfile/>
|
||||||
|
<fileset refid="g++-files"/>
|
||||||
|
<compositemapper>
|
||||||
|
<mapper type="glob" from="*.cpp" to="*.o"/>
|
||||||
|
<mapper type="glob" from="*.mm" to="*.o"/>
|
||||||
|
</compositemapper>
|
||||||
|
</apply>
|
||||||
|
<apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
|
||||||
|
<arg line="${gcc-opts}"/>
|
||||||
|
<arg value="-Ijni-headers"/>
|
||||||
|
<arg value="-Ijni-headers/${jniPlatform}"/>
|
||||||
|
<arg value="-I."/>
|
||||||
|
<arg value="-I."/>
|
||||||
|
<arg value="-Ilibtess2/Include"/>
|
||||||
|
<arg value="-Ilibtess2/Source"/>
|
||||||
|
|
||||||
|
<srcfile/>
|
||||||
|
<arg value="-o"/>
|
||||||
|
<targetfile/>
|
||||||
|
<fileset refid="gcc-files"/>
|
||||||
|
<compositemapper>
|
||||||
|
<mapper type="glob" from="*.c" to="*.o"/>
|
||||||
|
<mapper type="glob" from="*.m" to="*.o"/>
|
||||||
|
</compositemapper>
|
||||||
|
</apply>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- links the shared library based on the previously compiled object files -->
|
||||||
|
<target name="link" depends="compile" if="has-compiler">
|
||||||
|
<fileset dir="${buildDir}" id="objFileSet">
|
||||||
|
<patternset>
|
||||||
|
<include name="**/*.o" />
|
||||||
|
</patternset>
|
||||||
|
</fileset>
|
||||||
|
<pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
|
||||||
|
<mkdir dir="${libsDir}" />
|
||||||
|
<exec executable="${linker}" failonerror="true" dir="${buildDir}">
|
||||||
|
<arg line="${linker-opts}" />
|
||||||
|
<arg value="-o" />
|
||||||
|
<arg path="${libsDir}/${libName}" />
|
||||||
|
<arg line="${objFiles}"/>
|
||||||
|
<arg line="${libraries}" />
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- strips the shared library of debug symbols -->
|
||||||
|
<target name="strip" depends="link" if="should-strip">
|
||||||
|
<exec executable="${stripper}" failonerror="true" dir="${buildDir}">
|
||||||
|
<arg value="--strip-unneeded"/>
|
||||||
|
<arg path="${libsDir}/${libName}" />
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- copy dll into dev environment
|
||||||
|
<target name="copyDLL" depends="link">
|
||||||
|
<copy
|
||||||
|
file ="${libsDir}/${libName}"
|
||||||
|
todir ="C:/DAT/MT/mytourbook/bundles/net.tourbook.ext.vtm.windows/natives"
|
||||||
|
/>
|
||||||
|
</target>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="postcompile" depends="strip">
|
||||||
|
|
||||||
|
</target>
|
||||||
|
</project>
|
||||||
@@ -1,20 +1,29 @@
|
|||||||
<project name="vtm-jni-natives" basedir="." default="all">
|
<project name="vtm-jni-natives" basedir="." default="all">
|
||||||
<target name="clean">
|
<target name="clean">
|
||||||
<ant antfile="build-linux64.xml" target="clean"/>
|
|
||||||
<ant antfile="build-android32.xml" target="clean"/>
|
<ant antfile="build-android32.xml" target="clean"/>
|
||||||
|
<ant antfile="build-linux64.xml" target="clean"/>
|
||||||
|
<ant antfile="build-linux32.xml" target="clean"/>
|
||||||
|
<ant antfile="build-windows32.xml" target="clean"/>
|
||||||
|
<ant antfile="build-windows64.xml" target="clean"/>
|
||||||
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="compile-natives">
|
<target name="compile-natives">
|
||||||
<ant antfile="build-linux64.xml"/>
|
|
||||||
<ant antfile="build-android32.xml"/>
|
<ant antfile="build-android32.xml"/>
|
||||||
|
<ant antfile="build-linux64.xml"/>
|
||||||
|
<ant antfile="build-linux32.xml"/>
|
||||||
|
<ant antfile="build-windows32.xml"/>
|
||||||
|
<ant antfile="build-windows64.xml"/>
|
||||||
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="pack-natives">
|
<target name="pack-natives">
|
||||||
<jar destfile="../libs/vtm-jni-natives.jar">
|
<jar destfile="../libs/vtm-jni-natives.jar">
|
||||||
<fileset dir="../libs/linux64" includes="libvtm-jni64.so"/>
|
<fileset dir="../libs/linux64" includes="libvtm-jni64.so"/>
|
||||||
<fileset dir="../libs/android32" includes="libvtm-jni.so"/>
|
<fileset dir="../libs/linux32" includes="libvtm-jni.so"/>
|
||||||
|
<fileset dir="../libs/macosx32" includes="libvtm-jni.so"/>
|
||||||
|
<fileset dir="../libs/windows32" includes="libvtm-jni.dylib"/>
|
||||||
|
<fileset dir="../libs/windows64" includes="libvtm-jni.a"/>
|
||||||
|
|
||||||
</jar>
|
</jar>
|
||||||
</target>
|
</target>
|
||||||
@@ -3,10 +3,15 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <alloca.h>
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifndef __WIN32__
|
||||||
|
#include <alloca.h>
|
||||||
|
//#else
|
||||||
|
//#define alloca(size) __builtin_alloca(size)
|
||||||
|
#endif
|
||||||
|
|
||||||
//#ifndef uintptr_t
|
//#ifndef uintptr_t
|
||||||
//typedef unsigned long uintptr_t;
|
//typedef unsigned long uintptr_t;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -72,7 +77,7 @@ void JNI(setColorBlend)(JNIEnv *env, jclass* clazz, jint location, jint c1, jint
|
|||||||
#endif // 0
|
#endif // 0
|
||||||
|
|
||||||
#undef JNI
|
#undef JNI
|
||||||
#define JNI(X) JNIEXPORT Java_org_oscim_utils_Matrix4_##X
|
#define JNI(X) JNIEXPORT Java_org_oscim_renderer_GLMatrix_##X
|
||||||
|
|
||||||
#define CAST(x) (float *)(uintptr_t) x
|
#define CAST(x) (float *)(uintptr_t) x
|
||||||
#define MAT_SIZE 16 * sizeof(float)
|
#define MAT_SIZE 16 * sizeof(float)
|
||||||
@@ -92,9 +97,12 @@ transposeM(float* mTrans, int mTransOffset, float* m, int mOffset);
|
|||||||
static inline void
|
static inline void
|
||||||
matrix4_proj(float* mat, float* vec);
|
matrix4_proj(float* mat, float* vec);
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
matrix4_proj2D(float* mat, float* vec, float *out);
|
||||||
|
|
||||||
jlong JNI(alloc)(JNIEnv *env, jclass* clazz)
|
jlong JNI(alloc)(JNIEnv *env, jclass* clazz)
|
||||||
{
|
{
|
||||||
return (long) calloc(16, sizeof(float));
|
return (jlong) calloc(16, sizeof(float));
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject JNI(getBuffer)(JNIEnv *env, jclass* clazz,jlong ptr){
|
jobject JNI(getBuffer)(JNIEnv *env, jclass* clazz,jlong ptr){
|
||||||
@@ -239,16 +247,59 @@ void JNI(strans)(JNIEnv* env, jclass* clazz, jlong ptr_r, jlong ptr_a)
|
|||||||
transposeM(matr, 0, mata, 0);
|
transposeM(matr, 0, mata, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JNI(prj)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec)
|
void JNI(prj)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec){
|
||||||
|
float* m = CAST(ptr);
|
||||||
|
float* vec = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_vec, 0);
|
||||||
|
|
||||||
|
matrix4_proj(m, vec);
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_vec, vec, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JNI(prj3D)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec, int offset, int cnt)
|
||||||
{
|
{
|
||||||
float* m = CAST(ptr);
|
float* m = CAST(ptr);
|
||||||
float* vec = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_vec, 0);
|
float* vec = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_vec, 0);
|
||||||
|
|
||||||
matrix4_proj(m, vec);
|
int length = cnt * 3;
|
||||||
|
for (int i = offset * 3; i < length; i += 3)
|
||||||
|
matrix4_proj(m, (vec + i));
|
||||||
|
|
||||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_vec, vec, 0);
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_vec, vec, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JNI(prj2D)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec, int offset, int cnt)
|
||||||
|
{
|
||||||
|
float* m = CAST(ptr);
|
||||||
|
float* vec = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_vec, 0);
|
||||||
|
|
||||||
|
offset *= 2;
|
||||||
|
|
||||||
|
for (int end = offset + cnt * 2; offset < end; offset += 2)
|
||||||
|
matrix4_proj2D(m, (vec + offset), (vec + offset));
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_vec, vec, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JNI(prj2D2)(JNIEnv* env, jclass* clazz, jlong ptr,
|
||||||
|
jfloatArray obj_src_vec, int src_offset,
|
||||||
|
jfloatArray obj_dst_vec, int dst_offset, int cnt)
|
||||||
|
{
|
||||||
|
float* m = CAST(ptr);
|
||||||
|
float* src = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_src_vec, 0);
|
||||||
|
float* dst = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_dst_vec, 0);
|
||||||
|
|
||||||
|
int off_src = src_offset * 2;
|
||||||
|
int off_dst = dst_offset * 2;
|
||||||
|
|
||||||
|
|
||||||
|
for (int end = off_src + cnt * 2; off_src < end; off_src += 2, off_dst += 2)
|
||||||
|
matrix4_proj2D(m, (src + off_src), (dst + off_dst));
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_dst_vec, dst, 0);
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_src_vec, src, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static float someRandomEpsilon = 1.0f / (1 << 11);
|
static float someRandomEpsilon = 1.0f / (1 << 11);
|
||||||
|
|
||||||
void JNI(addDepthOffset)(JNIEnv* env, jclass* clazz, jlong ptr, jint delta)
|
void JNI(addDepthOffset)(JNIEnv* env, jclass* clazz, jlong ptr, jint delta)
|
||||||
@@ -485,3 +536,15 @@ matrix4_proj(float* mat, float* vec)
|
|||||||
vec[1] = y;
|
vec[1] = y;
|
||||||
vec[2] = z;
|
vec[2] = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
matrix4_proj2D(float* mat, float* vec, float *out)
|
||||||
|
{
|
||||||
|
|
||||||
|
float inv_w = 1.0f / (vec[0] * mat[M30] + vec[1] * mat[M31] + mat[M33]);
|
||||||
|
float x = (vec[0] * mat[M00] + vec[1] * mat[M01] + mat[M03]) * inv_w;
|
||||||
|
float y = (vec[0] * mat[M10] + vec[1] * mat[M11] + mat[M13]) * inv_w;
|
||||||
|
|
||||||
|
out[0] = x;
|
||||||
|
out[1] = y;
|
||||||
|
}
|
||||||
523
jni/jni/jni-headers/classfile_constants.h
Normal file
@@ -0,0 +1,523 @@
|
|||||||
|
/*
|
||||||
|
* %W% %E%
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CLASSFILE_CONSTANTS_H
|
||||||
|
#define CLASSFILE_CONSTANTS_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Flags */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JVM_ACC_PUBLIC = 0x0001,
|
||||||
|
JVM_ACC_PRIVATE = 0x0002,
|
||||||
|
JVM_ACC_PROTECTED = 0x0004,
|
||||||
|
JVM_ACC_STATIC = 0x0008,
|
||||||
|
JVM_ACC_FINAL = 0x0010,
|
||||||
|
JVM_ACC_SYNCHRONIZED = 0x0020,
|
||||||
|
JVM_ACC_SUPER = 0x0020,
|
||||||
|
JVM_ACC_VOLATILE = 0x0040,
|
||||||
|
JVM_ACC_BRIDGE = 0x0040,
|
||||||
|
JVM_ACC_TRANSIENT = 0x0080,
|
||||||
|
JVM_ACC_VARARGS = 0x0080,
|
||||||
|
JVM_ACC_NATIVE = 0x0100,
|
||||||
|
JVM_ACC_INTERFACE = 0x0200,
|
||||||
|
JVM_ACC_ABSTRACT = 0x0400,
|
||||||
|
JVM_ACC_STRICT = 0x0800,
|
||||||
|
JVM_ACC_SYNTHETIC = 0x1000,
|
||||||
|
JVM_ACC_ANNOTATION = 0x2000,
|
||||||
|
JVM_ACC_ENUM = 0x4000
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Used in newarray instruction. */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JVM_T_BOOLEAN = 4,
|
||||||
|
JVM_T_CHAR = 5,
|
||||||
|
JVM_T_FLOAT = 6,
|
||||||
|
JVM_T_DOUBLE = 7,
|
||||||
|
JVM_T_BYTE = 8,
|
||||||
|
JVM_T_SHORT = 9,
|
||||||
|
JVM_T_INT = 10,
|
||||||
|
JVM_T_LONG = 11
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Constant Pool Entries */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JVM_CONSTANT_Utf8 = 1,
|
||||||
|
JVM_CONSTANT_Unicode = 2, /* unused */
|
||||||
|
JVM_CONSTANT_Integer = 3,
|
||||||
|
JVM_CONSTANT_Float = 4,
|
||||||
|
JVM_CONSTANT_Long = 5,
|
||||||
|
JVM_CONSTANT_Double = 6,
|
||||||
|
JVM_CONSTANT_Class = 7,
|
||||||
|
JVM_CONSTANT_String = 8,
|
||||||
|
JVM_CONSTANT_Fieldref = 9,
|
||||||
|
JVM_CONSTANT_Methodref = 10,
|
||||||
|
JVM_CONSTANT_InterfaceMethodref = 11,
|
||||||
|
JVM_CONSTANT_NameAndType = 12
|
||||||
|
};
|
||||||
|
|
||||||
|
/* StackMapTable type item numbers */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JVM_ITEM_Top = 0,
|
||||||
|
JVM_ITEM_Integer = 1,
|
||||||
|
JVM_ITEM_Float = 2,
|
||||||
|
JVM_ITEM_Double = 3,
|
||||||
|
JVM_ITEM_Long = 4,
|
||||||
|
JVM_ITEM_Null = 5,
|
||||||
|
JVM_ITEM_UninitializedThis = 6,
|
||||||
|
JVM_ITEM_Object = 7,
|
||||||
|
JVM_ITEM_Uninitialized = 8
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Type signatures */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JVM_SIGNATURE_ARRAY = '[',
|
||||||
|
JVM_SIGNATURE_BYTE = 'B',
|
||||||
|
JVM_SIGNATURE_CHAR = 'C',
|
||||||
|
JVM_SIGNATURE_CLASS = 'L',
|
||||||
|
JVM_SIGNATURE_ENDCLASS = ';',
|
||||||
|
JVM_SIGNATURE_ENUM = 'E',
|
||||||
|
JVM_SIGNATURE_FLOAT = 'F',
|
||||||
|
JVM_SIGNATURE_DOUBLE = 'D',
|
||||||
|
JVM_SIGNATURE_FUNC = '(',
|
||||||
|
JVM_SIGNATURE_ENDFUNC = ')',
|
||||||
|
JVM_SIGNATURE_INT = 'I',
|
||||||
|
JVM_SIGNATURE_LONG = 'J',
|
||||||
|
JVM_SIGNATURE_SHORT = 'S',
|
||||||
|
JVM_SIGNATURE_VOID = 'V',
|
||||||
|
JVM_SIGNATURE_BOOLEAN = 'Z'
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Opcodes */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JVM_OPC_nop = 0,
|
||||||
|
JVM_OPC_aconst_null = 1,
|
||||||
|
JVM_OPC_iconst_m1 = 2,
|
||||||
|
JVM_OPC_iconst_0 = 3,
|
||||||
|
JVM_OPC_iconst_1 = 4,
|
||||||
|
JVM_OPC_iconst_2 = 5,
|
||||||
|
JVM_OPC_iconst_3 = 6,
|
||||||
|
JVM_OPC_iconst_4 = 7,
|
||||||
|
JVM_OPC_iconst_5 = 8,
|
||||||
|
JVM_OPC_lconst_0 = 9,
|
||||||
|
JVM_OPC_lconst_1 = 10,
|
||||||
|
JVM_OPC_fconst_0 = 11,
|
||||||
|
JVM_OPC_fconst_1 = 12,
|
||||||
|
JVM_OPC_fconst_2 = 13,
|
||||||
|
JVM_OPC_dconst_0 = 14,
|
||||||
|
JVM_OPC_dconst_1 = 15,
|
||||||
|
JVM_OPC_bipush = 16,
|
||||||
|
JVM_OPC_sipush = 17,
|
||||||
|
JVM_OPC_ldc = 18,
|
||||||
|
JVM_OPC_ldc_w = 19,
|
||||||
|
JVM_OPC_ldc2_w = 20,
|
||||||
|
JVM_OPC_iload = 21,
|
||||||
|
JVM_OPC_lload = 22,
|
||||||
|
JVM_OPC_fload = 23,
|
||||||
|
JVM_OPC_dload = 24,
|
||||||
|
JVM_OPC_aload = 25,
|
||||||
|
JVM_OPC_iload_0 = 26,
|
||||||
|
JVM_OPC_iload_1 = 27,
|
||||||
|
JVM_OPC_iload_2 = 28,
|
||||||
|
JVM_OPC_iload_3 = 29,
|
||||||
|
JVM_OPC_lload_0 = 30,
|
||||||
|
JVM_OPC_lload_1 = 31,
|
||||||
|
JVM_OPC_lload_2 = 32,
|
||||||
|
JVM_OPC_lload_3 = 33,
|
||||||
|
JVM_OPC_fload_0 = 34,
|
||||||
|
JVM_OPC_fload_1 = 35,
|
||||||
|
JVM_OPC_fload_2 = 36,
|
||||||
|
JVM_OPC_fload_3 = 37,
|
||||||
|
JVM_OPC_dload_0 = 38,
|
||||||
|
JVM_OPC_dload_1 = 39,
|
||||||
|
JVM_OPC_dload_2 = 40,
|
||||||
|
JVM_OPC_dload_3 = 41,
|
||||||
|
JVM_OPC_aload_0 = 42,
|
||||||
|
JVM_OPC_aload_1 = 43,
|
||||||
|
JVM_OPC_aload_2 = 44,
|
||||||
|
JVM_OPC_aload_3 = 45,
|
||||||
|
JVM_OPC_iaload = 46,
|
||||||
|
JVM_OPC_laload = 47,
|
||||||
|
JVM_OPC_faload = 48,
|
||||||
|
JVM_OPC_daload = 49,
|
||||||
|
JVM_OPC_aaload = 50,
|
||||||
|
JVM_OPC_baload = 51,
|
||||||
|
JVM_OPC_caload = 52,
|
||||||
|
JVM_OPC_saload = 53,
|
||||||
|
JVM_OPC_istore = 54,
|
||||||
|
JVM_OPC_lstore = 55,
|
||||||
|
JVM_OPC_fstore = 56,
|
||||||
|
JVM_OPC_dstore = 57,
|
||||||
|
JVM_OPC_astore = 58,
|
||||||
|
JVM_OPC_istore_0 = 59,
|
||||||
|
JVM_OPC_istore_1 = 60,
|
||||||
|
JVM_OPC_istore_2 = 61,
|
||||||
|
JVM_OPC_istore_3 = 62,
|
||||||
|
JVM_OPC_lstore_0 = 63,
|
||||||
|
JVM_OPC_lstore_1 = 64,
|
||||||
|
JVM_OPC_lstore_2 = 65,
|
||||||
|
JVM_OPC_lstore_3 = 66,
|
||||||
|
JVM_OPC_fstore_0 = 67,
|
||||||
|
JVM_OPC_fstore_1 = 68,
|
||||||
|
JVM_OPC_fstore_2 = 69,
|
||||||
|
JVM_OPC_fstore_3 = 70,
|
||||||
|
JVM_OPC_dstore_0 = 71,
|
||||||
|
JVM_OPC_dstore_1 = 72,
|
||||||
|
JVM_OPC_dstore_2 = 73,
|
||||||
|
JVM_OPC_dstore_3 = 74,
|
||||||
|
JVM_OPC_astore_0 = 75,
|
||||||
|
JVM_OPC_astore_1 = 76,
|
||||||
|
JVM_OPC_astore_2 = 77,
|
||||||
|
JVM_OPC_astore_3 = 78,
|
||||||
|
JVM_OPC_iastore = 79,
|
||||||
|
JVM_OPC_lastore = 80,
|
||||||
|
JVM_OPC_fastore = 81,
|
||||||
|
JVM_OPC_dastore = 82,
|
||||||
|
JVM_OPC_aastore = 83,
|
||||||
|
JVM_OPC_bastore = 84,
|
||||||
|
JVM_OPC_castore = 85,
|
||||||
|
JVM_OPC_sastore = 86,
|
||||||
|
JVM_OPC_pop = 87,
|
||||||
|
JVM_OPC_pop2 = 88,
|
||||||
|
JVM_OPC_dup = 89,
|
||||||
|
JVM_OPC_dup_x1 = 90,
|
||||||
|
JVM_OPC_dup_x2 = 91,
|
||||||
|
JVM_OPC_dup2 = 92,
|
||||||
|
JVM_OPC_dup2_x1 = 93,
|
||||||
|
JVM_OPC_dup2_x2 = 94,
|
||||||
|
JVM_OPC_swap = 95,
|
||||||
|
JVM_OPC_iadd = 96,
|
||||||
|
JVM_OPC_ladd = 97,
|
||||||
|
JVM_OPC_fadd = 98,
|
||||||
|
JVM_OPC_dadd = 99,
|
||||||
|
JVM_OPC_isub = 100,
|
||||||
|
JVM_OPC_lsub = 101,
|
||||||
|
JVM_OPC_fsub = 102,
|
||||||
|
JVM_OPC_dsub = 103,
|
||||||
|
JVM_OPC_imul = 104,
|
||||||
|
JVM_OPC_lmul = 105,
|
||||||
|
JVM_OPC_fmul = 106,
|
||||||
|
JVM_OPC_dmul = 107,
|
||||||
|
JVM_OPC_idiv = 108,
|
||||||
|
JVM_OPC_ldiv = 109,
|
||||||
|
JVM_OPC_fdiv = 110,
|
||||||
|
JVM_OPC_ddiv = 111,
|
||||||
|
JVM_OPC_irem = 112,
|
||||||
|
JVM_OPC_lrem = 113,
|
||||||
|
JVM_OPC_frem = 114,
|
||||||
|
JVM_OPC_drem = 115,
|
||||||
|
JVM_OPC_ineg = 116,
|
||||||
|
JVM_OPC_lneg = 117,
|
||||||
|
JVM_OPC_fneg = 118,
|
||||||
|
JVM_OPC_dneg = 119,
|
||||||
|
JVM_OPC_ishl = 120,
|
||||||
|
JVM_OPC_lshl = 121,
|
||||||
|
JVM_OPC_ishr = 122,
|
||||||
|
JVM_OPC_lshr = 123,
|
||||||
|
JVM_OPC_iushr = 124,
|
||||||
|
JVM_OPC_lushr = 125,
|
||||||
|
JVM_OPC_iand = 126,
|
||||||
|
JVM_OPC_land = 127,
|
||||||
|
JVM_OPC_ior = 128,
|
||||||
|
JVM_OPC_lor = 129,
|
||||||
|
JVM_OPC_ixor = 130,
|
||||||
|
JVM_OPC_lxor = 131,
|
||||||
|
JVM_OPC_iinc = 132,
|
||||||
|
JVM_OPC_i2l = 133,
|
||||||
|
JVM_OPC_i2f = 134,
|
||||||
|
JVM_OPC_i2d = 135,
|
||||||
|
JVM_OPC_l2i = 136,
|
||||||
|
JVM_OPC_l2f = 137,
|
||||||
|
JVM_OPC_l2d = 138,
|
||||||
|
JVM_OPC_f2i = 139,
|
||||||
|
JVM_OPC_f2l = 140,
|
||||||
|
JVM_OPC_f2d = 141,
|
||||||
|
JVM_OPC_d2i = 142,
|
||||||
|
JVM_OPC_d2l = 143,
|
||||||
|
JVM_OPC_d2f = 144,
|
||||||
|
JVM_OPC_i2b = 145,
|
||||||
|
JVM_OPC_i2c = 146,
|
||||||
|
JVM_OPC_i2s = 147,
|
||||||
|
JVM_OPC_lcmp = 148,
|
||||||
|
JVM_OPC_fcmpl = 149,
|
||||||
|
JVM_OPC_fcmpg = 150,
|
||||||
|
JVM_OPC_dcmpl = 151,
|
||||||
|
JVM_OPC_dcmpg = 152,
|
||||||
|
JVM_OPC_ifeq = 153,
|
||||||
|
JVM_OPC_ifne = 154,
|
||||||
|
JVM_OPC_iflt = 155,
|
||||||
|
JVM_OPC_ifge = 156,
|
||||||
|
JVM_OPC_ifgt = 157,
|
||||||
|
JVM_OPC_ifle = 158,
|
||||||
|
JVM_OPC_if_icmpeq = 159,
|
||||||
|
JVM_OPC_if_icmpne = 160,
|
||||||
|
JVM_OPC_if_icmplt = 161,
|
||||||
|
JVM_OPC_if_icmpge = 162,
|
||||||
|
JVM_OPC_if_icmpgt = 163,
|
||||||
|
JVM_OPC_if_icmple = 164,
|
||||||
|
JVM_OPC_if_acmpeq = 165,
|
||||||
|
JVM_OPC_if_acmpne = 166,
|
||||||
|
JVM_OPC_goto = 167,
|
||||||
|
JVM_OPC_jsr = 168,
|
||||||
|
JVM_OPC_ret = 169,
|
||||||
|
JVM_OPC_tableswitch = 170,
|
||||||
|
JVM_OPC_lookupswitch = 171,
|
||||||
|
JVM_OPC_ireturn = 172,
|
||||||
|
JVM_OPC_lreturn = 173,
|
||||||
|
JVM_OPC_freturn = 174,
|
||||||
|
JVM_OPC_dreturn = 175,
|
||||||
|
JVM_OPC_areturn = 176,
|
||||||
|
JVM_OPC_return = 177,
|
||||||
|
JVM_OPC_getstatic = 178,
|
||||||
|
JVM_OPC_putstatic = 179,
|
||||||
|
JVM_OPC_getfield = 180,
|
||||||
|
JVM_OPC_putfield = 181,
|
||||||
|
JVM_OPC_invokevirtual = 182,
|
||||||
|
JVM_OPC_invokespecial = 183,
|
||||||
|
JVM_OPC_invokestatic = 184,
|
||||||
|
JVM_OPC_invokeinterface = 185,
|
||||||
|
JVM_OPC_xxxunusedxxx = 186,
|
||||||
|
JVM_OPC_new = 187,
|
||||||
|
JVM_OPC_newarray = 188,
|
||||||
|
JVM_OPC_anewarray = 189,
|
||||||
|
JVM_OPC_arraylength = 190,
|
||||||
|
JVM_OPC_athrow = 191,
|
||||||
|
JVM_OPC_checkcast = 192,
|
||||||
|
JVM_OPC_instanceof = 193,
|
||||||
|
JVM_OPC_monitorenter = 194,
|
||||||
|
JVM_OPC_monitorexit = 195,
|
||||||
|
JVM_OPC_wide = 196,
|
||||||
|
JVM_OPC_multianewarray = 197,
|
||||||
|
JVM_OPC_ifnull = 198,
|
||||||
|
JVM_OPC_ifnonnull = 199,
|
||||||
|
JVM_OPC_goto_w = 200,
|
||||||
|
JVM_OPC_jsr_w = 201,
|
||||||
|
JVM_OPC_MAX = 201
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Opcode length initializer, use with something like:
|
||||||
|
* unsigned char opcode_length[JVM_OPC_MAX+1] = JVM_OPCODE_LENGTH_INITIALIZER;
|
||||||
|
*/
|
||||||
|
#define JVM_OPCODE_LENGTH_INITIALIZER { \
|
||||||
|
1, /* nop */ \
|
||||||
|
1, /* aconst_null */ \
|
||||||
|
1, /* iconst_m1 */ \
|
||||||
|
1, /* iconst_0 */ \
|
||||||
|
1, /* iconst_1 */ \
|
||||||
|
1, /* iconst_2 */ \
|
||||||
|
1, /* iconst_3 */ \
|
||||||
|
1, /* iconst_4 */ \
|
||||||
|
1, /* iconst_5 */ \
|
||||||
|
1, /* lconst_0 */ \
|
||||||
|
1, /* lconst_1 */ \
|
||||||
|
1, /* fconst_0 */ \
|
||||||
|
1, /* fconst_1 */ \
|
||||||
|
1, /* fconst_2 */ \
|
||||||
|
1, /* dconst_0 */ \
|
||||||
|
1, /* dconst_1 */ \
|
||||||
|
2, /* bipush */ \
|
||||||
|
3, /* sipush */ \
|
||||||
|
2, /* ldc */ \
|
||||||
|
3, /* ldc_w */ \
|
||||||
|
3, /* ldc2_w */ \
|
||||||
|
2, /* iload */ \
|
||||||
|
2, /* lload */ \
|
||||||
|
2, /* fload */ \
|
||||||
|
2, /* dload */ \
|
||||||
|
2, /* aload */ \
|
||||||
|
1, /* iload_0 */ \
|
||||||
|
1, /* iload_1 */ \
|
||||||
|
1, /* iload_2 */ \
|
||||||
|
1, /* iload_3 */ \
|
||||||
|
1, /* lload_0 */ \
|
||||||
|
1, /* lload_1 */ \
|
||||||
|
1, /* lload_2 */ \
|
||||||
|
1, /* lload_3 */ \
|
||||||
|
1, /* fload_0 */ \
|
||||||
|
1, /* fload_1 */ \
|
||||||
|
1, /* fload_2 */ \
|
||||||
|
1, /* fload_3 */ \
|
||||||
|
1, /* dload_0 */ \
|
||||||
|
1, /* dload_1 */ \
|
||||||
|
1, /* dload_2 */ \
|
||||||
|
1, /* dload_3 */ \
|
||||||
|
1, /* aload_0 */ \
|
||||||
|
1, /* aload_1 */ \
|
||||||
|
1, /* aload_2 */ \
|
||||||
|
1, /* aload_3 */ \
|
||||||
|
1, /* iaload */ \
|
||||||
|
1, /* laload */ \
|
||||||
|
1, /* faload */ \
|
||||||
|
1, /* daload */ \
|
||||||
|
1, /* aaload */ \
|
||||||
|
1, /* baload */ \
|
||||||
|
1, /* caload */ \
|
||||||
|
1, /* saload */ \
|
||||||
|
2, /* istore */ \
|
||||||
|
2, /* lstore */ \
|
||||||
|
2, /* fstore */ \
|
||||||
|
2, /* dstore */ \
|
||||||
|
2, /* astore */ \
|
||||||
|
1, /* istore_0 */ \
|
||||||
|
1, /* istore_1 */ \
|
||||||
|
1, /* istore_2 */ \
|
||||||
|
1, /* istore_3 */ \
|
||||||
|
1, /* lstore_0 */ \
|
||||||
|
1, /* lstore_1 */ \
|
||||||
|
1, /* lstore_2 */ \
|
||||||
|
1, /* lstore_3 */ \
|
||||||
|
1, /* fstore_0 */ \
|
||||||
|
1, /* fstore_1 */ \
|
||||||
|
1, /* fstore_2 */ \
|
||||||
|
1, /* fstore_3 */ \
|
||||||
|
1, /* dstore_0 */ \
|
||||||
|
1, /* dstore_1 */ \
|
||||||
|
1, /* dstore_2 */ \
|
||||||
|
1, /* dstore_3 */ \
|
||||||
|
1, /* astore_0 */ \
|
||||||
|
1, /* astore_1 */ \
|
||||||
|
1, /* astore_2 */ \
|
||||||
|
1, /* astore_3 */ \
|
||||||
|
1, /* iastore */ \
|
||||||
|
1, /* lastore */ \
|
||||||
|
1, /* fastore */ \
|
||||||
|
1, /* dastore */ \
|
||||||
|
1, /* aastore */ \
|
||||||
|
1, /* bastore */ \
|
||||||
|
1, /* castore */ \
|
||||||
|
1, /* sastore */ \
|
||||||
|
1, /* pop */ \
|
||||||
|
1, /* pop2 */ \
|
||||||
|
1, /* dup */ \
|
||||||
|
1, /* dup_x1 */ \
|
||||||
|
1, /* dup_x2 */ \
|
||||||
|
1, /* dup2 */ \
|
||||||
|
1, /* dup2_x1 */ \
|
||||||
|
1, /* dup2_x2 */ \
|
||||||
|
1, /* swap */ \
|
||||||
|
1, /* iadd */ \
|
||||||
|
1, /* ladd */ \
|
||||||
|
1, /* fadd */ \
|
||||||
|
1, /* dadd */ \
|
||||||
|
1, /* isub */ \
|
||||||
|
1, /* lsub */ \
|
||||||
|
1, /* fsub */ \
|
||||||
|
1, /* dsub */ \
|
||||||
|
1, /* imul */ \
|
||||||
|
1, /* lmul */ \
|
||||||
|
1, /* fmul */ \
|
||||||
|
1, /* dmul */ \
|
||||||
|
1, /* idiv */ \
|
||||||
|
1, /* ldiv */ \
|
||||||
|
1, /* fdiv */ \
|
||||||
|
1, /* ddiv */ \
|
||||||
|
1, /* irem */ \
|
||||||
|
1, /* lrem */ \
|
||||||
|
1, /* frem */ \
|
||||||
|
1, /* drem */ \
|
||||||
|
1, /* ineg */ \
|
||||||
|
1, /* lneg */ \
|
||||||
|
1, /* fneg */ \
|
||||||
|
1, /* dneg */ \
|
||||||
|
1, /* ishl */ \
|
||||||
|
1, /* lshl */ \
|
||||||
|
1, /* ishr */ \
|
||||||
|
1, /* lshr */ \
|
||||||
|
1, /* iushr */ \
|
||||||
|
1, /* lushr */ \
|
||||||
|
1, /* iand */ \
|
||||||
|
1, /* land */ \
|
||||||
|
1, /* ior */ \
|
||||||
|
1, /* lor */ \
|
||||||
|
1, /* ixor */ \
|
||||||
|
1, /* lxor */ \
|
||||||
|
3, /* iinc */ \
|
||||||
|
1, /* i2l */ \
|
||||||
|
1, /* i2f */ \
|
||||||
|
1, /* i2d */ \
|
||||||
|
1, /* l2i */ \
|
||||||
|
1, /* l2f */ \
|
||||||
|
1, /* l2d */ \
|
||||||
|
1, /* f2i */ \
|
||||||
|
1, /* f2l */ \
|
||||||
|
1, /* f2d */ \
|
||||||
|
1, /* d2i */ \
|
||||||
|
1, /* d2l */ \
|
||||||
|
1, /* d2f */ \
|
||||||
|
1, /* i2b */ \
|
||||||
|
1, /* i2c */ \
|
||||||
|
1, /* i2s */ \
|
||||||
|
1, /* lcmp */ \
|
||||||
|
1, /* fcmpl */ \
|
||||||
|
1, /* fcmpg */ \
|
||||||
|
1, /* dcmpl */ \
|
||||||
|
1, /* dcmpg */ \
|
||||||
|
3, /* ifeq */ \
|
||||||
|
3, /* ifne */ \
|
||||||
|
3, /* iflt */ \
|
||||||
|
3, /* ifge */ \
|
||||||
|
3, /* ifgt */ \
|
||||||
|
3, /* ifle */ \
|
||||||
|
3, /* if_icmpeq */ \
|
||||||
|
3, /* if_icmpne */ \
|
||||||
|
3, /* if_icmplt */ \
|
||||||
|
3, /* if_icmpge */ \
|
||||||
|
3, /* if_icmpgt */ \
|
||||||
|
3, /* if_icmple */ \
|
||||||
|
3, /* if_acmpeq */ \
|
||||||
|
3, /* if_acmpne */ \
|
||||||
|
3, /* goto */ \
|
||||||
|
3, /* jsr */ \
|
||||||
|
2, /* ret */ \
|
||||||
|
99, /* tableswitch */ \
|
||||||
|
99, /* lookupswitch */ \
|
||||||
|
1, /* ireturn */ \
|
||||||
|
1, /* lreturn */ \
|
||||||
|
1, /* freturn */ \
|
||||||
|
1, /* dreturn */ \
|
||||||
|
1, /* areturn */ \
|
||||||
|
1, /* return */ \
|
||||||
|
3, /* getstatic */ \
|
||||||
|
3, /* putstatic */ \
|
||||||
|
3, /* getfield */ \
|
||||||
|
3, /* putfield */ \
|
||||||
|
3, /* invokevirtual */ \
|
||||||
|
3, /* invokespecial */ \
|
||||||
|
3, /* invokestatic */ \
|
||||||
|
5, /* invokeinterface */ \
|
||||||
|
0, /* xxxunusedxxx */ \
|
||||||
|
3, /* new */ \
|
||||||
|
2, /* newarray */ \
|
||||||
|
3, /* anewarray */ \
|
||||||
|
1, /* arraylength */ \
|
||||||
|
1, /* athrow */ \
|
||||||
|
3, /* checkcast */ \
|
||||||
|
3, /* instanceof */ \
|
||||||
|
1, /* monitorenter */ \
|
||||||
|
1, /* monitorexit */ \
|
||||||
|
0, /* wide */ \
|
||||||
|
4, /* multianewarray */ \
|
||||||
|
3, /* ifnull */ \
|
||||||
|
3, /* ifnonnull */ \
|
||||||
|
5, /* goto_w */ \
|
||||||
|
5 /* jsr_w */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* CLASSFILE_CONSTANTS */
|
||||||
278
jni/jni/jni-headers/jawt.h
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
/*
|
||||||
|
* %W% %E%
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _JAVASOFT_JAWT_H_
|
||||||
|
#define _JAVASOFT_JAWT_H_
|
||||||
|
|
||||||
|
#include "jni.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AWT native interface (new in JDK 1.3)
|
||||||
|
*
|
||||||
|
* The AWT native interface allows a native C or C++ application a means
|
||||||
|
* by which to access native structures in AWT. This is to facilitate moving
|
||||||
|
* legacy C and C++ applications to Java and to target the needs of the
|
||||||
|
* community who, at present, wish to do their own native rendering to canvases
|
||||||
|
* for performance reasons. Standard extensions such as Java3D also require a
|
||||||
|
* means to access the underlying native data structures of AWT.
|
||||||
|
*
|
||||||
|
* There may be future extensions to this API depending on demand.
|
||||||
|
*
|
||||||
|
* A VM does not have to implement this API in order to pass the JCK.
|
||||||
|
* It is recommended, however, that this API is implemented on VMs that support
|
||||||
|
* standard extensions, such as Java3D.
|
||||||
|
*
|
||||||
|
* Since this is a native API, any program which uses it cannot be considered
|
||||||
|
* 100% pure java.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AWT Native Drawing Surface (JAWT_DrawingSurface).
|
||||||
|
*
|
||||||
|
* For each platform, there is a native drawing surface structure. This
|
||||||
|
* platform-specific structure can be found in jawt_md.h. It is recommended
|
||||||
|
* that additional platforms follow the same model. It is also recommended
|
||||||
|
* that VMs on Win32 and Solaris support the existing structures in jawt_md.h.
|
||||||
|
*
|
||||||
|
*******************
|
||||||
|
* EXAMPLE OF USAGE:
|
||||||
|
*******************
|
||||||
|
*
|
||||||
|
* In Win32, a programmer wishes to access the HWND of a canvas to perform
|
||||||
|
* native rendering into it. The programmer has declared the paint() method
|
||||||
|
* for their canvas subclass to be native:
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* MyCanvas.java:
|
||||||
|
*
|
||||||
|
* import java.awt.*;
|
||||||
|
*
|
||||||
|
* public class MyCanvas extends Canvas {
|
||||||
|
*
|
||||||
|
* static {
|
||||||
|
* System.loadLibrary("mylib");
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* public native void paint(Graphics g);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* myfile.c:
|
||||||
|
*
|
||||||
|
* #include "jawt_md.h"
|
||||||
|
* #include <assert.h>
|
||||||
|
*
|
||||||
|
* JNIEXPORT void JNICALL
|
||||||
|
* Java_MyCanvas_paint(JNIEnv* env, jobject canvas, jobject graphics)
|
||||||
|
* {
|
||||||
|
* JAWT awt;
|
||||||
|
* JAWT_DrawingSurface* ds;
|
||||||
|
* JAWT_DrawingSurfaceInfo* dsi;
|
||||||
|
* JAWT_Win32DrawingSurfaceInfo* dsi_win;
|
||||||
|
* jboolean result;
|
||||||
|
* jint lock;
|
||||||
|
*
|
||||||
|
* // Get the AWT
|
||||||
|
* awt.version = JAWT_VERSION_1_3;
|
||||||
|
* result = JAWT_GetAWT(env, &awt);
|
||||||
|
* assert(result != JNI_FALSE);
|
||||||
|
*
|
||||||
|
* // Get the drawing surface
|
||||||
|
* ds = awt.GetDrawingSurface(env, canvas);
|
||||||
|
* assert(ds != NULL);
|
||||||
|
*
|
||||||
|
* // Lock the drawing surface
|
||||||
|
* lock = ds->Lock(ds);
|
||||||
|
* assert((lock & JAWT_LOCK_ERROR) == 0);
|
||||||
|
*
|
||||||
|
* // Get the drawing surface info
|
||||||
|
* dsi = ds->GetDrawingSurfaceInfo(ds);
|
||||||
|
*
|
||||||
|
* // Get the platform-specific drawing info
|
||||||
|
* dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
|
||||||
|
*
|
||||||
|
* //////////////////////////////
|
||||||
|
* // !!! DO PAINTING HERE !!! //
|
||||||
|
* //////////////////////////////
|
||||||
|
*
|
||||||
|
* // Free the drawing surface info
|
||||||
|
* ds->FreeDrawingSurfaceInfo(dsi);
|
||||||
|
*
|
||||||
|
* // Unlock the drawing surface
|
||||||
|
* ds->Unlock(ds);
|
||||||
|
*
|
||||||
|
* // Free the drawing surface
|
||||||
|
* awt.FreeDrawingSurface(ds);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JAWT_Rectangle
|
||||||
|
* Structure for a native rectangle.
|
||||||
|
*/
|
||||||
|
typedef struct jawt_Rectangle {
|
||||||
|
jint x;
|
||||||
|
jint y;
|
||||||
|
jint width;
|
||||||
|
jint height;
|
||||||
|
} JAWT_Rectangle;
|
||||||
|
|
||||||
|
struct jawt_DrawingSurface;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JAWT_DrawingSurfaceInfo
|
||||||
|
* Structure for containing the underlying drawing information of a component.
|
||||||
|
*/
|
||||||
|
typedef struct jawt_DrawingSurfaceInfo {
|
||||||
|
/*
|
||||||
|
* Pointer to the platform-specific information. This can be safely
|
||||||
|
* cast to a JAWT_Win32DrawingSurfaceInfo on Windows or a
|
||||||
|
* JAWT_X11DrawingSurfaceInfo on Solaris. See jawt_md.h for details.
|
||||||
|
*/
|
||||||
|
void* platformInfo;
|
||||||
|
/* Cached pointer to the underlying drawing surface */
|
||||||
|
struct jawt_DrawingSurface* ds;
|
||||||
|
/* Bounding rectangle of the drawing surface */
|
||||||
|
JAWT_Rectangle bounds;
|
||||||
|
/* Number of rectangles in the clip */
|
||||||
|
jint clipSize;
|
||||||
|
/* Clip rectangle array */
|
||||||
|
JAWT_Rectangle* clip;
|
||||||
|
} JAWT_DrawingSurfaceInfo;
|
||||||
|
|
||||||
|
#define JAWT_LOCK_ERROR 0x00000001
|
||||||
|
#define JAWT_LOCK_CLIP_CHANGED 0x00000002
|
||||||
|
#define JAWT_LOCK_BOUNDS_CHANGED 0x00000004
|
||||||
|
#define JAWT_LOCK_SURFACE_CHANGED 0x00000008
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JAWT_DrawingSurface
|
||||||
|
* Structure for containing the underlying drawing information of a component.
|
||||||
|
* All operations on a JAWT_DrawingSurface MUST be performed from the same
|
||||||
|
* thread as the call to GetDrawingSurface.
|
||||||
|
*/
|
||||||
|
typedef struct jawt_DrawingSurface {
|
||||||
|
/*
|
||||||
|
* Cached reference to the Java environment of the calling thread.
|
||||||
|
* If Lock(), Unlock(), GetDrawingSurfaceInfo() or
|
||||||
|
* FreeDrawingSurfaceInfo() are called from a different thread,
|
||||||
|
* this data member should be set before calling those functions.
|
||||||
|
*/
|
||||||
|
JNIEnv* env;
|
||||||
|
/* Cached reference to the target object */
|
||||||
|
jobject target;
|
||||||
|
/*
|
||||||
|
* Lock the surface of the target component for native rendering.
|
||||||
|
* When finished drawing, the surface must be unlocked with
|
||||||
|
* Unlock(). This function returns a bitmask with one or more of the
|
||||||
|
* following values:
|
||||||
|
*
|
||||||
|
* JAWT_LOCK_ERROR - When an error has occurred and the surface could not
|
||||||
|
* be locked.
|
||||||
|
*
|
||||||
|
* JAWT_LOCK_CLIP_CHANGED - When the clip region has changed.
|
||||||
|
*
|
||||||
|
* JAWT_LOCK_BOUNDS_CHANGED - When the bounds of the surface have changed.
|
||||||
|
*
|
||||||
|
* JAWT_LOCK_SURFACE_CHANGED - When the surface itself has changed
|
||||||
|
*/
|
||||||
|
jint (JNICALL *Lock)
|
||||||
|
(struct jawt_DrawingSurface* ds);
|
||||||
|
/*
|
||||||
|
* Get the drawing surface info.
|
||||||
|
* The value returned may be cached, but the values may change if
|
||||||
|
* additional calls to Lock() or Unlock() are made.
|
||||||
|
* Lock() must be called before this can return a valid value.
|
||||||
|
* Returns NULL if an error has occurred.
|
||||||
|
* When finished with the returned value, FreeDrawingSurfaceInfo must be
|
||||||
|
* called.
|
||||||
|
*/
|
||||||
|
JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo)
|
||||||
|
(struct jawt_DrawingSurface* ds);
|
||||||
|
/*
|
||||||
|
* Free the drawing surface info.
|
||||||
|
*/
|
||||||
|
void (JNICALL *FreeDrawingSurfaceInfo)
|
||||||
|
(JAWT_DrawingSurfaceInfo* dsi);
|
||||||
|
/*
|
||||||
|
* Unlock the drawing surface of the target component for native rendering.
|
||||||
|
*/
|
||||||
|
void (JNICALL *Unlock)
|
||||||
|
(struct jawt_DrawingSurface* ds);
|
||||||
|
} JAWT_DrawingSurface;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JAWT
|
||||||
|
* Structure for containing native AWT functions.
|
||||||
|
*/
|
||||||
|
typedef struct jawt {
|
||||||
|
/*
|
||||||
|
* Version of this structure. This must always be set before
|
||||||
|
* calling JAWT_GetAWT()
|
||||||
|
*/
|
||||||
|
jint version;
|
||||||
|
/*
|
||||||
|
* Return a drawing surface from a target jobject. This value
|
||||||
|
* may be cached.
|
||||||
|
* Returns NULL if an error has occurred.
|
||||||
|
* Target must be a java.awt.Component (should be a Canvas
|
||||||
|
* or Window for native rendering).
|
||||||
|
* FreeDrawingSurface() must be called when finished with the
|
||||||
|
* returned JAWT_DrawingSurface.
|
||||||
|
*/
|
||||||
|
JAWT_DrawingSurface* (JNICALL *GetDrawingSurface)
|
||||||
|
(JNIEnv* env, jobject target);
|
||||||
|
/*
|
||||||
|
* Free the drawing surface allocated in GetDrawingSurface.
|
||||||
|
*/
|
||||||
|
void (JNICALL *FreeDrawingSurface)
|
||||||
|
(JAWT_DrawingSurface* ds);
|
||||||
|
/*
|
||||||
|
* Since 1.4
|
||||||
|
* Locks the entire AWT for synchronization purposes
|
||||||
|
*/
|
||||||
|
void (JNICALL *Lock)(JNIEnv* env);
|
||||||
|
/*
|
||||||
|
* Since 1.4
|
||||||
|
* Unlocks the entire AWT for synchronization purposes
|
||||||
|
*/
|
||||||
|
void (JNICALL *Unlock)(JNIEnv* env);
|
||||||
|
/*
|
||||||
|
* Since 1.4
|
||||||
|
* Returns a reference to a java.awt.Component from a native
|
||||||
|
* platform handle. On Windows, this corresponds to an HWND;
|
||||||
|
* on Solaris and Linux, this is a Drawable. For other platforms,
|
||||||
|
* see the appropriate machine-dependent header file for a description.
|
||||||
|
* The reference returned by this function is a local
|
||||||
|
* reference that is only valid in this environment.
|
||||||
|
* This function returns a NULL reference if no component could be
|
||||||
|
* found with matching platform information.
|
||||||
|
*/
|
||||||
|
jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo);
|
||||||
|
|
||||||
|
} JAWT;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the AWT native structure. This function returns JNI_FALSE if
|
||||||
|
* an error occurs.
|
||||||
|
*/
|
||||||
|
_JNI_IMPORT_OR_EXPORT_
|
||||||
|
jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt);
|
||||||
|
|
||||||
|
#define JAWT_VERSION_1_3 0x00010003
|
||||||
|
#define JAWT_VERSION_1_4 0x00010004
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_JAVASOFT_JAWT_H_ */
|
||||||
237
jni/jni/jni-headers/jdwpTransport.h
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
/*
|
||||||
|
* %W% %E%
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Java Debug Wire Protocol Transport Service Provider Interface.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef JDWPTRANSPORT_H
|
||||||
|
#define JDWPTRANSPORT_H
|
||||||
|
|
||||||
|
#include "jni.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JDWPTRANSPORT_VERSION_1_0 = 0x00010000
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct jdwpTransportNativeInterface_;
|
||||||
|
|
||||||
|
struct _jdwpTransportEnv;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
typedef _jdwpTransportEnv jdwpTransportEnv;
|
||||||
|
#else
|
||||||
|
typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Errors. Universal errors with JVMTI/JVMDI equivalents keep the
|
||||||
|
* values the same.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
JDWPTRANSPORT_ERROR_NONE = 0,
|
||||||
|
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103,
|
||||||
|
JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110,
|
||||||
|
JDWPTRANSPORT_ERROR_INTERNAL = 113,
|
||||||
|
JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201,
|
||||||
|
JDWPTRANSPORT_ERROR_IO_ERROR = 202,
|
||||||
|
JDWPTRANSPORT_ERROR_TIMEOUT = 203,
|
||||||
|
JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204
|
||||||
|
} jdwpTransportError;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Structure to define capabilities
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
unsigned int can_timeout_attach :1;
|
||||||
|
unsigned int can_timeout_accept :1;
|
||||||
|
unsigned int can_timeout_handshake :1;
|
||||||
|
unsigned int reserved3 :1;
|
||||||
|
unsigned int reserved4 :1;
|
||||||
|
unsigned int reserved5 :1;
|
||||||
|
unsigned int reserved6 :1;
|
||||||
|
unsigned int reserved7 :1;
|
||||||
|
unsigned int reserved8 :1;
|
||||||
|
unsigned int reserved9 :1;
|
||||||
|
unsigned int reserved10 :1;
|
||||||
|
unsigned int reserved11 :1;
|
||||||
|
unsigned int reserved12 :1;
|
||||||
|
unsigned int reserved13 :1;
|
||||||
|
unsigned int reserved14 :1;
|
||||||
|
unsigned int reserved15 :1;
|
||||||
|
} JDWPTransportCapabilities;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Structures to define packet layout.
|
||||||
|
*
|
||||||
|
* See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum {
|
||||||
|
JDWPTRANSPORT_FLAGS_NONE = 0x0,
|
||||||
|
JDWPTRANSPORT_FLAGS_REPLY = 0x80
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
jint len;
|
||||||
|
jint id;
|
||||||
|
jbyte flags;
|
||||||
|
jbyte cmdSet;
|
||||||
|
jbyte cmd;
|
||||||
|
jbyte *data;
|
||||||
|
} jdwpCmdPacket;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
jint len;
|
||||||
|
jint id;
|
||||||
|
jbyte flags;
|
||||||
|
jshort errorCode;
|
||||||
|
jbyte *data;
|
||||||
|
} jdwpReplyPacket;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
union {
|
||||||
|
jdwpCmdPacket cmd;
|
||||||
|
jdwpReplyPacket reply;
|
||||||
|
} type;
|
||||||
|
} jdwpPacket;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JDWP functions called by the transport.
|
||||||
|
*/
|
||||||
|
typedef struct jdwpTransportCallback {
|
||||||
|
void *(*alloc)(jint numBytes); /* Call this for all allocations */
|
||||||
|
void (*free)(void *buffer); /* Call this for all deallocations */
|
||||||
|
} jdwpTransportCallback;
|
||||||
|
|
||||||
|
typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm,
|
||||||
|
jdwpTransportCallback *callback,
|
||||||
|
jint version,
|
||||||
|
jdwpTransportEnv** env);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Function Interface */
|
||||||
|
|
||||||
|
struct jdwpTransportNativeInterface_ {
|
||||||
|
/* 1 : RESERVED */
|
||||||
|
void *reserved1;
|
||||||
|
|
||||||
|
/* 2 : Get Capabilities */
|
||||||
|
jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env,
|
||||||
|
JDWPTransportCapabilities *capabilities_ptr);
|
||||||
|
|
||||||
|
/* 3 : Attach */
|
||||||
|
jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env,
|
||||||
|
const char* address,
|
||||||
|
jlong attach_timeout,
|
||||||
|
jlong handshake_timeout);
|
||||||
|
|
||||||
|
/* 4: StartListening */
|
||||||
|
jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env,
|
||||||
|
const char* address,
|
||||||
|
char** actual_address);
|
||||||
|
|
||||||
|
/* 5: StopListening */
|
||||||
|
jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env);
|
||||||
|
|
||||||
|
/* 6: Accept */
|
||||||
|
jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env,
|
||||||
|
jlong accept_timeout,
|
||||||
|
jlong handshake_timeout);
|
||||||
|
|
||||||
|
/* 7: IsOpen */
|
||||||
|
jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env);
|
||||||
|
|
||||||
|
/* 8: Close */
|
||||||
|
jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env);
|
||||||
|
|
||||||
|
/* 9: ReadPacket */
|
||||||
|
jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env,
|
||||||
|
jdwpPacket *pkt);
|
||||||
|
|
||||||
|
/* 10: Write Packet */
|
||||||
|
jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env,
|
||||||
|
const jdwpPacket* pkt);
|
||||||
|
|
||||||
|
/* 11: GetLastError */
|
||||||
|
jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env,
|
||||||
|
char** error);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use inlined functions so that C++ code can use syntax such as
|
||||||
|
* env->Attach("mymachine:5000", 10*1000, 0);
|
||||||
|
*
|
||||||
|
* rather than using C's :-
|
||||||
|
*
|
||||||
|
* (*env)->Attach(env, "mymachine:5000", 10*1000, 0);
|
||||||
|
*/
|
||||||
|
struct _jdwpTransportEnv {
|
||||||
|
const struct jdwpTransportNativeInterface_ *functions;
|
||||||
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) {
|
||||||
|
return functions->GetCapabilities(this, capabilities_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError Attach(const char* address, jlong attach_timeout,
|
||||||
|
jlong handshake_timeout) {
|
||||||
|
return functions->Attach(this, address, attach_timeout, handshake_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError StartListening(const char* address,
|
||||||
|
char** actual_address) {
|
||||||
|
return functions->StartListening(this, address, actual_address);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError StopListening(void) {
|
||||||
|
return functions->StopListening(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) {
|
||||||
|
return functions->Accept(this, accept_timeout, handshake_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
jboolean IsOpen(void) {
|
||||||
|
return functions->IsOpen(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError Close(void) {
|
||||||
|
return functions->Close(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError ReadPacket(jdwpPacket *pkt) {
|
||||||
|
return functions->ReadPacket(this, pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError WritePacket(const jdwpPacket* pkt) {
|
||||||
|
return functions->WritePacket(this, pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
jdwpTransportError GetLastError(char** error) {
|
||||||
|
return functions->GetLastError(this, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* JDWPTRANSPORT_H */
|
||||||
|
|
||||||
1944
jni/jni/jni-headers/jni.h
Normal file
43
jni/jni/jni-headers/linux/jawt_md.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* @(#)jawt_md.h 1.13 10/03/23
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _JAVASOFT_JAWT_MD_H_
|
||||||
|
#define _JAVASOFT_JAWT_MD_H_
|
||||||
|
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/Xutil.h>
|
||||||
|
#include <X11/Intrinsic.h>
|
||||||
|
#include "jawt.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* X11-specific declarations for AWT native interface.
|
||||||
|
* See notes in jawt.h for an example of use.
|
||||||
|
*/
|
||||||
|
typedef struct jawt_X11DrawingSurfaceInfo {
|
||||||
|
Drawable drawable;
|
||||||
|
Display* display;
|
||||||
|
VisualID visualID;
|
||||||
|
Colormap colormapID;
|
||||||
|
int depth;
|
||||||
|
/*
|
||||||
|
* Since 1.4
|
||||||
|
* Returns a pixel value from a set of RGB values.
|
||||||
|
* This is useful for paletted color (256 color) modes.
|
||||||
|
*/
|
||||||
|
int (JNICALL *GetAWTColor)(JAWT_DrawingSurface* ds,
|
||||||
|
int r, int g, int b);
|
||||||
|
} JAWT_X11DrawingSurfaceInfo;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_JAVASOFT_JAWT_MD_H_ */
|
||||||
24
jni/jni/jni-headers/linux/jni_md.h
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* @(#)jni_md.h 1.20 10/03/23
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _JAVASOFT_JNI_MD_H_
|
||||||
|
#define _JAVASOFT_JNI_MD_H_
|
||||||
|
|
||||||
|
#define JNIEXPORT
|
||||||
|
#define JNIIMPORT
|
||||||
|
#define JNICALL
|
||||||
|
|
||||||
|
typedef int jint;
|
||||||
|
#ifdef _LP64 /* 64-bit Solaris */
|
||||||
|
typedef long jlong;
|
||||||
|
#else
|
||||||
|
typedef long long jlong;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef signed char jbyte;
|
||||||
|
|
||||||
|
#endif /* !_JAVASOFT_JNI_MD_H_ */
|
||||||
23
jni/jni/jni-headers/mac/jni_md.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* @(#)jni_md.h 1.19 05/11/17
|
||||||
|
*
|
||||||
|
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
|
||||||
|
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _JAVASOFT_JNI_MD_H_
|
||||||
|
#define _JAVASOFT_JNI_MD_H_
|
||||||
|
|
||||||
|
#define JNIEXPORT __attribute__((visibility("default")))
|
||||||
|
#define JNIIMPORT
|
||||||
|
#define JNICALL
|
||||||
|
|
||||||
|
#if __LP64__
|
||||||
|
typedef int jint;
|
||||||
|
#else
|
||||||
|
typedef long jint;
|
||||||
|
#endif
|
||||||
|
typedef long long jlong;
|
||||||
|
typedef signed char jbyte;
|
||||||
|
|
||||||
|
#endif /* !_JAVASOFT_JNI_MD_H_ */
|
||||||
41
jni/jni/jni-headers/win32/jawt_md.h
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* %W% %E%
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _JAVASOFT_JAWT_MD_H_
|
||||||
|
#define _JAVASOFT_JAWT_MD_H_
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include "jawt.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Win32-specific declarations for AWT native interface.
|
||||||
|
* See notes in jawt.h for an example of use.
|
||||||
|
*/
|
||||||
|
typedef struct jawt_Win32DrawingSurfaceInfo {
|
||||||
|
/* Native window, DDB, or DIB handle */
|
||||||
|
union {
|
||||||
|
HWND hwnd;
|
||||||
|
HBITMAP hbitmap;
|
||||||
|
void* pbits;
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
* This HDC should always be used instead of the HDC returned from
|
||||||
|
* BeginPaint() or any calls to GetDC().
|
||||||
|
*/
|
||||||
|
HDC hdc;
|
||||||
|
HPALETTE hpalette;
|
||||||
|
} JAWT_Win32DrawingSurfaceInfo;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_JAVASOFT_JAWT_MD_H_ */
|
||||||
19
jni/jni/jni-headers/win32/jni_md.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* %W% %E%
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _JAVASOFT_JNI_MD_H_
|
||||||
|
#define _JAVASOFT_JNI_MD_H_
|
||||||
|
|
||||||
|
#define JNIEXPORT __declspec(dllexport)
|
||||||
|
#define JNIIMPORT __declspec(dllimport)
|
||||||
|
#define JNICALL __stdcall
|
||||||
|
|
||||||
|
typedef long jint;
|
||||||
|
typedef __int64 jlong;
|
||||||
|
typedef signed char jbyte;
|
||||||
|
|
||||||
|
#endif /* !_JAVASOFT_JNI_MD_H_ */
|
||||||
1
jni/jni/libtess2
Submodule
18
jni/jni/memcpy_wrap.c
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef __ANDROID__
|
||||||
|
#ifdef __linux__
|
||||||
|
#ifdef __x86_64__
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
|
||||||
|
|
||||||
|
void *__wrap_memcpy(void * destination, const void * source, size_t num)
|
||||||
|
{
|
||||||
|
return memcpy(destination, source, num);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
237
jni/jni/org.oscim.utils.TessJNI.cpp
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
#include <org.oscim.utils.TessJNI.h>
|
||||||
|
|
||||||
|
//@line:114
|
||||||
|
|
||||||
|
#include <tesselator.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
void* heapAlloc( void* userData, unsigned int size ){
|
||||||
|
TESS_NOTUSED( userData );
|
||||||
|
return malloc( size );
|
||||||
|
}
|
||||||
|
void* heapRealloc( void *userData, void* ptr, unsigned int size ){
|
||||||
|
TESS_NOTUSED( userData );
|
||||||
|
return realloc( ptr, size );
|
||||||
|
}
|
||||||
|
void heapFree( void* userData, void* ptr ){
|
||||||
|
TESS_NOTUSED( userData );
|
||||||
|
free( ptr );
|
||||||
|
}
|
||||||
|
JNIEXPORT jlong JNICALL Java_org_oscim_utils_TessJNI_newTess(JNIEnv* env, jclass clazz, jint size) {
|
||||||
|
|
||||||
|
|
||||||
|
//@line:131
|
||||||
|
{
|
||||||
|
if (size <= 0)
|
||||||
|
return (jlong)tessNewTess(0);
|
||||||
|
if (size > 10)
|
||||||
|
size = 10;
|
||||||
|
TESSalloc ma;
|
||||||
|
memset(&ma, 0, sizeof(ma));
|
||||||
|
ma.memalloc = heapAlloc;
|
||||||
|
ma.memfree = heapFree;
|
||||||
|
ma.memrealloc = heapRealloc;
|
||||||
|
//ma.userData = (void*)&allocated;
|
||||||
|
ma.meshEdgeBucketSize = 2 << size; // 512
|
||||||
|
ma.meshVertexBucketSize = 2 << size; // 512
|
||||||
|
ma.meshFaceBucketSize = 1 << size; // 256
|
||||||
|
ma.dictNodeBucketSize = 2 << size; // 512
|
||||||
|
ma.regionBucketSize = 1 << size; // 256
|
||||||
|
ma.extraVertices = 8;
|
||||||
|
//ma.extraVertices = 256;
|
||||||
|
return (jlong)tessNewTess(&ma);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_freeTess(JNIEnv* env, jclass clazz, jlong inst) {
|
||||||
|
|
||||||
|
|
||||||
|
//@line:151
|
||||||
|
{
|
||||||
|
tessDeleteTess((TESStesselator*) inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_addContour(JNIEnv* env, jclass clazz, jlong inst, jint size, jfloatArray obj_contour, jint stride, jint offset, jint count) {
|
||||||
|
float* contour = (float*)env->GetPrimitiveArrayCritical(obj_contour, 0);
|
||||||
|
|
||||||
|
|
||||||
|
//@line:164
|
||||||
|
{
|
||||||
|
tessAddContour((TESStesselator*) inst, size, contour + (offset * stride), stride, count);
|
||||||
|
}
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_contour, contour, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_addMultiContour2D(JNIEnv* env, jclass clazz, jlong inst, jintArray obj_index, jfloatArray obj_contour, jint idxStart, jint idxCount) {
|
||||||
|
int* index = (int*)env->GetPrimitiveArrayCritical(obj_index, 0);
|
||||||
|
float* contour = (float*)env->GetPrimitiveArrayCritical(obj_contour, 0);
|
||||||
|
|
||||||
|
|
||||||
|
//@line:167
|
||||||
|
{
|
||||||
|
TESStesselator* tess = (TESStesselator*) inst;
|
||||||
|
int offset = 0;
|
||||||
|
// start at 0 to get the correct offset in contour..
|
||||||
|
for (int i = 0; i < idxStart + idxCount; i++){
|
||||||
|
int len = index[i];
|
||||||
|
if ((len % 2 != 0) || (len < 0))
|
||||||
|
break;
|
||||||
|
if (len < 6 || i < idxStart) {
|
||||||
|
offset += len;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
tessAddContour(tess, 2, contour + offset, 8, len >> 1);
|
||||||
|
offset += len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_index, index, 0);
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_contour, contour, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_org_oscim_utils_TessJNI_tessContour2D(JNIEnv* env, jclass clazz, jlong inst, jint windingRule, jint elementType, jint polySize, jint vertexSize) {
|
||||||
|
|
||||||
|
|
||||||
|
//@line:194
|
||||||
|
{
|
||||||
|
return tessTesselate((TESStesselator*) inst, windingRule, elementType, polySize, vertexSize, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_org_oscim_utils_TessJNI_getVertexCount(JNIEnv* env, jclass clazz, jlong inst) {
|
||||||
|
|
||||||
|
|
||||||
|
//@line:197
|
||||||
|
{
|
||||||
|
return tessGetVertexCount((TESStesselator*) inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline jboolean wrapped_Java_org_oscim_utils_TessJNI_getVertices
|
||||||
|
(JNIEnv* env, jclass clazz, jlong inst, jfloatArray obj_out, jint offset, jint length, float* out) {
|
||||||
|
|
||||||
|
//@line:203
|
||||||
|
{
|
||||||
|
const TESSreal* vertices = tessGetVertices((TESStesselator*) inst);
|
||||||
|
if (!vertices)
|
||||||
|
return 0;
|
||||||
|
memcpy(out, vertices + offset, length * sizeof(TESSreal));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jboolean JNICALL Java_org_oscim_utils_TessJNI_getVertices(JNIEnv* env, jclass clazz, jlong inst, jfloatArray obj_out, jint offset, jint length) {
|
||||||
|
float* out = (float*)env->GetPrimitiveArrayCritical(obj_out, 0);
|
||||||
|
|
||||||
|
jboolean JNI_returnValue = wrapped_Java_org_oscim_utils_TessJNI_getVertices(env, clazz, inst, obj_out, offset, length, out);
|
||||||
|
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_out, out, 0);
|
||||||
|
|
||||||
|
return JNI_returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_getVerticesS(JNIEnv* env, jclass clazz, jlong inst, jshortArray obj_out, jint offset, jint length, jfloat scale) {
|
||||||
|
short* out = (short*)env->GetPrimitiveArrayCritical(obj_out, 0);
|
||||||
|
|
||||||
|
|
||||||
|
//@line:213
|
||||||
|
{
|
||||||
|
const TESSreal* vertices = tessGetVertices((TESStesselator*) inst);
|
||||||
|
for(int i = 0; i < length; i++)
|
||||||
|
out[i] = (short)(vertices[offset++] * scale + 0.5f);
|
||||||
|
}
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_out, out, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline jboolean wrapped_Java_org_oscim_utils_TessJNI_getVertexIndices
|
||||||
|
(JNIEnv* env, jclass clazz, jlong inst, jintArray obj_out, jint offset, jint length, int* out) {
|
||||||
|
|
||||||
|
//@line:225
|
||||||
|
{
|
||||||
|
const TESSindex* indices = tessGetVertexIndices((TESStesselator*) inst);
|
||||||
|
if (!indices)
|
||||||
|
return 0;
|
||||||
|
memcpy(out, indices + offset, length * sizeof(TESSindex));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jboolean JNICALL Java_org_oscim_utils_TessJNI_getVertexIndices(JNIEnv* env, jclass clazz, jlong inst, jintArray obj_out, jint offset, jint length) {
|
||||||
|
int* out = (int*)env->GetPrimitiveArrayCritical(obj_out, 0);
|
||||||
|
|
||||||
|
jboolean JNI_returnValue = wrapped_Java_org_oscim_utils_TessJNI_getVertexIndices(env, clazz, inst, obj_out, offset, length, out);
|
||||||
|
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_out, out, 0);
|
||||||
|
|
||||||
|
return JNI_returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_org_oscim_utils_TessJNI_getElementCount(JNIEnv* env, jclass clazz, jlong inst) {
|
||||||
|
|
||||||
|
|
||||||
|
//@line:235
|
||||||
|
{
|
||||||
|
return tessGetElementCount((TESStesselator*) inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline jboolean wrapped_Java_org_oscim_utils_TessJNI_getElements
|
||||||
|
(JNIEnv* env, jclass clazz, jlong inst, jintArray obj_out, jint offset, jint length, int* out) {
|
||||||
|
|
||||||
|
//@line:241
|
||||||
|
{
|
||||||
|
const TESSindex* elements = tessGetElements((TESStesselator*) inst);
|
||||||
|
if (!elements)
|
||||||
|
return 0;
|
||||||
|
memcpy(out, elements + offset, length * sizeof(TESSindex));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jboolean JNICALL Java_org_oscim_utils_TessJNI_getElements(JNIEnv* env, jclass clazz, jlong inst, jintArray obj_out, jint offset, jint length) {
|
||||||
|
int* out = (int*)env->GetPrimitiveArrayCritical(obj_out, 0);
|
||||||
|
|
||||||
|
jboolean JNI_returnValue = wrapped_Java_org_oscim_utils_TessJNI_getElements(env, clazz, inst, obj_out, offset, length, out);
|
||||||
|
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_out, out, 0);
|
||||||
|
|
||||||
|
return JNI_returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_getElementsS(JNIEnv* env, jclass clazz, jlong inst, jshortArray obj_out, jint offset, jint length) {
|
||||||
|
short* out = (short*)env->GetPrimitiveArrayCritical(obj_out, 0);
|
||||||
|
|
||||||
|
|
||||||
|
//@line:251
|
||||||
|
{
|
||||||
|
const TESSindex* elements = tessGetElements((TESStesselator*) inst);
|
||||||
|
for(int i = 0; i < length; i++)
|
||||||
|
out[i] = (short)elements[offset++];
|
||||||
|
}
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_out, out, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_getElementsWithInputVertexIds(JNIEnv* env, jclass clazz, jlong inst, jshortArray obj_out, jint dstOffset, jint offset, jint length) {
|
||||||
|
short* out = (short*)env->GetPrimitiveArrayCritical(obj_out, 0);
|
||||||
|
|
||||||
|
|
||||||
|
//@line:259
|
||||||
|
{
|
||||||
|
const TESSindex* elements = tessGetElements((TESStesselator*) inst);
|
||||||
|
const TESSindex* indices = tessGetVertexIndices((TESStesselator*) inst);
|
||||||
|
for(int i = 0; i < length; i++)
|
||||||
|
out[dstOffset++] = (short)(indices[elements[offset++]]);
|
||||||
|
}
|
||||||
|
env->ReleasePrimitiveArrayCritical(obj_out, out, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
155
jni/jni/org.oscim.utils.TessJNI.h
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||||
|
#include <jni.h>
|
||||||
|
/* Header for class org_oscim_utils_TessJNI */
|
||||||
|
|
||||||
|
#ifndef _Included_org_oscim_utils_TessJNI
|
||||||
|
#define _Included_org_oscim_utils_TessJNI
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: newTess
|
||||||
|
* Signature: (I)J
|
||||||
|
*/
|
||||||
|
JNIEXPORT jlong JNICALL Java_org_oscim_utils_TessJNI_newTess
|
||||||
|
(JNIEnv *, jclass, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: freeTess
|
||||||
|
* Signature: (J)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_freeTess
|
||||||
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: addContour
|
||||||
|
* Signature: (JI[FIII)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_addContour
|
||||||
|
(JNIEnv *, jclass, jlong, jint, jfloatArray, jint, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: addMultiContour2D
|
||||||
|
* Signature: (J[I[FII)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_addMultiContour2D
|
||||||
|
(JNIEnv *, jclass, jlong, jintArray, jfloatArray, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: tessContour2D
|
||||||
|
* Signature: (JIIII)I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_org_oscim_utils_TessJNI_tessContour2D
|
||||||
|
(JNIEnv *, jclass, jlong, jint, jint, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getVertexCount
|
||||||
|
* Signature: (J)I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_org_oscim_utils_TessJNI_getVertexCount
|
||||||
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getVertices
|
||||||
|
* Signature: (J[FII)Z
|
||||||
|
*/
|
||||||
|
JNIEXPORT jboolean JNICALL Java_org_oscim_utils_TessJNI_getVertices
|
||||||
|
(JNIEnv *, jclass, jlong, jfloatArray, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getVerticesS
|
||||||
|
* Signature: (J[SIIF)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_getVerticesS
|
||||||
|
(JNIEnv *, jclass, jlong, jshortArray, jint, jint, jfloat);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getVertexIndices
|
||||||
|
* Signature: (J[III)Z
|
||||||
|
*/
|
||||||
|
JNIEXPORT jboolean JNICALL Java_org_oscim_utils_TessJNI_getVertexIndices
|
||||||
|
(JNIEnv *, jclass, jlong, jintArray, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getElementCount
|
||||||
|
* Signature: (J)I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_org_oscim_utils_TessJNI_getElementCount
|
||||||
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getElements
|
||||||
|
* Signature: (J[III)Z
|
||||||
|
*/
|
||||||
|
JNIEXPORT jboolean JNICALL Java_org_oscim_utils_TessJNI_getElements
|
||||||
|
(JNIEnv *, jclass, jlong, jintArray, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getElementsS
|
||||||
|
* Signature: (J[SII)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_getElementsS
|
||||||
|
(JNIEnv *, jclass, jlong, jshortArray, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_oscim_utils_TessJNI
|
||||||
|
* Method: getElementsWithInputVertexIds
|
||||||
|
* Signature: (J[SIII)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_org_oscim_utils_TessJNI_getElementsWithInputVertexIds
|
||||||
|
(JNIEnv *, jclass, jlong, jshortArray, jint, jint, jint);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
/* Header for class org_oscim_utils_TessJNI_ElementType */
|
||||||
|
|
||||||
|
#ifndef _Included_org_oscim_utils_TessJNI_ElementType
|
||||||
|
#define _Included_org_oscim_utils_TessJNI_ElementType
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
#undef org_oscim_utils_TessJNI_ElementType_POLYGONS
|
||||||
|
#define org_oscim_utils_TessJNI_ElementType_POLYGONS 0L
|
||||||
|
#undef org_oscim_utils_TessJNI_ElementType_CONNECTED_POLYGONS
|
||||||
|
#define org_oscim_utils_TessJNI_ElementType_CONNECTED_POLYGONS 1L
|
||||||
|
#undef org_oscim_utils_TessJNI_ElementType_BOUNDARY_CONTOURS
|
||||||
|
#define org_oscim_utils_TessJNI_ElementType_BOUNDARY_CONTOURS 2L
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
/* Header for class org_oscim_utils_TessJNI_WindingRule */
|
||||||
|
|
||||||
|
#ifndef _Included_org_oscim_utils_TessJNI_WindingRule
|
||||||
|
#define _Included_org_oscim_utils_TessJNI_WindingRule
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
#undef org_oscim_utils_TessJNI_WindingRule_ODD
|
||||||
|
#define org_oscim_utils_TessJNI_WindingRule_ODD 0L
|
||||||
|
#undef org_oscim_utils_TessJNI_WindingRule_NONZERO
|
||||||
|
#define org_oscim_utils_TessJNI_WindingRule_NONZERO 1L
|
||||||
|
#undef org_oscim_utils_TessJNI_WindingRule_POSITIVE
|
||||||
|
#define org_oscim_utils_TessJNI_WindingRule_POSITIVE 2L
|
||||||
|
#undef org_oscim_utils_TessJNI_WindingRule_NEGATIVE
|
||||||
|
#define org_oscim_utils_TessJNI_WindingRule_NEGATIVE 3L
|
||||||
|
#undef org_oscim_utils_TessJNI_WindingRule_ABS_GEQ_TWO
|
||||||
|
#define org_oscim_utils_TessJNI_WindingRule_ABS_GEQ_TWO 4L
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
102
jni/src/JniBuilder.java
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
import com.badlogic.gdx.jnigen.AntScriptGenerator;
|
||||||
|
import com.badlogic.gdx.jnigen.BuildConfig;
|
||||||
|
import com.badlogic.gdx.jnigen.BuildTarget;
|
||||||
|
import com.badlogic.gdx.jnigen.BuildTarget.TargetOs;
|
||||||
|
import com.badlogic.gdx.jnigen.NativeCodeGenerator;
|
||||||
|
|
||||||
|
public class JniBuilder {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
String[] headers = {".", "libtess2/Include"};
|
||||||
|
String[] sources = {
|
||||||
|
"gl/utils.c",
|
||||||
|
"libtess2/Source/bucketalloc.c",
|
||||||
|
"libtess2/Source/dict.c",
|
||||||
|
"libtess2/Source/geom.c",
|
||||||
|
"libtess2/Source/mesh.c",
|
||||||
|
"libtess2/Source/priorityq.c",
|
||||||
|
"libtess2/Source/sweep.c",
|
||||||
|
"libtess2/Source/tess.c",
|
||||||
|
};
|
||||||
|
|
||||||
|
String cflags = " -Wall -std=c99 -O2 -ffast-math";
|
||||||
|
cflags += " -DNDEBUG"; /* disable debug in libtess2 */
|
||||||
|
|
||||||
|
//BuildTarget win32home = BuildTarget
|
||||||
|
// .newDefaultTarget(TargetOs.Windows, false);
|
||||||
|
//win32home.compilerPrefix = "";
|
||||||
|
//win32home.buildFileName = "build-windows32home.xml";
|
||||||
|
//win32home.excludeFromMasterBuildFile = true;
|
||||||
|
//win32home.headerDirs = headers;
|
||||||
|
//win32home.cIncludes = sources;
|
||||||
|
//win32home.cFlags += cflags;
|
||||||
|
//win32home.cppFlags += cflags;
|
||||||
|
|
||||||
|
BuildTarget win32 = BuildTarget
|
||||||
|
.newDefaultTarget(TargetOs.Windows, false);
|
||||||
|
win32.headerDirs = headers;
|
||||||
|
win32.cIncludes = sources;
|
||||||
|
win32.cFlags += cflags;
|
||||||
|
win32.cppFlags += cflags;
|
||||||
|
|
||||||
|
BuildTarget win64 = BuildTarget
|
||||||
|
.newDefaultTarget(TargetOs.Windows, true);
|
||||||
|
win64.headerDirs = headers;
|
||||||
|
win64.cIncludes = sources;
|
||||||
|
win64.cFlags += cflags;
|
||||||
|
win64.cppFlags += cflags;
|
||||||
|
|
||||||
|
BuildTarget lin32 = BuildTarget
|
||||||
|
.newDefaultTarget(TargetOs.Linux, false);
|
||||||
|
lin32.headerDirs = headers;
|
||||||
|
lin32.cIncludes = sources;
|
||||||
|
lin32.cFlags += cflags;
|
||||||
|
lin32.cppFlags += cflags;
|
||||||
|
|
||||||
|
BuildTarget lin64 = BuildTarget
|
||||||
|
.newDefaultTarget(TargetOs.Linux, true);
|
||||||
|
lin64.headerDirs = headers;
|
||||||
|
lin64.cIncludes = sources;
|
||||||
|
lin64.cFlags += cflags;
|
||||||
|
lin64.cppFlags += cflags;
|
||||||
|
|
||||||
|
BuildTarget mac = BuildTarget
|
||||||
|
.newDefaultTarget(TargetOs.MacOsX, false);
|
||||||
|
mac.headerDirs = headers;
|
||||||
|
mac.cIncludes = sources;
|
||||||
|
mac.cFlags += cflags;
|
||||||
|
mac.cppFlags += cflags;
|
||||||
|
mac.linkerFlags += " -framework CoreServices -framework Carbon";
|
||||||
|
|
||||||
|
BuildTarget android = BuildTarget
|
||||||
|
.newDefaultTarget(TargetOs.Android, false);
|
||||||
|
android.headerDirs = headers;
|
||||||
|
android.cIncludes = sources;
|
||||||
|
android.cFlags += cflags;
|
||||||
|
android.cppFlags += cflags;
|
||||||
|
android.linkerFlags += " -llog";
|
||||||
|
|
||||||
|
BuildTarget ios = BuildTarget.newDefaultTarget(TargetOs.IOS, false);
|
||||||
|
ios.headerDirs = headers;
|
||||||
|
ios.cIncludes = sources;
|
||||||
|
ios.cFlags += cflags;
|
||||||
|
ios.cppFlags += cflags;
|
||||||
|
|
||||||
|
new NativeCodeGenerator().generate();
|
||||||
|
|
||||||
|
new AntScriptGenerator()
|
||||||
|
.generate(new BuildConfig("vtm-jni"),
|
||||||
|
android,
|
||||||
|
lin64,
|
||||||
|
lin32,
|
||||||
|
mac,
|
||||||
|
ios,
|
||||||
|
//win32home,
|
||||||
|
win32,
|
||||||
|
win64
|
||||||
|
);
|
||||||
|
|
||||||
|
// BuildExecutor.executeAnt("jni/build-windows32home.xml", "-v clean");
|
||||||
|
// BuildExecutor.executeAnt("jni/build-linux64.xml", "-v");
|
||||||
|
// BuildExecutor.executeAnt("jni/build.xml", "pack-natives -v");
|
||||||
|
}
|
||||||
|
}
|
||||||
277
jni/src/org/oscim/utils/TessJNI.java
Normal file
@@ -0,0 +1,277 @@
|
|||||||
|
package org.oscim.utils;
|
||||||
|
|
||||||
|
public class TessJNI {
|
||||||
|
private long inst;
|
||||||
|
|
||||||
|
public TessJNI() {
|
||||||
|
inst = newTess(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TessJNI(int bucketSize) {
|
||||||
|
inst = newTess(bucketSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void finalize() {
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispose() {
|
||||||
|
if (inst != 0) {
|
||||||
|
freeTess(inst);
|
||||||
|
inst = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected long instance() {
|
||||||
|
return inst;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See OpenGL Red Book for description of the winding rules
|
||||||
|
* http://www.glprogramming.com/red/chapter11.html
|
||||||
|
*/
|
||||||
|
public static final class WindingRule {
|
||||||
|
public static final int ODD = 0;
|
||||||
|
public static final int NONZERO = 1;
|
||||||
|
public static final int POSITIVE = 2;
|
||||||
|
public static final int NEGATIVE = 3;
|
||||||
|
public static final int ABS_GEQ_TWO = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class ElementType {
|
||||||
|
public static final int POLYGONS = 0;
|
||||||
|
public static final int CONNECTED_POLYGONS = 1;
|
||||||
|
public static final int BOUNDARY_CONTOURS = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addContour2D(float[] points) {
|
||||||
|
addContour2D(points, 0, points.length >> 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addContour2D(float[] points, int offset, int length) {
|
||||||
|
if (length < 6)
|
||||||
|
return;
|
||||||
|
if ((length % 2 != 0) || (offset % 2 != 0) || (points.length >> 1) < (offset + length))
|
||||||
|
throw new IllegalArgumentException("Invalid input: length:" + length
|
||||||
|
+ ", offset:" + offset
|
||||||
|
+ ", points.length:" + points.length);
|
||||||
|
addContour(inst, 2, points, 8, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addContour2D(int[] index, float[] contour) {
|
||||||
|
addMultiContour2D(inst, index, contour, 0, index.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addContour2D(int[] index, float[] contour, int idxStart, int idxEnd) {
|
||||||
|
addMultiContour2D(inst, index, contour, idxStart, idxEnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean tesselate() {
|
||||||
|
return tessContour2D(inst,
|
||||||
|
TessJNI.WindingRule.POSITIVE,
|
||||||
|
TessJNI.ElementType.POLYGONS,
|
||||||
|
3, 2) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean tesselate(int windingRule, int elementType) {
|
||||||
|
return tessContour2D(inst, windingRule, elementType, 3, 2) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getVertexCount() {
|
||||||
|
return getVertexCount(inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getElementCount() {
|
||||||
|
return getElementCount(inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getVertices(float[] out, int offset, int length) {
|
||||||
|
getVertices(inst, out, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getVertices(short[] out, int offset, int length, float scale) {
|
||||||
|
getVerticesS(inst, out, offset, length, scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getElements(int[] out, int offset, int length) {
|
||||||
|
getElements(inst, out, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getElements(short[] out, int offset, int length) {
|
||||||
|
getElementsS(inst, out, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getVertexIndices(int[] out, int offset, int length) {
|
||||||
|
getVertexIndices(inst, out, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getElementsWithInputVertexIds(short[] dst, int dstOffset, int offset, int length) {
|
||||||
|
getElementsWithInputVertexIds(inst, dst, dstOffset, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @formatter:off
|
||||||
|
/*JNI
|
||||||
|
#include <tesselator.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
void* heapAlloc( void* userData, unsigned int size ){
|
||||||
|
TESS_NOTUSED( userData );
|
||||||
|
return malloc( size );
|
||||||
|
}
|
||||||
|
void* heapRealloc( void *userData, void* ptr, unsigned int size ){
|
||||||
|
TESS_NOTUSED( userData );
|
||||||
|
return realloc( ptr, size );
|
||||||
|
}
|
||||||
|
void heapFree( void* userData, void* ptr ){
|
||||||
|
TESS_NOTUSED( userData );
|
||||||
|
free( ptr );
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
static native long newTess(int size); /* {
|
||||||
|
if (size <= 0)
|
||||||
|
return (long)tessNewTess(0);
|
||||||
|
if (size > 10)
|
||||||
|
size = 10;
|
||||||
|
TESSalloc ma;
|
||||||
|
memset(&ma, 0, sizeof(ma));
|
||||||
|
ma.memalloc = heapAlloc;
|
||||||
|
ma.memfree = heapFree;
|
||||||
|
ma.memrealloc = heapRealloc;
|
||||||
|
//ma.userData = (void*)&allocated;
|
||||||
|
ma.meshEdgeBucketSize = 2 << size; // 512
|
||||||
|
ma.meshVertexBucketSize = 2 << size; // 512
|
||||||
|
ma.meshFaceBucketSize = 1 << size; // 256
|
||||||
|
ma.dictNodeBucketSize = 2 << size; // 512
|
||||||
|
ma.regionBucketSize = 1 << size; // 256
|
||||||
|
ma.extraVertices = 8;
|
||||||
|
//ma.extraVertices = 256;
|
||||||
|
return (long)tessNewTess(&ma);
|
||||||
|
} */
|
||||||
|
|
||||||
|
static native void freeTess(long inst); /* {
|
||||||
|
tessDeleteTess((TESStesselator*) inst);
|
||||||
|
} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a contour to be tesselated.
|
||||||
|
* The type of the vertex coordinates is assumed to be TESSreal.
|
||||||
|
*
|
||||||
|
* @param tess - pointer to tesselator object.
|
||||||
|
* @param size - number of coordinates per vertex. Must be 2 or 3.
|
||||||
|
* @param pointer - pointer to the first coordinate of the first vertex in the array.
|
||||||
|
* @param stride - defines offset in bytes between consecutive vertices.
|
||||||
|
* @param count - number of vertices in contour.
|
||||||
|
*/
|
||||||
|
static native void addContour(long inst, int size, float[] contour, int stride, int offset, int count);/* {
|
||||||
|
tessAddContour((TESStesselator*) inst, size, contour + (offset * stride), stride, count);
|
||||||
|
} */
|
||||||
|
|
||||||
|
static native void addMultiContour2D(long inst, int[] index, float[] contour, int idxStart, int idxCount);/* {
|
||||||
|
TESStesselator* tess = (TESStesselator*) inst;
|
||||||
|
int offset = 0;
|
||||||
|
// start at 0 to get the correct offset in contour..
|
||||||
|
for (int i = 0; i < idxStart + idxCount; i++){
|
||||||
|
int len = index[i];
|
||||||
|
if ((len % 2 != 0) || (len < 0))
|
||||||
|
break;
|
||||||
|
if (len < 6 || i < idxStart) {
|
||||||
|
offset += len;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
tessAddContour(tess, 2, contour + offset, 8, len >> 1);
|
||||||
|
offset += len;
|
||||||
|
}
|
||||||
|
} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tesselate contours.
|
||||||
|
*
|
||||||
|
* @param tess - pointer to tesselator object.
|
||||||
|
* @param windingRule - winding rules used for tesselation, must be one of TessWindingRule.
|
||||||
|
* @param elementType - defines the tesselation result element type, must be one of TessElementType.
|
||||||
|
* @param polySize - defines maximum vertices per polygons if output is polygons.
|
||||||
|
* @param vertexSize - defines the number of coordinates in tesselation result vertex, must be 2 or 3.
|
||||||
|
* @param normal - defines the normal of the input contours, of null the normal is calculated automatically.
|
||||||
|
* @return 1 if succeed, 0 if failed.
|
||||||
|
*/
|
||||||
|
static native int tessContour2D(long inst, int windingRule, int elementType, int polySize, int vertexSize);/*{
|
||||||
|
return tessTesselate((TESStesselator*) inst, windingRule, elementType, polySize, vertexSize, 0);
|
||||||
|
} */
|
||||||
|
|
||||||
|
static native int getVertexCount(long inst); /*{
|
||||||
|
return tessGetVertexCount((TESStesselator*) inst);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns pointer to first coordinate of first vertex.
|
||||||
|
*/
|
||||||
|
static native boolean getVertices(long inst, float[] out, int offset, int length);/*{
|
||||||
|
const TESSreal* vertices = tessGetVertices((TESStesselator*) inst);
|
||||||
|
if (!vertices)
|
||||||
|
return 0;
|
||||||
|
memcpy(out, vertices + offset, length * sizeof(TESSreal));
|
||||||
|
return 1;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns pointer to first coordinate of first vertex.
|
||||||
|
*/
|
||||||
|
static native void getVerticesS(long inst, short[] out, int offset, int length, float scale);/*{
|
||||||
|
const TESSreal* vertices = tessGetVertices((TESStesselator*) inst);
|
||||||
|
for(int i = 0; i < length; i++)
|
||||||
|
out[i] = (short)(vertices[offset++] * scale + 0.5f);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns pointer to first vertex index.
|
||||||
|
* <p/>
|
||||||
|
* Vertex indices can be used to map the generated vertices to the original vertices.
|
||||||
|
* Every point added using tessAddContour() will get a new index starting at 0.
|
||||||
|
* New vertices generated at the intersections of segments are assigned value TESS_UNDEF.
|
||||||
|
*/
|
||||||
|
static native boolean getVertexIndices(long inst, int[] out, int offset, int length);/* {
|
||||||
|
const TESSindex* indices = tessGetVertexIndices((TESStesselator*) inst);
|
||||||
|
if (!indices)
|
||||||
|
return 0;
|
||||||
|
memcpy(out, indices + offset, length * sizeof(TESSindex));
|
||||||
|
return 1;
|
||||||
|
} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns number of elements in the the tesselated output.
|
||||||
|
*/
|
||||||
|
static native int getElementCount(long inst);/*{
|
||||||
|
return tessGetElementCount((TESStesselator*) inst);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns pointer to the first element.
|
||||||
|
*/
|
||||||
|
static native boolean getElements(long inst, int[] out, int offset, int length);/*{
|
||||||
|
const TESSindex* elements = tessGetElements((TESStesselator*) inst);
|
||||||
|
if (!elements)
|
||||||
|
return 0;
|
||||||
|
memcpy(out, elements + offset, length * sizeof(TESSindex));
|
||||||
|
return 1;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns pointer to the first element.
|
||||||
|
*/
|
||||||
|
static native void getElementsS(long inst, short[] out, int offset, int length);/*{
|
||||||
|
const TESSindex* elements = tessGetElements((TESStesselator*) inst);
|
||||||
|
for(int i = 0; i < length; i++)
|
||||||
|
out[i] = (short)elements[offset++];
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns list of triangles indices (or to the first element of convex polygons).
|
||||||
|
*/
|
||||||
|
static native void getElementsWithInputVertexIds(long inst, short[] out, int dstOffset, int offset, int length);/*{
|
||||||
|
const TESSindex* elements = tessGetElements((TESStesselator*) inst);
|
||||||
|
const TESSindex* indices = tessGetVertexIndices((TESStesselator*) inst);
|
||||||
|
for(int i = 0; i < length; i++)
|
||||||
|
out[dstOffset++] = (short)(indices[elements[offset++]]);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
2
jni/tessellate/Makefile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
all:
|
||||||
|
gcc -g -DTEST dict.c mesh.c render.c tess.c geom.c memalloc.c normal.c priorityq.c sweep.c tessmono.c tessellate.c main.c -o tessellate
|
||||||
256
jni/tessellate/TessellateJni.c
Normal file
@@ -0,0 +1,256 @@
|
|||||||
|
#include "tessellate.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <jni.h>
|
||||||
|
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
#include <android/log.h>
|
||||||
|
|
||||||
|
#define printf(...) __android_log_print(ANDROID_LOG_DEBUG, "Tesselate", __VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CAST_CTX(x) (TessContext *)(uintptr_t) x
|
||||||
|
|
||||||
|
void Java_org_oscim_utils_Tessellator_tessFinish(JNIEnv *env, jclass c, jlong ptr_context) {
|
||||||
|
|
||||||
|
TessContext *ctx = CAST_CTX(ptr_context);
|
||||||
|
|
||||||
|
while (ctx->latest_v) {
|
||||||
|
Vertex *prev = ctx->latest_v->prev;
|
||||||
|
free(ctx->latest_v);
|
||||||
|
ctx->latest_v = prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (ctx->latest_t) {
|
||||||
|
Triangle *prev = ctx->latest_t->prev;
|
||||||
|
free(ctx->latest_t);
|
||||||
|
ctx->latest_t = prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
//destroy_tess_context(ctx);
|
||||||
|
free(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vertex *reverse(Vertex *root) {
|
||||||
|
Vertex *start = 0;
|
||||||
|
|
||||||
|
while (root) {
|
||||||
|
Vertex *prev = root->prev;
|
||||||
|
root->prev = start;
|
||||||
|
start = root;
|
||||||
|
root = prev;
|
||||||
|
}
|
||||||
|
return start;
|
||||||
|
}
|
||||||
|
|
||||||
|
jint Java_org_oscim_utils_Tessellator_tessGetVerticesWO(JNIEnv *env, jclass c,
|
||||||
|
jlong ptr_context, jshortArray obj_coords, jint offset, jfloat scale) {
|
||||||
|
|
||||||
|
TessContext *ctx = CAST_CTX(ptr_context);
|
||||||
|
|
||||||
|
int length = (*env)->GetArrayLength(env, obj_coords);
|
||||||
|
|
||||||
|
jshort* coords = (jshort*) (*env)->GetPrimitiveArrayCritical(env, obj_coords, 0);
|
||||||
|
if (coords == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ctx->reversed) {
|
||||||
|
ctx->reversed = 1;
|
||||||
|
ctx->latest_v = reverse(ctx->latest_v);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pos = offset;
|
||||||
|
|
||||||
|
for (; ctx->latest_v && pos < length; pos += 2) {
|
||||||
|
coords[pos + 0] = (ctx->latest_v->pt[0] * scale) + 0.5f;
|
||||||
|
coords[pos + 1] = (ctx->latest_v->pt[1] * scale) + 0.5f;
|
||||||
|
Vertex *prev = ctx->latest_v->prev;
|
||||||
|
free(ctx->latest_v);
|
||||||
|
ctx->latest_v = prev;
|
||||||
|
}
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_coords, coords, JNI_ABORT);
|
||||||
|
|
||||||
|
return pos - offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
jint Java_org_oscim_utils_Tessellator_tessGetVertices(JNIEnv *env, jclass c,
|
||||||
|
jlong ptr_context, jshortArray obj_coords, jfloat scale) {
|
||||||
|
|
||||||
|
return Java_org_oscim_utils_Tessellator_tessGetVerticesWO(env, c, ptr_context, obj_coords, 0,
|
||||||
|
scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
jint Java_org_oscim_utils_Tessellator_tessGetVerticesD(JNIEnv *env, jclass c,
|
||||||
|
jlong ptr_context, jdoubleArray obj_coords) {
|
||||||
|
|
||||||
|
TessContext *ctx = CAST_CTX(ptr_context);
|
||||||
|
|
||||||
|
int length = (*env)->GetArrayLength(env, obj_coords);
|
||||||
|
|
||||||
|
jdouble* coords = (jdouble*) (*env)->GetPrimitiveArrayCritical(env, obj_coords, 0);
|
||||||
|
if (coords == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ctx->reversed) {
|
||||||
|
ctx->reversed = 1;
|
||||||
|
ctx->latest_v = reverse(ctx->latest_v);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cnt = 0;
|
||||||
|
for (; ctx->latest_v && cnt < length; cnt += 2) {
|
||||||
|
coords[cnt + 0] = ctx->latest_v->pt[0];
|
||||||
|
coords[cnt + 1] = ctx->latest_v->pt[1];
|
||||||
|
Vertex *prev = ctx->latest_v->prev;
|
||||||
|
free(ctx->latest_v);
|
||||||
|
ctx->latest_v = prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_coords, coords, JNI_ABORT);
|
||||||
|
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
jint Java_org_oscim_utils_Tessellator_tessGetIndicesWO(JNIEnv *env, jclass c,
|
||||||
|
jlong ptr_context, jshortArray obj_indices, int offset) {
|
||||||
|
|
||||||
|
TessContext *ctx = CAST_CTX(ptr_context);
|
||||||
|
|
||||||
|
int length = (*env)->GetArrayLength(env, obj_indices);
|
||||||
|
|
||||||
|
jshort* tris = (jshort*) (*env)->GetPrimitiveArrayCritical(env, obj_indices, 0);
|
||||||
|
if (tris == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int n_tris_copy = ctx->n_tris;
|
||||||
|
|
||||||
|
int pos = offset;
|
||||||
|
|
||||||
|
for (; ctx->latest_t && pos < length; pos += 3) {
|
||||||
|
tris[pos + 0] = ctx->latest_t->v[0];
|
||||||
|
tris[pos + 1] = ctx->latest_t->v[1];
|
||||||
|
tris[pos + 2] = ctx->latest_t->v[2];
|
||||||
|
Triangle *prev = ctx->latest_t->prev;
|
||||||
|
|
||||||
|
free(ctx->latest_t);
|
||||||
|
ctx->latest_t = prev;
|
||||||
|
n_tris_copy--;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->n_tris = n_tris_copy;
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_indices, tris, JNI_ABORT);
|
||||||
|
|
||||||
|
return pos - offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
jint Java_org_oscim_utils_Tessellator_tessGetIndices(JNIEnv *env, jclass c,
|
||||||
|
jlong ptr_context, jshortArray obj_indices, int offset){
|
||||||
|
|
||||||
|
return Java_org_oscim_utils_Tessellator_tessGetIndicesWO(env, c,
|
||||||
|
ptr_context, obj_indices, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
jlong Java_org_oscim_utils_Tessellator_tessellate(JNIEnv *env, jclass c,
|
||||||
|
jfloatArray obj_points, jint pos,
|
||||||
|
jshortArray obj_index, jint ipos,
|
||||||
|
jint num_rings, jintArray obj_out) {
|
||||||
|
|
||||||
|
//printf("add %d %d %d\n", pos, ipos, num_rings);
|
||||||
|
jboolean isCopy;
|
||||||
|
|
||||||
|
float* orig_points = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_points, &isCopy);
|
||||||
|
if (orig_points == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
const float *points = orig_points + pos;
|
||||||
|
|
||||||
|
jshort* orig_indices = (jshort*) (*env)->GetPrimitiveArrayCritical(env, obj_index, &isCopy);
|
||||||
|
if (orig_indices == NULL) {
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_points, orig_points, JNI_ABORT);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
jshort* indices = orig_indices + ipos;
|
||||||
|
|
||||||
|
const float **rings = malloc(sizeof(float*) * (num_rings + 1));
|
||||||
|
int offset = 0;
|
||||||
|
for (int i = 0; i < num_rings; i++) {
|
||||||
|
rings[i] = points + offset;
|
||||||
|
offset += indices[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_index, orig_indices, JNI_ABORT);
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_points, orig_points, JNI_ABORT);
|
||||||
|
|
||||||
|
rings[num_rings] = points + offset;
|
||||||
|
|
||||||
|
int nverts, ntris;
|
||||||
|
|
||||||
|
TessContext *ctx = tessellate(NULL, &nverts, NULL, &ntris,
|
||||||
|
rings, rings + (num_rings + 1));
|
||||||
|
|
||||||
|
free(rings);
|
||||||
|
|
||||||
|
nverts = 1 + ctx->latest_v->index;
|
||||||
|
ntris = ctx->n_tris;
|
||||||
|
|
||||||
|
jint* out = (jint*) (*env)->GetPrimitiveArrayCritical(env, obj_out, &isCopy);
|
||||||
|
if (out == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
out[0] = nverts;
|
||||||
|
out[1] = ntris;
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_out, out, JNI_ABORT);
|
||||||
|
|
||||||
|
return (long) ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
jlong Java_org_oscim_renderer_sublayers_MeshLayer_tessellateD(JNIEnv *env, jclass c,
|
||||||
|
jdoubleArray obj_points, jint pos,
|
||||||
|
jshortArray obj_index, jint ipos,
|
||||||
|
jint num_rings) { //, jintArray obj_out) {
|
||||||
|
|
||||||
|
jboolean isCopy;
|
||||||
|
|
||||||
|
//printf("add %d %d %d\n", pos, ipos, num_rings);
|
||||||
|
|
||||||
|
double* orig_points = (double*) (*env)->GetPrimitiveArrayCritical(env, obj_points, &isCopy);
|
||||||
|
if (orig_points == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
const double *points = orig_points + pos;
|
||||||
|
|
||||||
|
jshort* orig_indices = (jshort*) (*env)->GetPrimitiveArrayCritical(env, obj_index, &isCopy);
|
||||||
|
if (orig_indices == NULL) {
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_points, orig_points, JNI_ABORT);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
jshort* indices = orig_indices + ipos;
|
||||||
|
|
||||||
|
const double **rings = malloc(sizeof(double*) * (num_rings + 1));
|
||||||
|
int offset = 0;
|
||||||
|
for (int i = 0; i < num_rings; i++) {
|
||||||
|
rings[i] = points + offset;
|
||||||
|
offset += indices[i];
|
||||||
|
}
|
||||||
|
rings[num_rings] = points + offset;
|
||||||
|
|
||||||
|
int nverts, ntris;
|
||||||
|
|
||||||
|
TessContext *ctx = tessellateD(NULL, &nverts, NULL, &ntris,
|
||||||
|
rings, rings + (num_rings + 1));
|
||||||
|
|
||||||
|
free(rings);
|
||||||
|
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_index, orig_indices, JNI_ABORT);
|
||||||
|
(*env)->ReleasePrimitiveArrayCritical(env, obj_points, orig_points, JNI_ABORT);
|
||||||
|
|
||||||
|
return (long) ctx;
|
||||||
|
}
|
||||||
@@ -7,22 +7,25 @@ void run_example(const double vertices_array[],
|
|||||||
int contours_size)
|
int contours_size)
|
||||||
{
|
{
|
||||||
double *coordinates_out;
|
double *coordinates_out;
|
||||||
|
|
||||||
int *tris_out;
|
int *tris_out;
|
||||||
int nverts, ntris, i;
|
int nverts, ntris, i;
|
||||||
|
|
||||||
const double *p = vertices_array;
|
const double *p = vertices_array;
|
||||||
/* const double **contours = contours_array; */
|
//const double **contours = contours_array;
|
||||||
|
|
||||||
tessellate(&coordinates_out, &nverts,
|
tessellateD(&coordinates_out, &nverts,
|
||||||
&tris_out, &ntris,
|
&tris_out, &ntris,
|
||||||
contours_array, contours_array + contours_size);
|
contours_array, contours_array + contours_size);
|
||||||
|
|
||||||
for (i=0; i<2 * nverts; ++i) {
|
|
||||||
fprintf(stdout, "%g ", coordinates_out[i]);
|
for (i=0; i< nverts; i += 1) {
|
||||||
|
fprintf(stdout, "%g %g, ", coordinates_out[i*2], coordinates_out[i*2+1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stdout, "\n");
|
fprintf(stdout, "\n");
|
||||||
for (i=0; i<3 * ntris; ++i) {
|
for (i=0; i< ntris; i += 1) {
|
||||||
fprintf(stdout, "%d ", tris_out[i]);
|
fprintf(stdout, "%d %d %d\n", tris_out[i*3], tris_out[i*3+1], tris_out[i*3+2]);
|
||||||
}
|
}
|
||||||
fprintf(stdout, "\n");
|
fprintf(stdout, "\n");
|
||||||
free(coordinates_out);
|
free(coordinates_out);
|
||||||
@@ -30,15 +33,23 @@ void run_example(const double vertices_array[],
|
|||||||
free(tris_out);
|
free(tris_out);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main() {
|
||||||
{
|
double a1[] = {
|
||||||
double a1[] = { 0, 0, 1, 5, 2, 0, -1, 3, 3, 3 };
|
0, 0,
|
||||||
const double *c1[] = {a1, a1+10};
|
1, 0,
|
||||||
int s1 = 2;
|
1, 1,
|
||||||
|
0, 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
const double *c1[] = {a1, a1 + 8};
|
||||||
|
|
||||||
run_example(a1, c1, 2);
|
run_example(a1, c1, 2);
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
double a2[] = { 0, 0, 3, 0, 3, 3, 0, 3,
|
double a2[] = { 0, 0, 3, 0, 3, 3, 0, 3,
|
||||||
1, 1, 2, 1, 2, 2, 1, 2 };
|
1, 1, 2, 1, 2, 2, 1, 2 };
|
||||||
|
|
||||||
|
|
||||||
const double *c2[] = {a2, a2+8, a2+16};
|
const double *c2[] = {a2, a2+8, a2+16};
|
||||||
int s2 = 3;
|
int s2 = 3;
|
||||||
run_example(a2, c2, s2);
|
run_example(a2, c2, s2);
|
||||||
276
jni/tessellate/normal.c
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
/*
|
||||||
|
* SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
|
||||||
|
* Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice including the dates of first publication and
|
||||||
|
* either this permission notice or a reference to
|
||||||
|
* http://oss.sgi.com/projects/FreeB/
|
||||||
|
* shall be included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*
|
||||||
|
* Except as contained in this notice, the name of Silicon Graphics, Inc.
|
||||||
|
* shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
* other dealings in this Software without prior written authorization from
|
||||||
|
* Silicon Graphics, Inc.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
** Author: Eric Veach, July 1994.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gluos.h"
|
||||||
|
#include "mesh.h"
|
||||||
|
#include "tess.h"
|
||||||
|
#include "normal.h"
|
||||||
|
#include <math.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
#ifndef FALSE
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define Dot(u,v) (u[0]*v[0] + u[1]*v[1] + u[2]*v[2])
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static void Normalize( GLdouble v[3] )
|
||||||
|
{
|
||||||
|
GLdouble len = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
|
||||||
|
|
||||||
|
assert( len > 0 );
|
||||||
|
len = sqrt( len );
|
||||||
|
v[0] /= len;
|
||||||
|
v[1] /= len;
|
||||||
|
v[2] /= len;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef ABS
|
||||||
|
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||||
|
|
||||||
|
static int LongAxis(GLdouble v[3])
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if (ABS(v[1]) > ABS(v[0])) {
|
||||||
|
i = 1;
|
||||||
|
}
|
||||||
|
if (ABS(v[2]) > ABS(v[i])) {
|
||||||
|
i = 2;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ComputeNormal(GLUtesselator *tess, GLdouble norm[3])
|
||||||
|
{
|
||||||
|
GLUvertex *v, *v1, *v2;
|
||||||
|
GLdouble c, tLen2, maxLen2;
|
||||||
|
GLdouble maxVal[3], minVal[3], d1[3], d2[3], tNorm[3];
|
||||||
|
GLUvertex *maxVert[3], *minVert[3];
|
||||||
|
GLUvertex *vHead = &tess->mesh->vHead;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
maxVal[0] = maxVal[1] = maxVal[2] = -2 * GLU_TESS_MAX_COORD;
|
||||||
|
minVal[0] = minVal[1] = minVal[2] = 2 * GLU_TESS_MAX_COORD;
|
||||||
|
|
||||||
|
for (v = vHead->next; v != vHead; v = v->next) {
|
||||||
|
for (i = 0; i < 3; ++i) {
|
||||||
|
c = v->coords[i];
|
||||||
|
if (c < minVal[i]) {
|
||||||
|
minVal[i] = c;
|
||||||
|
minVert[i] = v;
|
||||||
|
}
|
||||||
|
if (c > maxVal[i]) {
|
||||||
|
maxVal[i] = c;
|
||||||
|
maxVert[i] = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Find two vertices separated by at least 1/sqrt(3) of the maximum
|
||||||
|
* distance between any two vertices
|
||||||
|
*/
|
||||||
|
i = 0;
|
||||||
|
if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) {
|
||||||
|
i = 1;
|
||||||
|
}
|
||||||
|
if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) {
|
||||||
|
i = 2;
|
||||||
|
}
|
||||||
|
if (minVal[i] >= maxVal[i]) {
|
||||||
|
/* All vertices are the same -- normal doesn't matter */
|
||||||
|
norm[0] = 0;
|
||||||
|
norm[1] = 0;
|
||||||
|
norm[2] = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Look for a third vertex which forms the triangle with maximum area
|
||||||
|
* (Length of normal == twice the triangle area)
|
||||||
|
*/
|
||||||
|
maxLen2 = 0;
|
||||||
|
v1 = minVert[i];
|
||||||
|
v2 = maxVert[i];
|
||||||
|
d1[0] = v1->coords[0] - v2->coords[0];
|
||||||
|
d1[1] = v1->coords[1] - v2->coords[1];
|
||||||
|
d1[2] = v1->coords[2] - v2->coords[2];
|
||||||
|
for (v = vHead->next; v != vHead; v = v->next) {
|
||||||
|
d2[0] = v->coords[0] - v2->coords[0];
|
||||||
|
d2[1] = v->coords[1] - v2->coords[1];
|
||||||
|
d2[2] = v->coords[2] - v2->coords[2];
|
||||||
|
tNorm[0] = d1[1] * d2[2] - d1[2] * d2[1];
|
||||||
|
tNorm[1] = d1[2] * d2[0] - d1[0] * d2[2];
|
||||||
|
tNorm[2] = d1[0] * d2[1] - d1[1] * d2[0];
|
||||||
|
tLen2 = tNorm[0] * tNorm[0] + tNorm[1] * tNorm[1] + tNorm[2] * tNorm[2];
|
||||||
|
if (tLen2 > maxLen2) {
|
||||||
|
maxLen2 = tLen2;
|
||||||
|
norm[0] = tNorm[0];
|
||||||
|
norm[1] = tNorm[1];
|
||||||
|
norm[2] = tNorm[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (maxLen2 <= 0) {
|
||||||
|
/* All points lie on a single line -- any decent normal will do */
|
||||||
|
norm[0] = norm[1] = norm[2] = 0;
|
||||||
|
norm[LongAxis(d1)] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//printf("compute normal %f %f %f\n", norm[0], norm[1], norm[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CheckOrientation(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
GLdouble area;
|
||||||
|
GLUface *f, *fHead = &tess->mesh->fHead;
|
||||||
|
GLUvertex *v, *vHead = &tess->mesh->vHead;
|
||||||
|
GLUhalfEdge *e;
|
||||||
|
|
||||||
|
/* When we compute the normal automatically, we choose the orientation
|
||||||
|
* so that the sum of the signed areas of all contours is non-negative.
|
||||||
|
*/
|
||||||
|
area = 0;
|
||||||
|
for (f = fHead->next; f != fHead; f = f->next) {
|
||||||
|
e = f->anEdge;
|
||||||
|
if (e->winding <= 0)
|
||||||
|
continue;
|
||||||
|
do {
|
||||||
|
area += (e->Org->s - e->Dst->s) * (e->Org->t + e->Dst->t);
|
||||||
|
e = e->Lnext;
|
||||||
|
} while (e != f->anEdge);
|
||||||
|
}
|
||||||
|
if (area < 0) {
|
||||||
|
/* Reverse the orientation by flipping all the t-coordinates */
|
||||||
|
for (v = vHead->next; v != vHead; v = v->next) {
|
||||||
|
v->t = -v->t;
|
||||||
|
}
|
||||||
|
tess->tUnit[0] = -tess->tUnit[0];
|
||||||
|
tess->tUnit[1] = -tess->tUnit[1];
|
||||||
|
tess->tUnit[2] = -tess->tUnit[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef FOR_TRITE_TEST_PROGRAM
|
||||||
|
#include <stdlib.h>
|
||||||
|
extern int RandomSweep;
|
||||||
|
#define S_UNIT_X (RandomSweep ? (2*drand48()-1) : 1.0)
|
||||||
|
#define S_UNIT_Y (RandomSweep ? (2*drand48()-1) : 0.0)
|
||||||
|
#else
|
||||||
|
#if defined(SLANTED_SWEEP)
|
||||||
|
/* The "feature merging" is not intended to be complete. There are
|
||||||
|
* special cases where edges are nearly parallel to the sweep line
|
||||||
|
* which are not implemented. The algorithm should still behave
|
||||||
|
* robustly (ie. produce a reasonable tesselation) in the presence
|
||||||
|
* of such edges, however it may miss features which could have been
|
||||||
|
* merged. We could minimize this effect by choosing the sweep line
|
||||||
|
* direction to be something unusual (ie. not parallel to one of the
|
||||||
|
* coordinate axes).
|
||||||
|
*/
|
||||||
|
#define S_UNIT_X 0.50941539564955385 /* Pre-normalized */
|
||||||
|
#define S_UNIT_Y 0.86052074622010633
|
||||||
|
#else
|
||||||
|
#define S_UNIT_X 1.0
|
||||||
|
#define S_UNIT_Y 0.0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Determine the polygon normal and project vertices onto the plane
|
||||||
|
* of the polygon.
|
||||||
|
*/
|
||||||
|
void __gl_projectPolygon(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
GLUvertex *v, *vHead = &tess->mesh->vHead;
|
||||||
|
GLdouble norm[3];
|
||||||
|
GLdouble *sUnit, *tUnit;
|
||||||
|
int i, computedNormal = FALSE;
|
||||||
|
|
||||||
|
norm[0] = tess->normal[0];
|
||||||
|
norm[1] = tess->normal[1];
|
||||||
|
norm[2] = tess->normal[2];
|
||||||
|
if (norm[0] == 0 && norm[1] == 0 && norm[2] == 0) {
|
||||||
|
ComputeNormal(tess, norm);
|
||||||
|
computedNormal = TRUE;
|
||||||
|
}
|
||||||
|
sUnit = tess->sUnit;
|
||||||
|
tUnit = tess->tUnit;
|
||||||
|
i = LongAxis(norm);
|
||||||
|
|
||||||
|
#if defined(FOR_TRITE_TEST_PROGRAM) || defined(TRUE_PROJECT)
|
||||||
|
/* Choose the initial sUnit vector to be approximately perpendicular
|
||||||
|
* to the normal.
|
||||||
|
*/
|
||||||
|
Normalize( norm );
|
||||||
|
|
||||||
|
sUnit[i] = 0;
|
||||||
|
sUnit[(i+1)%3] = S_UNIT_X;
|
||||||
|
sUnit[(i+2)%3] = S_UNIT_Y;
|
||||||
|
|
||||||
|
/* Now make it exactly perpendicular */
|
||||||
|
w = Dot( sUnit, norm );
|
||||||
|
sUnit[0] -= w * norm[0];
|
||||||
|
sUnit[1] -= w * norm[1];
|
||||||
|
sUnit[2] -= w * norm[2];
|
||||||
|
Normalize( sUnit );
|
||||||
|
|
||||||
|
/* Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame */
|
||||||
|
tUnit[0] = norm[1]*sUnit[2] - norm[2]*sUnit[1];
|
||||||
|
tUnit[1] = norm[2]*sUnit[0] - norm[0]*sUnit[2];
|
||||||
|
tUnit[2] = norm[0]*sUnit[1] - norm[1]*sUnit[0];
|
||||||
|
Normalize( tUnit );
|
||||||
|
#else
|
||||||
|
/* Project perpendicular to a coordinate axis -- better numerically */
|
||||||
|
sUnit[i] = 0;
|
||||||
|
sUnit[(i + 1) % 3] = S_UNIT_X;
|
||||||
|
sUnit[(i + 2) % 3] = S_UNIT_Y;
|
||||||
|
|
||||||
|
tUnit[i] = 0;
|
||||||
|
tUnit[(i + 1) % 3] = (norm[i] > 0) ? -S_UNIT_Y : S_UNIT_Y;
|
||||||
|
tUnit[(i + 2) % 3] = (norm[i] > 0) ? S_UNIT_X : -S_UNIT_X;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Project the vertices onto the sweep plane */
|
||||||
|
for (v = vHead->next; v != vHead; v = v->next) {
|
||||||
|
v->s = Dot( v->coords, sUnit );
|
||||||
|
v->t = Dot( v->coords, tUnit );
|
||||||
|
}
|
||||||
|
if (computedNormal) {
|
||||||
|
CheckOrientation(tess);
|
||||||
|
}
|
||||||
|
}
|
||||||
529
jni/tessellate/render.c
Normal file
@@ -0,0 +1,529 @@
|
|||||||
|
/*
|
||||||
|
* SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
|
||||||
|
* Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice including the dates of first publication and
|
||||||
|
* either this permission notice or a reference to
|
||||||
|
* http://oss.sgi.com/projects/FreeB/
|
||||||
|
* shall be included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*
|
||||||
|
* Except as contained in this notice, the name of Silicon Graphics, Inc.
|
||||||
|
* shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
* other dealings in this Software without prior written authorization from
|
||||||
|
* Silicon Graphics, Inc.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
** Author: Eric Veach, July 1994.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gluos.h"
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "mesh.h"
|
||||||
|
#include "tess.h"
|
||||||
|
#include "render.h"
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
#ifndef FALSE
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* This structure remembers the information we need about a primitive
|
||||||
|
* to be able to render it later, once we have determined which
|
||||||
|
* primitive is able to use the most triangles.
|
||||||
|
*/
|
||||||
|
struct FaceCount {
|
||||||
|
long size; /* number of triangles used */
|
||||||
|
GLUhalfEdge *eStart; /* edge where this primitive starts */
|
||||||
|
void (*render)(GLUtesselator *, GLUhalfEdge *, long);
|
||||||
|
/* routine to render this primitive */
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct FaceCount MaximumFan(GLUhalfEdge *eOrig);
|
||||||
|
static struct FaceCount MaximumStrip(GLUhalfEdge *eOrig);
|
||||||
|
|
||||||
|
static void RenderFan(GLUtesselator *tess, GLUhalfEdge *eStart, long size);
|
||||||
|
static void RenderStrip(GLUtesselator *tess, GLUhalfEdge *eStart, long size);
|
||||||
|
static void RenderTriangle(GLUtesselator *tess, GLUhalfEdge *eStart,
|
||||||
|
long size);
|
||||||
|
|
||||||
|
static void RenderMaximumFaceGroup(GLUtesselator *tess, GLUface *fOrig);
|
||||||
|
static void RenderLonelyTriangles(GLUtesselator *tess, GLUface *head);
|
||||||
|
|
||||||
|
/************************ Strips and Fans decomposition ******************/
|
||||||
|
|
||||||
|
/* __gl_renderMesh( tess, mesh ) takes a mesh and breaks it into triangle
|
||||||
|
* fans, strips, and separate triangles. A substantial effort is made
|
||||||
|
* to use as few rendering primitives as possible (ie. to make the fans
|
||||||
|
* and strips as large as possible).
|
||||||
|
*
|
||||||
|
* The rendering output is provided as callbacks (see the api).
|
||||||
|
*/
|
||||||
|
void __gl_renderMesh(GLUtesselator *tess, GLUmesh *mesh)
|
||||||
|
{
|
||||||
|
GLUface *f;
|
||||||
|
|
||||||
|
/* Make a list of separate triangles so we can render them all at once */
|
||||||
|
tess->lonelyTriList = NULL;
|
||||||
|
|
||||||
|
for (f = mesh->fHead.next; f != &mesh->fHead; f = f->next) {
|
||||||
|
f->marked = FALSE;
|
||||||
|
}
|
||||||
|
for (f = mesh->fHead.next; f != &mesh->fHead; f = f->next) {
|
||||||
|
|
||||||
|
/* We examine all faces in an arbitrary order. Whenever we find
|
||||||
|
* an unprocessed face F, we output a group of faces including F
|
||||||
|
* whose size is maximum.
|
||||||
|
*/
|
||||||
|
if (f->inside && !f->marked) {
|
||||||
|
RenderMaximumFaceGroup(tess, f);
|
||||||
|
assert( f->marked);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tess->lonelyTriList != NULL) {
|
||||||
|
RenderLonelyTriangles(tess, tess->lonelyTriList);
|
||||||
|
tess->lonelyTriList = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RenderMaximumFaceGroup(GLUtesselator *tess, GLUface *fOrig)
|
||||||
|
{
|
||||||
|
/* We want to find the largest triangle fan or strip of unmarked faces
|
||||||
|
* which includes the given face fOrig. There are 3 possible fans
|
||||||
|
* passing through fOrig (one centered at each vertex), and 3 possible
|
||||||
|
* strips (one for each CCW permutation of the vertices). Our strategy
|
||||||
|
* is to try all of these, and take the primitive which uses the most
|
||||||
|
* triangles (a greedy approach).
|
||||||
|
*/
|
||||||
|
GLUhalfEdge *e = fOrig->anEdge;
|
||||||
|
struct FaceCount max, newFace;
|
||||||
|
|
||||||
|
max.size = 1;
|
||||||
|
max.eStart = e;
|
||||||
|
max.render = &RenderTriangle;
|
||||||
|
|
||||||
|
if (!tess->flagBoundary) {
|
||||||
|
newFace = MaximumFan(e);
|
||||||
|
if (newFace.size > max.size) {
|
||||||
|
max = newFace;
|
||||||
|
}
|
||||||
|
newFace = MaximumFan(e->Lnext);
|
||||||
|
if (newFace.size > max.size) {
|
||||||
|
max = newFace;
|
||||||
|
}
|
||||||
|
newFace = MaximumFan(e->Lprev);
|
||||||
|
if (newFace.size > max.size) {
|
||||||
|
max = newFace;
|
||||||
|
}
|
||||||
|
|
||||||
|
newFace = MaximumStrip(e);
|
||||||
|
if (newFace.size > max.size) {
|
||||||
|
max = newFace;
|
||||||
|
}
|
||||||
|
newFace = MaximumStrip(e->Lnext);
|
||||||
|
if (newFace.size > max.size) {
|
||||||
|
max = newFace;
|
||||||
|
}
|
||||||
|
newFace = MaximumStrip(e->Lprev);
|
||||||
|
if (newFace.size > max.size) {
|
||||||
|
max = newFace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(*(max.render))(tess, max.eStart, max.size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Macros which keep track of faces we have marked temporarily, and allow
|
||||||
|
* us to backtrack when necessary. With triangle fans, this is not
|
||||||
|
* really necessary, since the only awkward case is a loop of triangles
|
||||||
|
* around a single origin vertex. However with strips the situation is
|
||||||
|
* more complicated, and we need a general tracking method like the
|
||||||
|
* one here.
|
||||||
|
*/
|
||||||
|
#define Marked(f) (! (f)->inside || (f)->marked)
|
||||||
|
|
||||||
|
#define AddToTrail(f,t) ((f)->trail = (t), (t) = (f), (f)->marked = TRUE)
|
||||||
|
|
||||||
|
#define FreeTrail(t) do { \
|
||||||
|
while( (t) != NULL ) { \
|
||||||
|
(t)->marked = FALSE; t = (t)->trail; \
|
||||||
|
} \
|
||||||
|
} while(0) /* absorb trailing semicolon */
|
||||||
|
|
||||||
|
static struct FaceCount MaximumFan(GLUhalfEdge *eOrig)
|
||||||
|
{
|
||||||
|
/* eOrig->Lface is the face we want to render. We want to find the size
|
||||||
|
* of a maximal fan around eOrig->Org. To do this we just walk around
|
||||||
|
* the origin vertex as far as possible in both directions.
|
||||||
|
*/
|
||||||
|
struct FaceCount newFace = { 0, NULL, &RenderFan };
|
||||||
|
GLUface *trail = NULL;
|
||||||
|
GLUhalfEdge *e;
|
||||||
|
|
||||||
|
for (e = eOrig; !Marked( e->Lface ); e = e->Onext) {
|
||||||
|
AddToTrail( e->Lface, trail);
|
||||||
|
++newFace.size;
|
||||||
|
}
|
||||||
|
for (e = eOrig; !Marked( e->Rface ); e = e->Oprev) {
|
||||||
|
AddToTrail( e->Rface, trail);
|
||||||
|
++newFace.size;
|
||||||
|
}
|
||||||
|
newFace.eStart = e;
|
||||||
|
/*LINTED*/
|
||||||
|
FreeTrail( trail);
|
||||||
|
return newFace;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define IsEven(n) (((n) & 1) == 0)
|
||||||
|
|
||||||
|
static struct FaceCount MaximumStrip(GLUhalfEdge *eOrig)
|
||||||
|
{
|
||||||
|
/* Here we are looking for a maximal strip that contains the vertices
|
||||||
|
* eOrig->Org, eOrig->Dst, eOrig->Lnext->Dst (in that order or the
|
||||||
|
* reverse, such that all triangles are oriented CCW).
|
||||||
|
*
|
||||||
|
* Again we walk forward and backward as far as possible. However for
|
||||||
|
* strips there is a twist: to get CCW orientations, there must be
|
||||||
|
* an *even* number of triangles in the strip on one side of eOrig.
|
||||||
|
* We walk the strip starting on a side with an even number of triangles;
|
||||||
|
* if both side have an odd number, we are forced to shorten one side.
|
||||||
|
*/
|
||||||
|
struct FaceCount newFace = { 0, NULL, &RenderStrip };
|
||||||
|
long headSize = 0, tailSize = 0;
|
||||||
|
GLUface *trail = NULL;
|
||||||
|
GLUhalfEdge *e, *eTail, *eHead;
|
||||||
|
|
||||||
|
for (e = eOrig; !Marked( e->Lface ); ++tailSize, e = e->Onext) {
|
||||||
|
AddToTrail( e->Lface, trail);
|
||||||
|
++tailSize;
|
||||||
|
e = e->Dprev;
|
||||||
|
if (Marked( e->Lface ))
|
||||||
|
break;
|
||||||
|
AddToTrail( e->Lface, trail);
|
||||||
|
}
|
||||||
|
eTail = e;
|
||||||
|
|
||||||
|
for (e = eOrig; !Marked( e->Rface ); ++headSize, e = e->Dnext) {
|
||||||
|
AddToTrail( e->Rface, trail);
|
||||||
|
++headSize;
|
||||||
|
e = e->Oprev;
|
||||||
|
if (Marked( e->Rface ))
|
||||||
|
break;
|
||||||
|
AddToTrail( e->Rface, trail);
|
||||||
|
}
|
||||||
|
eHead = e;
|
||||||
|
|
||||||
|
newFace.size = tailSize + headSize;
|
||||||
|
if (IsEven( tailSize )) {
|
||||||
|
newFace.eStart = eTail->Sym;
|
||||||
|
}
|
||||||
|
else if (IsEven( headSize )) {
|
||||||
|
newFace.eStart = eHead;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Both sides have odd length, we must shorten one of them. In fact,
|
||||||
|
* we must start from eHead to guarantee inclusion of eOrig->Lface.
|
||||||
|
*/
|
||||||
|
--newFace.size;
|
||||||
|
newFace.eStart = eHead->Onext;
|
||||||
|
}
|
||||||
|
/*LINTED*/
|
||||||
|
FreeTrail( trail);
|
||||||
|
return newFace;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RenderTriangle(GLUtesselator *tess, GLUhalfEdge *e, long size)
|
||||||
|
{
|
||||||
|
/* Just add the triangle to a triangle list, so we can render all
|
||||||
|
* the separate triangles at once.
|
||||||
|
*/
|
||||||
|
assert( size == 1);
|
||||||
|
AddToTrail( e->Lface, tess->lonelyTriList);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RenderLonelyTriangles(GLUtesselator *tess, GLUface *f)
|
||||||
|
{
|
||||||
|
/* Now we render all the separate triangles which could not be
|
||||||
|
* grouped into a triangle fan or strip.
|
||||||
|
*/
|
||||||
|
GLUhalfEdge *e;
|
||||||
|
int newState;
|
||||||
|
int edgeState = -1; /* force edge state output for first vertex */
|
||||||
|
|
||||||
|
CALL_BEGIN_OR_BEGIN_DATA( GL_TRIANGLES);
|
||||||
|
|
||||||
|
for (; f != NULL; f = f->trail) {
|
||||||
|
/* Loop once for each edge (there will always be 3 edges) */
|
||||||
|
|
||||||
|
e = f->anEdge;
|
||||||
|
do {
|
||||||
|
if (tess->flagBoundary) {
|
||||||
|
/* Set the "edge state" to TRUE just before we output the
|
||||||
|
* first vertex of each edge on the polygon boundary.
|
||||||
|
*/
|
||||||
|
newState = !e->Rface->inside;
|
||||||
|
if (edgeState != newState) {
|
||||||
|
edgeState = newState;
|
||||||
|
CALL_EDGE_FLAG_OR_EDGE_FLAG_DATA( edgeState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Org->data);
|
||||||
|
|
||||||
|
e = e->Lnext;
|
||||||
|
} while (e != f->anEdge);
|
||||||
|
}
|
||||||
|
CALL_END_OR_END_DATA();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RenderFan(GLUtesselator *tess, GLUhalfEdge *e, long size)
|
||||||
|
{
|
||||||
|
/* Render as many CCW triangles as possible in a fan starting from
|
||||||
|
* edge "e". The fan *should* contain exactly "size" triangles
|
||||||
|
* (otherwise we've goofed up somewhere).
|
||||||
|
*/
|
||||||
|
CALL_BEGIN_OR_BEGIN_DATA( GL_TRIANGLE_FAN);
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Org->data);
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Dst->data);
|
||||||
|
|
||||||
|
while (!Marked( e->Lface )) {
|
||||||
|
e->Lface->marked = TRUE;
|
||||||
|
--size;
|
||||||
|
e = e->Onext;
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Dst->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert( size == 0);
|
||||||
|
CALL_END_OR_END_DATA();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RenderStrip(GLUtesselator *tess, GLUhalfEdge *e, long size)
|
||||||
|
{
|
||||||
|
/* Render as many CCW triangles as possible in a strip starting from
|
||||||
|
* edge "e". The strip *should* contain exactly "size" triangles
|
||||||
|
* (otherwise we've goofed up somewhere).
|
||||||
|
*/
|
||||||
|
CALL_BEGIN_OR_BEGIN_DATA( GL_TRIANGLE_STRIP);
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Org->data);
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Dst->data);
|
||||||
|
|
||||||
|
while (!Marked( e->Lface )) {
|
||||||
|
e->Lface->marked = TRUE;
|
||||||
|
--size;
|
||||||
|
e = e->Dprev;
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Org->data);
|
||||||
|
if (Marked( e->Lface ))
|
||||||
|
break;
|
||||||
|
|
||||||
|
e->Lface->marked = TRUE;
|
||||||
|
--size;
|
||||||
|
e = e->Onext;
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Dst->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert( size == 0);
|
||||||
|
CALL_END_OR_END_DATA();
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************ Boundary contour decomposition ******************/
|
||||||
|
|
||||||
|
/* __gl_renderBoundary( tess, mesh ) takes a mesh, and outputs one
|
||||||
|
* contour for each face marked "inside". The rendering output is
|
||||||
|
* provided as callbacks (see the api).
|
||||||
|
*/
|
||||||
|
void __gl_renderBoundary(GLUtesselator *tess, GLUmesh *mesh)
|
||||||
|
{
|
||||||
|
GLUface *f;
|
||||||
|
GLUhalfEdge *e;
|
||||||
|
|
||||||
|
for (f = mesh->fHead.next; f != &mesh->fHead; f = f->next) {
|
||||||
|
if (f->inside) {
|
||||||
|
CALL_BEGIN_OR_BEGIN_DATA( GL_LINE_LOOP);
|
||||||
|
e = f->anEdge;
|
||||||
|
do {
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( e->Org->data);
|
||||||
|
e = e->Lnext;
|
||||||
|
} while (e != f->anEdge);
|
||||||
|
CALL_END_OR_END_DATA();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************ Quick-and-dirty decomposition ******************/
|
||||||
|
|
||||||
|
#define SIGN_INCONSISTENT 2
|
||||||
|
|
||||||
|
static int ComputeNormal(GLUtesselator *tess, GLdouble norm[3], int check)
|
||||||
|
/*
|
||||||
|
* If check==FALSE, we compute the polygon normal and place it in norm[].
|
||||||
|
* If check==TRUE, we check that each triangle in the fan from v0 has a
|
||||||
|
* consistent orientation with respect to norm[]. If triangles are
|
||||||
|
* consistently oriented CCW, return 1; if CW, return -1; if all triangles
|
||||||
|
* are degenerate return 0; otherwise (no consistent orientation) return
|
||||||
|
* SIGN_INCONSISTENT.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
CachedVertex *v0 = tess->cache;
|
||||||
|
CachedVertex *vn = v0 + tess->cacheCount;
|
||||||
|
CachedVertex *vc;
|
||||||
|
GLdouble dot, xc, yc, zc, xp, yp, zp, n[3];
|
||||||
|
int sign = 0;
|
||||||
|
|
||||||
|
/* Find the polygon normal. It is important to get a reasonable
|
||||||
|
* normal even when the polygon is self-intersecting (eg. a bowtie).
|
||||||
|
* Otherwise, the computed normal could be very tiny, but perpendicular
|
||||||
|
* to the true plane of the polygon due to numerical noise. Then all
|
||||||
|
* the triangles would appear to be degenerate and we would incorrectly
|
||||||
|
* decompose the polygon as a fan (or simply not render it at all).
|
||||||
|
*
|
||||||
|
* We use a sum-of-triangles normal algorithm rather than the more
|
||||||
|
* efficient sum-of-trapezoids method (used in CheckOrientation()
|
||||||
|
* in normal.c). This lets us explicitly reverse the signed area
|
||||||
|
* of some triangles to get a reasonable normal in the self-intersecting
|
||||||
|
* case.
|
||||||
|
*/
|
||||||
|
if (!check) {
|
||||||
|
norm[0] = norm[1] = norm[2] = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
vc = v0 + 1;
|
||||||
|
xc = vc->coords[0] - v0->coords[0];
|
||||||
|
yc = vc->coords[1] - v0->coords[1];
|
||||||
|
zc = vc->coords[2] - v0->coords[2];
|
||||||
|
while (++vc < vn) {
|
||||||
|
xp = xc;
|
||||||
|
yp = yc;
|
||||||
|
zp = zc;
|
||||||
|
xc = vc->coords[0] - v0->coords[0];
|
||||||
|
yc = vc->coords[1] - v0->coords[1];
|
||||||
|
zc = vc->coords[2] - v0->coords[2];
|
||||||
|
|
||||||
|
/* Compute (vp - v0) cross (vc - v0) */
|
||||||
|
n[0] = yp * zc - zp * yc;
|
||||||
|
n[1] = zp * xc - xp * zc;
|
||||||
|
n[2] = xp * yc - yp * xc;
|
||||||
|
|
||||||
|
dot = n[0] * norm[0] + n[1] * norm[1] + n[2] * norm[2];
|
||||||
|
if (!check) {
|
||||||
|
/* Reverse the contribution of back-facing triangles to get
|
||||||
|
* a reasonable normal for self-intersecting polygons (see above)
|
||||||
|
*/
|
||||||
|
if (dot >= 0) {
|
||||||
|
norm[0] += n[0];
|
||||||
|
norm[1] += n[1];
|
||||||
|
norm[2] += n[2];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
norm[0] -= n[0];
|
||||||
|
norm[1] -= n[1];
|
||||||
|
norm[2] -= n[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dot != 0) {
|
||||||
|
/* Check the new orientation for consistency with previous triangles */
|
||||||
|
if (dot > 0) {
|
||||||
|
if (sign < 0)
|
||||||
|
return SIGN_INCONSISTENT;
|
||||||
|
sign = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (sign > 0)
|
||||||
|
return SIGN_INCONSISTENT;
|
||||||
|
sign = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//printf("%f, %f, %f -- %d\n", norm[0], norm[1], norm[2], sign);
|
||||||
|
|
||||||
|
return sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* __gl_renderCache( tess ) takes a single contour and tries to render it
|
||||||
|
* as a triangle fan. This handles convex polygons, as well as some
|
||||||
|
* non-convex polygons if we get lucky.
|
||||||
|
*
|
||||||
|
* Returns TRUE if the polygon was successfully rendered. The rendering
|
||||||
|
* output is provided as callbacks (see the api).
|
||||||
|
*/
|
||||||
|
GLboolean __gl_renderCache(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
CachedVertex *v0 = tess->cache;
|
||||||
|
CachedVertex *vn = v0 + tess->cacheCount;
|
||||||
|
CachedVertex *vc;
|
||||||
|
GLdouble norm[3];
|
||||||
|
int sign;
|
||||||
|
|
||||||
|
if (tess->cacheCount < 3) {
|
||||||
|
/* Degenerate contour -- no output */
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
norm[0] = tess->normal[0];
|
||||||
|
norm[1] = tess->normal[1];
|
||||||
|
norm[2] = tess->normal[2];
|
||||||
|
if (norm[0] == 0 && norm[1] == 0 && norm[2] == 0) {
|
||||||
|
ComputeNormal(tess, norm, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
sign = ComputeNormal(tess, norm, TRUE);
|
||||||
|
if (sign == SIGN_INCONSISTENT) {
|
||||||
|
/* Fan triangles did not have a consistent orientation */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (sign == 0) {
|
||||||
|
/* All triangles were degenerate */
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure we do the right thing for each winding rule */
|
||||||
|
switch (tess->windingRule) {
|
||||||
|
case GLU_TESS_WINDING_ODD:
|
||||||
|
case GLU_TESS_WINDING_NONZERO:
|
||||||
|
break;
|
||||||
|
case GLU_TESS_WINDING_POSITIVE:
|
||||||
|
if (sign < 0)
|
||||||
|
return TRUE;
|
||||||
|
break;
|
||||||
|
case GLU_TESS_WINDING_NEGATIVE:
|
||||||
|
if (sign > 0)
|
||||||
|
return TRUE;
|
||||||
|
break;
|
||||||
|
case GLU_TESS_WINDING_ABS_GEQ_TWO:
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CALL_BEGIN_OR_BEGIN_DATA( tess->boundaryOnly ? GL_LINE_LOOP
|
||||||
|
: (tess->cacheCount > 3) ? GL_TRIANGLE_FAN
|
||||||
|
: GL_TRIANGLES);
|
||||||
|
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( v0->data);
|
||||||
|
if (sign > 0) {
|
||||||
|
for (vc = v0 + 1; vc < vn; ++vc) {
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( vc->data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (vc = vn - 1; vc > v0; --vc) {
|
||||||
|
CALL_VERTEX_OR_VERTEX_DATA( vc->data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CALL_END_OR_END_DATA();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
650
jni/tessellate/tess.c
Normal file
@@ -0,0 +1,650 @@
|
|||||||
|
/*
|
||||||
|
* SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
|
||||||
|
* Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice including the dates of first publication and
|
||||||
|
* either this permission notice or a reference to
|
||||||
|
* http://oss.sgi.com/projects/FreeB/
|
||||||
|
* shall be included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*
|
||||||
|
* Except as contained in this notice, the name of Silicon Graphics, Inc.
|
||||||
|
* shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
* other dealings in this Software without prior written authorization from
|
||||||
|
* Silicon Graphics, Inc.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
** Author: Eric Veach, July 1994.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gluos.h"
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include "memalloc.h"
|
||||||
|
#include "tess.h"
|
||||||
|
#include "mesh.h"
|
||||||
|
#include "normal.h"
|
||||||
|
#include "sweep.h"
|
||||||
|
#include "tessmono.h"
|
||||||
|
#include "render.h"
|
||||||
|
|
||||||
|
#define GLU_TESS_DEFAULT_TOLERANCE 0.0
|
||||||
|
#define GLU_TESS_MESH 100112 /* void (*)(GLUmesh *mesh) */
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
#ifndef FALSE
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*ARGSUSED*/static void GLAPIENTRY noBegin(GLenum type) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/static void GLAPIENTRY noEdgeFlag(GLboolean boundaryEdge) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/static void GLAPIENTRY noVertex(void *data) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/static void GLAPIENTRY noEnd(void) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/static void GLAPIENTRY noError(GLenum errnum) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/static void GLAPIENTRY noCombine(GLdouble coords[3], void *data[4],
|
||||||
|
GLfloat weight[4], void **dataOut) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/static void GLAPIENTRY noMesh(GLUmesh *mesh) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/*ARGSUSED*/void GLAPIENTRY __gl_noBeginData(GLenum type,
|
||||||
|
void *polygonData) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/void GLAPIENTRY __gl_noEdgeFlagData(GLboolean boundaryEdge,
|
||||||
|
void *polygonData) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/void GLAPIENTRY __gl_noVertexData(void *data,
|
||||||
|
void *polygonData) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/void GLAPIENTRY __gl_noEndData(void *polygonData) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/void GLAPIENTRY __gl_noErrorData(GLenum errnum,
|
||||||
|
void *polygonData) {
|
||||||
|
}
|
||||||
|
/*ARGSUSED*/void GLAPIENTRY __gl_noCombineData(GLdouble coords[3],
|
||||||
|
void *data[4],
|
||||||
|
GLfloat weight[4],
|
||||||
|
void **outData,
|
||||||
|
void *polygonData) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Half-edges are allocated in pairs (see mesh.c) */
|
||||||
|
typedef struct {
|
||||||
|
GLUhalfEdge e, eSym;
|
||||||
|
} EdgePair;
|
||||||
|
|
||||||
|
#undef MAX
|
||||||
|
#define MAX(a,b) ((a) > (b) ? (a) : (b))
|
||||||
|
#define MAX_FAST_ALLOC (MAX(sizeof(EdgePair), \
|
||||||
|
MAX(sizeof(GLUvertex),sizeof(GLUface))))
|
||||||
|
|
||||||
|
GLUtesselator * GLAPIENTRY
|
||||||
|
gluNewTess(void)
|
||||||
|
{
|
||||||
|
GLUtesselator *tess;
|
||||||
|
|
||||||
|
/* Only initialize fields which can be changed by the api. Other fields
|
||||||
|
* are initialized where they are used.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (memInit(MAX_FAST_ALLOC) == 0) {
|
||||||
|
return 0; /* out of memory */
|
||||||
|
}
|
||||||
|
tess = (GLUtesselator *) memAlloc(sizeof(GLUtesselator));
|
||||||
|
if (tess == NULL) {
|
||||||
|
return 0; /* out of memory */
|
||||||
|
}
|
||||||
|
|
||||||
|
tess->state = T_DORMANT;
|
||||||
|
|
||||||
|
tess->normal[0] = 0;
|
||||||
|
tess->normal[1] = 0;
|
||||||
|
tess->normal[2] = 0;
|
||||||
|
|
||||||
|
tess->relTolerance = GLU_TESS_DEFAULT_TOLERANCE;
|
||||||
|
tess->windingRule = GLU_TESS_WINDING_ODD;
|
||||||
|
tess->flagBoundary = FALSE;
|
||||||
|
tess->boundaryOnly = FALSE;
|
||||||
|
|
||||||
|
tess->callBegin = &noBegin;
|
||||||
|
tess->callEdgeFlag = &noEdgeFlag;
|
||||||
|
tess->callVertex = &noVertex;
|
||||||
|
tess->callEnd = &noEnd;
|
||||||
|
|
||||||
|
tess->callError = &noError;
|
||||||
|
tess->callCombine = &noCombine;
|
||||||
|
tess->callMesh = &noMesh;
|
||||||
|
|
||||||
|
tess->callBeginData = &__gl_noBeginData;
|
||||||
|
tess->callEdgeFlagData = &__gl_noEdgeFlagData;
|
||||||
|
tess->callVertexData = &__gl_noVertexData;
|
||||||
|
tess->callEndData = &__gl_noEndData;
|
||||||
|
tess->callErrorData = &__gl_noErrorData;
|
||||||
|
tess->callCombineData = &__gl_noCombineData;
|
||||||
|
|
||||||
|
tess->polygonData = NULL;
|
||||||
|
|
||||||
|
return tess;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void MakeDormant(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
/* Return the tessellator to its original dormant state. */
|
||||||
|
|
||||||
|
if (tess->mesh != NULL) {
|
||||||
|
__gl_meshDeleteMesh(tess->mesh);
|
||||||
|
}
|
||||||
|
tess->state = T_DORMANT;
|
||||||
|
tess->lastEdge = NULL;
|
||||||
|
tess->mesh = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define RequireState( tess, s ) if( tess->state != s ) GotoState(tess,s)
|
||||||
|
|
||||||
|
static void GotoState(GLUtesselator *tess, enum TessState newState)
|
||||||
|
{
|
||||||
|
while (tess->state != newState) {
|
||||||
|
/* We change the current state one level at a time, to get to
|
||||||
|
* the desired state.
|
||||||
|
*/
|
||||||
|
if (tess->state < newState) {
|
||||||
|
switch (tess->state) {
|
||||||
|
case T_DORMANT:
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_BEGIN_POLYGON);
|
||||||
|
gluTessBeginPolygon(tess, NULL);
|
||||||
|
break;
|
||||||
|
case T_IN_POLYGON:
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_BEGIN_CONTOUR);
|
||||||
|
gluTessBeginContour(tess);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
switch (tess->state) {
|
||||||
|
case T_IN_CONTOUR:
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_END_CONTOUR);
|
||||||
|
gluTessEndContour(tess);
|
||||||
|
break;
|
||||||
|
case T_IN_POLYGON:
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_END_POLYGON);
|
||||||
|
/* gluTessEndPolygon( tess ) is too much work! */
|
||||||
|
MakeDormant(tess);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluDeleteTess(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
RequireState( tess, T_DORMANT);
|
||||||
|
memFree(tess);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessProperty(GLUtesselator *tess, GLenum which, GLdouble value)
|
||||||
|
{
|
||||||
|
GLenum windingRule;
|
||||||
|
|
||||||
|
switch (which) {
|
||||||
|
case GLU_TESS_TOLERANCE:
|
||||||
|
if (value < 0.0 || value > 1.0)
|
||||||
|
break;
|
||||||
|
tess->relTolerance = value;
|
||||||
|
return;
|
||||||
|
|
||||||
|
case GLU_TESS_WINDING_RULE:
|
||||||
|
windingRule = (GLenum) value;
|
||||||
|
if (windingRule != value)
|
||||||
|
break; /* not an integer */
|
||||||
|
|
||||||
|
switch (windingRule) {
|
||||||
|
case GLU_TESS_WINDING_ODD:
|
||||||
|
case GLU_TESS_WINDING_NONZERO:
|
||||||
|
case GLU_TESS_WINDING_POSITIVE:
|
||||||
|
case GLU_TESS_WINDING_NEGATIVE:
|
||||||
|
case GLU_TESS_WINDING_ABS_GEQ_TWO:
|
||||||
|
tess->windingRule = windingRule;
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case GLU_TESS_BOUNDARY_ONLY:
|
||||||
|
tess->boundaryOnly = (value != 0);
|
||||||
|
return;
|
||||||
|
|
||||||
|
default:
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_INVALID_ENUM);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_INVALID_VALUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns tessellator property */
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluGetTessProperty(GLUtesselator *tess, GLenum which, GLdouble *value)
|
||||||
|
{
|
||||||
|
switch (which) {
|
||||||
|
case GLU_TESS_TOLERANCE:
|
||||||
|
/* tolerance should be in range [0..1] */
|
||||||
|
assert(0.0 <= tess->relTolerance && tess->relTolerance <= 1.0);
|
||||||
|
*value = tess->relTolerance;
|
||||||
|
break;
|
||||||
|
case GLU_TESS_WINDING_RULE:
|
||||||
|
assert(tess->windingRule == GLU_TESS_WINDING_ODD ||
|
||||||
|
tess->windingRule == GLU_TESS_WINDING_NONZERO ||
|
||||||
|
tess->windingRule == GLU_TESS_WINDING_POSITIVE ||
|
||||||
|
tess->windingRule == GLU_TESS_WINDING_NEGATIVE ||
|
||||||
|
tess->windingRule == GLU_TESS_WINDING_ABS_GEQ_TWO);
|
||||||
|
*value = tess->windingRule;
|
||||||
|
break;
|
||||||
|
case GLU_TESS_BOUNDARY_ONLY:
|
||||||
|
assert(tess->boundaryOnly == TRUE || tess->boundaryOnly == FALSE);
|
||||||
|
*value = tess->boundaryOnly;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
*value = 0.0;
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_INVALID_ENUM);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} /* gluGetTessProperty() */
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessNormal(GLUtesselator *tess, GLdouble x, GLdouble y, GLdouble z)
|
||||||
|
{
|
||||||
|
tess->normal[0] = x;
|
||||||
|
tess->normal[1] = y;
|
||||||
|
tess->normal[2] = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessCallback(GLUtesselator *tess, GLenum which, _GLUfuncptr fn)
|
||||||
|
{
|
||||||
|
switch (which) {
|
||||||
|
case GLU_TESS_BEGIN:
|
||||||
|
tess->callBegin = (fn == NULL) ? &noBegin : (void (GLAPIENTRY *)(GLenum)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_BEGIN_DATA:
|
||||||
|
tess->callBeginData = (fn == NULL) ?
|
||||||
|
&__gl_noBeginData :
|
||||||
|
(void (GLAPIENTRY *)(GLenum, void *)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_EDGE_FLAG:
|
||||||
|
tess->callEdgeFlag = (fn == NULL) ? &noEdgeFlag :
|
||||||
|
(void (GLAPIENTRY *)(GLboolean)) fn;
|
||||||
|
/* If the client wants boundary edges to be flagged,
|
||||||
|
* we render everything as separate triangles (no strips or fans).
|
||||||
|
*/
|
||||||
|
tess->flagBoundary = (fn != NULL);
|
||||||
|
return;
|
||||||
|
case GLU_TESS_EDGE_FLAG_DATA:
|
||||||
|
tess->callEdgeFlagData = (fn == NULL) ?
|
||||||
|
&__gl_noEdgeFlagData :
|
||||||
|
(void (GLAPIENTRY *)(GLboolean, void *)) fn;
|
||||||
|
/* If the client wants boundary edges to be flagged,
|
||||||
|
* we render everything as separate triangles (no strips or fans).
|
||||||
|
*/
|
||||||
|
tess->flagBoundary = (fn != NULL);
|
||||||
|
return;
|
||||||
|
case GLU_TESS_VERTEX:
|
||||||
|
tess->callVertex = (fn == NULL) ? &noVertex :
|
||||||
|
(void (GLAPIENTRY *)(void *)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_VERTEX_DATA:
|
||||||
|
tess->callVertexData = (fn == NULL) ?
|
||||||
|
&__gl_noVertexData :
|
||||||
|
(void (GLAPIENTRY *)(void *, void *)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_END:
|
||||||
|
tess->callEnd = (fn == NULL) ? &noEnd : (void (GLAPIENTRY *)(void)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_END_DATA:
|
||||||
|
tess->callEndData = (fn == NULL) ? &__gl_noEndData :
|
||||||
|
(void (GLAPIENTRY *)(void *)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_ERROR:
|
||||||
|
tess->callError = (fn == NULL) ? &noError : (void (GLAPIENTRY *)(GLenum)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_ERROR_DATA:
|
||||||
|
tess->callErrorData = (fn == NULL) ?
|
||||||
|
&__gl_noErrorData :
|
||||||
|
(void (GLAPIENTRY *)(GLenum, void *)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_COMBINE:
|
||||||
|
tess->callCombine =
|
||||||
|
(fn == NULL) ? &noCombine :
|
||||||
|
(void (GLAPIENTRY *)(GLdouble[3], void *[4], GLfloat[4], void **)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_COMBINE_DATA:
|
||||||
|
tess->callCombineData = (fn == NULL) ? &__gl_noCombineData :
|
||||||
|
(void (GLAPIENTRY *)(GLdouble[3],
|
||||||
|
void *[4],
|
||||||
|
GLfloat[4],
|
||||||
|
void **,
|
||||||
|
void *)) fn;
|
||||||
|
return;
|
||||||
|
case GLU_TESS_MESH:
|
||||||
|
tess->callMesh = (fn == NULL) ? &noMesh : (void (GLAPIENTRY *)(GLUmesh *)) fn;
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_INVALID_ENUM);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int AddVertex(GLUtesselator *tess, GLdouble coords[3], void *data)
|
||||||
|
{
|
||||||
|
GLUhalfEdge *e;
|
||||||
|
|
||||||
|
e = tess->lastEdge;
|
||||||
|
if (e == NULL) {
|
||||||
|
/* Make a self-loop (one vertex, one edge). */
|
||||||
|
|
||||||
|
e = __gl_meshMakeEdge(tess->mesh);
|
||||||
|
if (e == NULL)
|
||||||
|
return 0;
|
||||||
|
if (!__gl_meshSplice(e, e->Sym))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Create a new vertex and edge which immediately follow e
|
||||||
|
* in the ordering around the left face.
|
||||||
|
*/
|
||||||
|
if (__gl_meshSplitEdge(e) == NULL)
|
||||||
|
return 0;
|
||||||
|
e = e->Lnext;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The new vertex is now e->Org. */
|
||||||
|
e->Org->data = data;
|
||||||
|
e->Org->coords[0] = coords[0];
|
||||||
|
e->Org->coords[1] = coords[1];
|
||||||
|
e->Org->coords[2] = coords[2];
|
||||||
|
|
||||||
|
/* The winding of an edge says how the winding number changes as we
|
||||||
|
* cross from the edge''s right face to its left face. We add the
|
||||||
|
* vertices in such an order that a CCW contour will add +1 to
|
||||||
|
* the winding number of the region inside the contour.
|
||||||
|
*/
|
||||||
|
e->winding = 1;
|
||||||
|
e->Sym->winding = -1;
|
||||||
|
|
||||||
|
tess->lastEdge = e;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CacheVertex(GLUtesselator *tess, GLdouble coords[3], void *data)
|
||||||
|
{
|
||||||
|
CachedVertex *v = &tess->cache[tess->cacheCount];
|
||||||
|
|
||||||
|
v->data = data;
|
||||||
|
v->coords[0] = coords[0];
|
||||||
|
v->coords[1] = coords[1];
|
||||||
|
v->coords[2] = coords[2];
|
||||||
|
++tess->cacheCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int EmptyCache(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
CachedVertex *v = tess->cache;
|
||||||
|
CachedVertex *vLast;
|
||||||
|
|
||||||
|
tess->mesh = __gl_meshNewMesh();
|
||||||
|
if (tess->mesh == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (vLast = v + tess->cacheCount; v < vLast; ++v) {
|
||||||
|
if (!AddVertex(tess, v->coords, v->data))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
tess->cacheCount = 0;
|
||||||
|
tess->emptyCache = FALSE;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data)
|
||||||
|
{
|
||||||
|
int i, tooLarge = FALSE;
|
||||||
|
GLdouble x, clamped[3];
|
||||||
|
|
||||||
|
RequireState( tess, T_IN_CONTOUR);
|
||||||
|
|
||||||
|
if (tess->emptyCache) {
|
||||||
|
if (!EmptyCache(tess)) {
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_OUT_OF_MEMORY);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tess->lastEdge = NULL;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 3; ++i) {
|
||||||
|
x = coords[i];
|
||||||
|
if (x < -GLU_TESS_MAX_COORD) {
|
||||||
|
x = -GLU_TESS_MAX_COORD;
|
||||||
|
tooLarge = TRUE;
|
||||||
|
}
|
||||||
|
if (x > GLU_TESS_MAX_COORD) {
|
||||||
|
x = GLU_TESS_MAX_COORD;
|
||||||
|
tooLarge = TRUE;
|
||||||
|
}
|
||||||
|
clamped[i] = x;
|
||||||
|
}
|
||||||
|
if (tooLarge) {
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_TESS_COORD_TOO_LARGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tess->mesh == NULL) {
|
||||||
|
if (tess->cacheCount < TESS_MAX_CACHE) {
|
||||||
|
CacheVertex(tess, clamped, data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!EmptyCache(tess)) {
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_OUT_OF_MEMORY);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!AddVertex(tess, clamped, data)) {
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessBeginPolygon(GLUtesselator *tess, void *data)
|
||||||
|
{
|
||||||
|
RequireState( tess, T_DORMANT);
|
||||||
|
|
||||||
|
tess->state = T_IN_POLYGON;
|
||||||
|
tess->cacheCount = 0;
|
||||||
|
tess->emptyCache = FALSE;
|
||||||
|
tess->mesh = NULL;
|
||||||
|
|
||||||
|
tess->polygonData = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessBeginContour(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
RequireState( tess, T_IN_POLYGON);
|
||||||
|
|
||||||
|
tess->state = T_IN_CONTOUR;
|
||||||
|
tess->lastEdge = NULL;
|
||||||
|
if (tess->cacheCount > 0) {
|
||||||
|
/* Just set a flag so we don't get confused by empty contours
|
||||||
|
* -- these can be generated accidentally with the obsolete
|
||||||
|
* NextContour() interface.
|
||||||
|
*/
|
||||||
|
tess->emptyCache = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessEndContour(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
RequireState( tess, T_IN_CONTOUR);
|
||||||
|
tess->state = T_IN_POLYGON;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluTessEndPolygon(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
GLUmesh *mesh;
|
||||||
|
|
||||||
|
if (setjmp(tess->env) != 0) {
|
||||||
|
/* come back here if out of memory */
|
||||||
|
CALL_ERROR_OR_ERROR_DATA( GLU_OUT_OF_MEMORY);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RequireState( tess, T_IN_POLYGON);
|
||||||
|
tess->state = T_DORMANT;
|
||||||
|
|
||||||
|
if (tess->mesh == NULL) {
|
||||||
|
if (!tess->flagBoundary && tess->callMesh == &noMesh) {
|
||||||
|
|
||||||
|
/* Try some special code to make the easy cases go quickly
|
||||||
|
* (eg. convex polygons). This code does NOT handle multiple contours,
|
||||||
|
* intersections, edge flags, and of course it does not generate
|
||||||
|
* an explicit mesh either.
|
||||||
|
*/
|
||||||
|
if (__gl_renderCache(tess)) {
|
||||||
|
tess->polygonData = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!EmptyCache(tess))
|
||||||
|
longjmp(tess->env, 1); /* could've used a label*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Determine the polygon normal and project vertices onto the plane
|
||||||
|
* of the polygon.
|
||||||
|
*/
|
||||||
|
__gl_projectPolygon(tess);
|
||||||
|
|
||||||
|
/* __gl_computeInterior( tess ) computes the planar arrangement specified
|
||||||
|
* by the given contours, and further subdivides this arrangement
|
||||||
|
* into regions. Each region is marked "inside" if it belongs
|
||||||
|
* to the polygon, according to the rule given by tess->windingRule.
|
||||||
|
* Each interior region is guaranteed be monotone.
|
||||||
|
*/
|
||||||
|
if (!__gl_computeInterior(tess)) {
|
||||||
|
longjmp(tess->env, 1); /* could've used a label */
|
||||||
|
}
|
||||||
|
|
||||||
|
mesh = tess->mesh;
|
||||||
|
if (!tess->fatalError) {
|
||||||
|
int rc = 1;
|
||||||
|
|
||||||
|
/* If the user wants only the boundary contours, we throw away all edges
|
||||||
|
* except those which separate the interior from the exterior.
|
||||||
|
* Otherwise we tessellate all the regions marked "inside".
|
||||||
|
*/
|
||||||
|
if (tess->boundaryOnly) {
|
||||||
|
rc = __gl_meshSetWindingNumber(mesh, 1, TRUE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rc = __gl_meshTessellateInterior(mesh);
|
||||||
|
}
|
||||||
|
if (rc == 0)
|
||||||
|
longjmp(tess->env, 1); /* could've used a label */
|
||||||
|
|
||||||
|
__gl_meshCheckMesh(mesh);
|
||||||
|
|
||||||
|
if (tess->callBegin != &noBegin || tess->callEnd != &noEnd
|
||||||
|
|| tess->callVertex != &noVertex || tess->callEdgeFlag != &noEdgeFlag
|
||||||
|
|| tess->callBeginData != &__gl_noBeginData
|
||||||
|
|| tess->callEndData != &__gl_noEndData
|
||||||
|
|| tess->callVertexData != &__gl_noVertexData
|
||||||
|
|| tess->callEdgeFlagData != &__gl_noEdgeFlagData)
|
||||||
|
{
|
||||||
|
if (tess->boundaryOnly) {
|
||||||
|
__gl_renderBoundary(tess, mesh); /* output boundary contours */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
__gl_renderMesh(tess, mesh); /* output strips and fans */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tess->callMesh != &noMesh) {
|
||||||
|
|
||||||
|
/* Throw away the exterior faces, so that all faces are interior.
|
||||||
|
* This way the user doesn't have to check the "inside" flag,
|
||||||
|
* and we don't need to even reveal its existence. It also leaves
|
||||||
|
* the freedom for an implementation to not generate the exterior
|
||||||
|
* faces in the first place.
|
||||||
|
*/
|
||||||
|
__gl_meshDiscardExterior(mesh);
|
||||||
|
(*tess->callMesh)(mesh); /* user wants the mesh itself */
|
||||||
|
tess->mesh = NULL;
|
||||||
|
tess->polygonData = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__gl_meshDeleteMesh(mesh);
|
||||||
|
tess->polygonData = NULL;
|
||||||
|
tess->mesh = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*XXXblythe unused function*/
|
||||||
|
#if 0
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluDeleteMesh( GLUmesh *mesh )
|
||||||
|
{
|
||||||
|
__gl_meshDeleteMesh( mesh );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*******************************************************/
|
||||||
|
|
||||||
|
/* Obsolete calls -- for backward compatibility */
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluBeginPolygon(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
gluTessBeginPolygon(tess, NULL);
|
||||||
|
gluTessBeginContour(tess);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*ARGSUSED*/
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluNextContour(GLUtesselator *tess, GLenum type)
|
||||||
|
{
|
||||||
|
gluTessEndContour(tess);
|
||||||
|
gluTessBeginContour(tess);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLAPIENTRY
|
||||||
|
gluEndPolygon(GLUtesselator *tess)
|
||||||
|
{
|
||||||
|
gluTessEndContour(tess);
|
||||||
|
gluTessEndPolygon(tess);
|
||||||
|
}
|
||||||
@@ -1,42 +1,12 @@
|
|||||||
#include <jni.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "glu.h"
|
#include "glu.h"
|
||||||
#include "tess.h"
|
#include "tess.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#include "tessellate.h"
|
||||||
#include <android/log.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef uintptr_t
|
|
||||||
typedef unsigned long uintptr_t;
|
|
||||||
#endif
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
typedef struct Triangle {
|
|
||||||
int v[3];
|
|
||||||
struct Triangle *prev;
|
|
||||||
} Triangle;
|
|
||||||
|
|
||||||
typedef struct Vertex {
|
|
||||||
double pt[3];
|
|
||||||
int index;
|
|
||||||
struct Vertex *prev;
|
|
||||||
} Vertex;
|
|
||||||
|
|
||||||
typedef struct TessContext {
|
|
||||||
Triangle *latest_t;
|
|
||||||
int n_tris;
|
|
||||||
|
|
||||||
Vertex *v_prev;
|
|
||||||
Vertex *v_prevprev;
|
|
||||||
Vertex *latest_v;
|
|
||||||
GLenum current_mode;
|
|
||||||
int odd_even_strip;
|
|
||||||
|
|
||||||
void (*vertex_cb)(Vertex *, struct TessContext *);
|
|
||||||
} TessContext;
|
|
||||||
|
|
||||||
void skip_vertex(Vertex *v, TessContext *ctx);
|
void skip_vertex(Vertex *v, TessContext *ctx);
|
||||||
|
|
||||||
@@ -54,6 +24,7 @@ TessContext *new_tess_context()
|
|||||||
result->v_prev = NULL;
|
result->v_prev = NULL;
|
||||||
result->vertex_cb = &skip_vertex;
|
result->vertex_cb = &skip_vertex;
|
||||||
result->odd_even_strip = 0;
|
result->odd_even_strip = 0;
|
||||||
|
result->reversed = 0;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,7 +138,7 @@ void begin(GLenum which, void *poly_data)
|
|||||||
ctx->vertex_cb = &fan_vertex;
|
ctx->vertex_cb = &fan_vertex;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf(stderr, "ERROR, can't handle %d\n", (int) which);
|
//printf(stderr, "ERROR, can't handle %d\n", (int) which);
|
||||||
ctx->vertex_cb = &skip_vertex;
|
ctx->vertex_cb = &skip_vertex;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -210,8 +181,37 @@ void write_output(TessContext *ctx, float **coordinates_out, int **tris_out, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void write_outputD(TessContext *ctx, double **coordinates_out, int **tris_out, int *vc, int *tc)
|
||||||
|
{
|
||||||
|
int n_verts = 1 + ctx->latest_v->index;
|
||||||
|
*vc = n_verts;
|
||||||
|
int n_tris_copy = ctx->n_tris;
|
||||||
|
*tc = ctx->n_tris;
|
||||||
|
*coordinates_out = malloc(n_verts * sizeof(double) * 2);
|
||||||
|
*tris_out = (ctx->n_tris ? malloc(ctx->n_tris * sizeof(int) * 3) : NULL);
|
||||||
|
|
||||||
|
while (ctx->latest_v) {
|
||||||
|
(*coordinates_out)[2 * ctx->latest_v->index] = ctx->latest_v->pt[0];
|
||||||
|
(*coordinates_out)[2 * ctx->latest_v->index + 1] = ctx->latest_v->pt[1];
|
||||||
|
Vertex *prev = ctx->latest_v->prev;
|
||||||
|
free(ctx->latest_v);
|
||||||
|
ctx->latest_v = prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (ctx->latest_t) {
|
||||||
|
(*tris_out)[3 * (n_tris_copy - 1)] = ctx->latest_t->v[0];
|
||||||
|
(*tris_out)[3 * (n_tris_copy - 1) + 1] = ctx->latest_t->v[1];
|
||||||
|
(*tris_out)[3 * (n_tris_copy - 1) + 2] = ctx->latest_t->v[2];
|
||||||
|
Triangle *prev = ctx->latest_t->prev;
|
||||||
|
free(ctx->latest_t);
|
||||||
|
ctx->latest_t = prev;
|
||||||
|
n_tris_copy--;
|
||||||
|
}
|
||||||
|
}
|
||||||
TessContext *tessellate(
|
TessContext *tessellate(
|
||||||
|
float **verts,
|
||||||
int *nverts,
|
int *nverts,
|
||||||
|
int **tris,
|
||||||
int *ntris,
|
int *ntris,
|
||||||
const float **contoursbegin,
|
const float **contoursbegin,
|
||||||
const float **contoursend)
|
const float **contoursend)
|
||||||
@@ -229,6 +229,7 @@ TessContext *tessellate(
|
|||||||
gluTessCallback(tess, GLU_TESS_COMBINE_DATA, (GLvoid (*)()) &combine);
|
gluTessCallback(tess, GLU_TESS_COMBINE_DATA, (GLvoid (*)()) &combine);
|
||||||
|
|
||||||
gluTessBeginPolygon(tess, ctx);
|
gluTessBeginPolygon(tess, ctx);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
contourbegin = *contoursbegin++;
|
contourbegin = *contoursbegin++;
|
||||||
contourend = *contoursbegin;
|
contourend = *contoursbegin;
|
||||||
@@ -242,141 +243,66 @@ TessContext *tessellate(
|
|||||||
} while (contoursbegin != (contoursend - 1));
|
} while (contoursbegin != (contoursend - 1));
|
||||||
gluTessEndPolygon(tess);
|
gluTessEndPolygon(tess);
|
||||||
|
|
||||||
//write_output(ctx, verts, tris, nverts, ntris);
|
#ifdef TEST
|
||||||
//destroy_tess_context(ctx);
|
write_output(ctx, verts, tris, nverts, ntris);
|
||||||
|
destroy_tess_context(ctx);
|
||||||
|
#else
|
||||||
gluDeleteTess(tess);
|
gluDeleteTess(tess);
|
||||||
|
#endif
|
||||||
|
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
#ifdef __ANDROID__
|
|
||||||
#define printf(...) __android_log_print(ANDROID_LOG_DEBUG, "Tesselate", __VA_ARGS__)
|
TessContext *tessellateD(
|
||||||
|
double **verts,
|
||||||
|
int *nverts,
|
||||||
|
int **tris,
|
||||||
|
int *ntris,
|
||||||
|
const double **contoursbegin,
|
||||||
|
const double **contoursend)
|
||||||
|
{
|
||||||
|
const double *contourbegin, *contourend;
|
||||||
|
Vertex *current_vertex;
|
||||||
|
GLUtesselator *tess;
|
||||||
|
TessContext *ctx;
|
||||||
|
|
||||||
|
tess = gluNewTess();
|
||||||
|
ctx = new_tess_context();
|
||||||
|
|
||||||
|
|
||||||
|
//tess->normal[2] = -1;
|
||||||
|
|
||||||
|
gluTessCallback(tess, GLU_TESS_VERTEX_DATA, (GLvoid (*)()) &vertex);
|
||||||
|
gluTessCallback(tess, GLU_TESS_BEGIN_DATA, (GLvoid (*)()) &begin);
|
||||||
|
gluTessCallback(tess, GLU_TESS_COMBINE_DATA, (GLvoid (*)()) &combine);
|
||||||
|
|
||||||
|
gluTessBeginPolygon(tess, ctx);
|
||||||
|
|
||||||
|
do {
|
||||||
|
//printf("begin contour\n");
|
||||||
|
contourbegin = *contoursbegin++;
|
||||||
|
contourend = *contoursbegin;
|
||||||
|
|
||||||
|
gluTessBeginContour(tess);
|
||||||
|
|
||||||
|
while (contourbegin != contourend) {
|
||||||
|
//printf("add point %f %f \n", contourbegin[0], contourbegin[1]);
|
||||||
|
current_vertex = new_vertex(ctx, contourbegin[0], contourbegin[1]);
|
||||||
|
contourbegin += 2;
|
||||||
|
gluTessVertex(tess, current_vertex->pt, current_vertex);
|
||||||
|
}
|
||||||
|
gluTessEndContour(tess);
|
||||||
|
} while (contoursbegin != (contoursend - 1));
|
||||||
|
|
||||||
|
gluTessEndPolygon(tess);
|
||||||
|
|
||||||
|
#ifdef TEST
|
||||||
|
write_outputD(ctx, verts, tris, nverts, ntris);
|
||||||
|
destroy_tess_context(ctx);
|
||||||
|
#else
|
||||||
|
gluDeleteTess(tess);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CAST_CTX(x) (TessContext *)(uintptr_t) x
|
return ctx;
|
||||||
|
|
||||||
void Java_org_oscim_renderer_sublayers_MeshLayer_tessFinish(JNIEnv *env, jclass c,
|
|
||||||
jlong ptr_context) {
|
|
||||||
|
|
||||||
TessContext *ctx = CAST_CTX(ptr_context);
|
|
||||||
|
|
||||||
while (ctx->latest_v) {
|
|
||||||
Vertex *prev = ctx->latest_v->prev;
|
|
||||||
free(ctx->latest_v);
|
|
||||||
ctx->latest_v = prev;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (ctx->latest_t) {
|
|
||||||
Triangle *prev = ctx->latest_t->prev;
|
|
||||||
free(ctx->latest_t);
|
|
||||||
ctx->latest_t = prev;
|
|
||||||
}
|
|
||||||
|
|
||||||
destroy_tess_context(ctx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
jint Java_org_oscim_renderer_sublayers_MeshLayer_tessGetCoordinates(JNIEnv *env, jclass c,
|
|
||||||
jlong ptr_context, jshortArray obj_coords, jfloat scale) {
|
|
||||||
|
|
||||||
TessContext *ctx = CAST_CTX(ptr_context);
|
|
||||||
|
|
||||||
int length = (*env)->GetArrayLength(env, obj_coords);
|
|
||||||
|
|
||||||
jshort* coords = (jshort*) (*env)->GetPrimitiveArrayCritical(env, obj_coords, 0);
|
|
||||||
if (coords == NULL) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int n_verts = 1 + ctx->latest_v->index;
|
|
||||||
int n_tris_copy = ctx->n_tris;
|
|
||||||
|
|
||||||
int cnt = 0;
|
|
||||||
for (; ctx->latest_v && cnt < length; cnt += 2) {
|
|
||||||
coords[cnt + 0] = (ctx->latest_v->pt[0] * scale) + 0.5f;
|
|
||||||
coords[cnt + 1] = (ctx->latest_v->pt[1] * scale) + 0.5f;
|
|
||||||
Vertex *prev = ctx->latest_v->prev;
|
|
||||||
free(ctx->latest_v);
|
|
||||||
ctx->latest_v = prev;
|
|
||||||
}
|
|
||||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_coords, coords, JNI_ABORT);
|
|
||||||
|
|
||||||
return cnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
jint Java_org_oscim_renderer_sublayers_MeshLayer_tessGetIndices(JNIEnv *env, jclass c,
|
|
||||||
jlong ptr_context, jshortArray obj_indices) {
|
|
||||||
|
|
||||||
TessContext *ctx = CAST_CTX(ptr_context);
|
|
||||||
|
|
||||||
int length = (*env)->GetArrayLength(env, obj_indices);
|
|
||||||
|
|
||||||
jshort* tris = (jshort*) (*env)->GetPrimitiveArrayCritical(env, obj_indices, 0);
|
|
||||||
if (tris == NULL) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int n_tris_copy = ctx->n_tris;
|
|
||||||
|
|
||||||
int cnt = 0;
|
|
||||||
|
|
||||||
for (; ctx->latest_t && cnt < length; cnt += 3) {
|
|
||||||
tris[cnt + 0] = ctx->latest_t->v[0];
|
|
||||||
tris[cnt + 1] = ctx->latest_t->v[1];
|
|
||||||
tris[cnt + 2] = ctx->latest_t->v[2];
|
|
||||||
Triangle *prev = ctx->latest_t->prev;
|
|
||||||
|
|
||||||
free(ctx->latest_t);
|
|
||||||
ctx->latest_t = prev;
|
|
||||||
n_tris_copy--;
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx->n_tris = n_tris_copy;
|
|
||||||
|
|
||||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_indices, tris, JNI_ABORT);
|
|
||||||
|
|
||||||
return cnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
jlong Java_org_oscim_renderer_sublayers_MeshLayer_tessellate(JNIEnv *env, jclass c,
|
|
||||||
jfloatArray obj_points, jint pos,
|
|
||||||
jshortArray obj_index, jint ipos,
|
|
||||||
jint num_rings) { //, jintArray obj_out) {
|
|
||||||
|
|
||||||
jboolean isCopy;
|
|
||||||
|
|
||||||
printf("add %d %d %d\n", pos, ipos, num_rings);
|
|
||||||
|
|
||||||
float* orig_points = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_points, &isCopy);
|
|
||||||
if (orig_points == NULL)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
const float *points = orig_points + pos;
|
|
||||||
|
|
||||||
jshort* orig_indices = (jshort*) (*env)->GetPrimitiveArrayCritical(env, obj_index, &isCopy);
|
|
||||||
if (orig_indices == NULL) {
|
|
||||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_points, orig_points, JNI_ABORT);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
jshort* indices = orig_indices + ipos;
|
|
||||||
|
|
||||||
const float **rings = malloc(sizeof(float*) * (num_rings + 1));
|
|
||||||
int offset = 0;
|
|
||||||
for (int i = 0; i < num_rings; i++) {
|
|
||||||
rings[i] = points + offset;
|
|
||||||
offset += indices[i];
|
|
||||||
}
|
|
||||||
rings[num_rings] = points + offset;
|
|
||||||
|
|
||||||
int nverts, ntris;
|
|
||||||
|
|
||||||
TessContext *ctx = tessellate(&nverts, &ntris,
|
|
||||||
rings, rings + (num_rings + 1));
|
|
||||||
|
|
||||||
free(rings);
|
|
||||||
|
|
||||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_index, orig_indices, JNI_ABORT);
|
|
||||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_points, orig_points, JNI_ABORT);
|
|
||||||
|
|
||||||
return (long) ctx;
|
|
||||||
}
|
|
||||||
42
jni/tessellate/tessellate.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#include "glu.h"
|
||||||
|
|
||||||
|
typedef struct Triangle {
|
||||||
|
int v[3];
|
||||||
|
struct Triangle *prev;
|
||||||
|
} Triangle;
|
||||||
|
|
||||||
|
typedef struct Vertex {
|
||||||
|
double pt[3];
|
||||||
|
int index;
|
||||||
|
struct Vertex *prev;
|
||||||
|
} Vertex;
|
||||||
|
|
||||||
|
typedef struct TessContext {
|
||||||
|
Triangle *latest_t;
|
||||||
|
int n_tris;
|
||||||
|
int reversed;
|
||||||
|
|
||||||
|
Vertex *v_prev;
|
||||||
|
Vertex *v_prevprev;
|
||||||
|
Vertex *latest_v;
|
||||||
|
GLenum current_mode;
|
||||||
|
int odd_even_strip;
|
||||||
|
|
||||||
|
void (*vertex_cb)(Vertex *, struct TessContext *);
|
||||||
|
} TessContext;
|
||||||
|
|
||||||
|
TessContext *tessellateD
|
||||||
|
(double **verts,
|
||||||
|
int *nverts,
|
||||||
|
int **tris,
|
||||||
|
int *ntris,
|
||||||
|
const double **contoursbegin,
|
||||||
|
const double **contoursend);
|
||||||
|
|
||||||
|
TessContext *tessellate
|
||||||
|
(float **verts,
|
||||||
|
int *nverts,
|
||||||
|
int **tris,
|
||||||
|
int *ntris,
|
||||||
|
const float **contoursbegin,
|
||||||
|
const float **contoursend);
|
||||||
365
resources/rendertheme.xsd
Normal file
@@ -0,0 +1,365 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<xs:schema xmlns:tns="http://opensciencemap.org/rendertheme"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
|
||||||
|
targetNamespace="http://opensciencemap.org/rendertheme" xml:lang="en">
|
||||||
|
|
||||||
|
<!-- attribute types -->
|
||||||
|
<xs:simpleType name="cap">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="butt" />
|
||||||
|
<xs:enumeration value="round" />
|
||||||
|
<xs:enumeration value="square" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="closed">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="yes" />
|
||||||
|
<xs:enumeration value="no" />
|
||||||
|
<xs:enumeration value="any" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="color">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="elementList">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="node" />
|
||||||
|
<xs:enumeration value="way" />
|
||||||
|
<xs:enumeration value="any" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="selectorList">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="first" />
|
||||||
|
<xs:enumeration value="any" />
|
||||||
|
<xs:enumeration value="when-matched" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="fontFamily">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="default" />
|
||||||
|
<xs:enumeration value="default_bold" />
|
||||||
|
<xs:enumeration value="monospace" />
|
||||||
|
<xs:enumeration value="sans_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:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="fontStyle">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="bold" />
|
||||||
|
<xs:enumeration value="bold_italic" />
|
||||||
|
<xs:enumeration value="italic" />
|
||||||
|
<xs:enumeration value="normal" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="nonNegativeFloat">
|
||||||
|
<xs:restriction base="xs:float">
|
||||||
|
<xs:minInclusive value="0" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="src">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern value="((file|assets):)?.+" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="strokeDasharray">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:pattern
|
||||||
|
value="([0-9]+(\.[0-9]+)? *, *[0-9]+(\.[0-9]+)? *, *)*[0-9]+(\.[0-9]+)? *, *[0-9]+(\.[0-9]+)?" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="textKey">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="ele" />
|
||||||
|
<xs:enumeration value="addr:housenumber" />
|
||||||
|
<xs:enumeration value="addr_housenumber" /> <!-- Mapzen -->
|
||||||
|
<xs:enumeration value="housenumber" /> <!-- OpenMapTiles -->
|
||||||
|
<xs:enumeration value="name" />
|
||||||
|
<xs:enumeration value="ref" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<!-- style menu cat element -->
|
||||||
|
<xs:complexType name="cat">
|
||||||
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- style menu name element -->
|
||||||
|
<xs:complexType name="name">
|
||||||
|
<xs:attribute name="lang" type="xs:string" use="required" />
|
||||||
|
<xs:attribute name="value" type="xs:string" use="required" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- style menu overlay element -->
|
||||||
|
<xs:complexType name="overlay">
|
||||||
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- style menu layer element -->
|
||||||
|
<xs:complexType name="layer">
|
||||||
|
<xs:sequence maxOccurs="1" minOccurs="0">
|
||||||
|
<xs:element name="name" maxOccurs="unbounded" minOccurs="0" type="tns:name" />
|
||||||
|
<xs:element name="cat" maxOccurs="unbounded" minOccurs="0" type="tns:cat" />
|
||||||
|
<xs:element name="overlay" maxOccurs="unbounded" minOccurs="0" type="tns:overlay" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
|
<xs:attribute name="parent" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="visible" default="false" type="xs:boolean" use="optional" />
|
||||||
|
<xs:attribute name="enabled" default="false" type="xs:boolean" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- rendering instructions -->
|
||||||
|
<xs:complexType name="area">
|
||||||
|
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="id" default="0" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="use" default="0" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="src" type="tns:src" 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-percent" type="xs:positiveInteger" use="optional" />
|
||||||
|
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke" default="#00000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
<xs:attribute name="fade" default="-1" type="xs:integer" use="optional" />
|
||||||
|
<xs:attribute name="blend" default="-1" type="xs:integer" use="optional" />
|
||||||
|
<xs:attribute name="blend-fill" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="mesh" default="false" type="xs:boolean" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="caption">
|
||||||
|
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="k" type="tns:textKey" use="required" />
|
||||||
|
<xs:attribute name="dy" default="0" type="xs:float" use="optional" />
|
||||||
|
<xs:attribute name="font-family" default="default" type="tns:fontFamily" use="optional" />
|
||||||
|
<xs:attribute name="style" default="normal" type="tns:fontStyle" use="optional" />
|
||||||
|
<xs:attribute name="size" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
<xs:attribute name="bg-fill" default="#00000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
<!-- polygon area expressed as a ratio to tile area, e.g. 0.1 for 10% of tile area -->
|
||||||
|
<xs:attribute name="area-size" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
<!-- priority for label placement, 0 = highest priority -->
|
||||||
|
<xs:attribute name="priority" default="0" type="xs:integer" use="optional" />
|
||||||
|
<!-- symbol src name -->
|
||||||
|
<xs:attribute name="symbol" type="tns:src" 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-percent" type="xs:positiveInteger" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="circle">
|
||||||
|
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="radius" type="tns:nonNegativeFloat" use="required" />
|
||||||
|
<xs:attribute name="scale-radius" default="false" type="xs:boolean" use="optional" />
|
||||||
|
<xs:attribute name="fill" default="#00000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke" default="#00000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="line">
|
||||||
|
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||||
|
|
||||||
|
<!-- style: TODO only in style-line-->
|
||||||
|
<xs:attribute name="id" default="0" type="xs:string" use="optional" />
|
||||||
|
|
||||||
|
<!-- inherited style -->
|
||||||
|
<xs:attribute name="use" default="0" type="xs:string" use="optional" />
|
||||||
|
|
||||||
|
<xs:attribute name="src" type="tns:src" 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-percent" type="xs:positiveInteger" use="optional" />
|
||||||
|
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="width" default="0" type="xs:float" use="optional" />
|
||||||
|
<!-- minimum scaled width to draw outline -->
|
||||||
|
<xs:attribute name="min" default="0" type="xs:float" use="optional" />
|
||||||
|
<xs:attribute name="dasharray" type="tns:strokeDasharray" use="optional" />
|
||||||
|
<xs:attribute name="cap" default="round" type="tns:cap" use="optional" />
|
||||||
|
<xs:attribute name="outline" default="" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="fade" default="-1" type="xs:integer" use="optional" />
|
||||||
|
<xs:attribute name="blur" default="-1" type="xs:float" use="optional" />
|
||||||
|
<xs:attribute name="fix" 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" />
|
||||||
|
|
||||||
|
<!-- stipple repeat in 'pixel' -->
|
||||||
|
<xs:attribute name="stipple" default="0" type="xs:integer" use="optional" />
|
||||||
|
<!-- stipple color -->
|
||||||
|
<xs:attribute name="stipple-stroke" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<!-- stipple width relative to line width, i.e 0.0-1.0 -->
|
||||||
|
<xs:attribute name="stipple-width" default="0" type="xs:float" use="optional" />
|
||||||
|
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="text">
|
||||||
|
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||||
|
|
||||||
|
<xs:attribute name="id" default="0" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="use" default="0" type="xs:string" use="optional" />
|
||||||
|
|
||||||
|
<xs:attribute name="k" default="name" type="tns:textKey" use="optional" />
|
||||||
|
<xs:attribute name="dy" default="0" type="xs:float" use="optional" />
|
||||||
|
<xs:attribute name="font-family" default="default" type="tns:fontFamily" use="optional" />
|
||||||
|
<xs:attribute name="style" default="normal" type="tns:fontStyle" use="optional" />
|
||||||
|
<xs:attribute name="size" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
<xs:attribute name="bg-fill" default="#00000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
<xs:attribute name="caption" default="false" type="xs:boolean" use="optional" />
|
||||||
|
<!-- polygon area expressed as a ratio to tile area, e.g. 0.1 for 10% of tile area -->
|
||||||
|
<xs:attribute name="area-size" default="0" type="tns:nonNegativeFloat" use="optional" />
|
||||||
|
<!-- priority for label placement, 0 = highest priority -->
|
||||||
|
<xs:attribute name="priority" default="0" type="xs:integer" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="symbol">
|
||||||
|
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||||
|
|
||||||
|
<xs:attribute name="id" default="0" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="use" default="0" type="xs:string" use="optional" />
|
||||||
|
|
||||||
|
<xs:attribute name="src" type="tns:src" 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-percent" type="xs:positiveInteger" use="optional" />
|
||||||
|
|
||||||
|
<!-- symbols on lines -->
|
||||||
|
<xs:attribute name="billboard" default="false" type="xs:boolean" 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:attribute name="rotate" default="true" type="xs:boolean" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="extrusion">
|
||||||
|
<xs:attribute name="cat" type="xs:string" 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="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 -->
|
||||||
|
<xs:attribute name="default-height" default="12" type="xs:positiveInteger" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- match elements -->
|
||||||
|
<xs:complexType name="m">
|
||||||
|
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||||
|
<!-- recursion to allow for nested m -->
|
||||||
|
<xs:element name="m" type="tns:m" />
|
||||||
|
|
||||||
|
<xs:element name="area" type="tns:area" />
|
||||||
|
<xs:element name="caption" type="tns:caption" />
|
||||||
|
<xs:element name="circle" type="tns:circle" />
|
||||||
|
<xs:element name="line" type="tns:line" />
|
||||||
|
<xs:element name="outline" type="tns:line" />
|
||||||
|
<xs:element name="lineSymbol" type="tns:line" />
|
||||||
|
<xs:element name="text" type="tns:text" />
|
||||||
|
<xs:element name="extrusion" type="tns:extrusion" />
|
||||||
|
<xs:element name="symbol" type="tns:symbol" />
|
||||||
|
|
||||||
|
<!-- outline is defined within rules to match layering -->
|
||||||
|
<xs:element name="outline-layer" type="tns:line" />
|
||||||
|
</xs:choice>
|
||||||
|
|
||||||
|
<xs:attribute name="select" default="any" type="tns:selectorList" use="optional" />
|
||||||
|
<xs:attribute name="e" type="tns:elementList" use="optional" />
|
||||||
|
<xs:attribute name="k" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="v" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="cat" type="xs:string" use="optional" />
|
||||||
|
<xs:attribute name="closed" default="any" type="tns:closed" use="optional" />
|
||||||
|
<xs:attribute name="zoom-min" default="0" type="xs:unsignedByte" use="optional" />
|
||||||
|
<xs:attribute name="zoom-max" default="127" type="xs:unsignedByte" use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="atlasRect">
|
||||||
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
|
<xs:attribute name="pos" type="xs:string" use="required" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="atlas">
|
||||||
|
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||||
|
<xs:element name="rect" type="tns:atlasRect" />
|
||||||
|
</xs:choice>
|
||||||
|
<xs:attribute name="img" type="xs:string" use="required" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- stylemenu element -->
|
||||||
|
<xs:complexType name="stylemenu">
|
||||||
|
<xs:sequence maxOccurs="1" minOccurs="0">
|
||||||
|
<xs:element name="layer" maxOccurs="unbounded" minOccurs="0" type="tns:layer" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="defaultvalue" type="xs:string" use="required" />
|
||||||
|
<xs:attribute name="defaultlang" type="xs:string" use="required" />
|
||||||
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
|
</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 -->
|
||||||
|
<xs:complexType name="rendertheme">
|
||||||
|
<xs:sequence maxOccurs="1" minOccurs="0">
|
||||||
|
<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 -->
|
||||||
|
<xs:sequence maxOccurs="256" minOccurs="0">
|
||||||
|
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||||
|
<xs:element name="style-text" type="tns:text" />
|
||||||
|
<xs:element name="style-symbol" type="tns:symbol" />
|
||||||
|
<xs:element name="style-area" type="tns:area" />
|
||||||
|
<xs:element name="style-line" type="tns:line" />
|
||||||
|
<!-- <xs:element name="style-outline" type="tns:line" /> -->
|
||||||
|
</xs:choice>
|
||||||
|
</xs:sequence>
|
||||||
|
|
||||||
|
<xs:choice maxOccurs="1" minOccurs="0">
|
||||||
|
<xs:element name="atlas" type="tns:atlas" />
|
||||||
|
</xs:choice>
|
||||||
|
|
||||||
|
<!-- matching rules -->
|
||||||
|
<xs:sequence maxOccurs="unbounded" minOccurs="0">
|
||||||
|
<xs:element name="m" type="tns:m" />
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="version" type="xs:positiveInteger" use="required" />
|
||||||
|
<xs:attribute name="map-background" default="#ffffff" type="tns:color" use="optional" />
|
||||||
|
<xs:attribute name="base-stroke-width" default="1" type="tns:nonNegativeFloat"
|
||||||
|
use="optional" />
|
||||||
|
<xs:attribute name="base-text-scale" default="1" type="tns:nonNegativeFloat"
|
||||||
|
use="optional" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- root element -->
|
||||||
|
<xs:element name="rendertheme" type="tns:rendertheme" />
|
||||||
|
</xs:schema>
|
||||||
44
settings.gradle
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
gradlePluginPortal()
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencyResolutionManagement {
|
||||||
|
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||||
|
maven { url 'https://jitpack.io' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rootProject.name = 'vtm-parent'
|
||||||
|
include ':vtm'
|
||||||
|
include ':vtm-android'
|
||||||
|
include ':vtm-android-example'
|
||||||
|
include ':vtm-android-gdx'
|
||||||
|
include ':vtm-android-mvt'
|
||||||
|
include ':vtm-app'
|
||||||
|
include ':vtm-desktop'
|
||||||
|
include ':vtm-desktop-lwjgl'
|
||||||
|
include ':vtm-desktop-lwjgl3'
|
||||||
|
include ':vtm-extras'
|
||||||
|
include ':vtm-gdx'
|
||||||
|
include ':vtm-gdx-poi3d'
|
||||||
|
include ':vtm-http'
|
||||||
|
include ':vtm-ios'
|
||||||
|
include ':vtm-ios-example'
|
||||||
|
//include ':vtm-jeo'
|
||||||
|
include ':vtm-json'
|
||||||
|
include ':vtm-jts'
|
||||||
|
include ':vtm-models'
|
||||||
|
include ':vtm-mvt'
|
||||||
|
include ':vtm-playground'
|
||||||
|
include ':vtm-tests'
|
||||||
|
include ':vtm-theme-comparator'
|
||||||
|
include ':vtm-themes'
|
||||||
|
include ':vtm-web'
|
||||||
|
include ':vtm-web-app'
|
||||||
|
//include ':vtm-web-js'
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="src" path="assets"/>
|
|
||||||
<classpathentry kind="src" path="gen"/>
|
|
||||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
|
||||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
|
||||||
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/vtm-android"/>
|
|
||||||
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/vtm"/>
|
|
||||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
|
||||||
<classpathentry kind="output" path="bin/classes"/>
|
|
||||||
</classpath>
|
|
||||||
2
vtm-android-example/.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
bin/*
|
|
||||||
gen/*
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>vtm-android-example</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
<linkedResources>
|
|
||||||
<link>
|
|
||||||
<name>assets</name>
|
|
||||||
<type>2</type>
|
|
||||||
<location>/home/src/vtm/OpenScienceMap/vtm/assets</location>
|
|
||||||
</link>
|
|
||||||
</linkedResources>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
activeContentFilterList=*.makefile,makefile,*.Makefile,Makefile,Makefile.*,*.mk,MANIFEST.MF
|
|
||||||
addNewLine=true
|
|
||||||
convertActionOnSaave=AnyEdit.CnvrtTabToSpaces
|
|
||||||
eclipse.preferences.version=1
|
|
||||||
ignoreBlankLinesWhenTrimming=false
|
|
||||||
inActiveContentFilterList=
|
|
||||||
javaTabWidthForJava=true
|
|
||||||
org.eclipse.jdt.ui.editor.tab.width=2
|
|
||||||
projectPropsEnabled=true
|
|
||||||
removeTrailingSpaces=true
|
|
||||||
replaceAllSpaces=false
|
|
||||||
replaceAllTabs=false
|
|
||||||
saveAndAddLine=false
|
|
||||||
saveAndConvert=false
|
|
||||||
saveAndTrim=true
|
|
||||||
useModulo4Tabs=false
|
|
||||||